{"version":3,"sources":["webpack:///./node_modules/devextreme/esm/localization/language_codes.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.virtual_columns.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.data_controller.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.grid_view.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.sorting_mixin.js","webpack:///./node_modules/devextreme/esm/ui/menu.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.master_detail.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.column_headers.js","webpack:///./node_modules/devextreme/esm/ui/filter_builder/between.js","webpack:///./node_modules/devextreme/esm/ui/filter_builder/ui.filter_operations_dictionary.js","webpack:///./node_modules/devextreme/esm/ui/filter_builder/utils.js","webpack:///./node_modules/devextreme/esm/ui/menu/ui.submenu.js","webpack:///./node_modules/devextreme/esm/ui/menu/ui.menu.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.search.js","webpack:///./node_modules/inferno-hydrate/dist/index.esm.js","webpack:///./node_modules/devextreme/esm/renovation/component_wrapper/utils.js","webpack:///./node_modules/devextreme/esm/core/polyfills/number.js","webpack:///./node_modules/devextreme/esm/renovation/component_wrapper/template_wrapper.js","webpack:///./node_modules/devextreme/esm/renovation/component_wrapper/component.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.header_panel.js","webpack:///./node_modules/devextreme/esm/color.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.header_filter_core.js","webpack:///./node_modules/inferno-create-element/dist/index.esm.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.filter_custom_operations.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.filter_sync.js","webpack:///./node_modules/devextreme/esm/ui/shared/ui.editor_factory_mixin.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.editing_constants.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.error_handling.js","webpack:///./node_modules/devextreme/esm/ui/filter_builder/filter_builder.js","webpack:///./node_modules/devextreme/esm/ui/filter_builder.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.filter_builder.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.editing.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.editing_row_based.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.utils.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.focus.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.context_menu.js","webpack:///./node_modules/devextreme/esm/exporter/file_saver.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.editing_form_based.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.data_source_adapter.js","webpack:///./node_modules/devextreme/esm/ui/context_menu/ui.context_menu.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.row_dragging.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.filter_row.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.virtual_scrolling.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.column_state_mixin.js","webpack:///./node_modules/devextreme/esm/format_helper.js","webpack:///./node_modules/devextreme/esm/ui/overlay/utils.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.core.js","webpack:///./node_modules/devextreme/esm/renovation/utils/combine_classes.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.column_headers.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.columns_controller.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.data_source_adapter.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.data_controller.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.sorting.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.rows.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.context_menu.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.error_handling.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.grid_view.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.header_panel.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.base.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.state_storing.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.selection.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.column_chooser.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.grouping.core.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.utils.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.grouping.expanded.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.grouping.collapsed.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.grouping.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.master_detail.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.editor_factory.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.editing.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.editing_row_based.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.editing_form_based.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.editing_cell_based.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.validating.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.virtual_scrolling.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.filter_row.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.header_filter.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.filter_sync.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.filter_builder.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.filter_panel.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.search.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.pager.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.columns_resizing_reordering.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.keyboard_navigation.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/aggregate_calculator.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.summary.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.column_fixing.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.adaptivity.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.virtual_columns.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.export.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.focus.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.row_dragging.js","webpack:///./node_modules/devextreme/esm/ui/data_grid/ui.data_grid.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.header_filter.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.columns_view.js","webpack:///./node_modules/devextreme/esm/ui/shared/filtering.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.selection.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.column_fixing.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.filter_panel.js","webpack:///./node_modules/devextreme/esm/ui/context_menu.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.columns_resizing_reordering.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.virtual_columns_core.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.columns_controller.js","webpack:///./node_modules/@devextreme/vdom/dist/esm/effect_host.js","webpack:///./node_modules/@devextreme/vdom/dist/esm/base_component.js","webpack:///./node_modules/@devextreme/vdom/dist/esm/create_context.js","webpack:///./node_modules/@devextreme/vdom/dist/esm/effect.js","webpack:///./node_modules/@devextreme/vdom/dist/esm/portal.js","webpack:///./node_modules/@devextreme/vdom/dist/esm/utils.js","webpack:///./node_modules/jszip/dist/jszip.min.js","webpack:///./node_modules/devextreme/esm/ui/shared/accessibility.js","webpack:///./node_modules/devextreme/esm/exporter/excel_format_converter.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.tag_helper.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.cell_alignment_helper.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.color_helper.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.pattern_fill_helper.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.fill_helper.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.font_helper.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.cell_format_helper.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.number_format_helper.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.file.js","webpack:///./node_modules/devextreme/esm/exporter/excel_creator.js","webpack:///./node_modules/devextreme/esm/exporter/image_creator.js","webpack:///./node_modules/devextreme/esm/exporter/svg_creator.js","webpack:///./node_modules/devextreme/esm/exporter/pdf_creator.js","webpack:///./node_modules/devextreme/esm/exporter.js","webpack:///./node_modules/devextreme-vue/data-grid.js","webpack:///./node_modules/inferno/dist/index.esm.js","webpack:///./node_modules/devextreme/esm/ui/data_grid.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.editor_factory.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.validating.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.adaptivity.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.editing_cell_based.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.sorting.js","webpack:///./node_modules/devextreme/esm/renovation/component_wrapper/grid_pager.js","webpack:///./node_modules/devextreme/esm/renovation/utils/get_computed_style.js","webpack:///./node_modules/devextreme/esm/renovation/utils/type_conversion.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/utils/get_element_width.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/resizable_container.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/common/pager_props.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/info.js","webpack:///./node_modules/devextreme/esm/renovation/utils/subscribe_to_event.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/common/keyboard_action_context.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/common/light_button.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/common/consts.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/pages/page.js","webpack:///./node_modules/devextreme/esm/renovation/common/config_context.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/pages/large.js","webpack:///./node_modules/devextreme/esm/renovation/ui/common/base_props.js","webpack:///./node_modules/devextreme/esm/renovation/common/config_provider.js","webpack:///./node_modules/devextreme/esm/renovation/utils/resolve_rtl.js","webpack:///./node_modules/devextreme/esm/renovation/ui/common/widget.js","webpack:///./node_modules/devextreme/esm/renovation/utils/render_template.js","webpack:///./node_modules/devextreme/esm/renovation/ui/common/dom_component_wrapper.js","webpack:///./node_modules/devextreme/esm/renovation/ui/number_box.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/utils/calculate_values_fitted_width.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/pages/small.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/pages/page_index_selector.js","webpack:///./node_modules/devextreme/esm/renovation/ui/select_box.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/page_size/small.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/page_size/large.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/page_size/selector.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/content.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/pager.js","webpack:///./node_modules/devextreme/esm/renovation/ui/pager/pager.j.js","webpack:///./node_modules/devextreme/esm/ui/pager.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.pager.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.rows.js","webpack:///./node_modules/devextreme/esm/core/utils/svg.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.keyboard_navigation.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.modules.js","webpack:///./node_modules/devextreme/esm/ui/context_menu/ui.menu_base.edit.strategy.js","webpack:///./node_modules/devextreme/esm/ui/context_menu/ui.menu_base.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.accessibility.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.state_storing.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.export_mixin.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid.core.virtual_data_loader.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.virtual_scrolling_core.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.column_chooser.js","webpack:///./node_modules/devextreme/esm/ui/grid_core/ui.grid_core.state_storing_core.js"],"names":["LANGUAGE_CODES","ar","bg","ca","cs","da","de","el","en","es","fi","fr","he","hu","is","it","ja","ko","nl","no","pl","pt","rm","ro","ru","hr","sk","sq","sv","th","tr","ur","id","uk","be","sl","et","lv","lt","tg","fa","vi","hy","az","eu","hsb","mk","tn","xh","zu","af","ka","fo","hi","mt","se","ga","ms","kk","ky","sw","tk","uz","tt","bn","pa","gu","or","ta","te","kn","ml","as","mr","sa","mn","bo","cy","km","lo","gl","kok","syr","si","iu","am","tzm","ne","fy","ps","fil","dv","ha","yo","quz","nso","ba","lb","kl","ig","ii","arn","moh","br","ug","mi","oc","co","gsw","sah","qut","rw","wo","prs","gd","smn","sms","zh","nn","bs","sma","nb","sr","dsb","smj","getLanguageId","locale","DEFAULT_COLUMN_WIDTH","VirtualScrollingRowsViewExtender","_resizeCore","this","callBase","apply","arguments","_columnsController","resize","_handleScroll","e","that","scrollable","getScrollable","left","scrollOffset","option","$content","width","$element","setScrollPosition","HeaderViewExtender","_renderCore","isVirtualMode","_updateScrollLeftPosition","ColumnsControllerExtender","getWidths","columns","map","column","visibleWidth","parseFloat","members","init","_beginPageIndex","_endPageIndex","_position","_virtualVisibleColumns","resetColumnsCache","getBeginPageIndex","position","visibleColumns","getVisibleColumns","widths","currentPosition","index","length","Math","floor","getColumnPageSize","getTotalWidth","getController","_lastWidth","component","outerWidth","getEndPageIndex","ceil","_fireColumnsChanged","date","Date","columnsChanged","fire","optionNames","all","changeTypes","_renderTime","renderingThreshold","clearTimeout","_changedTimeout","setTimeout","_setScrollPositionCore","beginPageIndex","endPageIndex","needColumnsChanged","getFixedColumns","rowIndex","isBase","fixedColumns","transparentColumnIndex","c","command","indexOf","colspan","visibleColumnsHash","rowCount","getRowCount","pageSize","startIndex","endIndex","beginFixedColumnCount","beginFixedColumns","slice","beginColumns","beginWidth","reduce","a","b","endFixedColumnCount","endFixedColumns","endColumns","endWidth","columnsInfo","i","push","unshift","concat","getColumnIndexOffset","offset","leftFixedColumnCount","dispose","virtualColumnsModule","defaultOptions","scrolling","columnRenderingMode","columnPageSize","columnRenderingThreshold","extenders","controllers","views","columnHeadersView","rowsView","dataControllerModule","loadingTimeout","dataSource","cacheEnabled","repaintChangesOnly","highlightChanges","onDataErrorOccurred","remoteOperations","paging","enabled","pageIndex","data","Controller","inherit","include","changePaging","optionName","value","_dataSource","_skipProcessingPagingChange","done","pageChanged","bind","resolve","promise","_items","_currentOperationTypes","_dataChangedHandler","operationTypes","_handleDataChanged","_columnsChangedHandler","_handleColumnsChanged","_loadingChangedHandler","_handleLoadingChanged","_loadErrorHandler","_handleLoadError","_customizeStoreLoadOptionsHandler","_handleCustomizeStoreLoadOptions","_changingHandler","_handleChanging","add","_isLoading","_isCustomLoading","_repaintChangesOnly","_changes","createAction","dataErrorOccurred","error","executeAction","_refreshDataSource","callbackNames","callbackFlags","name","stopOnFalse","publicMethods","reset","optionChanged","args","handled","fullName","previousValue","Array","isArray","store","_array","refresh","_setPagingOptions","load","isLoading","_useSortingGroupingFromColumns","isReady","getDataSource","getCombinedFilter","returnDataField","combinedFilter","filter","columnsController","additionalFilter","_calculateAdditionalFilter","isDataSourceApplied","isAllDataTypesDefined","combineFilters","updateFilter","filtering","waitReady","_updateLockCount","_readyDeferred","_endUpdateCore","changes","every","change","updateItems","storeLoadOptions","isCustomLoading","isLoadingAll","updateColumnDataTypes","_columnsUpdating","updateSortingGrouping","sort","getSortDataSourceParameters","group","getGroupDataSourceParameters","sorting","grouping","filterValue","filterValues","filterApplied","reload","selectedFilterOperation","columnOption","columnIndex","_applyFilter","_needApplyFilter","checkChanges","updateItemsHandler","remove","visible","isAsyncDataSourceApplying","_isDataSourceApplying","applyDataSource","isDelayed","needApplyFilter","_isAllDataTypesDefined","log","NAME","fail","_fireLoadingChanged","fireError","Error","pagingEnabled","scrollingMode","appendMode","virtualMode","paginate","isChanged","requireTotalCount","_getSpecificDataSourceOption","type","key","_initDataSource","oldDataSource","setDataSource","_loadDataSource","result","always","reject","_beforeProcessItems","items","getRowIndexDelta","_processItems","rowIndexDelta","changeType","visibleItems","lastVisibleItem","dataIndex","options","item","_processItem","_generateDataItem","_processDataItem","rowType","keyOf","dataItem","values","generateDataValues","isModified","calculateCellValue","dataField","_applyChange","_applyChangeUpdate","_applyChangesOnly","_applyChangeFull","_getRowIndices","rowIndices","correctedRowIndex","allowInvisibleRowIndices","splice","prevIndex","rowIndexCorrection","columnIndices","equalItems","item1","item2","strict","isEditing","oldItem","oldNextItem","newItem","newNextItem","isFullUpdate","_partialUpdateRow","_isCellChanged","oldRow","newRow","visibleRowIndex","isLiveUpdate","JSON","stringify","isCellModified","row","modifiedValues","_getChangedColumnIndices","changedColumnIndices","cells","forEach","cell","isCellChanged","update","watch","oldValues","_isItemEquals","some","field","_item1$data","_item2$data","_item1$data2","_item2$data2","expandedMatch","isExpanded","summaryCellsMatch","summaryCells","continuationMatch","isContinuation","isContinuationOnNextPage","newIndexByKey","getRowKey","currentItems","oldItems","_correctRowIndices","newRowIndex","_afterProcessItems","_updateItemsCore","rows","getVisibleRows","isDataChanged","groupExpanding","needUpdateDimensions","cancel","_fireChanged","loadingOperationTypes","changed","loadingChanged","_loadingText","filterExpr","prototype","call","equalFilterParameters","clearFilter","filterName","clearColumnOption","columnCount","beginUpdate","searchByText","endUpdate","_fireDataSourceChanged","changedHandler","dataSourceChanged","_getDataSourceAdapter","_createDataSourceAdapterCore","dataSourceAdapterProvider","dataSourceAdapter","create","isLocalStore","isCustomStore","_createDataSourceAdapter","enabledRemoteOperations","summary","groupPaging","cancelAll","loadError","customizeStoreLoadOptions","changing","_isSharedDataSource","isLoaded","isEmpty","pageCount","loadAll","d","loadOptions","_handleDataLoaded","extra","getKeyByRowIndex","byLoaded","getRowIndexByKey","getIndexByKey","byKey","getRowIndexOffset","getDataByKeys","rowKeys","deferreds","keyData","beginCustomLoading","messageText","endCustomLoading","changesOnly","lookup","selection","customizeLoadResult","on","off","_disposeDataSource","repaintRows","rowIndexes","skipProcessingPagingChange","getUserState","searchText","getCachedStoreData","proxyMethod","BORDERS_CLASS","TABLE_FIXED_CLASS","IMPORTANT_MARGIN_CLASS","GRIDBASE_CONTAINER_CLASS","HIDDEN_COLUMNS_WIDTH","VIEW_NAMES","isPercentWidth","isPixelWidth","getContainerHeight","$container","clientHeight","get","paddingTop","css","paddingBottom","calculateFreeWidth","contentWidth","_rowsView","totalWidth","_getTotalWidth","calculateFreeWidthWithCurrentMinWidth","currentMinWidth","restoreFocus","focusedElement","selectionRange","setSelectionRange","ResizingController","ViewController","_initPostRenderHandlers","dataController","_dataController","_refreshSizesHandler","resizeDeferred","_setScrollerSpacing","_hasHeight","_setAriaRowColCount","fireContentReadyAction","_fireContentReadyAction","setAria","totalItemsCount","colCount","children","_getBestFitWidths","_widths","_columnHeadersView","getColumnWidths","_rowsView$getTableEle","headersTableElement","getTableElement","setTableElement","_setVisibleWidths","columnId","getColumnId","_toggleBestFitModeForView","view","className","isBestFit","isVisible","$rowsTables","getTableElements","$viewTables","tableElement","$tableBody","$rowsTable","$viewTable","eq","appendTo","toggleClass","addWidgetPrefix","_toggleBestFitMode","$rowsFixedTable","_footerView","_needStretch","style","msie","parseInt","version","find","each","_synchronizeColumns","resetBestFitMode","columnAutoWidth","needBestFit","_needBestFit","hasMinWidth","isColumnWidthsCorrected","resultWidths","minWidth","getActiveElement","getSelectionRange","_maxWidth","maxWidth","isFocusOutsideWindow","bottom","_correctColumnWidths","expandColumnWidth","_processStretch","_getAverageColumnsWidth","freeWidth","columnCountWithoutWidth","hasPercentWidth","hasAutoWidth","hasWidth","_hasWidth","_loop","isHiddenColumn","averageColumnsWidth","realColumnWidth","_getRealColumnWidth","columnWidth","$rowsViewElement","element","scrollbarWidth","getScrollbarWidth","lastColumnIndex","getLastResizableColumnIndex","borderWidth","innerWidth","resultSizes","groupSize","tableSize","unusedIndexes","diff","diffElement","onePixelElementsCount","columnWidths","groupWidth","ratio","percentTotalWidth","sum","pixelTotalWidth","freeSpace","percentTotalWidthInPixel","updateSize","rootElement","$groupElement","$rootElement","importantMarginClass","getWidgetContainerClass","detach","addClass","removeClass","_requireResize","updateDimensions","checkSize","_checkSize","prevResult","_resizeDeferred","_resetGroupElementHeight","_updateDimensionsCore","groupElement","height","scrollTop","_lastHeight","_devicePixelRatio","devicePixelRatio","_setScrollerSpacingCore","hasHeight","vScrollbarWidth","hScrollbarWidth","setScrollerSpacing","$testDiv","rootElementHeight","maxHeight","maxHeightHappened","editorFactory","isMaxHeightApplied","scrollHeight","offsetHeight","_updateLastSizes","viewName","getView","setLoading","_renderDimensions","SynchronizeScrollingController","_scrollChangedHandler","pos","j","scrollTo","top","scrollChanged","GridView","View","_resizingController","_getWidgetAriaLabel","_views","_groupElement","_renderViews","render","_getTableRoleName","isFirstRender","role","label","format","_rootElement","resizingController","gridViewModule","showBorders","renderAsync","resizing","synchronizeScrolling","gridView","SORT_CLASS","SORT_NONE_CLASS","SORTUP_CLASS","SORTDOWN_CLASS","SORT_INDEX_CLASS","SORT_INDEX_ICON_CLASS","HEADERS_ACTION_CLASS","_applyColumnState","ariaSortState","$sortIndicator","sortingMode","$indicatorsContainer","_getIndicatorContainer","isSortingAllowed","allowSorting","groupIndex","sortOrder","hasSeveralSortIndexes","sortIndex","text","_getIndicatorClassName","_renderIndicator","container","$indicator","indicator","rtlEnabled","columnAlignment","prepend","_updateIndicator","$cell","indicatorName","_getIndicatorElements","returnAll","$indicatorElements","not","MASTER_DETAIL_CELL_CLASS","MASTER_DETAIL_ROW_CLASS","CELL_FOCUS_DISABLED_CLASS","ROW_LINES_CLASS","masterDetailModule","masterDetail","autoExpandAll","template","_getExpandColumnsCore","expandColumns","cellTemplate","getExpandCellTemplate","initMasterDetail","_expandedItems","_isExpandAll","expandAll","collapseAll","isRowExpanded","expandIndex","_getRowIndicesForExpand","_changeRowExpandCore","detailColumnIndex","isNewRow","isEnabledChanged","isAutoExpandAllChanged","_updateParentDataGrids","$masterDetailRow","closest","_updateMasterDataGrid","parent","$detailElement","masterRowOptions","masterDataGrid","isFixedColumns","_updateFixedMasterDetailGrids","masterRowIndex","$rows","getRowElement","$tables","rowsNotEqual","tablesNotEqual","detailElementWidth","isDetailHorizontalScrollCanBeShown","isDetailGridWidthChanged","_getCellTemplate","editingController","isEditRow","allowRenderToDetachedContainer","_getDefaultTemplate","_isDetailRow","_createRow","$row","toggle","_renderCells","$detailCell","_needRenderCell","_renderCell","attr","CELL_CONTENT_CLASS","HEADERS_CLASS","NOWRAP_CLASS","ROW_CLASS_SELECTOR","HEADER_ROW_CLASS","COLUMN_LINES_CLASS","CONTEXT_MENU_SORT_ASC_ICON","CONTEXT_MENU_SORT_DESC_ICON","CONTEXT_MENU_SORT_NONE_ICON","VISIBILITY_HIDDEN_CLASS","TEXT_CONTENT_ALIGNMENT_CLASS_PREFIX","SORT_INDICATOR_CLASS","SORT_INDEX_INDICATOR_CLASS","HEADER_FILTER_CLASS_SELECTOR","HEADER_FILTER_INDICATOR_CLASS","MULTI_ROW_HEADER_CLASS","columnHeadersModule","showColumnHeaders","cellHintEnabled","createCellContent","$cellContent","addCssClassesToCellContent","showColumnLines","contentAlignment","getHeaderContentAlignment","alignment","$visibleIndicatorElements","indicatorCount","_getColumnAlignment","sortIndicatorClassName","sortIndexIndicatorClassName","$sortIndexIndicator","_createTable","$table","event","shiftKey","preventDefault","caption","html","_getHeaderTemplate","headerCellTemplate","_processTemplate","resultTemplate","renderingTemplate","model","_isGroupingChanged","_requireReady","_isLegacyKeyboardNavigation","_setCellAriaAttributes","cellOptions","isBand","headerId","_handleActionKeyDown","$target","target","_lastActionElement","headerFilterController","$column","getColumnIndexByElement","showHeaderFilterMenu","_processHeaderAction","_tableElement","_hasRowElements","empty","_updateContent","_renderTable","_renderRows","_getRowVisibleColumns","_renderRow","_createCell","$cellElement","rowspan","_getRows","_columnOptionChanged","resizeCompleted","_isElementVisible","elementOptions","_alignCaptionByCenter","clone","insertBefore","_updateCell","$indicatorElement","_isSortableElement","getHeadersRowHeight","$tableElement","$headerRows","toArray","headerRow","getHeaderElement","columnElements","getColumnElements","bandColumnIndex","getChildrenByBandColumn","_","getRowIndex","_getCellElement","getVisibleIndex","getCellElements","cellIndex","getCellIndex","getColumns","getVisibleColumnIndex","$columnElements","_getWidths","allowDragging","sourceLocation","draggingPanels","draggableColumnCount","canHideColumn","allowHiding","allowDrag","allowReordering","allowGrouping","isColumnOptionUsed","draggingPanel","getBoundingRect","getName","getColumnCount","_invalidate","getHeight","getElementHeight","getContextMenuItems","sortingOptions","mode","onItemClick","params","changeSortOrder","itemData","ascendingText","disabled","icon","descendingText","clearText","setRowsOpacity","columnID","setColumnOpacity","ownerBand","opacity","FILTER_BUILDER_RANGE_CLASS","FILTER_BUILDER_RANGE_START_CLASS","FILTER_BUILDER_RANGE_END_CLASS","FILTER_BUILDER_RANGE_SEPARATOR_CLASS","SEPARATOR","editorTemplate","conditionInfo","$editorStart","$editorEnd","getStartValue","getEndValue","append","_editorFactory","createEditor","extend","parentType","setValue","getConfig","context","valueSeparator","dataTypes","notForLookup","OPERATION_ICONS","notcontains","contains","startswith","endswith","isblank","isnotblank","OPERATION_NAME","between","getIconByFilterOperation","filterOperation","getNameByFilterOperation","DEFAULT_DATA_TYPE","EMPTY_MENU_ICON","AND_GROUP_OPERATION","EQUAL_OPERATION","NOT_EQUAL_OPERATION","DATATYPE_OPERATIONS","number","string","datetime","boolean","object","DEFAULT_FORMAT","LOOKUP_OPERATIONS","AVAILABLE_FIELD_PROPERTIES","FILTER_BUILDER_CLASS","FILTER_BUILDER_ITEM_TEXT_CLASS","FILTER_BUILDER_ITEM_TEXT_PART_CLASS","FILTER_BUILDER_ITEM_TEXT_SEPARATOR_CLASS","FILTER_BUILDER_ITEM_TEXT_SEPARATOR_EMPTY_CLASS","getFormattedValueText","fieldFormat","dataType","isNegationGroup","isCondition","getGroupCriteria","setGroupCriteria","criteria","convertGroupToNewStructure","setGroupValue","substring","getGroupMenuItem","availableGroups","groupValue","getGroupValue","getCriteriaOperation","getDefaultFilterOperations","containItems","entity","getFilterOperations","filterOperations","getCaptionByOperation","operation","filterOperationDescriptions","operationName","getOperationFromAvailable","availableOperations","getCustomOperation","customOperations","filteredOperations","getAvailableOperations","isLookupField","customOperation","isOperationForbidden","isCustom","getDefaultOperation","defaultFilterOperation","createCondition","condition","updateConditionByOperation","removeItem","createEmptyGroup","toLowerCase","addItem","getField","fields","extendedFields","getItems","isGroup","convertToInnerGroup","groupOperation","innerGroup","convertToInnerStructure","convertToInnerCondition","conditionHasCustomOperation","getNormalizedFields","normalizedField","defaultCalculateFilterExpression","trueText","message","falseText","getConditionFilterExpression","filterExpression","calculateFilterExpression","createFilterExpression","getFilterExpression","_filterExpression","getNormalizedFilter","itemsForRemove","normalizedGroupValue","isValidCondition","getCurrentLookupValueText","handler","lookupDataSource","loadSingle","valueExpr","valueText","displayExpr","customizeText","getPrimitiveValueText","getArrayValueText","v","checkDefaultValue","getCurrentValueText","_len","_key","itemExists","plainItems","parentId","pushItemAndCheckParent","originalItems","hasParent","getParentIdFromItemDataField","generateCaptionByDataField","allowHierarchicalFields","lastIndexOf","split","arr","getCaptionWithParents","hasValue","getOperationValue","getMergedOperations","betweenCaption","betweenIndex","isMatchedCondition","addedFilterDataField","removeFieldConditionsFromFilter","hasMatchedCondition","syncConditionIntoGroup","addedFilter","canPush","syncFilters","getMatchedConditions","filterHasField","renderValueText","lastItemIndex","t","DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS","DX_SUBMENU_CLASS","super","_getDefaultOptions","orientation","tabIndex","onHoverStart","_dataAdapter","_initDataAdapter","_renderContextMenuOverlay","_renderContentImpl","node","getNodeByKey","_renderItems","_getChildNodes","_renderDelimiter","$contentDelimiter","_itemContainer","_getOverlayOptions","onPositioned","_overlayPositionedActionHandler","arg","_showDelimiter","_hoverEndHandler","_toggleFocusClass","currentTarget","hoverStartAction","_hoverStartHandler","$rootItem","_actions","onShowing","rootItem","submenu","_drawSubmenu","onShown","onHiding","_hideSubmenu","onHidden","$submenu","of","containerOffset","vLocation","location","hLocation","h","rootOffset","offsetLeft","round","offsetTop","rootWidth","rootHeight","submenuWidth","submenuHeight","_isMenuHorizontal","at","my","setup","_overlay","DX_MENU_CLASS","DX_MENU_VERTICAL_CLASS","DX_MENU_HORIZONTAL_CLASS","DX_MENU_ITEM_CLASS","DX_MENU_ITEMS_CONTAINER_CLASS","DX_MENU_ITEM_EXPANDED_CLASS","DX_CONTEXT_MENU_CLASS","DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS","DX_STATE_DISABLED_CLASS","DX_STATE_HOVER_CLASS","DX_STATE_ACTIVE_CLASS","DX_ADAPTIVE_MODE_CLASS","DX_ADAPTIVE_HAMBURGER_BUTTON_CLASS","DX_ADAPTIVE_MODE_OVERLAY_WRAPPER_CLASS","FOCUS_UP","FOCUS_DOWN","FOCUS_LEFT","FOCUS_RIGHT","SHOW_SUBMENU_OPERATION","NEXTITEM_OPERATION","PREVITEM_OPERATION","DEFAULT_DELAY","show","hide","ACTIONS","submenuDirection","showFirstSubmenuMode","delay","hideSubmenuOnMouseLeave","onSubmenuShowing","onSubmenuShown","onSubmenuHiding","onSubmenuHidden","adaptivityEnabled","_setOptionsByReference","_optionsByReference","animation","selectedItem","rootMenuElements","_itemElements","submenuElements","_submenuItemElements","elements","itemSelector","currentSubmenu","_submenus","itemsContainer","argument","navigationAction","$newTarget","$items","_getAvailableItems","isMenuHorizontal","$activeItem","_getActiveItem","_getItemsNavigationOperation","_getKeyboardNavigationAction","_moveFocus","navOperation","action","hasClass","_showSubmenu","_nextItem","_prevItem","_clean","_resizeEventTimer","_menuItemsWidth","_updateItemsWidthCache","_dimensionChanged","$menuItems","first","_getSummaryItemsWidth","_isAdaptivityEnabled","containerWidth","_toggleAdaptiveMode","_init","_createActionByOption","_visibleSubmenu","_initMarkup","_render","_initAdaptivity","_hamburger","activeStateEnabled","onClick","_toggleTreeView","state","_toggleHamburgerActiveState","$menuItemsContainer","$adaptiveElements","_hideVisibleSubmenu","_treeView","_$adaptiveContainer","rtl","deferRendering","shading","closeOnTargetScroll","closeOnOutsideClick","collision","menuOptions","actionName","animationEnabled","_treeviewItemClickHandler","onItemExpanded","repaint","onItemCollapsed","selectNodesRecursive","selectByClick","expandEvent","$hamburger","_renderHamburgerButton","_createComponent","_getTreeViewOptions","_getAdaptiveOverlayOptions","$wrapper","delayType","_keyboardHandler","_renderContainer","$itemFrame","_createSubmenu","_renderBorderElement","_getKeyboardListeners","$submenuContainer","_getSubmenuOptions","_parentKey","internalFields","_clearTimeouts","getSubmenuPosition","_attachSubmenuHandlers","$submenuTarget","itemTemplate","selectionMode","cssClass","hoverStateEnabled","focusStateEnabled","showSubmenuMode","disabledExpr","selectedExpr","itemsExpr","onFocusedItemChanged","onSelectionChanged","_nestedItemOnSelectionChangedHandler","_nestedItemOnItemClickHandler","onItemRendered","_nestedItemOnItemRenderedHandler","onLeftFirstItem","_moveMainMenuFocus","onLeftLastItem","onCloseRootSubmenu","onExpandLastSubmenu","_isDesktopDevice","optionValue","direction","itemCount","$currentItem","itemIndex","$newItem","addedItems","getInstance","_clearSelectionInSubmenus","_clearRootSelection","_setOptionWithoutOptionChange","targetSubmenu","cleanAllSubmenus","isOtherItem","$selectedItem","_selectedItemClass","selectedItemData","_getItemData","selected","_clearSelectedItems","$prevSelectedItem","prevSelectedItemData","$submenuOverlayContent","getOverlayContent","submenus","submenuMouseLeaveName","hover","_submenuOnShowingHandler","_submenuOnShownHandler","_submenuOnHidingHandler","_submenuOnHiddenHandler","_submenuMouseLeaveHandler","$border","eventArgs","relatedTarget","parents","contextMenu","_getSubmenuByRootElement","_hideSubmenuAfterTimeout","_getDelay","isRootItemHovered","isSubmenuItemHovered","hoveredElementFromSubMenu","querySelector","isHorizontalMenu","submenuPosition","$item","$closestItem","_itemPointerDownHandler","mouseMoveEventName","pointer","move","_getItemElementByEventArgs","getNodeByItem","isSelectionActive","buttons","which","_isItemDisabled","_hasChildren","_getShowFirstSubmenuMode","_getSubmenuByElement","isOverlayVisible","_itemMouseMoveHandler","_showSubmenuTimer","eventArg","_hideSubmenuTimer","$itemElement","_hoveredRootItem","pointers","_renderSubmenuItems","actionArgs","_disabledGetter","itemElement","_updateSelectedItemOnClick","_initActions","_changeSubmenusOption","_removeAdaptivity","_optionChanged","selectItem","SEARCH_PANEL_CLASS","SEARCH_TEXT_CLASS","HEADER_PANEL_CLASS","FILTERING_TIMEOUT","allowSearch","allowFiltering","parseValue","searchModule","searchPanel","placeholder","highlightSearchText","highlightCaseSensitive","searchVisibleColumnsOnly","searchFilter","filters","onQueryDone","valueGetter","_i","enumerate","headerPanel","getSearchPanelOptions","_getToolbarItems","_prepareSearchItem","searchPanelOptions","toolbarItem","$search","updateValueTimeout","editorOptions","inputAttr","locateInMenu","getSearchTextEditor","$searchPanel","dxTextBox","editor","_searchParams","_getFormattedSearchText","formatOptions","getFormatOptionsByColumn","formatValue","_getStringNormalizer","isCaseSensitive","str","_findHighlightingTextNodes","cellElement","_$items","$parent","stringNormalizer","normalizedSearchText","showWhenGrouped","$contents","contents","nodeType","textContent","nodeValue","_highlightSearchTextCore","$textNode","$searchTextSpan","firstContentElement","substr","after","createTextNode","insertAfter","_highlightSearchText","isEquals","textNodes","textNode","replaceWith","_highlightTimer","parameters","isOnForm","ERROR_MSG","isNullOrUndef","o","isInvalid","isFunction","isNull","throwError","isSameInnerHTML","dom","innerHTML","tempdom","document","createElement","findLastDOMFromVNode","vNode","flags","childFlags","$LI","isSamePropsInnerHTML","props","Boolean","dangerouslySetInnerHTML","__html","hydrateComponent","parentDOM","isSVG","isClass","lifecycle","currentNode","ref","instance","input","hydrateVNode","$CX","input$1","hydrateChildren","parentVNode","parentNode","nextSibling","appendChild","childNodes","prevVNodeIsTextNode","len","child","removeChild","firstChild","defaultValue","hydrateElement","tagName","replaceChild","removeAttribute","setAttribute","hydrateText","hydrateFragment","currentDom","hydrate","callback","listener","undefined","shift","$V","removeDifferentElements","$children","$newChildren","__","hasComponent","oldElement","updatePropsImmutable","currentPropsValue","newArray","matchIndex","exec","Number","isFinite","renderTemplate","_this$props$model","Object","keys","isNode","transclude","_effects","setDefaultOptionValue","defaultValueGetter","hasOwnProperty","_disposeMethodCalled","allowNull","twoWay","templates","_this$_viewRef","_viewRef","current","_viewComponent","defaultProps","_propsInfo","_ref","eventName","getProps","_renderWrapper","containerNode","_isNodeReplaced","nextNode","rootNode","mountNode","_documentFragment","lock","callEffects","elementAttr","_dispose","_this$_storedClasses","_elementAttr","attributes","specified","elemStyle","getPropertyValue","getAttribute","_storedClasses","join","class","trim","widgetProps","acc","propName","_ref2","_patchElementParam","_patchOptionValues","_props","_extractDefaultSlot","_componentTemplates","_actionsMap","createDocumentFragment","_createTemplateComponent","_getActionConfigs","_addAction","_supportedKeys","actionByOption","actArgs","_getTemplate","_templateManager","anonymousTemplateName","templateOption","keyName","originalEvent","func","_handler","_result","_result2","_refresh","currentKeys","IS_RENOVATED_WIDGET","TOOLBAR_BUTTON_CLASS","TOOLBAR_ARIA_LABEL","HeaderPanel","_getButtonContainer","_getToolbarButtonClass","specificClass","secondClass","_getToolbarOptions","toolbarOptions","itemRenderedCallback","toolbarItems","_toolbar","_toolbarOptions","$headerPanel","$toolbar","excludeValidators","setToolbarItemDisabled","toolbarInstance","itemOptionPrefix","updateToolbarDimensions","getHeaderPanel","headerPanelModule","standardColorNames","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","standardColorTypes","re","process","colorString","s","rgb","hsvToRgb","l","hslToRgb","_round","Color","color","baseColor","String","replace","parseColor","colorIsInvalid","r","normalize","g","hsv","toHsvFromRgb","hsl","toHslFromRgb","colorComponent","def","max","isNaN","toHexFromRgb","toString","H","S","min","delta","V","vMin","vInc","vDec","calculateHue","convertTo01Bounds","maxMinSum","makeColorTint","colorPart","colorTint","modifyColorTint","hueToRgb","p","q","n","abs","isIntegerBetweenMinAndMax","constructor","highlight","step","alter","toHex","darken","blend","blendColor","other","getPureColor","isValidHex","hex","test","isValidRGB","isValidAlpha","fromHSL","HEADER_FILTER_CLASS","HEADER_FILTER_MENU_CLASS","DEFAULT_SEARCH_EXPRESSION","resetChildrenItemSelection","updateSelectAllState","selectAllCheckBox","isSearchEnabled","headerFilter","updateHeaderFilterItemSelectionState","filterValuesMatch","isExcludeFilter","HeaderFilterView","getPopupContainer","_popupContainer","getListContainer","_listContainer","applyHeaderFilter","list","searchValue","isSelectAll","isFilterBuilder","filterType","fillSelectedItemKeys","isExclude","_getNode","hasChildren","hasChildrenWithSelection","hideHeaderFilterMenu","$columnElement","_initializePopupContainer","popupContainer","updatePopup","headerFilterMenu","_cleanPopupContent","_getSearchExpr","useDefaultSearchExpr","headerFilterDataSource","selector","remoteFiltering","headerFilterOptions","dxPopupOptions","showTitle","showCloseButton","dragEnabled","toolbar","widget","texts","ok","resizeEnabled","_initializeListContainer","focus","onInitialized","widgetOptions","searchEnabled","searchTimeout","searchMode","onContentReady","renderCompleted","encodeHtml","onOptionChanged","showCheckBoxesMode","keyExpr","searchExpr","pageLoadMode","showSelectionControls","selectedItems","_selectedItemsUpdating","oldSelected","filterValueIndex","allowHeaderFiltering","headerFilterMixin","$headerFilterIndicator","_isHeaderFilterEmpty","requireReady","isString","isUndefined","componentHooks","onComponentDidMount","onComponentDidUpdate","onComponentShouldUpdate","onComponentWillMount","onComponentWillUnmount","onComponentWillUpdate","_children","newProps","arguments$1","childLen","prop$1","prop","baseOperation","grid","getFullText","itemText","parentText","lastIndex","div","showHeaderFilterMenuBase","columnElement","closeEditor","fieldInfo","dataSourceOptions","calculateDisplayValue","getSelectedItemsTexts","selectedItemsTexts","getHeaderItemText","anyOf","noneOf","baseOp","baseFilter","FILTER_ROW_OPERATIONS","FILTER_TYPES_INCLUDE","FILTER_TYPES_EXCLUDE","getColumnIdentifier","checkForErrors","identifier","FilterSyncController","getEmptyFilterValues","canSyncHeaderFilterWithFilterRow","getGroupInterval","getConditionFromFilterRow","getConditionFromHeaderFilter","selectedOperation","updateHeaderFilterCondition","headerFilterCondition","hasArrayValue","updateFilterRowCondition","filterRowOptions","defaultFilterOperations","syncFilterValue","getFilteringColumns","_skipSyncColumnOptions","filterConditions","filterCondition","_initSync","filteringColumns","getFilterValueFromColumns","isFilterSyncActive","_getSyncFilterRow","_getSyncHeaderFilter","filterRow","syncFilterRow","syncHeaderFilter","getCustomFilterOperations","filterBuilderCustomOperations","DataControllerFilterSyncExtender","filterSyncEnabledValue","skipCalculateColumnFilters","currentColumn","getCurrentColumn","calculatedFilterValue","_parseColumnPropertyName","matched","match","getColumnByPath","filterSyncController","propertyName","ColumnHeadersViewFilterSyncExtender","_needUpdateFilterIndicators","_updateHeaderFilterIndicators","filterSyncModule","filterSyncEnabled","filterSync","isWrapped","CHECKBOX_SIZE_CLASS","EDITOR_INLINE_BLOCK","EditorFactoryMixin","getResultConfig","config","readOnly","checkEnterBug","mozilla","real","ios","getTextEditorConfig","isEnterBug","sharedData","onValueChanged","needDelayedUpdate","isInputOrKeyUpEvent","updateValue","notFireEvent","valueChangeTimeout","onKeyDown","trigger","_input","valueChangeEvent","prepareBooleanEditor","prepareSelectBox","editorName","displayGetter","postProcess","isFilterRow","selectBox","stopWatch","newValue","allowClearing","showClearButton","showAllText","editorElement","blur","displayFormat","dateSerializationFormat","isSearching","editorType","showValidationMark","$editorElement","dateBox","dxDateBox","defaultEnterKeyHandler","enter","registerKeyHandler","dxTextArea","ctrlKey","stopPropagation","EDITOR_CELL_CLASS","ROW_CLASS","ROW_SELECTED_CLASS","EDIT_FORM_CLASS","DATA_EDIT_DATA_INSERT_TYPE","DATA_EDIT_DATA_REMOVE_TYPE","EDITING_POPUP_OPTION_NAME","EDITING_EDITROWKEY_OPTION_NAME","EDITING_EDITCOLUMNNAME_OPTION_NAME","TARGET_COMPONENT_NAME","EDITORS_INPUT_SELECTOR","FOCUSABLE_ELEMENT_SELECTOR","EDIT_MODE_BATCH","EDIT_MODE_ROW","EDIT_MODE_CELL","EDIT_MODE_FORM","EDIT_MODE_POPUP","EDIT_MODES","ROW_BASED_MODES","MODES_WITH_DELAYED_FOCUS","ERROR_ROW_CLASS","ERROR_MESSAGE_CLASS","ERROR_CLOSEBUTTON_CLASS","ACTION_CLASS","ErrorHandlingController","_createErrorRow","$tableElements","$errorRow","$closeButton","$errorMessage","_renderErrorMessage","errorRowIndex","removeErrorRow","colSpan","url","$message","renderErrorRow","$popupContent","$errorMessageElement","$firstErrorRow","viewElement","_getRowElements","next","$tbody","rowElements","last","$columnHeaders","errorHandlingModule","errorRowEnabled","errorHandling","errorHandlingController","hasChanges","FILTER_BUILDER_GROUP_CLASS","FILTER_BUILDER_GROUP_ITEM_CLASS","FILTER_BUILDER_GROUP_CONTENT_CLASS","FILTER_BUILDER_GROUP_OPERATIONS_CLASS","FILTER_BUILDER_GROUP_OPERATION_CLASS","FILTER_BUILDER_ACTION_CLASS","FILTER_BUILDER_IMAGE_CLASS","FILTER_BUILDER_IMAGE_ADD_CLASS","FILTER_BUILDER_IMAGE_REMOVE_CLASS","FILTER_BUILDER_ITEM_FIELD_CLASS","FILTER_BUILDER_ITEM_OPERATION_CLASS","FILTER_BUILDER_ITEM_VALUE_CLASS","FILTER_BUILDER_ITEM_VALUE_TEXT_CLASS","FILTER_BUILDER_OVERLAY_CLASS","FILTER_BUILDER_FILTER_OPERATIONS_CLASS","FILTER_BUILDER_FIELDS_CLASS","FILTER_BUILDER_ADD_CONDITION_CLASS","ACTIVE_CLASS","FILTER_BUILDER_MENU_CUSTOM_OPERATION_CLASS","SOURCE","DISABLED_STATE_CLASS","TAB_KEY","ENTER_KEY","ESCAPE_KEY","category","OPERATORS","and","notAnd","notOr","EditorFactory","FilterBuilder","onEditorPreparing","onEditorPrepared","defaultGroupOperation","groupOperations","maxGroupLevel","groupOperationDescriptions","closePopupOnTargetScroll","equal","notEqual","lessThan","lessThanOrEqual","greaterThan","greaterThanOrEqual","startsWith","notContains","endsWith","isBlank","isNotBlank","_initCustomOperations","disableInvalidateForValue","_disableInvalidateForValue","_initModel","_getNormalizedFields","_model","_customOperations","_updateFilter","normalizedValue","oldValue","_getModel","_initEditorFactory","actionConfig","_createGroupElementByCriteria","_createConditionElement","_createConditionItem","groupLevel","$group","_createGroupElement","$groupContent","groupCriteria","innerCriteria","$groupItem","_createRemoveButton","_createGroupOperationButton","_createAddButton","newGroup","newCondition","_createButton","_getGroupOperations","groupMenuItem","$operationButton","_createButtonWithMenu","menu","removeMenu","$button","popup","info","treeViewElement","content","treeView","dxTreeView","_subscribeOnClickAndEnterKey","_createPopupWithTreeView","_hasValueButton","_createOperationButtonWithMenu","currentOperation","$valueButton","siblings","_createValueButton","_createOperationAndValueButtons","_createFieldButtonWithMenu","getFullCaption","$fieldButton","dataStructure","isSingleChild","$removeButton","addGroupHandler","addConditionHandler","click","_createValueText","$text","_createValueEditorWithEvents","_updateConditionValue","areValuesDifferent","_addDocumentKeyUp","$editor","isComposing","hasCompositionJustEnded","getDocument","documentKeyUpHandler","_documentKeyUpHandler","_addDocumentClick","closeEditorFunc","documentClickHandler","_isFocusOnEditorParts","_documentClickHandler","activeElement","_removeEvents","createValueText","_createValueEditor","prev","$popup","contentTemplate","contentElement","$menuContainer","FilterBuilderView","_updatePopupOptions","_initPopup","_filterBuilderPopup","_disposePopup","_filterBuilder","title","$contentElement","_getPopupContentTemplate","_getPopupToolbarItems","$filterBuilderContainer","filterBuilderModule","filterBuilder","filterBuilderPopup","filterBuilderView","READONLY_CLASS","LINK_CLASS","ROW_SELECTED","EDIT_BUTTON_CLASS","COMMAND_EDIT_CLASS","COMMAND_EDIT_WITH_ICONS_CLASS","INSERT_INDEX","ROW_INSERTED","ROW_MODIFIED","CELL_MODIFIED","EDITING_NAMESPACE","DATA_EDIT_DATA_UPDATE_TYPE","DEFAULT_START_EDIT_ACTION","EDIT_LINK_CLASS","save","edit","undelete","delete","EDIT_ICON_CLASS","METHOD_NAMES","ACTION_OPTION_NAMES","BUTTON_NAMES","EDITING_CHANGES_OPTION_NAME","NEW_SCROLLING_MODE","createFailureHandler","deferred","isEditingCell","allowEditing","isEditingOrShowEditorAlwaysDataCell","isCommandCell","isEditorCell","showEditorAlways","EditingController","getButtonIndex","button","getButtonName","_lastOperation","_deferreds","_saveEditorHandler","_updateEditColumn","_updateEditButtons","_internalState","getEditMode","editMode","_getDefaultEditorTemplate","getChanges","resetChanges","needReset","_silentOption","_getInternalData","_addInternalData","internalData","_getOldData","_this$_getInternalDat","oldData","getUpdatedData","editIndex","getInsertedData","getRemovedData","_fireDataErrorOccurred","getPopupContent","_needToCloseEditableCell","_closeEditItem","_isDefaultButtonVisible","allowDeleting","_isButtonVisible","_getButtonConfig","buttonName","editingTexts","saveRowChanges","cancelRowChanges","editRow","undeleteRow","deleteRow","addRowToNode","methodName","editingOptions","allowAction","_getEditingButtons","buttonIndex","haveCustomButtons","_renderEditingButtons","_getEditCommandCellTemplate","setEmptyText","isRowBasedEditMode","getFirstEditableColumnIndex","getFirstEditableCellInRow","getFocusedCellInRow","_inputFocusTimeoutID","up","_pointerUpEditorHandler","down","_pointerDownEditorHandler","_handleEditRowKeyChange","_handleChangesChange","reinit","_resetEditColumnName","_resetEditRowKey","oldRowIndexCorrection","_getEditRowIndexCorrection","oldRowIndex","_editRowFromOptionChanged","cancelEditData","_processInsertChanges","_addInsertInfo","isPageChanged","_pageIndex","_refreshCore","isEditRowKeyDefined","_setEditRowKey","silent","_setEditRowKeyByIndex","getEditRowIndex","_getVisibleEditRowIndex","getEditFormRowIndex","isKeyEqual","isEditCell","_isEditRowByIndex","_getVisibleEditColumnIndex","_needInsertItem","isLastPage","changePageIndex","needInsertOnLastPosition","_dataController$topIt","_dataController$botto","topItemIndex","bottomItemIndex","_generateNewItem","_this$_getInternalDat2","insertInfo","_getLoadedRowIndex","loadedRowIndexOffset","editChange","loadedRowIndex","removeCount","processItems","_this$_getInternalDat3","isInsert","processDataItem","_processDataItemCore","modified","removed","_initNewRow","_calculateIndex","_createInsertInfo","_getInsertIndex","_getCorrectedInsertRowIndex","parentKey","_getInsertRowIndex","_this$_getInternalDat4","_setIndexes","_change$index","_change$pageIndex","parentRowIndex","getTopVisibleItemIndex","maxInsertIndex","editItem","_this$_getInternalDat5","addRow","_addRow","param","oldEditRowIndex","_allowRowAdding","__KEY__","_addRowCore","insertIndex","initialOldEditRowIndex","_addChange","_showAddedRow","_afterInsertRow","_focusFirstEditableCellInRow","$firstCell","_editCellInProgress","_delayedInputFocus","eventToTrigger","_isEditingStart","_beforeUpdateItems","editColumnName","_setEditColumnNameByIndex","_visibleColumns$index","_setEditColumnName","_getEditColumn","_getColumnByName","editColumn","columnName","editRowKey","isColumnHidden","_resetEditIndices","_item$oldData","_editRowFromOptionChangedCore","_needFocusEditor","_focusEditorIfNeed","_showEditPopup","_repaintEditPopup","_getEditPopupHiddenHandler","_getPopupEditFormTemplate","_getSaveButtonConfig","saveEditData","_getCancelButtonConfig","_removeInternalData","_removeChange","executeOperation","waitForDeferredOperations","_processCanceledEditingCell","_repaintEditCell","oldColumn","loseFocus","beforeFocusCallback","callBeforeFocusCallbackAlways","inputFocus","$focusableElement","focusAndSelectElement","_beforeFocusCallback","android","_focusEditingCell","$editCell","editColumnIndex","_checkAndDeleteRow","confirmDelete","confirmDeleteMessage","confirmDeleteTitle","showDialogTitle","confirmResult","_deleteRowCore","_afterDeleteRow","_fireOnSaving","onSavingParams","_executeEditingAction","_disposed","_processChanges","results","dataChanges","changeCopy","_beforeSaveEditData","insert","newData","doneDeferred","_processRemoveIfError","_processRemove","_processRemoveCore","_processSaveEditDataResult","hasSavedData","changesLength","isError","_fireSaveEditDataEvents","isSaving","_resolveAfterSave","_saving","_saveEditDataInner","_afterSaveEditData","beginLoading","_endSaving","endLoading","_cancelSaving","_beforeEndSaving","_refreshDataAfterSave","refreshMode","isFullRefresh","isEditColumnVisible","_isEditColumnVisible","useIcons","addCommandColumn","fixedPosition","_isEditButtonDisabled","isEditRowDefined","isButtonDisabled","_applyModified","_beforeCloseEditCellInBatchMode","_cancelEditDataCore","_beforeCancelEditData","_afterCancelEditData","_hideEditPopup","hasEditData","_getRowIndicesForCascadeUpdating","skipCurrentRow","addDeferred","_prepareChange","_options$row","rowKey","setCellValueResult","setCellValue","displayValueMap","_updateRowValues","updateFieldValue","forceUpdateRow","_focusPreviousEditingCellIfNeed","_updateEditRow","_needUpdateRow","isCustomSetCellValue","defaultSetCellValue","isCustomCalculateCellValue","visibleColumn","defaultCalculateCellValue","_applyChangeCore","_updateEditRowCore","_updateRowImmediately","_updateRowWithDelay","_validateEditFormAfterUpdate","$focusedElement","$focusedItem","selectionStart","_getFormEditItemTemplate","editCellTemplate","getColumnTemplate","editingStartOptions","isRowMode","isRowEditing","isCellEditing","getEditFormTemplate","allowUpdating","iconType","localizationName","getButtonLocalizationNames","hint","prepareButtonItem","titleButtonTextByClassNames","revert","cancelAllChanges","saveAllChanges","hintText","showText","prepareEditButtons","buttonItems","allowAdding","highlightDataCell","cellModified","_allowEditAction","allowEditAction","startEditAction","needCallback","editingModule","editing","selectTextOnEditStart","form","_editingController","full","_this$_updateEditItem","editRowIndex","_updateEditItem","$cellElements","_isNativeClick","isRowRemoved","isRowInserted","isRowModified","_getColumnIndexByElement","_getColumnIndexByElementCore","$targetElement","_editCellByClick","isEditedCell","editCell","closeEditCell","_rowPointerDown","_pointerDownTimeout","_rowClick","isEditForm","rowElement","_rowDblClick","_cellPrepared","isEditableCell","_editCellPrepared","_formItemPrepared","_getCellOptions","cellValue","columnIdentifier","getCellOptions","editButtonItems","excludedOptions","shouldInvalidate","EDIT_ROW","editingRowBasedModule","isRowEditMode","isVisibleInRowEditMode","$editingCell","_update","DATAGRID_SELECTION_DISABLED_CLASS","DATAGRID_GROUP_OPENED_CLASS","DATAGRID_GROUP_CLOSED_CLASS","DATAGRID_EXPAND_CLASS","NO_DATA_CLASS","DATE_INTERVAL_SELECTORS","year","getFullYear","month","getMonth","day","getDate","quarter","hour","getHours","minute","getMinutes","second","getSeconds","getIntervalSelector","isDateType","nameIntervalSelector","groupInterval","equalSelectors","selector1","selector2","originalCallback","normalizeSortingInfo","formatObject","getDisplayFormat","getSummaryText","summaryItem","summaryTexts","columnCaption","summaryType","valueFormat","getWidgetInstance","editorData","dxComponents","widgetName","filter1","filter2","renderNoDataText","noDataClass","noDataElement","_getNoDataText","renderLoadPanel","loadPanelOptions","_loadPanel","$window","boundary","resultFilter","changeNames","changesWithChangeNamesCount","defaultResult","getDisplayValue","calculateGroupValue","getGroupRowSummaryText","summaryItems","getFormatByDataType","getHeaderFilterGroupParameters","remoteGrouping","interval","sortingMethod","compare","sortParameters1","sortParameters2","ignoreIsExpanded","desc","getPointsByColumns","pointCreated","isVertical","startColumnIndex","cellsLength","notCreatePoint","point","x","y","prevItemOffset","localize","selectionEnd","isSelectTextOnEditingStart","keyboardController","isEditingNavigationMode","_isFastEditingStarted","_loadItemDeferred","select","hasResizableColumns","fixed","allowResizing","isElementInCurrentGrid","controller","$grid","ROW_FOCUSED_CLASS","FOCUSED_ROW_SELECTOR","TABLE_POSTFIX_CLASS","FocusController","_keyboardController","focusedRowKey","_focusRowByIndex","_triggerFocusedRowChangedIfNeed","focusedRowIndex","_focusRowByKey","focusedRowIndexByKey","getFocusedRowIndexByKey","$rowElement","_fireFocusedRowChanged","isAutoNavigateToFocusedRow","_resetFocusedRow","_focusRowByIndexCore","setKeyByIndex","_isValidFocusedRowIndex","_getLastItemIndex","isRowFocused","_isLocalRowIndex","isVirtualScrolling","_isVirtualScrolling","virtualItems","virtualItemsCount","virtualItemsBegin","begin","visibleRowsCount","visiblePagesCount","_setFocusedRowKeyByIndex","_navigateToRow","isFocusedRowKeyDefined","setFocusedRowIndex","navigateToRow","needFocusRow","isAutoNavigate","rowIndexByKey","_navigateTo","getPageIndexByKey","isVirtualRowRenderingMode","_navigateToVirtualRow","_navigateToVisibleRow","_triggerUpdateFocusedRow","scrollToRowElement","rowsScrollController","_rowsScrollController","getItemOffset","triggerUpdateFocusedRow","_focusRowByKeyOrIndex","currentFocusedRowIndex","updateFocusedRow","_change$items","isMainTable","_clearPreviousFocusedRow","_prepareFocusedRow","changedItem","$prevRowFocusedElement","focusedRow","$focusedRowTable","removeAttr","$firstRow","scrollToElementVertically","focusModule","focusedRowEnabled","autoNavigateToFocusedRow","focusedColumnIndex","keyboardNavigation","setRowFocusType","_focusedCellPosition","visibleRow","setFocusedColumnIndex","_escapeKeyHandler","isCellFocusType","_focus","_getCellElementFromTarget","_updateFocusedCellPosition","prevRowIndex","prevColumnIndex","_fireFocusedCellChanged","renderFocusOverlay","hideBorder","isRowElement","_getElementType","isRowFocusType","getFirstValidCellInRow","sortByKey","isLocalOperations","notSortedKeys","getDataIndexGetter","notSortedKey","isPartialUpdate","isPartialUpdateWithDeleting","_updatePageIndexes","processUpdateFocusedRow","prevRenderingPageIndex","_lastRenderingPageIndex","renderingPageIndex","_isPagingByRendering","isPagingByRendering","focusController","fullReload","isValidRowIndexByKey","needFocusRowByIndex","getGlobalRowIndexByKey","globalIndex","_calculateGlobalRowIndexByGroupedData","_calculateGlobalRowIndexByFlatData","groupFilter","useGroup","_generateFilterByKey","_concatWithCombinedFilter","skip","take","_generateOperationFilterByKey","totalCount","_generateBooleanFilter","sortInfo","rowData","reverse","getter","booleanFilter","sortFilter","dataSourceKey","keyPart","visibleRows","_checkRowKeys","updateFocusElementTabIndex","preventScroll","_setFocusedRowElementTabIndex","_findRowElementForTabIndex","_scrollToFocusOnResize","setFocusedCellPosition","getRow","getScrollElementPosition","CONTEXT_MENU","footerView","ContextMenuController","dxEvent","$targetRowElement","$targetCellElement","menuItems","rowOptions","targetElement","_contextMenuPrepared","ContextMenuView","onPositioning","contextMenuInstance","contextMenuModule","onContextMenuPreparing","contextMenuView","window","navigator","FILE_EXTESIONS","EXCEL","CSS","PNG","JPEG","GIF","SVG","PDF","MIME_TYPES","fileSaver","_revokeObjectURLTimeout","_getDataUri","mimeType","_getMimeType","_linkDownloader","fileName","href","exportLinkElement","download","_formDownloader","proxyUrl","contentType","formAttributes","method","enctype","exportForm","display","setAttributes","_saveByProxy","_winJSBlobSave","blob","savePicker","Windows","Storage","Pickers","FileSavePicker","suggestedStartLocation","PickerLocationId","documentsLibrary","fileExtension","fileTypeChoices","suggestedFileName","pickSaveFileAsync","then","file","openAsync","FileAccessMode","readWrite","outputStream","inputStream","msDetachStream","Streams","RandomAccessStream","copyAsync","flushAsync","close","_click","link","dispatchEvent","MouseEvent","cancelable","createEvent","initMouseEvent","_saveBlobAs","_blobSaved","msSaveOrOpenBlob","WinJS","URL","webkitURL","mozURL","msURL","oURL","objectURL","createObjectURL","downloadLink","revokeObjectURL","_objectUrlRevoked","warn","saveAs","proxyURL","forceProxy","Blob","userAgent","EDIT_FORM_ITEM_CLASS","EDIT_POPUP_CLASS","SCROLLABLE_CONTAINER_CLASS","BUTTON_CLASS","FORM_BUTTONS_CONTAINER_CLASS","getEditorType","_column$formItem","isCustomEditorType","formItem","forEachFormItems","callBack","tabs","editingFormBasedModule","_editForm","_updateEditFormDeferred","isFormOrPopupEditMode","isPopupEditMode","isFormEditMode","firstFormItem","_firstFormItem","$editFormElements","_getEditFormEditorVisibleIndex","editForm","_this$_editPopup","popupVisible","_editPopup","_$popupContent","_row$update","repaintForm","isMobileDevice","deviceType","popupOptions","fullScreen","$popupContainer","_this$_editForm","templateOptions","formTemplate","_this$_editPopup2","defaultAnimation","_this$_editPopup3","editPopup","popupOptionName","renderFormEditTemplate","detailCellOptions","isReadOnly","getItemID","getFormEditorTemplate","_cellOptions$row$watc","_cellOptions$row","_validator","validator","validatorOptions","dxValidator","validationRules","validationGroup","dataGetter","getEditFormOptions","detailOptions","_this$_getValidationG","editFormOptions","_getValidationGroupsInForm","userCustomizeItem","editFormItemClass","itemId","formID","customizeItem","isRequired","rule","itemVisible","renderFormOnly","baseEditFormOptions","$buttonsContainer","_this$_editPopup4","getEditForm","_this$_updateEditForm","_this$_editPopup5","_renderCellContent","editFormRowIndex","_getVisibleColumnIndex","$cells","visibleIndex","_isFormItem","isDetailRow","isPopupEditing","cloneItems","groupCount","calculateOperationTypes","lastLoadOptions","isFullReload","equalSortParameters","groupExpand","getPageKey","loadPageCount","getPageDataFromCache","cachedPagesData","pages","_remoteOperations","_isLastPage","_hasLastPage","_currentTotalCount","_cachedPagesData","_lastOperationTypes","_eventsStrategy","_skipCorrection","_isLoadingAll","_dataLoadingHandler","_handleDataLoading","_dataLoadedHandler","_pushHandler","_handlePush","memberName","member","isSharedDataSource","resetCurrentTotalCount","resetCache","_cachedStoreData","_cachedPagingData","resetPagesCache","_needClearStoreDataCache","_lastLoadOptions","fromStore","keyInfo","_applyBatch","_dataIndexGetter","indexByKey","storeData","isCacheUpdated","_getKeyInfo","getItemCount","itemsCount","oldItemCount","useInsertIndex","_needCleanCacheByOperation","operationType","operationTypesByOrder","operationTypeIndex","currentOperationTypes","_customizeRemoteOperations","cachedStoreData","cachedPagingData","originalStoreLoadOptions","_isRefreshing","isRefreshing","_loadingOperationTypes","_isRefreshed","_lastOperationId","operationId","_handleDataLoadingCore","cachedExtra","localLoadOptionNames","localPaging","needCache","needPageCache","needPagingCache","needStoreCache","mergeStoreLoadData","_handleDataLoadedCore","_loadPageSize","currentTotalCount","_operationTypes","_optionCache","_scheduleCustomLoadCallbacks","count","hasKnownLastPage","loadFromStore","dataSourceLoadOptions","loadResult","_customLoadOptions","_scheduleLoadCallbacks","timeout","fireEvent","DX_MENU_PHONE_CLASS","DX_MENU_ITEM_WRAPPER_CLASS","DX_HAS_CONTEXT_MENU_CLASS","DX_STATE_FOCUSED_CLASS","FOCUS_FIRST","FOCUS_LAST","LOCAL_SUBMENU_DIRECTIONS","DEFAULT_SHOW_EVENT","ContextMenu","showEventOption","showEvent","onSubmenuCreated","_defaultOptionsRules","device","space","_isSelectionEnabled","escape","$availableItems","$hoveredItem","$hoveredItemContainer","_getItemsByLocation","$oldTarget","$activeItemHighlighted","_setFocusedElement","_hideSubmenuHandler","_expandSubmenuHandler","_refreshActiveDescendant","$curItem","$parentItem","_hideSubmenusOnSameLevel","isItemHasSubmenu","_hasSubmenu","_detachShowContextMenuEvents","_getTarget","_renderVisibility","_addWidgetClass","_attachShowContextMenuEvents","_keyboardListenerId","_focusTarget","_attachKeyboardEvents","overlayOptions","_$element","$overlayContent","_addCustomCssClass","_addPlatformDependentClass","_attachContextMenuEvent","$itemContainer","_itemContextMenuHandler","phone","getShowEvent","_showContextMenuEventHandler","contextMenuAction","_createAction","getShowDelay","_show","validatingTargetName","submenuContainer","$holder","$itemsContainer","submenuElement","innerOverlay","_closeOnOutsideClickHandler","propagateOutsideClick","_overlayShownActionHandler","_overlayHidingActionHandler","_overlayHiddenActionHandler","_hideAllShownSubmenus","isDocument","$activeItemContainer","_getActiveItemsContainer","$itemContainers","_getItemsContainers","$clickedItem","_searchActiveItem","isRootItemClicked","isInnerOverlayClicked","_isIncludeOverlay","_getShowSubmenuMode","_hideAllShownChildSubmenus","$activeOverlay","$allOverlays","isSame","$overlay","$submenuElements","shownSubmenus","_shownSubmenus","$context","isSubmenuRendered","_isSubmenuVisible","$expandedItems","_hideSubmenuCore","_getSubmenuPosition","stop","to","_animate","animate","$rootItemWrapper","shouldRenderSubmenu","notCloseMenuOnItemClick","closeMenuOnClick","$prevSubmenu","canceled","$curSubmenu","_stopAnimate","showing","_hide","jQEvent","_event$originalEvent","_positionContextMenu","_widgetClass","_renderFocusState","_attachHoverEvents","_attachClickEvent","getRootNodes","_setAriaAttributes","preventShowingDefaultContextMenuAboveOverlay","_overlayContentId","_getContextMenuPosition","isInitialPosition","_isInitialOptionValue","positioningAction","lastPosition","_cleanAriaAttributes","COMMAND_HANDLE_CLASS","HANDLE_ICON_CLASS","ROWS_VIEW","SORTABLE_WITHOUT_HANDLE_CLASS","RowDraggingExtender","_updateHandleColumn","_allowReordering","rowDragging","allowDropInsideItem","isHandleColumnVisible","showDragIcons","_getHandleTemplate","_renderContent","isFixedTableRendering","_isFixedTableRendering","sortableName","sortableFixedName","currentSortableName","anotherSortableName","togglePointerEventsStyle","_this$sortableFixedNa","dragTemplate","_getDraggableRowTemplate","handle","dropFeedbackMode","onDragStart","_rowDragging$onDragSt","fromIndex","isDataRow","onDragEnter","onDragLeave","onDragEnd","_rowDragging$onDragEn","onAdd","_rowDragging$onAdd","hasFixedSortable","_sortable","_sortableFixed","sortable","_getDraggableGridOptions","gridOptions","useNative","showScrollbar","pager","columnFixing","onRowPrepared","$dataGridContainer","rowDraggingModule","default","OPERATION_DESCRIPTORS","CORRECT_FILTER_RANGE_OVERLAY_WIDTH","FILTER_ROW_CLASS","FILTER_RANGE_OVERLAY_CLASS","FILTER_RANGE_START_CLASS","FILTER_RANGE_END_CLASS","MENU_CLASS","EDITOR_WITH_MENU_CLASS","EDITOR_CONTAINER_CLASS","FILTER_MENU","APPLY_BUTTON_CLASS","HIGHLIGHT_OUTLINE_CLASS","FOCUSED_CLASS","FILTER_RANGE_CONTENT_CLASS","FILTER_MODIFIED_CLASS","BETWEEN_OPERATION_DATA_TYPES","isOnClickApplyFilterMode","ColumnHeadersViewFilterRowExtender","getEditorInstance","$editorContainer","componentNames","getRangeTextByFilterValue","rangeEnd","getColumnFilterValue","bufferedFilterValue","getColumnSelectedFilterOperation","bufferedSelectedFilterOperation","getFilterValue","isFilterRange","isRangeStart","updateFilterValue","_applyFilterViewController","setHighLight","columnOptionName","columnFilterValue","isBetween","_updateEditorValue","$editorRangeElements","$menu","overlayInstance","_updateFilterRangeContent","_updateFilterOperationChooser","_renderFilterRangeContent","_renderEditor","_getEditorOptions","_hideFilterRange","_filterRangeOverlayInstance","isFilterRowVisible","_initFilterRangeOverlay","$prevElement","_updateFilterRangeOverlay","_showFilterRange","getFilterRangeOverlayInstance","_renderFilterCell","_renderFilterOperationChooser","accessibilityOptions","_getFilterInputAccessibilityAttributes","columnAriaLabel","$filterRangeContent","isCellWasFocused","_focusEditor","integrationOptions","selectable","_getFilterOperationMenuItems","properties","columnSelectedFilterOperation","notFocusEditor","isOnClickMode","defaultSelectedFilterOperation","_isEditorFocused","prependTo","operationDescriptions","availableFilterOperations","descriptionName","resetOperationText","DataControllerFilterRowExtender","ApplyFilterViewController","_getHeaderPanel","_headerPanel","enableApplyButton","applyFilter","removeHighLights","columnHeadersViewElement","filterRowModule","showOperationChooser","applyFilterText","betweenStartText","betweenEndText","columnsResizer","_startResizing","isResizing","_targetPoint","_endResizing","filterItem","_prepareFilterItem","_isShowApplyFilterButton","TABLE_CLASS","BOTTOM_LOAD_PANEL_CLASS","TABLE_CONTENT_CLASS","GROUP_SPACE_CLASS","CONTENT_CLASS","FREESPACE_CLASS","VIRTUAL_ROW_CLASS","SCROLLING_MODE_INFINITE","SCROLLING_MODE_VIRTUAL","SCROLLING_MODE_STANDARD","PIXELS_LIMIT","LOAD_TIMEOUT","isAppendMode","isVirtualRowRendering","rowRenderingMode","_correctCount","fromEnd","isItemCountableFunc","isItemCountableByDataSource","isGroupItemCountable","updateItemIndices","VirtualScrollingDataSourceAdapterExtender","_updateLoading","_virtualScrollController","viewportSize","getViewportItemIndex","_isLoaded","_loadPageCount","_getVirtualScrollDataOptions","updateLoading","viewportItems","onChanged","changingDuration","_startLoadTime","handleDataChanged","newMode","virtualScrollController","delayDeferred","getDelayDeferred","removeEmptyRows","$emptyRows","tBodies","_dataController$state","scrollToPage","_scrollTop","_scrollToCurrentPageOnResize","stateLoaded","resizeHandler","scrollPosition","itemSize","getItemSize","itemSizes","getItemSizes","_scrollLeft","renderDelayedTemplates","_updateContentPosition","startRenderTime","_removeRowsElements","contentTable","_restoreErrorRow","getChangeByKey","_showErrorRow","$freeSpaceRowElements","_findContentElement","$tBodies","_getBodies","_getFreeSpaceRowElements","_updateBottomLoading","_addVirtualRow","isFixed","$virtualRow","_createEmptyRow","_wrapRowIfNeed","_appendEmptyRow","_getRowHeights","rowHeights","_correctRowHeights","correctedRowHeights","firstCountableItem","currentItem","isRender","rowHeight","_rowHeight","viewportItemSize","setContentItemSizes","getContentOffset","$virtualRows","_isTableLinesDisplaysCorrect","table","hasColumnLines","_isColumnElementsEqual","$columns","$virtualColumns","_renderVirtualTableContent","_createColGroup","freeSpaceCellsHtml","columnLinesClass","createFreeSpaceRowHtml","classes","_getCellClasses","classString","isExpandColumn","_findBottomLoadPanel","$bottomLoadPanel","showBottomLoading","bottomLoadPanelElement","setViewportPosition","_needUpdateRowHeight","_updateRowHeight","viewportHeight","outerHeight","_loadViewportParams","viewportIsNotFilled","loadViewport","updateFreeSpaceRowHeight","hasBottomLoadPanel","isViewportChanging","_windowScroll","scrollPos","loadIfNeed","_dataController$loadI","setColumnWidths","_scrollTimeoutID","virtualScrollingModule","updateTimeout","minTimeout","removeInvisiblePages","rowPageSize","preloadEnabled","loadTwoPagesOnStart","minGap","baseResult","initVirtualRows","getRowPageSize","getItemIndexByPosition","rowIndexOffset","isSortingOperation","isChromeLatest","chrome","allowedTopOffset","virtualRowsRendering","_visibleItems","_rowPageIndex","_uncountableItemCount","_getRowsScrollDataOptions","_viewportChanging","positionChanged","_this$_dataSource","setViewportItemIndex","isItemCountable","correctCount","isNextAfterLast","countableOnly","isRefresh","_updateLoadViewportParams","getViewportParams","skipForCurrentPage","getLoadPageParams","allItems","byLoadedRows","sizes","viewportParams","_this$_loadViewportPa","_resizeTimeout","_lastTime","COLUMN_INDICATORS_CLASS","GROUP_PANEL_ITEM_CLASS","_that$component","isGroupPanelItem","_createIndicatorContainer","$span","indicatorAlignment","ignoreIndicatorAlignment","$indicatorContainer","_updateIndicators","_format","formatIsValid","valueIsValid","getTimeFormat","showSecond","_normalizeFormat","formatPart","getDateFormatByDifferences","dateDifferences","intervalFormat","resultFormat","needSpecialSecondFormatter","millisecond","getMilliseconds","getMonthNames","getDateFormatByTicks","ticks","maxDiff","currentDiff","getDatesDifferences","getDateFormatByTickInterval","startValue","endValue","tickInterval","dateUnitInterval","correctDateDifferences","differences","minDate","maxDate","getDateUnitInterval","week","WINDOW_HEIGHT_PERCENT","getElementMaxHeightByWindow","startLocation","actualOffset","elementOffset","innerHeight","offsetBottom","modules","combineClasses","classesMap","registerModule","commonColumnSettings","allowExporting","dataSourceAdapterType","extender","DataController","DATAGRID_ROW_SELECTOR","DATAGRID_DEPRECATED_TEMPLATE_WARNING","registerModulesOrder","DataGrid","_activeStateUnit","_setDeprecatedOptions","_deprecatedOptions","useKeyboard","since","alias","platform","showRowLines","browser","webkit","loadPanel","easing","duration","from","_device","expandMode","processModules","callModuleItemsMethod","_visibilityChanged","templateName","_controllers","columnChooser","columnChooserView","createOffsetFilter","path","lastLevelOnly","groups","filterElement","currentFilter","GroupingHelper","findGroupInfoByKey","groupsInfo","hash","getGroupInfoIndexByOffset","leftIndex","rightIndex","middleIndex","ctor","_groupsInfo","_totalCountCorrection","totalCountCorrection","updateTotalItemsCount","_isVirtualPaging","calculateItemsCount","groupsCount","foreachGroups","childrenAtFirst","foreachCollapsedGroups","updateOffsets","updateParentOffsets","foreachGroupsCore","callbackResults","executeCallback","callbackResult","pop","currentParents","_updateGroupInfoOffsets","groupInfo","parentIndex","findGroupInfo","pathIndex","addGroupInfo","groupInfoData","allowCollapseAll","oldGroups","_group","cleanGroupsInfo","handleDataLoading","handleDataLoaded","handleDataLoadedCore","createGroupFilter","loadTotalCount","correctSkipLoadOption","skipCorrection","resultSkip","pathEquals","path1","path2","updateGroupOffsets","additionalGroupInfo","getGroupCount","collapsedGroups","collapsedItemsCount","skipFirstItem","sorts","arrangeSortingInfo","appendCollapsedPath","collapsedGroup","keyValue","pathValue","query","multiLevelGroup","groupedData","processGroupItems","removeLastItemsCount","needRemoveFirstItem","collapsedItems","offsetInfo","itemsCountCorrection","changeRowExpand","groupCountQuery","dataSourceItems","groupOffsetQuery","getContinuationGroupCount","groupOffset","pageOffset","foreachExpandedGroups","updateGroups","expandedInfo","isLastGroupExpanded","paths","lastCount","updateGroupInfoItem","isLastGroupLevel","_isGroupExpanded","updateGroupInfos","loadedGroupCount","remotePaging","skips","isGroupExpanded","getTotalOffset","groupInfos","totalOffset","childrenTotalCount","applyContinuationToGroupItem","expandedItemIndex","takes","isLastExpandedItem","isFirstExpandedItem","lastExpandedItemSkip","isItemsTruncatedByTake","isDataDeferred","makeDataDeferred","loadGroupItems","currentGroupCount","currentGroupIndex","currentGroup","requireGroupCount","groupSummary","expandedFilters","expandedPath","isPagingLocal","isLastLevelGroupItemsPagingLocal","sortLastLevelGroupItems","expandedItems","loadGroupTotalCount","isGrouping","isVirtualPaging","_updatePagingOptions","skipChildrenTotalCount","takeCorrection","parentTakeCorrection","continuationGroupCount","skipContinuationGroupCount","groupInfoCount","childrenGroupInfoCount","remoteGroupPaging","isLastGroup","_processPaging","_processSkips","firstItem","_processTakes","lastItem","maxTakeCount","handleGroup","DATAGRID_GROUP_PANEL_CLASS","DATAGRID_GROUP_PANEL_MESSAGE_CLASS","DATAGRID_GROUP_PANEL_ITEM_CLASS","DATAGRID_GROUP_PANEL_LABEL_CLASS","DATAGRID_GROUP_ROW_CLASS","GroupingDataSourceAdapterExtender","_initGroupingHelper","_grouping","isAutoExpandAll","isFocusedRowEnabled","isODataRemoteOperations","_collapseExpandAll","isExpand","_hasGroupLevelsExpandState","GroupingDataControllerExtender","groupColumns","getGroupColumns","_processGroupItems","_processGroupItem","groupedColumns","collectContinuationItems","resultItems","deserializeValue","expanded","expandRow","collapseRow","onGroupingMenuItemClick","clearGrouping","GroupingHeaderPanelExtender","_appendGroupingItem","_isGroupPanelVisible","isRendered","$groupPanel","_updateGroupPanelContent","groupColumnIndex","_processGroupItemAction","groupPanelOptions","devices","_renderGroupPanelItems","groupColumn","_createGroupPanelItem","$groupPanelItem","$toolbarElement","allowColumnDragging","emptyPanelText","contextMenuEnabled","$groupedColumnElement","isGroupingAllowed","isColumnGrouped","groupingTexts","ungroup","ungroupAll","GroupingRowsViewExtender","isGroupRowStateChanged","isExpandButtonClicked","_changeGroupRowState","allowCollapsing","columnHeadersViewExtender","groupByThisColumn","beginGroup","groupContinuesMessage","groupContinuedMessage","groupPanel","_getExpandColumnOptions","draggingHeaderView","draggingHeader","columnsSeparatorView","tablePosition","trackerView","depthFirstSearch","depth","root","array","isCount","aggregator","normalizeAggregate","aggregate","skipEmptyValues","errors","_data","_groupLevel","_totalAggregates","totalAggregates","_groupAggregates","groupAggregates","_totals","calculate","_calculateTotals","_calculateGroups","_aggregate","aggregates","_accumulate","level","_seed","_finalize","maxLevel","currentLevel","seedFn","stepFn","finalizeFn","innerNode","seed","NaN","aggregateIndex","fin","finalize","DATAGRID_TOTAL_FOOTER_CLASS","DATAGRID_SUMMARY_ITEM_CLASS","DATAGRID_TEXT_CONTENT_CLASS","DATAGRID_GROUP_FOOTER_CLASS","DATAGRID_GROUP_TEXT_CONTENT_CLASS","DATAGRID_NOWRAP_CLASS","DATAGRID_GROUP_FOOTER_ROW_TYPE","renderSummaryCell","$summaryItems","getSummaryCellOptions","totalItem","getGroupAggregates","recalculateWhileEditing","FooterView","footerItems","needUpdateScrollLeft","$newTable","$newRow","_updateCells","totalColumnIndices","SummaryDataSourceAdapterExtender","_summaryGetter","summaryGetter","_summary","sortByGroupsInfo","sortByGroups","groupedItems","forEachGroup","itemsPath","SummaryDataSourceAdapterClientExtender","calculateAggregates","calculator","insertedData","applyAddedData","removedData","applyRemovedData","updatedData","updatedItems","defineProperty","set","sortGroupsBySummary","sortGroupsBySummaryCore","sortBy","thenBy","sortedItems","totalSummary","groupItems","totalItems","calculateCustomSummary","getFormatter","sumOtherColumn","minOtherColumn","maxOtherColumn","avg","avgOtherColumn","sortByGroupSummaryInfo","_isDataColumn","_isGroupFooterVisible","groupItem","showInColumn","showInGroupFooter","isGroupFooterVisible","summaryGroupItems","afterGroupColumnIndex","prevColumn","_calculateSummaryCells","alignByColumn","calculateTargetColumnIndex","summaryCellsByColumns","summaryIndex","_getSummaryCells","summaryTotalItems","_footerItems","oldSummaryCells","summaryCell","_prepareUnsavedDataSelector","_prepareAggregateSelector","_getAggregates","commonSkipEmptyValues","summaryProcess","totalValue","_addSortInfo","_findSummaryItem","summaryItemIndex","_getSummarySortByGroups","groupSummaryItems","currentRemoteOperations","_getSummaryOptions","totalSummaryItems","methods","getTotalSummaryValue","summaryItemName","_refreshSummary","_renderGroupSummaryCells","_hasAlignByColumnSummaryItems","_getAlignByColumnCellCount","groupCellColSpan","alignByColumnCellCount","$groupCell","_renderGroupSummaryCellsCore","_getSummaryCellIndex","DATAGRID_EXPORT_MENU_CLASS","DATAGRID_EXPORT_BUTTON_CLASS","DATAGRID_EXPORT_ICON","DATAGRID_EXPORT_EXCEL_ICON","DATAGRID_EXPORT_SELECTED_ICON","DATAGRID_EXPORT_EXCEL_BUTTON_ICON","TOOLBAR_ITEM_AUTO_HIDE_CLASS","TOOLBAR_HIDDEN_BUTTON_CLASS","DataProvider","exportController","initialColumnWidthsByColumnIndex","selectedRowsOnly","_exportController","_initialColumnWidthsByColumnIndex","_selectedRowsOnly","_getGroupValue","_options","_correctCellIndex","_initOptions","excelWrapTextEnabled","_getColumns","_selectionOnly","_getSelectedItems","_getAllItems","isHeadersVisible","customizeExportData","wrapTextEnabled","customizeExcelCell","hasCustomizeExcelCell","cellSourceData","gridCell","getHeaderStyles","bold","wrapText","columnStyles","getStyles","getColumnStyles","getGroupRowStyle","_getTotalCellStyleId","_this$getColumns$cell","getStyleId","getHeaderRowCount","isTotalCell","isGroupRow","getColumnsByAllRows","getColumnsWidths","getRowsCount","getGroupLevel","getCellType","ready","_convertFromGridGroupSummaryItems","gridGroupSummaryItems","getCellData","isExcelJS","correctedCellIndex","columnsRow","gridColumn","itemValues","totalSummaryItemName","_value","displayValue","getCustomizeTextByDataType","correctCellIndex","isSummaryAlignByColumn","getCellMerging","exportColspan","getFrozenArea","ExportController","_getEmptyCell","_updateColumnWidth","currentHeaderRow","columnWidthsByColumnIndex","_getColumnWidths","_headersView","_needColumnExporting","currentColspan","_calculateExportColspan","_prepareItems","childColumns","childColumn","_getFooterSummaryItems","isTotal","estimatedItemsCount","itemsLength","_hasSummaryGroupFooters","_getItemsWithSummaryGroupFooters","sourceItems","beforeGroupFooterItems","groupFooterItems","_updateGroupValuesWithSummaryByColumn","summaryValues","groupColumnCount","k","_processUnExportedItems","isDetailExpandColumn","selectionController","selectedRowData","getSelectedRowsData","headersView","getExportFormat","getDataProvider","columnsLastRowVisibleColumns","exportToExcel","selectionOnly","autoFilterEnabled","ignoreErrors","exportingAction","getAction","exportedAction","fileSavingAction","getData","_isSelectedRows","selectionOnlyChanged","export","excelFilterEnabled","allowExportSelectedData","ignoreExcelErrors","exportTo","exportAll","exportSelectedRows","callbackList","editingChanged","_appendExportItems","exportOptions","exportItems","_renderButton","_renderExportMenu","menuItemTemplate","_renderList","allowExportSelected","_correctItemsPosition","withText","buttonOptions","_getButtonOptions","$buttonContainer","wrapperNode","wrapInner","_renderFakeButton","exportSelected","scrollingEnabled","iconName","$icon","$toolbarItem","itemA","itemB","_contextMenu","_$parent","boundaryOffset","_isExportButtonVisible","MAX_SAFE_INTEGER","isRowClick","isKeyboardEnabled","_isFocusedRowInsideGroup","_getGroupPath","groupPath","_expandGroupByPath","isGroupKey","_calculateExpandedRowGlobalIndex","dataOffset","groupContinuationCount","currentPageOffset","DATE_INTERVAL_FORMATS","HeaderFilterController","_headerFilterView","_updateSelectedState","_normalizeGroupItem","valueSelector","displaySelector","firstValueText","secondValue","secondValueText","emptyValue","isLookup","lookupDataSourceOptions","cutoffLevel","_currentColumn","useDefaultSearch","origPostProcess","isGroupPanel","dxResizableInstance","dxResizable","headerFilterByColumn","ColumnHeadersViewHeaderFilterExtender","_subscribeToIndicatorEvent","HeaderPanelHeaderFilterExtender","headerFilterModule","headerFilterView","SCROLL_CONTAINER_CLASS","SCROLLABLE_SIMULATED_CLASS","CONTENT_FIXED_CLASS","GROUP_ROW_CLASS","DETAIL_ROW_CLASS","CELL_UPDATED_ANIMATION_CLASS","CELL_HINT_VISIBLE","FORM_FIELD_ITEM_CONTENT_CLASS","appendElementTemplate","subscribeToRowEvents","touchTarget","touchCurrentTarget","timeoutId","clearTouchTargets","getWidthStyle","setCellWidth","copyAttributes","newElement","oldAttributes","newAttributes","nodeName","hasAttribute","ColumnsView","_createScrollableOptions","scrollingOptions","useNativeScrolling","bounceEnabled","useSimulatedScrollbar","textAlign","rowObject","_isAltRow","isAppend","safari","isHeaderRow","isMasterDetailRow","msieCorrection","groupCellTemplate","difference","scrollWidth","clientWidth","getOptions","$fieldItemContent","delegateTarget","resultOptions","eventType","formItemOptions","colgroupElement","_createCol","col","delayedTemplates","_delayedTemplates","syncTemplates","async","asyncTemplates","_renderDelayedTemplatesCore","_renderDelayedTemplatesCoreAsync","isAsync","templateParameters","doc","renderedTemplate","templateID","_templatesCache","getTemplate","templateDeferred","onRendered","_appendRow","appendTemplate","scrollLeft","$root","$wrappedRow","_addWatchMethod","_rowPrepared","$newRowElement","$newCells","cellUpdatedClass","$newCell","columnIndexOffset","ariaColIndex","isAltRow","source","watchers","updateFunc","watcher","afterExecute","_afterRowPrepared","$scrollContainer","_wrapTableInScrollContainer","$newTableElement","offsetWidth","getBoundingClientRect","clientRect","isRowVisible","$cols","toFixed","_getCellElementsCore","columnVisibleIndex","_getRowElement","getCellElement","getCell","cellPosition","_getRowElementsCore","paddingLeft","paddingRight","isScrollbarVisible","isHorizontal","DEFAULT_DATE_INTERVAL","DEFAULT_DATETIME_INTERVAL","dateIntervals","getFilterSelector","displayField","getFilterExpressionByRange","endFilterValue","startFilterExpression","endFilterExpression","getTime","setDate","getFilterExpressionForDate","dateStart","dateEnd","dateInterval","dateValue","getFilterExpressionForNumber","startFilterValue","isSearchByDisplayValue","ROW_SELECTION_CLASS","SELECT_CHECKBOX_CLASS","CHECKBOXES_HIDDEN_CLASS","COMMAND_SELECT_CLASS","SELECTION_DISABLED_CLASS","DATA_ROW_CLASS","SHOW_CHECKBOXES_MODE","SELECTION_MODE","processLongTap","isSelectionWithCheckboxes","stopSelectionWithCheckboxes","startSelectionWithCheckboxes","changeItemSelection","control","SelectionController","selectionCellTemplate","isRowSelected","renderSelectCheckBoxContainer","selectionHeaderTemplate","_renderSelectAllCheckBox","_attachSelectAllCheckBoxClickEvent","selectAllMode","_selectionMode","_isSelectionWithCheckboxes","_selection","_createSelection","_updateSelectColumn","_getSelectionConfig","selectionOptions","selectedKeys","maxFilterLengthInRequest","selectionFilter","ignoreDisabledItems","dataFields","_dataController$dataS","_dataController$dataS2","isItemSelected","isSelectableItem","getItemData","_updateSelectedItems","isSelectColumnVisible","_fireSelectionChanged","selectedRowKeys","selectionChanged","_updateCheckboxesState","isDeferredMode","selectedItemKeys","removedItemKeys","keyIndex","isComplexKey","selectionChangedOptions","changedItemIndexes","getChangedItemIndexes","itemIndexes","addedItemKeys","_selectedItemsInternalChange","selectedRowsData","currentSelectedRowKeys","currentDeselectedRowKeys","isDeferredSelection","isDataItem","isSelected","oldSelectionMode","selectRows","updateColumns","_isOnePageSelectAll","getSelectAllState","selectAll","deselectAll","clearSelection","preserve","isDeselect","getSelectedRowKeys","getSelectedItemKeys","deselectRows","selectRowsByIndexes","indexes","getSelectedItems","focusedItemIndex","_focusedItemIndex","selectionModule","allowSelectAll","hasSelectColumn","isUpdateSelection","removedKeys","_updateSelectAllValue","selectAllValue","hasSelection","dxCheckBox","isEmptyData","_attachCheckBoxClickEvent","_renderSelectCheckBox","_e$event","tableElements","_updateCheckboxesClass","isSelectionDisabled","isClickableElement","isCommandSelect","isCheckBoxesHidden","FIRST_CELL_CLASS","LAST_CELL_CLASS","HOVER_STATE_CLASS","FIXED_COL_CLASS","FIXED_COLUMNS_CLASS","POINTER_EVENTS_NONE_CLASS","COMMAND_TRANSPARENT","getTransparentColumnIndex","normalizeColumnWidths","fixedWidths","fixedColumnIndex","baseFixedColumns","_isFixedColumns","_correctColumnIndicesForFixedColumns","transparentColspan","$fixedTable","_fixedTableElement","fixedCorrection","fixedCells","prevFixedColumn","columnCommand","isRowAltStyle","isEmptyCell","isGroupCell","alignByFixedColumnCellCount","cellElements","headerRowIndex","fixedCellElements","visibility","fixedColumn","getVisibleIndexByColumn","getFixedColumnsOffset","$transparentColumn","right","getTransparentColumnElement","positionTransparentColumn","getFixedTableElement","synchronizeRows","isWidthsSynchronized","isColumnWidthChanged","useVisibleColumns","_getClientHeight","boundingClientRectElement","$rowElements","$fixedRowElements","fixedRowHeights","heightTable","heightFixedTable","fixedRowHeight","ColumnHeadersViewFixedColumnsExtender","columnFixingOptions","allowFixing","fix","leftPosition","rightPosition","unfix","getFixedColumnElements","$transparentColumnElement","$fixedColumnElements","RowsViewFixedColumnsExtender","_detachHoverEvents","attachHoverEvent","isHover","contentClass","scrollDelay","_fixedScrollTimeout","$nearestScrollable","shouldScroll","nearestScrollableInstance","nearestScrollableHasVerticalScrollbar","_updateScrollable","_updateFixedTablePosition","_getGroupCellOptions","_renderGroupedCells","_setRowsOpacityCore","needFocus","vWidth","hWidth","styles","marginBottom","$fixedContent","_scrollable","_getElasticScrollTop","elasticScrollTop","reachedBottom","scrollableContent","scrollableContainer","_container","maxScrollTop","_applyElasticScrolling","_scrollToElement","FooterViewFixedColumnsExtender","columnFixingModule","normalizeColumnIndicesByPoints","pointsByColumns","correctIndex","_generatePointsByColumns","targetDraggingPanel","sourceColumn","_pointCreated","targetColumn","boundingRect","pointsByFixedColumns","_pointsByFixedColumns","isWidgetResizingMode","nextColumn","_getTargetPoint","currentX","deltaX","FILTER_PANEL_CLASS","FILTER_PANEL_TEXT_CLASS","FILTER_PANEL_CHECKBOX_CLASS","FILTER_PANEL_CLEAR_FILTER_CLASS","FILTER_PANEL_LEFT_CONTAINER","FILTER_PANEL_TARGET","FilterPanelView","$leftContainer","_filterValueBuffer","_getCheckElement","_getFilterElement","_getTextElement","_getRemoveButtonElement","_showFilterBuilder","_addTabIndexToElement","filterText","$textElement","getFilterText","customText","clearFilterValue","tabindex","_getConditionText","fieldText","operationText","_getValueMaskedText","_getValueText","hasCustomOperation","getConditionText","getGroupText","isInnerGroup","textParts","groupText","toUpperCase","filterPanelModule","filterPanel","filterEnabled","createFilter","filterEnabledHint","filterPanelView","COLUMNS_SEPARATOR_CLASS","COLUMNS_SEPARATOR_TRANSPARENT","DRAGGING_HEADER_CLASS","HEADERS_DRAG_ACTION_CLASS","TRACKER_CLASS","HEADERS_DROP_HIGHLIGHT_CLASS","BLOCK_SEPARATOR_CLASS","WIDGET_CLASS","DRAGGING_COMMAND_CELL_CLASS","MODULE_NAMESPACE","COLUMNS_SEPARATOR_TOUCH_TRACKER_WIDTH","DRAGGING_DELTA","COLUMN_OPACITY","TrackerView","_unsubscribeFromCallback","_positionChanged","_tablePositionController","_subscribeToCallback","setHeight","SeparatorView","_renderSeparator","_isShown","ColumnsSeparatorView","_isTransparent","force","columnsSeparatorTransparent","moveByX","outerX","_parentElement","changeCursor","cursorName","BlockSeparatorView","columnChooserOptions","targetLocation","startAnimate","toOptions","DraggingHeaderView","_isDragging","isDragging","_getDraggingPanelByPos","_dragOptions","_resetTargetColumnOptions","_dropOptions","targetColumnIndex","targetColumnElement","isLast","posX","posY","_getVisibleIndexObject","getCommonSettings","_controller","_columnsResizerViewController","dragHeader","isCommandColumn","sourceIndex","sourceColumnIndex","sourceColumnElement","_onSelectStart","onselectstart","drag","whiteSpace","getSwatchContainer","moveHeader","eventData","dragOptions","moveDeltaX","moveDeltaY","deltaY","newLeft","newTop","dockHeader","isVerticalOrientation","axisName","pointsByTarget","centerPosition","dock","dropHeader","drop","isNextColumnResizingMode","ColumnsResizerViewController","_isHeadersRowArea","headersRowHeight","_isRtlParentStyle","_this$_$parentContain","_$parentContainer","isNextColumnMode","isRtlParentStyle","firstPointColumnIndex","_moveSeparator","columnsSeparatorWidth","_columnsSeparatorView","parentOffset","parentOffsetLeft","_isResizing","_resizingInfo","_updateColumnsWidthIfNeeded","currentColumnIndex","_previousParentOffset","_isReadyResizing","_trackerView","_getNextColumnIndex","_setupResizingInfo","nextColumnIndex","currentHeader","nextHeader","startPosX","currentColumnWidth","nextColumnWidth","_scrollRight","_pointsByColumns","_unsubscribeFromEvents","_moveSeparatorHandler","_startResizingHandler","_endResizingHandler","_subscribeToEvents","nextCellWidth","cellWidth","needUpdate","resizingInfo","adaptColumnWidthByRatio","setColumnWidth","oldColumnWidth","allColumnsHaveWidth","totalPercent","hasScroll","_subscribesToCallbacks","_unsubscribeFromCallbacks","subscribe","_unsubscribes","generatePointsByColumnsHandler","generatePointsByColumnsScrollHandler","previousScrollbarVisibility","previousTableHeight","scrollbarVisibility","TablePositionViewController","diffOffsetTop","columnsHeadersHeight","scrollBarWidth","rowsHeight","columnsResizerController","isDraggingOrResizing","_pagerView","targetPoint","DraggingHeaderViewController","nameDraggingPanel","subscribeToEvents","_getSeparator","_blockSeparatorView","hideSeparators","blockSeparator","columnsSeparator","_animationColumnIndex","_draggingHeaderView","_headerPanelView","_columnChooserView","allowDrop","allowMoveColumn","separator","hasTargetVisibleIndex","moveColumn","columnsResizingReorderingModule","blockSeparatorView","wordWrapEnabled","foreachColumnInfo","offsets","lastProcessedIndexes","colIndex","processedColumnCount","createColumnsInfo","newInfo","columnInfo","cellColspan","USER_STATE_FIELD_NAMES_15_1","USER_STATE_FIELD_NAMES","IGNORE_COLUMN_OPTION_NAMES","bestFitWidth","COMMAND_EXPAND_CLASS","GROUP_COMMAND_COLUMN_NAME","regExp","globalColumnId","columnsControllerModule","allowColumnReordering","allowColumnResizing","columnResizingMode","columnMinWidth","regenerateColumnsByVisibleItems","customizeColumns","DEFAULT_COLUMN_OPTIONS","showInColumnChooser","COLUMN_INDEX_OPTIONS","grouped","setFilterOperationsAsDefaultValues","createColumn","columnOptions","userStateColumnOptions","bandColumn","commonColumnOptions","setName","calculatedColumnOptions","_createCalculatedColumnOptions","createColumnsFromOptions","columnsOptions","_columnsUserState","checkUserStateColumn","hasColumns","getParentBandColumns","columnParentByIndex","_getChildrenByBandColumn","columnChildrenByIndex","recursive","getColumnFullPath","bandColumnsCache","getBandColumnsCache","callbackFilter","isPlain","_columns","calculateColspan","getValueDataType","getSerializationFormat","getDateSerializationFormat","updateSerializers","deserializeDate","serializeValue","serializeDate","serializationFormat","parsedValue","customizeTextForBooleanDataType","updateColumnIndexes","_commandColumns","updateColumnGroupIndexes","getColumnIndexByVisibleIndex","getChooserColumns","userStateColumn","applyUserState","userStateColumnIndex","columnsUserState","ignoreColumnOptionNames","_ignoreColumnOptionNames","columnCountById","resultColumns","allColumnsHaveState","userStateColumnIndexes","applyFieldsState","fieldName","findUserStateColumn","_hasUserState","initialIndex","hasAddedBands","columnUserState","added","assignColumns","updateIndexes","isSortOrderValid","resetBandColumnsCache","bandColumns","parentBandColumns","updateColumnChanges","columnChanges","_columnChanges","fireColumnsChanged","onColumnsChanging","reinitOptionNames","isInitialized","updateSortOrderWhenGrouping","prevGroupIndex","columnWasGrouped","lastSortOrder","sortMode","sortedByAnotherColumn","fireOptionChanged","prevValue","fullOptionName","fullOptionPath","_skipProcessingColumnsChange","_notifyOptionChanged","columnOptionCore","initialColumn","optionGetter","functionsAsIs","optionSetter","_checkColumns","dotCount","isCustomCommandColumn","commandColumn","getFixedPosition","processExpandColumns","customColumnIndex","expandColumnsByType","expandColumn","numberToString","digitsCount","mergeColumns","commandColumns","needToExtend","commandColumnIndex","isColumnFixing","_isColumnFixing","defaultCommandColumns","getCommandColumnIndex","columnType","isColumnFixed","_bandColumnsCache","findColumn","identifierOptionName","_getFirstItems","getFirstItemsCore","childItems","_isColumnsFromOptions","_dataSourceApplied","columnIndexes","needUpdateRequireResize","_updateRequireResize","columnOptionValue","forceApplying","isDataSourceLoaded","_dataSourceColumnsCount","columnsFromDataSource","firstItems","processedFields","_visibleColumns","_fixedColumns","_rowCount","groupingOptions","autoExpandGroup","checkSerializers","isBandColumnsUsed","_getVisibleColumnsCore","_getFixedColumnsCore","notFixedColumnCount","lastFixedPosition","transparentColumn","newColumn","getExpandColumns","firstGroupColumn","isFixedFirstGroupColumn","_isColumnVisible","isParentColumnVisible","isFixedToEnd","rowspanGroupColumns","rowspanExpandColumns","positiveIndexedColumns","negativeIndexedColumns","notGroupedColumnsCount","columnDigitsCount","indexedColumns","firstPositiveIndexColumn","columnsByFixing","columnsByVisibleIndex","getDataColumns","bandColumnID","getInvisibleColumns","hiddenColumnsByBand","getAllColumns","fromVisibleIndex","toVisibleIndex","targetGroupIndex","toIndex","needResetSorting","useLocalSelector","sortColumns","sortItem","calculateSortValue","updateNewLookupsOnly","valueMap","_updateColumnOptions","calculateCallbackName","calculateCallback","isRTL","isColumnDataTypesUpdated","lookupDataType","valueDataType","_customizeColumns","hasOwnerBand","sortParameters","groupParameters","filterParameters","_updateChanges","fromDataSource","isColumnsChanged","updateSortGroupParameterIndexes","indexParameterName","columnsGroupParameters","columnsSortParameters","forceIsoDateParsing","clearSorting","addColumn","deleteColumn","childIndexes","handleStateField","setUserState","isFilterPanelHidden","usedNames","hasEditableColumnWithoutName","duplicatedNames","_column$columns","isEditable","skipDeserialization","parse","userDataType","updateValueMap","calculateValue","resizedCallbacks","resized","defaultOptionName","charAt","invisibleParents","alwaysGetRowIndex","onlyVisibleDirectChildren","column1","column2","isParentBandColumn","InfernoEffectHost","lockCount","callbacks","effects","areObjectsEqual","firstObject","secondObject","bothAreObjects","firstObjectKeys","secondObjectKeys","hasDifferentElement","_pendingContext","nextProps","nextState","createEffects","updateEffects","destroyEffects","vDomElement","vDomPreviousClasses","vDomRemovedClasses","vDomAddedClasses","_a","currentClasses","addedClasses","removedClasses","indexInRemoved","indexInAdded","componentDidMount","componentDidUpdate","classList","shouldUpdate","shouldComponentUpdate","vDomUpdateClasses","createContext","InfernoEffect","effect","dependency","destroy","NUMBER_STYLES","uppercasePattern","kebabCase","isNumeric","getNumberStyleValue","normalizeStyles","kebabString","module","exports","f","u","require","code","1","self","JSZip","encode","getTypeOf","charCodeAt","decode","uint8array","Uint8Array","2","compressedSize","uncompressedSize","crc32","compression","compressedContent","getContentWorker","Promise","pipe","uncompressWorker","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","3","STORE","magic","DEFLATE","4","5","base64","binary","dir","createFolders","compressionOptions","comment","unixPermissions","dosPermissions","6","lie","7","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","meta","inherits","processChunk","_createPako","transformTo","flush","cleanUp","raw","onData","pako","8","O","fromCharCode","D","utf8encode","I","m","w","E","z","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","A","fileRecord","T","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","percent","openedSource","closedSource","DATA_DESCRIPTOR","CENTRAL_DIRECTORY_END","prepareNextSource","previous","isPaused","pause","resume","registerPrevious","end","generatedError","9","generateWorker","_compressWorker","10","files","loadAsync","support","defaults","external","11","decompressed","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isStream","prepareContent","fileNameStr","fileCommentStr","12","_upstreamEnded","_bindStream","_stream","13","Readable","_helper","emit","_read","14","Buffer","newBufferFrom","allocBuffer","alloc","fill","isBuffer","15","folder","generate","generateInternalStream","checkSupport","generateAsync","generateNodeStream","toNodejsStream","16","stream","17","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","18","checkIndex","setIndex","readInt","readString","readDate","UTC","19","20","21","subarray","22","23","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","24","destType","25","26","27","dataIsReady","_tickScheduled","_tickAndRepeat","isFinished","_tick","28","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","29","nodestream","_internalType","_outputType","_mimeType","_worker","newBlob","objectMode","30","arraybuffer","ArrayBuffer","nodebuffer","size","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","getBlob","31","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","32","stringifyByChunk","stringifyByChar","applyCanBeUsed","buffer","byteLength","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","FileReader","onload","onerror","readAsArrayBuffer","33","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","prepareReader","34","isEncrypted","bitFlag","useUTF8","fileNameLength","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","35","_dataBinary","internalStream","_decompressWorker","nodeStream","36","MutationObserver","WebKitMutationObserver","observe","characterData","setImmediate","MessageChannel","onreadystatechange","documentElement","port1","onmessage","port2","postMessage","37","TypeError","queue","outcome","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","status","finally","catch","race","immediate","38","assign","39","chunkSize","windowBits","memLevel","strategy","gzip","err","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","40","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","41","Int32Array","setTyped","Buf16","Buf32","42","43","44","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","45","46","pending","pending_buf","pending_out","total_out","_tr_flush_block","block_start","strstart","max_chain_length","prev_length","nice_match","w_size","w_mask","good_match","lookahead","match_start","window_size","hash_size","head","wrap","adler","total_in","ins_h","hash_shift","hash_mask","match_length","_tr_tally","max_lazy_match","last_lit","R","prev_match","match_available","F","good_length","max_lazy","nice_length","max_chain","N","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","U","data_type","_tr_init","L","P","deflateInit","deflateReset","deflateResetKeep","hcrc","time","os","_tr_align","_tr_stored_block","deflateInfo","47","xflags","extra_len","48","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","sane","49","havedict","check","total","wbits","ncode","nlen","ndist","have","lens","work","lendyn","distdyn","back","was","Z","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","50","51","0","52","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","53","54","global","FOCUS_STATE_CLASS","FOCUS_DISABLED_CLASS","GRID_ROW_SELECTOR","GRID_CELL_SELECTOR","TREELIST_ROW_SELECTOR","TREELIST_CELL_SELECTOR","viewItemSelectorMap","columnHeaders","footer","isMouseDown","isHiddenFocusing","focusedElementInfo","processKeyDown","$mainElement","executeKeyDown","isHandled","fireKeyDownEvent","saveFocusedElementInfo","selectView","ariaLabel","$activeElements","getActiveAccessibleElements","targetIndex","viewInstance","$viewElement","findFocusedViewElement","viewSelectors","$focusViewElement","onDocumentVisibilityChange","visibilityState","subscribeVisibilityChange","unsubscribeVisibilityChange","hiddenFocus","registerKeyboardAction","getMainElement","keyDownHandler","mouseDownHandler","focusinHandler","needShowOverlay","viewNames","viewItemIndex","_viewName","setTabIndex","ARABIC_ZERO_CODE","DEFINED_NUMBER_FORMTATS","thousands","millions","billions","trillions","decimal","fixedpoint","exponential","currency","PERIOD_REGEXP","DAY_REGEXP","DO_REGEXP","STANDALONE_MONTH_REGEXP","HOUR_REGEXP","ANY_REGEXP","excelFormatConverter","_applyPrecision","precision","_hasArabicDigits","_convertDateFormatToOpenXml","datePart","_convertDateFormat","formattedValue","_getLanguageInfo","defaultPattern","languageID","languageIDStr","languageInfo","_convertNumberFormat","excelFormat","getOpenXmlCurrencyFormat","convertFormat","tagHelper","toXml","attributeName","attributeValue","cellAlignmentHelper","tryCreateTag","sourceObj","vertical","horizontal","copy","areEqual","leftTag","rightTag","tag","colorHelper","_tryConvertColor","colorCode","theme","patternFillHelper","patternType","backgroundColor","foregroundColor","fillHelper","patternFill","tryCreateFillFromSimpleFormat","fillPatternType","fillPatternColor","copySimpleFormat","fontHelper","family","scheme","italic","underline","val","cellFormatHelper","sharedItemsContainer","numberFormatId","numberFormat","registerNumberFormat","fontId","registerFont","font","fillId","registerFill","applyNumberFormat","isAlignmentEmpty","xfId","applyAlignment","numFmtId","numberFormatHelper","ID_PROPERTY_NAME","formatCode","_cellFormatTags","_fillTags","_fontTags","_numberFormatTags","cellFormat","cellFormatTag","cellFormatTagsAsXmlStringsArray","fillTag","tagsAsXmlStringsArray","fontTag","xmlStringsArray","_convertNumberFormatIndexToId","XML_TAG","GROUP_SHEET_PR_XML","SINGLE_SHEET_PR_XML","BASE_STYLE_XML2","OPEN_XML_FORMAT_URL","RELATIONSHIP_PART_NAME","XL_FOLDER_NAME","WORKBOOK_FILE_NAME","CONTENTTYPES_FILE_NAME","SHAREDSTRING_FILE_NAME","STYLE_FILE_NAME","WORKSHEETS_FOLDER","WORKSHEET_FILE_NAME","WORKSHEET_HEADER_XML","VALID_TYPES","EXCEL_START_TIME","DAYS_COUNT_BEFORE_29_FEB_1900","MAX_DIGIT_WIDTH_IN_PIXELS","UNSUPPORTED_FORMAT_MAPPING","quarterAndYear","ExcelCreator","_getXMLTag","_convertToExcelCellRef","zeroBasedRowIndex","zeroBasedCellIndex","charCode","isCellIndexFound","_convertToExcelCellRefAndTrackMaxIndex","_maxRowIndex","_maxColumnIndex","_getDataType","_tryGetExcelCellDataType","_formatObjectConverter","formatter","_tryConvertToExcelNumberFormat","newFormat","_appendString","_stringHash","_stringArray","_tryGetExcelDateValue","days","totalTime","_prepareValue","sourceValue","dataProvider","_dataProvider","_callCustomizeExcelCell","sourceData","styleCopy","copyCellFormat","clearStyle","horizontalAlignment","verticalAlignment","newStyle","_getDataArray","cellsArray","cellData","rowsLength","styleArrayIndex","cellStyleId","_styleArrayIndexToCellStyleIdMap","modifiedExcelCell","_styleArray","cellDataType","excelDateValue","_excelFile","registerCellFormat","_needSheetPr","_calculateWidth","pixelsWidth","_prepareStyleData","_colsArray","fonts","_prepareCellData","_cellsArray","_createXMLRelationships","xmlRelationships","_createXMLRelationship","_getWorkbookContent","_getContentTypesContent","_generateStylesXML","_zip","XML","generateNumberFormatsXml","generateFontsXml","generateFillsXml","generateCellFormatsXml","_generateStringsXML","stringIndex","stringsLength","sharedStringXml","_getPaneXML","frozenArea","_getAutoFilterXML","maxCellIndex","_getIgnoredErrorsXML","_generateWorksheetXML","xmlCells","xmlRows","colsLength","rSpans","headerRowCount","xmlResult","_rtlEnabled","rightBottomCellRef","_generateMergingXML","mergeIndex","columnsLength","usedArea","mergeArray","mergeXML","cellMerge","start","mergeArrayLength","_generateCommonXML","relsFileContent","relsXML","_generateContent","_generateWorkXML","_checkZipState","isBlob","excelCreator","parseAttributes","_math","PI","_min","_abs","_sqrt","sqrt","_pow","pow","_atan2","atan2","_cos","cos","_sin","sin","_number","IMAGE_QUALITY","TEXT_DECORATION_LINE_WIDTH_COEFF","DEFAULT_FONT_SIZE","DEFAULT_FONT_FAMILY","DEFAULT_TEXT_COLOR","createCanvas","margin","canvas","hidden","getStringFromCanvas","dataURL","toDataURL","imageData","atob","arcTo","x1","y1","x2","y2","radius","largeArcFlag","clockwise","cBx","cBy","aB","opSide","adjSide","centerX","centerY","startAngle","endAngle","arc","getElementOptions","rootAppended","coords","transform","translateX","translateY","rotationAngle","rotationX","rotationY","scaleX","scaleY","parseStyles","drawRect","cornerRadius","rx","translate","moveTo","lineTo","restore","rect","drawImage","shared","image","Image","globalAlpha","transformElement","clipElement","src","drawPath","dAttr","prevParams","prevParamsLen","dArray","bezierCurveTo","closePath","isElementNode","getComputedStyle","textDecoration","textDecorationLine","parseUrl","urlString","setFontStyle","fontParams","fontSize","fontFamily","fontStyle","fontWeight","fillStyle","drawText","fillText","strokeElement","drawTextDecoration","textWidth","measureText","textHeight","lineHeight","fillElement","aggregateOpacity","strokeOpacity","fillOpacity","hasTspan","nodes","drawTextElement","line","lines","drawElement","mergedOptions","dy","commonWidth","xDiff","currentOffset","parentOptions","isText","isImage","beginPath","cx","applyGradient","gradients","box","getBBox","gradient","createLinearGradient","opt","addColorStop","stopColor","filterOptions","offsetX","offsetY","shadowOffsetX","shadowOffsetY","shadowColor","shadowBlur","rotate","scale","clipPaths","clip","hex2rgba","hexColor","alpha","createGradient","stdDeviation","dx","asyncEach","drawCanvasElements","onDone","patterns","setLineDash","stroke","lineJoin","lineWidth","strokeStyle","strokeText","getPattern","pattern","patternCanvas","patternContext","getContext","createPattern","search","drawBackground","fillRect","createInvisibleDiv","invisibleDiv","convertSvgToCanvas","svg","getCanvasFromSvg","markup","pixelRatio","svgToCanvas","setTransform","svgElem","markupIsDomElement","getBody","imageCreator","getImageData","__parseAttributesFn","binaryData","_getBlob","_getBase64","dataArray","btoa","testFormats","formats","supported","unsupported","svgCreator","_markup","_imageArray","_imageDeferreds","_getBinaryFile","ajax","sendRequest","responseType","_loadImages","response","bytes","_parseImages","_prepareImages","$svgObject","dataURI","regexpString","RegExp","mainPageTemplate","infoTemplate","imageStartTemplate","imageEndTemplate","trailerTemplate","xrefTemplate","pad","composePdfString","imageString","curDate","widthPt","heightPt","mainPage","xref","getXref","mainContent","trailer","mainPageLength","contentLength","infoLength","getCurDate","getBase64","pdfData","_export","excel","creator","formatConverter","pdf","__importDefault","mod","__esModule","DxMy","DxMasterDetail","DxLookup","DxLoadPanel","DxLabel","DxKeyboardNavigation","DxHide","DxHeaderFilter","DxGroupPanel","DxGroupOperationDescriptions","DxGroupItem","DxGroupingTexts","DxGrouping","DxFormItem","DxFormat","DxForm","DxFilterRow","DxFilterPanelTexts","DxFilterPanel","DxFilterOperationDescriptions","DxFilterBuilderPopup","DxFilterBuilder","DxFieldLookup","DxField","DxExportTexts","DxExport","DxEmailRule","DxEditingTexts","DxEditing","DxDataGridHeaderFilterTexts","DxDataGridHeaderFilter","DxCustomRule","DxCustomOperation","DxCursorOffset","DxCompareRule","DxColumnLookup","DxColumnHeaderFilter","DxColumnFixingTexts","DxColumnFixing","DxColumnChooser","DxColumn","DxCollision","DxColCountByScreen","DxChange","DxButton","DxBoundaryOffset","DxAt","DxAsyncRule","DxAnimation","DxDataGrid","DxValueFormat","DxValidationRule","DxTotalItem","DxToolbarItem","DxTexts","DxSummaryTexts","DxSummary","DxStringLengthRule","DxStateStoring","DxSorting","DxSortByGroupSummaryInfo","DxShow","DxSelection","DxSearchPanel","DxScrolling","DxRowDragging","DxRequiredRule","DxRemoteOperations","DxRangeRule","DxPosition","DxPopup","DxPatternRule","DxPaging","DxPager","DxOperationDescriptions","DxOffset","DxNumericRule","data_grid_1","index_1","index_2","createComponent","accessKey","columnHidingEnabled","Function","noDataText","onAdaptiveDetailRowPreparing","onCellClick","onCellDblClick","onCellHoverChanged","onCellPrepared","onDisposing","onEditCanceled","onEditCanceling","onEditingStart","onExporting","onFocusedCellChanged","onFocusedCellChanging","onFocusedRowChanged","onFocusedRowChanging","onInitNewRow","onRowClick","onRowCollapsed","onRowCollapsing","onRowDblClick","onRowExpanded","onRowExpanding","onRowInserted","onRowInserting","onRowRemoved","onRowRemoving","onRowUpdated","onRowUpdating","onRowValidating","onSaved","onSaving","onToolbarPreparing","rowAlternationEnabled","rowTemplate","stateStoring","twoWayBindingEnabled","emits","computed","$_instance","beforeCreate","$_WidgetClass","$_expectedChildren","isCollectionItem","dataGridHeaderFilter","createConfigurationComponent","$_optionName","ignoreEmptyValue","reevaluate","validationCallback","$_isCollectionItem","$_predefinedProps","lg","md","sm","xs","hidingPriority","AsyncRule","columnHeaderFilter","columnLookup","CompareRule","CustomRule","EmailRule","NumericRule","PatternRule","RangeRule","RequiredRule","StringLengthRule","validationRule","columnFixingTexts","comparisonTarget","comparisonType","dataGridHeaderFilterTexts","validationCancelChanges","exportTexts","fieldLookup","bindingOptions","onFocusIn","onFocusOut","minHeight","onResize","onResizeEnd","onResizeStart","onTitleRendered","shadingColor","titleTemplate","filterPanelTexts","alignItemLabels","alignItemLabelsInAllGroups","colCountByScreen","formData","labelLocation","minColWidth","onEditorEnterKey","onFieldDataChanged","optionalMark","requiredMark","requiredMessage","screenByWidth","showColonAfterLabel","showOptionalMark","showRequiredMark","showValidationSummary","parser","helpText","itemType","complete","staggerDelay","editOnKeyPress","enterKeyAction","enterKeyDirection","showColon","indicatorSrc","showIndicator","showPane","allowedPageSizes","displayMode","infoText","showInfo","showNavigationButtons","showPageSizeSelector","autoScroll","cursorOffset","dragDirection","onDragChange","onDragMove","onRemove","onReorder","scrollSensitivity","scrollSpeed","scrollByContent","scrollByThumb","showSortIndexes","customLoad","customSave","savingTimeout","storageKey","isStringOrNumber","isNumber","combineFrom","out","key$1","isLinkEventObject","EMPTY_OBJ","Fragment","normalizeEventName","insertOrAppend","newNode","documentCreateElement","createElementNS","newDom","lastDom","childNode","callAll","arrayFn","findChildVNode","startEdge","findDOMfromVNode","removeVNodeDOM","moveVNodeDOM","createDerivedState","getDerivedStateFromProps","renderCheck","componentComparator","createVNode","renderComplete","setTextContent","isLastValueSameLinkEvent","lastValue","nextValue","mergeUnsetProperties","safeCall1","arg1","keyPrefix","childFlag","normalizeChildren","mergeDefaultHooks","defaultHooks","mergeDefaultProps","resolveComponentFlags","createComponentVNode","createTextVNode","createFragment","fragment","createVoidVNode","normalizeProps","cloneFragment","vNodeToClone","oldChildren","directClone","propsToClone","createPortal","normalizedRoot","normalizeRoot","_normalizeVNodes","currentKey","newKey","oldKey","isPrefixedKey","getFlagsForElementVnode","newChildren","newChildFlags","needsCloning","isNullKey","isPrefixed","xlinkNS","xmlNS","namespaces","getDelegatedEventObject","onDblClick","onKeyPress","onKeyUp","onMouseDown","onMouseMove","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","attachedEventCounts","attachedEvents","syntheticEvents","updateOrAddSyntheticEvent","eventsObject","$EV","attachEventToDocument","unmountSyntheticEvent","removeEventListener","handleSyntheticEvent","lastEvent","nextEvent","getTargetNode","composedPath","dispatchEvents","isClick","currentEvent","cancelBubble","immediatePropagationStopped","stopImmediatePropagation","isDefaultPrevented","defaultPrevented","isPropagationStopped","extendEventProperties","configurable","rootClickEvent","rootEvent","attachedEvent","addEventListener","triggerEventListener","nativeListenerName","createWrappedFunction","applyValue","fnMethod","newVNode","enumerable","writable","attachEvent","previousKey","previousArgs","wrapped","isCheckedType","onTextInputChange","applyValueInput","wrappedOnChange","emptywrapper","inputEvents","nextPropsOrEmpty","checked","multiple","updateChildOptions","updateChildOption","onSelectChange","applyValueSelect","selectEvents","mounting","multiplePropInBoolean","selectedIndex","onTextareaInputChange","applyValueTextArea","wrappedOnChange$1","textAreaEvents","onChange","domValue","processElement","isControlled","addFormElementEventHandlers","isControlledFormElement","createRef","unmountRef","mountRef","unmount","unmountAllChildren","componentWillUnmount","$UN","clearDOM","removeAllChildren","wrapLinkEvent","ev","patchEvent","patchStyle","lastAttrValue","nextAttrValue","domStyle","cssText","setProperty","removeProperty","patchDangerInnerHTML","lastVNode","lastHtml","nextHtml","patchProp","hasControlledValue","autofocus","setAttributeNS","mountProps","isFormElement","renderNewInput","nextInput","childContext","getChildContext","createClassComponentInstance","Component","usesNewAPI","$N","getSnapshotBeforeUpdate","$SVG","$L","$BS","componentWillMount","$BR","$PS","renderFunctionalComponent","mount","mountElement","mountClassComponent","mountFunctionalComponent","mountFunctionalComponentCallbacks","mountText","mountFragment","mountPortal","placeHolderVNode","mountArrayChildren","childrenIsSVG","mountClassComponentCallbacks","createClassMountCallback","createOnMountCallback","replaceWithNewNode","nextVNode","patch","nextFlags","patchElement","patchClassComponent","patchFunctionalComponent","patchText","patchFragment","patchPortal","patchSingleTextChild","lastChildren","nextChildren","patchContentEditableChildren","lastChildFlags","nextChildFlags","nextIsSingle","lastLen","patchChildren","lastContainer","nextContainer","lastProps","lastPropsOrEmpty","nextClassName","nextRef","lastRef","replaceOneVNodeWithMultipleVNodes","lastLength","nextLength","patchKeyedChildren","patchNonKeyedChildren","createDidUpdate","lastState","snapshot","updateClassComponent","hasSCU","componentWillUpdate","componentWillReceiveProps","nextHooksDefined","lastInput","nextText","lastChildrenLength","nextChildrenLength","nextChild","lastChild","commonLength","aLength","bLength","outerEdge","nextPos","aEnd","bEnd","aNode","bNode","outer","patchKeyedChildrenComplex","aStart","bStart","aLeft","bLeft","sources","canRemoveWholeContent","moved","patched","seq","lis_algorithm","maxLen","arrI","hasDocumentAvailable","__render","rootInput","Node","QUEUE","nextTick","microTaskPending","queueStateChanges","newState","stateKey","applyState","$F","rerender","QU","$QU","callSetStateCallbacks","pendingState","forceUpdate","setState","_nextProps","_nextState","_nextContext","FOCUS_OVERLAY_CLASS","FOCUSED_ELEMENT_CLASS","UPDATE_FOCUS_EVENTS","DX_HIDDEN","_getFocusedElement","$dataGridElement","rowSelector","focusedElementSelector","_getFocusCellSelector","_updateFocusCore","$focusCell","hideBorders","$focus","_$focusedElement","_updateFocus","isFocusOverlay","_isFocusOverlay","_updateFocusTimeoutID","_updateFocusOverlaySize","oversize","_focusTimeoutID","focused","refocus","_$focusOverlay","align","elemCoord","focusOverlayPosition","precise","_updateFocusHandler","_attachContainerEventHandlers","editorFactoryModule","INVALIDATE_CLASS","REVERT_TOOLTIP_CLASS","ROWS_VIEW_CLASS","INVALID_MESSAGE_CLASS","WIDGET_INVALID_MESSAGE_CLASS","INVALID_MESSAGE_ALWAYS_CLASS","REVERT_BUTTON_CLASS","VALIDATOR_CLASS","PENDING_INDICATOR_CLASS","VALIDATION_PENDING_CLASS","PADDING_BETWEEN_TOOLTIPS","GROUP_CELL_CLASS","FORM_BASED_MODES","VALIDATION_STATUS","valid","invalid","EDIT_DATA_INSERT_TYPE","EDIT_DATA_REMOVE_TYPE","VALIDATION_CANCELLED","validationResultIsValid","cellValueShouldBeValidated","ValidatingController","_validationState","_rowIsValidated","validationData","_getValidationData","validated","isValid","_getBrokenRules","validationResults","brokenRules","brokenRule","_rowValidating","errorText","getHiddenValidatorsErrorText","brokenRulesMessages","isGroupExpandColumn","isVisibleColumn","validate","isFull","completeList","_isValidationInProgress","validationResult","validateGroup","_currentCellValidator","_findGroup","_validationResult","getGroupConfig","validators","resetRowValidationResults","isRowDataModified","updateValidationState","setDisableApplyValidationResults","groupConfig","setValidator","renderCellPendingIndicator","disposeCellPendingIndicator","validationStatusChanged","updateCellValidationResult","validatorInitialized","validatorDisposing","getCellValidationResult","cancelCellValidationResult","applyValidationResult","requestIsDisabled","disabledPendingId","_disableApplyValidationResults","_syncInternalEditingData","_parameters$row","oldDataFromState","createValidator","needCreateValidator","_parameters$row$oldDa","_parameters$row2","isCellOrBatchEditingAllowed","isCellOrBatchEditMode","getValue","useDefaultValidator","adapter","applyValidationResults","validationRequestsCallbacks","flag","getDisableApplyValidationResults","isCurrentValidatorProcessing","validateCell","cellParams","stateRestored","_ref3","_ref4","_validationData$valid","removeCellValidationResult","_ref5","_ref6","isInvalidCell","_ref7","getCellValidator","_ref8","setCellValidationStatus","validationStatus","validatingModule","validating","validatingController","_updateRowAndPageIndices","startInsertIndex","_ref9","_prepareEditCell","isNotCanceled","addInValidItem","isInserted","_createInvisibleColumnValidators","invisibleColumns","invisibleColumnValidators","isCellVisible","disposeValidators","isFullValid","_beforeEditCell","isCellEditMode","scrollToElement","shouldResetValidationState","columnsWithValidatingEditors","_col$validationRules","validationState","resetRowAndPageIndices","currentValidator","isValidated","needValidation","isCellInvalid","_showRevertButton","$tooltipElement","$overlayContainer","tooltipOptions","$buttonElement","_positionedHandler","_hideFixedGroupCell","$nextFixedRowElement","$groupCellElement","nextRowOptions","__skipPositionProcessing","isRevertButton","needRepaint","normalizedPosition","_normalizeValidationMessagePositionAndMaxWidth","_showValidationMessage","messages","revertTooltip","editorPopup","myPosition","atPosition","errorMessageText","$overlayElement","_shiftValidationMessageIfNeed","visibleTableWidth","w1","w2","$overlayContentElement","validationMessageWidth","needMaxWidth","boundaryNonFixedColumnsInfo","firstNonFixedColumnIndex","lastNonFixedColumnIndex","endColumnIndex","$revertContent","contentOffset","revertContentOffset","_getTooltipsSelector","invalidMessageClass","revertTooltipClass","skipValidator","updateCellState","_change$data","showValidationMessage","errorMessages","$tooltips","oldValidationStatus","newValidationStatus","rowIsModified","cellIsMarkedAsInvalid","$freeSpaceRowElement","$tooltipContent","isEditorDisposed","COLUMN_HEADERS_VIEW","FOOTER_VIEW","COLUMN_VIEWS","ADAPTIVE_NAMESPACE","ADAPTIVE_ROW_TYPE","FORM_ITEM_CONTENT_CLASS","FORM_ITEM_MODIFIED","HIDDEN_COLUMN_CLASS","ADAPTIVE_COLUMN_BUTTON_CLASS","ADAPTIVE_COLUMN_NAME_CLASS","COMMAND_ADAPTIVE_HIDDEN_CLASS","ADAPTIVE_DETAIL_ROW_CLASS","ADAPTIVE_ITEM_TEXT_CLASS","LAST_DATA_CELL_CLASS","ADAPTIVE_COLUMN_NAME","EXPAND_ARIA_NAME","COLLAPSE_ARIA_NAME","getDataCellElements","adaptiveCellTemplate","$adaptiveColumnButton","adaptiveColumnsController","toggleExpandAdaptiveDetailRow","AdaptiveColumnsController","_isRowEditMode","_getEditMode","_isItemModified","_renderFormViewTemplate","focusAction","isDomElement","renderFormTemplate","isItemEdited","_isItemEdited","_isVisibleColumnsValid","_calculatePercentWidths","percentWidths","_getItemPercentWidth","_isPercentWidth","_isColumnHidden","_hiddenColumns","hiddenColumn","columnsCanFit","fixedColumnsWidth","columnsWithoutFixedWidthCount","_calculatePercentWidth","columnsCount","_calculateColumnWidth","contentColumns","colWidth","widthOption","columnFitted","partialWidth","resultWidth","_getNotTruncatedColumnWidth","_getCommandColumnsWidth","adaptiveExpandedKey","_getFormItemsByHiddenColumns","hiddenColumns","_getAdaptiveColumnVisibleIndex","_hideAdaptiveColumn","_hideVisibleColumn","_showHiddenCellsInView","cssClassNameToRemove","_showHiddenColumns","$hiddenCommandCells","$hiddenCells","_isCellValid","_hideVisibleColumnInView","rowsCount","cancelClassAdding","currentVisibleIndex","_findCellElementInRow","_hideVisibleCellInView","visibleColumnIndex","$rowCells","cellIsInsideGroup","groupCellLength","endGroupIndex","cssClassNameToAdd","hideRedundantColumns","hiddenQueue","hasHiddenColumns","needHideColumn","rootElementWidth","getVisibleContentColumns","visibleContentColumns","contentColumnsCount","columnBestFitWidth","getItemContentByColumnIndex","$itemContent","_$itemContents","alwaysExpanded","createFormByHiddenColumns","userFormOptions","defaultFormOptions","formOptions","_form","updateForm","hasAdaptiveDetailRowExpanded","_contentReadyAction","updateHidingQueue","columnsHasHidingPriority","hideableColumns","_hidingColumnsQueue","getHiddenColumns","getHidingColumnsQueue","adaptiveHidden","isAdaptiveVisible","isAdaptiveDetailRowExpanded","expandAdaptiveDetailRow","collapseAdaptiveDetailRow","updateCommandAdaptiveAriaLabel","setCommandAdaptiveAriaLabel","labelName","$adaptiveCommand","adaptivityModule","adaptiveColumns","_adaptiveColumnsController","hidingColumnsQueueLength","hiddenColumnsLength","isClickable","hasHiddenColumnsOnly","hasAdaptiveHiddenWidth","$itemContents","_adaptiveController","oldExpandRowIndex","_isForceRowAdaptiveExpand","_collapseAdaptiveDetailRow","_cancelEditAdaptiveDetailRow","expandedKey","_adaptiveExpandedKey","_updateScrollableForIE","_updateScrollableTimeoutID","adaptiveController","oldHiddenColumns","hidingColumnsQueue","expandRowIndex","lastRowIndex","oldExpandLoadedRowIndex","newExpandLoadedRowIndex","_processNextCellInMasterDetail","$nextCell","isCellOrBatchMode","_isInsideEditForm","focusHandler","_handleTabKeyOnMasterDetailCell","eventTarget","$currentCell","_getFocusedCell","$dataCells","$targetCell","isCellElementsEquals","ADD_ROW_BUTTON_CLASS","DROPDOWN_EDITOR_OVERLAY_CLASS","CELL_MODIFIED_CLASS","ROW_REMOVED","$pointerDownTarget","needCreateHandlers","_this$getController","targetComponent","isEditorPopup","checkEditorPopup","isAnotherComponent","isAddRowButton","isBatchEditMode","isCurrentComponentElement","_this$_rowsView","isEditColumnNameDefined","_handleEditColumnNameChange","oldColumnIndex","_editCellFromOptionChanged","_deferred","_editCell","coreResult","_editCellCore","isEditByOptionChanged","_getNormalizedEditCellOptions","withoutSaveEditData","_closeEditCellCore","_resetModifiedClassCells","_this$_editCellFromOp","needResetIndexes","isBatchMode","_isRowDeleteAllowed","_changes$","isUpdateInCellMode","focusPreviousEditingCell","processIfBatch","COLUMN_HEADERS_VIEW_NAMESPACE","ColumnHeadersViewSortingExtender","$cellElementFromEvent","editingMode","HeaderPanelSortingExtender","sortingModule","pageIndexChanged","pageSizeChanged","getElementComputedStyle","_window$getComputedSt","_window","toNumber","attribute","getElementStyle","computedStyle","getElementWidth","getElementMinWidth","_excluded","viewFunction","infoTextRef","infoTextVisible","isLargeDisplayMode","pageSizesRef","pagesRef","parentRef","Content","pagerProps","restAttributes","rootElementRef","calculateAdaptivityProps","infoWidth","pageSizes","pageSizesWidth","pagesWidth","parentWidth","minimalWidth","getElementsWidth","pagesHtmlWidth","ResizableContainerProps","TemplateProp","_currentState","subscribeToResize","effectUpdateChildProps","updateAdaptivityProps","_this$_effects$","_this$_effects$2","currentElementsWidth","actualAdaptivityProps","elementsWidth","set_infoTextVisible","set_isLargeDisplayMode","_this$props","restProps","PagerProps","gridCompatibility","maxPagesCount","pagesNavigatorVisible","showPageSizes","defaultPageIndex","defaultPageSize","PAGER_INFO_CLASS","InfoTextPropsType","pageIndexChange","__state_pageIndex","_this$props$pageIndex","subscribeToEvent","subscribeToClickEvent","KeyboardActionContext","widgetRef","LightButtonProps","keyboardEffect","subscribeToClick","keyboardContext","PAGER_CLASS","LIGHT_MODE_CLASS","PAGER_PAGES_CLASS","PAGER_PAGE_INDEXES_CLASS","PAGER_PAGE_CLASS","PAGER_SELECTION_CLASS","PAGER_PAGE_SIZE_CLASS","PAGER_PAGE_SIZES_CLASS","PAGER_SELECTED_PAGE_SIZE_CLASS","PageProps","ConfigContext","_excluded2","PAGER_PAGE_SEPARATOR_CLASS","PagesMarkup","pageProps","PAGES_LIMITER","getDelimiterType","slidingWindowSize","createPageIndexesBySlidingWindowIndexes","slidingWindowIndexes","delimiter","pageIndexes","indexesForReuse","createPageIndexes","PagesLargePropsType","canReuseSlidingWindow","generatePageIndexes","isSlidingWindowMode","onPageClick","slidingWindowState","slidingWindowStateHolder","currentPageCount","currentPageNotExistInIndexes","pageIndexExistInIndexes","_createPageIndexes","_this$props$pageIndex2","_this$props2","_this$config","createPage","rtlPageIndexes","_this$props$pageIndex3","BaseWidgetProps","viewModel","ConfigProviderProps","resolveRtlEnabled","rtlProp","resolveRtlEnabledDefinition","isPropDefined","onlyGlobalDefined","getAria","getCssClasses","isFocusable","isHoverable","canBeActive","active","hovered","onVisibilityChange","cssClasses","shouldRenderConfigProvider","WidgetProps","_feedbackHideTimeout","_feedbackShowTimeout","aria","setRootElementRef","activeEffect","clickEffect","focusEffect","hoverEffect","resizeEffect","windowResizeEffect","visibilityEffect","activeStateUnit","onActive","onInactive","onHoverEnd","onDimensionChanged","_this$_effects$3","_this$_effects$4","_this$_effects$5","_this$_effects$6","_this$_effects$7","_this$_effects$8","set_active","hideTimeout","namespace","showTimeout","set_focused","set_hovered","computedWidth","computedHeight","componentProps","DomComponentWrapperProps","setupWidget","updateWidget","componentInstance","componentType","_this$getInstance","_this$props$component","valueChange","NumberBoxProps","_this$props$valueChan","_this$props$value","__state_value","oneDigitWidth","calculateValuesFittedWidth","PAGER_INFO_TEXT_CLASS","PAGER_PAGE_INDEX_CLASS","LIGHT_PAGES_CLASS","PAGER_PAGES_COUNT_CLASS","pageIndexRef","pagesCountText","selectLastPageIndex","PagerSmallProps","updateWidth","set_minWidth","set_pageIndex","PAGER_NAVIGATE_BUTTON","PAGER_PREV_BUTTON_CLASS","PAGER_NEXT_BUTTON_CLASS","PAGER_BUTTON_DISABLE_CLASS","nextButtonClassName","prevButtonClassName","nextButtonDisabledClassName","prevButtonDisabledClassName","navigateToNextPage","navigateToPrevPage","prevClassName","renderNextButton","renderPrevButton","getIncrement","PageIndexSelectorProps","PageIndexSelectorPropsType","getNextDirection","getPrevDirection","canNavigateToPage","getNextPageIndex","canNavigateTo","navigateToPage","_this$config2","canNavigate","SelectBoxProps","pageSizeChange","PageSizeSmallPropsType","__state_pageSize","_this$props$pageSizeC","_this$props$pageSize","pageSizesText","PageSizeLargePropsType","onPageSizeChange","processedPageSize","set_pageSize","htmlRef","normalizedPageSizes","getAllText","PageSizeSelectorProps","PageSizeSelectorPropsType","infoVisible","pageIndexSelectorVisible","pagesContainerVisibility","pagesContainerVisible","widgetRootElementRef","PagerContentProps","createFakeInstance","keyboardAction","_this$props$onKeyDown","_this$props3","fakePagerInstance","lightModeEnabled","normalizedDisplayMode","newPageIndex","newPageSize","_wrapKeyDownHandler","MAX_PAGES_COUNT","getPageIndex","PagerView","_getPager","pagerOptions","getPageSizes","useLegacyKeyboardNavigation","_pageSizes","pagerVisible","isPager","isPaging","isDataSource","isScrolling","pagerModule","pagerView","FREE_SPACE_CLASS","ROW_ALTERNATION_CLASS","LAST_ROW_BORDER","EMPTY_CLASS","ROW_INSERTED_ANIMATION_CLASS","LOADPANEL_HIDE_TIMEOUT","getMaxHorizontalScrollOffset","rowsModule","defaultCellTemplate","isDataTextEmpty","_getDefaultGroupTemplate","_setAriaRowIndex","isPagerMode","deep","skipImmediate","_renderScrollable","_renderLoadPanel","allColumnsHasWidth","_renderScrollableCore","isNativeScrolling","_isScrollByEvent","positive","dxScrollableOptions","scrollHandler","onScroll","_scrollableContainer","_$container","newTableElement","executors","rowInsertedClass","$rowsElement","$emptyRow","isTableContainer","$colgroup","_renderFreeSpaceRow","_getRowsHeight","evaluate","expr","_getColumnsCountBeforeGroups","columnsCountBeforeGroups","groupCellOptions","groupColumnAlignment","resizeCompletedHandler","scrollableInstance","_lastColumnWidths","groupingTextsOptions","_getDevicePixelRatio","freeSpaceRowElements","isFreeSpaceRowVisible","elementHeightWithoutScrollbar","contentHeight","showFreeSpaceRow","borderTopWidth","heightCorrection","_getHeightCorrection","resultHeight","_updateLastRowBorder","freeSpaceRowCount","isZoomedWebkit","hasExtraBorderTop","_fireColumnResizedCallbacks","_editorFactoryController","lastColumnWidths","dxScrollable","_updateHorizontalScrollPosition","maxHorizontalScrollOffset","scrollRight","_height","visibilityOptions","_hideLoadingTimeoutID","groupCellIndex","isFloor","prevOffsetTop","contentElementOffsetTop","getTopVisibleRowData","getMarkup","temp","cloneNode","fixNamespaces","decodeHtmlEntities","getSvgMarkup","getSvgElement","DOMParser","parseFromString","GROUP_FOOTER_CLASS","FREESPACE_ROW_CLASS","COMMAND_CELL_SELECTOR","DATEBOX_WIDGET_NAME","FAST_EDITING_DELETE_KEY","INTERACTIVE_ELEMENTS_SELECTOR","FOCUS_TYPE_ROW","FOCUS_TYPE_CELL","isNotFocusedRow","isCellElement","isElementDefined","isMobile","isCellInHeaderRow","isFixedColumnIndexOffsetRequired","shouldPreventScroll","KeyboardNavigationController","_selectionController","_updateFocusTimeout","_fastEditingStarted","_canceledCellPosition","setupFocusedView","_isNeedScroll","_focusedView","_initViewHandlers","_initDocumentHandlers","rowsViewFocusHandler","isRelatedTargetInRowsView","isCommandButton","_isEventInCurrentGrid","$focusedCell","$rowsView","isFocusedViewCorrect","needUpdateFocus","isFocusedElementCorrect","_initPointerEventHandler","_initKeyDownHandler","_setRowsViewAttributes","_isNeedFocus","_isHiddenFocus","isCurrentRowsViewClick","isEditorOverlay","isColumnResizing","targetInsideFocusedView","_resetFocusedCell","_resetFocusedView","_getRowsViewElement","isGridEmpty","_applyTabIndexToElement","pointerEventName","clickSelector","_pointerEventAction","_pointerEventHandler","_keyDownListener","_keyDownHandler","focusType","setCellFocusType","needStopPropagation","_processOnKeyDown","_updateFocusedCellPositionByTarget","_leftRightKeysHandler","ctrl","_upDownKeysHandler","_pageUpDownKeyHandler","_spaceKeyHandler","_ctrlAKeyHandler","_beginFastEditing","_tabKeyHandler","_enterKeyHandler","_ctrlFKeyHandler","_f2KeyHandler","_isFastEditingAllowed","alt","altKey","_closeEditCell","getVisibleRowIndex","$event","directionCode","_getDirectionCodeByKey","allowNavigate","_isVirtualColumnRender","_processVirtualHorizontalPosition","_getNextCell","_arrowKeysHandlerFocusCell","isUpArrow","_navigateNextCell","_isVirtualRowRender","_scrollBy","isPageUp","pageStep","isFocusedRowElement","isFocusedSelectionCell","isCellPositionDefined","isOriginalHandlerRequired","_isLastValidCell","_isFirstValidCell","focusedViewElement","_editingCellTabHandler","_targetCellTabHandler","_getMaxHorizontalOffset","_isColumnRendered","allVisibleColumns","renderedVisibleColumns","_isFixedColumn","_isColumnVirtual","localColumnIndex","getColumnIndex","horizontalScrollPosition","needToScroll","_getVisibleColumnCount","leftEdgePosition","_getHorizontalScrollPositionOffset","scrollBy","positionOffset","_getCell","currentCellWidth","rtlMultiplier","isEditingAllowed","elementType","nextCellInfo","_getNextCellByTabKey","_getRowIndex","_isDataRow","_focusCell","isHighlighted","_editFocusedCell","_focusInteractiveElement","$lastInteractiveElement","_getInteractiveElement","_checkNewLineTransition","_fireFocusedCellChanging","$newCellElement","_getCellPosition","_fireFocusedRowChanging","rowIndexChanged","_processEnterKeyForDataCell","_getEnterKeyDirection","allowEditingOnEnterKey","_allowEditingOnEnterKey","_handleEnterKeyEditingCell","_startEditing","isShift","_focusEditFormCell","searchTextEditor","keyCode","isCellValid","isVerticalDirection","_fireFocusChangingEvents","isDeleting","fastEditingKey","isInteractiveElement","isExpandCommandCell","_focusView","_isMasterDetailCell","_clickTargetCellHandler","_isCellEditMode","resetFocusedRow","_allowRowUpdating","isInteractiveTarget","isEditor","isDisabled","activeElementSelector","_focusElement","getFocusedView","rowsViewElement","$focusedView","_getFocusedViewByElement","$view","disableFocus","$focusElement","focusedView","one","isRenderView","_hasSkipRow","_checkCellOverlapped","$focusedElementInsideCell","isFocusedElementDefined","cellOffset","hasScrollable","isOverlapped","_this$_focusedCellPos","_getFocusedColumnIndexOffset","_getFixedColumnIndexOffset","_applyColumnIndexBoundaries","_this$_focusedView","renderFocusState","restoreFocusableElement","_getNewPositionByCode","visibleColumnsCount","_hasValidCellAfterPosition","_isLastRow","_hasValidCellBeforePosition","_isCellByPositionValid","getMaxRowIndex","isFirstValidCell","hasValidCells","checkingPosition","visibleColumnCount","isLastRow","isShowWhenGrouped","isDataCell","rowItems","isRowEditingInCurrentRow","_isLegacyNavigation","$result","focusedCellPosition","includeCommandCells","newFocusedCellPosition","isLastCellOnDirection","_isCellInRow","_isAllowEditing","_startEditCell","editResult","_editingCellHandler","editorValue","$input","keyDownEvent","keyPressEvent","inputEvent","$widgetContainer","fireRowEvent","newColumnIndex","prevCellIndex","localRowIndex","$newFocusedRow","prevFocusedRowIndex","$masterDetailCell","$masterDetailGrid","_processCanceledEditCellPosition","isCanceled","keyboardNavigationModule","needTriggerPointerEventHandler","_triggerPointerDownEventHandler","_updateFocusedCellTabIndex","cellElementsLength","updateCellTabIndex","isMasterDetailCell","isValidCell","_renderFocusByChange","editorInstance","_getEditorInstance","_handleEditingNavigationMode","originalKeyHandler","isDropDownOpened","isDateBoxWithMask","keyboardNavigationController","_keyboardNavigationController","getRowIndexCorrection","focusedRowIndexCorrection","WIDGET_WITH_LEGACY_CONTAINER_NAME","ModuleItem","_actionConfigs","unique","syncStrategy","optionCache","prefix","componentName","containerName","getViews","_isReady","_requireRender","requireResize","marginTop","MODULES_ORDER_MAX_INDEX","componentClass","modulesOrder","controllerTypes","viewTypes","module1","module2","orderIndex1","orderIndex2","moduleName","subclassOf","createModuleItems","moduleTypes","moduleItems","moduleType","moduleItem","moduleNames","unregisterModule","_collectionWidget","getMenuItems","_getTemplateString","DX_MENU_NO_ICONS_CLASS","DX_MENU_BASE_CLASS","ITEM_CLASS","DX_ITEM_CONTENT_CLASS","DX_MENU_SELECTED_ITEM_CLASS","DX_MENU_SEPARATOR_CLASS","DX_MENU_ITEM_LAST_GROUP_ITEM","DX_ITEM_HAS_TEXT","DX_ITEM_HAS_ICON","DX_ITEM_HAS_SUBMENU","DX_MENU_ITEM_POPOUT_CLASS","DX_MENU_ITEM_POPOUT_CONTAINER_CLASS","DX_MENU_ITEM_CAPTION_CLASS","SINGLE_SELECTION_MODE","focusOnSelectedItem","_itemAttributes","useInkRipple","pageUp","pageDown","_renderSelectedItem","itemContent","$popOutContainer","$popOutImage","rootValue","multipleSelection","recursiveSelection","recursiveExpansion","nodeToSelect","toggleSelection","getSelectedNodesKeys","selectedKey","_selectByItem","_renderInkRipple","_inkRipple","_toggleActiveState","showWave","hideWave","Strategy","_editStrategy","_showSubmenusTimeout","_getSubmenuDelay","$itemElements","_itemDataKey","_addExpandedClass","_itemClass","childrenKeys","hasIcons","$nodeContainer","firstVisibleIndex","nextGroupFirstIndex","isVisibleNode","isBeginGroup","_renderItem","$node","$nodeElement","_createDOMElement","_renderItemFrame","_itemIndexKey","hasText","hasIcon","hasSubmenu","_getItemContent","_selectedGetter","_isItemSelectable","_setAriaSelected","_skipHandling","itemClickActionHandler","_updateSubmenuVisibilityOnClick","_itemDXEventHandler","_isItemSelectionAllowed","selectedItemKey","selectedNode","_toggleItemSelection","_fireSelectionChangeEvent","isSelectionByClickEnabled","_isContainerEmpty","_itemsGetter","_getElementByItem","oldSelection","newSelection","addedSelection","removedSelection","removedItems","ItemClass","getDataState","processLoadState","updateState","_initialPageSize","_initialFilterValue","exportSelectionOnly","DEFAULT_FILTER_VALUE","hasFilterState","stateStoringModule","isStateLoading","_state","isEnabled","oldState","oldStateHash","newStateHash","isVirtualScrollingMode","stateStoringController","_restoreStateTimeoutID","_defaultSetter","_cloneItem","cols","getItem","_c","needTwoPagesLoading","isVirtual","_cache","fireChanged","_isChangedFiring","processDelayChanged","_isDelayChanged","getViewportPageCount","_dataOptions","preventPreload","realViewportSize","getViewportPosition","getPreloadPageCount","getPageIndexForLoad","dataOptions","needToLoadPageBeforeLast","needToLoadPrevPage","needToLoadNextPage","_loadingPageIndexes","loadCore","processChanged","isDelayChanged","removeCacheItem","isPrepend","removeItemCount","_lastPageIndex","lastPageSize","maxPageIndex","pageIndexForLoad","_delayDeferred","_setViewportPositionCore","lastCacheLength","cacheItem","beginItemsCount","endItemsCount","_isVirtualMode","_isVirtual","_isAppendMode","getPixelRatio","getContentHeightLimit","subscribeToExternalScrollers","scrollChangedHandler","$scrollElement","scrollableArray","scrollToArray","disposeArray","getElementOffset","$scrollableElement","scrollableOffset","widgetScrollStrategy","subscribeToScrollEvents","eventsStrategy","topOffset","scrollMethod","VirtualScrollController","_viewportSize","_viewportItemSize","_viewportItemIndex","_contentSize","_itemSizes","_sizeRatio","_dataLoader","scrollingTimeout","defaultItemSize","itemOffset","itemOffsetsWithSize","itemOffsetWithSize","itemOffsetDiff","virtualContentSize","contentHeightLimit","isEnd","currentItemIndex","getVirtualContentSize","viewportItemIndexChanged","subscribeToWindowScrollEvents","topIndex","bottomIndex","maxGap","remainedItems","COLUMN_CHOOSER_CLASS","COLUMN_CHOOSER_BUTTON_CLASS","NOTOUCH_ACTION_CLASS","COLUMN_CHOOSER_LIST_CLASS","COLUMN_CHOOSER_PLAIN_CLASS","COLUMN_CHOOSER_DRAG_CLASS","COLUMN_CHOOSER_SELECT_CLASS","COLUMN_CHOOSER_ICON_NAME","COLUMN_CHOOSER_ITEM_CLASS","TREEVIEW_NODE_SELECTOR","CHECKBOX_SELECTOR","CLICK_TIMEOUT","chooserColumns","isSelectMode","disableCheckBox","ColumnChooserController","renderShowColumnChooserButton","$columnChooserButton","columnChooserButtonClass","columnChooserEnabled","$showColumnChooserButton","showColumnChooser","getPosition","ColumnChooserView","_isWinDevice","win","_updateList","columnChooserList","_columnChooserList","unselectItem","_renderTreeView","themeName","isGenericTheme","isMaterial","shortcut","treeViewConfig","$checkBox","$treeViewNode","checkBoxInstance","_prepareSelectModeConfig","_prepareDragModeConfig","onItemSelectionChanged","isLastColumnUnselected","needPartialRender","needFullRender","$nodes","columnVisible","isColumnChooserVisible","hideColumnChooser","columnChooserModule","_appendColumnChooserItem","columnChooserMode","isMoveColumnDisallowed","DATE_REGEX","parseDates","StateStoringController","getStorage","storage","localStorage","protocol","getUniqueStorageKey","_loadState","_saveState","setItem","_windowUnloadHandler","_savingTimeoutID"],"mappings":"kHAAA,kDASIA,EAAiB,CACjBC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJ,UAAW,EACXC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,IAAK,GACLC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,IAAK,IACLC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,GAAI,IACJ,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,SAAU,KACV,QAAS,KACT,aAAc,KACd,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,QAAS,KACT,aAAc,KACd,QAAS,KACT,SAAU,KACV,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,SAAU,KACV,SAAU,KACV,QAAS,KACT,QAAS,KACT,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,aAAc,KACd,aAAc,KACd,cAAe,KACf,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,SAAU,KACV,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,MACT,QAAS,MACT,QAAS,MACT,aAAc,MACd,QAAS,MACT,QAAS,MACT,QAAS,MACT,aAAc,MACd,QAAS,MACT,QAAS,MACT,QAAS,MACT,aAAc,MACd,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACXC,IAAK,MACL,UAAW,MACXC,IAAK,MACLC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJ,UAAW,MACXC,IAAK,MACL,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACXC,GAAI,MACJC,GAAI,MACJ,UAAW,MACXC,IAAK,MACLC,I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","file":"js/chunk-4a4601d2.55041ca9.js","sourcesContent":["/**\r\n * DevExtreme (esm/localization/language_codes.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport localizationCoreUtils from \"./core\";\r\nvar LANGUAGE_CODES = {\r\n ar: 1,\r\n bg: 2,\r\n ca: 3,\r\n \"zh-Hans\": 4,\r\n cs: 5,\r\n da: 6,\r\n de: 7,\r\n el: 8,\r\n en: 9,\r\n es: 10,\r\n fi: 11,\r\n fr: 12,\r\n he: 13,\r\n hu: 14,\r\n is: 15,\r\n it: 16,\r\n ja: 17,\r\n ko: 18,\r\n nl: 19,\r\n no: 20,\r\n pl: 21,\r\n pt: 22,\r\n rm: 23,\r\n ro: 24,\r\n ru: 25,\r\n hr: 26,\r\n sk: 27,\r\n sq: 28,\r\n sv: 29,\r\n th: 30,\r\n tr: 31,\r\n ur: 32,\r\n id: 33,\r\n uk: 34,\r\n be: 35,\r\n sl: 36,\r\n et: 37,\r\n lv: 38,\r\n lt: 39,\r\n tg: 40,\r\n fa: 41,\r\n vi: 42,\r\n hy: 43,\r\n az: 44,\r\n eu: 45,\r\n hsb: 46,\r\n mk: 47,\r\n tn: 50,\r\n xh: 52,\r\n zu: 53,\r\n af: 54,\r\n ka: 55,\r\n fo: 56,\r\n hi: 57,\r\n mt: 58,\r\n se: 59,\r\n ga: 60,\r\n ms: 62,\r\n kk: 63,\r\n ky: 64,\r\n sw: 65,\r\n tk: 66,\r\n uz: 67,\r\n tt: 68,\r\n bn: 69,\r\n pa: 70,\r\n gu: 71,\r\n or: 72,\r\n ta: 73,\r\n te: 74,\r\n kn: 75,\r\n ml: 76,\r\n as: 77,\r\n mr: 78,\r\n sa: 79,\r\n mn: 80,\r\n bo: 81,\r\n cy: 82,\r\n km: 83,\r\n lo: 84,\r\n gl: 86,\r\n kok: 87,\r\n syr: 90,\r\n si: 91,\r\n iu: 93,\r\n am: 94,\r\n tzm: 95,\r\n ne: 97,\r\n fy: 98,\r\n ps: 99,\r\n fil: 100,\r\n dv: 101,\r\n ha: 104,\r\n yo: 106,\r\n quz: 107,\r\n nso: 108,\r\n ba: 109,\r\n lb: 110,\r\n kl: 111,\r\n ig: 112,\r\n ii: 120,\r\n arn: 122,\r\n moh: 124,\r\n br: 126,\r\n ug: 128,\r\n mi: 129,\r\n oc: 130,\r\n co: 131,\r\n gsw: 132,\r\n sah: 133,\r\n qut: 134,\r\n rw: 135,\r\n wo: 136,\r\n prs: 140,\r\n gd: 145,\r\n \"ar-SA\": 1025,\r\n \"bg-BG\": 1026,\r\n \"ca-ES\": 1027,\r\n \"zh-TW\": 1028,\r\n \"cs-CZ\": 1029,\r\n \"da-DK\": 1030,\r\n \"de-DE\": 1031,\r\n \"el-GR\": 1032,\r\n \"en-US\": 1033,\r\n \"fi-FI\": 1035,\r\n \"fr-FR\": 1036,\r\n \"he-IL\": 1037,\r\n \"hu-HU\": 1038,\r\n \"is-IS\": 1039,\r\n \"it-IT\": 1040,\r\n \"ja-JP\": 1041,\r\n \"ko-KR\": 1042,\r\n \"nl-NL\": 1043,\r\n \"nb-NO\": 1044,\r\n \"pl-PL\": 1045,\r\n \"pt-BR\": 1046,\r\n \"rm-CH\": 1047,\r\n \"ro-RO\": 1048,\r\n \"ru-RU\": 1049,\r\n \"hr-HR\": 1050,\r\n \"sk-SK\": 1051,\r\n \"sq-AL\": 1052,\r\n \"sv-SE\": 1053,\r\n \"th-TH\": 1054,\r\n \"tr-TR\": 1055,\r\n \"ur-PK\": 1056,\r\n \"id-ID\": 1057,\r\n \"uk-UA\": 1058,\r\n \"be-BY\": 1059,\r\n \"sl-SI\": 1060,\r\n \"et-EE\": 1061,\r\n \"lv-LV\": 1062,\r\n \"lt-LT\": 1063,\r\n \"tg-Cyrl-TJ\": 1064,\r\n \"fa-IR\": 1065,\r\n \"vi-VN\": 1066,\r\n \"hy-AM\": 1067,\r\n \"az-Latn-AZ\": 1068,\r\n \"eu-ES\": 1069,\r\n \"hsb-DE\": 1070,\r\n \"mk-MK\": 1071,\r\n \"tn-ZA\": 1074,\r\n \"xh-ZA\": 1076,\r\n \"zu-ZA\": 1077,\r\n \"af-ZA\": 1078,\r\n \"ka-GE\": 1079,\r\n \"fo-FO\": 1080,\r\n \"hi-IN\": 1081,\r\n \"mt-MT\": 1082,\r\n \"se-NO\": 1083,\r\n \"ms-MY\": 1086,\r\n \"kk-KZ\": 1087,\r\n \"ky-KG\": 1088,\r\n \"sw-KE\": 1089,\r\n \"tk-TM\": 1090,\r\n \"uz-Latn-UZ\": 1091,\r\n \"tt-RU\": 1092,\r\n \"bn-IN\": 1093,\r\n \"pa-IN\": 1094,\r\n \"gu-IN\": 1095,\r\n \"or-IN\": 1096,\r\n \"ta-IN\": 1097,\r\n \"te-IN\": 1098,\r\n \"kn-IN\": 1099,\r\n \"ml-IN\": 1100,\r\n \"as-IN\": 1101,\r\n \"mr-IN\": 1102,\r\n \"sa-IN\": 1103,\r\n \"mn-MN\": 1104,\r\n \"bo-CN\": 1105,\r\n \"cy-GB\": 1106,\r\n \"km-KH\": 1107,\r\n \"lo-LA\": 1108,\r\n \"gl-ES\": 1110,\r\n \"kok-IN\": 1111,\r\n \"syr-SY\": 1114,\r\n \"si-LK\": 1115,\r\n \"iu-Cans-CA\": 1117,\r\n \"am-ET\": 1118,\r\n \"ne-NP\": 1121,\r\n \"fy-NL\": 1122,\r\n \"ps-AF\": 1123,\r\n \"fil-PH\": 1124,\r\n \"dv-MV\": 1125,\r\n \"ha-Latn-NG\": 1128,\r\n \"yo-NG\": 1130,\r\n \"quz-BO\": 1131,\r\n \"nso-ZA\": 1132,\r\n \"ba-RU\": 1133,\r\n \"lb-LU\": 1134,\r\n \"kl-GL\": 1135,\r\n \"ig-NG\": 1136,\r\n \"ii-CN\": 1144,\r\n \"arn-CL\": 1146,\r\n \"moh-CA\": 1148,\r\n \"br-FR\": 1150,\r\n \"ug-CN\": 1152,\r\n \"mi-NZ\": 1153,\r\n \"oc-FR\": 1154,\r\n \"co-FR\": 1155,\r\n \"gsw-FR\": 1156,\r\n \"sah-RU\": 1157,\r\n \"qut-GT\": 1158,\r\n \"rw-RW\": 1159,\r\n \"wo-SN\": 1160,\r\n \"prs-AF\": 1164,\r\n \"gd-GB\": 1169,\r\n \"ar-IQ\": 2049,\r\n \"zh-CN\": 2052,\r\n \"de-CH\": 2055,\r\n \"en-GB\": 2057,\r\n \"es-MX\": 2058,\r\n \"fr-BE\": 2060,\r\n \"it-CH\": 2064,\r\n \"nl-BE\": 2067,\r\n \"nn-NO\": 2068,\r\n \"pt-PT\": 2070,\r\n \"sr-Latn-CS\": 2074,\r\n \"sv-FI\": 2077,\r\n \"az-Cyrl-AZ\": 2092,\r\n \"dsb-DE\": 2094,\r\n \"se-SE\": 2107,\r\n \"ga-IE\": 2108,\r\n \"ms-BN\": 2110,\r\n \"uz-Cyrl-UZ\": 2115,\r\n \"bn-BD\": 2117,\r\n \"mn-Mong-CN\": 2128,\r\n \"iu-Latn-CA\": 2141,\r\n \"tzm-Latn-DZ\": 2143,\r\n \"quz-EC\": 2155,\r\n \"ar-EG\": 3073,\r\n \"zh-HK\": 3076,\r\n \"de-AT\": 3079,\r\n \"en-AU\": 3081,\r\n \"es-ES\": 3082,\r\n \"fr-CA\": 3084,\r\n \"sr-Cyrl-CS\": 3098,\r\n \"se-FI\": 3131,\r\n \"quz-PE\": 3179,\r\n \"ar-LY\": 4097,\r\n \"zh-SG\": 4100,\r\n \"de-LU\": 4103,\r\n \"en-CA\": 4105,\r\n \"es-GT\": 4106,\r\n \"fr-CH\": 4108,\r\n \"hr-BA\": 4122,\r\n \"smj-NO\": 4155,\r\n \"ar-DZ\": 5121,\r\n \"zh-MO\": 5124,\r\n \"de-LI\": 5127,\r\n \"en-NZ\": 5129,\r\n \"es-CR\": 5130,\r\n \"fr-LU\": 5132,\r\n \"bs-Latn-BA\": 5146,\r\n \"smj-SE\": 5179,\r\n \"ar-MA\": 6145,\r\n \"en-IE\": 6153,\r\n \"es-PA\": 6154,\r\n \"fr-MC\": 6156,\r\n \"sr-Latn-BA\": 6170,\r\n \"sma-NO\": 6203,\r\n \"ar-TN\": 7169,\r\n \"en-ZA\": 7177,\r\n \"es-DO\": 7178,\r\n \"sr-Cyrl-BA\": 7194,\r\n \"sma-SE\": 7227,\r\n \"ar-OM\": 8193,\r\n \"en-JM\": 8201,\r\n \"es-VE\": 8202,\r\n \"bs-Cyrl-BA\": 8218,\r\n \"sms-FI\": 8251,\r\n \"ar-YE\": 9217,\r\n \"en-029\": 9225,\r\n \"es-CO\": 9226,\r\n \"sr-Latn-RS\": 9242,\r\n \"smn-FI\": 9275,\r\n \"ar-SY\": 10241,\r\n \"en-BZ\": 10249,\r\n \"es-PE\": 10250,\r\n \"sr-Cyrl-RS\": 10266,\r\n \"ar-JO\": 11265,\r\n \"en-TT\": 11273,\r\n \"es-AR\": 11274,\r\n \"sr-Latn-ME\": 11290,\r\n \"ar-LB\": 12289,\r\n \"en-ZW\": 12297,\r\n \"es-EC\": 12298,\r\n \"sr-Cyrl-ME\": 12314,\r\n \"ar-KW\": 13313,\r\n \"en-PH\": 13321,\r\n \"es-CL\": 13322,\r\n \"ar-AE\": 14337,\r\n \"es-UY\": 14346,\r\n \"ar-BH\": 15361,\r\n \"es-PY\": 15370,\r\n \"ar-QA\": 16385,\r\n \"en-IN\": 16393,\r\n \"es-BO\": 16394,\r\n \"en-MY\": 17417,\r\n \"es-SV\": 17418,\r\n \"en-SG\": 18441,\r\n \"es-HN\": 18442,\r\n \"es-NI\": 19466,\r\n \"es-PR\": 20490,\r\n \"es-US\": 21514,\r\n \"bs-Cyrl\": 25626,\r\n \"bs-Latn\": 26650,\r\n \"sr-Cyrl\": 27674,\r\n \"sr-Latn\": 28698,\r\n smn: 28731,\r\n \"az-Cyrl\": 29740,\r\n sms: 29755,\r\n zh: 30724,\r\n nn: 30740,\r\n bs: 30746,\r\n \"az-Latn\": 30764,\r\n sma: 30779,\r\n \"uz-Cyrl\": 30787,\r\n \"mn-Cyrl\": 30800,\r\n \"iu-Cans\": 30813,\r\n \"zh-Hant\": 31748,\r\n nb: 31764,\r\n sr: 31770,\r\n \"tg-Cyrl\": 31784,\r\n dsb: 31790,\r\n smj: 31803,\r\n \"uz-Latn\": 31811,\r\n \"mn-Mong\": 31824,\r\n \"iu-Latn\": 31837,\r\n \"tzm-Latn\": 31839,\r\n \"ha-Latn\": 31848\r\n};\r\nexport function getLanguageId() {\r\n return LANGUAGE_CODES[localizationCoreUtils.locale()]\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.virtual_columns.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n createColumnsInfo\r\n} from \"./ui.grid_core.virtual_columns_core\";\r\nvar DEFAULT_COLUMN_WIDTH = 50;\r\nvar VirtualScrollingRowsViewExtender = {\r\n _resizeCore: function() {\r\n this.callBase.apply(this, arguments);\r\n this._columnsController.resize()\r\n },\r\n _handleScroll: function(e) {\r\n var that = this;\r\n var scrollable = this.getScrollable();\r\n var left = e.scrollOffset.left;\r\n that.callBase.apply(that, arguments);\r\n if (that.option(\"rtlEnabled\") && scrollable) {\r\n left = scrollable.$content().width() - scrollable.$element().width() - left\r\n }\r\n that._columnsController.setScrollPosition(left)\r\n }\r\n};\r\nvar HeaderViewExtender = {\r\n _renderCore: function() {\r\n this.callBase.apply(this, arguments);\r\n if (this._columnsController.isVirtualMode()) {\r\n this._updateScrollLeftPosition()\r\n }\r\n }\r\n};\r\nvar ColumnsControllerExtender = function() {\r\n var getWidths = function(columns) {\r\n return columns.map(column => column.visibleWidth || parseFloat(column.width) || DEFAULT_COLUMN_WIDTH)\r\n };\r\n var members = {\r\n init: function() {\r\n this.callBase();\r\n this._beginPageIndex = 0;\r\n this._endPageIndex = 0;\r\n this._position = 0;\r\n this._virtualVisibleColumns = {}\r\n },\r\n resetColumnsCache: function() {\r\n this.callBase();\r\n this._virtualVisibleColumns = {}\r\n },\r\n getBeginPageIndex: function(position) {\r\n var visibleColumns = this.getVisibleColumns(void 0, true);\r\n var widths = getWidths(visibleColumns);\r\n var currentPosition = 0;\r\n for (var index = 0; index < widths.length; index++) {\r\n if (currentPosition >= position) {\r\n return Math.floor(index / this.getColumnPageSize())\r\n }\r\n currentPosition += widths[index]\r\n }\r\n return 0\r\n },\r\n getTotalWidth: function() {\r\n var width = this.option(\"width\");\r\n if (\"number\" === typeof width) {\r\n return width\r\n }\r\n return this.getController(\"resizing\")._lastWidth || this.component.$element().outerWidth()\r\n },\r\n getEndPageIndex: function(position) {\r\n var visibleColumns = this.getVisibleColumns(void 0, true);\r\n var widths = getWidths(visibleColumns);\r\n var currentPosition = 0;\r\n position += this.getTotalWidth();\r\n for (var index = 0; index < widths.length; index++) {\r\n if (currentPosition >= position) {\r\n return Math.ceil(index / this.getColumnPageSize())\r\n }\r\n currentPosition += widths[index]\r\n }\r\n return Math.ceil(widths.length / this.getColumnPageSize())\r\n },\r\n getColumnPageSize: function() {\r\n return this.option(\"scrolling.columnPageSize\")\r\n },\r\n _fireColumnsChanged: function() {\r\n var date = new Date;\r\n this.columnsChanged.fire({\r\n optionNames: {\r\n all: true,\r\n length: 1\r\n },\r\n changeTypes: {\r\n columns: true,\r\n length: 1\r\n }\r\n });\r\n this._renderTime = new Date - date\r\n },\r\n setScrollPosition: function(position) {\r\n var that = this;\r\n var renderingThreshold = that.option(\"scrolling.columnRenderingThreshold\");\r\n if (that._renderTime > renderingThreshold) {\r\n clearTimeout(that._changedTimeout);\r\n that._changedTimeout = setTimeout((function() {\r\n that._setScrollPositionCore(position)\r\n }), that.option(\"scrolling.timeout\"))\r\n } else {\r\n that._setScrollPositionCore(position)\r\n }\r\n },\r\n isVirtualMode: function() {\r\n return hasWindow() && \"virtual\" === this.option(\"scrolling.columnRenderingMode\")\r\n },\r\n resize: function() {\r\n this._setScrollPositionCore(this._position)\r\n },\r\n _setScrollPositionCore: function(position) {\r\n if (this.isVirtualMode()) {\r\n var beginPageIndex = this.getBeginPageIndex(position);\r\n var endPageIndex = this.getEndPageIndex(position);\r\n var needColumnsChanged = position < this._position ? this._beginPageIndex > beginPageIndex : this._endPageIndex < endPageIndex;\r\n this._position = position;\r\n if (needColumnsChanged) {\r\n this._beginPageIndex = beginPageIndex;\r\n this._endPageIndex = endPageIndex;\r\n this._fireColumnsChanged()\r\n }\r\n }\r\n },\r\n getFixedColumns: function(rowIndex, isBase) {\r\n var fixedColumns = this.callBase(rowIndex);\r\n if (this.isVirtualMode() && !isBase && fixedColumns.length) {\r\n var transparentColumnIndex = fixedColumns.map(c => c.command).indexOf(\"transparent\");\r\n fixedColumns[transparentColumnIndex].colspan = this.getVisibleColumns().length - this.callBase().length + 1;\r\n return fixedColumns\r\n }\r\n return fixedColumns\r\n },\r\n getVisibleColumns: function(rowIndex, isBase) {\r\n if (isBase || !this.isVirtualMode()) {\r\n return this.callBase(rowIndex)\r\n }\r\n if (!this._beginPageIndex && !this._endPageIndex) {\r\n this._beginPageIndex = this.getBeginPageIndex(this._position);\r\n this._endPageIndex = this.getEndPageIndex(this._position)\r\n }\r\n var beginPageIndex = this._beginPageIndex;\r\n var endPageIndex = this._endPageIndex;\r\n var visibleColumnsHash = rowIndex + \"-\" + beginPageIndex + \"-\" + endPageIndex;\r\n if (this._virtualVisibleColumns[visibleColumnsHash]) {\r\n return this._virtualVisibleColumns[visibleColumnsHash]\r\n }\r\n var visibleColumns = this.callBase();\r\n var rowCount = this.getRowCount();\r\n var pageSize = this.getColumnPageSize();\r\n var startIndex = beginPageIndex * pageSize;\r\n var endIndex = endPageIndex * pageSize;\r\n var fixedColumns = this.getFixedColumns(void 0, true);\r\n var transparentColumnIndex = fixedColumns.map(c => c.command).indexOf(\"transparent\");\r\n var beginFixedColumnCount = fixedColumns.length ? transparentColumnIndex : 0;\r\n var beginFixedColumns = visibleColumns.slice(0, beginFixedColumnCount);\r\n var beginColumns = visibleColumns.slice(beginFixedColumnCount, startIndex);\r\n var beginWidth = getWidths(beginColumns).reduce((a, b) => a + b, 0);\r\n if (!beginWidth) {\r\n startIndex = 0\r\n }\r\n var endFixedColumnCount = fixedColumns.length ? fixedColumns.length - transparentColumnIndex - 1 : 0;\r\n var endFixedColumns = visibleColumns.slice(visibleColumns.length - endFixedColumnCount);\r\n var endColumns = visibleColumns.slice(endIndex, visibleColumns.length - endFixedColumnCount);\r\n var endWidth = getWidths(endColumns).reduce((a, b) => a + b, 0);\r\n if (!endWidth) {\r\n endIndex = visibleColumns.length\r\n }\r\n if (rowCount > 1 && \"number\" === typeof rowIndex) {\r\n var columnsInfo = [];\r\n for (var i = 0; i < rowCount; i++) {\r\n columnsInfo.push(this.callBase(i))\r\n }\r\n beginFixedColumns = createColumnsInfo(columnsInfo, 0, beginFixedColumns.length)[rowIndex] || [];\r\n endFixedColumns = createColumnsInfo(columnsInfo, visibleColumns.length - endFixedColumns.length, visibleColumns.length)[rowIndex] || [];\r\n visibleColumns = createColumnsInfo(columnsInfo, startIndex, endIndex)[rowIndex] || []\r\n } else {\r\n visibleColumns = visibleColumns.slice(startIndex, endIndex)\r\n }\r\n if (beginWidth) {\r\n visibleColumns.unshift({\r\n command: \"virtual\",\r\n width: beginWidth\r\n });\r\n visibleColumns = beginFixedColumns.concat(visibleColumns)\r\n }\r\n if (endWidth) {\r\n visibleColumns.push({\r\n command: \"virtual\",\r\n width: endWidth\r\n });\r\n visibleColumns = visibleColumns.concat(endFixedColumns)\r\n }\r\n this._virtualVisibleColumns[visibleColumnsHash] = visibleColumns;\r\n return visibleColumns\r\n },\r\n getColumnIndexOffset: function() {\r\n var offset = 0;\r\n if (this._beginPageIndex > 0) {\r\n var fixedColumns = this.getFixedColumns();\r\n var transparentColumnIndex = fixedColumns.map(c => c.command).indexOf(\"transparent\");\r\n var leftFixedColumnCount = transparentColumnIndex >= 0 ? transparentColumnIndex : 0;\r\n offset = this._beginPageIndex * this.getColumnPageSize() - leftFixedColumnCount - 1\r\n }\r\n return offset > 0 ? offset : 0\r\n },\r\n dispose: function() {\r\n clearTimeout(this._changedTimeout);\r\n this.callBase.apply(this, arguments)\r\n }\r\n };\r\n return members\r\n}();\r\nexport var virtualColumnsModule = {\r\n defaultOptions: function() {\r\n return {\r\n scrolling: {\r\n columnRenderingMode: \"standard\",\r\n columnPageSize: 5,\r\n columnRenderingThreshold: 300\r\n }\r\n }\r\n },\r\n extenders: {\r\n controllers: {\r\n columns: ColumnsControllerExtender\r\n },\r\n views: {\r\n columnHeadersView: HeaderViewExtender,\r\n rowsView: VirtualScrollingRowsViewExtender\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.data_controller.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport ArrayStore from \"../../data/array_store\";\r\nimport CustomStore from \"../../data/custom_store\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n noop,\r\n deferRender,\r\n equalByValue\r\n} from \"../../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport DataHelperMixin from \"../../data_helper\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n findChanges\r\n} from \"../../core/utils/array_compare\";\r\nexport var dataControllerModule = {\r\n defaultOptions: function() {\r\n return {\r\n loadingTimeout: 0,\r\n dataSource: null,\r\n cacheEnabled: true,\r\n repaintChangesOnly: false,\r\n highlightChanges: false,\r\n onDataErrorOccurred: null,\r\n remoteOperations: \"auto\",\r\n paging: {\r\n enabled: true,\r\n pageSize: void 0,\r\n pageIndex: void 0\r\n }\r\n }\r\n },\r\n controllers: {\r\n data: modules.Controller.inherit({}).include(DataHelperMixin).inherit(function() {\r\n var changePaging = function(that, optionName, value) {\r\n var dataSource = that._dataSource;\r\n if (dataSource) {\r\n if (void 0 !== value) {\r\n if (dataSource[optionName]() !== value) {\r\n if (\"pageSize\" === optionName) {\r\n dataSource.pageIndex(0)\r\n }\r\n dataSource[optionName](value);\r\n that._skipProcessingPagingChange = true;\r\n that.option(\"paging.\" + optionName, value);\r\n that._skipProcessingPagingChange = false;\r\n return dataSource[\"pageIndex\" === optionName ? \"load\" : \"reload\"]().done(that.pageChanged.fire.bind(that.pageChanged))\r\n }\r\n return Deferred().resolve().promise()\r\n }\r\n return dataSource[optionName]()\r\n }\r\n return 0\r\n };\r\n var members = {\r\n init: function() {\r\n var that = this;\r\n that._items = [];\r\n that._columnsController = that.getController(\"columns\");\r\n that._currentOperationTypes = null;\r\n that._dataChangedHandler = e => {\r\n that._currentOperationTypes = this._dataSource.operationTypes();\r\n that._handleDataChanged(e);\r\n that._currentOperationTypes = null\r\n };\r\n that._columnsChangedHandler = that._handleColumnsChanged.bind(that);\r\n that._loadingChangedHandler = that._handleLoadingChanged.bind(that);\r\n that._loadErrorHandler = that._handleLoadError.bind(that);\r\n that._customizeStoreLoadOptionsHandler = that._handleCustomizeStoreLoadOptions.bind(that);\r\n that._changingHandler = that._handleChanging.bind(that);\r\n that._columnsController.columnsChanged.add(that._columnsChangedHandler);\r\n that._isLoading = false;\r\n that._isCustomLoading = false;\r\n that._repaintChangesOnly = void 0;\r\n that._changes = [];\r\n that.createAction(\"onDataErrorOccurred\");\r\n that.dataErrorOccurred.add((function(error) {\r\n return that.executeAction(\"onDataErrorOccurred\", {\r\n error: error\r\n })\r\n }));\r\n that._refreshDataSource()\r\n },\r\n callbackNames: function() {\r\n return [\"changed\", \"loadingChanged\", \"dataErrorOccurred\", \"pageChanged\", \"dataSourceChanged\"]\r\n },\r\n callbackFlags: function(name) {\r\n if (\"dataErrorOccurred\" === name) {\r\n return {\r\n stopOnFalse: true\r\n }\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"beginCustomLoading\", \"endCustomLoading\", \"refresh\", \"filter\", \"clearFilter\", \"getCombinedFilter\", \"keyOf\", \"byKey\", \"getDataByKeys\", \"pageIndex\", \"pageSize\", \"pageCount\", \"totalCount\", \"_disposeDataSource\", \"getKeyByRowIndex\", \"getRowIndexByKey\", \"getDataSource\", \"getVisibleRows\", \"repaintRows\"]\r\n },\r\n reset: function() {\r\n this._columnsController.reset();\r\n this._items = [];\r\n this._refreshDataSource()\r\n },\r\n optionChanged: function(args) {\r\n var dataSource;\r\n\r\n function handled() {\r\n args.handled = true\r\n }\r\n if (\"dataSource\" === args.name && args.name === args.fullName && (args.value === args.previousValue || this.option(\"columns\") && Array.isArray(args.value) && Array.isArray(args.previousValue))) {\r\n if (args.value !== args.previousValue) {\r\n var store = this.store();\r\n if (store) {\r\n store._array = args.value\r\n }\r\n }\r\n handled();\r\n this.refresh(this.option(\"repaintChangesOnly\"));\r\n return\r\n }\r\n switch (args.name) {\r\n case \"cacheEnabled\":\r\n case \"repaintChangesOnly\":\r\n case \"highlightChanges\":\r\n case \"loadingTimeout\":\r\n handled();\r\n break;\r\n case \"remoteOperations\":\r\n case \"keyExpr\":\r\n case \"dataSource\":\r\n case \"scrolling\":\r\n handled();\r\n this.reset();\r\n break;\r\n case \"paging\":\r\n dataSource = this.dataSource();\r\n if (dataSource && this._setPagingOptions(dataSource)) {\r\n dataSource.load().done(this.pageChanged.fire.bind(this.pageChanged))\r\n }\r\n handled();\r\n break;\r\n case \"rtlEnabled\":\r\n this.reset();\r\n break;\r\n case \"columns\":\r\n dataSource = this.dataSource();\r\n if (dataSource && dataSource.isLoading() && args.name === args.fullName) {\r\n this._useSortingGroupingFromColumns = true;\r\n dataSource.load()\r\n }\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n isReady: function() {\r\n return !this._isLoading\r\n },\r\n getDataSource: function() {\r\n return this._dataSource && this._dataSource._dataSource\r\n },\r\n getCombinedFilter: function(returnDataField) {\r\n return this.combinedFilter(void 0, returnDataField)\r\n },\r\n combinedFilter: function(filter, returnDataField) {\r\n var dataSource = this._dataSource;\r\n var columnsController = this._columnsController;\r\n if (dataSource) {\r\n if (void 0 === filter) {\r\n filter = dataSource.filter()\r\n }\r\n var additionalFilter = this._calculateAdditionalFilter();\r\n if (additionalFilter) {\r\n if (columnsController.isDataSourceApplied() || columnsController.isAllDataTypesDefined()) {\r\n filter = gridCoreUtils.combineFilters([additionalFilter, filter])\r\n }\r\n }\r\n filter = columnsController.updateFilter(filter, returnDataField || dataSource.remoteOperations().filtering)\r\n }\r\n return filter\r\n },\r\n waitReady: function() {\r\n if (this._updateLockCount) {\r\n this._readyDeferred = new Deferred;\r\n return this._readyDeferred\r\n }\r\n return when()\r\n },\r\n _endUpdateCore: function() {\r\n var changes = this._changes;\r\n if (changes.length) {\r\n this._changes = [];\r\n var repaintChangesOnly = changes.every(change => change.repaintChangesOnly);\r\n this.updateItems(1 === changes.length ? changes[0] : {\r\n repaintChangesOnly: repaintChangesOnly\r\n })\r\n }\r\n if (this._readyDeferred) {\r\n this._readyDeferred.resolve();\r\n this._readyDeferred = null\r\n }\r\n },\r\n _handleCustomizeStoreLoadOptions: function(e) {\r\n var columnsController = this._columnsController;\r\n var dataSource = this._dataSource;\r\n var storeLoadOptions = e.storeLoadOptions;\r\n if (e.isCustomLoading && !storeLoadOptions.isLoadingAll) {\r\n return\r\n }\r\n storeLoadOptions.filter = this.combinedFilter(storeLoadOptions.filter);\r\n if (!columnsController.isDataSourceApplied()) {\r\n columnsController.updateColumnDataTypes(dataSource)\r\n }\r\n this._columnsUpdating = true;\r\n columnsController.updateSortingGrouping(dataSource, !this._useSortingGroupingFromColumns);\r\n this._columnsUpdating = false;\r\n storeLoadOptions.sort = columnsController.getSortDataSourceParameters();\r\n storeLoadOptions.group = columnsController.getGroupDataSourceParameters();\r\n dataSource.sort(storeLoadOptions.sort);\r\n dataSource.group(storeLoadOptions.group);\r\n storeLoadOptions.sort = columnsController.getSortDataSourceParameters(!dataSource.remoteOperations().sorting);\r\n e.group = columnsController.getGroupDataSourceParameters(!dataSource.remoteOperations().grouping)\r\n },\r\n _handleColumnsChanged: function(e) {\r\n var that = this;\r\n var changeTypes = e.changeTypes;\r\n var optionNames = e.optionNames;\r\n var filterValue;\r\n var filterValues;\r\n var filterApplied;\r\n if (changeTypes.sorting || changeTypes.grouping) {\r\n if (that._dataSource && !that._columnsUpdating) {\r\n that._dataSource.group(that._columnsController.getGroupDataSourceParameters());\r\n that._dataSource.sort(that._columnsController.getSortDataSourceParameters());\r\n that.reload()\r\n }\r\n } else if (changeTypes.columns) {\r\n if (optionNames.filterValues || optionNames.filterValue || optionNames.selectedFilterOperation) {\r\n filterValue = that._columnsController.columnOption(e.columnIndex, \"filterValue\");\r\n filterValues = that._columnsController.columnOption(e.columnIndex, \"filterValues\");\r\n if (Array.isArray(filterValues) || void 0 === e.columnIndex || isDefined(filterValue) || !optionNames.selectedFilterOperation || optionNames.filterValue) {\r\n that._applyFilter();\r\n filterApplied = true\r\n }\r\n }\r\n if (!that._needApplyFilter && !gridCoreUtils.checkChanges(optionNames, [\"width\", \"visibleWidth\", \"filterValue\", \"bufferedFilterValue\", \"selectedFilterOperation\", \"filterValues\", \"filterType\"])) {\r\n that._columnsController.columnsChanged.add((function updateItemsHandler() {\r\n that._columnsController.columnsChanged.remove(updateItemsHandler);\r\n that.updateItems()\r\n }))\r\n }\r\n if (isDefined(optionNames.visible)) {\r\n var column = that._columnsController.columnOption(e.columnIndex);\r\n if (column && (isDefined(column.filterValue) || isDefined(column.filterValues))) {\r\n that._applyFilter();\r\n filterApplied = true\r\n }\r\n }\r\n }\r\n if (!filterApplied && changeTypes.filtering) {\r\n that.reload()\r\n }\r\n },\r\n _handleDataChanged: function(e) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var columnsController = that._columnsController;\r\n var isAsyncDataSourceApplying = false;\r\n this._useSortingGroupingFromColumns = false;\r\n if (dataSource && !that._isDataSourceApplying) {\r\n that._isDataSourceApplying = true;\r\n when(that._columnsController.applyDataSource(dataSource)).done((function() {\r\n if (that._isLoading) {\r\n that._handleLoadingChanged(false)\r\n }\r\n if (isAsyncDataSourceApplying && e && e.isDelayed) {\r\n e.isDelayed = false\r\n }\r\n that._isDataSourceApplying = false;\r\n var needApplyFilter = that._needApplyFilter;\r\n that._needApplyFilter = false;\r\n if (needApplyFilter && !that._isAllDataTypesDefined && (additionalFilter = that._calculateAdditionalFilter(), additionalFilter && additionalFilter.length)) {\r\n errors.log(\"W1005\", that.component.NAME);\r\n that._applyFilter()\r\n } else {\r\n that.updateItems(e, true)\r\n }\r\n var additionalFilter\r\n })).fail((function() {\r\n that._isDataSourceApplying = false\r\n }));\r\n if (that._isDataSourceApplying) {\r\n isAsyncDataSourceApplying = true;\r\n that._handleLoadingChanged(true)\r\n }\r\n that._needApplyFilter = !that._columnsController.isDataSourceApplied();\r\n that._isAllDataTypesDefined = columnsController.isAllDataTypesDefined()\r\n }\r\n },\r\n _handleLoadingChanged: function(isLoading) {\r\n this._isLoading = isLoading;\r\n this._fireLoadingChanged()\r\n },\r\n _handleLoadError: function(e) {\r\n this.dataErrorOccurred.fire(e)\r\n },\r\n fireError: function() {\r\n this.dataErrorOccurred.fire(errors.Error.apply(errors, arguments))\r\n },\r\n _setPagingOptions: function(dataSource) {\r\n var pageIndex = this.option(\"paging.pageIndex\");\r\n var pageSize = this.option(\"paging.pageSize\");\r\n var pagingEnabled = this.option(\"paging.enabled\");\r\n var scrollingMode = this.option(\"scrolling.mode\");\r\n var appendMode = \"infinite\" === scrollingMode;\r\n var virtualMode = \"virtual\" === scrollingMode;\r\n var paginate = pagingEnabled || virtualMode || appendMode;\r\n var isChanged = false;\r\n dataSource.requireTotalCount(!appendMode);\r\n if (void 0 !== pagingEnabled && dataSource.paginate() !== paginate) {\r\n dataSource.paginate(paginate);\r\n isChanged = true\r\n }\r\n if (void 0 !== pageSize && dataSource.pageSize() !== pageSize) {\r\n dataSource.pageSize(pageSize);\r\n isChanged = true\r\n }\r\n if (void 0 !== pageIndex && dataSource.pageIndex() !== pageIndex) {\r\n dataSource.pageIndex(pageIndex);\r\n isChanged = true\r\n }\r\n return isChanged\r\n },\r\n _getSpecificDataSourceOption: function() {\r\n var dataSource = this.option(\"dataSource\");\r\n if (Array.isArray(dataSource)) {\r\n return {\r\n store: {\r\n type: \"array\",\r\n data: dataSource,\r\n key: this.option(\"keyExpr\")\r\n }\r\n }\r\n }\r\n return dataSource\r\n },\r\n _initDataSource: function() {\r\n var dataSource = this.option(\"dataSource\");\r\n var oldDataSource = this._dataSource;\r\n this.callBase();\r\n dataSource = this._dataSource;\r\n this._useSortingGroupingFromColumns = true;\r\n if (dataSource) {\r\n this._setPagingOptions(dataSource);\r\n this.setDataSource(dataSource)\r\n } else if (oldDataSource) {\r\n this.updateItems()\r\n }\r\n },\r\n _loadDataSource: function() {\r\n var dataSource = this._dataSource;\r\n var result = new Deferred;\r\n when(this._columnsController.refresh(true)).always((function() {\r\n if (dataSource) {\r\n dataSource.load().done(result.resolve).fail(result.reject)\r\n } else {\r\n result.resolve()\r\n }\r\n }));\r\n return result.promise()\r\n },\r\n _beforeProcessItems: function(items) {\r\n return items.slice(0)\r\n },\r\n getRowIndexDelta: function() {\r\n return 0\r\n },\r\n _processItems: function(items, change) {\r\n var that = this;\r\n var rowIndexDelta = that.getRowIndexDelta();\r\n var changeType = change.changeType;\r\n var visibleColumns = that._columnsController.getVisibleColumns(null, \"loadingAll\" === changeType);\r\n var visibleItems = that._items;\r\n var lastVisibleItem = \"append\" === changeType && visibleItems.length > 0 ? visibleItems[visibleItems.length - 1] : null;\r\n var dataIndex = isDefined(null === lastVisibleItem || void 0 === lastVisibleItem ? void 0 : lastVisibleItem.dataIndex) ? lastVisibleItem.dataIndex + 1 : 0;\r\n var options = {\r\n visibleColumns: visibleColumns,\r\n dataIndex: dataIndex\r\n };\r\n var result = [];\r\n each(items, (function(index, item) {\r\n if (isDefined(item)) {\r\n options.rowIndex = index - rowIndexDelta;\r\n item = that._processItem(item, options);\r\n result.push(item)\r\n }\r\n }));\r\n return result\r\n },\r\n _processItem: function(item, options) {\r\n item = this._generateDataItem(item, options);\r\n item = this._processDataItem(item, options);\r\n item.dataIndex = options.dataIndex++;\r\n return item\r\n },\r\n _generateDataItem: function(data) {\r\n return {\r\n rowType: \"data\",\r\n data: data,\r\n key: this.keyOf(data)\r\n }\r\n },\r\n _processDataItem: function(dataItem, options) {\r\n dataItem.values = this.generateDataValues(dataItem.data, options.visibleColumns);\r\n return dataItem\r\n },\r\n generateDataValues: function(data, columns, isModified) {\r\n var values = [];\r\n var value;\r\n for (var i = 0; i < columns.length; i++) {\r\n var column = columns[i];\r\n value = isModified ? void 0 : null;\r\n if (!column.command) {\r\n if (column.calculateCellValue) {\r\n value = column.calculateCellValue(data)\r\n } else if (column.dataField) {\r\n value = data[column.dataField]\r\n }\r\n }\r\n values.push(value)\r\n }\r\n return values\r\n },\r\n _applyChange: function(change) {\r\n if (\"update\" === change.changeType) {\r\n this._applyChangeUpdate(change)\r\n } else if (this.items().length && change.repaintChangesOnly && \"refresh\" === change.changeType) {\r\n this._applyChangesOnly(change)\r\n } else if (\"refresh\" === change.changeType) {\r\n this._applyChangeFull(change)\r\n }\r\n },\r\n _applyChangeFull: function(change) {\r\n this._items = change.items.slice(0)\r\n },\r\n _getRowIndices: function(change) {\r\n var rowIndices = change.rowIndices.slice(0);\r\n var rowIndexDelta = this.getRowIndexDelta();\r\n rowIndices.sort((function(a, b) {\r\n return a - b\r\n }));\r\n for (var i = 0; i < rowIndices.length; i++) {\r\n var correctedRowIndex = rowIndices[i];\r\n if (change.allowInvisibleRowIndices) {\r\n correctedRowIndex += rowIndexDelta\r\n }\r\n if (correctedRowIndex < 0) {\r\n rowIndices.splice(i, 1);\r\n i--\r\n }\r\n }\r\n return rowIndices\r\n },\r\n _applyChangeUpdate: function(change) {\r\n var that = this;\r\n var items = change.items;\r\n var rowIndices = that._getRowIndices(change);\r\n var rowIndexDelta = that.getRowIndexDelta();\r\n var repaintChangesOnly = that.option(\"repaintChangesOnly\");\r\n var prevIndex = -1;\r\n var rowIndexCorrection = 0;\r\n var changeType;\r\n change.items = [];\r\n change.rowIndices = [];\r\n change.columnIndices = [];\r\n change.changeTypes = [];\r\n var equalItems = function(item1, item2, strict) {\r\n var result = item1 && item2 && equalByValue(item1.key, item2.key);\r\n if (result && strict) {\r\n result = item1.rowType === item2.rowType && (\"detail\" !== item2.rowType || item1.isEditing === item2.isEditing)\r\n }\r\n return result\r\n };\r\n each(rowIndices, (function(index, rowIndex) {\r\n var columnIndices;\r\n rowIndex += rowIndexCorrection + rowIndexDelta;\r\n if (prevIndex === rowIndex) {\r\n return\r\n }\r\n prevIndex = rowIndex;\r\n var oldItem = that._items[rowIndex];\r\n var oldNextItem = that._items[rowIndex + 1];\r\n var newItem = items[rowIndex];\r\n var newNextItem = items[rowIndex + 1];\r\n var strict = equalItems(oldItem, oldNextItem) || equalItems(newItem, newNextItem);\r\n if (newItem) {\r\n newItem.rowIndex = rowIndex;\r\n change.items.push(newItem)\r\n }\r\n if (oldItem && newItem && equalItems(oldItem, newItem, strict)) {\r\n changeType = \"update\";\r\n that._items[rowIndex] = newItem;\r\n if (oldItem.visible !== newItem.visible) {\r\n change.items.splice(-1, 1, {\r\n visible: newItem.visible\r\n })\r\n } else if (repaintChangesOnly && !change.isFullUpdate) {\r\n columnIndices = that._partialUpdateRow(oldItem, newItem, rowIndex - rowIndexDelta)\r\n }\r\n } else if (newItem && !oldItem || newNextItem && equalItems(oldItem, newNextItem, strict)) {\r\n changeType = \"insert\";\r\n that._items.splice(rowIndex, 0, newItem);\r\n rowIndexCorrection++\r\n } else if (oldItem && !newItem || oldNextItem && equalItems(newItem, oldNextItem, strict)) {\r\n changeType = \"remove\";\r\n that._items.splice(rowIndex, 1);\r\n rowIndexCorrection--;\r\n prevIndex = -1\r\n } else if (newItem) {\r\n changeType = \"update\";\r\n that._items[rowIndex] = newItem\r\n } else {\r\n return\r\n }\r\n change.rowIndices.push(rowIndex - rowIndexDelta);\r\n change.changeTypes.push(changeType);\r\n change.columnIndices.push(columnIndices)\r\n }))\r\n },\r\n _isCellChanged: function(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) {\r\n if (JSON.stringify(oldRow.values[columnIndex]) !== JSON.stringify(newRow.values[columnIndex])) {\r\n return true\r\n }\r\n\r\n function isCellModified(row, columnIndex) {\r\n return row.modifiedValues ? void 0 !== row.modifiedValues[columnIndex] : false\r\n }\r\n if (isCellModified(oldRow, columnIndex) !== isCellModified(newRow, columnIndex)) {\r\n return true\r\n }\r\n return false\r\n },\r\n _getChangedColumnIndices: function(oldItem, newItem, visibleRowIndex, isLiveUpdate) {\r\n if (oldItem.rowType === newItem.rowType && \"group\" !== newItem.rowType && \"groupFooter\" !== newItem.rowType) {\r\n var columnIndices = [];\r\n if (\"detail\" !== newItem.rowType) {\r\n for (var columnIndex = 0; columnIndex < oldItem.values.length; columnIndex++) {\r\n if (this._isCellChanged(oldItem, newItem, visibleRowIndex, columnIndex, isLiveUpdate)) {\r\n columnIndices.push(columnIndex)\r\n }\r\n }\r\n }\r\n return columnIndices\r\n }\r\n },\r\n _partialUpdateRow: function(oldItem, newItem, visibleRowIndex, isLiveUpdate) {\r\n var changedColumnIndices = this._getChangedColumnIndices(oldItem, newItem, visibleRowIndex, isLiveUpdate);\r\n if (changedColumnIndices) {\r\n oldItem.cells && oldItem.cells.forEach((function(cell, columnIndex) {\r\n var isCellChanged = changedColumnIndices.indexOf(columnIndex) >= 0;\r\n if (!isCellChanged && cell && cell.update) {\r\n cell.update(newItem)\r\n }\r\n }));\r\n newItem.update = oldItem.update;\r\n newItem.watch = oldItem.watch;\r\n newItem.cells = oldItem.cells;\r\n if (isLiveUpdate) {\r\n newItem.oldValues = oldItem.values\r\n }\r\n oldItem.update && oldItem.update(newItem)\r\n }\r\n return changedColumnIndices\r\n },\r\n _isItemEquals: function(item1, item2) {\r\n if (JSON.stringify(item1.values) !== JSON.stringify(item2.values)) {\r\n return false\r\n }\r\n if ([\"modified\", \"isNewRow\", \"removed\", \"isEditing\"].some(field => item1[field] !== item2[field])) {\r\n return false\r\n }\r\n if (\"group\" === item1.rowType || \"groupFooter\" === item1.rowType) {\r\n var _item1$data, _item2$data, _item1$data2, _item2$data2;\r\n var expandedMatch = item1.isExpanded === item2.isExpanded;\r\n var summaryCellsMatch = JSON.stringify(item1.summaryCells) === JSON.stringify(item2.summaryCells);\r\n var continuationMatch = (null === (_item1$data = item1.data) || void 0 === _item1$data ? void 0 : _item1$data.isContinuation) === (null === (_item2$data = item2.data) || void 0 === _item2$data ? void 0 : _item2$data.isContinuation) && (null === (_item1$data2 = item1.data) || void 0 === _item1$data2 ? void 0 : _item1$data2.isContinuationOnNextPage) === (null === (_item2$data2 = item2.data) || void 0 === _item2$data2 ? void 0 : _item2$data2.isContinuationOnNextPage);\r\n if (!expandedMatch || !summaryCellsMatch || !continuationMatch) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n _applyChangesOnly: function(change) {\r\n var rowIndices = [];\r\n var columnIndices = [];\r\n var changeTypes = [];\r\n var items = [];\r\n var newIndexByKey = {};\r\n\r\n function getRowKey(row) {\r\n if (row) {\r\n return row.rowType + \",\" + JSON.stringify(row.key)\r\n }\r\n }\r\n var currentItems = this._items;\r\n var oldItems = currentItems.slice();\r\n change.items.forEach((function(item, index) {\r\n var key = getRowKey(item);\r\n newIndexByKey[key] = index;\r\n item.rowIndex = index\r\n }));\r\n var result = findChanges(oldItems, change.items, getRowKey, (item1, item2) => {\r\n if (!this._isItemEquals(item1, item2)) {\r\n return false\r\n }\r\n if (item1.cells) {\r\n item1.update && item1.update(item2);\r\n item1.cells.forEach((function(cell) {\r\n if (cell && cell.update) {\r\n cell.update(item2)\r\n }\r\n }))\r\n }\r\n return true\r\n });\r\n if (!result) {\r\n this._applyChangeFull(change);\r\n return\r\n }\r\n result.forEach(change => {\r\n switch (change.type) {\r\n case \"update\":\r\n var index = change.index;\r\n var newItem = change.data;\r\n var oldItem = change.oldItem;\r\n var changedColumnIndices = this._partialUpdateRow(oldItem, newItem, index, true);\r\n rowIndices.push(index);\r\n changeTypes.push(\"update\");\r\n items.push(newItem);\r\n currentItems[index] = newItem;\r\n columnIndices.push(changedColumnIndices);\r\n break;\r\n case \"insert\":\r\n rowIndices.push(change.index);\r\n changeTypes.push(\"insert\");\r\n items.push(change.data);\r\n columnIndices.push(void 0);\r\n currentItems.splice(change.index, 0, change.data);\r\n break;\r\n case \"remove\":\r\n rowIndices.push(change.index);\r\n changeTypes.push(\"remove\");\r\n currentItems.splice(change.index, 1);\r\n items.push(change.oldItem);\r\n columnIndices.push(void 0)\r\n }\r\n });\r\n change.repaintChangesOnly = true;\r\n change.changeType = \"update\";\r\n change.rowIndices = rowIndices;\r\n change.columnIndices = columnIndices;\r\n change.changeTypes = changeTypes;\r\n change.items = items;\r\n if (oldItems.length) {\r\n change.isLiveUpdate = true\r\n }\r\n this._correctRowIndices((function(rowIndex) {\r\n var oldItem = oldItems[rowIndex];\r\n var key = getRowKey(oldItem);\r\n var newRowIndex = newIndexByKey[key];\r\n return newRowIndex >= 0 ? newRowIndex - rowIndex : 0\r\n }))\r\n },\r\n _correctRowIndices: noop,\r\n _afterProcessItems: function(items) {\r\n return items\r\n },\r\n _updateItemsCore: function(change) {\r\n var items;\r\n var dataSource = this._dataSource;\r\n var changeType = change.changeType || \"refresh\";\r\n change.changeType = changeType;\r\n if (dataSource) {\r\n items = change.items || dataSource.items();\r\n items = this._beforeProcessItems(items);\r\n items = this._processItems(items, change);\r\n items = this._afterProcessItems(items, change);\r\n change.items = items;\r\n var oldItems = this._items.length === items.length && this._items;\r\n this._applyChange(change);\r\n var rowIndexDelta = this.getRowIndexDelta();\r\n each(this._items, (index, item) => {\r\n item.rowIndex = index - rowIndexDelta;\r\n if (oldItems) {\r\n item.cells = oldItems[index].cells || []\r\n }\r\n })\r\n } else {\r\n this._items = []\r\n }\r\n },\r\n _handleChanging: function(e) {\r\n var rows = this.getVisibleRows();\r\n var dataSource = this.dataSource();\r\n if (dataSource) {\r\n e.changes.forEach((function(change) {\r\n if (\"insert\" === change.type && change.index >= 0) {\r\n var dataIndex = 0;\r\n for (var i = 0; i < change.index; i++) {\r\n var row = rows[i];\r\n if (row && (\"data\" === row.rowType || \"group\" === row.rowType)) {\r\n dataIndex++\r\n }\r\n }\r\n change.index = dataIndex\r\n }\r\n }))\r\n }\r\n },\r\n updateItems: function(change, isDataChanged) {\r\n change = change || {};\r\n if (void 0 !== this._repaintChangesOnly) {\r\n change.repaintChangesOnly = this._repaintChangesOnly\r\n } else if (change.changes) {\r\n change.repaintChangesOnly = this.option(\"repaintChangesOnly\")\r\n } else if (isDataChanged) {\r\n var operationTypes = this.dataSource().operationTypes();\r\n change.repaintChangesOnly = operationTypes && !operationTypes.grouping && !operationTypes.filtering && this.option(\"repaintChangesOnly\");\r\n change.isDataChanged = true;\r\n if (operationTypes && (operationTypes.reload || operationTypes.paging || operationTypes.groupExpanding)) {\r\n change.needUpdateDimensions = true\r\n }\r\n }\r\n if (this._updateLockCount) {\r\n this._changes.push(change);\r\n return\r\n }\r\n this._updateItemsCore(change);\r\n if (change.cancel) {\r\n return\r\n }\r\n this._fireChanged(change)\r\n },\r\n loadingOperationTypes: function() {\r\n var dataSource = this.dataSource();\r\n return dataSource && dataSource.loadingOperationTypes() || {}\r\n },\r\n _fireChanged: function(change) {\r\n if (this._currentOperationTypes) {\r\n change.operationTypes = this._currentOperationTypes;\r\n this._currentOperationTypes = null\r\n }\r\n deferRender(() => {\r\n this.changed.fire(change)\r\n })\r\n },\r\n isLoading: function() {\r\n return this._isLoading || this._isCustomLoading\r\n },\r\n _fireLoadingChanged: function() {\r\n this.loadingChanged.fire(this.isLoading(), this._loadingText)\r\n },\r\n _calculateAdditionalFilter: function() {\r\n return null\r\n },\r\n _applyFilter: function() {\r\n var dataSource = this._dataSource;\r\n if (dataSource) {\r\n dataSource.pageIndex(0);\r\n return this.reload().done(this.pageChanged.fire.bind(this.pageChanged))\r\n }\r\n },\r\n filter: function(filterExpr) {\r\n var dataSource = this._dataSource;\r\n var filter = dataSource && dataSource.filter();\r\n if (0 === arguments.length) {\r\n return filter\r\n }\r\n filterExpr = arguments.length > 1 ? Array.prototype.slice.call(arguments, 0) : filterExpr;\r\n if (gridCoreUtils.equalFilterParameters(filter, filterExpr)) {\r\n return\r\n }\r\n if (dataSource) {\r\n dataSource.filter(filterExpr)\r\n }\r\n this._applyFilter()\r\n },\r\n clearFilter: function(filterName) {\r\n var that = this;\r\n var columnsController = that._columnsController;\r\n var clearColumnOption = function(optionName) {\r\n var columnCount = columnsController.columnCount();\r\n for (var index = 0; index < columnCount; index++) {\r\n columnsController.columnOption(index, optionName, void 0)\r\n }\r\n };\r\n that.component.beginUpdate();\r\n if (arguments.length > 0) {\r\n switch (filterName) {\r\n case \"dataSource\":\r\n that.filter(null);\r\n break;\r\n case \"search\":\r\n that.searchByText(\"\");\r\n break;\r\n case \"header\":\r\n clearColumnOption(\"filterValues\");\r\n break;\r\n case \"row\":\r\n clearColumnOption(\"filterValue\")\r\n }\r\n } else {\r\n that.filter(null);\r\n that.searchByText(\"\");\r\n clearColumnOption(\"filterValue\");\r\n clearColumnOption(\"bufferedFilterValue\");\r\n clearColumnOption(\"filterValues\")\r\n }\r\n that.component.endUpdate()\r\n },\r\n _fireDataSourceChanged: function() {\r\n var that = this;\r\n that.changed.add((function changedHandler() {\r\n that.changed.remove(changedHandler);\r\n that.dataSourceChanged.fire()\r\n }))\r\n },\r\n _getDataSourceAdapter: noop,\r\n _createDataSourceAdapterCore: function(dataSource, remoteOperations) {\r\n var dataSourceAdapterProvider = this._getDataSourceAdapter();\r\n var dataSourceAdapter = dataSourceAdapterProvider.create(this.component);\r\n dataSourceAdapter.init(dataSource, remoteOperations);\r\n return dataSourceAdapter\r\n },\r\n isLocalStore: function(store) {\r\n store = store || this.store();\r\n return store instanceof ArrayStore\r\n },\r\n isCustomStore: function(store) {\r\n store = store || this.store();\r\n return store instanceof CustomStore\r\n },\r\n _createDataSourceAdapter: function(dataSource) {\r\n var remoteOperations = this.option(\"remoteOperations\");\r\n var store = dataSource.store();\r\n var enabledRemoteOperations = {\r\n filtering: true,\r\n sorting: true,\r\n paging: true,\r\n grouping: true,\r\n summary: true\r\n };\r\n if (remoteOperations && remoteOperations.groupPaging) {\r\n remoteOperations = extend({}, enabledRemoteOperations, remoteOperations)\r\n }\r\n if (\"auto\" === remoteOperations) {\r\n remoteOperations = this.isLocalStore(store) || this.isCustomStore(store) ? {} : {\r\n filtering: true,\r\n sorting: true,\r\n paging: true\r\n }\r\n }\r\n if (true === remoteOperations) {\r\n remoteOperations = enabledRemoteOperations\r\n }\r\n return this._createDataSourceAdapterCore(dataSource, remoteOperations)\r\n },\r\n setDataSource: function(dataSource) {\r\n var oldDataSource = this._dataSource;\r\n if (!dataSource && oldDataSource) {\r\n oldDataSource.cancelAll();\r\n oldDataSource.changed.remove(this._dataChangedHandler);\r\n oldDataSource.loadingChanged.remove(this._loadingChangedHandler);\r\n oldDataSource.loadError.remove(this._loadErrorHandler);\r\n oldDataSource.customizeStoreLoadOptions.remove(this._customizeStoreLoadOptionsHandler);\r\n oldDataSource.changing.remove(this._changingHandler);\r\n oldDataSource.dispose(this._isSharedDataSource)\r\n }\r\n if (dataSource) {\r\n dataSource = this._createDataSourceAdapter(dataSource)\r\n }\r\n this._dataSource = dataSource;\r\n if (dataSource) {\r\n this._fireDataSourceChanged();\r\n this._isLoading = !dataSource.isLoaded();\r\n this._needApplyFilter = true;\r\n this._isAllDataTypesDefined = this._columnsController.isAllDataTypesDefined();\r\n dataSource.changed.add(this._dataChangedHandler);\r\n dataSource.loadingChanged.add(this._loadingChangedHandler);\r\n dataSource.loadError.add(this._loadErrorHandler);\r\n dataSource.customizeStoreLoadOptions.add(this._customizeStoreLoadOptionsHandler);\r\n dataSource.changing.add(this._changingHandler)\r\n }\r\n },\r\n items: function() {\r\n return this._items\r\n },\r\n isEmpty: function() {\r\n return !this.items().length\r\n },\r\n pageCount: function() {\r\n return this._dataSource ? this._dataSource.pageCount() : 1\r\n },\r\n dataSource: function() {\r\n return this._dataSource\r\n },\r\n store: function() {\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.store()\r\n },\r\n loadAll: function(data) {\r\n var that = this;\r\n var d = new Deferred;\r\n var dataSource = that._dataSource;\r\n if (dataSource) {\r\n if (data) {\r\n var options = {\r\n data: data,\r\n isCustomLoading: true,\r\n storeLoadOptions: {\r\n isLoadingAll: true\r\n },\r\n loadOptions: {\r\n filter: that.getCombinedFilter(),\r\n group: dataSource.group(),\r\n sort: dataSource.sort()\r\n }\r\n };\r\n dataSource._handleDataLoaded(options);\r\n when(options.data).done((function(data) {\r\n data = that._beforeProcessItems(data);\r\n d.resolve(that._processItems(data, {\r\n changeType: \"loadingAll\"\r\n }), options.extra && options.extra.summary)\r\n })).fail(d.reject)\r\n } else if (!dataSource.isLoading()) {\r\n var loadOptions = extend({}, dataSource.loadOptions(), {\r\n isLoadingAll: true,\r\n requireTotalCount: false\r\n });\r\n dataSource.load(loadOptions).done((function(items, extra) {\r\n items = that._beforeProcessItems(items);\r\n items = that._processItems(items, {\r\n changeType: \"loadingAll\"\r\n });\r\n d.resolve(items, extra && extra.summary)\r\n })).fail(d.reject)\r\n } else {\r\n d.reject()\r\n }\r\n } else {\r\n d.resolve([])\r\n }\r\n return d\r\n },\r\n getKeyByRowIndex: function(rowIndex, byLoaded) {\r\n var item = this.items(byLoaded)[rowIndex];\r\n if (item) {\r\n return item.key\r\n }\r\n },\r\n getRowIndexByKey: function(key, byLoaded) {\r\n return gridCoreUtils.getIndexByKey(key, this.items(byLoaded))\r\n },\r\n keyOf: function(data) {\r\n var store = this.store();\r\n if (store) {\r\n return store.keyOf(data)\r\n }\r\n },\r\n byKey: function(key) {\r\n var store = this.store();\r\n var rowIndex = this.getRowIndexByKey(key);\r\n var result;\r\n if (!store) {\r\n return\r\n }\r\n if (rowIndex >= 0) {\r\n result = (new Deferred).resolve(this.items()[rowIndex].data)\r\n }\r\n return result || store.byKey(key)\r\n },\r\n key: function() {\r\n var store = this.store();\r\n if (store) {\r\n return store.key()\r\n }\r\n },\r\n getRowIndexOffset: function() {\r\n return 0\r\n },\r\n getDataByKeys: function(rowKeys) {\r\n var that = this;\r\n var result = new Deferred;\r\n var deferreds = [];\r\n var data = [];\r\n each(rowKeys, (function(index, key) {\r\n deferreds.push(that.byKey(key).done((function(keyData) {\r\n data[index] = keyData\r\n })))\r\n }));\r\n when.apply($, deferreds).always((function() {\r\n result.resolve(data)\r\n }));\r\n return result\r\n },\r\n pageIndex: function(value) {\r\n return changePaging(this, \"pageIndex\", value)\r\n },\r\n pageSize: function(value) {\r\n return changePaging(this, \"pageSize\", value)\r\n },\r\n beginCustomLoading: function(messageText) {\r\n this._isCustomLoading = true;\r\n this._loadingText = messageText || \"\";\r\n this._fireLoadingChanged()\r\n },\r\n endCustomLoading: function() {\r\n this._isCustomLoading = false;\r\n this._loadingText = void 0;\r\n this._fireLoadingChanged()\r\n },\r\n refresh: function(options) {\r\n if (true === options) {\r\n options = {\r\n reload: true,\r\n changesOnly: true\r\n }\r\n } else if (!options) {\r\n options = {\r\n lookup: true,\r\n selection: true,\r\n reload: true\r\n }\r\n }\r\n var that = this;\r\n var dataSource = that.getDataSource();\r\n var changesOnly = options.changesOnly;\r\n var d = new Deferred;\r\n var customizeLoadResult = function() {\r\n that._repaintChangesOnly = !!changesOnly\r\n };\r\n when(!options.lookup || that._columnsController.refresh()).always((function() {\r\n if (options.load || options.reload) {\r\n dataSource && dataSource.on(\"customizeLoadResult\", customizeLoadResult);\r\n when(that.reload(options.reload, changesOnly)).always((function() {\r\n dataSource && dataSource.off(\"customizeLoadResult\", customizeLoadResult);\r\n that._repaintChangesOnly = void 0\r\n })).done(d.resolve).fail(d.reject)\r\n } else {\r\n that.updateItems({\r\n repaintChangesOnly: options.changesOnly\r\n });\r\n d.resolve()\r\n }\r\n }));\r\n return d.promise()\r\n },\r\n getVisibleRows: function() {\r\n return this.items()\r\n },\r\n _disposeDataSource: function() {\r\n this.setDataSource(null)\r\n },\r\n dispose: function() {\r\n this._disposeDataSource();\r\n this.callBase.apply(this, arguments)\r\n },\r\n repaintRows: function(rowIndexes, changesOnly) {\r\n rowIndexes = Array.isArray(rowIndexes) ? rowIndexes : [rowIndexes];\r\n if (rowIndexes.length > 1 || isDefined(rowIndexes[0])) {\r\n this.updateItems({\r\n changeType: \"update\",\r\n rowIndices: rowIndexes,\r\n isFullUpdate: !changesOnly\r\n })\r\n }\r\n },\r\n skipProcessingPagingChange: function(fullName) {\r\n return this._skipProcessingPagingChange && (\"paging.pageIndex\" === fullName || \"paging.pageSize\" === fullName)\r\n },\r\n getUserState: function() {\r\n return {\r\n searchText: this.option(\"searchPanel.text\"),\r\n pageIndex: this.pageIndex(),\r\n pageSize: this.pageSize()\r\n }\r\n },\r\n getCachedStoreData: function() {\r\n return this._dataSource && this._dataSource.getCachedStoreData()\r\n }\r\n };\r\n gridCoreUtils.proxyMethod(members, \"load\");\r\n gridCoreUtils.proxyMethod(members, \"reload\");\r\n gridCoreUtils.proxyMethod(members, \"push\");\r\n gridCoreUtils.proxyMethod(members, \"itemsCount\", 0);\r\n gridCoreUtils.proxyMethod(members, \"totalItemsCount\", 0);\r\n gridCoreUtils.proxyMethod(members, \"hasKnownLastPage\", true);\r\n gridCoreUtils.proxyMethod(members, \"isLoaded\", true);\r\n gridCoreUtils.proxyMethod(members, \"totalCount\", 0);\r\n return members\r\n }())\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.grid_view.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport {\r\n deferRender,\r\n deferUpdate\r\n} from \"../../core/utils/common\";\r\nimport {\r\n hasWindow,\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isString,\r\n isDefined,\r\n isNumeric\r\n} from \"../../core/utils/type\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport * as accessibility from \"../shared/accessibility\";\r\nvar BORDERS_CLASS = \"borders\";\r\nvar TABLE_FIXED_CLASS = \"table-fixed\";\r\nvar IMPORTANT_MARGIN_CLASS = \"important-margin\";\r\nvar GRIDBASE_CONTAINER_CLASS = \"dx-gridbase-container\";\r\nvar HIDDEN_COLUMNS_WIDTH = \"adaptiveHidden\";\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 isString(width) && \"%\" === width.slice(-1)\r\n};\r\nvar isPixelWidth = function(width) {\r\n return isString(width) && \"px\" === width.slice(-2)\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 gridCoreUtils.setSelectionRange(focusedElement, selectionRange)\r\n};\r\nvar ResizingController = modules.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 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 deferUpdate(() => deferRender(() => deferUpdate(() => {\r\n that._setScrollerSpacing(that._hasHeight);\r\n that._rowsView.resize()\r\n })))\r\n } else {\r\n resizeDeferred = that.resize()\r\n }\r\n }\r\n if (changeType && \"updateSelection\" !== changeType && \"updateFocusedRow\" !== changeType && !isDelayed) {\r\n 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 _widths;\r\n var rowsView = this._rowsView;\r\n var columnHeadersView = this._columnHeadersView;\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 _setVisibleWidths: function(visibleColumns, widths) {\r\n var columnsController = this._columnsController;\r\n columnsController.beginUpdate();\r\n 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 if (!view || !view.isVisible()) {\r\n return\r\n }\r\n var $rowsTables = this._rowsView.getTableElements();\r\n var $viewTables = view.getTableElements();\r\n each($rowsTables, (index, tableElement) => {\r\n var $tableBody;\r\n var $rowsTable = $(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 $rowsTable = this._rowsView.getTableElement();\r\n var $rowsFixedTable = this._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 this._toggleBestFitModeForView(this._columnHeadersView, \"dx-header\", isBestFit);\r\n this._toggleBestFitModeForView(this._footerView, \"dx-footer\", isBestFit);\r\n if (this._needStretch()) {\r\n $rowsTable.get(0).style.width = isBestFit ? \"auto\" : \"\"\r\n }\r\n if (browser.msie && 11 === parseInt(browser.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 },\r\n _synchronizeColumns: function() {\r\n var columnsController = this._columnsController;\r\n var visibleColumns = columnsController.getVisibleColumns();\r\n var columnAutoWidth = this.option(\"columnAutoWidth\");\r\n var needBestFit = this._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 !needBestFit && each(visibleColumns, (function(index, column) {\r\n if (\"auto\" === column.width) {\r\n needBestFit = true;\r\n return false\r\n }\r\n }));\r\n each(visibleColumns, (function(index, column) {\r\n if (column.minWidth) {\r\n hasMinWidth = true;\r\n return false\r\n }\r\n }));\r\n this._setVisibleWidths(visibleColumns, []);\r\n if (needBestFit) {\r\n focusedElement = domAdapter.getActiveElement();\r\n selectionRange = gridCoreUtils.getSelectionRange(focusedElement);\r\n this._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 }\r\n deferUpdate(() => {\r\n if (needBestFit) {\r\n resultWidths = this._getBestFitWidths();\r\n 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 if (hasMinWidth) {\r\n resultWidths = this._getBestFitWidths()\r\n }\r\n each(visibleColumns, (function(index) {\r\n var width = this.width;\r\n if (\"auto\" !== width) {\r\n if (isDefined(width)) {\r\n resultWidths[index] = isNumeric(width) || isPixelWidth(width) ? parseFloat(width) : width\r\n } else if (!columnAutoWidth) {\r\n resultWidths[index] = void 0\r\n }\r\n }\r\n }));\r\n if (resetBestFitMode) {\r\n this._toggleBestFitMode(false);\r\n resetBestFitMode = false;\r\n if (focusedElement && focusedElement !== domAdapter.getActiveElement()) {\r\n var isFocusOutsideWindow = getBoundingRect(focusedElement).bottom < 0;\r\n if (!isFocusOutsideWindow) {\r\n if (browser.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 = this._correctColumnWidths(resultWidths, visibleColumns);\r\n if (columnAutoWidth) {\r\n ! function() {\r\n var expandColumnWidth;\r\n each(visibleColumns, (function(index, column) {\r\n if (\"groupExpand\" === column.type) {\r\n expandColumnWidth = resultWidths[index]\r\n }\r\n }));\r\n 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 if (this._needStretch()) {\r\n this._processStretch(resultWidths, visibleColumns)\r\n }\r\n }\r\n deferRender(() => {\r\n if (needBestFit || isColumnWidthsCorrected) {\r\n this._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._columnsController.getVisibleColumns().some(c => \"auto\" === c.width && !c.command)\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 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 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 (!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 = gridCoreUtils.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 }\r\n 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((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((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 $groupElement;\r\n var width;\r\n var $rootElement = $(rootElement);\r\n var importantMarginClass = this.addWidgetPrefix(IMPORTANT_MARGIN_CLASS);\r\n if (void 0 === this._hasHeight && $rootElement && $rootElement.is(\":visible\") && $rootElement.width()) {\r\n $groupElement = $rootElement.children(\".\" + this.getWidgetContainerClass());\r\n if ($groupElement.length) {\r\n $groupElement.detach()\r\n }\r\n this._hasHeight = !!getContainerHeight($rootElement);\r\n width = $rootElement.width();\r\n $rootElement.addClass(importantMarginClass);\r\n this._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;\r\n when(prevResult).always((function() {\r\n deferRender((function() {\r\n if (that._dataController.isLoaded()) {\r\n that._synchronizeColumns()\r\n }\r\n that._resetGroupElementHeight();\r\n deferUpdate((function() {\r\n deferRender((function() {\r\n 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 === 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 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 if (true === this.option(\"scrolling.useNative\")) {\r\n deferRender(() => {\r\n deferUpdate(() => {\r\n this._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 = $(\"
\").height(height).appendTo($rootElement);\r\n that._hasHeight = !!$testDiv.height();\r\n $testDiv.remove()\r\n }\r\n deferRender((function() {\r\n rowsView.height(null, hasHeight);\r\n if (maxHeightHappened && !isMaxHeightApplied) {\r\n $(groupElement).css(\"height\", maxHeight)\r\n }\r\n if (!dataController.isLoaded()) {\r\n rowsView.setLoading(dataController.isLoading());\r\n return\r\n }\r\n deferUpdate((function() {\r\n that._updateLastSizes($rootElement);\r\n that._setScrollerSpacing(hasHeight);\r\n 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 = 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 \"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 this._dataController = this.getController(\"data\");\r\n this._columnsController = this.getController(\"columns\");\r\n this._columnHeadersView = this.getView(\"columnHeadersView\");\r\n this._footerView = this.getView(\"footerView\");\r\n this._rowsView = this.getView(\"rowsView\")\r\n }\r\n});\r\nvar SynchronizeScrollingController = modules.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 = modules.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 this._resizingController = this.getController(\"resizing\");\r\n this._dataController = this.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 if (isDefined(this._groupElement) && \"showBorders\" === args.name) {\r\n this._groupElement.toggleClass(this.addWidgetPrefix(BORDERS_CLASS), !!args.value);\r\n args.handled = true\r\n } else {\r\n this.callBase(args)\r\n }\r\n },\r\n _renderViews: function($groupElement) {\r\n var that = this;\r\n 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 isFirstRender = !this._groupElement;\r\n var $groupElement = this._groupElement || $(\"
\").addClass(this.getWidgetContainerClass());\r\n $groupElement.addClass(GRIDBASE_CONTAINER_CLASS);\r\n $groupElement.toggleClass(this.addWidgetPrefix(BORDERS_CLASS), !!this.option(\"showBorders\"));\r\n this.setAria(\"role\", \"presentation\", $rootElement);\r\n this.component.setAria({\r\n role: this._getTableRoleName(),\r\n label: messageLocalization.format(this._getWidgetAriaLabel())\r\n }, $groupElement);\r\n this._rootElement = $rootElement || this._rootElement;\r\n if (isFirstRender) {\r\n this._groupElement = $groupElement;\r\n hasWindow() && this.getController(\"resizing\").updateSize($rootElement);\r\n $groupElement.appendTo($rootElement)\r\n }\r\n this._renderViews($groupElement)\r\n },\r\n update: function() {\r\n var $rootElement = this._rootElement;\r\n var $groupElement = this._groupElement;\r\n var resizingController = this.getController(\"resizing\");\r\n if ($rootElement && $groupElement) {\r\n resizingController.resize();\r\n if (this._dataController.isLoaded()) {\r\n this._resizingController.fireContentReadyAction()\r\n }\r\n }\r\n }\r\n});\r\nexport var gridViewModule = {\r\n defaultOptions: function() {\r\n return {\r\n showBorders: false,\r\n renderAsync: 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 VIEW_NAMES: VIEW_NAMES\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.sorting_mixin.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport $ from \"../../core/renderer\";\r\nvar SORT_CLASS = \"dx-sort\";\r\nvar SORT_NONE_CLASS = \"dx-sort-none\";\r\nvar SORTUP_CLASS = \"dx-sort-up\";\r\nvar SORTDOWN_CLASS = \"dx-sort-down\";\r\nvar SORT_INDEX_CLASS = \"dx-sort-index\";\r\nvar SORT_INDEX_ICON_CLASS = \"dx-sort-index-icon\";\r\nvar HEADERS_ACTION_CLASS = \"action\";\r\nexport default {\r\n _applyColumnState: function(options) {\r\n var ariaSortState;\r\n var $sortIndicator;\r\n var sortingMode = this.option(\"sorting.mode\");\r\n var rootElement = options.rootElement;\r\n var column = options.column;\r\n var $indicatorsContainer = this._getIndicatorContainer(rootElement);\r\n if (\"sort\" === options.name) {\r\n rootElement.find(\".\" + SORT_CLASS).remove();\r\n !$indicatorsContainer.children().length && $indicatorsContainer.remove();\r\n var isSortingAllowed = (\"single\" === sortingMode || \"multiple\" === sortingMode) && column.allowSorting;\r\n if (!isDefined(column.groupIndex) && (isSortingAllowed || isDefined(column.sortOrder))) {\r\n ariaSortState = \"asc\" === column.sortOrder ? \"ascending\" : \"descending\";\r\n $sortIndicator = this.callBase(options).toggleClass(SORTUP_CLASS, \"asc\" === column.sortOrder).toggleClass(SORTDOWN_CLASS, \"desc\" === column.sortOrder);\r\n var hasSeveralSortIndexes = this.getController && !!this.getController(\"columns\").columnOption(\"sortIndex:1\");\r\n if (hasSeveralSortIndexes && this.option(\"sorting.showSortIndexes\") && column.sortIndex >= 0) {\r\n $(\"\").addClass(SORT_INDEX_ICON_CLASS).text(column.sortIndex + 1).appendTo($sortIndicator);\r\n $sortIndicator.addClass(SORT_INDEX_CLASS)\r\n }\r\n options.rootElement.addClass(this.addWidgetPrefix(HEADERS_ACTION_CLASS))\r\n }\r\n if (!isDefined(column.sortOrder)) {\r\n this.setAria(\"sort\", \"none\", rootElement)\r\n } else {\r\n this.setAria(\"sort\", ariaSortState, rootElement)\r\n }\r\n return $sortIndicator\r\n } else {\r\n return this.callBase(options)\r\n }\r\n },\r\n _getIndicatorClassName: function(name) {\r\n if (\"sort\" === name) {\r\n return SORT_CLASS\r\n } else if (\"sortIndex\" === name) {\r\n return SORT_INDEX_ICON_CLASS\r\n }\r\n return this.callBase(name)\r\n },\r\n _renderIndicator: function(options) {\r\n var column = options.column;\r\n var $container = options.container;\r\n var $indicator = options.indicator;\r\n if (\"sort\" === options.name) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n if (!isDefined(column.sortOrder)) {\r\n $indicator && $indicator.addClass(SORT_NONE_CLASS)\r\n }\r\n if ($container.children().length && (!rtlEnabled && \"left\" === options.columnAlignment || rtlEnabled && \"right\" === options.columnAlignment)) {\r\n $container.prepend($indicator);\r\n return\r\n }\r\n }\r\n this.callBase(options)\r\n },\r\n _updateIndicator: function($cell, column, indicatorName) {\r\n if (\"sort\" === indicatorName && isDefined(column.groupIndex)) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _getIndicatorElements: function($cell, returnAll) {\r\n var $indicatorElements = this.callBase($cell);\r\n return returnAll ? $indicatorElements : $indicatorElements && $indicatorElements.not(\".\" + SORT_NONE_CLASS)\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/menu.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Menu from \"./menu/ui.menu\";\r\nexport default Menu;\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.master_detail.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport {\r\n grep\r\n} from \"../../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../../core/utils/deferred\";\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\nexport var masterDetailModule = {\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: gridCoreUtils.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 initMasterDetail(this);\r\n this.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 = gridCoreUtils.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 = gridCoreUtils.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).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 each(options.visibleColumns, (function(index, column) {\r\n if (\"expand\" === column.command && !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 = grep(that._expandedItems, (function(item) {\r\n return item.visible\r\n }))\r\n }\r\n each(items, (function(index, item) {\r\n result.push(item);\r\n var expandIndex = gridCoreUtils.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 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.template\":\r\n initMasterDetail(this);\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(this)\r\n }\r\n }\r\n this.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 $masterDetailRow = $element.closest(\".\" + MASTER_DETAIL_ROW_CLASS);\r\n if ($masterDetailRow.length) {\r\n when(this._updateMasterDataGrid($masterDetailRow, $element)).done(() => {\r\n this._updateParentDataGrids($masterDetailRow.parent())\r\n })\r\n }\r\n },\r\n _updateMasterDataGrid: function($masterDetailRow, $detailElement) {\r\n var masterRowOptions = $($masterDetailRow).data(\"options\");\r\n var masterDataGrid = $($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 $rows = $(masterDataGrid.getRowElement(masterRowIndex));\r\n var $tables = $(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(() => {\r\n var isDetailHorizontalScrollCanBeShown = this.option(\"columnAutoWidth\") && true === masterDataGrid.option(\"scrolling.useNative\");\r\n var isDetailGridWidthChanged = isDetailHorizontalScrollCanBeShown && detailElementWidth !== $detailElement.width();\r\n if (isDetailHorizontalScrollCanBeShown && isDetailGridWidthChanged) {\r\n this.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: {\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 (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\n * DevExtreme (esm/ui/grid_core/ui.grid_core.column_headers.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n ColumnsView\r\n} from \"./ui.grid_core.columns_view\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n registerKeyboardAction\r\n} from \"./ui.grid_core.accessibility\";\r\nvar CELL_CONTENT_CLASS = \"text-content\";\r\nvar HEADERS_CLASS = \"headers\";\r\nvar NOWRAP_CLASS = \"nowrap\";\r\nvar ROW_CLASS_SELECTOR = \".dx-row\";\r\nvar HEADER_ROW_CLASS = \"dx-header-row\";\r\nvar COLUMN_LINES_CLASS = \"dx-column-lines\";\r\nvar CONTEXT_MENU_SORT_ASC_ICON = \"context-menu-sort-asc\";\r\nvar CONTEXT_MENU_SORT_DESC_ICON = \"context-menu-sort-desc\";\r\nvar CONTEXT_MENU_SORT_NONE_ICON = \"context-menu-sort-none\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar VISIBILITY_HIDDEN_CLASS = \"dx-visibility-hidden\";\r\nvar TEXT_CONTENT_ALIGNMENT_CLASS_PREFIX = \"dx-text-content-alignment-\";\r\nvar SORT_INDICATOR_CLASS = \"dx-sort-indicator\";\r\nvar SORT_INDEX_INDICATOR_CLASS = \"dx-sort-index-indicator\";\r\nvar HEADER_FILTER_CLASS_SELECTOR = \".dx-header-filter\";\r\nvar HEADER_FILTER_INDICATOR_CLASS = \"dx-header-filter-indicator\";\r\nvar MULTI_ROW_HEADER_CLASS = \"dx-header-multi-row\";\r\nexport var columnHeadersModule = {\r\n defaultOptions: function() {\r\n return {\r\n showColumnHeaders: true,\r\n cellHintEnabled: true\r\n }\r\n },\r\n views: {\r\n columnHeadersView: ColumnsView.inherit(function() {\r\n var createCellContent = function(that, $cell, options) {\r\n var $cellContent = $(\"
\").addClass(that.addWidgetPrefix(CELL_CONTENT_CLASS));\r\n that.setAria(\"role\", \"presentation\", $cellContent);\r\n addCssClassesToCellContent(that, $cell, options.column, $cellContent);\r\n var showColumnLines = that.option(\"showColumnLines\");\r\n var contentAlignment = that.getController(\"columns\").getHeaderContentAlignment(options.column.alignment);\r\n return $cellContent[showColumnLines || \"right\" === contentAlignment ? \"appendTo\" : \"prependTo\"]($cell)\r\n };\r\n\r\n function addCssClassesToCellContent(that, $cell, column, $cellContent) {\r\n var $indicatorElements = that._getIndicatorElements($cell, true);\r\n var $visibleIndicatorElements = that._getIndicatorElements($cell);\r\n var indicatorCount = $indicatorElements && $indicatorElements.length;\r\n var columnAlignment = that._getColumnAlignment(column.alignment);\r\n var sortIndicatorClassName = \".\".concat(that._getIndicatorClassName(\"sort\"));\r\n var sortIndexIndicatorClassName = \".\".concat(that._getIndicatorClassName(\"sortIndex\"));\r\n var $sortIndicator = $visibleIndicatorElements.filter(sortIndicatorClassName);\r\n var $sortIndexIndicator = $visibleIndicatorElements.children().filter(sortIndexIndicatorClassName);\r\n $cellContent = $cellContent || $cell.children(\".\" + that.addWidgetPrefix(CELL_CONTENT_CLASS));\r\n $cellContent.toggleClass(TEXT_CONTENT_ALIGNMENT_CLASS_PREFIX + columnAlignment, indicatorCount > 0).toggleClass(TEXT_CONTENT_ALIGNMENT_CLASS_PREFIX + (\"left\" === columnAlignment ? \"right\" : \"left\"), indicatorCount > 0 && \"center\" === column.alignment).toggleClass(SORT_INDICATOR_CLASS, !!$sortIndicator.length).toggleClass(SORT_INDEX_INDICATOR_CLASS, !!$sortIndexIndicator.length).toggleClass(HEADER_FILTER_INDICATOR_CLASS, !!$visibleIndicatorElements.filter(\".\" + that._getIndicatorClassName(\"headerFilter\")).length)\r\n }\r\n return {\r\n _createTable: function() {\r\n var $table = this.callBase.apply(this, arguments);\r\n eventsEngine.on($table, \"mousedown selectstart\", this.createAction((function(e) {\r\n var event = e.event;\r\n if (event.shiftKey) {\r\n event.preventDefault()\r\n }\r\n })));\r\n return $table\r\n },\r\n _isLegacyKeyboardNavigation() {\r\n return this.option(\"useLegacyKeyboardNavigation\")\r\n },\r\n _getDefaultTemplate: function(column) {\r\n var that = this;\r\n return function($container, options) {\r\n var $content = column.command ? $container : createCellContent(that, $container, options);\r\n var caption = \"expand\" !== column.command && column.caption;\r\n if (caption) {\r\n $content.text(caption)\r\n } else if (column.command) {\r\n $container.html(\" \")\r\n }\r\n }\r\n },\r\n _getHeaderTemplate: function(column) {\r\n return column.headerCellTemplate || {\r\n allowRenderToDetachedContainer: true,\r\n render: this._getDefaultTemplate(column)\r\n }\r\n },\r\n _processTemplate: function(template, options) {\r\n var that = this;\r\n var resultTemplate;\r\n var column = options.column;\r\n var renderingTemplate = that.callBase(template);\r\n if (\"header\" === options.rowType && renderingTemplate && column.headerCellTemplate && !column.command) {\r\n resultTemplate = {\r\n render: function(options) {\r\n var $content = createCellContent(that, options.container, options.model);\r\n renderingTemplate.render(extend({}, options, {\r\n container: $content\r\n }))\r\n }\r\n }\r\n } else {\r\n resultTemplate = renderingTemplate\r\n }\r\n return resultTemplate\r\n },\r\n _handleDataChanged: function(e) {\r\n if (\"refresh\" !== e.changeType) {\r\n return\r\n }\r\n if (this._isGroupingChanged || this._requireReady) {\r\n this._isGroupingChanged = false;\r\n this.render()\r\n }\r\n },\r\n _renderCell: function($row, options) {\r\n var $cell = this.callBase($row, options);\r\n if (\"header\" === options.row.rowType) {\r\n $cell.addClass(CELL_FOCUS_DISABLED_CLASS);\r\n if (!this._isLegacyKeyboardNavigation()) {\r\n if (options.column && !options.column.type) {\r\n $cell.attr(\"tabindex\", this.option(\"tabindex\") || 0)\r\n }\r\n }\r\n }\r\n return $cell\r\n },\r\n _setCellAriaAttributes: function($cell, cellOptions) {\r\n this.callBase($cell, cellOptions);\r\n if (\"header\" === cellOptions.rowType) {\r\n this.setAria(\"role\", \"columnheader\", $cell);\r\n if (cellOptions.column && !cellOptions.column.command && !cellOptions.column.isBand) {\r\n $cell.attr(\"id\", cellOptions.column.headerId);\r\n this.setAria(\"label\", messageLocalization.format(\"dxDataGrid-ariaColumn\") + \" \" + cellOptions.column.caption, $cell)\r\n }\r\n }\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row).toggleClass(COLUMN_LINES_CLASS, this.option(\"showColumnLines\"));\r\n if (\"header\" === row.rowType) {\r\n $row.addClass(HEADER_ROW_CLASS);\r\n if (!this._isLegacyKeyboardNavigation()) {\r\n registerKeyboardAction(\"columnHeaders\", this, $row, \"td\", this._handleActionKeyDown.bind(this))\r\n }\r\n }\r\n return $row\r\n },\r\n _handleActionKeyDown: function(args) {\r\n var event = args.event;\r\n var $target = $(event.target);\r\n this._lastActionElement = event.target;\r\n if ($target.is(HEADER_FILTER_CLASS_SELECTOR)) {\r\n var headerFilterController = this.getController(\"headerFilter\");\r\n var $column = $target.closest(\"td\");\r\n var columnIndex = this.getColumnIndexByElement($column);\r\n if (columnIndex >= 0) {\r\n headerFilterController.showHeaderFilterMenu(columnIndex, false)\r\n }\r\n } else {\r\n var $row = $target.closest(ROW_CLASS_SELECTOR);\r\n this._processHeaderAction(event, $row)\r\n }\r\n event.preventDefault()\r\n },\r\n _renderCore: function() {\r\n var that = this;\r\n var $container = that.element();\r\n if (that._tableElement && !that._dataController.isLoaded() && !that._hasRowElements) {\r\n return\r\n }\r\n $container.addClass(that.addWidgetPrefix(HEADERS_CLASS)).toggleClass(that.addWidgetPrefix(NOWRAP_CLASS), !that.option(\"wordWrapEnabled\")).empty();\r\n that.setAria(\"role\", \"presentation\", $container);\r\n that._updateContent(that._renderTable());\r\n if (that.getRowCount() > 1) {\r\n $container.addClass(MULTI_ROW_HEADER_CLASS)\r\n }\r\n that.callBase.apply(that, arguments)\r\n },\r\n _renderRows: function() {\r\n var that = this;\r\n if (that._dataController.isLoaded() || that._hasRowElements) {\r\n that.callBase.apply(that, arguments);\r\n that._hasRowElements = true\r\n }\r\n },\r\n _getRowVisibleColumns: function(rowIndex) {\r\n return this._columnsController.getVisibleColumns(rowIndex)\r\n },\r\n _renderRow: function($table, options) {\r\n options.columns = this._getRowVisibleColumns(options.row.rowIndex);\r\n this.callBase($table, options)\r\n },\r\n _createCell: function(options) {\r\n var column = options.column;\r\n var $cellElement = this.callBase.apply(this, arguments);\r\n column.rowspan > 1 && \"header\" === options.rowType && $cellElement.attr(\"rowSpan\", column.rowspan);\r\n return $cellElement\r\n },\r\n _getRows: function() {\r\n var result = [];\r\n var rowCount = this.getRowCount();\r\n if (this.option(\"showColumnHeaders\")) {\r\n for (var i = 0; i < rowCount; i++) {\r\n result.push({\r\n rowType: \"header\",\r\n rowIndex: i\r\n })\r\n }\r\n }\r\n return result\r\n },\r\n _getCellTemplate: function(options) {\r\n if (\"header\" === options.rowType) {\r\n return this._getHeaderTemplate(options.column)\r\n }\r\n },\r\n _columnOptionChanged: function(e) {\r\n var changeTypes = e.changeTypes;\r\n var optionNames = e.optionNames;\r\n if (changeTypes.grouping) {\r\n this._isGroupingChanged = true;\r\n return\r\n }\r\n this.callBase(e);\r\n if (optionNames.width || optionNames.visible) {\r\n this.resizeCompleted.fire()\r\n }\r\n },\r\n _isElementVisible: function(elementOptions) {\r\n return elementOptions && elementOptions.visible\r\n },\r\n _alignCaptionByCenter: function($cell) {\r\n var $indicatorsContainer = this._getIndicatorContainer($cell, true);\r\n if ($indicatorsContainer && $indicatorsContainer.length) {\r\n $indicatorsContainer.filter(\".\" + VISIBILITY_HIDDEN_CLASS).remove();\r\n $indicatorsContainer = this._getIndicatorContainer($cell);\r\n $indicatorsContainer.clone().addClass(VISIBILITY_HIDDEN_CLASS).css(\"float\", \"\").insertBefore($cell.children(\".\" + this.addWidgetPrefix(CELL_CONTENT_CLASS)))\r\n }\r\n },\r\n _updateCell: function($cell, options) {\r\n if (\"header\" === options.rowType && \"center\" === options.column.alignment) {\r\n this._alignCaptionByCenter($cell)\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _updateIndicator: function($cell, column, indicatorName) {\r\n var $indicatorElement = this.callBase.apply(this, arguments);\r\n if (\"center\" === column.alignment) {\r\n this._alignCaptionByCenter($cell)\r\n }\r\n addCssClassesToCellContent(this, $cell, column);\r\n return $indicatorElement\r\n },\r\n _getIndicatorContainer: function($cell, returnAll) {\r\n var $indicatorsContainer = this.callBase($cell);\r\n return returnAll ? $indicatorsContainer : $indicatorsContainer.filter(\":not(.\" + VISIBILITY_HIDDEN_CLASS + \")\")\r\n },\r\n _isSortableElement: function() {\r\n return true\r\n },\r\n getHeadersRowHeight: function() {\r\n var $tableElement = this.getTableElement();\r\n var $headerRows = $tableElement && $tableElement.find(\".\" + HEADER_ROW_CLASS);\r\n return $headerRows && $headerRows.toArray().reduce((function(sum, headerRow) {\r\n return sum + $(headerRow).height()\r\n }), 0) || 0\r\n },\r\n getHeaderElement: function(index) {\r\n var columnElements = this.getColumnElements();\r\n return columnElements && columnElements.eq(index)\r\n },\r\n getColumnElements: function(index, bandColumnIndex) {\r\n var that = this;\r\n var $cellElement;\r\n var columnsController = that._columnsController;\r\n var rowCount = that.getRowCount();\r\n if (that.option(\"showColumnHeaders\")) {\r\n if (rowCount > 1 && (!isDefined(index) || isDefined(bandColumnIndex))) {\r\n var result = [];\r\n var visibleColumns = isDefined(bandColumnIndex) ? columnsController.getChildrenByBandColumn(bandColumnIndex, true) : columnsController.getVisibleColumns();\r\n each(visibleColumns, (function(_, column) {\r\n var rowIndex = isDefined(index) ? index : columnsController.getRowIndex(column.index);\r\n $cellElement = that._getCellElement(rowIndex, columnsController.getVisibleIndex(column.index, rowIndex));\r\n $cellElement && result.push($cellElement.get(0))\r\n }));\r\n return $(result)\r\n } else if (!index || index < rowCount) {\r\n return that.getCellElements(index || 0)\r\n }\r\n }\r\n },\r\n getColumnIndexByElement: function($cell) {\r\n var cellIndex = this.getCellIndex($cell);\r\n var $row = $cell.closest(\".dx-row\");\r\n var rowIndex = $row[0].rowIndex;\r\n var column = this.getColumns(rowIndex)[cellIndex];\r\n return column ? column.index : -1\r\n },\r\n getVisibleColumnIndex: function(columnIndex, rowIndex) {\r\n var column = this.getColumns()[columnIndex];\r\n return column ? this._columnsController.getVisibleIndex(column.index, rowIndex) : -1\r\n },\r\n getColumnWidths: function() {\r\n var $columnElements = this.getColumnElements();\r\n if ($columnElements && $columnElements.length) {\r\n return this._getWidths($columnElements)\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n allowDragging: function(column, sourceLocation, draggingPanels) {\r\n var i;\r\n var draggableColumnCount = 0;\r\n var rowIndex = column && this._columnsController.getRowIndex(column.index);\r\n var columns = this.getColumns(0 === rowIndex ? 0 : null);\r\n var canHideColumn = (null === column || void 0 === column ? void 0 : column.allowHiding) && columns.length > 1;\r\n var allowDrag = function(column) {\r\n return column.allowReordering || column.allowGrouping || column.allowHiding\r\n };\r\n for (i = 0; i < columns.length; i++) {\r\n if (allowDrag(columns[i])) {\r\n draggableColumnCount++\r\n }\r\n }\r\n if (draggableColumnCount <= 1 && !canHideColumn) {\r\n return false\r\n } else if (!draggingPanels) {\r\n return (this.option(\"allowColumnReordering\") || this._columnsController.isColumnOptionUsed(\"allowReordering\")) && column && column.allowReordering\r\n }\r\n for (i = 0; i < draggingPanels.length; i++) {\r\n var draggingPanel = draggingPanels[i];\r\n if (draggingPanel && draggingPanel.allowDragging(column, sourceLocation)) {\r\n return true\r\n }\r\n }\r\n return false\r\n },\r\n getBoundingRect: function() {\r\n var $columnElements = this.getColumnElements();\r\n if ($columnElements && $columnElements.length) {\r\n var offset = this.getTableElement().offset();\r\n return {\r\n top: offset.top\r\n }\r\n }\r\n return null\r\n },\r\n getName: function() {\r\n return \"headers\"\r\n },\r\n getColumnCount: function() {\r\n var $columnElements = this.getColumnElements();\r\n return $columnElements ? $columnElements.length : 0\r\n },\r\n isVisible: function() {\r\n return this.option(\"showColumnHeaders\")\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"showColumnHeaders\":\r\n case \"wordWrapEnabled\":\r\n case \"showColumnLines\":\r\n this._invalidate(true, true);\r\n args.handled = true;\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n getHeight: function() {\r\n return this.getElementHeight()\r\n },\r\n getContextMenuItems: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n if (options.row && (\"header\" === options.row.rowType || \"detailAdaptive\" === options.row.rowType)) {\r\n var sortingOptions = that.option(\"sorting\");\r\n if (sortingOptions && \"none\" !== sortingOptions.mode && column && column.allowSorting) {\r\n var onItemClick = function(params) {\r\n setTimeout((function() {\r\n that._columnsController.changeSortOrder(column.index, params.itemData.value)\r\n }))\r\n };\r\n return [{\r\n text: sortingOptions.ascendingText,\r\n value: \"asc\",\r\n disabled: \"asc\" === column.sortOrder,\r\n icon: CONTEXT_MENU_SORT_ASC_ICON,\r\n onItemClick: onItemClick\r\n }, {\r\n text: sortingOptions.descendingText,\r\n value: \"desc\",\r\n disabled: \"desc\" === column.sortOrder,\r\n icon: CONTEXT_MENU_SORT_DESC_ICON,\r\n onItemClick: onItemClick\r\n }, {\r\n text: sortingOptions.clearText,\r\n value: \"none\",\r\n disabled: !column.sortOrder,\r\n icon: CONTEXT_MENU_SORT_NONE_ICON,\r\n onItemClick: onItemClick\r\n }]\r\n }\r\n }\r\n },\r\n getRowCount: function() {\r\n return this._columnsController && this._columnsController.getRowCount()\r\n },\r\n setRowsOpacity: function(columnIndex, value, rowIndex) {\r\n var that = this;\r\n var i;\r\n var columnElements;\r\n var rowCount = that.getRowCount();\r\n var columns = that._columnsController.getColumns();\r\n var column = columns && columns[columnIndex];\r\n var columnID = column && column.isBand && column.index;\r\n var setColumnOpacity = function(index, column) {\r\n if (column.ownerBand === columnID) {\r\n columnElements.eq(index).css({\r\n opacity: value\r\n });\r\n if (column.isBand) {\r\n that.setRowsOpacity(column.index, value, i + 1)\r\n }\r\n }\r\n };\r\n if (isDefined(columnID)) {\r\n rowIndex = rowIndex || 0;\r\n for (i = rowIndex; i < rowCount; i++) {\r\n columnElements = that.getCellElements(i);\r\n each(that.getColumns(i), setColumnOpacity)\r\n }\r\n }\r\n }\r\n }\r\n }())\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/filter_builder/between.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nvar FILTER_BUILDER_RANGE_CLASS = \"dx-filterbuilder-range\";\r\nvar FILTER_BUILDER_RANGE_START_CLASS = FILTER_BUILDER_RANGE_CLASS + \"-start\";\r\nvar FILTER_BUILDER_RANGE_END_CLASS = FILTER_BUILDER_RANGE_CLASS + \"-end\";\r\nvar FILTER_BUILDER_RANGE_SEPARATOR_CLASS = FILTER_BUILDER_RANGE_CLASS + \"-separator\";\r\nvar SEPARATOR = \"\\u2013\";\r\n\r\nfunction editorTemplate(conditionInfo, container) {\r\n var $editorStart = $(\"
\").addClass(FILTER_BUILDER_RANGE_START_CLASS);\r\n var $editorEnd = $(\"
\").addClass(FILTER_BUILDER_RANGE_END_CLASS);\r\n var values = conditionInfo.value || [];\r\n var getStartValue = function(values) {\r\n return values && values.length > 0 ? values[0] : null\r\n };\r\n var getEndValue = function(values) {\r\n return values && 2 === values.length ? values[1] : null\r\n };\r\n container.append($editorStart);\r\n container.append($(\"\").addClass(FILTER_BUILDER_RANGE_SEPARATOR_CLASS).text(SEPARATOR));\r\n container.append($editorEnd);\r\n container.addClass(FILTER_BUILDER_RANGE_CLASS);\r\n this._editorFactory.createEditor.call(this, $editorStart, extend({}, conditionInfo.field, conditionInfo, {\r\n value: getStartValue(values),\r\n parentType: \"filterBuilder\",\r\n setValue: function(value) {\r\n values = [value, getEndValue(values)];\r\n conditionInfo.setValue(values)\r\n }\r\n }));\r\n this._editorFactory.createEditor.call(this, $editorEnd, extend({}, conditionInfo.field, conditionInfo, {\r\n value: getEndValue(values),\r\n parentType: \"filterBuilder\",\r\n setValue: function(value) {\r\n values = [getStartValue(values), value];\r\n conditionInfo.setValue(values)\r\n }\r\n }))\r\n}\r\nexport function getConfig(caption, context) {\r\n return {\r\n name: \"between\",\r\n caption: caption,\r\n icon: \"range\",\r\n valueSeparator: SEPARATOR,\r\n dataTypes: [\"number\", \"date\", \"datetime\"],\r\n editorTemplate: editorTemplate.bind(context),\r\n notForLookup: true\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/filter_builder/ui.filter_operations_dictionary.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar OPERATION_ICONS = {\r\n \"=\": \"equal\",\r\n \"<>\": \"notequal\",\r\n \"<\": \"less\",\r\n \"<=\": \"lessorequal\",\r\n \">\": \"greater\",\r\n \">=\": \"greaterorequal\",\r\n notcontains: \"doesnotcontain\",\r\n contains: \"contains\",\r\n startswith: \"startswith\",\r\n endswith: \"endswith\",\r\n isblank: \"isblank\",\r\n isnotblank: \"isnotblank\"\r\n};\r\nvar OPERATION_NAME = {\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 isblank: \"isBlank\",\r\n isnotblank: \"isNotBlank\",\r\n between: \"between\"\r\n};\r\nexport default {\r\n getIconByFilterOperation: function(filterOperation) {\r\n return OPERATION_ICONS[filterOperation]\r\n },\r\n getNameByFilterOperation: function(filterOperation) {\r\n return OPERATION_NAME[filterOperation]\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/filter_builder/utils.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n errors as dataErrors\r\n} from \"../../data/errors\";\r\nimport {\r\n isDefined,\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport filterUtils from \"../shared/filtering\";\r\nimport formatHelper from \"../../format_helper\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n captionize\r\n} from \"../../core/utils/inflector\";\r\nimport {\r\n getConfig\r\n} from \"./between\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n DataSource\r\n} from \"../../data/data_source/data_source\";\r\nimport filterOperationsDictionary from \"./ui.filter_operations_dictionary\";\r\nvar DEFAULT_DATA_TYPE = \"string\";\r\nvar EMPTY_MENU_ICON = \"icon-none\";\r\nvar AND_GROUP_OPERATION = \"and\";\r\nvar EQUAL_OPERATION = \"=\";\r\nvar NOT_EQUAL_OPERATION = \"<>\";\r\nvar DATATYPE_OPERATIONS = {\r\n number: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"isblank\", \"isnotblank\"],\r\n string: [\"contains\", \"notcontains\", \"startswith\", \"endswith\", \"=\", \"<>\", \"isblank\", \"isnotblank\"],\r\n date: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"isblank\", \"isnotblank\"],\r\n datetime: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"isblank\", \"isnotblank\"],\r\n boolean: [\"=\", \"<>\", \"isblank\", \"isnotblank\"],\r\n object: [\"isblank\", \"isnotblank\"]\r\n};\r\nvar DEFAULT_FORMAT = {\r\n date: \"shortDate\",\r\n datetime: \"shortDateShortTime\"\r\n};\r\nvar LOOKUP_OPERATIONS = [\"=\", \"<>\", \"isblank\", \"isnotblank\"];\r\nvar AVAILABLE_FIELD_PROPERTIES = [\"caption\", \"customizeText\", \"dataField\", \"dataType\", \"editorTemplate\", \"falseText\", \"editorOptions\", \"filterOperations\", \"format\", \"lookup\", \"trueText\", \"calculateFilterExpression\", \"name\"];\r\nvar FILTER_BUILDER_CLASS = \"dx-filterbuilder\";\r\nvar FILTER_BUILDER_ITEM_TEXT_CLASS = FILTER_BUILDER_CLASS + \"-text\";\r\nvar FILTER_BUILDER_ITEM_TEXT_PART_CLASS = FILTER_BUILDER_ITEM_TEXT_CLASS + \"-part\";\r\nvar FILTER_BUILDER_ITEM_TEXT_SEPARATOR_CLASS = FILTER_BUILDER_ITEM_TEXT_CLASS + \"-separator\";\r\nvar FILTER_BUILDER_ITEM_TEXT_SEPARATOR_EMPTY_CLASS = FILTER_BUILDER_ITEM_TEXT_SEPARATOR_CLASS + \"-empty\";\r\n\r\nfunction getFormattedValueText(field, value) {\r\n var fieldFormat = field.format || DEFAULT_FORMAT[field.dataType];\r\n return formatHelper.format(value, fieldFormat)\r\n}\r\n\r\nfunction isNegationGroup(group) {\r\n return group && group.length > 1 && \"!\" === group[0] && !isCondition(group)\r\n}\r\nexport function getGroupCriteria(group) {\r\n return isNegationGroup(group) ? group[1] : group\r\n}\r\n\r\nfunction setGroupCriteria(group, criteria) {\r\n if (isNegationGroup(group)) {\r\n group[1] = criteria\r\n } else {\r\n group = criteria\r\n }\r\n return group\r\n}\r\n\r\nfunction convertGroupToNewStructure(group, value) {\r\n if (function(value) {\r\n return -1 !== value.indexOf(\"!\")\r\n }(value)) {\r\n if (!isNegationGroup(group)) {\r\n ! function(group) {\r\n var criteria = group.slice(0);\r\n group.length = 0;\r\n group.push(\"!\", criteria)\r\n }(group)\r\n }\r\n } else if (isNegationGroup(group)) {\r\n ! function(group) {\r\n var criteria = getGroupCriteria(group);\r\n group.length = 0;\r\n [].push.apply(group, criteria)\r\n }(group)\r\n }\r\n}\r\nexport function setGroupValue(group, value) {\r\n convertGroupToNewStructure(group, value);\r\n var criteria = getGroupCriteria(group);\r\n var i;\r\n value = function(value) {\r\n return -1 === value.indexOf(\"!\") ? value : value.substring(1)\r\n }(value);\r\n ! function(criteria, value) {\r\n for (i = 0; i < criteria.length; i++) {\r\n if (!Array.isArray(criteria[i])) {\r\n criteria[i] = value\r\n }\r\n }\r\n }(criteria, value);\r\n return group\r\n}\r\nexport function getGroupMenuItem(group, availableGroups) {\r\n var groupValue = getGroupValue(group);\r\n return availableGroups.filter((function(item) {\r\n return item.value === groupValue\r\n }))[0]\r\n}\r\n\r\nfunction getCriteriaOperation(criteria) {\r\n if (isCondition(criteria)) {\r\n return AND_GROUP_OPERATION\r\n }\r\n var value = \"\";\r\n for (var i = 0; i < criteria.length; i++) {\r\n var item = criteria[i];\r\n if (!Array.isArray(item)) {\r\n if (value && value !== item) {\r\n throw new dataErrors.Error(\"E4019\")\r\n }\r\n if (\"!\" !== item) {\r\n value = item\r\n }\r\n }\r\n }\r\n return value\r\n}\r\nexport function getGroupValue(group) {\r\n var criteria = getGroupCriteria(group);\r\n var value = getCriteriaOperation(criteria);\r\n if (!value) {\r\n value = AND_GROUP_OPERATION\r\n }\r\n if (criteria !== group) {\r\n value = \"!\" + value\r\n }\r\n return value\r\n}\r\n\r\nfunction getDefaultFilterOperations(field) {\r\n return field.lookup && LOOKUP_OPERATIONS || DATATYPE_OPERATIONS[field.dataType || DEFAULT_DATA_TYPE]\r\n}\r\n\r\nfunction containItems(entity) {\r\n return Array.isArray(entity) && entity.length\r\n}\r\nexport function getFilterOperations(field) {\r\n var result = containItems(field.filterOperations) ? field.filterOperations : getDefaultFilterOperations(field);\r\n return extend([], result)\r\n}\r\nexport function getCaptionByOperation(operation, filterOperationDescriptions) {\r\n var operationName = filterOperationsDictionary.getNameByFilterOperation(operation);\r\n return filterOperationDescriptions && filterOperationDescriptions[operationName] ? filterOperationDescriptions[operationName] : operationName\r\n}\r\nexport function getOperationFromAvailable(operation, availableOperations) {\r\n for (var i = 0; i < availableOperations.length; i++) {\r\n if (availableOperations[i].value === operation) {\r\n return availableOperations[i]\r\n }\r\n }\r\n throw new errors.Error(\"E1048\", operation)\r\n}\r\nexport function getCustomOperation(customOperations, name) {\r\n var filteredOperations = customOperations.filter((function(item) {\r\n return item.name === name\r\n }));\r\n return filteredOperations.length ? filteredOperations[0] : null\r\n}\r\nexport function getAvailableOperations(field, filterOperationDescriptions, customOperations) {\r\n var filterOperations = getFilterOperations(field);\r\n var isLookupField = !!field.lookup;\r\n customOperations.forEach((function(customOperation) {\r\n if (!field.filterOperations && -1 === filterOperations.indexOf(customOperation.name)) {\r\n var dataTypes = customOperation && customOperation.dataTypes;\r\n var isOperationForbidden = isLookupField ? !!customOperation.notForLookup : false;\r\n if (!isOperationForbidden && dataTypes && dataTypes.indexOf(field.dataType || DEFAULT_DATA_TYPE) >= 0) {\r\n filterOperations.push(customOperation.name)\r\n }\r\n }\r\n }));\r\n return filterOperations.map((function(operation) {\r\n var customOperation = getCustomOperation(customOperations, operation);\r\n if (customOperation) {\r\n return {\r\n icon: customOperation.icon || EMPTY_MENU_ICON,\r\n text: customOperation.caption || captionize(customOperation.name),\r\n value: customOperation.name,\r\n isCustom: true\r\n }\r\n } else {\r\n return {\r\n icon: filterOperationsDictionary.getIconByFilterOperation(operation) || EMPTY_MENU_ICON,\r\n text: getCaptionByOperation(operation, filterOperationDescriptions),\r\n value: operation\r\n }\r\n }\r\n }))\r\n}\r\nexport function getDefaultOperation(field) {\r\n return field.defaultFilterOperation || getFilterOperations(field)[0]\r\n}\r\nexport function createCondition(field, customOperations) {\r\n var condition = [field.dataField, \"\", \"\"];\r\n var filterOperation = getDefaultOperation(field);\r\n updateConditionByOperation(condition, filterOperation, customOperations);\r\n return condition\r\n}\r\nexport function removeItem(group, item) {\r\n var criteria = getGroupCriteria(group);\r\n var index = criteria.indexOf(item);\r\n criteria.splice(index, 1);\r\n if (1 !== criteria.length) {\r\n criteria.splice(index, 1)\r\n }\r\n return group\r\n}\r\nexport function createEmptyGroup(value) {\r\n return -1 !== value.indexOf(\"not\") ? [\"!\", [value.substring(3).toLowerCase()]] : [value]\r\n}\r\nexport function isEmptyGroup(group) {\r\n var criteria = getGroupCriteria(group);\r\n if (isCondition(criteria)) {\r\n return false\r\n }\r\n var hasConditions = criteria.some((function(item) {\r\n return isCondition(item)\r\n }));\r\n return !hasConditions\r\n}\r\nexport function addItem(item, group) {\r\n var criteria = getGroupCriteria(group);\r\n var groupValue = getGroupValue(criteria);\r\n 1 === criteria.length ? criteria.unshift(item) : criteria.push(item, groupValue);\r\n return group\r\n}\r\nexport function getField(dataField, fields) {\r\n for (var i = 0; i < fields.length; i++) {\r\n if (fields[i].name === dataField) {\r\n return fields[i]\r\n }\r\n if (fields[i].dataField.toLowerCase() === dataField.toLowerCase()) {\r\n return fields[i]\r\n }\r\n }\r\n var extendedFields = getItems(fields, true).filter((function(item) {\r\n return item.dataField.toLowerCase() === dataField.toLowerCase()\r\n }));\r\n if (extendedFields.length > 0) {\r\n return extendedFields[0]\r\n }\r\n throw new errors.Error(\"E1047\", dataField)\r\n}\r\nexport function isGroup(criteria) {\r\n if (!Array.isArray(criteria)) {\r\n return false\r\n }\r\n return criteria.length < 2 || Array.isArray(criteria[0]) || Array.isArray(criteria[1])\r\n}\r\nexport function isCondition(criteria) {\r\n if (!Array.isArray(criteria)) {\r\n return false\r\n }\r\n return criteria.length > 1 && !Array.isArray(criteria[0]) && !Array.isArray(criteria[1])\r\n}\r\n\r\nfunction convertToInnerGroup(group, customOperations) {\r\n var groupOperation = getCriteriaOperation(group).toLowerCase() || AND_GROUP_OPERATION;\r\n var innerGroup = [];\r\n for (var i = 0; i < group.length; i++) {\r\n if (isGroup(group[i])) {\r\n innerGroup.push(convertToInnerStructure(group[i], customOperations));\r\n innerGroup.push(groupOperation)\r\n } else if (isCondition(group[i])) {\r\n innerGroup.push(convertToInnerCondition(group[i], customOperations));\r\n innerGroup.push(groupOperation)\r\n }\r\n }\r\n if (0 === innerGroup.length) {\r\n innerGroup.push(groupOperation)\r\n }\r\n return innerGroup\r\n}\r\n\r\nfunction conditionHasCustomOperation(condition, customOperations) {\r\n var customOperation = getCustomOperation(customOperations, condition[1]);\r\n return customOperation && customOperation.name === condition[1]\r\n}\r\n\r\nfunction convertToInnerCondition(condition, customOperations) {\r\n if (conditionHasCustomOperation(condition, customOperations)) {\r\n return condition\r\n }\r\n if (condition.length < 3) {\r\n condition[2] = condition[1];\r\n condition[1] = EQUAL_OPERATION\r\n }\r\n return condition\r\n}\r\nexport function convertToInnerStructure(value, customOperations) {\r\n if (!value) {\r\n return [AND_GROUP_OPERATION]\r\n }\r\n value = extend(true, [], value);\r\n if (isCondition(value)) {\r\n return [convertToInnerCondition(value, customOperations), AND_GROUP_OPERATION]\r\n }\r\n if (isNegationGroup(value)) {\r\n return [\"!\", isCondition(value[1]) ? [convertToInnerCondition(value[1], customOperations), AND_GROUP_OPERATION] : isNegationGroup(value[1]) ? [convertToInnerStructure(value[1], customOperations), AND_GROUP_OPERATION] : convertToInnerGroup(value[1], customOperations)]\r\n }\r\n return convertToInnerGroup(value, customOperations)\r\n}\r\nexport function getNormalizedFields(fields) {\r\n return fields.reduce((function(result, field) {\r\n if (isDefined(field.dataField)) {\r\n var normalizedField = {};\r\n for (var key in field) {\r\n if (field[key] && AVAILABLE_FIELD_PROPERTIES.indexOf(key) > -1) {\r\n normalizedField[key] = field[key]\r\n }\r\n }\r\n normalizedField.defaultCalculateFilterExpression = filterUtils.defaultCalculateFilterExpression;\r\n if (!isDefined(normalizedField.dataType)) {\r\n normalizedField.dataType = DEFAULT_DATA_TYPE\r\n }\r\n if (!isDefined(normalizedField.trueText)) {\r\n normalizedField.trueText = messageLocalization.format(\"dxDataGrid-trueText\")\r\n }\r\n if (!isDefined(normalizedField.falseText)) {\r\n normalizedField.falseText = messageLocalization.format(\"dxDataGrid-falseText\")\r\n }\r\n result.push(normalizedField)\r\n }\r\n return result\r\n }), [])\r\n}\r\n\r\nfunction getConditionFilterExpression(condition, fields, customOperations, target) {\r\n var field = getField(condition[0], fields);\r\n var filterExpression = convertToInnerCondition(condition, customOperations);\r\n var customOperation = customOperations.length && getCustomOperation(customOperations, filterExpression[1]);\r\n if (customOperation && customOperation.calculateFilterExpression) {\r\n return customOperation.calculateFilterExpression.apply(customOperation, [filterExpression[2], field, fields])\r\n } else if (field.createFilterExpression) {\r\n return field.createFilterExpression.apply(field, [filterExpression[2], filterExpression[1], target])\r\n } else if (field.calculateFilterExpression) {\r\n return field.calculateFilterExpression.apply(field, [filterExpression[2], filterExpression[1], target])\r\n } else {\r\n return field.defaultCalculateFilterExpression.apply(field, [filterExpression[2], filterExpression[1], target])\r\n }\r\n}\r\nexport function getFilterExpression(value, fields, customOperations, target) {\r\n if (!isDefined(value)) {\r\n return null\r\n }\r\n if (isNegationGroup(value)) {\r\n var filterExpression = getFilterExpression(value[1], fields, customOperations, target);\r\n return [\"!\", filterExpression]\r\n }\r\n var criteria = getGroupCriteria(value);\r\n if (isCondition(criteria)) {\r\n return getConditionFilterExpression(criteria, fields, customOperations, target) || null\r\n } else {\r\n var result = [];\r\n var _filterExpression;\r\n var groupValue = getGroupValue(criteria);\r\n for (var i = 0; i < criteria.length; i++) {\r\n if (isGroup(criteria[i])) {\r\n _filterExpression = getFilterExpression(criteria[i], fields, customOperations, target);\r\n if (_filterExpression) {\r\n i && result.push(groupValue);\r\n result.push(_filterExpression)\r\n }\r\n } else if (isCondition(criteria[i])) {\r\n _filterExpression = getConditionFilterExpression(criteria[i], fields, customOperations, target);\r\n if (_filterExpression) {\r\n result.length && result.push(groupValue);\r\n result.push(_filterExpression)\r\n }\r\n }\r\n }\r\n if (1 === result.length) {\r\n result = result[0]\r\n }\r\n return result.length ? result : null\r\n }\r\n}\r\nexport function getNormalizedFilter(group) {\r\n var criteria = getGroupCriteria(group);\r\n var i;\r\n if (0 === criteria.length) {\r\n return null\r\n }\r\n var itemsForRemove = [];\r\n for (i = 0; i < criteria.length; i++) {\r\n if (isGroup(criteria[i])) {\r\n var normalizedGroupValue = getNormalizedFilter(criteria[i]);\r\n if (normalizedGroupValue) {\r\n criteria[i] = normalizedGroupValue\r\n } else {\r\n itemsForRemove.push(criteria[i])\r\n }\r\n } else if (isCondition(criteria[i])) {\r\n if (!isValidCondition(criteria[i])) {\r\n itemsForRemove.push(criteria[i])\r\n }\r\n }\r\n }\r\n for (i = 0; i < itemsForRemove.length; i++) {\r\n removeItem(criteria, itemsForRemove[i])\r\n }\r\n if (1 === criteria.length) {\r\n return null\r\n }\r\n criteria.splice(criteria.length - 1, 1);\r\n if (1 === criteria.length) {\r\n group = setGroupCriteria(group, criteria[0])\r\n }\r\n if (0 === group.length) {\r\n return null\r\n }\r\n return group\r\n}\r\nexport function getCurrentLookupValueText(field, value, handler) {\r\n if (\"\" === value) {\r\n handler(\"\");\r\n return\r\n }\r\n var lookup = field.lookup;\r\n if (lookup.items) {\r\n handler(lookup.calculateCellValue(value) || \"\")\r\n } else {\r\n var lookupDataSource = isFunction(lookup.dataSource) ? lookup.dataSource({}) : lookup.dataSource;\r\n var dataSource = new DataSource(lookupDataSource);\r\n dataSource.loadSingle(lookup.valueExpr, value).done((function(result) {\r\n var valueText = \"\";\r\n if (result) {\r\n valueText = lookup.displayExpr ? compileGetter(lookup.displayExpr)(result) : result\r\n }\r\n if (field.customizeText) {\r\n valueText = field.customizeText({\r\n value: value,\r\n valueText: valueText\r\n })\r\n }\r\n handler(valueText)\r\n })).fail((function() {\r\n handler(\"\")\r\n }))\r\n }\r\n}\r\n\r\nfunction getPrimitiveValueText(field, value, customOperation, target) {\r\n var valueText;\r\n if (true === value) {\r\n valueText = field.trueText || messageLocalization.format(\"dxDataGrid-trueText\")\r\n } else if (false === value) {\r\n valueText = field.falseText || messageLocalization.format(\"dxDataGrid-falseText\")\r\n } else {\r\n valueText = getFormattedValueText(field, value)\r\n }\r\n if (field.customizeText) {\r\n valueText = field.customizeText.call(field, {\r\n value: value,\r\n valueText: valueText,\r\n target: target\r\n })\r\n }\r\n if (customOperation && customOperation.customizeText) {\r\n valueText = customOperation.customizeText.call(customOperation, {\r\n value: value,\r\n valueText: valueText,\r\n field: field,\r\n target: target\r\n })\r\n }\r\n return valueText\r\n}\r\n\r\nfunction getArrayValueText(field, value, customOperation, target) {\r\n return value.map(v => getPrimitiveValueText(field, v, customOperation, target))\r\n}\r\n\r\nfunction checkDefaultValue(value) {\r\n return \"\" === value || null === value\r\n}\r\nexport function getCurrentValueText(field, value, customOperation) {\r\n var target = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : \"filterBuilder\";\r\n if (checkDefaultValue(value)) {\r\n return \"\"\r\n }\r\n if (Array.isArray(value)) {\r\n var result = new Deferred;\r\n when.apply(this, getArrayValueText(field, value, customOperation, target)).done((function() {\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 var text = args.some(item => !checkDefaultValue(item)) ? args.map(item => !checkDefaultValue(item) ? item : \"?\") : \"\";\r\n result.resolve(text)\r\n }));\r\n return result\r\n } else {\r\n return getPrimitiveValueText(field, value, customOperation, target)\r\n }\r\n}\r\n\r\nfunction itemExists(plainItems, parentId) {\r\n return plainItems.some((function(item) {\r\n return item.dataField === parentId\r\n }))\r\n}\r\n\r\nfunction pushItemAndCheckParent(originalItems, plainItems, item) {\r\n var dataField = item.dataField;\r\n if (hasParent(dataField)) {\r\n item.parentId = getParentIdFromItemDataField(dataField);\r\n if (!itemExists(plainItems, item.parentId) && !itemExists(originalItems, item.parentId)) {\r\n pushItemAndCheckParent(originalItems, plainItems, {\r\n id: item.parentId,\r\n dataType: \"object\",\r\n dataField: item.parentId,\r\n caption: generateCaptionByDataField(item.parentId, true),\r\n filterOperations: [\"isblank\", \"isnotblank\"]\r\n })\r\n }\r\n }\r\n plainItems.push(item)\r\n}\r\n\r\nfunction generateCaptionByDataField(dataField, allowHierarchicalFields) {\r\n var caption = \"\";\r\n if (allowHierarchicalFields) {\r\n dataField = dataField.substring(dataField.lastIndexOf(\".\") + 1)\r\n } else if (hasParent(dataField)) {\r\n dataField.split(\".\").forEach((function(field, index, arr) {\r\n caption += captionize(field);\r\n if (index !== arr.length - 1) {\r\n caption += \".\"\r\n }\r\n }));\r\n return caption\r\n }\r\n return captionize(dataField)\r\n}\r\nexport function getItems(fields, allowHierarchicalFields) {\r\n var items = [];\r\n for (var i = 0; i < fields.length; i++) {\r\n var item = extend(true, {\r\n caption: generateCaptionByDataField(fields[i].dataField, allowHierarchicalFields)\r\n }, fields[i]);\r\n item.id = item.name || item.dataField;\r\n if (allowHierarchicalFields) {\r\n pushItemAndCheckParent(fields, items, item)\r\n } else {\r\n items.push(item)\r\n }\r\n }\r\n return items\r\n}\r\n\r\nfunction hasParent(dataField) {\r\n return -1 !== dataField.lastIndexOf(\".\")\r\n}\r\n\r\nfunction getParentIdFromItemDataField(dataField) {\r\n return dataField.substring(0, dataField.lastIndexOf(\".\"))\r\n}\r\nexport function getCaptionWithParents(item, plainItems) {\r\n if (hasParent(item.dataField)) {\r\n var parentId = getParentIdFromItemDataField(item.dataField);\r\n for (var i = 0; i < plainItems.length; i++) {\r\n if (plainItems[i].dataField === parentId) {\r\n return getCaptionWithParents(plainItems[i], plainItems) + \".\" + item.caption\r\n }\r\n }\r\n }\r\n return item.caption\r\n}\r\nexport function updateConditionByOperation(condition, operation, customOperations) {\r\n var customOperation = getCustomOperation(customOperations, operation);\r\n if (customOperation) {\r\n if (false === customOperation.hasValue) {\r\n condition[1] = operation;\r\n condition.length = 2\r\n } else {\r\n condition[1] = operation;\r\n condition[2] = \"\"\r\n }\r\n return condition\r\n }\r\n if (\"isblank\" === operation) {\r\n condition[1] = EQUAL_OPERATION;\r\n condition[2] = null\r\n } else if (\"isnotblank\" === operation) {\r\n condition[1] = NOT_EQUAL_OPERATION;\r\n condition[2] = null\r\n } else {\r\n customOperation = getCustomOperation(customOperations, condition[1]);\r\n if (customOperation || 2 === condition.length || null === condition[2]) {\r\n condition[2] = \"\"\r\n }\r\n condition[1] = operation\r\n }\r\n return condition\r\n}\r\nexport function getOperationValue(condition) {\r\n var caption;\r\n if (null === condition[2]) {\r\n if (condition[1] === EQUAL_OPERATION) {\r\n caption = \"isblank\"\r\n } else {\r\n caption = \"isnotblank\"\r\n }\r\n } else {\r\n caption = condition[1]\r\n }\r\n return caption\r\n}\r\nexport function isValidCondition(condition) {\r\n return \"\" !== condition[2]\r\n}\r\nexport function getMergedOperations(customOperations, betweenCaption, context) {\r\n var result = extend(true, [], customOperations);\r\n var betweenIndex = -1;\r\n result.some((function(customOperation, index) {\r\n if (\"between\" === customOperation.name) {\r\n betweenIndex = index;\r\n return true\r\n }\r\n }));\r\n if (-1 !== betweenIndex) {\r\n result[betweenIndex] = extend(getConfig(betweenCaption, context), result[betweenIndex])\r\n } else {\r\n result.unshift(getConfig(betweenCaption, context))\r\n }\r\n return result\r\n}\r\n\r\nfunction isMatchedCondition(filter, addedFilterDataField) {\r\n return filter[0] === addedFilterDataField\r\n}\r\nexport function removeFieldConditionsFromFilter(filter, dataField) {\r\n if (!filter || 0 === filter.length) {\r\n return null\r\n }\r\n if (isCondition(filter)) {\r\n var hasMatchedCondition = isMatchedCondition(filter, dataField);\r\n return !hasMatchedCondition ? filter : null\r\n } else {\r\n return syncConditionIntoGroup(filter, [dataField], false)\r\n }\r\n}\r\n\r\nfunction syncConditionIntoGroup(filter, addedFilter, canPush) {\r\n var result = [];\r\n filter.forEach((function(item) {\r\n if (isCondition(item)) {\r\n if (isMatchedCondition(item, addedFilter[0])) {\r\n if (canPush) {\r\n result.push(addedFilter);\r\n canPush = false\r\n } else {\r\n result.splice(result.length - 1, 1)\r\n }\r\n } else {\r\n result.push(item)\r\n }\r\n } else {\r\n (result.length || isGroup(item)) && result.push(item)\r\n }\r\n }));\r\n if (0 === result.length) {\r\n return null\r\n }\r\n if (canPush) {\r\n result.push(AND_GROUP_OPERATION);\r\n result.push(addedFilter)\r\n }\r\n return 1 === result.length ? result[0] : result\r\n}\r\nexport function syncFilters(filter, addedFilter) {\r\n if (null === filter || 0 === filter.length) {\r\n return addedFilter\r\n }\r\n if (isCondition(filter)) {\r\n if (isMatchedCondition(filter, addedFilter[0])) {\r\n return addedFilter\r\n } else {\r\n return [filter, AND_GROUP_OPERATION, addedFilter]\r\n }\r\n }\r\n var groupValue = getGroupValue(filter);\r\n if (groupValue !== AND_GROUP_OPERATION) {\r\n return [addedFilter, \"and\", filter]\r\n }\r\n return syncConditionIntoGroup(filter, addedFilter, true)\r\n}\r\nexport function getMatchedConditions(filter, dataField) {\r\n if (null === filter || 0 === filter.length) {\r\n return []\r\n }\r\n if (isCondition(filter)) {\r\n if (isMatchedCondition(filter, dataField)) {\r\n return [filter]\r\n } else {\r\n return []\r\n }\r\n }\r\n var groupValue = getGroupValue(filter);\r\n if (groupValue !== AND_GROUP_OPERATION) {\r\n return []\r\n }\r\n var result = filter.filter((function(item) {\r\n return isCondition(item) && isMatchedCondition(item, dataField)\r\n }));\r\n return result\r\n}\r\nexport function filterHasField(filter, dataField) {\r\n if (null === filter || 0 === filter.length) {\r\n return false\r\n }\r\n if (isCondition(filter)) {\r\n return filter[0] === dataField\r\n }\r\n return filter.some((function(item) {\r\n return (isCondition(item) || isGroup(item)) && filterHasField(item, dataField)\r\n }))\r\n}\r\nexport var renderValueText = function($container, value, customOperation) {\r\n if (Array.isArray(value)) {\r\n var lastItemIndex = value.length - 1;\r\n $container.empty();\r\n value.forEach((t, i) => {\r\n $(\"\").addClass(FILTER_BUILDER_ITEM_TEXT_PART_CLASS).text(t).appendTo($container);\r\n if (i !== lastItemIndex) {\r\n $(\"\").addClass(FILTER_BUILDER_ITEM_TEXT_SEPARATOR_CLASS).text(customOperation && customOperation.valueSeparator ? customOperation.valueSeparator : \"|\").addClass(FILTER_BUILDER_ITEM_TEXT_SEPARATOR_EMPTY_CLASS).appendTo($container)\r\n }\r\n })\r\n } else if (value) {\r\n $container.text(value)\r\n } else {\r\n $container.text(messageLocalization.format(\"dxFilterBuilder-enterValueText\"))\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/menu/ui.submenu.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport animationPosition from \"../../animation/position\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport ContextMenu from \"../context_menu\";\r\nvar DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS = \"dx-context-menu-content-delimiter\";\r\nvar DX_SUBMENU_CLASS = \"dx-submenu\";\r\nclass Submenu extends ContextMenu {\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n orientation: \"horizontal\",\r\n tabIndex: null,\r\n onHoverStart: noop\r\n })\r\n }\r\n _initDataAdapter() {\r\n this._dataAdapter = this.option(\"_dataAdapter\");\r\n if (!this._dataAdapter) {\r\n super._initDataAdapter()\r\n }\r\n }\r\n _renderContentImpl() {\r\n this._renderContextMenuOverlay();\r\n super._renderContentImpl();\r\n var node = this._dataAdapter.getNodeByKey(this.option(\"_parentKey\"));\r\n node && this._renderItems(this._getChildNodes(node));\r\n this._renderDelimiter()\r\n }\r\n _renderDelimiter() {\r\n this.$contentDelimiter = $(\"
\").appendTo(this._itemContainer()).addClass(DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS)\r\n }\r\n _getOverlayOptions() {\r\n return extend(super._getOverlayOptions(), {\r\n onPositioned: this._overlayPositionedActionHandler.bind(this)\r\n })\r\n }\r\n _overlayPositionedActionHandler(arg) {\r\n this._showDelimiter(arg)\r\n }\r\n _hoverEndHandler(e) {\r\n super._hoverEndHandler(e);\r\n this._toggleFocusClass(false, e.currentTarget)\r\n }\r\n _isMenuHorizontal() {\r\n return \"horizontal\" === this.option(\"orientation\")\r\n }\r\n _hoverStartHandler(e) {\r\n var hoverStartAction = this.option(\"onHoverStart\");\r\n hoverStartAction(e);\r\n super._hoverStartHandler(e);\r\n this._toggleFocusClass(true, e.currentTarget)\r\n }\r\n _drawSubmenu($rootItem) {\r\n this._actions.onShowing({\r\n rootItem: getPublicElement($rootItem),\r\n submenu: this\r\n });\r\n super._drawSubmenu($rootItem);\r\n this._actions.onShown({\r\n rootItem: getPublicElement($rootItem),\r\n submenu: this\r\n })\r\n }\r\n _hideSubmenu($rootItem) {\r\n this._actions.onHiding({\r\n cancel: true,\r\n rootItem: getPublicElement($rootItem),\r\n submenu: this\r\n });\r\n super._hideSubmenu($rootItem);\r\n this._actions.onHidden({\r\n rootItem: getPublicElement($rootItem),\r\n submenu: this\r\n })\r\n }\r\n _showDelimiter(arg) {\r\n if (!this.$contentDelimiter) {\r\n return\r\n }\r\n var $submenu = this._itemContainer().children(\".\".concat(DX_SUBMENU_CLASS)).eq(0);\r\n var $rootItem = this.option(\"position\").of;\r\n var position = {\r\n of: $submenu\r\n };\r\n var containerOffset = arg.position;\r\n var vLocation = containerOffset.v.location;\r\n var hLocation = containerOffset.h.location;\r\n var rootOffset = $rootItem.offset();\r\n var offsetLeft = Math.round(rootOffset.left);\r\n var offsetTop = Math.round(rootOffset.top);\r\n var rootWidth = $rootItem.width();\r\n var rootHeight = $rootItem.height();\r\n var submenuWidth = $submenu.width();\r\n var submenuHeight = $submenu.height();\r\n this.$contentDelimiter.css(\"display\", \"block\");\r\n this.$contentDelimiter.width(this._isMenuHorizontal() ? rootWidth < submenuWidth ? rootWidth - 2 : submenuWidth : 2);\r\n this.$contentDelimiter.height(this._isMenuHorizontal() ? 2 : rootHeight < submenuHeight ? rootHeight - 2 : submenuHeight);\r\n if (this._isMenuHorizontal()) {\r\n if (vLocation > offsetTop) {\r\n if (Math.round(hLocation) === offsetLeft) {\r\n position.offset = \"1 -1\";\r\n position.at = position.my = \"left top\"\r\n } else {\r\n position.offset = \"-1 -1\";\r\n position.at = position.my = \"right top\"\r\n }\r\n } else {\r\n this.$contentDelimiter.height(5);\r\n if (Math.round(hLocation) === offsetLeft) {\r\n position.offset = \"1 4\";\r\n position.at = position.my = \"left bottom\"\r\n } else {\r\n position.offset = \"-1 2\";\r\n position.at = position.my = \"right bottom\"\r\n }\r\n }\r\n } else if (hLocation > offsetLeft) {\r\n if (Math.round(vLocation) === offsetTop) {\r\n position.offset = \"-1 1\";\r\n position.at = position.my = \"left top\"\r\n } else {\r\n position.offset = \"-1 -1\";\r\n position.at = position.my = \"left bottom\"\r\n }\r\n } else if (Math.round(vLocation) === offsetTop) {\r\n position.offset = \"1 1\";\r\n position.at = position.my = \"right top\"\r\n } else {\r\n position.offset = \"1 -1\";\r\n position.at = position.my = \"right bottom\"\r\n }\r\n animationPosition.setup(this.$contentDelimiter, position)\r\n }\r\n _getContextMenuPosition() {\r\n return this.option(\"position\")\r\n }\r\n isOverlayVisible() {\r\n return this._overlay.option(\"visible\")\r\n }\r\n getOverlayContent() {\r\n return this._overlay.$content()\r\n }\r\n}\r\nexport default Submenu;\r\n","/**\r\n * DevExtreme (esm/ui/menu/ui.menu.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isPlainObject,\r\n isObject,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getElementMaxHeightByWindow\r\n} from \"../overlay/utils\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport {\r\n end as hoverEventEnd\r\n} from \"../../events/hover\";\r\nimport MenuBase from \"../context_menu/ui.menu_base\";\r\nimport Overlay from \"../overlay/ui.overlay\";\r\nimport Submenu from \"./ui.submenu\";\r\nimport Button from \"../button\";\r\nimport TreeView from \"../tree_view\";\r\nvar DX_MENU_CLASS = \"dx-menu\";\r\nvar DX_MENU_VERTICAL_CLASS = DX_MENU_CLASS + \"-vertical\";\r\nvar DX_MENU_HORIZONTAL_CLASS = DX_MENU_CLASS + \"-horizontal\";\r\nvar DX_MENU_ITEM_CLASS = DX_MENU_CLASS + \"-item\";\r\nvar DX_MENU_ITEMS_CONTAINER_CLASS = DX_MENU_CLASS + \"-items-container\";\r\nvar DX_MENU_ITEM_EXPANDED_CLASS = DX_MENU_ITEM_CLASS + \"-expanded\";\r\nvar DX_CONTEXT_MENU_CLASS = \"dx-context-menu\";\r\nvar DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS = DX_CONTEXT_MENU_CLASS + \"-container-border\";\r\nvar DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS = \"dx-context-menu-content-delimiter\";\r\nvar DX_SUBMENU_CLASS = \"dx-submenu\";\r\nvar DX_STATE_DISABLED_CLASS = \"dx-state-disabled\";\r\nvar DX_STATE_HOVER_CLASS = \"dx-state-hover\";\r\nvar DX_STATE_ACTIVE_CLASS = \"dx-state-active\";\r\nvar DX_ADAPTIVE_MODE_CLASS = DX_MENU_CLASS + \"-adaptive-mode\";\r\nvar DX_ADAPTIVE_HAMBURGER_BUTTON_CLASS = DX_MENU_CLASS + \"-hamburger-button\";\r\nvar DX_ADAPTIVE_MODE_OVERLAY_WRAPPER_CLASS = DX_ADAPTIVE_MODE_CLASS + \"-overlay-wrapper\";\r\nvar FOCUS_UP = \"up\";\r\nvar FOCUS_DOWN = \"down\";\r\nvar FOCUS_LEFT = \"left\";\r\nvar FOCUS_RIGHT = \"right\";\r\nvar SHOW_SUBMENU_OPERATION = \"showSubmenu\";\r\nvar NEXTITEM_OPERATION = \"nextItem\";\r\nvar PREVITEM_OPERATION = \"prevItem\";\r\nvar DEFAULT_DELAY = {\r\n show: 50,\r\n hide: 300\r\n};\r\nvar ACTIONS = [\"onSubmenuShowing\", \"onSubmenuShown\", \"onSubmenuHiding\", \"onSubmenuHidden\", \"onItemContextMenu\", \"onItemClick\", \"onSelectionChanged\", \"onItemRendered\"];\r\nclass Menu extends MenuBase {\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n orientation: \"horizontal\",\r\n submenuDirection: \"auto\",\r\n showFirstSubmenuMode: {\r\n name: \"onClick\",\r\n delay: {\r\n show: 50,\r\n hide: 300\r\n }\r\n },\r\n hideSubmenuOnMouseLeave: false,\r\n onSubmenuShowing: null,\r\n onSubmenuShown: null,\r\n onSubmenuHiding: null,\r\n onSubmenuHidden: null,\r\n adaptivityEnabled: false\r\n })\r\n }\r\n _setOptionsByReference() {\r\n super._setOptionsByReference();\r\n extend(this._optionsByReference, {\r\n animation: true,\r\n selectedItem: true\r\n })\r\n }\r\n _itemElements() {\r\n var rootMenuElements = super._itemElements();\r\n var submenuElements = this._submenuItemElements();\r\n return rootMenuElements.add(submenuElements)\r\n }\r\n _submenuItemElements() {\r\n var elements = [];\r\n var itemSelector = \".\".concat(DX_MENU_ITEM_CLASS);\r\n var currentSubmenu = this._submenus.length && this._submenus[0];\r\n if (currentSubmenu && currentSubmenu.itemsContainer()) {\r\n elements = currentSubmenu.itemsContainer().find(itemSelector)\r\n }\r\n return elements\r\n }\r\n _focusTarget() {\r\n return this.$element()\r\n }\r\n _isMenuHorizontal() {\r\n return \"horizontal\" === this.option(\"orientation\")\r\n }\r\n _moveFocus(location) {\r\n var $items = this._getAvailableItems();\r\n var isMenuHorizontal = this._isMenuHorizontal();\r\n var $activeItem = this._getActiveItem(true);\r\n var argument;\r\n var operation;\r\n var navigationAction;\r\n var $newTarget;\r\n switch (location) {\r\n case FOCUS_UP:\r\n operation = isMenuHorizontal ? SHOW_SUBMENU_OPERATION : this._getItemsNavigationOperation(PREVITEM_OPERATION);\r\n argument = isMenuHorizontal ? $activeItem : $items;\r\n navigationAction = this._getKeyboardNavigationAction(operation, argument);\r\n $newTarget = navigationAction();\r\n break;\r\n case FOCUS_DOWN:\r\n operation = isMenuHorizontal ? SHOW_SUBMENU_OPERATION : this._getItemsNavigationOperation(NEXTITEM_OPERATION);\r\n argument = isMenuHorizontal ? $activeItem : $items;\r\n navigationAction = this._getKeyboardNavigationAction(operation, argument);\r\n $newTarget = navigationAction();\r\n break;\r\n case FOCUS_RIGHT:\r\n operation = isMenuHorizontal ? this._getItemsNavigationOperation(NEXTITEM_OPERATION) : SHOW_SUBMENU_OPERATION;\r\n argument = isMenuHorizontal ? $items : $activeItem;\r\n navigationAction = this._getKeyboardNavigationAction(operation, argument);\r\n $newTarget = navigationAction();\r\n break;\r\n case FOCUS_LEFT:\r\n operation = isMenuHorizontal ? this._getItemsNavigationOperation(PREVITEM_OPERATION) : SHOW_SUBMENU_OPERATION;\r\n argument = isMenuHorizontal ? $items : $activeItem;\r\n navigationAction = this._getKeyboardNavigationAction(operation, argument);\r\n $newTarget = navigationAction();\r\n break;\r\n default:\r\n return super._moveFocus(location)\r\n }\r\n if ($newTarget && 0 !== $newTarget.length) {\r\n this.option(\"focusedElement\", getPublicElement($newTarget))\r\n }\r\n }\r\n _getItemsNavigationOperation(operation) {\r\n var navOperation = operation;\r\n if (this.option(\"rtlEnabled\")) {\r\n navOperation = operation === PREVITEM_OPERATION ? NEXTITEM_OPERATION : PREVITEM_OPERATION\r\n }\r\n return navOperation\r\n }\r\n _getKeyboardNavigationAction(operation, argument) {\r\n var action = noop;\r\n switch (operation) {\r\n case SHOW_SUBMENU_OPERATION:\r\n if (!argument.hasClass(DX_STATE_DISABLED_CLASS)) {\r\n action = this._showSubmenu.bind(this, argument)\r\n }\r\n break;\r\n case NEXTITEM_OPERATION:\r\n action = this._nextItem.bind(this, argument);\r\n break;\r\n case PREVITEM_OPERATION:\r\n action = this._prevItem.bind(this, argument)\r\n }\r\n return action\r\n }\r\n _clean() {\r\n super._clean();\r\n this.option(\"templatesRenderAsynchronously\") && clearTimeout(this._resizeEventTimer)\r\n }\r\n _visibilityChanged(visible) {\r\n if (visible) {\r\n if (!this._menuItemsWidth) {\r\n this._updateItemsWidthCache()\r\n }\r\n this._dimensionChanged()\r\n }\r\n }\r\n _isAdaptivityEnabled() {\r\n return this.option(\"adaptivityEnabled\") && \"horizontal\" === this.option(\"orientation\")\r\n }\r\n _updateItemsWidthCache() {\r\n var $menuItems = this.$element().find(\"ul\").first().children(\"li\").children(\".\".concat(DX_MENU_ITEM_CLASS));\r\n this._menuItemsWidth = this._getSummaryItemsWidth($menuItems, true)\r\n }\r\n _dimensionChanged() {\r\n if (!this._isAdaptivityEnabled()) {\r\n return\r\n }\r\n var containerWidth = this.$element().outerWidth();\r\n this._toggleAdaptiveMode(this._menuItemsWidth > containerWidth)\r\n }\r\n _init() {\r\n super._init();\r\n this._submenus = []\r\n }\r\n _initActions() {\r\n this._actions = {};\r\n each(ACTIONS, (index, action) => {\r\n this._actions[action] = this._createActionByOption(action)\r\n })\r\n }\r\n _initMarkup() {\r\n this._visibleSubmenu = null;\r\n this.$element().addClass(DX_MENU_CLASS);\r\n super._initMarkup();\r\n this.setAria(\"role\", \"menubar\")\r\n }\r\n _render() {\r\n super._render();\r\n this._initAdaptivity()\r\n }\r\n _renderHamburgerButton() {\r\n this._hamburger = new Button($(\"
\").addClass(DX_ADAPTIVE_HAMBURGER_BUTTON_CLASS), {\r\n icon: \"menu\",\r\n activeStateEnabled: false,\r\n onClick: this._toggleTreeView.bind(this)\r\n });\r\n return this._hamburger.$element()\r\n }\r\n _toggleTreeView(state) {\r\n if (isPlainObject(state)) {\r\n state = !this._overlay.option(\"visible\")\r\n }\r\n this._overlay.option(\"visible\", state);\r\n this._toggleHamburgerActiveState(state)\r\n }\r\n _toggleHamburgerActiveState(state) {\r\n this._hamburger && this._hamburger.$element().toggleClass(DX_STATE_ACTIVE_CLASS, state)\r\n }\r\n _toggleAdaptiveMode(state) {\r\n var $menuItemsContainer = this.$element().find(\".\".concat(DX_MENU_HORIZONTAL_CLASS));\r\n var $adaptiveElements = this.$element().find(\".\".concat(DX_ADAPTIVE_MODE_CLASS));\r\n if (state) {\r\n this._hideVisibleSubmenu()\r\n } else {\r\n this._treeView && this._treeView.collapseAll();\r\n this._overlay && this._toggleTreeView(state)\r\n }\r\n $menuItemsContainer.toggle(!state);\r\n $adaptiveElements.toggle(state)\r\n }\r\n _removeAdaptivity() {\r\n if (!this._$adaptiveContainer) {\r\n return\r\n }\r\n this._toggleAdaptiveMode(false);\r\n this._$adaptiveContainer.remove();\r\n this._$adaptiveContainer = null;\r\n this._treeView = null;\r\n this._hamburger = null;\r\n this._overlay = null\r\n }\r\n _treeviewItemClickHandler(e) {\r\n this._actions.onItemClick(e);\r\n if (!e.node.children.length) {\r\n this._toggleTreeView(false)\r\n }\r\n }\r\n _getAdaptiveOverlayOptions() {\r\n var rtl = this.option(\"rtlEnabled\");\r\n var position = rtl ? \"right\" : \"left\";\r\n return {\r\n maxHeight: () => getElementMaxHeightByWindow(this.$element()),\r\n deferRendering: false,\r\n shading: false,\r\n animation: false,\r\n closeOnTargetScroll: true,\r\n onHidden: () => {\r\n this._toggleHamburgerActiveState(false)\r\n },\r\n height: \"auto\",\r\n closeOnOutsideClick: e => !$(e.target).closest(\".\".concat(DX_ADAPTIVE_HAMBURGER_BUTTON_CLASS)).length,\r\n position: {\r\n collision: \"flipfit\",\r\n at: \"bottom \" + position,\r\n my: \"top \" + position,\r\n of: this._hamburger.$element()\r\n }\r\n }\r\n }\r\n _getTreeViewOptions() {\r\n var menuOptions = {};\r\n each([\"rtlEnabled\", \"width\", \"accessKey\", \"activeStateEnabled\", \"animation\", \"dataSource\", \"disabled\", \"displayExpr\", \"displayExpr\", \"focusStateEnabled\", \"hint\", \"hoverStateEnabled\", \"itemsExpr\", \"items\", \"itemTemplate\", \"selectedExpr\", \"selectionMode\", \"tabIndex\", \"visible\"], (_, option) => {\r\n menuOptions[option] = this.option(option)\r\n });\r\n each([\"onItemContextMenu\", \"onSelectionChanged\"], (_, actionName) => {\r\n menuOptions[actionName] = e => {\r\n this._actions[actionName](e)\r\n }\r\n });\r\n return extend(menuOptions, {\r\n dataSource: this.getDataSource(),\r\n animationEnabled: !!this.option(\"animation\"),\r\n onItemClick: this._treeviewItemClickHandler.bind(this),\r\n onItemExpanded: e => {\r\n this._overlay.repaint();\r\n this._actions.onSubmenuShown(e)\r\n },\r\n onItemCollapsed: e => {\r\n this._overlay.repaint();\r\n this._actions.onSubmenuHidden(e)\r\n },\r\n selectNodesRecursive: false,\r\n selectByClick: this.option(\"selectByClick\"),\r\n expandEvent: \"click\"\r\n })\r\n }\r\n _initAdaptivity() {\r\n if (!this._isAdaptivityEnabled()) {\r\n return\r\n }\r\n this._$adaptiveContainer = $(\"
\").addClass(DX_ADAPTIVE_MODE_CLASS);\r\n var $hamburger = this._renderHamburgerButton();\r\n this._treeView = this._createComponent($(\"
\"), TreeView, this._getTreeViewOptions());\r\n this._overlay = this._createComponent($(\"
\"), Overlay, this._getAdaptiveOverlayOptions());\r\n this._overlay.$content().append(this._treeView.$element()).addClass(DX_ADAPTIVE_MODE_CLASS).addClass(this.option(\"cssClass\"));\r\n this._overlay.$wrapper().addClass(DX_ADAPTIVE_MODE_OVERLAY_WRAPPER_CLASS);\r\n this._$adaptiveContainer.append($hamburger);\r\n this._$adaptiveContainer.append(this._overlay.$element());\r\n this.$element().append(this._$adaptiveContainer);\r\n this._updateItemsWidthCache();\r\n this._dimensionChanged()\r\n }\r\n _getDelay(delayType) {\r\n var delay = this.option(\"showFirstSubmenuMode\").delay;\r\n if (!isDefined(delay)) {\r\n return DEFAULT_DELAY[delayType]\r\n } else {\r\n return isObject(delay) ? delay[delayType] : delay\r\n }\r\n }\r\n _keyboardHandler(e) {\r\n return super._keyboardHandler(e, !!this._visibleSubmenu)\r\n }\r\n _renderContainer() {\r\n var $wrapper = $(\"
\");\r\n $wrapper.appendTo(this.$element()).addClass(this._isMenuHorizontal() ? DX_MENU_HORIZONTAL_CLASS : DX_MENU_VERTICAL_CLASS);\r\n return super._renderContainer($wrapper)\r\n }\r\n _renderSubmenuItems(node, $itemFrame) {\r\n var submenu = this._createSubmenu(node, $itemFrame);\r\n this._submenus.push(submenu);\r\n this._renderBorderElement($itemFrame);\r\n return submenu\r\n }\r\n _getKeyboardListeners() {\r\n return super._getKeyboardListeners().concat(this._visibleSubmenu)\r\n }\r\n _createSubmenu(node, $rootItem) {\r\n var $submenuContainer = $(\"
\").addClass(DX_CONTEXT_MENU_CLASS).appendTo($rootItem);\r\n var items = this._getChildNodes(node);\r\n var result = this._createComponent($submenuContainer, Submenu, extend(this._getSubmenuOptions(), {\r\n _dataAdapter: this._dataAdapter,\r\n _parentKey: node.internalFields.key,\r\n items: items,\r\n onHoverStart: this._clearTimeouts.bind(this),\r\n position: this.getSubmenuPosition($rootItem)\r\n }));\r\n this._attachSubmenuHandlers($rootItem, result);\r\n return result\r\n }\r\n _getSubmenuOptions() {\r\n var $submenuTarget = $(\"
\");\r\n var isMenuHorizontal = this._isMenuHorizontal();\r\n return {\r\n itemTemplate: this.option(\"itemTemplate\"),\r\n target: $submenuTarget,\r\n orientation: this.option(\"orientation\"),\r\n selectionMode: this.option(\"selectionMode\"),\r\n cssClass: this.option(\"cssClass\"),\r\n selectByClick: this.option(\"selectByClick\"),\r\n hoverStateEnabled: this.option(\"hoverStateEnabled\"),\r\n activeStateEnabled: this.option(\"activeStateEnabled\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n animation: this.option(\"animation\"),\r\n showSubmenuMode: this.option(\"showSubmenuMode\"),\r\n displayExpr: this.option(\"displayExpr\"),\r\n disabledExpr: this.option(\"disabledExpr\"),\r\n selectedExpr: this.option(\"selectedExpr\"),\r\n itemsExpr: this.option(\"itemsExpr\"),\r\n onFocusedItemChanged: e => {\r\n if (!e.component.option(\"visible\")) {\r\n return\r\n }\r\n this.option(\"focusedElement\", e.component.option(\"focusedElement\"))\r\n },\r\n onSelectionChanged: this._nestedItemOnSelectionChangedHandler.bind(this),\r\n onItemClick: this._nestedItemOnItemClickHandler.bind(this),\r\n onItemRendered: this._nestedItemOnItemRenderedHandler.bind(this),\r\n onLeftFirstItem: isMenuHorizontal ? null : this._moveMainMenuFocus.bind(this, PREVITEM_OPERATION),\r\n onLeftLastItem: isMenuHorizontal ? null : this._moveMainMenuFocus.bind(this, NEXTITEM_OPERATION),\r\n onCloseRootSubmenu: this._moveMainMenuFocus.bind(this, isMenuHorizontal ? PREVITEM_OPERATION : null),\r\n onExpandLastSubmenu: isMenuHorizontal ? this._moveMainMenuFocus.bind(this, NEXTITEM_OPERATION) : null\r\n }\r\n }\r\n _getShowFirstSubmenuMode() {\r\n if (!this._isDesktopDevice()) {\r\n return \"onClick\"\r\n }\r\n var optionValue = this.option(\"showFirstSubmenuMode\");\r\n return isObject(optionValue) ? optionValue.name : optionValue\r\n }\r\n _moveMainMenuFocus(direction) {\r\n var $items = this._getAvailableItems();\r\n var itemCount = $items.length;\r\n var $currentItem = $items.filter(\".\".concat(DX_MENU_ITEM_EXPANDED_CLASS)).eq(0);\r\n var itemIndex = $items.index($currentItem);\r\n this._hideSubmenu(this._visibleSubmenu);\r\n itemIndex += direction === PREVITEM_OPERATION ? -1 : 1;\r\n if (itemIndex >= itemCount) {\r\n itemIndex = 0\r\n } else if (itemIndex < 0) {\r\n itemIndex = itemCount - 1\r\n }\r\n var $newItem = $items.eq(itemIndex);\r\n this.option(\"focusedElement\", getPublicElement($newItem))\r\n }\r\n _nestedItemOnSelectionChangedHandler(args) {\r\n var selectedItem = args.addedItems.length && args.addedItems[0];\r\n var submenu = Submenu.getInstance(args.element);\r\n var onSelectionChanged = this._actions.onSelectionChanged;\r\n onSelectionChanged(args);\r\n selectedItem && this._clearSelectionInSubmenus(selectedItem[0], submenu);\r\n this._clearRootSelection();\r\n this._setOptionWithoutOptionChange(\"selectedItem\", selectedItem)\r\n }\r\n _clearSelectionInSubmenus(item, targetSubmenu) {\r\n var cleanAllSubmenus = !arguments.length;\r\n each(this._submenus, (index, submenu) => {\r\n var $submenu = submenu._itemContainer();\r\n var isOtherItem = !$submenu.is(targetSubmenu && targetSubmenu._itemContainer());\r\n var $selectedItem = $submenu.find(\".\".concat(this._selectedItemClass()));\r\n if (isOtherItem && $selectedItem.length || cleanAllSubmenus) {\r\n $selectedItem.removeClass(this._selectedItemClass());\r\n var selectedItemData = this._getItemData($selectedItem);\r\n if (selectedItemData) {\r\n selectedItemData.selected = false\r\n }\r\n submenu._clearSelectedItems()\r\n }\r\n })\r\n }\r\n _clearRootSelection() {\r\n var $prevSelectedItem = this.$element().find(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS)).first().children().children().filter(\".\".concat(this._selectedItemClass()));\r\n if ($prevSelectedItem.length) {\r\n var prevSelectedItemData = this._getItemData($prevSelectedItem);\r\n prevSelectedItemData.selected = false;\r\n $prevSelectedItem.removeClass(this._selectedItemClass())\r\n }\r\n }\r\n _nestedItemOnItemClickHandler(e) {\r\n this._actions.onItemClick(e)\r\n }\r\n _nestedItemOnItemRenderedHandler(e) {\r\n this._actions.onItemRendered(e)\r\n }\r\n _attachSubmenuHandlers($rootItem, submenu) {\r\n var $submenuOverlayContent = submenu.getOverlayContent();\r\n var submenus = $submenuOverlayContent.find(\".\".concat(DX_SUBMENU_CLASS));\r\n var submenuMouseLeaveName = addNamespace(hoverEventEnd, this.NAME + \"_submenu\");\r\n submenu.option({\r\n onShowing: this._submenuOnShowingHandler.bind(this, $rootItem, submenu),\r\n onShown: this._submenuOnShownHandler.bind(this, $rootItem, submenu),\r\n onHiding: this._submenuOnHidingHandler.bind(this, $rootItem, submenu),\r\n onHidden: this._submenuOnHiddenHandler.bind(this, $rootItem, submenu)\r\n });\r\n each(submenus, (index, submenu) => {\r\n eventsEngine.off(submenu, submenuMouseLeaveName);\r\n eventsEngine.on(submenu, submenuMouseLeaveName, null, this._submenuMouseLeaveHandler.bind(this, $rootItem))\r\n })\r\n }\r\n _submenuOnShowingHandler($rootItem, submenu) {\r\n var $border = $rootItem.children(\".\".concat(DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS));\r\n this._actions.onSubmenuShowing({\r\n rootItem: getPublicElement($rootItem),\r\n submenu: submenu\r\n });\r\n $border.show();\r\n $rootItem.addClass(DX_MENU_ITEM_EXPANDED_CLASS)\r\n }\r\n _submenuOnShownHandler($rootItem, submenu) {\r\n this._actions.onSubmenuShown({\r\n rootItem: getPublicElement($rootItem),\r\n submenu: submenu\r\n })\r\n }\r\n _submenuOnHidingHandler($rootItem, submenu, eventArgs) {\r\n var $border = $rootItem.children(\".\".concat(DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS));\r\n var args = eventArgs;\r\n args.rootItem = getPublicElement($rootItem);\r\n args.submenu = submenu;\r\n this._actions.onSubmenuHiding(args);\r\n eventArgs = args;\r\n if (!eventArgs.cancel) {\r\n if (this._visibleSubmenu === submenu) {\r\n this._visibleSubmenu = null\r\n }\r\n $border.hide();\r\n $rootItem.removeClass(DX_MENU_ITEM_EXPANDED_CLASS)\r\n }\r\n }\r\n _submenuOnHiddenHandler($rootItem, submenu) {\r\n this._actions.onSubmenuHidden({\r\n rootItem: getPublicElement($rootItem),\r\n submenu: submenu\r\n })\r\n }\r\n _submenuMouseLeaveHandler($rootItem, eventArgs) {\r\n var target = $(eventArgs.relatedTarget).parents(\".\".concat(DX_CONTEXT_MENU_CLASS))[0];\r\n var contextMenu = this._getSubmenuByRootElement($rootItem).getOverlayContent()[0];\r\n if (this.option(\"hideSubmenuOnMouseLeave\") && target !== contextMenu) {\r\n this._clearTimeouts();\r\n setTimeout(this._hideSubmenuAfterTimeout.bind(this), this._getDelay(\"hide\"))\r\n }\r\n }\r\n _hideSubmenuAfterTimeout() {\r\n if (!this._visibleSubmenu) {\r\n return\r\n }\r\n var isRootItemHovered = $(this._visibleSubmenu.$element().context).hasClass(DX_STATE_HOVER_CLASS);\r\n var isSubmenuItemHovered = this._visibleSubmenu.getOverlayContent().find(\".\".concat(DX_STATE_HOVER_CLASS)).length;\r\n var hoveredElementFromSubMenu = this._visibleSubmenu.getOverlayContent().get(0).querySelector(\":hover\");\r\n if (!hoveredElementFromSubMenu && !isSubmenuItemHovered && !isRootItemHovered) {\r\n this._visibleSubmenu.hide()\r\n }\r\n }\r\n _getSubmenuByRootElement($rootItem) {\r\n if (!$rootItem) {\r\n return false\r\n }\r\n var $submenu = $rootItem.children(\".\".concat(DX_CONTEXT_MENU_CLASS));\r\n return $submenu.length && Submenu.getInstance($submenu)\r\n }\r\n getSubmenuPosition($rootItem) {\r\n var isHorizontalMenu = this._isMenuHorizontal();\r\n var submenuDirection = this.option(\"submenuDirection\").toLowerCase();\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var submenuPosition = {\r\n collision: \"flip\",\r\n of: $rootItem\r\n };\r\n switch (submenuDirection) {\r\n case \"leftortop\":\r\n submenuPosition.at = \"left top\";\r\n submenuPosition.my = isHorizontalMenu ? \"left bottom\" : \"right top\";\r\n break;\r\n case \"rightorbottom\":\r\n submenuPosition.at = isHorizontalMenu ? \"left bottom\" : \"right top\";\r\n submenuPosition.my = \"left top\";\r\n break;\r\n default:\r\n if (isHorizontalMenu) {\r\n submenuPosition.at = rtlEnabled ? \"right bottom\" : \"left bottom\";\r\n submenuPosition.my = rtlEnabled ? \"right top\" : \"left top\"\r\n } else {\r\n submenuPosition.at = rtlEnabled ? \"left top\" : \"right top\";\r\n submenuPosition.my = rtlEnabled ? \"right top\" : \"left top\"\r\n }\r\n }\r\n return submenuPosition\r\n }\r\n _renderBorderElement($item) {\r\n $(\"
\").appendTo($item).addClass(DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS).hide()\r\n }\r\n _itemPointerDownHandler(e) {\r\n var $target = $(e.target);\r\n var $closestItem = $target.closest(this._itemElements());\r\n if ($closestItem.hasClass(\"dx-menu-item-has-submenu\")) {\r\n this.option(\"focusedElement\", null);\r\n return\r\n }\r\n super._itemPointerDownHandler(e)\r\n }\r\n _hoverStartHandler(e) {\r\n var mouseMoveEventName = addNamespace(pointerEvents.move, this.NAME);\r\n var $item = this._getItemElementByEventArgs(e);\r\n var node = this._dataAdapter.getNodeByItem(this._getItemData($item));\r\n var isSelectionActive = isDefined(e.buttons) && 1 === e.buttons || !isDefined(e.buttons) && 1 === e.which;\r\n if (this._isItemDisabled($item)) {\r\n return\r\n }\r\n eventsEngine.off($item, mouseMoveEventName);\r\n if (!this._hasChildren(node)) {\r\n this._showSubmenuTimer = setTimeout(this._hideSubmenuAfterTimeout.bind(this), this._getDelay(\"hide\"));\r\n return\r\n }\r\n if (\"onHover\" === this._getShowFirstSubmenuMode() && !isSelectionActive) {\r\n var submenu = this._getSubmenuByElement($item);\r\n this._clearTimeouts();\r\n if (!submenu.isOverlayVisible()) {\r\n eventsEngine.on($item, mouseMoveEventName, this._itemMouseMoveHandler.bind(this));\r\n this._showSubmenuTimer = this._getDelay(\"hide\")\r\n }\r\n }\r\n }\r\n _hoverEndHandler(eventArg) {\r\n var $item = this._getItemElementByEventArgs(eventArg);\r\n var relatedTarget = $(eventArg.relatedTarget);\r\n super._hoverEndHandler(eventArg);\r\n this._clearTimeouts();\r\n if (this._isItemDisabled($item)) {\r\n return\r\n }\r\n if (relatedTarget.hasClass(DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS)) {\r\n return\r\n }\r\n if (this.option(\"hideSubmenuOnMouseLeave\") && !relatedTarget.hasClass(DX_MENU_ITEMS_CONTAINER_CLASS)) {\r\n this._hideSubmenuTimer = setTimeout(() => {\r\n this._hideSubmenuAfterTimeout()\r\n }, this._getDelay(\"hide\"))\r\n }\r\n }\r\n _hideVisibleSubmenu() {\r\n if (!this._visibleSubmenu) {\r\n return false\r\n }\r\n this._hideSubmenu(this._visibleSubmenu);\r\n return true\r\n }\r\n _showSubmenu($itemElement) {\r\n var submenu = this._getSubmenuByElement($itemElement);\r\n if (this._visibleSubmenu !== submenu) {\r\n this._hideVisibleSubmenu()\r\n }\r\n if (submenu) {\r\n this._clearTimeouts();\r\n submenu.show();\r\n this.option(\"focusedElement\", submenu.option(\"focusedElement\"))\r\n }\r\n this._visibleSubmenu = submenu;\r\n this._hoveredRootItem = $itemElement\r\n }\r\n _hideSubmenu(submenu) {\r\n submenu && submenu.hide();\r\n if (this._visibleSubmenu === submenu) {\r\n this._visibleSubmenu = null\r\n }\r\n this._hoveredRootItem = null\r\n }\r\n _itemMouseMoveHandler(e) {\r\n if (e.pointers && e.pointers.length) {\r\n return\r\n }\r\n var $item = $(e.currentTarget);\r\n if (!isDefined(this._showSubmenuTimer)) {\r\n return\r\n }\r\n this._clearTimeouts();\r\n this._showSubmenuTimer = setTimeout(() => {\r\n var submenu = this._getSubmenuByElement($item);\r\n if (submenu && !submenu.isOverlayVisible()) {\r\n this._showSubmenu($item)\r\n }\r\n }, this._getDelay(\"show\"))\r\n }\r\n _clearTimeouts() {\r\n clearTimeout(this._hideSubmenuTimer);\r\n clearTimeout(this._showSubmenuTimer)\r\n }\r\n _getSubmenuByElement($itemElement, itemData) {\r\n var submenu = this._getSubmenuByRootElement($itemElement);\r\n if (submenu) {\r\n return submenu\r\n } else {\r\n itemData = itemData || this._getItemData($itemElement);\r\n var node = this._dataAdapter.getNodeByItem(itemData);\r\n return this._hasChildren(node) && this._renderSubmenuItems(node, $itemElement)\r\n }\r\n }\r\n _updateSubmenuVisibilityOnClick(actionArgs) {\r\n var args = actionArgs.args.length && actionArgs.args[0];\r\n if (!args || this._disabledGetter(args.itemData)) {\r\n return\r\n }\r\n var $itemElement = $(args.itemElement);\r\n var currentSubmenu = this._getSubmenuByElement($itemElement, args.itemData);\r\n this._updateSelectedItemOnClick(actionArgs);\r\n if (this._visibleSubmenu) {\r\n if (this._visibleSubmenu === currentSubmenu) {\r\n if (\"onClick\" === this.option(\"showFirstSubmenuMode\")) {\r\n this._hideSubmenu(this._visibleSubmenu)\r\n }\r\n return\r\n } else {\r\n this._hideSubmenu(this._visibleSubmenu)\r\n }\r\n }\r\n if (!currentSubmenu) {\r\n return\r\n }\r\n if (!currentSubmenu.isOverlayVisible()) {\r\n this._showSubmenu($itemElement);\r\n return\r\n }\r\n }\r\n _optionChanged(args) {\r\n if (ACTIONS.indexOf(args.name) >= 0) {\r\n this._initActions();\r\n return\r\n }\r\n switch (args.name) {\r\n case \"orientation\":\r\n case \"submenuDirection\":\r\n this._invalidate();\r\n break;\r\n case \"showFirstSubmenuMode\":\r\n case \"hideSubmenuOnMouseLeave\":\r\n break;\r\n case \"showSubmenuMode\":\r\n this._changeSubmenusOption(args.name, args.value);\r\n break;\r\n case \"adaptivityEnabled\":\r\n args.value ? this._initAdaptivity() : this._removeAdaptivity();\r\n break;\r\n case \"width\":\r\n if (this._isAdaptivityEnabled()) {\r\n this._treeView.option(args.name, args.value);\r\n this._overlay.option(args.name, args.value)\r\n }\r\n super._optionChanged(args);\r\n this._dimensionChanged();\r\n break;\r\n case \"animation\":\r\n if (this._isAdaptivityEnabled()) {\r\n this._treeView.option(\"animationEnabled\", !!args.value)\r\n }\r\n super._optionChanged(args);\r\n break;\r\n default:\r\n if (this._isAdaptivityEnabled()) {\r\n this._treeView.option(args.name, args.value)\r\n }\r\n super._optionChanged(args)\r\n }\r\n }\r\n _changeSubmenusOption(name, value) {\r\n each(this._submenus, (index, submenu) => {\r\n submenu.option(name, value)\r\n })\r\n }\r\n selectItem(itemElement) {\r\n this._hideSubmenu(this._visibleSubmenu);\r\n super.selectItem(itemElement)\r\n }\r\n unselectItem(itemElement) {\r\n this._hideSubmenu(this._visibleSubmenu);\r\n super.selectItem(itemElement)\r\n }\r\n}\r\nregisterComponent(\"dxMenu\", Menu);\r\nexport default Menu;\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.search.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport dataQuery from \"../../data/query\";\r\nvar SEARCH_PANEL_CLASS = \"search-panel\";\r\nvar SEARCH_TEXT_CLASS = \"search-text\";\r\nvar HEADER_PANEL_CLASS = \"header-panel\";\r\nvar FILTERING_TIMEOUT = 700;\r\n\r\nfunction allowSearch(column) {\r\n return isDefined(column.allowSearch) ? column.allowSearch : column.allowFiltering\r\n}\r\n\r\nfunction parseValue(column, text) {\r\n var lookup = column.lookup;\r\n if (!column.parseValue) {\r\n return text\r\n }\r\n if (lookup) {\r\n return column.parseValue.call(lookup, text)\r\n }\r\n return column.parseValue(text)\r\n}\r\nexport var searchModule = {\r\n defaultOptions: function() {\r\n return {\r\n searchPanel: {\r\n visible: false,\r\n width: 160,\r\n placeholder: messageLocalization.format(\"dxDataGrid-searchPanelPlaceholder\"),\r\n highlightSearchText: true,\r\n highlightCaseSensitive: false,\r\n text: \"\",\r\n searchVisibleColumnsOnly: false\r\n }\r\n }\r\n },\r\n extenders: {\r\n controllers: {\r\n data: {\r\n publicMethods: function() {\r\n return this.callBase().concat([\"searchByText\"])\r\n },\r\n _calculateAdditionalFilter: function() {\r\n var filter = this.callBase();\r\n var searchFilter = function(that, text) {\r\n var i;\r\n var column;\r\n var columns = that._columnsController.getColumns();\r\n var searchVisibleColumnsOnly = that.option(\"searchPanel.searchVisibleColumnsOnly\");\r\n var lookup;\r\n var filters = [];\r\n if (!text) {\r\n return null\r\n }\r\n\r\n function onQueryDone(items) {\r\n var valueGetter = compileGetter(lookup.valueExpr);\r\n for (var _i = 0; _i < items.length; _i++) {\r\n var value = valueGetter(items[_i]);\r\n filters.push(column.createFilterExpression(value, null, \"search\"))\r\n }\r\n }\r\n for (i = 0; i < columns.length; i++) {\r\n column = columns[i];\r\n if (searchVisibleColumnsOnly && !column.visible) {\r\n continue\r\n }\r\n if (allowSearch(column) && column.calculateFilterExpression) {\r\n lookup = column.lookup;\r\n var filterValue = parseValue(column, text);\r\n if (lookup && lookup.items) {\r\n dataQuery(lookup.items).filter(column.createFilterExpression.call({\r\n dataField: lookup.displayExpr,\r\n dataType: lookup.dataType,\r\n calculateFilterExpression: column.calculateFilterExpression\r\n }, filterValue, null, \"search\")).enumerate().done(onQueryDone)\r\n } else if (void 0 !== filterValue) {\r\n filters.push(column.createFilterExpression(filterValue, null, \"search\"))\r\n }\r\n }\r\n }\r\n return gridCoreUtils.combineFilters(filters, \"or\")\r\n }(this, this.option(\"searchPanel.text\"));\r\n return gridCoreUtils.combineFilters([filter, searchFilter])\r\n },\r\n searchByText: function(text) {\r\n this.option(\"searchPanel.text\", text)\r\n },\r\n optionChanged: function(args) {\r\n switch (args.fullName) {\r\n case \"searchPanel.text\":\r\n case \"searchPanel\":\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 views: {\r\n headerPanel: function() {\r\n var getSearchPanelOptions = function(that) {\r\n return that.option(\"searchPanel\")\r\n };\r\n return {\r\n _getToolbarItems: function() {\r\n var items = this.callBase();\r\n return this._prepareSearchItem(items)\r\n },\r\n _prepareSearchItem: function(items) {\r\n var that = this;\r\n var dataController = that.getController(\"data\");\r\n var searchPanelOptions = getSearchPanelOptions(that);\r\n if (searchPanelOptions && searchPanelOptions.visible) {\r\n var toolbarItem = {\r\n template: function(data, index, container) {\r\n var $search = $(\"
\").addClass(that.addWidgetPrefix(SEARCH_PANEL_CLASS)).appendTo(container);\r\n that.getController(\"editorFactory\").createEditor($search, {\r\n width: searchPanelOptions.width,\r\n placeholder: searchPanelOptions.placeholder,\r\n parentType: \"searchPanel\",\r\n value: that.option(\"searchPanel.text\"),\r\n updateValueTimeout: FILTERING_TIMEOUT,\r\n setValue: function(value) {\r\n dataController.searchByText(value)\r\n },\r\n editorOptions: {\r\n inputAttr: {\r\n \"aria-label\": messageLocalization.format(\"\".concat(that.component.NAME, \"-ariaSearchInGrid\"))\r\n }\r\n }\r\n });\r\n that.resize()\r\n },\r\n name: \"searchPanel\",\r\n location: \"after\",\r\n locateInMenu: \"never\",\r\n sortIndex: 40\r\n };\r\n items.push(toolbarItem)\r\n }\r\n return items\r\n },\r\n getSearchTextEditor: function() {\r\n var that = this;\r\n var $element = that.element();\r\n var $searchPanel = $element.find(\".\" + that.addWidgetPrefix(SEARCH_PANEL_CLASS)).filter((function() {\r\n return $(this).closest(\".\" + that.addWidgetPrefix(HEADER_PANEL_CLASS)).is($element)\r\n }));\r\n if ($searchPanel.length) {\r\n return $searchPanel.dxTextBox(\"instance\")\r\n }\r\n return null\r\n },\r\n isVisible: function() {\r\n var searchPanelOptions = getSearchPanelOptions(this);\r\n return this.callBase() || searchPanelOptions && searchPanelOptions.visible\r\n },\r\n optionChanged: function(args) {\r\n if (\"searchPanel\" === args.name) {\r\n if (\"searchPanel.text\" === args.fullName) {\r\n var editor = this.getSearchTextEditor();\r\n if (editor) {\r\n editor.option(\"value\", args.value)\r\n }\r\n } else {\r\n this._invalidate()\r\n }\r\n args.handled = true\r\n } else {\r\n this.callBase(args)\r\n }\r\n }\r\n }\r\n }(),\r\n rowsView: {\r\n init: function() {\r\n this.callBase.apply(this, arguments);\r\n this._searchParams = []\r\n },\r\n _getFormattedSearchText: function(column, searchText) {\r\n var value = parseValue(column, searchText);\r\n var formatOptions = gridCoreUtils.getFormatOptionsByColumn(column, \"search\");\r\n return gridCoreUtils.formatValue(value, formatOptions)\r\n },\r\n _getStringNormalizer: function() {\r\n var isCaseSensitive = this.option(\"searchPanel.highlightCaseSensitive\");\r\n return function(str) {\r\n return isCaseSensitive ? str : str.toLowerCase()\r\n }\r\n },\r\n _findHighlightingTextNodes: function(column, cellElement, searchText) {\r\n var _$items;\r\n var $parent = cellElement.parent();\r\n var $items;\r\n var stringNormalizer = this._getStringNormalizer();\r\n var normalizedSearchText = stringNormalizer(searchText);\r\n if (!$parent.length) {\r\n $parent = $(\"
\").append(cellElement)\r\n } else if (column) {\r\n if (column.groupIndex >= 0 && !column.showWhenGrouped) {\r\n $items = cellElement\r\n } else {\r\n var columnIndex = this._columnsController.getVisibleIndex(column.index);\r\n $items = $parent.children(\"td\").eq(columnIndex).find(\"*\")\r\n }\r\n }\r\n $items = null !== (_$items = $items) && void 0 !== _$items && _$items.length ? $items : $parent.find(\"*\");\r\n $items = $items.filter((function(_, element) {\r\n var $contents = $(element).contents();\r\n for (var i = 0; i < $contents.length; i++) {\r\n var node = $contents.get(i);\r\n if (3 === node.nodeType) {\r\n return stringNormalizer(node.textContent || node.nodeValue).indexOf(normalizedSearchText) > -1\r\n }\r\n return false\r\n }\r\n }));\r\n return $items\r\n },\r\n _highlightSearchTextCore: function($textNode, searchText) {\r\n var $searchTextSpan = $(\"\").addClass(this.addWidgetPrefix(SEARCH_TEXT_CLASS));\r\n var text = $textNode.text();\r\n var firstContentElement = $textNode[0];\r\n var stringNormalizer = this._getStringNormalizer();\r\n var index = stringNormalizer(text).indexOf(stringNormalizer(searchText));\r\n if (index >= 0) {\r\n if (firstContentElement.textContent) {\r\n firstContentElement.textContent = text.substr(0, index)\r\n } else {\r\n firstContentElement.nodeValue = text.substr(0, index)\r\n }\r\n $textNode.after($searchTextSpan.text(text.substr(index, searchText.length)));\r\n $textNode = $(domAdapter.createTextNode(text.substr(index + searchText.length))).insertAfter($searchTextSpan);\r\n return this._highlightSearchTextCore($textNode, searchText)\r\n }\r\n },\r\n _highlightSearchText: function(cellElement, isEquals, column) {\r\n var that = this;\r\n var stringNormalizer = this._getStringNormalizer();\r\n var searchText = that.option(\"searchPanel.text\");\r\n if (isEquals && column) {\r\n searchText = searchText && that._getFormattedSearchText(column, searchText)\r\n }\r\n if (searchText && that.option(\"searchPanel.highlightSearchText\")) {\r\n var textNodes = that._findHighlightingTextNodes(column, cellElement, searchText);\r\n each(textNodes, (function(_, element) {\r\n each($(element).contents(), (function(_, textNode) {\r\n if (isEquals) {\r\n if (stringNormalizer($(textNode).text()) === stringNormalizer(searchText)) {\r\n $(this).replaceWith($(\"\").addClass(that.addWidgetPrefix(SEARCH_TEXT_CLASS)).text($(textNode).text()))\r\n }\r\n } else {\r\n that._highlightSearchTextCore($(textNode), searchText)\r\n }\r\n }))\r\n }))\r\n }\r\n },\r\n _renderCore: function() {\r\n this.callBase.apply(this, arguments);\r\n if (this.option(\"rowTemplate\")) {\r\n if (this.option(\"templatesRenderAsynchronously\")) {\r\n clearTimeout(this._highlightTimer);\r\n this._highlightTimer = setTimeout(function() {\r\n this._highlightSearchText(this.getTableElement())\r\n }.bind(this))\r\n } else {\r\n this._highlightSearchText(this.getTableElement())\r\n }\r\n }\r\n },\r\n _updateCell: function($cell, parameters) {\r\n var column = parameters.column;\r\n var dataType = column.lookup && column.lookup.dataType || column.dataType;\r\n var isEquals = \"string\" !== dataType;\r\n if (allowSearch(column) && !parameters.isOnForm) {\r\n if (this.option(\"templatesRenderAsynchronously\")) {\r\n if (!this._searchParams.length) {\r\n clearTimeout(this._highlightTimer);\r\n this._highlightTimer = setTimeout(function() {\r\n this._searchParams.forEach(function(params) {\r\n this._highlightSearchText.apply(this, params)\r\n }.bind(this));\r\n this._searchParams = []\r\n }.bind(this))\r\n }\r\n this._searchParams.push([$cell, isEquals, column])\r\n } else {\r\n this._highlightSearchText($cell, isEquals, column)\r\n }\r\n }\r\n this.callBase($cell, parameters)\r\n },\r\n dispose: function() {\r\n clearTimeout(this._highlightTimer);\r\n this.callBase()\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","import { render, EMPTY_OBJ, _CI, _MCCC, _HI, _RFC, _MFCC, _ME, _MP, _MR, _M } from 'inferno';\n\nvar ERROR_MSG = 'a runtime error occured! Use Inferno in development environment to find the error.';\nfunction isNullOrUndef(o) {\n return o === void 0 || o === null;\n}\nfunction isInvalid(o) {\n return o === null || o === false || o === true || o === void 0;\n}\nfunction isFunction(o) {\n return typeof o === 'function';\n}\nfunction isNull(o) {\n return o === null;\n}\nfunction throwError(message) {\n if (!message) {\n message = ERROR_MSG;\n }\n throw new Error((\"Inferno Error: \" + message));\n}\n\nfunction isSameInnerHTML(dom, innerHTML) {\n var tempdom = document.createElement('i');\n tempdom.innerHTML = innerHTML;\n return tempdom.innerHTML === dom.innerHTML;\n}\nfunction findLastDOMFromVNode(vNode) {\n var flags;\n var children;\n while (vNode) {\n flags = vNode.flags;\n if (flags & 2033 /* DOMRef */) {\n return vNode.dom;\n }\n children = vNode.children;\n if (flags & 8192 /* Fragment */) {\n vNode = vNode.childFlags === 2 /* HasVNodeChildren */ ? children : children[children.length - 1];\n }\n else if (flags & 4 /* ComponentClass */) {\n vNode = children.$LI;\n }\n else {\n vNode = children;\n }\n }\n return null;\n}\nfunction isSamePropsInnerHTML(dom, props) {\n return Boolean(props && props.dangerouslySetInnerHTML && props.dangerouslySetInnerHTML.__html && isSameInnerHTML(dom, props.dangerouslySetInnerHTML.__html));\n}\nfunction hydrateComponent(vNode, parentDOM, dom, context, isSVG, isClass, lifecycle) {\n var type = vNode.type;\n var ref = vNode.ref;\n var props = vNode.props || EMPTY_OBJ;\n var currentNode;\n if (isClass) {\n var instance = _CI(vNode, type, props, context, isSVG, lifecycle);\n var input = instance.$LI;\n currentNode = hydrateVNode(input, parentDOM, dom, instance.$CX, isSVG, lifecycle);\n _MCCC(ref, instance, lifecycle);\n }\n else {\n var input$1 = _HI(_RFC(vNode, context));\n currentNode = hydrateVNode(input$1, parentDOM, dom, context, isSVG, lifecycle);\n vNode.children = input$1;\n _MFCC(vNode, lifecycle);\n }\n return currentNode;\n}\nfunction hydrateChildren(parentVNode, parentNode, currentNode, context, isSVG, lifecycle) {\n var childFlags = parentVNode.childFlags;\n var children = parentVNode.children;\n var props = parentVNode.props;\n var flags = parentVNode.flags;\n if (childFlags !== 1 /* HasInvalidChildren */) {\n if (childFlags === 2 /* HasVNodeChildren */) {\n if (isNull(currentNode)) {\n _M(children, parentNode, context, isSVG, null, lifecycle);\n }\n else {\n currentNode = hydrateVNode(children, parentNode, currentNode, context, isSVG, lifecycle);\n currentNode = currentNode ? currentNode.nextSibling : null;\n }\n }\n else if (childFlags === 16 /* HasTextChildren */) {\n if (isNull(currentNode)) {\n parentNode.appendChild(document.createTextNode(children));\n }\n else if (parentNode.childNodes.length !== 1 || currentNode.nodeType !== 3) {\n parentNode.textContent = children;\n }\n else {\n if (currentNode.nodeValue !== children) {\n currentNode.nodeValue = children;\n }\n }\n currentNode = null;\n }\n else if (childFlags & 12 /* MultipleChildren */) {\n var prevVNodeIsTextNode = false;\n for (var i = 0, len = children.length; i < len; ++i) {\n var child = children[i];\n if (isNull(currentNode) || (prevVNodeIsTextNode && (child.flags & 16 /* Text */) > 0)) {\n _M(child, parentNode, context, isSVG, currentNode, lifecycle);\n }\n else {\n currentNode = hydrateVNode(child, parentNode, currentNode, context, isSVG, lifecycle);\n currentNode = currentNode ? currentNode.nextSibling : null;\n }\n prevVNodeIsTextNode = (child.flags & 16 /* Text */) > 0;\n }\n }\n // clear any other DOM nodes, there should be only a single entry for the root\n if ((flags & 8192 /* Fragment */) === 0) {\n var nextSibling = null;\n while (currentNode) {\n nextSibling = currentNode.nextSibling;\n parentNode.removeChild(currentNode);\n currentNode = nextSibling;\n }\n }\n }\n else if (!isNull(parentNode.firstChild) && !isSamePropsInnerHTML(parentNode, props)) {\n parentNode.textContent = ''; // dom has content, but VNode has no children remove everything from DOM\n if (flags & 448 /* FormElement */) {\n // If element is form element, we need to clear defaultValue also\n parentNode.defaultValue = '';\n }\n }\n}\nfunction hydrateElement(vNode, parentDOM, dom, context, isSVG, lifecycle) {\n var props = vNode.props;\n var className = vNode.className;\n var flags = vNode.flags;\n var ref = vNode.ref;\n isSVG = isSVG || (flags & 32 /* SvgElement */) > 0;\n if (dom.nodeType !== 1 || dom.tagName.toLowerCase() !== vNode.type) {\n _ME(vNode, null, context, isSVG, null, lifecycle);\n parentDOM.replaceChild(vNode.dom, dom);\n }\n else {\n vNode.dom = dom;\n hydrateChildren(vNode, dom, dom.firstChild, context, isSVG, lifecycle);\n if (!isNull(props)) {\n _MP(vNode, flags, props, dom, isSVG);\n }\n if (isNullOrUndef(className)) {\n if (dom.className !== '') {\n dom.removeAttribute('class');\n }\n }\n else if (isSVG) {\n dom.setAttribute('class', className);\n }\n else {\n dom.className = className;\n }\n _MR(ref, dom, lifecycle);\n }\n return vNode.dom;\n}\nfunction hydrateText(vNode, parentDOM, dom) {\n if (dom.nodeType !== 3) {\n parentDOM.replaceChild((vNode.dom = document.createTextNode(vNode.children)), dom);\n }\n else {\n var text = vNode.children;\n if (dom.nodeValue !== text) {\n dom.nodeValue = text;\n }\n vNode.dom = dom;\n }\n return vNode.dom;\n}\nfunction hydrateFragment(vNode, parentDOM, dom, context, isSVG, lifecycle) {\n var children = vNode.children;\n if (vNode.childFlags === 2 /* HasVNodeChildren */) {\n hydrateText(children, parentDOM, dom);\n return children.dom;\n }\n hydrateChildren(vNode, parentDOM, dom, context, isSVG, lifecycle);\n return findLastDOMFromVNode(children[children.length - 1]);\n}\nfunction hydrateVNode(vNode, parentDOM, currentDom, context, isSVG, lifecycle) {\n var flags = (vNode.flags |= 16384 /* InUse */);\n if (flags & 14 /* Component */) {\n return hydrateComponent(vNode, parentDOM, currentDom, context, isSVG, (flags & 4 /* ComponentClass */) > 0, lifecycle);\n }\n if (flags & 481 /* Element */) {\n return hydrateElement(vNode, parentDOM, currentDom, context, isSVG, lifecycle);\n }\n if (flags & 16 /* Text */) {\n return hydrateText(vNode, parentDOM, currentDom);\n }\n if (flags & 512 /* Void */) {\n return (vNode.dom = currentDom);\n }\n if (flags & 8192 /* Fragment */) {\n return hydrateFragment(vNode, parentDOM, currentDom, context, isSVG, lifecycle);\n }\n throwError();\n return null;\n}\nfunction hydrate(input, parentDOM, callback) {\n var dom = parentDOM.firstChild;\n if (isNull(dom)) {\n render(input, parentDOM, callback);\n }\n else {\n var lifecycle = [];\n if (!isInvalid(input)) {\n dom = hydrateVNode(input, parentDOM, dom, {}, false, lifecycle);\n }\n // clear any other DOM nodes, there should be only a single entry for the root\n while (dom && (dom = dom.nextSibling)) {\n parentDOM.removeChild(dom);\n }\n if (lifecycle.length > 0) {\n var listener;\n while ((listener = lifecycle.shift()) !== undefined) {\n listener();\n }\n }\n }\n parentDOM.$V = input;\n if (isFunction(callback)) {\n callback();\n }\n}\n\nexport { hydrate };\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/utils.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isPlainObject\r\n} from \"../../core/utils/type\";\r\nexport var addAttributes = ($element, attributes) => {\r\n each(attributes, (_, _ref) => {\r\n var {\r\n name: name,\r\n value: value\r\n } = _ref;\r\n if (\"class\" === name) {\r\n $element.addClass(value)\r\n } else {\r\n $element.attr(name, value)\r\n }\r\n })\r\n};\r\nexport function getAriaName(name) {\r\n return \"role\" === name || \"id\" === name ? name : \"aria-\".concat(name)\r\n}\r\nexport var removeDifferentElements = ($children, $newChildren) => {\r\n each($newChildren, (__, element) => {\r\n var hasComponent = false;\r\n each($children, (_, oldElement) => {\r\n if (element === oldElement) {\r\n hasComponent = true\r\n }\r\n });\r\n if (!hasComponent && element.parentNode) {\r\n element.parentNode.removeChild(element)\r\n }\r\n })\r\n};\r\nexport function updatePropsImmutable(props, option, name, fullName) {\r\n var currentPropsValue = option[name];\r\n var result = props;\r\n if (name !== fullName) {\r\n if (Array.isArray(currentPropsValue)) {\r\n var newArray = [...currentPropsValue];\r\n result[name] = newArray;\r\n var matchIndex = /\\[\\s*(\\d+)\\s*\\]/g.exec(fullName);\r\n if (matchIndex) {\r\n var index = parseInt(matchIndex[1], 10);\r\n if (isPlainObject(newArray[index])) {\r\n newArray[index] = _extends({}, currentPropsValue[index])\r\n }\r\n }\r\n return\r\n }\r\n }\r\n if (isPlainObject(currentPropsValue)) {\r\n result[name] = _extends({}, currentPropsValue)\r\n } else {\r\n result[name] = currentPropsValue\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/polyfills/number.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n hasWindow,\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nvar number = hasWindow() ? getWindow().Number : Number;\r\nnumber.isFinite = number.isFinite || function(value) {\r\n return \"number\" === typeof value && isFinite(value)\r\n};\r\nexport default number;\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/template_wrapper.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n InfernoComponent,\r\n InfernoEffect\r\n} from \"@devextreme/vdom\";\r\nimport {\r\n findDOMfromVNode\r\n} from \"inferno\";\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n removeDifferentElements\r\n} from \"./utils\";\r\nimport Number from \"../../core/polyfills/number\";\r\nexport class TemplateWrapper extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.renderTemplate = this.renderTemplate.bind(this)\r\n }\r\n renderTemplate() {\r\n var node = findDOMfromVNode(this.$LI, true);\r\n if (node) {\r\n var {\r\n parentNode: parentNode\r\n } = node;\r\n if (parentNode) {\r\n var _this$props$model;\r\n parentNode.removeChild(node);\r\n var $parent = $(parentNode);\r\n var $children = $parent.contents();\r\n var {\r\n data: data,\r\n index: index\r\n } = null !== (_this$props$model = this.props.model) && void 0 !== _this$props$model ? _this$props$model : {\r\n data: {}\r\n };\r\n Object.keys(data).forEach(name => {\r\n if (data[name] && domAdapter.isNode(data[name])) {\r\n data[name] = getPublicElement($(data[name]))\r\n }\r\n });\r\n this.props.template.render(_extends({\r\n container: getPublicElement($parent),\r\n transclude: this.props.transclude\r\n }, !this.props.transclude ? {\r\n model: data\r\n } : {}, !this.props.transclude && Number.isFinite(index) ? {\r\n index: index\r\n } : {}));\r\n return () => {\r\n removeDifferentElements($children, $parent.contents());\r\n parentNode.appendChild(node)\r\n }\r\n }\r\n }\r\n return\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.renderTemplate, [this.props.template, this.props.model])]\r\n }\r\n updateEffects() {\r\n this._effects[0].update([this.props.template, this.props.model])\r\n }\r\n componentWillUnmount() {}\r\n render() {\r\n return null\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/component.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n render,\r\n createRef\r\n} from \"inferno\";\r\nimport {\r\n createElement\r\n} from \"inferno-create-element\";\r\nimport {\r\n hydrate\r\n} from \"inferno-hydrate\";\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport DOMComponent from \"../../core/dom_component\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n isDefined,\r\n isRenderer\r\n} from \"../../core/utils/type\";\r\nimport {\r\n InfernoEffectHost\r\n} from \"@devextreme/vdom\";\r\nimport {\r\n TemplateWrapper\r\n} from \"./template_wrapper\";\r\nimport {\r\n updatePropsImmutable\r\n} from \"./utils\";\r\nvar setDefaultOptionValue = (options, defaultValueGetter) => name => {\r\n if (options.hasOwnProperty(name) && void 0 === options[name]) {\r\n options[name] = defaultValueGetter(name)\r\n }\r\n};\r\nexport default class ComponentWrapper extends DOMComponent {\r\n constructor() {\r\n super(...arguments);\r\n this._disposeMethodCalled = false\r\n }\r\n get _propsInfo() {\r\n return {\r\n allowNull: [],\r\n twoWay: [],\r\n elements: [],\r\n templates: [],\r\n props: []\r\n }\r\n }\r\n get viewRef() {\r\n var _this$_viewRef;\r\n return null === (_this$_viewRef = this._viewRef) || void 0 === _this$_viewRef ? void 0 : _this$_viewRef.current\r\n }\r\n _getDefaultOptions() {\r\n return extend(true, super._getDefaultOptions(), this._viewComponent.defaultProps, this._propsInfo.twoWay.reduce((options, _ref) => {\r\n var [name, defaultValue, eventName] = _ref;\r\n return _extends({}, options, {\r\n [name]: defaultValue,\r\n [eventName]: value => this.option(name, value)\r\n })\r\n }, {}), this._propsInfo.templates.reduce((options, name) => _extends({}, options, {\r\n [name]: null\r\n }), {}))\r\n }\r\n _initMarkup() {\r\n var props = this.getProps();\r\n this._renderWrapper(props)\r\n }\r\n _renderWrapper(props) {\r\n var containerNode = this.$element()[0];\r\n var parentNode = containerNode.parentNode;\r\n if (!this._isNodeReplaced) {\r\n var nextNode = null === containerNode || void 0 === containerNode ? void 0 : containerNode.nextSibling;\r\n var rootNode = domAdapter.createElement(\"div\");\r\n rootNode.appendChild(containerNode);\r\n var mountNode = this._documentFragment.appendChild(rootNode);\r\n InfernoEffectHost.lock();\r\n hydrate(createElement(this._viewComponent, props), mountNode);\r\n containerNode.$V = mountNode.$V;\r\n if (parentNode) {\r\n parentNode.insertBefore(containerNode, nextNode)\r\n }\r\n InfernoEffectHost.callEffects();\r\n this._isNodeReplaced = true\r\n } else {\r\n render(createElement(this._viewComponent, props), containerNode)\r\n }\r\n }\r\n _render() {}\r\n dispose() {\r\n this._disposeMethodCalled = true;\r\n super.dispose()\r\n }\r\n _dispose() {\r\n var containerNode = this.$element()[0];\r\n var parentNode = containerNode.parentNode;\r\n parentNode.$V = containerNode.$V;\r\n containerNode.$V = null;\r\n render(this._disposeMethodCalled ? createElement(containerNode.tagName, this.elementAttr) : null, parentNode);\r\n delete parentNode.$V;\r\n super._dispose()\r\n }\r\n get elementAttr() {\r\n var _this$_storedClasses;\r\n if (!this._elementAttr) {\r\n var {\r\n attributes: attributes\r\n } = this.$element()[0];\r\n this._elementAttr = _extends({}, Object.keys(attributes).reduce((a, key) => {\r\n if (attributes[key].specified) {\r\n a[attributes[key].name] = attributes[key].value\r\n }\r\n return a\r\n }, {}))\r\n }\r\n var elemStyle = this.$element()[0].style;\r\n var style = {};\r\n for (var i = 0; i < elemStyle.length; i++) {\r\n style[elemStyle[i]] = elemStyle.getPropertyValue(elemStyle[i])\r\n }\r\n this._elementAttr.style = style;\r\n var cssClass = this.$element()[0].getAttribute(\"class\") || \"\";\r\n this._storedClasses = null !== (_this$_storedClasses = this._storedClasses) && void 0 !== _this$_storedClasses ? _this$_storedClasses : cssClass.split(\" \").filter(name => 0 === name.indexOf(\"dx-\")).join(\" \");\r\n this._elementAttr.class = cssClass.split(\" \").filter(name => 0 !== name.indexOf(\"dx-\")).concat(this._storedClasses).join(\" \").trim();\r\n return this._elementAttr\r\n }\r\n _patchOptionValues(options) {\r\n var {\r\n allowNull: allowNull,\r\n elements: elements,\r\n props: props,\r\n twoWay: twoWay\r\n } = this._propsInfo;\r\n var defaultProps = this._viewComponent.defaultProps;\r\n var widgetProps = props.reduce((acc, propName) => {\r\n if (options.hasOwnProperty(propName)) {\r\n acc[propName] = options[propName]\r\n }\r\n return acc\r\n }, {\r\n ref: options.ref,\r\n children: options.children\r\n });\r\n allowNull.forEach(setDefaultOptionValue(widgetProps, () => null));\r\n Object.keys(defaultProps).forEach(setDefaultOptionValue(widgetProps, name => defaultProps[name]));\r\n twoWay.forEach(_ref2 => {\r\n var [name, defaultValue] = _ref2;\r\n return setDefaultOptionValue(widgetProps, () => defaultValue)(name)\r\n });\r\n elements.forEach(name => {\r\n if (name in widgetProps) {\r\n var value = widgetProps[name];\r\n if (isRenderer(value)) {\r\n widgetProps[name] = this._patchElementParam(value)\r\n }\r\n }\r\n });\r\n return widgetProps\r\n }\r\n getProps() {\r\n var {\r\n elementAttr: elementAttr\r\n } = this.option();\r\n var options = this._patchOptionValues(_extends({}, this._props, {\r\n ref: this._viewRef,\r\n children: this._extractDefaultSlot()\r\n }));\r\n this._propsInfo.templates.forEach(template => {\r\n options[template] = this._componentTemplates[template]\r\n });\r\n return _extends({}, options, this.elementAttr, elementAttr, {\r\n className: [...(this.elementAttr.class || \"\").split(\" \"), ...(elementAttr.class || \"\").split(\" \")].filter((c, i, a) => c && a.indexOf(c) === i).join(\" \").trim(),\r\n class: \"\"\r\n }, this._actionsMap)\r\n }\r\n _getActionConfigs() {\r\n return {}\r\n }\r\n _init() {\r\n super._init();\r\n this._props = _extends({}, this.option());\r\n this._documentFragment = domAdapter.createDocumentFragment();\r\n this._actionsMap = {};\r\n this._componentTemplates = {};\r\n this._propsInfo.templates.forEach(template => {\r\n this._componentTemplates[template] = this._createTemplateComponent(this._props[template])\r\n });\r\n Object.keys(this._getActionConfigs()).forEach(name => this._addAction(name));\r\n this._viewRef = createRef();\r\n this._supportedKeys = () => ({})\r\n }\r\n _addAction(event, action) {\r\n if (!action) {\r\n var actionByOption = this._createActionByOption(event, this._getActionConfigs()[event]);\r\n action = function(actArgs) {\r\n Object.keys(actArgs).forEach(name => {\r\n if (isDefined(actArgs[name]) && domAdapter.isNode(actArgs[name])) {\r\n actArgs[name] = getPublicElement($(actArgs[name]))\r\n }\r\n });\r\n return actionByOption(actArgs)\r\n }\r\n }\r\n this._actionsMap[event] = action\r\n }\r\n _optionChanged(option) {\r\n var {\r\n fullName: fullName,\r\n name: name,\r\n value: value\r\n } = option;\r\n updatePropsImmutable(this._props, this.option(), name, fullName);\r\n if (this._propsInfo.templates.indexOf(name) > -1) {\r\n this._componentTemplates[name] = this._createTemplateComponent(value)\r\n }\r\n if (name && this._getActionConfigs()[name]) {\r\n this._addAction(name)\r\n }\r\n super._optionChanged(option);\r\n this._invalidate()\r\n }\r\n _extractDefaultSlot() {\r\n if (this.option(\"_hasAnonymousTemplateContent\")) {\r\n return createElement(TemplateWrapper, {\r\n template: this._getTemplate(this._templateManager.anonymousTemplateName),\r\n transclude: true\r\n })\r\n }\r\n return null\r\n }\r\n _createTemplateComponent(templateOption) {\r\n if (!templateOption) {\r\n return\r\n }\r\n var template = this._getTemplate(templateOption);\r\n return model => createElement(TemplateWrapper, {\r\n template: template,\r\n model: model\r\n })\r\n }\r\n _wrapKeyDownHandler(handler) {\r\n return options => {\r\n var {\r\n keyName: keyName,\r\n originalEvent: originalEvent,\r\n which: which\r\n } = options;\r\n var keys = this._supportedKeys();\r\n var func = keys[keyName] || keys[which];\r\n if (void 0 !== func) {\r\n var _handler = func.bind(this);\r\n var result = _handler(originalEvent, options);\r\n if (!result) {\r\n originalEvent.cancel = true;\r\n return originalEvent\r\n }\r\n }\r\n return null === handler || void 0 === handler ? void 0 : handler(originalEvent, options)\r\n }\r\n }\r\n _toPublicElement(element) {\r\n return getPublicElement($(element))\r\n }\r\n _patchElementParam(value) {\r\n var _result, _result2;\r\n var result;\r\n try {\r\n result = $(value)\r\n } catch (error) {\r\n return value\r\n }\r\n result = null === (_result = result) || void 0 === _result ? void 0 : _result.get(0);\r\n return null !== (_result2 = result) && void 0 !== _result2 && _result2.nodeType ? result : value\r\n }\r\n repaint() {\r\n this._isNodeReplaced = false;\r\n this._refresh()\r\n }\r\n registerKeyHandler(key, handler) {\r\n var currentKeys = this._supportedKeys();\r\n this._supportedKeys = () => _extends({}, currentKeys, {\r\n [key]: handler\r\n })\r\n }\r\n setAria(name, value) {\r\n throw new Error('\"setAria\" method is deprecated, use \"aria\" property instead')\r\n }\r\n}\r\nComponentWrapper.IS_RENOVATED_WIDGET = false;\r\nComponentWrapper.IS_RENOVATED_WIDGET = true;\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.header_panel.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Toolbar from \"../toolbar\";\r\nimport {\r\n ColumnsView\r\n} from \"./ui.grid_core.columns_view\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n triggerResizeEvent\r\n} from \"../../events/visibility_change\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport \"../drop_down_menu\";\r\nvar HEADER_PANEL_CLASS = \"header-panel\";\r\nvar TOOLBAR_BUTTON_CLASS = \"toolbar-button\";\r\nvar TOOLBAR_ARIA_LABEL = \"-ariaToolbar\";\r\nvar HeaderPanel = ColumnsView.inherit({\r\n _getToolbarItems: function() {\r\n return []\r\n },\r\n _getButtonContainer: function() {\r\n return $(\"
\").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 && !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 = messageLocalization.format(this.component.NAME + TOOLBAR_ARIA_LABEL);\r\n var $toolbar = $(\"
\").attr(\"aria-label\", label).appendTo($headerPanel);\r\n this._toolbar = this._createComponent($toolbar, Toolbar, this._toolbarOptions)\r\n } else {\r\n this._toolbar.option(this._toolbarOptions)\r\n }\r\n },\r\n _columnOptionChanged: 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 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: noop\r\n});\r\nexport var headerPanelModule = {\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\n","/**\r\n * DevExtreme (esm/color.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar standardColorNames = {\r\n aliceblue: \"f0f8ff\",\r\n antiquewhite: \"faebd7\",\r\n aqua: \"00ffff\",\r\n aquamarine: \"7fffd4\",\r\n azure: \"f0ffff\",\r\n beige: \"f5f5dc\",\r\n bisque: \"ffe4c4\",\r\n black: \"000000\",\r\n blanchedalmond: \"ffebcd\",\r\n blue: \"0000ff\",\r\n blueviolet: \"8a2be2\",\r\n brown: \"a52a2a\",\r\n burlywood: \"deb887\",\r\n cadetblue: \"5f9ea0\",\r\n chartreuse: \"7fff00\",\r\n chocolate: \"d2691e\",\r\n coral: \"ff7f50\",\r\n cornflowerblue: \"6495ed\",\r\n cornsilk: \"fff8dc\",\r\n crimson: \"dc143c\",\r\n cyan: \"00ffff\",\r\n darkblue: \"00008b\",\r\n darkcyan: \"008b8b\",\r\n darkgoldenrod: \"b8860b\",\r\n darkgray: \"a9a9a9\",\r\n darkgreen: \"006400\",\r\n darkkhaki: \"bdb76b\",\r\n darkmagenta: \"8b008b\",\r\n darkolivegreen: \"556b2f\",\r\n darkorange: \"ff8c00\",\r\n darkorchid: \"9932cc\",\r\n darkred: \"8b0000\",\r\n darksalmon: \"e9967a\",\r\n darkseagreen: \"8fbc8f\",\r\n darkslateblue: \"483d8b\",\r\n darkslategray: \"2f4f4f\",\r\n darkturquoise: \"00ced1\",\r\n darkviolet: \"9400d3\",\r\n deeppink: \"ff1493\",\r\n deepskyblue: \"00bfff\",\r\n dimgray: \"696969\",\r\n dodgerblue: \"1e90ff\",\r\n feldspar: \"d19275\",\r\n firebrick: \"b22222\",\r\n floralwhite: \"fffaf0\",\r\n forestgreen: \"228b22\",\r\n fuchsia: \"ff00ff\",\r\n gainsboro: \"dcdcdc\",\r\n ghostwhite: \"f8f8ff\",\r\n gold: \"ffd700\",\r\n goldenrod: \"daa520\",\r\n gray: \"808080\",\r\n green: \"008000\",\r\n greenyellow: \"adff2f\",\r\n honeydew: \"f0fff0\",\r\n hotpink: \"ff69b4\",\r\n indianred: \"cd5c5c\",\r\n indigo: \"4b0082\",\r\n ivory: \"fffff0\",\r\n khaki: \"f0e68c\",\r\n lavender: \"e6e6fa\",\r\n lavenderblush: \"fff0f5\",\r\n lawngreen: \"7cfc00\",\r\n lemonchiffon: \"fffacd\",\r\n lightblue: \"add8e6\",\r\n lightcoral: \"f08080\",\r\n lightcyan: \"e0ffff\",\r\n lightgoldenrodyellow: \"fafad2\",\r\n lightgrey: \"d3d3d3\",\r\n lightgreen: \"90ee90\",\r\n lightpink: \"ffb6c1\",\r\n lightsalmon: \"ffa07a\",\r\n lightseagreen: \"20b2aa\",\r\n lightskyblue: \"87cefa\",\r\n lightslateblue: \"8470ff\",\r\n lightslategray: \"778899\",\r\n lightsteelblue: \"b0c4de\",\r\n lightyellow: \"ffffe0\",\r\n lime: \"00ff00\",\r\n limegreen: \"32cd32\",\r\n linen: \"faf0e6\",\r\n magenta: \"ff00ff\",\r\n maroon: \"800000\",\r\n mediumaquamarine: \"66cdaa\",\r\n mediumblue: \"0000cd\",\r\n mediumorchid: \"ba55d3\",\r\n mediumpurple: \"9370d8\",\r\n mediumseagreen: \"3cb371\",\r\n mediumslateblue: \"7b68ee\",\r\n mediumspringgreen: \"00fa9a\",\r\n mediumturquoise: \"48d1cc\",\r\n mediumvioletred: \"c71585\",\r\n midnightblue: \"191970\",\r\n mintcream: \"f5fffa\",\r\n mistyrose: \"ffe4e1\",\r\n moccasin: \"ffe4b5\",\r\n navajowhite: \"ffdead\",\r\n navy: \"000080\",\r\n oldlace: \"fdf5e6\",\r\n olive: \"808000\",\r\n olivedrab: \"6b8e23\",\r\n orange: \"ffa500\",\r\n orangered: \"ff4500\",\r\n orchid: \"da70d6\",\r\n palegoldenrod: \"eee8aa\",\r\n palegreen: \"98fb98\",\r\n paleturquoise: \"afeeee\",\r\n palevioletred: \"d87093\",\r\n papayawhip: \"ffefd5\",\r\n peachpuff: \"ffdab9\",\r\n peru: \"cd853f\",\r\n pink: \"ffc0cb\",\r\n plum: \"dda0dd\",\r\n powderblue: \"b0e0e6\",\r\n purple: \"800080\",\r\n rebeccapurple: \"663399\",\r\n red: \"ff0000\",\r\n rosybrown: \"bc8f8f\",\r\n royalblue: \"4169e1\",\r\n saddlebrown: \"8b4513\",\r\n salmon: \"fa8072\",\r\n sandybrown: \"f4a460\",\r\n seagreen: \"2e8b57\",\r\n seashell: \"fff5ee\",\r\n sienna: \"a0522d\",\r\n silver: \"c0c0c0\",\r\n skyblue: \"87ceeb\",\r\n slateblue: \"6a5acd\",\r\n slategray: \"708090\",\r\n snow: \"fffafa\",\r\n springgreen: \"00ff7f\",\r\n steelblue: \"4682b4\",\r\n tan: \"d2b48c\",\r\n teal: \"008080\",\r\n thistle: \"d8bfd8\",\r\n tomato: \"ff6347\",\r\n turquoise: \"40e0d0\",\r\n violet: \"ee82ee\",\r\n violetred: \"d02090\",\r\n wheat: \"f5deb3\",\r\n white: \"ffffff\",\r\n whitesmoke: \"f5f5f5\",\r\n yellow: \"ffff00\",\r\n yellowgreen: \"9acd32\"\r\n};\r\nvar standardColorTypes = [{\r\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\r\n process: function(colorString) {\r\n return [parseInt(colorString[1], 10), parseInt(colorString[2], 10), parseInt(colorString[3], 10)]\r\n }\r\n}, {\r\n re: /^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d*\\.*\\d+)\\)$/,\r\n process: function(colorString) {\r\n return [parseInt(colorString[1], 10), parseInt(colorString[2], 10), parseInt(colorString[3], 10), parseFloat(colorString[4])]\r\n }\r\n}, {\r\n re: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/,\r\n process: function(colorString) {\r\n return [parseInt(colorString[1], 16), parseInt(colorString[2], 16), parseInt(colorString[3], 16)]\r\n }\r\n}, {\r\n re: /^#([a-f0-9]{1})([a-f0-9]{1})([a-f0-9]{1})$/,\r\n process: function(colorString) {\r\n return [parseInt(colorString[1] + colorString[1], 16), parseInt(colorString[2] + colorString[2], 16), parseInt(colorString[3] + colorString[3], 16)]\r\n }\r\n}, {\r\n re: /^hsv\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\r\n process: function(colorString) {\r\n var h = parseInt(colorString[1], 10);\r\n var s = parseInt(colorString[2], 10);\r\n var v = parseInt(colorString[3], 10);\r\n var rgb = hsvToRgb(h, s, v);\r\n return [rgb[0], rgb[1], rgb[2], 1, [h, s, v]]\r\n }\r\n}, {\r\n re: /^hsl\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\r\n process: function(colorString) {\r\n var h = parseInt(colorString[1], 10);\r\n var s = parseInt(colorString[2], 10);\r\n var l = parseInt(colorString[3], 10);\r\n var rgb = hslToRgb(h, s, l);\r\n return [rgb[0], rgb[1], rgb[2], 1, null, [h, s, l]]\r\n }\r\n}];\r\nvar _round = Math.round;\r\n\r\nfunction Color(value) {\r\n this.baseColor = value;\r\n var color;\r\n if (value) {\r\n color = String(value).toLowerCase().replace(/ /g, \"\");\r\n color = standardColorNames[color] ? \"#\" + standardColorNames[color] : color;\r\n color = parseColor(color)\r\n }\r\n if (!color) {\r\n this.colorIsInvalid = true\r\n }\r\n color = color || {};\r\n this.r = normalize(color[0]);\r\n this.g = normalize(color[1]);\r\n this.b = normalize(color[2]);\r\n this.a = normalize(color[3], 1, 1);\r\n if (color[4]) {\r\n this.hsv = {\r\n h: color[4][0],\r\n s: color[4][1],\r\n v: color[4][2]\r\n }\r\n } else {\r\n this.hsv = toHsvFromRgb(this.r, this.g, this.b)\r\n }\r\n if (color[5]) {\r\n this.hsl = {\r\n h: color[5][0],\r\n s: color[5][1],\r\n l: color[5][2]\r\n }\r\n } else {\r\n this.hsl = toHslFromRgb(this.r, this.g, this.b)\r\n }\r\n}\r\n\r\nfunction parseColor(color) {\r\n if (\"transparent\" === color) {\r\n return [0, 0, 0, 0]\r\n }\r\n var i = 0;\r\n var ii = standardColorTypes.length;\r\n var str;\r\n for (; i < ii; ++i) {\r\n str = standardColorTypes[i].re.exec(color);\r\n if (str) {\r\n return standardColorTypes[i].process(str)\r\n }\r\n }\r\n return null\r\n}\r\n\r\nfunction normalize(colorComponent, def, max) {\r\n def = def || 0;\r\n max = max || 255;\r\n return colorComponent < 0 || isNaN(colorComponent) ? def : colorComponent > max ? max : colorComponent\r\n}\r\n\r\nfunction toHexFromRgb(r, g, b) {\r\n return \"#\" + (16777216 | r << 16 | g << 8 | b).toString(16).slice(1)\r\n}\r\n\r\nfunction toHsvFromRgb(r, g, b) {\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var delta = max - min;\r\n var H;\r\n var S;\r\n var V = max;\r\n S = 0 === max ? 0 : 1 - min / max;\r\n if (max === min) {\r\n H = 0\r\n } else {\r\n switch (max) {\r\n case r:\r\n H = (g - b) / delta * 60;\r\n if (g < b) {\r\n H += 360\r\n }\r\n break;\r\n case g:\r\n H = (b - r) / delta * 60 + 120;\r\n break;\r\n case b:\r\n H = (r - g) / delta * 60 + 240\r\n }\r\n }\r\n S *= 100;\r\n V *= 100 / 255;\r\n return {\r\n h: Math.round(H),\r\n s: Math.round(S),\r\n v: Math.round(V)\r\n }\r\n}\r\n\r\nfunction hsvToRgb(h, s, v) {\r\n var index = Math.floor(h % 360 / 60);\r\n var vMin = (100 - s) * v / 100;\r\n var a = h % 60 / 60 * (v - vMin);\r\n var vInc = vMin + a;\r\n var vDec = v - a;\r\n var r;\r\n var g;\r\n var b;\r\n switch (index) {\r\n case 0:\r\n r = v;\r\n g = vInc;\r\n b = vMin;\r\n break;\r\n case 1:\r\n r = vDec;\r\n g = v;\r\n b = vMin;\r\n break;\r\n case 2:\r\n r = vMin;\r\n g = v;\r\n b = vInc;\r\n break;\r\n case 3:\r\n r = vMin;\r\n g = vDec;\r\n b = v;\r\n break;\r\n case 4:\r\n r = vInc;\r\n g = vMin;\r\n b = v;\r\n break;\r\n case 5:\r\n r = v;\r\n g = vMin;\r\n b = vDec\r\n }\r\n return [Math.round(2.55 * r), Math.round(2.55 * g), Math.round(2.55 * b)]\r\n}\r\n\r\nfunction calculateHue(r, g, b, delta) {\r\n var max = Math.max(r, g, b);\r\n switch (max) {\r\n case r:\r\n return (g - b) / delta + (g < b ? 6 : 0);\r\n case g:\r\n return (b - r) / delta + 2;\r\n case b:\r\n return (r - g) / delta + 4\r\n }\r\n}\r\n\r\nfunction toHslFromRgb(r, g, b) {\r\n r = convertTo01Bounds(r, 255);\r\n g = convertTo01Bounds(g, 255);\r\n b = convertTo01Bounds(b, 255);\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var maxMinSum = max + min;\r\n var h;\r\n var s;\r\n var l = maxMinSum / 2;\r\n if (max === min) {\r\n h = s = 0\r\n } else {\r\n var delta = max - min;\r\n if (l > .5) {\r\n s = delta / (2 - maxMinSum)\r\n } else {\r\n s = delta / maxMinSum\r\n }\r\n h = calculateHue(r, g, b, delta);\r\n h /= 6\r\n }\r\n return {\r\n h: _round(360 * h),\r\n s: _round(100 * s),\r\n l: _round(100 * l)\r\n }\r\n}\r\n\r\nfunction makeColorTint(colorPart, h) {\r\n var colorTint = h;\r\n if (\"r\" === colorPart) {\r\n colorTint = h + 1 / 3\r\n }\r\n if (\"b\" === colorPart) {\r\n colorTint = h - 1 / 3\r\n }\r\n return colorTint\r\n}\r\n\r\nfunction modifyColorTint(colorTint) {\r\n if (colorTint < 0) {\r\n colorTint += 1\r\n }\r\n if (colorTint > 1) {\r\n colorTint -= 1\r\n }\r\n return colorTint\r\n}\r\n\r\nfunction hueToRgb(p, q, colorTint) {\r\n colorTint = modifyColorTint(colorTint);\r\n if (colorTint < 1 / 6) {\r\n return p + 6 * (q - p) * colorTint\r\n }\r\n if (colorTint < .5) {\r\n return q\r\n }\r\n if (colorTint < 2 / 3) {\r\n return p + (q - p) * (2 / 3 - colorTint) * 6\r\n }\r\n return p\r\n}\r\n\r\nfunction hslToRgb(h, s, l) {\r\n var r;\r\n var g;\r\n var b;\r\n h = convertTo01Bounds(h, 360);\r\n s = convertTo01Bounds(s, 100);\r\n l = convertTo01Bounds(l, 100);\r\n if (0 === s) {\r\n r = g = b = l\r\n } else {\r\n var q = l < .5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hueToRgb(p, q, makeColorTint(\"r\", h));\r\n g = hueToRgb(p, q, makeColorTint(\"g\", h));\r\n b = hueToRgb(p, q, makeColorTint(\"b\", h))\r\n }\r\n return [_round(255 * r), _round(255 * g), _round(255 * b)]\r\n}\r\n\r\nfunction convertTo01Bounds(n, max) {\r\n n = Math.min(max, Math.max(0, parseFloat(n)));\r\n if (Math.abs(n - max) < 1e-6) {\r\n return 1\r\n }\r\n return n % max / parseFloat(max)\r\n}\r\n\r\nfunction isIntegerBetweenMinAndMax(number, min, max) {\r\n min = min || 0;\r\n max = max || 255;\r\n if (number % 1 !== 0 || number < min || number > max || \"number\" !== typeof number || isNaN(number)) {\r\n return false\r\n }\r\n return true\r\n}\r\nColor.prototype = {\r\n constructor: Color,\r\n highlight: function(step) {\r\n step = step || 10;\r\n return this.alter(step).toHex()\r\n },\r\n darken: function(step) {\r\n step = step || 10;\r\n return this.alter(-step).toHex()\r\n },\r\n alter: function(step) {\r\n var result = new Color;\r\n result.r = normalize(this.r + step);\r\n result.g = normalize(this.g + step);\r\n result.b = normalize(this.b + step);\r\n return result\r\n },\r\n blend: function(blendColor, opacity) {\r\n var other = blendColor instanceof Color ? blendColor : new Color(blendColor);\r\n var result = new Color;\r\n result.r = normalize(_round(this.r * (1 - opacity) + other.r * opacity));\r\n result.g = normalize(_round(this.g * (1 - opacity) + other.g * opacity));\r\n result.b = normalize(_round(this.b * (1 - opacity) + other.b * opacity));\r\n return result\r\n },\r\n toHex: function() {\r\n return toHexFromRgb(this.r, this.g, this.b)\r\n },\r\n getPureColor: function() {\r\n var rgb = hsvToRgb(this.hsv.h, 100, 100);\r\n return new Color(\"rgb(\" + rgb.join(\",\") + \")\")\r\n },\r\n isValidHex: function(hex) {\r\n return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex)\r\n },\r\n isValidRGB: function(r, g, b) {\r\n if (!isIntegerBetweenMinAndMax(r) || !isIntegerBetweenMinAndMax(g) || !isIntegerBetweenMinAndMax(b)) {\r\n return false\r\n }\r\n return true\r\n },\r\n isValidAlpha: function(a) {\r\n if (isNaN(a) || a < 0 || a > 1 || \"number\" !== typeof a) {\r\n return false\r\n }\r\n return true\r\n },\r\n colorIsInvalid: false,\r\n fromHSL: function(hsl) {\r\n var color = new Color;\r\n var rgb = hslToRgb(hsl.h, hsl.s, hsl.l);\r\n color.r = rgb[0];\r\n color.g = rgb[1];\r\n color.b = rgb[2];\r\n return color\r\n }\r\n};\r\nexport default Color;\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.header_filter_core.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport {\r\n isDefined,\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport Popup from \"../popup\";\r\nimport TreeView from \"../tree_view\";\r\nimport List from \"../list\";\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 = $(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 && isDefined(headerFilter.allowSearch)) {\r\n return headerFilter.allowSearch\r\n }\r\n return that.option(\"headerFilter.allowSearch\")\r\n}\r\nexport function 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 if (isExcludeFilter || item.selected) {\r\n item.selected = false;\r\n resetChildrenItemSelection(item.items)\r\n }\r\n}\r\nexport var HeaderFilterView = modules.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 list = this.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 if (!isSelectAll) {\r\n if (\"tree\" === options.type) {\r\n if (options.filterType) {\r\n options.filterType = \"include\"\r\n }! function fillSelectedItemKeys(filterValues, items, isExclude) {\r\n 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(item => item.selected);\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 }(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 this.hideHeaderFilterMenu()\r\n },\r\n showHeaderFilterMenu: function($columnElement, options) {\r\n if (options) {\r\n this._initializePopupContainer(options);\r\n var popupContainer = this.getPopupContainer();\r\n this.hideHeaderFilterMenu();\r\n this.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 alignment = \"right\" === options.alignment ? \"left\" : \"right\";\r\n if (this._popupContainer) {\r\n this._cleanPopupContent();\r\n this._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 || isDefined(headerFilterDataSource) && !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 if (isFunction(group) && !options.remoteFiltering) {\r\n return group\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 (!isDefined(that._popupContainer)) {\r\n that._popupContainer = that._createComponent($element, Popup, 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 = $(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($(\"
\").appendTo($content), TreeView, 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($(\"
\").appendTo($content), List, 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 if (selectedItems.length === items.length) {\r\n options.filterType = \"exclude\";\r\n options.filterValues = []\r\n }\r\n }\r\n each(items, (function(index, item) {\r\n var selected = gridCoreUtils.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 = gridCoreUtils.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 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\nexport var allowHeaderFiltering = function(column) {\r\n return isDefined(column.allowHeaderFiltering) ? column.allowHeaderFiltering : column.allowFiltering\r\n};\r\nexport var 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\n","import { getFlagsForElementVnode, createComponentVNode, createFragment, createVNode } from 'inferno';\n\nfunction isNullOrUndef(o) {\n return o === void 0 || o === null;\n}\nfunction isString(o) {\n return typeof o === 'string';\n}\nfunction isUndefined(o) {\n return o === void 0;\n}\n\nvar componentHooks = {\n onComponentDidMount: 1,\n onComponentDidUpdate: 1,\n onComponentShouldUpdate: 1,\n onComponentWillMount: 1,\n onComponentWillUnmount: 1,\n onComponentWillUpdate: 1\n};\nfunction createElement(type, props, _children) {\n var arguments$1 = arguments;\n var children;\n var ref = null;\n var key = null;\n var className = null;\n var flags = 0;\n var newProps;\n var childLen = arguments.length - 2;\n if (childLen === 1) {\n children = _children;\n }\n else if (childLen > 1) {\n children = [];\n while (childLen-- > 0) {\n children[childLen] = arguments$1[childLen + 2];\n }\n }\n if (isString(type)) {\n flags = getFlagsForElementVnode(type);\n if (!isNullOrUndef(props)) {\n newProps = {};\n for (var prop in props) {\n if (prop === 'className' || prop === 'class') {\n className = props[prop];\n }\n else if (prop === 'key') {\n key = props.key;\n }\n else if (prop === 'children' && isUndefined(children)) {\n children = props.children; // always favour children args over props\n }\n else if (prop === 'ref') {\n ref = props.ref;\n }\n else {\n if (prop === 'contenteditable') {\n flags |= 4096 /* ContentEditable */;\n }\n newProps[prop] = props[prop];\n }\n }\n }\n }\n else {\n flags = 2 /* ComponentUnknown */;\n if (!isUndefined(children)) {\n if (!props) {\n props = {};\n }\n props.children = children;\n }\n if (!isNullOrUndef(props)) {\n newProps = {};\n for (var prop$1 in props) {\n if (prop$1 === 'key') {\n key = props.key;\n }\n else if (prop$1 === 'ref') {\n ref = props.ref;\n }\n else if (componentHooks[prop$1] === 1) {\n if (!ref) {\n ref = {};\n }\n ref[prop$1] = props[prop$1];\n }\n else {\n newProps[prop$1] = props[prop$1];\n }\n }\n }\n return createComponentVNode(flags, type, newProps, key, ref);\n }\n if (flags & 8192 /* Fragment */) {\n return createFragment(childLen === 1 ? [children] : children, 0 /* UnknownChildren */, key);\n }\n return createVNode(flags, type, className, children, 0 /* UnknownChildren */, newProps, key, ref);\n}\n\nexport { createElement };\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.filter_custom_operations.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n DataSource\r\n} from \"../../data/data_source/data_source\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n isGroup,\r\n isCondition,\r\n getFilterExpression,\r\n renderValueText\r\n} from \"../filter_builder/utils\";\r\nimport errors from \"../widget/ui.errors\";\r\n\r\nfunction baseOperation(grid) {\r\n var getFullText = function(itemText, parentText) {\r\n return parentText ? parentText + \"/\" + itemText : itemText\r\n };\r\n var headerFilterController = grid && grid.getController(\"headerFilter\");\r\n return {\r\n dataTypes: [\"string\", \"date\", \"datetime\", \"number\", \"boolean\", \"object\"],\r\n 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 (isCondition(value) || isGroup(value)) {\r\n var filterExpression = getFilterExpression(value, fields, [], \"headerFilter\");\r\n result.push(filterExpression)\r\n } else {\r\n result.push(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 editorTemplate: function(conditionInfo, container) {\r\n var div = $(\"
\").addClass(\"dx-filterbuilder-item-value-text\").appendTo(container);\r\n var column = extend(true, {}, grid.columnOption(conditionInfo.field.dataField));\r\n renderValueText(div, conditionInfo.text && conditionInfo.text.split(\"|\"));\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 value = this.filterValues, void conditionInfo.setValue(value);\r\n var value;\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: function(fieldInfo) {\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 if (headerFilter && headerFilter.dataSource || lookup && lookup.dataSource) {\r\n column = extend({}, column, {\r\n filterType: \"include\",\r\n filterValues: [value]\r\n });\r\n var dataSourceOptions = headerFilterController.getDataSource(column);\r\n dataSourceOptions.paginate = false;\r\n var dataSource = new DataSource(dataSourceOptions);\r\n var result = new Deferred;\r\n var key = dataSource.store().key();\r\n if (key) {\r\n dataSource.filter([key, \"=\", fieldInfo.value])\r\n } else if (fieldInfo.field.calculateDisplayValue) {\r\n errors.log(\"W1017\")\r\n }\r\n dataSource.load().done(items => {\r\n result.resolve(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 }(items)[0])\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 }\r\n}\r\nexport function anyOf(grid) {\r\n return extend(baseOperation(grid), {\r\n name: \"anyof\",\r\n icon: \"selectall\",\r\n caption: messageLocalization.format(\"dxFilterBuilder-filterOperationAnyOf\")\r\n })\r\n}\r\nexport function noneOf(grid) {\r\n var baseOp = baseOperation(grid);\r\n return 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: messageLocalization.format(\"dxFilterBuilder-filterOperationNoneOf\")\r\n })\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.filter_sync.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport {\r\n getDefaultOperation,\r\n getMatchedConditions,\r\n syncFilters,\r\n removeFieldConditionsFromFilter,\r\n addItem,\r\n getNormalizedFilter,\r\n getFilterExpression,\r\n filterHasField\r\n} from \"../filter_builder/utils\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport filterUtils from \"../shared/filtering\";\r\nimport {\r\n anyOf,\r\n noneOf\r\n} from \"./ui.grid_core.filter_custom_operations\";\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(column => {\r\n var identifier = getColumnIdentifier(column);\r\n if (!isDefined(identifier) && column.allowFiltering) {\r\n throw new errors.Error(\"E1049\", column.caption)\r\n }\r\n })\r\n}\r\nvar FilterSyncController = modules.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 !filterUtils.getGroupInterval(column) && !(column.headerFilter && column.headerFilter.dataSource)\r\n };\r\n var getConditionFromFilterRow = function(column) {\r\n var value = column.filterValue;\r\n if (isDefined(value)) {\r\n var operation = column.selectedFilterOperation || column.defaultFilterOperation || 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 = 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 }(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 && !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 = 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 isDefined(column.filterValues) && updateHeaderFilterCondition(columnsController, column);\r\n 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 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(() => this._initSync())\r\n }\r\n }\r\n },\r\n _getSyncFilterRow: function(filterValue, column) {\r\n var filter = getConditionFromFilterRow(column);\r\n if (isDefined(filter)) {\r\n return syncFilters(filterValue, filter)\r\n } else {\r\n return 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 syncFilters(filterValue, filter)\r\n } else {\r\n return 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(column => {\r\n var headerFilter = getConditionFromHeaderFilter(column);\r\n var filterRow = getConditionFromFilterRow(column);\r\n headerFilter && addItem(headerFilter, filterValue);\r\n filterRow && addItem(filterRow, filterValue)\r\n });\r\n return 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 [anyOf(this.component), 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 isDefined(this.option(\"filterValue\")) && this.isFilterSyncActive()\r\n },\r\n _calculateAdditionalFilter: function() {\r\n if (false === this.option(\"filterPanel.filterEnabled\")) {\r\n return this.callBase()\r\n }\r\n var filters = [this.callBase()];\r\n var columns = this.getController(\"columns\").getFilteringColumns();\r\n var filterValue = this.option(\"filterValue\");\r\n if (this.isFilterSyncActive()) {\r\n var currentColumn = this.getController(\"headerFilter\").getCurrentColumn();\r\n if (currentColumn && filterValue) {\r\n filterValue = removeFieldConditionsFromFilter(filterValue, getColumnIdentifier(currentColumn))\r\n }\r\n }\r\n var customOperations = this.getController(\"filterSync\").getCustomFilterOperations();\r\n var calculatedFilterValue = getFilterExpression(filterValue, columns, customOperations, \"filterBuilder\");\r\n if (calculatedFilterValue) {\r\n filters.push(calculatedFilterValue)\r\n }\r\n return gridCoreUtils.combineFilters(filters)\r\n },\r\n _parseColumnPropertyName: function(fullName) {\r\n var matched = fullName.match(/.*\\.(.*)/);\r\n if (matched) {\r\n return matched[1]\r\n } else {\r\n return null\r\n }\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 if (\"filterValues\" === propertyName) {\r\n filterSyncController.syncHeaderFilter(column)\r\n } else if ([\"filterValue\", \"selectedFilterOperation\"].indexOf(propertyName) > -1) {\r\n filterSyncController.syncFilterRow(column, column.filterValue)\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 !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\nexport var filterSyncModule = {\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\n","/**\r\n * DevExtreme (esm/ui/shared/ui.editor_factory_mixin.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n isDefined,\r\n isObject,\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nimport variableWrapper from \"../../core/utils/variable_wrapper\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n normalizeDataSourceOptions\r\n} from \"../../data/data_source/utils\";\r\nimport {\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nvar {\r\n isWrapped: isWrapped\r\n} = variableWrapper;\r\nimport \"../text_box\";\r\nimport \"../number_box\";\r\nimport \"../check_box\";\r\nimport \"../select_box\";\r\nimport \"../date_box\";\r\nvar CHECKBOX_SIZE_CLASS = \"checkbox-size\";\r\nvar EDITOR_INLINE_BLOCK = \"dx-editor-inline-block\";\r\nvar EditorFactoryMixin = function() {\r\n var getResultConfig = function(config, options) {\r\n return extend(config, {\r\n readOnly: options.readOnly,\r\n placeholder: options.placeholder,\r\n inputAttr: {\r\n id: options.id\r\n },\r\n tabIndex: options.tabIndex\r\n }, options.editorOptions)\r\n };\r\n var checkEnterBug = function() {\r\n return browser.msie || browser.mozilla || devices.real().ios\r\n };\r\n var getTextEditorConfig = function(options) {\r\n var data = {};\r\n var isEnterBug = checkEnterBug();\r\n var sharedData = options.sharedData || data;\r\n return getResultConfig({\r\n placeholder: options.placeholder,\r\n width: options.width,\r\n value: options.value,\r\n onValueChanged: function(e) {\r\n var needDelayedUpdate = \"filterRow\" === options.parentType || \"searchPanel\" === options.parentType;\r\n var isInputOrKeyUpEvent = e.event && (\"input\" === e.event.type || \"keyup\" === e.event.type);\r\n var updateValue = function(e, notFireEvent) {\r\n options && options.setValue(e.value, notFireEvent)\r\n };\r\n clearTimeout(data.valueChangeTimeout);\r\n if (isInputOrKeyUpEvent && needDelayedUpdate) {\r\n sharedData.valueChangeTimeout = data.valueChangeTimeout = setTimeout((function() {\r\n updateValue(e, data.valueChangeTimeout !== sharedData.valueChangeTimeout)\r\n }), isDefined(options.updateValueTimeout) ? options.updateValueTimeout : 0)\r\n } else {\r\n updateValue(e)\r\n }\r\n },\r\n onKeyDown: function(e) {\r\n if (isEnterBug && \"enter\" === normalizeKeyName(e.event)) {\r\n eventsEngine.trigger($(e.component._input()), \"change\")\r\n }\r\n },\r\n valueChangeEvent: \"change\" + (\"filterRow\" === options.parentType ? \" keyup input\" : \"\")\r\n }, options)\r\n };\r\n var prepareBooleanEditor = function(options) {\r\n if (\"filterRow\" === options.parentType || \"filterBuilder\" === options.parentType) {\r\n prepareSelectBox(extend(options, {\r\n lookup: {\r\n displayExpr: function(data) {\r\n if (true === data) {\r\n return options.trueText || \"true\"\r\n } else if (false === data) {\r\n return options.falseText || \"false\"\r\n }\r\n },\r\n dataSource: [true, false]\r\n }\r\n }))\r\n } else {\r\n ! function(options) {\r\n options.editorName = \"dxCheckBox\";\r\n options.editorOptions = getResultConfig({\r\n elementAttr: {\r\n id: options.id\r\n },\r\n value: isDefined(options.value) ? options.value : void 0,\r\n hoverStateEnabled: !options.readOnly,\r\n focusStateEnabled: !options.readOnly,\r\n activeStateEnabled: false,\r\n onValueChanged: function(e) {\r\n options.setValue && options.setValue(e.value, e)\r\n }\r\n }, options)\r\n }(options)\r\n }\r\n };\r\n\r\n function prepareSelectBox(options) {\r\n var lookup = options.lookup;\r\n var displayGetter;\r\n var dataSource;\r\n var postProcess;\r\n var isFilterRow = \"filterRow\" === options.parentType;\r\n if (lookup) {\r\n displayGetter = compileGetter(lookup.displayExpr);\r\n dataSource = lookup.dataSource;\r\n if (isFunction(dataSource) && !isWrapped(dataSource)) {\r\n dataSource = dataSource(options.row || {});\r\n ! function(options) {\r\n if (options.row && options.row.watch && \"dataRow\" === options.parentType) {\r\n var editorOptions = options.editorOptions || {};\r\n options.editorOptions = editorOptions;\r\n var selectBox;\r\n var onInitialized = editorOptions.onInitialized;\r\n editorOptions.onInitialized = function(e) {\r\n onInitialized && onInitialized.apply(this, arguments);\r\n selectBox = e.component;\r\n selectBox.on(\"disposing\", stopWatch)\r\n };\r\n var dataSource;\r\n var stopWatch = options.row.watch(() => {\r\n dataSource = options.lookup.dataSource(options.row);\r\n return dataSource && dataSource.filter\r\n }, (newValue, row) => {\r\n options.row = row;\r\n selectBox.option(\"dataSource\", dataSource)\r\n })\r\n }\r\n }(options)\r\n }\r\n if (isObject(dataSource) || Array.isArray(dataSource)) {\r\n dataSource = normalizeDataSourceOptions(dataSource);\r\n if (isFilterRow) {\r\n postProcess = dataSource.postProcess;\r\n dataSource.postProcess = function(items) {\r\n if (0 === this.pageIndex()) {\r\n items = items.slice(0);\r\n items.unshift(null)\r\n }\r\n if (postProcess) {\r\n return postProcess.call(this, items)\r\n }\r\n return items\r\n }\r\n }\r\n }\r\n var allowClearing = Boolean(lookup.allowClearing && !isFilterRow);\r\n options.editorName = \"dxSelectBox\";\r\n options.editorOptions = getResultConfig({\r\n searchEnabled: true,\r\n value: options.value,\r\n valueExpr: options.lookup.valueExpr,\r\n searchExpr: options.lookup.searchExpr || options.lookup.displayExpr,\r\n allowClearing: allowClearing,\r\n showClearButton: allowClearing,\r\n displayExpr: function(data) {\r\n if (null === data) {\r\n return options.showAllText\r\n }\r\n return displayGetter(data)\r\n },\r\n dataSource: dataSource,\r\n onValueChanged: function(e) {\r\n var params = [e.value];\r\n !isFilterRow && params.push(e.component.option(\"text\"));\r\n options.setValue.apply(this, params)\r\n }\r\n }, options)\r\n }\r\n }\r\n return {\r\n createEditor: function($container, options) {\r\n options.cancel = false;\r\n options.editorElement = getPublicElement($container);\r\n if (!isDefined(options.tabIndex)) {\r\n options.tabIndex = this.option(\"tabIndex\")\r\n }\r\n if (options.lookup) {\r\n prepareSelectBox(options)\r\n } else {\r\n switch (options.dataType) {\r\n case \"date\":\r\n case \"datetime\":\r\n ! function(options) {\r\n options.editorName = \"dxDateBox\";\r\n options.editorOptions = getResultConfig({\r\n value: options.value,\r\n onValueChanged: function(args) {\r\n options.setValue(args.value)\r\n },\r\n onKeyDown: function(e) {\r\n if (checkEnterBug() && \"enter\" === normalizeKeyName(e.event)) {\r\n e.component.blur();\r\n e.component.focus()\r\n }\r\n },\r\n displayFormat: options.format,\r\n type: options.dataType,\r\n dateSerializationFormat: null,\r\n width: \"filterBuilder\" === options.parentType ? void 0 : \"auto\"\r\n }, options)\r\n }(options);\r\n break;\r\n case \"boolean\":\r\n prepareBooleanEditor(options);\r\n break;\r\n case \"number\":\r\n ! function(options) {\r\n var config = getTextEditorConfig(options);\r\n config.value = isDefined(options.value) ? options.value : null;\r\n options.editorName = \"dxNumberBox\";\r\n options.editorOptions = config\r\n }(options);\r\n break;\r\n default:\r\n ! function(options) {\r\n var config = getTextEditorConfig(options);\r\n var isSearching = \"searchPanel\" === options.parentType;\r\n if (options.editorType && \"dxTextBox\" !== options.editorType) {\r\n config.value = options.value\r\n } else {\r\n config.value = (value = options.value, isDefined(value) ? value.toString() : \"\")\r\n }\r\n var value;\r\n config.valueChangeEvent += isSearching ? \" keyup input search\" : \"\";\r\n config.mode = config.mode || (isSearching ? \"search\" : \"text\");\r\n options.editorName = \"dxTextBox\";\r\n options.editorOptions = config\r\n }(options)\r\n }\r\n }\r\n var editorName = options.editorName;\r\n this.executeAction(\"onEditorPreparing\", options);\r\n if (options.cancel) {\r\n return\r\n } else if (\"dataRow\" === options.parentType && options.editorType && editorName === options.editorName) {\r\n options.editorName = options.editorType\r\n }\r\n if (\"dataRow\" === options.parentType && !options.isOnForm && !isDefined(options.editorOptions.showValidationMark)) {\r\n options.editorOptions.showValidationMark = false\r\n }! function(that, options) {\r\n var $editorElement = $(options.editorElement);\r\n if (options.editorName && options.editorOptions && $editorElement[options.editorName]) {\r\n if (\"dxCheckBox\" === options.editorName || \"dxSwitch\" === options.editorName) {\r\n if (!options.isOnForm) {\r\n $editorElement.addClass(that.addWidgetPrefix(CHECKBOX_SIZE_CLASS));\r\n $editorElement.parent().addClass(EDITOR_INLINE_BLOCK)\r\n }\r\n }\r\n that._createComponent($editorElement, options.editorName, options.editorOptions);\r\n if (\"dxDateBox\" === options.editorName) {\r\n var dateBox = $editorElement.dxDateBox(\"instance\");\r\n var defaultEnterKeyHandler = dateBox._supportedKeys().enter;\r\n dateBox.registerKeyHandler(\"enter\", e => {\r\n if (dateBox.option(\"opened\")) {\r\n defaultEnterKeyHandler(e)\r\n }\r\n return true\r\n })\r\n }\r\n if (\"dxTextArea\" === options.editorName) {\r\n $editorElement.dxTextArea(\"instance\").registerKeyHandler(\"enter\", (function(event) {\r\n if (\"enter\" === normalizeKeyName(event) && !event.ctrlKey && !event.shiftKey) {\r\n event.stopPropagation()\r\n }\r\n }))\r\n }\r\n }\r\n }(this, options);\r\n this.executeAction(\"onEditorPrepared\", options)\r\n }\r\n }\r\n}();\r\nexport default EditorFactoryMixin;\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.editing_constants.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var EDITOR_CELL_CLASS = \"dx-editor-cell\";\r\nexport var ROW_CLASS = \"dx-row\";\r\nexport var CELL_MODIFIED_CLASS = \"dx-cell-modified\";\r\nexport var ROW_SELECTED_CLASS = \"dx-selection\";\r\nexport var EDIT_FORM_CLASS = \"edit-form\";\r\nexport var DATA_EDIT_DATA_INSERT_TYPE = \"insert\";\r\nexport var DATA_EDIT_DATA_REMOVE_TYPE = \"remove\";\r\nexport var EDITING_POPUP_OPTION_NAME = \"editing.popup\";\r\nexport var EDITING_EDITROWKEY_OPTION_NAME = \"editing.editRowKey\";\r\nexport var EDITING_EDITCOLUMNNAME_OPTION_NAME = \"editing.editColumnName\";\r\nexport var TARGET_COMPONENT_NAME = \"targetComponent\";\r\nexport var EDITORS_INPUT_SELECTOR = \"input:not([type='hidden'])\";\r\nexport var FOCUSABLE_ELEMENT_SELECTOR = \"[tabindex], \" + EDITORS_INPUT_SELECTOR;\r\nexport var EDIT_MODE_BATCH = \"batch\";\r\nexport var EDIT_MODE_ROW = \"row\";\r\nexport var EDIT_MODE_CELL = \"cell\";\r\nexport var EDIT_MODE_FORM = \"form\";\r\nexport var EDIT_MODE_POPUP = \"popup\";\r\nexport var EDIT_MODES = [EDIT_MODE_BATCH, EDIT_MODE_ROW, EDIT_MODE_CELL, EDIT_MODE_FORM, EDIT_MODE_POPUP];\r\nexport var ROW_BASED_MODES = [EDIT_MODE_ROW, EDIT_MODE_FORM, EDIT_MODE_POPUP];\r\nexport var MODES_WITH_DELAYED_FOCUS = [EDIT_MODE_ROW, EDIT_MODE_FORM];\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.error_handling.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport modules from \"./ui.grid_core.modules\";\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 = modules.ViewController.inherit({\r\n init: function() {\r\n this._columnHeadersView = this.getView(\"columnHeadersView\");\r\n this._rowsView = this.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 = $(\"\").addClass(ERROR_ROW_CLASS);\r\n $closeButton = $(\"
\").addClass(ERROR_CLOSEBUTTON_CLASS).addClass(that.addWidgetPrefix(ACTION_CLASS));\r\n eventsEngine.on($closeButton, clickEventName, that.createAction((function(args) {\r\n var e = args.event;\r\n var $errorRow;\r\n var errorRowIndex = $(e.currentTarget).closest(\".\" + ERROR_ROW_CLASS).index();\r\n e.stopPropagation();\r\n each($tableElements, (function(_, tableElement) {\r\n $errorRow = $(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 $(\"\").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 = $(\"
\").addClass(ERROR_MESSAGE_CLASS).text(message);\r\n if (error.url) {\r\n $(\"\").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 = viewElement.getTableElements();\r\n 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($(tableElement)).eq(rowIndex);\r\n that.removeErrorRow($row.next());\r\n $errorMessageElement.insertAfter($row)\r\n } else {\r\n var $tbody = $(tableElement).children(\"tbody\");\r\n var rowElements = $tbody.children(\"tr\");\r\n if (that._columnHeadersView.isVisible()) {\r\n that.removeErrorRow(rowElements.last());\r\n $(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 var resizingController = that.getController(\"resizing\");\r\n resizingController && resizingController.fireContentReadyAction();\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 switch (args.name) {\r\n case \"errorRowEnabled\":\r\n args.handled = true;\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nexport var errorHandlingModule = {\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\n","/**\r\n * DevExtreme (esm/ui/filter_builder/filter_builder.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport Class from \"../../core/class\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport TreeView from \"../tree_view\";\r\nimport Popup from \"../popup\";\r\nimport {\r\n getElementMaxHeightByWindow\r\n} from \"../overlay/utils\";\r\nimport EditorFactoryMixin from \"../shared/ui.editor_factory_mixin\";\r\nimport {\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nimport {\r\n renderValueText,\r\n getFilterExpression as _getFilterExpression,\r\n getNormalizedFilter,\r\n getNormalizedFields,\r\n getMergedOperations,\r\n convertToInnerStructure,\r\n getGroupCriteria,\r\n isGroup,\r\n isCondition,\r\n removeItem,\r\n createEmptyGroup,\r\n addItem,\r\n createCondition,\r\n getGroupMenuItem,\r\n setGroupValue,\r\n getCustomOperation,\r\n getAvailableOperations,\r\n getOperationFromAvailable,\r\n getOperationValue,\r\n updateConditionByOperation,\r\n getItems,\r\n getField,\r\n getCaptionWithParents,\r\n getDefaultOperation,\r\n getGroupValue,\r\n getCurrentLookupValueText,\r\n getCurrentValueText\r\n} from \"./utils\";\r\nvar FILTER_BUILDER_CLASS = \"dx-filterbuilder\";\r\nvar FILTER_BUILDER_GROUP_CLASS = FILTER_BUILDER_CLASS + \"-group\";\r\nvar FILTER_BUILDER_GROUP_ITEM_CLASS = FILTER_BUILDER_GROUP_CLASS + \"-item\";\r\nvar FILTER_BUILDER_GROUP_CONTENT_CLASS = FILTER_BUILDER_GROUP_CLASS + \"-content\";\r\nvar FILTER_BUILDER_GROUP_OPERATIONS_CLASS = FILTER_BUILDER_GROUP_CLASS + \"-operations\";\r\nvar FILTER_BUILDER_GROUP_OPERATION_CLASS = FILTER_BUILDER_GROUP_CLASS + \"-operation\";\r\nvar FILTER_BUILDER_ACTION_CLASS = FILTER_BUILDER_CLASS + \"-action\";\r\nvar FILTER_BUILDER_IMAGE_CLASS = FILTER_BUILDER_ACTION_CLASS + \"-icon\";\r\nvar FILTER_BUILDER_IMAGE_ADD_CLASS = \"dx-icon-plus\";\r\nvar FILTER_BUILDER_IMAGE_REMOVE_CLASS = \"dx-icon-remove\";\r\nvar FILTER_BUILDER_ITEM_TEXT_CLASS = FILTER_BUILDER_CLASS + \"-text\";\r\nvar FILTER_BUILDER_ITEM_FIELD_CLASS = FILTER_BUILDER_CLASS + \"-item-field\";\r\nvar FILTER_BUILDER_ITEM_OPERATION_CLASS = FILTER_BUILDER_CLASS + \"-item-operation\";\r\nvar FILTER_BUILDER_ITEM_VALUE_CLASS = FILTER_BUILDER_CLASS + \"-item-value\";\r\nvar FILTER_BUILDER_ITEM_VALUE_TEXT_CLASS = FILTER_BUILDER_CLASS + \"-item-value-text\";\r\nvar FILTER_BUILDER_OVERLAY_CLASS = FILTER_BUILDER_CLASS + \"-overlay\";\r\nvar FILTER_BUILDER_FILTER_OPERATIONS_CLASS = FILTER_BUILDER_CLASS + \"-operations\";\r\nvar FILTER_BUILDER_FIELDS_CLASS = FILTER_BUILDER_CLASS + \"-fields\";\r\nvar FILTER_BUILDER_ADD_CONDITION_CLASS = FILTER_BUILDER_CLASS + \"-add-condition\";\r\nvar ACTIVE_CLASS = \"dx-state-active\";\r\nvar FILTER_BUILDER_MENU_CUSTOM_OPERATION_CLASS = FILTER_BUILDER_CLASS + \"-menu-custom-operation\";\r\nvar SOURCE = \"filterBuilder\";\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar TAB_KEY = \"tab\";\r\nvar ENTER_KEY = \"enter\";\r\nvar ESCAPE_KEY = \"escape\";\r\nvar ACTIONS = [{\r\n name: \"onEditorPreparing\",\r\n config: {\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\"\r\n }\r\n}, {\r\n name: \"onEditorPrepared\",\r\n config: {\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\"\r\n }\r\n}, {\r\n name: \"onValueChanged\",\r\n config: {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n }\r\n}];\r\nvar OPERATORS = {\r\n and: \"and\",\r\n or: \"or\",\r\n notAnd: \"!and\",\r\n notOr: \"!or\"\r\n};\r\nvar EditorFactory = Class.inherit(EditorFactoryMixin);\r\nvar FilterBuilder = Widget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n onEditorPreparing: null,\r\n onEditorPrepared: null,\r\n onValueChanged: null,\r\n fields: [],\r\n defaultGroupOperation: \"and\",\r\n groupOperations: [\"and\", \"or\", \"notAnd\", \"notOr\"],\r\n maxGroupLevel: void 0,\r\n value: null,\r\n allowHierarchicalFields: false,\r\n groupOperationDescriptions: {\r\n and: messageLocalization.format(\"dxFilterBuilder-and\"),\r\n or: messageLocalization.format(\"dxFilterBuilder-or\"),\r\n notAnd: messageLocalization.format(\"dxFilterBuilder-notAnd\"),\r\n notOr: messageLocalization.format(\"dxFilterBuilder-notOr\")\r\n },\r\n customOperations: [],\r\n closePopupOnTargetScroll: true,\r\n filterOperationDescriptions: {\r\n between: messageLocalization.format(\"dxFilterBuilder-filterOperationBetween\"),\r\n equal: messageLocalization.format(\"dxFilterBuilder-filterOperationEquals\"),\r\n notEqual: messageLocalization.format(\"dxFilterBuilder-filterOperationNotEquals\"),\r\n lessThan: messageLocalization.format(\"dxFilterBuilder-filterOperationLess\"),\r\n lessThanOrEqual: messageLocalization.format(\"dxFilterBuilder-filterOperationLessOrEquals\"),\r\n greaterThan: messageLocalization.format(\"dxFilterBuilder-filterOperationGreater\"),\r\n greaterThanOrEqual: messageLocalization.format(\"dxFilterBuilder-filterOperationGreaterOrEquals\"),\r\n startsWith: messageLocalization.format(\"dxFilterBuilder-filterOperationStartsWith\"),\r\n contains: messageLocalization.format(\"dxFilterBuilder-filterOperationContains\"),\r\n notContains: messageLocalization.format(\"dxFilterBuilder-filterOperationNotContains\"),\r\n endsWith: messageLocalization.format(\"dxFilterBuilder-filterOperationEndsWith\"),\r\n isBlank: messageLocalization.format(\"dxFilterBuilder-filterOperationIsBlank\"),\r\n isNotBlank: messageLocalization.format(\"dxFilterBuilder-filterOperationIsNotBlank\")\r\n }\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"closePopupOnTargetScroll\":\r\n break;\r\n case \"onEditorPreparing\":\r\n case \"onEditorPrepared\":\r\n case \"onValueChanged\":\r\n this._initActions();\r\n break;\r\n case \"customOperations\":\r\n this._initCustomOperations();\r\n this._invalidate();\r\n break;\r\n case \"fields\":\r\n case \"defaultGroupOperation\":\r\n case \"maxGroupLevel\":\r\n case \"groupOperations\":\r\n case \"allowHierarchicalFields\":\r\n case \"groupOperationDescriptions\":\r\n case \"filterOperationDescriptions\":\r\n this._invalidate();\r\n break;\r\n case \"value\":\r\n if (args.value !== args.previousValue) {\r\n var disableInvalidateForValue = this._disableInvalidateForValue;\r\n if (!disableInvalidateForValue) {\r\n this._initModel();\r\n this._invalidate()\r\n }\r\n this._disableInvalidateForValue = false;\r\n this.executeAction(\"onValueChanged\", {\r\n value: args.value,\r\n previousValue: args.previousValue\r\n });\r\n this._disableInvalidateForValue = disableInvalidateForValue\r\n }\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n getFilterExpression: function() {\r\n var fields = this._getNormalizedFields();\r\n var value = extend(true, [], this._model);\r\n return _getFilterExpression(getNormalizedFilter(value), fields, this._customOperations, SOURCE)\r\n },\r\n _getNormalizedFields: function() {\r\n return getNormalizedFields(this.option(\"fields\"))\r\n },\r\n _updateFilter: function() {\r\n this._disableInvalidateForValue = true;\r\n var value = extend(true, [], this._model);\r\n var normalizedValue = getNormalizedFilter(value);\r\n var oldValue = getNormalizedFilter(this._getModel(this.option(\"value\")));\r\n if (JSON.stringify(oldValue) !== JSON.stringify(normalizedValue)) {\r\n this.option(\"value\", normalizedValue)\r\n }\r\n this._disableInvalidateForValue = false;\r\n this._fireContentReadyAction()\r\n },\r\n _init: function() {\r\n this._initCustomOperations();\r\n this._initModel();\r\n this._initEditorFactory();\r\n this._initActions();\r\n this.callBase()\r\n },\r\n _initEditorFactory: function() {\r\n this._editorFactory = new EditorFactory\r\n },\r\n _initCustomOperations: function() {\r\n this._customOperations = getMergedOperations(this.option(\"customOperations\"), this.option(\"filterOperationDescriptions.between\"), this)\r\n },\r\n _getModel: function(value) {\r\n return convertToInnerStructure(value, this._customOperations)\r\n },\r\n _initModel: function() {\r\n this._model = this._getModel(this.option(\"value\"))\r\n },\r\n _initActions: function() {\r\n var that = this;\r\n that._actions = {};\r\n ACTIONS.forEach((function(action) {\r\n var actionConfig = extend({}, action.config);\r\n that._actions[action.name] = that._createActionByOption(action.name, actionConfig)\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 _initMarkup: function() {\r\n this.$element().addClass(FILTER_BUILDER_CLASS);\r\n this.callBase();\r\n this._createGroupElementByCriteria(this._model).appendTo(this.$element())\r\n },\r\n _createConditionElement: function(condition, parent) {\r\n return $(\"
\").addClass(FILTER_BUILDER_GROUP_CLASS).append(this._createConditionItem(condition, parent))\r\n },\r\n _createGroupElementByCriteria: function(criteria, parent) {\r\n var groupLevel = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;\r\n var $group = this._createGroupElement(criteria, parent, groupLevel);\r\n var $groupContent = $group.find(\".\" + FILTER_BUILDER_GROUP_CONTENT_CLASS);\r\n var groupCriteria = getGroupCriteria(criteria);\r\n for (var i = 0; i < groupCriteria.length; i++) {\r\n var innerCriteria = groupCriteria[i];\r\n if (isGroup(innerCriteria)) {\r\n this._createGroupElementByCriteria(innerCriteria, criteria, groupLevel + 1).appendTo($groupContent)\r\n } else if (isCondition(innerCriteria)) {\r\n this._createConditionElement(innerCriteria, criteria).appendTo($groupContent)\r\n }\r\n }\r\n return $group\r\n },\r\n _createGroupElement: function(criteria, parent, groupLevel) {\r\n var $groupItem = $(\"
\").addClass(FILTER_BUILDER_GROUP_ITEM_CLASS);\r\n var $groupContent = $(\"
\").addClass(FILTER_BUILDER_GROUP_CONTENT_CLASS);\r\n var $group = $(\"
\").addClass(FILTER_BUILDER_GROUP_CLASS).append($groupItem).append($groupContent);\r\n if (null != parent) {\r\n this._createRemoveButton(() => {\r\n removeItem(parent, criteria);\r\n $group.remove();\r\n this._updateFilter()\r\n }).appendTo($groupItem)\r\n }\r\n this._createGroupOperationButton(criteria).appendTo($groupItem);\r\n this._createAddButton(() => {\r\n var newGroup = createEmptyGroup(this.option(\"defaultGroupOperation\"));\r\n addItem(newGroup, criteria);\r\n this._createGroupElement(newGroup, criteria, groupLevel + 1).appendTo($groupContent);\r\n this._updateFilter()\r\n }, () => {\r\n var field = this.option(\"fields\")[0];\r\n var newCondition = createCondition(field, this._customOperations);\r\n addItem(newCondition, criteria);\r\n this._createConditionElement(newCondition, criteria).appendTo($groupContent);\r\n this._updateFilter()\r\n }, groupLevel).appendTo($groupItem);\r\n return $group\r\n },\r\n _createButton: function(caption) {\r\n return $(\"
\").text(caption)\r\n },\r\n _createGroupOperationButton: function(criteria) {\r\n var groupOperations = this._getGroupOperations(criteria);\r\n var groupMenuItem = getGroupMenuItem(criteria, groupOperations);\r\n var caption = groupMenuItem.text;\r\n var $operationButton = groupOperations && groupOperations.length < 2 ? this._createButton(caption).addClass(DISABLED_STATE_CLASS) : this._createButtonWithMenu({\r\n caption: caption,\r\n menu: {\r\n items: groupOperations,\r\n displayExpr: \"text\",\r\n keyExpr: \"value\",\r\n onItemClick: e => {\r\n if (groupMenuItem !== e.itemData) {\r\n setGroupValue(criteria, e.itemData.value);\r\n $operationButton.text(e.itemData.text);\r\n groupMenuItem = e.itemData;\r\n this._updateFilter()\r\n }\r\n },\r\n onContentReady: function(e) {\r\n e.component.selectItem(groupMenuItem)\r\n },\r\n cssClass: FILTER_BUILDER_GROUP_OPERATIONS_CLASS\r\n }\r\n });\r\n return $operationButton.addClass(FILTER_BUILDER_ITEM_TEXT_CLASS).addClass(FILTER_BUILDER_GROUP_OPERATION_CLASS).attr(\"tabindex\", 0)\r\n },\r\n _createButtonWithMenu: function(options) {\r\n var that = this;\r\n var removeMenu = function() {\r\n that.$element().find(\".\" + ACTIVE_CLASS).removeClass(ACTIVE_CLASS);\r\n that.$element().find(\".dx-overlay .dx-treeview\").remove();\r\n that.$element().find(\".dx-overlay\").remove()\r\n };\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var position = rtlEnabled ? \"right\" : \"left\";\r\n var $button = this._createButton(options.caption);\r\n extend(options.menu, {\r\n focusStateEnabled: true,\r\n selectionMode: \"single\",\r\n onItemClick: (handler = options.menu.onItemClick, function(e) {\r\n handler(e);\r\n if (\"dxclick\" === e.event.type) {\r\n removeMenu()\r\n }\r\n }),\r\n onHiding: function(e) {\r\n $button.removeClass(ACTIVE_CLASS)\r\n },\r\n position: {\r\n my: position + \" top\",\r\n at: position + \" bottom\",\r\n offset: \"0 1\",\r\n of: $button,\r\n collision: \"flip\"\r\n },\r\n animation: null,\r\n onHidden: function() {\r\n removeMenu()\r\n },\r\n cssClass: FILTER_BUILDER_OVERLAY_CLASS + \" \" + options.menu.cssClass,\r\n rtlEnabled: rtlEnabled\r\n });\r\n var handler;\r\n options.popup = {\r\n onShown: function(info) {\r\n var treeViewElement = $(info.component.content()).find(\".dx-treeview\");\r\n var treeView = treeViewElement.dxTreeView(\"instance\");\r\n eventsEngine.on(treeViewElement, \"keyup keydown\", (function(e) {\r\n var keyName = normalizeKeyName(e);\r\n if (\"keydown\" === e.type && keyName === TAB_KEY || \"keyup\" === e.type && (keyName === ESCAPE_KEY || keyName === ENTER_KEY)) {\r\n info.component.hide();\r\n eventsEngine.trigger(options.menu.position.of, \"focus\")\r\n }\r\n }));\r\n treeView.focus();\r\n treeView.option(\"focusedElement\", null)\r\n }\r\n };\r\n this._subscribeOnClickAndEnterKey($button, (function() {\r\n removeMenu();\r\n that._createPopupWithTreeView(options, that.$element());\r\n $button.addClass(ACTIVE_CLASS)\r\n }));\r\n return $button\r\n },\r\n _hasValueButton: function(condition) {\r\n var customOperation = getCustomOperation(this._customOperations, condition[1]);\r\n return customOperation ? false !== customOperation.hasValue : null !== condition[2]\r\n },\r\n _createOperationButtonWithMenu: function(condition, field) {\r\n var that = this;\r\n var availableOperations = getAvailableOperations(field, this.option(\"filterOperationDescriptions\"), this._customOperations);\r\n var currentOperation = getOperationFromAvailable(getOperationValue(condition), availableOperations);\r\n var $operationButton = this._createButtonWithMenu({\r\n caption: currentOperation.text,\r\n menu: {\r\n items: availableOperations,\r\n displayExpr: \"text\",\r\n onItemRendered: function(e) {\r\n e.itemData.isCustom && $(e.itemElement).addClass(FILTER_BUILDER_MENU_CUSTOM_OPERATION_CLASS)\r\n },\r\n onContentReady: function(e) {\r\n e.component.selectItem(currentOperation)\r\n },\r\n onItemClick: e => {\r\n if (currentOperation !== e.itemData) {\r\n currentOperation = e.itemData;\r\n updateConditionByOperation(condition, currentOperation.value, that._customOperations);\r\n var $valueButton = $operationButton.siblings().filter(\".\" + FILTER_BUILDER_ITEM_VALUE_CLASS);\r\n if (that._hasValueButton(condition)) {\r\n if (0 !== $valueButton.length) {\r\n $valueButton.remove()\r\n }\r\n that._createValueButton(condition, field).appendTo($operationButton.parent())\r\n } else {\r\n $valueButton.remove()\r\n }\r\n $operationButton.html(currentOperation.text);\r\n this._updateFilter()\r\n }\r\n },\r\n cssClass: FILTER_BUILDER_FILTER_OPERATIONS_CLASS\r\n }\r\n }).addClass(FILTER_BUILDER_ITEM_TEXT_CLASS).addClass(FILTER_BUILDER_ITEM_OPERATION_CLASS).attr(\"tabindex\", 0);\r\n return $operationButton\r\n },\r\n _createOperationAndValueButtons: function(condition, field, $item) {\r\n this._createOperationButtonWithMenu(condition, field).appendTo($item);\r\n if (this._hasValueButton(condition)) {\r\n this._createValueButton(condition, field).appendTo($item)\r\n }\r\n },\r\n _createFieldButtonWithMenu: function(fields, condition, field) {\r\n var that = this;\r\n var allowHierarchicalFields = this.option(\"allowHierarchicalFields\");\r\n var items = getItems(fields, allowHierarchicalFields);\r\n var item = getField(field.name || field.dataField, items);\r\n var getFullCaption = function(item, items) {\r\n return allowHierarchicalFields ? getCaptionWithParents(item, items) : item.caption\r\n };\r\n var $fieldButton = this._createButtonWithMenu({\r\n caption: getFullCaption(item, items),\r\n menu: {\r\n items: items,\r\n dataStructure: \"plain\",\r\n keyExpr: \"id\",\r\n parentId: \"parentId\",\r\n displayExpr: \"caption\",\r\n onItemClick: e => {\r\n if (item !== e.itemData) {\r\n item = e.itemData;\r\n condition[0] = item.name || item.dataField;\r\n condition[2] = \"object\" === item.dataType ? null : \"\";\r\n updateConditionByOperation(condition, getDefaultOperation(item), that._customOperations);\r\n $fieldButton.siblings().filter(\".\" + FILTER_BUILDER_ITEM_TEXT_CLASS).remove();\r\n that._createOperationAndValueButtons(condition, item, $fieldButton.parent());\r\n var caption = getFullCaption(item, e.component.option(\"items\"));\r\n $fieldButton.html(caption);\r\n this._updateFilter()\r\n }\r\n },\r\n onContentReady: function(e) {\r\n e.component.selectItem(item)\r\n },\r\n cssClass: FILTER_BUILDER_FIELDS_CLASS\r\n }\r\n }).addClass(FILTER_BUILDER_ITEM_TEXT_CLASS).addClass(FILTER_BUILDER_ITEM_FIELD_CLASS).attr(\"tabindex\", 0);\r\n return $fieldButton\r\n },\r\n _createConditionItem: function(condition, parent) {\r\n var $item = $(\"
\").addClass(FILTER_BUILDER_GROUP_ITEM_CLASS);\r\n var fields = this._getNormalizedFields();\r\n var field = getField(condition[0], fields);\r\n this._createRemoveButton(() => {\r\n removeItem(parent, condition);\r\n var isSingleChild = 1 === $item.parent().children().length;\r\n if (isSingleChild) {\r\n $item.parent().remove()\r\n } else {\r\n $item.remove()\r\n }\r\n this._updateFilter()\r\n }).appendTo($item);\r\n this._createFieldButtonWithMenu(fields, condition, field).appendTo($item);\r\n this._createOperationAndValueButtons(condition, field, $item);\r\n return $item\r\n },\r\n _getGroupOperations: function(criteria) {\r\n var groupOperations = this.option(\"groupOperations\");\r\n var groupOperationDescriptions = this.option(\"groupOperationDescriptions\");\r\n if (!groupOperations || !groupOperations.length) {\r\n groupOperations = [getGroupValue(criteria).replace(\"!\", \"not\")]\r\n }\r\n return groupOperations.map(operation => ({\r\n text: groupOperationDescriptions[operation],\r\n value: OPERATORS[operation]\r\n }))\r\n },\r\n _createRemoveButton: function(handler) {\r\n var $removeButton = $(\"
\").addClass(FILTER_BUILDER_IMAGE_CLASS).addClass(FILTER_BUILDER_IMAGE_REMOVE_CLASS).addClass(FILTER_BUILDER_ACTION_CLASS).attr(\"tabindex\", 0);\r\n this._subscribeOnClickAndEnterKey($removeButton, handler);\r\n return $removeButton\r\n },\r\n _createAddButton: function(addGroupHandler, addConditionHandler, groupLevel) {\r\n var $button;\r\n var maxGroupLevel = this.option(\"maxGroupLevel\");\r\n if (isDefined(maxGroupLevel) && groupLevel >= maxGroupLevel) {\r\n $button = this._createButton();\r\n this._subscribeOnClickAndEnterKey($button, addConditionHandler)\r\n } else {\r\n $button = this._createButtonWithMenu({\r\n menu: {\r\n items: [{\r\n caption: messageLocalization.format(\"dxFilterBuilder-addCondition\"),\r\n click: addConditionHandler\r\n }, {\r\n caption: messageLocalization.format(\"dxFilterBuilder-addGroup\"),\r\n click: addGroupHandler\r\n }],\r\n displayExpr: \"caption\",\r\n onItemClick: function(e) {\r\n e.itemData.click()\r\n },\r\n cssClass: FILTER_BUILDER_ADD_CONDITION_CLASS\r\n }\r\n })\r\n }\r\n return $button.addClass(FILTER_BUILDER_IMAGE_CLASS).addClass(FILTER_BUILDER_IMAGE_ADD_CLASS).addClass(FILTER_BUILDER_ACTION_CLASS).attr(\"tabindex\", 0)\r\n },\r\n _createValueText: function(item, field, $container) {\r\n var that = this;\r\n var $text = $(\"
\").html(\" \").addClass(FILTER_BUILDER_ITEM_VALUE_TEXT_CLASS).attr(\"tabindex\", 0).appendTo($container);\r\n var value = item[2];\r\n var customOperation = getCustomOperation(that._customOperations, item[1]);\r\n if (!customOperation && field.lookup) {\r\n getCurrentLookupValueText(field, value, (function(result) {\r\n renderValueText($text, result)\r\n }))\r\n } else {\r\n when(getCurrentValueText(field, value, customOperation)).done(result => {\r\n renderValueText($text, result, customOperation)\r\n })\r\n }\r\n that._subscribeOnClickAndEnterKey($text, (function(e) {\r\n if (\"keyup\" === e.type) {\r\n e.stopPropagation()\r\n }\r\n that._createValueEditorWithEvents(item, field, $container)\r\n }));\r\n return $text\r\n },\r\n _updateConditionValue: function(item, value, callback) {\r\n var areValuesDifferent = item[2] !== value;\r\n if (areValuesDifferent) {\r\n item[2] = value\r\n }\r\n callback();\r\n this._updateFilter()\r\n },\r\n _addDocumentKeyUp: function($editor, handler) {\r\n var isComposing = false;\r\n var hasCompositionJustEnded = false;\r\n var document = domAdapter.getDocument();\r\n var documentKeyUpHandler = e => {\r\n if (isComposing || hasCompositionJustEnded) {\r\n hasCompositionJustEnded = false;\r\n return\r\n }\r\n handler(e)\r\n };\r\n eventsEngine.on(document, \"keyup\", documentKeyUpHandler);\r\n var input = $editor.find(\"input\");\r\n eventsEngine.on(input, \"compositionstart\", () => {\r\n isComposing = true\r\n });\r\n eventsEngine.on(input, \"compositionend\", () => {\r\n isComposing = false;\r\n hasCompositionJustEnded = true\r\n });\r\n eventsEngine.on(input, \"keydown\", event => {\r\n if (229 !== event.which) {\r\n hasCompositionJustEnded = false\r\n }\r\n });\r\n this._documentKeyUpHandler = documentKeyUpHandler\r\n },\r\n _addDocumentClick: function($editor, closeEditorFunc) {\r\n var document = domAdapter.getDocument();\r\n var documentClickHandler = e => {\r\n if (!this._isFocusOnEditorParts($editor, e.target)) {\r\n eventsEngine.trigger($editor.find(\"input\"), \"change\");\r\n closeEditorFunc()\r\n }\r\n };\r\n eventsEngine.on(document, \"dxpointerdown\", documentClickHandler);\r\n this._documentClickHandler = documentClickHandler\r\n },\r\n _isFocusOnEditorParts: function($editor, target) {\r\n var activeElement = target || domAdapter.getActiveElement();\r\n return $(activeElement).closest($editor.children()).length || $(activeElement).closest(\".dx-dropdowneditor-overlay\").length\r\n },\r\n _removeEvents: function() {\r\n var document = domAdapter.getDocument();\r\n isDefined(this._documentKeyUpHandler) && eventsEngine.off(document, \"keyup\", this._documentKeyUpHandler);\r\n isDefined(this._documentClickHandler) && eventsEngine.off(document, \"dxpointerdown\", this._documentClickHandler)\r\n },\r\n _dispose: function() {\r\n this._removeEvents();\r\n this.callBase()\r\n },\r\n _createValueEditorWithEvents: function(item, field, $container) {\r\n var value = item[2];\r\n var createValueText = () => {\r\n $container.empty();\r\n this._removeEvents();\r\n return this._createValueText(item, field, $container)\r\n };\r\n var closeEditor = () => {\r\n this._updateConditionValue(item, value, (function() {\r\n createValueText()\r\n }))\r\n };\r\n var options = {\r\n value: \"\" === value ? null : value,\r\n filterOperation: getOperationValue(item),\r\n setValue: function(data) {\r\n value = null === data ? \"\" : data\r\n },\r\n closeEditor: closeEditor,\r\n text: $container.text()\r\n };\r\n $container.empty();\r\n var $editor = this._createValueEditor($container, field, options);\r\n eventsEngine.trigger($editor.find(\"input\").not(\":hidden\").eq(0), \"focus\");\r\n this._removeEvents();\r\n this._addDocumentClick($editor, closeEditor);\r\n this._addDocumentKeyUp($editor, e => {\r\n var keyName = normalizeKeyName(e);\r\n if (keyName === TAB_KEY) {\r\n if (this._isFocusOnEditorParts($editor)) {\r\n return\r\n }\r\n this._updateConditionValue(item, value, (function() {\r\n createValueText();\r\n if (e.shiftKey) {\r\n eventsEngine.trigger($container.prev(), \"focus\")\r\n }\r\n }))\r\n }\r\n if (keyName === ESCAPE_KEY) {\r\n eventsEngine.trigger(createValueText(), \"focus\")\r\n }\r\n if (keyName === ENTER_KEY) {\r\n this._updateConditionValue(item, value, (function() {\r\n eventsEngine.trigger(createValueText(), \"focus\")\r\n }))\r\n }\r\n });\r\n this._fireContentReadyAction()\r\n },\r\n _createValueButton: function(item, field) {\r\n var $valueButton = $(\"
\").addClass(FILTER_BUILDER_ITEM_TEXT_CLASS).addClass(FILTER_BUILDER_ITEM_VALUE_CLASS);\r\n this._createValueText(item, field, $valueButton);\r\n return $valueButton\r\n },\r\n _createValueEditor: function($container, field, options) {\r\n var $editor = $(\"
\").attr(\"tabindex\", 0).appendTo($container);\r\n var customOperation = getCustomOperation(this._customOperations, options.filterOperation);\r\n var editorTemplate = customOperation && customOperation.editorTemplate ? customOperation.editorTemplate : field.editorTemplate;\r\n if (editorTemplate) {\r\n var template = this._getTemplate(editorTemplate);\r\n template.render({\r\n model: extend({\r\n field: field\r\n }, options),\r\n container: $editor\r\n })\r\n } else {\r\n this._editorFactory.createEditor.call(this, $editor, extend({}, field, options, {\r\n parentType: SOURCE\r\n }))\r\n }\r\n return $editor\r\n },\r\n _createPopupWithTreeView: function(options, $container) {\r\n var that = this;\r\n var $popup = $(\"
\").addClass(options.menu.cssClass).appendTo($container);\r\n this._createComponent($popup, Popup, {\r\n onHiding: options.menu.onHiding,\r\n onHidden: options.menu.onHidden,\r\n rtlEnabled: options.menu.rtlEnabled,\r\n position: options.menu.position,\r\n animation: options.menu.animation,\r\n contentTemplate: function(contentElement) {\r\n var $menuContainer = $(\"
\").appendTo(contentElement);\r\n that._createComponent($menuContainer, TreeView, options.menu);\r\n this.repaint()\r\n },\r\n maxHeight: function() {\r\n return getElementMaxHeightByWindow(options.menu.position.of)\r\n },\r\n visible: true,\r\n focusStateEnabled: false,\r\n closeOnTargetScroll: this.option(\"closePopupOnTargetScroll\"),\r\n closeOnOutsideClick: true,\r\n onShown: options.popup.onShown,\r\n shading: false,\r\n width: \"auto\",\r\n height: \"auto\",\r\n showTitle: false\r\n })\r\n },\r\n _subscribeOnClickAndEnterKey: function($button, handler) {\r\n eventsEngine.on($button, \"dxclick\", handler);\r\n eventsEngine.on($button, \"keyup\", (function(e) {\r\n if (normalizeKeyName(e) === ENTER_KEY) {\r\n handler(e)\r\n }\r\n }))\r\n }\r\n});\r\nregisterComponent(\"dxFilterBuilder\", FilterBuilder);\r\nexport default FilterBuilder;\r\n","/**\r\n * DevExtreme (esm/ui/filter_builder.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport FilterBuilder from \"./filter_builder/filter_builder\";\r\nexport default FilterBuilder;\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.filter_builder.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport FilterBuilder from \"./../filter_builder\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport ScrollView from \"./../scroll_view\";\r\nimport Popup from \"./../popup\";\r\nimport {\r\n restoreFocus\r\n} from \"../shared/accessibility\";\r\nvar FilterBuilderView = modules.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 if (this._filterBuilderPopup) {\r\n this._filterBuilderPopup.hide()\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, extend({\r\n title: messageLocalization.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 restoreFocus(that);\r\n that._disposePopup()\r\n }\r\n }))\r\n },\r\n _getPopupContentTemplate: function(contentElement) {\r\n var $contentElement = $(contentElement);\r\n var $filterBuilderContainer = $(\"
\").appendTo($(contentElement));\r\n this._filterBuilder = this._createComponent($filterBuilderContainer, FilterBuilder, 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, ScrollView, {\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: messageLocalization.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: messageLocalization.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\nexport var filterBuilderModule = {\r\n defaultOptions: function() {\r\n return {\r\n filterBuilder: {\r\n groupOperationDescriptions: {\r\n and: messageLocalization.format(\"dxFilterBuilder-and\"),\r\n or: messageLocalization.format(\"dxFilterBuilder-or\"),\r\n notAnd: messageLocalization.format(\"dxFilterBuilder-notAnd\"),\r\n notOr: messageLocalization.format(\"dxFilterBuilder-notOr\")\r\n },\r\n filterOperationDescriptions: {\r\n between: messageLocalization.format(\"dxFilterBuilder-filterOperationBetween\"),\r\n equal: messageLocalization.format(\"dxFilterBuilder-filterOperationEquals\"),\r\n notEqual: messageLocalization.format(\"dxFilterBuilder-filterOperationNotEquals\"),\r\n lessThan: messageLocalization.format(\"dxFilterBuilder-filterOperationLess\"),\r\n lessThanOrEqual: messageLocalization.format(\"dxFilterBuilder-filterOperationLessOrEquals\"),\r\n greaterThan: messageLocalization.format(\"dxFilterBuilder-filterOperationGreater\"),\r\n greaterThanOrEqual: messageLocalization.format(\"dxFilterBuilder-filterOperationGreaterOrEquals\"),\r\n startsWith: messageLocalization.format(\"dxFilterBuilder-filterOperationStartsWith\"),\r\n contains: messageLocalization.format(\"dxFilterBuilder-filterOperationContains\"),\r\n notContains: messageLocalization.format(\"dxFilterBuilder-filterOperationNotContains\"),\r\n endsWith: messageLocalization.format(\"dxFilterBuilder-filterOperationEndsWith\"),\r\n isBlank: messageLocalization.format(\"dxFilterBuilder-filterOperationIsBlank\"),\r\n isNotBlank: messageLocalization.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\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.editing.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Guid from \"../../core/guid\";\r\nimport {\r\n isDefined,\r\n isObject,\r\n isFunction,\r\n isEmptyObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n name as doubleClickEvent\r\n} from \"../../events/double_click\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport {\r\n createObjectWithChanges\r\n} from \"../../data/array_utils\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n confirm\r\n} from \"../dialog\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n when,\r\n Deferred,\r\n fromPromise\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n equalByValue,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport * as iconUtils from \"../../core/utils/icon\";\r\nimport {\r\n EDITOR_CELL_CLASS,\r\n ROW_CLASS,\r\n EDIT_FORM_CLASS,\r\n DATA_EDIT_DATA_INSERT_TYPE,\r\n DATA_EDIT_DATA_REMOVE_TYPE,\r\n EDITING_POPUP_OPTION_NAME,\r\n EDITING_EDITROWKEY_OPTION_NAME,\r\n EDITING_EDITCOLUMNNAME_OPTION_NAME,\r\n TARGET_COMPONENT_NAME,\r\n EDITORS_INPUT_SELECTOR,\r\n FOCUSABLE_ELEMENT_SELECTOR,\r\n EDIT_MODE_ROW,\r\n EDIT_MODES,\r\n ROW_BASED_MODES\r\n} from \"./ui.grid_core.editing_constants\";\r\nvar READONLY_CLASS = \"readonly\";\r\nvar LINK_CLASS = \"dx-link\";\r\nvar ROW_SELECTED = \"dx-selection\";\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 INSERT_INDEX = \"__DX_INSERT_INDEX__\";\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 CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar DATA_EDIT_DATA_UPDATE_TYPE = \"update\";\r\nvar DEFAULT_START_EDIT_ACTION = \"click\";\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_CHANGES_OPTION_NAME = \"editing.changes\";\r\nvar NEW_SCROLLING_MODE = \"scrolling.newMode\";\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 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 = modules.ViewController.inherit(function() {\r\n var getButtonIndex = (buttons, name) => {\r\n var result = -1;\r\n buttons.some((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 isObject(button) ? button.name : button\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._rowsView = this.getView(\"rowsView\");\r\n this._lastOperation = null;\r\n if (this._deferreds) {\r\n this._deferreds.forEach(d => d.reject(\"cancel\"))\r\n }\r\n this._deferreds = [];\r\n if (!this._dataChangedHandler) {\r\n this._dataChangedHandler = this._handleDataChanged.bind(this);\r\n this._dataController.changed.add(this._dataChangedHandler)\r\n }\r\n if (!this._saveEditorHandler) {\r\n this.createAction(\"onInitNewRow\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onRowInserting\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onRowInserted\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onEditingStart\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onRowUpdating\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onRowUpdated\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onRowRemoving\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onRowRemoved\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onSaved\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onSaving\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onEditCanceling\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onEditCanceled\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n }\r\n this._updateEditColumn();\r\n this._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 getEditMode: function() {\r\n var editMode = this.option(\"editing.mode\");\r\n if (-1 !== EDIT_MODES.indexOf(editMode)) {\r\n return editMode\r\n }\r\n return EDIT_MODE_ROW\r\n },\r\n _getDefaultEditorTemplate: function() {\r\n return (container, options) => {\r\n var $editor = $(\"
\").appendTo(container);\r\n this.getController(\"editorFactory\").createEditor($editor, 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 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(item => equalByValue(item.key, key))[0]\r\n },\r\n _addInternalData: function(params) {\r\n var internalData = this._getInternalData(params.key);\r\n if (internalData) {\r\n return 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 = gridCoreUtils.getIndexByKey(key, changes);\r\n if (changes[editIndex]) {\r\n return createObjectWithChanges(data, changes[editIndex].data)\r\n }\r\n return data\r\n },\r\n getInsertedData: function() {\r\n return this.getChanges().filter(change => change.data && change.type === DATA_EDIT_DATA_INSERT_TYPE).map(change => change.data)\r\n },\r\n getRemovedData: function() {\r\n return this.getChanges().filter(change => this._getOldData(change.key) && change.type === DATA_EDIT_DATA_REMOVE_TYPE).map(change => this._getOldData(change.key))\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: noop,\r\n _closeEditItem: noop,\r\n _handleDataChanged: noop,\r\n _isDefaultButtonVisible: function(button, options) {\r\n var result = true;\r\n switch (button.name) {\r\n case \"delete\":\r\n result = this.allowDeleting(options);\r\n break;\r\n case \"undelete\":\r\n result = false\r\n }\r\n return result\r\n },\r\n _isButtonVisible: function(button, options) {\r\n var visible = button.visible;\r\n if (!isDefined(visible)) {\r\n return this._isDefaultButtonVisible(button, options)\r\n }\r\n return 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 config = isObject(button) ? button : {};\r\n var buttonName = getButtonName(button);\r\n var editingTexts = (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 })(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 extend({\r\n name: buttonName,\r\n text: editingTexts[buttonName],\r\n cssClass: EDIT_LINK_CLASS[buttonName],\r\n onClick: e => {\r\n var event = e.event;\r\n event.stopPropagation();\r\n event.preventDefault();\r\n setTimeout(() => {\r\n options.row && allowAction && this[methodName] && this[methodName](options.row.rowIndex)\r\n })\r\n }\r\n }, config)\r\n },\r\n _getEditingButtons: function(options) {\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(button => this._getButtonConfig(button, options))\r\n },\r\n _renderEditingButtons: function($container, buttons, options) {\r\n buttons.forEach(button => {\r\n if (this._isButtonVisible(button, options)) {\r\n this._createButton($container, button, options)\r\n }\r\n })\r\n },\r\n _getEditCommandCellTemplate: function() {\r\n return (container, options) => {\r\n var $container = $(container);\r\n if (\"data\" === options.rowType) {\r\n var buttons = this._getEditingButtons(options);\r\n this._renderEditingButtons($container, buttons, options);\r\n options.watch && options.watch(() => buttons.map(button => this._isButtonVisible(button, options)), () => {\r\n $container.empty();\r\n this._renderEditingButtons($container, buttons, options)\r\n })\r\n } else {\r\n gridCoreUtils.setEmptyText($container)\r\n }\r\n }\r\n },\r\n isRowBasedEditMode: function() {\r\n var editMode = this.getEditMode();\r\n return -1 !== ROW_BASED_MODES.indexOf(editMode)\r\n },\r\n getFirstEditableColumnIndex: function() {\r\n var columnsController = this.getController(\"columns\");\r\n var columnIndex;\r\n var visibleColumns = columnsController.getVisibleColumns();\r\n each(visibleColumns, (function(index, column) {\r\n if (column.allowEditing) {\r\n columnIndex = index;\r\n return false\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 gridCoreUtils.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 && (!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 eventsEngine.off(domAdapter.getDocument(), pointerEvents.up, this._pointerUpEditorHandler);\r\n eventsEngine.off(domAdapter.getDocument(), pointerEvents.down, this._pointerDownEditorHandler);\r\n eventsEngine.off(domAdapter.getDocument(), clickEventName, this._saveEditorHandler)\r\n },\r\n optionChanged: function(args) {\r\n if (\"editing\" === args.name) {\r\n var fullName = args.fullName;\r\n if (fullName === EDITING_EDITROWKEY_OPTION_NAME) {\r\n this._handleEditRowKeyChange(args)\r\n } else if (fullName === EDITING_CHANGES_OPTION_NAME) {\r\n this._handleChangesChange(args)\r\n } else if (!args.handled) {\r\n this._columnsController.reinit();\r\n this.init();\r\n this.resetChanges();\r\n this._resetEditColumnName();\r\n this._resetEditRowKey()\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 if (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 },\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 this._processInsertChanges(args.value);\r\n dataController.updateItems({\r\n repaintChangesOnly: true\r\n })\r\n },\r\n _processInsertChanges: function(changes) {\r\n changes.forEach(change => {\r\n if (\"insert\" === change.type) {\r\n this._addInsertInfo(change)\r\n }\r\n })\r\n },\r\n publicMethods: function() {\r\n return [\"addRow\", \"deleteRow\", \"undeleteRow\", \"editRow\", \"saveEditData\", \"cancelEditData\", \"hasEditData\"]\r\n },\r\n refresh: function(isPageChanged) {\r\n if (!isDefined(this._pageIndex)) {\r\n return\r\n }\r\n this._refreshCore(isPageChanged)\r\n },\r\n _refreshCore: noop,\r\n isEditing: function() {\r\n var isEditRowKeyDefined = isDefined(this.option(EDITING_EDITROWKEY_OPTION_NAME));\r\n return isEditRowKeyDefined\r\n },\r\n isEditRow: function() {\r\n return false\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 return -1\r\n },\r\n _isEditRowByIndex(rowIndex) {\r\n var key = this._dataController.getKeyByRowIndex(rowIndex);\r\n var isKeyEqual = isDefined(key) && 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: noop,\r\n _needInsertItem: function(change, changeType) {\r\n var dataController = this._dataController;\r\n var dataSource = dataController.dataSource();\r\n var scrollingMode = this.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 var isLastPage = endPageIndex === dataSource.pageCount() - 1;\r\n if (\"standard\" !== scrollingMode) {\r\n var pageSize = dataSource.pageSize() || 1;\r\n var changePageIndex = Math.floor(change.index / pageSize);\r\n var needInsertOnLastPosition = isLastPage && -1 === change.index;\r\n switch (changeType) {\r\n case \"append\":\r\n return changePageIndex === endPageIndex || needInsertOnLastPosition;\r\n case \"prepend\":\r\n return changePageIndex === beginPageIndex;\r\n default:\r\n var _dataController$topIt, _dataController$botto;\r\n var topItemIndex = null === (_dataController$topIt = dataController.topItemIndex) || void 0 === _dataController$topIt ? void 0 : _dataController$topIt.call(dataController);\r\n var bottomItemIndex = null === (_dataController$botto = dataController.bottomItemIndex) || void 0 === _dataController$botto ? void 0 : _dataController$botto.call(dataController);\r\n if (this.option(NEW_SCROLLING_MODE) && isDefined(topItemIndex)) {\r\n return change.index >= topItemIndex && change.index <= bottomItemIndex || needInsertOnLastPosition\r\n }\r\n return changePageIndex >= beginPageIndex && changePageIndex <= endPageIndex || needInsertOnLastPosition\r\n }\r\n }\r\n return change.pageIndex === pageIndex || -1 === change.pageIndex && isLastPage\r\n },\r\n _generateNewItem: function(key) {\r\n var _this$_getInternalDat2;\r\n var item = {\r\n key: key\r\n };\r\n var insertInfo = null === (_this$_getInternalDat2 = this._getInternalData(key)) || void 0 === _this$_getInternalDat2 ? void 0 : _this$_getInternalDat2.insertInfo;\r\n if (null !== insertInfo && void 0 !== insertInfo && insertInfo[INSERT_INDEX]) {\r\n item[INSERT_INDEX] = insertInfo[INSERT_INDEX]\r\n }\r\n return item\r\n },\r\n _getLoadedRowIndex: function(items, change, key) {\r\n var dataController = this._dataController;\r\n var loadedRowIndexOffset = dataController.getRowIndexOffset(true);\r\n var changes = this.getChanges();\r\n var index = change ? changes.filter(editChange => equalByValue(editChange.key, key))[0].index : 0;\r\n var loadedRowIndex = index - 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 changeType = e.changeType;\r\n this.update(changeType);\r\n var changes = this.getChanges();\r\n changes.forEach(change => {\r\n var _this$_getInternalDat3;\r\n var isInsert = change.type === DATA_EDIT_DATA_INSERT_TYPE;\r\n if (!isInsert) {\r\n return\r\n }\r\n var key = change.key;\r\n var insertInfo = null === (_this$_getInternalDat3 = this._getInternalData(key)) || void 0 === _this$_getInternalDat3 ? void 0 : _this$_getInternalDat3.insertInfo;\r\n if (!isDefined(change.key) || !isDefined(insertInfo)) {\r\n var keys = this._addInsertInfo(change);\r\n key = keys.key;\r\n insertInfo = keys.insertInfo\r\n }\r\n var loadedRowIndex = this._getLoadedRowIndex(items, e, key);\r\n var item = this._generateNewItem(key);\r\n if ((loadedRowIndex >= 0 || -1 === change.index) && this._needInsertItem(change, changeType, items, item)) {\r\n if (-1 !== change.index) {\r\n items.splice(change.index ? loadedRowIndex : 0, 0, item)\r\n } else {\r\n items.push(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 = gridCoreUtils.getIndexByKey(key, changes);\r\n item.isEditing = false;\r\n if (editIndex >= 0) {\r\n this._processDataItemCore(item, changes[editIndex], key, columns, generateDataValues)\r\n }\r\n },\r\n _processDataItemCore: function(item, change, key, columns, generateDataValues) {\r\n var {\r\n data: data,\r\n type: type\r\n } = change;\r\n switch (type) {\r\n case DATA_EDIT_DATA_INSERT_TYPE:\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 = 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 item.removed = true\r\n }\r\n },\r\n _initNewRow: function(options) {\r\n this.executeAction(\"onInitNewRow\", options);\r\n if (options.promise) {\r\n var deferred = new Deferred;\r\n when(fromPromise(options.promise)).done(deferred.resolve).fail(createFailureHandler(deferred)).fail(arg => this._fireDataErrorOccurred(arg));\r\n return deferred\r\n }\r\n },\r\n _calculateIndex: function(rowIndex) {\r\n var dataController = this._dataController;\r\n var rows = dataController.items();\r\n return dataController.getRowIndexOffset() + rows.filter((function(row, index) {\r\n return index < rowIndex && (\"data\" === row.rowType && !row.isNewRow || \"group\" === row.rowType)\r\n })).length\r\n },\r\n _createInsertInfo: function() {\r\n var insertInfo = {};\r\n insertInfo[INSERT_INDEX] = this._getInsertIndex();\r\n return insertInfo\r\n },\r\n _getCorrectedInsertRowIndex: function(parentKey) {\r\n var rowIndex = this._getInsertRowIndex(parentKey);\r\n var dataController = this._dataController;\r\n var rows = dataController.items();\r\n var row = rows[rowIndex];\r\n if (row && (!row.isEditing && \"detail\" === row.rowType || \"detailAdaptive\" === row.rowType)) {\r\n rowIndex++\r\n }\r\n return rowIndex\r\n },\r\n _addInsertInfo: function(change, parentKey) {\r\n var _this$_getInternalDat4;\r\n var insertInfo;\r\n var rowIndex;\r\n var {\r\n key: key\r\n } = change;\r\n if (!isDefined(key)) {\r\n key = String(new Guid);\r\n change.key = key\r\n }\r\n insertInfo = null === (_this$_getInternalDat4 = this._getInternalData(key)) || void 0 === _this$_getInternalDat4 ? void 0 : _this$_getInternalDat4.insertInfo;\r\n if (!isDefined(insertInfo)) {\r\n rowIndex = this._getCorrectedInsertRowIndex(parentKey);\r\n insertInfo = this._createInsertInfo();\r\n this._setIndexes(change, rowIndex)\r\n }\r\n this._addInternalData({\r\n insertInfo: insertInfo,\r\n key: key\r\n });\r\n return {\r\n insertInfo: insertInfo,\r\n key: key,\r\n rowIndex: rowIndex\r\n }\r\n },\r\n _setIndexes: function(change, rowIndex) {\r\n var _change$index;\r\n var dataController = this._dataController;\r\n change.index = null !== (_change$index = change.index) && void 0 !== _change$index ? _change$index : this._calculateIndex(rowIndex);\r\n if (\"virtual\" !== this.option(\"scrolling.mode\")) {\r\n var _change$pageIndex;\r\n change.pageIndex = null !== (_change$pageIndex = change.pageIndex) && void 0 !== _change$pageIndex ? _change$pageIndex : dataController.pageIndex()\r\n }\r\n },\r\n _getInsertRowIndex: function(parentKey) {\r\n var rowsView = this.getView(\"rowsView\");\r\n var parentRowIndex = this._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(editItem => {\r\n var _this$_getInternalDat5;\r\n var insertInfo = null === (_this$_getInternalDat5 = this._getInternalData(editItem.key)) || void 0 === _this$_getInternalDat5 ? void 0 : _this$_getInternalDat5.insertInfo;\r\n if (isDefined(insertInfo) && editItem.type === DATA_EDIT_DATA_INSERT_TYPE && insertInfo[INSERT_INDEX] > maxInsertIndex) {\r\n maxInsertIndex = insertInfo[INSERT_INDEX]\r\n }\r\n });\r\n return maxInsertIndex + 1\r\n },\r\n addRow: function(parentKey) {\r\n var dataController = this._dataController;\r\n var store = dataController.store();\r\n if (!store) {\r\n dataController.fireError(\"E1052\", this.component.NAME);\r\n return (new Deferred).reject()\r\n }\r\n return this._addRow(parentKey)\r\n },\r\n _addRow: function(parentKey) {\r\n var dataController = this._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 oldEditRowIndex = this._getVisibleEditRowIndex();\r\n var deferred = new Deferred;\r\n this.refresh();\r\n if (!this._allowRowAdding()) {\r\n return deferred.reject(\"cancel\")\r\n }\r\n if (!key) {\r\n param.data.__KEY__ = String(new Guid)\r\n }\r\n when(this._initNewRow(param, parentKey)).done(() => {\r\n if (this._allowRowAdding()) {\r\n this._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 insertIndex = this._getInsertIndex();\r\n if (insertIndex > 1) {\r\n return false\r\n }\r\n return true\r\n },\r\n _addRowCore: function(data, parentKey, initialOldEditRowIndex) {\r\n var oldEditRowIndex = this._getVisibleEditRowIndex();\r\n var change = {\r\n data: data,\r\n type: DATA_EDIT_DATA_INSERT_TYPE\r\n };\r\n var {\r\n key: key,\r\n rowIndex: rowIndex\r\n } = this._addInsertInfo(change, parentKey);\r\n this._setEditRowKey(key, true);\r\n this._addChange(change);\r\n this._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [initialOldEditRowIndex, oldEditRowIndex, rowIndex]\r\n });\r\n this._showAddedRow(rowIndex);\r\n this._afterInsertRow({\r\n key: key,\r\n data: data\r\n })\r\n },\r\n _showAddedRow: function(rowIndex) {\r\n this._focusFirstEditableCellInRow(rowIndex)\r\n },\r\n _focusFirstEditableCellInRow: function(rowIndex) {\r\n var $firstCell = this.getFirstEditableCellInRow(rowIndex);\r\n this._editCellInProgress = true;\r\n this._delayedInputFocus($firstCell, () => {\r\n this._editCellInProgress = false;\r\n var $cell = this.getFirstEditableCellInRow(rowIndex);\r\n var eventToTrigger = \"dblClick\" === this.option(\"editing.startEditAction\") ? doubleClickEvent : clickEventName;\r\n $cell && eventsEngine.trigger($cell, eventToTrigger)\r\n })\r\n },\r\n _isEditingStart: function(options) {\r\n this.executeAction(\"onEditingStart\", options);\r\n return options.cancel\r\n },\r\n _beforeUpdateItems: noop,\r\n _getVisibleEditColumnIndex: function() {\r\n var editColumnName = this.option(EDITING_EDITCOLUMNNAME_OPTION_NAME);\r\n if (!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 isDefined(name) && visibleColumns.some(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 (-1 === rowIndex) {\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 this._beforeUpdateItems(rowIndices, rowIndex, oldRowIndex);\r\n this._editRowFromOptionChangedCore(rowIndices, rowIndex, oldRowIndex)\r\n },\r\n _editRowFromOptionChangedCore: function(rowIndices, rowIndex, oldRowIndex) {\r\n this._needFocusEditor = true;\r\n this._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: rowIndices\r\n })\r\n },\r\n _focusEditorIfNeed: noop,\r\n _showEditPopup: noop,\r\n _repaintEditPopup: noop,\r\n _getEditPopupHiddenHandler: function() {\r\n return e => {\r\n if (this.isEditing()) {\r\n this.cancelEditData()\r\n }\r\n }\r\n },\r\n _getPopupEditFormTemplate: noop,\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 = [...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 (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 this._lastOperation && this._lastOperation.reject();\r\n this._lastOperation = deferred;\r\n this.waitForDeferredOperations().done(() => {\r\n if (\"rejected\" === deferred.state()) {\r\n return\r\n }\r\n func();\r\n this._lastOperation = null\r\n }).fail(() => {\r\n deferred.reject();\r\n this._lastOperation = null\r\n })\r\n },\r\n waitForDeferredOperations: function() {\r\n return when(...this._deferreds)\r\n },\r\n _processCanceledEditingCell: noop,\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 if (column !== oldColumn) {\r\n this._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: []\r\n })\r\n }\r\n },\r\n _delayedInputFocus: function($cell, beforeFocusCallback, callBeforeFocusCallbackAlways) {\r\n var 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 gridCoreUtils.focusAndSelectElement(this, $focusableElement)\r\n }\r\n this._beforeFocusCallback = null\r\n };\r\n if (devices.real().ios || devices.real().android) {\r\n inputFocus()\r\n } else {\r\n if (this._beforeFocusCallback) {\r\n this._beforeFocusCallback()\r\n }\r\n clearTimeout(this._inputFocusTimeoutID);\r\n if (callBeforeFocusCallbackAlways) {\r\n this._beforeFocusCallback = beforeFocusCallback\r\n }\r\n this._inputFocusTimeoutID = setTimeout(inputFocus)\r\n }\r\n },\r\n _focusEditingCell: function(beforeFocusCallback, $editCell, callBeforeFocusCallbackAlways) {\r\n var rowsView = this.getView(\"rowsView\");\r\n var editColumnIndex = this._getVisibleEditColumnIndex();\r\n $editCell = $editCell || rowsView && rowsView._getCellElement(this._getVisibleEditRowIndex(), editColumnIndex);\r\n this._delayedInputFocus($editCell, beforeFocusCallback, callBeforeFocusCallbackAlways)\r\n },\r\n deleteRow: function(rowIndex) {\r\n this._checkAndDeleteRow(rowIndex)\r\n },\r\n _checkAndDeleteRow: function(rowIndex) {\r\n var editingOptions = this.option(\"editing\");\r\n var editingTexts = null === editingOptions || void 0 === editingOptions ? void 0 : editingOptions.texts;\r\n var confirmDelete = null === editingOptions || void 0 === editingOptions ? void 0 : editingOptions.confirmDelete;\r\n var confirmDeleteMessage = null === editingTexts || void 0 === editingTexts ? void 0 : editingTexts.confirmDeleteMessage;\r\n var item = this._dataController.items()[rowIndex];\r\n var allowDeleting = !this.isEditing() || item.isNewRow;\r\n if (item && allowDeleting) {\r\n if (!confirmDelete || !confirmDeleteMessage) {\r\n this._deleteRowCore(rowIndex)\r\n } else {\r\n var confirmDeleteTitle = editingTexts && editingTexts.confirmDeleteTitle;\r\n var showDialogTitle = isDefined(confirmDeleteTitle) && confirmDeleteTitle.length > 0;\r\n confirm(confirmDeleteMessage, confirmDeleteTitle, showDialogTitle).done(confirmResult => {\r\n if (confirmResult) {\r\n this._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 this.refresh();\r\n var changes = this.getChanges();\r\n var editIndex = gridCoreUtils.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 return this._afterDeleteRow(rowIndex, oldEditRowIndex)\r\n },\r\n _afterDeleteRow: function(rowIndex, oldEditRowIndex) {\r\n return this.saveEditData()\r\n },\r\n undeleteRow: function(rowIndex) {\r\n var dataController = this._dataController;\r\n var item = dataController.items()[rowIndex];\r\n var oldEditRowIndex = this._getVisibleEditRowIndex();\r\n var key = item && item.key;\r\n var changes = this.getChanges();\r\n if (item) {\r\n var editIndex = gridCoreUtils.getIndexByKey(key, changes);\r\n if (editIndex >= 0) {\r\n var {\r\n data: data\r\n } = changes[editIndex];\r\n if (isEmptyObject(data)) {\r\n this._removeChange(editIndex)\r\n } else {\r\n this._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 onSavingParams = {\r\n cancel: false,\r\n promise: null,\r\n changes: [...this.getChanges()]\r\n };\r\n this.executeAction(\"onSaving\", onSavingParams);\r\n var d = new Deferred;\r\n when(fromPromise(onSavingParams.promise)).done(() => {\r\n d.resolve(onSavingParams)\r\n }).fail(arg => {\r\n createFailureHandler(d);\r\n this._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;\r\n this.executeAction(actionName, params);\r\n when(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 store = this._dataController.store();\r\n each(changes, (index, change) => {\r\n var oldData = this._getOldData(change.key);\r\n var {\r\n data: data,\r\n type: type\r\n } = change;\r\n var changeCopy = _extends({}, change);\r\n var deferred;\r\n var params;\r\n if (this._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 = this._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 = this._executeEditingAction(\"onRowInserting\", params, (function() {\r\n return store.insert(params.data).done((function(data, key) {\r\n if (isDefined(key)) {\r\n changeCopy.key = key\r\n }\r\n if (data && 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 = this._executeEditingAction(\"onRowUpdating\", params, (function() {\r\n return store.update(change.key, params.newData).done((function(data, key) {\r\n if (data && 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;\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 _processRemoveIfError: function(changes, editIndex) {\r\n var change = changes[editIndex];\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 return true\r\n },\r\n _processRemove: function(changes, editIndex, cancel) {\r\n var change = changes[editIndex];\r\n if (!cancel || !change || change.type === DATA_EDIT_DATA_REMOVE_TYPE) {\r\n return this._processRemoveCore(changes, editIndex, !cancel || !change)\r\n }\r\n },\r\n _processRemoveCore: function(changes, editIndex) {\r\n if (editIndex >= 0) {\r\n changes.splice(editIndex, 1)\r\n }\r\n return true\r\n },\r\n _processSaveEditDataResult: function(results) {\r\n var hasSavedData = false;\r\n var changes = [...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 = gridCoreUtils.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 this._fireDataErrorOccurred(arg);\r\n if (this._processRemoveIfError(changes, editIndex)) {\r\n break\r\n }\r\n } else if (this._processRemove(changes, editIndex, cancel)) {\r\n hasSavedData = !cancel\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 each(changes, (_, _ref) => {\r\n var {\r\n data: data,\r\n key: key,\r\n type: type\r\n } = _ref;\r\n var internalData = this._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 this.executeAction(\"onRowRemoved\", extend({}, params, {\r\n data: internalData.oldData\r\n }));\r\n break;\r\n case DATA_EDIT_DATA_INSERT_TYPE:\r\n this.executeAction(\"onRowInserted\", params);\r\n break;\r\n case DATA_EDIT_DATA_UPDATE_TYPE:\r\n this.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 deferred = new Deferred;\r\n this.waitForDeferredOperations().done(() => {\r\n if (this.isSaving()) {\r\n this._resolveAfterSave(deferred);\r\n return\r\n }\r\n when(this._beforeSaveEditData()).done(cancel => {\r\n if (cancel) {\r\n this._resolveAfterSave(deferred, {\r\n cancel: cancel\r\n });\r\n return\r\n }\r\n this._saving = true;\r\n this._saveEditDataInner().always(() => {\r\n this._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 {\r\n cancel: cancel,\r\n error: error\r\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n 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 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;\r\n when(this._fireOnSaving()).done(_ref2 => {\r\n var {\r\n cancel: cancel,\r\n changes: changes\r\n } = _ref2;\r\n if (cancel) {\r\n return result.resolve().promise()\r\n }\r\n this._processChanges(deferreds, results, dataChanges, changes);\r\n if (deferreds.length) {\r\n null === dataSource || void 0 === dataSource ? void 0 : dataSource.beginLoading();\r\n when(...deferreds).done(() => {\r\n if (this._processSaveEditDataResult(results)) {\r\n this._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(error => {\r\n null === dataSource || void 0 === dataSource ? void 0 : dataSource.endLoading();\r\n result.resolve(error)\r\n });\r\n return result.always(() => {\r\n this._focusEditingCell()\r\n }).promise()\r\n }\r\n this._cancelSaving(result)\r\n }).fail(result.reject);\r\n return result.promise()\r\n },\r\n _beforeEndSaving: function(changes) {\r\n this._resetEditIndices()\r\n },\r\n _endSaving: function(dataChanges, changes, deferred) {\r\n var dataSource = this._dataController.dataSource();\r\n this._beforeEndSaving(changes);\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 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 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 }\r\n 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(() => {\r\n this._fireSaveEditDataEvents(changes)\r\n }).done(() => {\r\n this._resolveAfterSave(deferred)\r\n }).fail(error => {\r\n this._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 isEditColumnVisible = this._isEditColumnVisible();\r\n var useIcons = this.option(\"editing.useIcons\");\r\n var cssClass = COMMAND_EDIT_CLASS + (useIcons ? \" \" + COMMAND_EDIT_WITH_ICONS_CLASS : \"\");\r\n this._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: this._getEditCommandCellTemplate(),\r\n fixedPosition: \"right\"\r\n });\r\n this._columnsController.columnOption(\"command:edit\", {\r\n visible: isEditColumnVisible,\r\n cssClass: cssClass\r\n })\r\n },\r\n _isEditColumnVisible: function() {\r\n var editingOptions = this.option(\"editing\");\r\n return editingOptions.allowDeleting\r\n },\r\n _isEditButtonDisabled: function() {\r\n var hasChanges = this.hasChanges();\r\n var isEditRowDefined = isDefined(this.option(\"editing.editRowKey\"));\r\n return !(isEditRowDefined || hasChanges)\r\n },\r\n _updateEditButtons: function() {\r\n var headerPanel = this.getView(\"headerPanel\");\r\n var isButtonDisabled = this._isEditButtonDisabled();\r\n if (headerPanel) {\r\n headerPanel.setToolbarItemDisabled(\"saveButton\", isButtonDisabled);\r\n headerPanel.setToolbarItemDisabled(\"revertButton\", isButtonDisabled)\r\n }\r\n },\r\n _applyModified: function($element) {\r\n $element && $element.addClass(CELL_MODIFIED)\r\n },\r\n _beforeCloseEditCellInBatchMode: noop,\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 rowIndex = this._getVisibleEditRowIndex();\r\n this._beforeCancelEditData();\r\n this.init();\r\n this.resetChanges();\r\n this._resetEditColumnName();\r\n this._resetEditRowKey();\r\n this._afterCancelEditData(rowIndex)\r\n },\r\n _afterCancelEditData: function(rowIndex) {\r\n var dataController = this._dataController;\r\n dataController.updateItems({\r\n repaintChangesOnly: this.option(\"repaintChangesOnly\")\r\n })\r\n },\r\n _hideEditPopup: noop,\r\n hasEditData: function() {\r\n return this.hasChanges()\r\n },\r\n update: function(changeType) {\r\n var dataController = this._dataController;\r\n if (dataController && this._pageIndex !== dataController.pageIndex()) {\r\n if (\"refresh\" === changeType) {\r\n this.refresh(true)\r\n }\r\n this._pageIndex = dataController.pageIndex()\r\n }\r\n this._updateEditButtons()\r\n },\r\n _getRowIndicesForCascadeUpdating: function(row, skipCurrentRow) {\r\n return skipCurrentRow ? [] : [row.rowIndex]\r\n },\r\n addDeferred: function(deferred) {\r\n if (this._deferreds.indexOf(deferred) < 0) {\r\n this._deferreds.push(deferred);\r\n deferred.always(() => {\r\n var index = this._deferreds.indexOf(deferred);\r\n if (index >= 0) {\r\n this._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 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 deferred = new Deferred;\r\n if (void 0 !== rowKey) {\r\n options.value = value;\r\n var setCellValueResult = fromPromise(options.column.setCellValue(newData, value, 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(arg => this._fireDataErrorOccurred(arg));\r\n if (isDefined(text) && options.column.displayValueMap) {\r\n options.column.displayValueMap[value] = text\r\n }\r\n this._updateRowValues(options);\r\n this.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 rowKey = options.key;\r\n var deferred = new 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(params => {\r\n when(this._applyChange(options, params, forceUpdateRow)).always(() => {\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 if (this.hasEditData() && !this.isEditCell(options.rowIndex, options.columnIndex)) {\r\n this._focusEditingCell();\r\n this._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(visibleColumn => visibleColumn.calculateCellValue !== visibleColumn.defaultCalculateCellValue);\r\n return isCustomSetCellValue || isCustomCalculateCellValue\r\n },\r\n _applyChange: function(options, params, forceUpdateRow) {\r\n this._addChange(params, options.row);\r\n this._updateEditButtons();\r\n return this._applyChangeCore(options, forceUpdateRow)\r\n },\r\n _applyChangeCore: function(options, forceUpdateRow) {\r\n var isCustomSetCellValue = options.column.setCellValue !== options.column.defaultSetCellValue;\r\n var row = options.row;\r\n if (row) {\r\n if (forceUpdateRow || isCustomSetCellValue) {\r\n this._updateEditRow(row, forceUpdateRow, isCustomSetCellValue)\r\n } else if (row.update) {\r\n row.update()\r\n }\r\n }\r\n },\r\n _updateEditRowCore: function(row, skipCurrentRow, isCustomSetCellValue) {\r\n this._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: this._getRowIndicesForCascadeUpdating(row, skipCurrentRow)\r\n })\r\n },\r\n _updateEditRow: function(row, forceUpdateRow, isCustomSetCellValue) {\r\n if (forceUpdateRow) {\r\n this._updateRowImmediately(row, forceUpdateRow, isCustomSetCellValue)\r\n } else {\r\n this._updateRowWithDelay(row, isCustomSetCellValue)\r\n }\r\n },\r\n _updateRowImmediately: function(row, forceUpdateRow, isCustomSetCellValue) {\r\n this._updateEditRowCore(row, !forceUpdateRow, isCustomSetCellValue);\r\n this._validateEditFormAfterUpdate(row, isCustomSetCellValue);\r\n if (!forceUpdateRow) {\r\n this._focusEditingCell()\r\n }\r\n },\r\n _updateRowWithDelay: function(row, isCustomSetCellValue) {\r\n var deferred = new Deferred;\r\n this.addDeferred(deferred);\r\n setTimeout(() => {\r\n var $focusedElement = $(domAdapter.getActiveElement());\r\n var columnIndex = this._rowsView.getCellIndex($focusedElement, row.rowIndex);\r\n var focusedElement = $focusedElement.get(0);\r\n var selectionRange = gridCoreUtils.getSelectionRange(focusedElement);\r\n this._updateEditRowCore(row, false, isCustomSetCellValue);\r\n this._validateEditFormAfterUpdate(row, isCustomSetCellValue);\r\n if (columnIndex >= 0) {\r\n var $focusedItem = this._rowsView._getCellElement(row.rowIndex, columnIndex);\r\n this._delayedInputFocus($focusedItem, () => {\r\n setTimeout(() => {\r\n focusedElement = domAdapter.getActiveElement();\r\n if (selectionRange.selectionStart >= 0) {\r\n gridCoreUtils.setSelectionRange(focusedElement, selectionRange)\r\n }\r\n })\r\n })\r\n }\r\n deferred.resolve()\r\n })\r\n },\r\n _validateEditFormAfterUpdate: noop,\r\n _addChange: function(options, row) {\r\n var changes = [...this.getChanges()];\r\n var index = gridCoreUtils.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 = _extends({}, changes[index]);\r\n if (change) {\r\n if (options.data) {\r\n change.data = 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 = 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 || this._getDefaultEditorTemplate()\r\n },\r\n getColumnTemplate: function(options) {\r\n var column = options.column;\r\n var rowIndex = options.row && options.row.rowIndex;\r\n var template;\r\n var isRowMode = this.isRowBasedEditMode();\r\n var isRowEditing = this.isEditRow(rowIndex);\r\n var isCellEditing = this.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 = this.allowUpdating(options);\r\n if (((allowUpdating || isRowEditing) && column.allowEditing || isCellEditing) && (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 this._isEditingStart(editingStartOptions)\r\n }\r\n if (!editingStartOptions || !editingStartOptions.cancel) {\r\n options.setValue = (value, text) => {\r\n this.updateFieldValue(options, value, text)\r\n }\r\n }\r\n }\r\n template = column.editCellTemplate || this._getDefaultEditorTemplate()\r\n } else if (\"detail\" === column.command && \"detail\" === options.rowType && isRowEditing) {\r\n template = null === this || void 0 === this ? void 0 : this.getEditFormTemplate(options)\r\n }\r\n return template\r\n },\r\n _createButton: function($container, button, options) {\r\n var icon = EDIT_ICON_CLASS[button.name];\r\n var useIcons = this.option(\"editing.useIcons\");\r\n var $button = $(\"\").attr(\"href\", \"#\").addClass(LINK_CLASS).addClass(button.cssClass);\r\n if (button.template) {\r\n this._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\", messageLocalization.format(localizationName))\r\n } else {\r\n $button.text(button.text)\r\n }\r\n if (isDefined(button.hint)) {\r\n $button.attr(\"title\", button.hint)\r\n }\r\n eventsEngine.on($button, addNamespace(\"click\", EDITING_NAMESPACE), this.createAction((function(e) {\r\n button.onClick.call(button, 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: () => ({\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 prepareButtonItem: function(headerPanel, name, methodName, sortIndex) {\r\n var editingTexts = this.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 className = {\r\n revert: \"cancel\",\r\n save: \"save\",\r\n addRow: \"addrow\"\r\n } [name];\r\n var hintText = titleButtonTextByClassNames[name];\r\n var isButtonDisabled = (\"save\" === className || \"cancel\" === className) && this._isEditButtonDisabled();\r\n return {\r\n widget: \"dxButton\",\r\n options: {\r\n onInitialized: e => {\r\n $(e.element).addClass(headerPanel._getToolbarButtonClass(EDIT_BUTTON_CLASS + \" \" + this.addWidgetPrefix(className) + \"-button\"))\r\n },\r\n icon: \"edit-button-\" + className,\r\n disabled: isButtonDisabled,\r\n onClick: () => {\r\n setTimeout(() => {\r\n this[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 prepareEditButtons: function(headerPanel) {\r\n var editingOptions = this.option(\"editing\") || {};\r\n var buttonItems = [];\r\n if (editingOptions.allowAdding) {\r\n buttonItems.push(this.prepareButtonItem(headerPanel, \"addRow\", \"addRow\", 20))\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: noop,\r\n _beforeSaveEditData: function(change) {\r\n if (change && !isDefined(change.key) && isDefined(change.type)) {\r\n return true\r\n }\r\n },\r\n _afterSaveEditData: noop,\r\n _beforeCancelEditData: noop,\r\n _allowEditAction: function(actionName, options) {\r\n var allowEditAction = this.option(\"editing.\" + actionName);\r\n if (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 }\r\n}());\r\nexport var editingModule = {\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: messageLocalization.format(\"dxDataGrid-editingEditRow\"),\r\n saveAllChanges: messageLocalization.format(\"dxDataGrid-editingSaveAllChanges\"),\r\n saveRowChanges: messageLocalization.format(\"dxDataGrid-editingSaveRowChanges\"),\r\n cancelAllChanges: messageLocalization.format(\"dxDataGrid-editingCancelAllChanges\"),\r\n cancelRowChanges: messageLocalization.format(\"dxDataGrid-editingCancelRowChanges\"),\r\n addRow: messageLocalization.format(\"dxDataGrid-editingAddRow\"),\r\n deleteRow: messageLocalization.format(\"dxDataGrid-editingDeleteRow\"),\r\n undeleteRow: messageLocalization.format(\"dxDataGrid-editingUndeleteRow\"),\r\n confirmDeleteMessage: messageLocalization.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 editRowKey = this.option(EDITING_EDITROWKEY_OPTION_NAME);\r\n var editRowIndex = gridCoreUtils.getIndexByKey(editRowKey, items);\r\n var editItem = items[editRowIndex];\r\n if (editItem) {\r\n var _this$_updateEditItem;\r\n editItem.isEditing = true;\r\n null === (_this$_updateEditItem = this._updateEditItem) || void 0 === _this$_updateEditItem ? void 0 : _this$_updateEditItem.call(this, editItem)\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 if (oldItem.isNewRow !== newItem.isNewRow || oldItem.removed !== newItem.removed) {\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 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 each($cellElements, (function(index, cellElement) {\r\n if ($(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 publicMethods: function() {\r\n return this.callBase().concat([\"cellValue\"])\r\n },\r\n _getCellTemplate: function(options) {\r\n var template = this._editingController.getColumnTemplate(options);\r\n return template || this.callBase(options)\r\n },\r\n _isNativeClick: function() {\r\n return (devices.real().ios || devices.real().android) && this.option(\"editing.allowUpdating\")\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row);\r\n if (row) {\r\n var isRowRemoved = !!row.removed;\r\n var isRowInserted = !!row.isNewRow;\r\n var isRowModified = !!row.modified;\r\n isRowInserted && $row.addClass(ROW_INSERTED);\r\n isRowModified && $row.addClass(ROW_MODIFIED);\r\n if (isRowInserted || isRowRemoved) {\r\n $row.removeClass(ROW_SELECTED)\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 editingController = this._editingController;\r\n var $targetElement = $(e.event.target);\r\n var columnIndex = this._getColumnIndexByElement($targetElement);\r\n var row = this._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 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 this._pointerDownTimeout = setTimeout(() => {\r\n this._editCellByClick(e, \"down\")\r\n })\r\n },\r\n _rowClick: function(e) {\r\n var isEditForm = $(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: noop,\r\n _formItemPrepared: noop,\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 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(optionName => optionName === fullName);\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 editingOptions = this.getController(\"editing\").option(\"editing\");\r\n return this.callBase() || (null === editingOptions || void 0 === editingOptions ? void 0 : editingOptions.allowAdding)\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.editing_row_based.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n EDIT_MODE_ROW,\r\n MODES_WITH_DELAYED_FOCUS,\r\n ROW_SELECTED_CLASS,\r\n EDIT_FORM_CLASS\r\n} from \"./ui.grid_core.editing_constants\";\r\nvar EDIT_ROW = \"dx-edit-row\";\r\nexport var editingRowBasedModule = {\r\n extenders: {\r\n controllers: {\r\n editing: {\r\n isRowEditMode: function() {\r\n return this.getEditMode() === EDIT_MODE_ROW\r\n },\r\n _afterCancelEditData: function(rowIndex) {\r\n var dataController = this._dataController;\r\n if (this.isRowBasedEditMode() && rowIndex >= 0) {\r\n dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [rowIndex, rowIndex + 1]\r\n })\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _isDefaultButtonVisible: function(button, options) {\r\n var isRowMode = this.isRowBasedEditMode();\r\n var isEditRow = options.row && options.row.rowIndex === this._getVisibleEditRowIndex();\r\n if (isRowMode) {\r\n switch (button.name) {\r\n case \"edit\":\r\n return !isEditRow && this.allowUpdating(options);\r\n case \"delete\":\r\n return this.callBase.apply(this, arguments) && !isEditRow;\r\n case \"save\":\r\n case \"cancel\":\r\n return isEditRow;\r\n default:\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n isEditRow: function(rowIndex) {\r\n return this.isRowBasedEditMode() && this._isEditRowByIndex(rowIndex)\r\n },\r\n _cancelSaving: function() {\r\n if (this.isRowBasedEditMode()) {\r\n if (!this.hasChanges()) {\r\n this._cancelEditDataCore()\r\n }\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _refreshCore: function() {\r\n if (this.isRowBasedEditMode()) {\r\n this.init()\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _isEditColumnVisible: function() {\r\n var result = this.callBase.apply(this, arguments);\r\n var editingOptions = this.option(\"editing\");\r\n var isRowEditMode = this.isRowEditMode();\r\n var isVisibleInRowEditMode = editingOptions.allowUpdating || editingOptions.allowAdding;\r\n return result || isRowEditMode && isVisibleInRowEditMode\r\n },\r\n _focusEditorIfNeed: function() {\r\n var editMode = this.getEditMode();\r\n if (this._needFocusEditor) {\r\n if (-1 !== MODES_WITH_DELAYED_FOCUS.indexOf(editMode)) {\r\n var $editingCell = this.getFocusedCellInRow(this._getVisibleEditRowIndex());\r\n this._delayedInputFocus($editingCell, () => {\r\n $editingCell && this.component.focus($editingCell)\r\n })\r\n }\r\n this._needFocusEditor = false\r\n }\r\n }\r\n },\r\n data: {\r\n _getChangedColumnIndices: function(oldItem, newItem, rowIndex, isLiveUpdate) {\r\n var editingController = this.getController(\"editing\");\r\n if (editingController.isRowBasedEditMode() && oldItem.isEditing !== newItem.isEditing) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\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 (row) {\r\n var editingController = this._editingController;\r\n var isEditRow = editingController.isEditRow(row.rowIndex);\r\n if (isEditRow) {\r\n $row.addClass(EDIT_ROW);\r\n $row.removeClass(ROW_SELECTED_CLASS);\r\n if (\"detail\" === row.rowType) {\r\n $row.addClass(this.addWidgetPrefix(EDIT_FORM_CLASS))\r\n }\r\n }\r\n }\r\n return $row\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_CLASS)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.utils.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isDefined,\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport sharedFiltering from \"../shared/filtering\";\r\nimport {\r\n format\r\n} from \"../../core/utils/string\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport {\r\n toComparable\r\n} from \"../../core/utils/data\";\r\nimport {\r\n equalByValue\r\n} from \"../../core/utils/common\";\r\nimport LoadPanel from \"../load_panel\";\r\nimport {\r\n normalizeSortingInfo as normalizeSortingInfoUtility\r\n} from \"../../data/utils\";\r\nimport formatHelper from \"../../format_helper\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nvar DATAGRID_SELECTION_DISABLED_CLASS = \"dx-selection-disabled\";\r\nvar DATAGRID_GROUP_OPENED_CLASS = \"dx-datagrid-group-opened\";\r\nvar DATAGRID_GROUP_CLOSED_CLASS = \"dx-datagrid-group-closed\";\r\nvar DATAGRID_EXPAND_CLASS = \"dx-datagrid-expand\";\r\nvar NO_DATA_CLASS = \"nodata\";\r\nvar DATE_INTERVAL_SELECTORS = {\r\n year: function(value) {\r\n return value && value.getFullYear()\r\n },\r\n month: function(value) {\r\n return value && value.getMonth() + 1\r\n },\r\n day: function(value) {\r\n return value && value.getDate()\r\n },\r\n quarter: function(value) {\r\n return value && Math.floor(value.getMonth() / 3) + 1\r\n },\r\n hour: function(value) {\r\n return value && value.getHours()\r\n },\r\n minute: function(value) {\r\n return value && value.getMinutes()\r\n },\r\n second: function(value) {\r\n return value && value.getSeconds()\r\n }\r\n};\r\nvar getIntervalSelector = function() {\r\n var data = arguments[1];\r\n var value = this.calculateCellValue(data);\r\n if (!isDefined(value)) {\r\n return null\r\n } else if (isDateType(this.dataType)) {\r\n var nameIntervalSelector = arguments[0];\r\n return DATE_INTERVAL_SELECTORS[nameIntervalSelector](value)\r\n } else if (\"number\" === this.dataType) {\r\n var groupInterval = arguments[0];\r\n return Math.floor(Number(value) / groupInterval) * groupInterval\r\n }\r\n};\r\nvar equalSelectors = function(selector1, selector2) {\r\n if (isFunction(selector1) && isFunction(selector2)) {\r\n if (selector1.originalCallback && selector2.originalCallback) {\r\n return selector1.originalCallback === selector2.originalCallback && selector1.columnIndex === selector2.columnIndex\r\n }\r\n }\r\n return selector1 === selector2\r\n};\r\n\r\nfunction isDateType(dataType) {\r\n return \"date\" === dataType || \"datetime\" === dataType\r\n}\r\nvar setEmptyText = function($container) {\r\n $container.get(0).textContent = \"\\xa0\"\r\n};\r\nvar normalizeSortingInfo = function(sort) {\r\n sort = sort || [];\r\n var result = normalizeSortingInfoUtility(sort);\r\n for (var i = 0; i < sort.length; i++) {\r\n if (sort && sort[i] && void 0 !== sort[i].isExpanded) {\r\n result[i].isExpanded = sort[i].isExpanded\r\n }\r\n if (sort && sort[i] && void 0 !== sort[i].groupInterval) {\r\n result[i].groupInterval = sort[i].groupInterval\r\n }\r\n }\r\n return result\r\n};\r\nvar formatValue = function(value, options) {\r\n var valueText = formatHelper.format(value, options.format) || value && value.toString() || \"\";\r\n var formatObject = {\r\n value: value,\r\n valueText: options.getDisplayFormat ? options.getDisplayFormat(valueText) : valueText,\r\n target: options.target || \"row\",\r\n groupInterval: options.groupInterval\r\n };\r\n return options.customizeText ? options.customizeText.call(options, formatObject) : formatObject.valueText\r\n};\r\nvar getSummaryText = function(summaryItem, summaryTexts) {\r\n var displayFormat = summaryItem.displayFormat || summaryItem.columnCaption && summaryTexts[summaryItem.summaryType + \"OtherColumn\"] || summaryTexts[summaryItem.summaryType];\r\n return formatValue(summaryItem.value, {\r\n format: summaryItem.valueFormat,\r\n getDisplayFormat: function(valueText) {\r\n return displayFormat ? format(displayFormat, valueText, summaryItem.columnCaption) : valueText\r\n },\r\n customizeText: summaryItem.customizeText\r\n })\r\n};\r\nvar getWidgetInstance = function($element) {\r\n var editorData = $element.data && $element.data();\r\n var dxComponents = editorData && editorData.dxComponents;\r\n var widgetName = dxComponents && dxComponents[0];\r\n return widgetName && editorData[widgetName]\r\n};\r\nvar equalFilterParameters = function equalFilterParameters(filter1, filter2) {\r\n if (Array.isArray(filter1) && Array.isArray(filter2)) {\r\n if (filter1.length !== filter2.length) {\r\n return false\r\n } else {\r\n for (var i = 0; i < filter1.length; i++) {\r\n if (!equalFilterParameters(filter1[i], filter2[i])) {\r\n return false\r\n }\r\n }\r\n }\r\n return true\r\n } else if (isFunction(filter1) && filter1.columnIndex >= 0 && isFunction(filter2) && filter2.columnIndex >= 0) {\r\n return filter1.columnIndex === filter2.columnIndex && toComparable(filter1.filterValue) === toComparable(filter2.filterValue)\r\n } else {\r\n return toComparable(filter1) == toComparable(filter2)\r\n }\r\n};\r\nexport default {\r\n renderNoDataText: function($element) {\r\n $element = $element || this.element();\r\n if (!$element) {\r\n return\r\n }\r\n var noDataClass = this.addWidgetPrefix(NO_DATA_CLASS);\r\n var noDataElement = $element.find(\".\" + noDataClass).last();\r\n var isVisible = this._dataController.isEmpty();\r\n var isLoading = this._dataController.isLoading();\r\n if (!noDataElement.length) {\r\n noDataElement = $(\"\").addClass(noDataClass).appendTo($element)\r\n }\r\n if (isVisible && !isLoading) {\r\n noDataElement.removeClass(\"dx-hidden\").text(this._getNoDataText())\r\n } else {\r\n noDataElement.addClass(\"dx-hidden\")\r\n }\r\n },\r\n renderLoadPanel: function($element, $container, isLocalStore) {\r\n var loadPanelOptions;\r\n this._loadPanel && this._loadPanel.$element().remove();\r\n loadPanelOptions = this.option(\"loadPanel\");\r\n if (loadPanelOptions && (\"auto\" === loadPanelOptions.enabled ? !isLocalStore : loadPanelOptions.enabled)) {\r\n loadPanelOptions = extend({\r\n shading: false,\r\n message: loadPanelOptions.text,\r\n position: function() {\r\n var $window = $(getWindow());\r\n if ($element.height() > $window.height()) {\r\n return {\r\n of: $window,\r\n boundary: $element,\r\n collision: \"fit\"\r\n }\r\n }\r\n return {\r\n of: $element\r\n }\r\n },\r\n container: $container\r\n }, loadPanelOptions);\r\n this._loadPanel = this._createComponent($(\"
\").appendTo($container), LoadPanel, loadPanelOptions)\r\n } else {\r\n this._loadPanel = null\r\n }\r\n },\r\n getIndexByKey: function(key, items, keyName) {\r\n var index = -1;\r\n if (void 0 !== key && Array.isArray(items)) {\r\n keyName = arguments.length <= 2 ? \"key\" : keyName;\r\n for (var i = 0; i < items.length; i++) {\r\n var item = isDefined(keyName) ? items[i][keyName] : items[i];\r\n if (equalByValue(key, item)) {\r\n index = i;\r\n break\r\n }\r\n }\r\n }\r\n return index\r\n },\r\n combineFilters: function(filters, operation) {\r\n var resultFilter = [];\r\n operation = operation || \"and\";\r\n for (var i = 0; i < filters.length; i++) {\r\n if (!filters[i]) {\r\n continue\r\n }\r\n if (resultFilter.length) {\r\n resultFilter.push(operation)\r\n }\r\n resultFilter.push(filters[i])\r\n }\r\n if (1 === resultFilter.length) {\r\n resultFilter = resultFilter[0]\r\n }\r\n if (resultFilter.length) {\r\n return resultFilter\r\n }\r\n },\r\n checkChanges: function(changes, changeNames) {\r\n var changesWithChangeNamesCount = 0;\r\n for (var i = 0; i < changeNames.length; i++) {\r\n if (changes[changeNames[i]]) {\r\n changesWithChangeNamesCount++\r\n }\r\n }\r\n return changes.length && changes.length === changesWithChangeNamesCount\r\n },\r\n equalFilterParameters: equalFilterParameters,\r\n proxyMethod: function(instance, methodName, defaultResult) {\r\n if (!instance[methodName]) {\r\n instance[methodName] = function() {\r\n var dataSource = this._dataSource;\r\n return dataSource ? dataSource[methodName].apply(dataSource, arguments) : defaultResult\r\n }\r\n }\r\n },\r\n formatValue: formatValue,\r\n getFormatOptionsByColumn: function(column, target) {\r\n return {\r\n format: column.format,\r\n getDisplayFormat: column.getDisplayFormat,\r\n customizeText: column.customizeText,\r\n target: target,\r\n trueText: column.trueText,\r\n falseText: column.falseText\r\n }\r\n },\r\n getDisplayValue: function(column, value, data, rowType) {\r\n if (column.displayValueMap && void 0 !== column.displayValueMap[value]) {\r\n return column.displayValueMap[value]\r\n } else if (column.calculateDisplayValue && data && \"group\" !== rowType) {\r\n return column.calculateDisplayValue(data)\r\n } else if (column.lookup && !(\"group\" === rowType && (column.calculateGroupValue || column.calculateDisplayValue))) {\r\n return column.lookup.calculateCellValue(value)\r\n }\r\n return value\r\n },\r\n getGroupRowSummaryText: function(summaryItems, summaryTexts) {\r\n var result = \"(\";\r\n for (var i = 0; i < summaryItems.length; i++) {\r\n var summaryItem = summaryItems[i];\r\n result += (i > 0 ? \", \" : \"\") + getSummaryText(summaryItem, summaryTexts)\r\n }\r\n return result + \")\"\r\n },\r\n getSummaryText: getSummaryText,\r\n normalizeSortingInfo: normalizeSortingInfo,\r\n getFormatByDataType: function(dataType) {\r\n switch (dataType) {\r\n case \"date\":\r\n return \"shortDate\";\r\n case \"datetime\":\r\n return \"shortDateShortTime\"\r\n }\r\n },\r\n getHeaderFilterGroupParameters: function(column, remoteGrouping) {\r\n var result = [];\r\n var dataField = column.dataField || column.name;\r\n var groupInterval = sharedFiltering.getGroupInterval(column);\r\n if (groupInterval) {\r\n each(groupInterval, (function(index, interval) {\r\n result.push(remoteGrouping ? {\r\n selector: dataField,\r\n groupInterval: interval,\r\n isExpanded: index < groupInterval.length - 1\r\n } : getIntervalSelector.bind(column, interval))\r\n }));\r\n return result\r\n }\r\n if (remoteGrouping) {\r\n result = [{\r\n selector: dataField,\r\n isExpanded: false\r\n }]\r\n } else {\r\n result = function(data) {\r\n var result = column.calculateCellValue(data);\r\n if (void 0 === result || \"\" === result) {\r\n result = null\r\n }\r\n return result\r\n };\r\n if (column.sortingMethod) {\r\n result = [{\r\n selector: result,\r\n compare: column.sortingMethod.bind(column)\r\n }]\r\n }\r\n }\r\n return result\r\n },\r\n equalSortParameters(sortParameters1, sortParameters2, ignoreIsExpanded) {\r\n sortParameters1 = normalizeSortingInfo(sortParameters1);\r\n sortParameters2 = normalizeSortingInfo(sortParameters2);\r\n if (Array.isArray(sortParameters1) && Array.isArray(sortParameters2)) {\r\n if (sortParameters1.length !== sortParameters2.length) {\r\n return false\r\n } else {\r\n for (var i = 0; i < sortParameters1.length; i++) {\r\n if (!equalSelectors(sortParameters1[i].selector, sortParameters2[i].selector) || sortParameters1[i].desc !== sortParameters2[i].desc || sortParameters1[i].groupInterval !== sortParameters2[i].groupInterval || !ignoreIsExpanded && Boolean(sortParameters1[i].isExpanded) !== Boolean(sortParameters2[i].isExpanded)) {\r\n return false\r\n }\r\n }\r\n }\r\n return true\r\n } else {\r\n return (!sortParameters1 || !sortParameters1.length) === (!sortParameters2 || !sortParameters2.length)\r\n }\r\n },\r\n getPointsByColumns: function(items, pointCreated, isVertical, startColumnIndex) {\r\n var cellsLength = items.length;\r\n var notCreatePoint = false;\r\n var item;\r\n var offset;\r\n var columnIndex = startColumnIndex || 0;\r\n var result = [];\r\n var rtlEnabled;\r\n for (var i = 0; i <= cellsLength; i++) {\r\n if (i < cellsLength) {\r\n item = items.eq(i);\r\n offset = item.offset();\r\n rtlEnabled = \"rtl\" === item.css(\"direction\")\r\n }\r\n var point = {\r\n index: columnIndex,\r\n x: offset ? offset.left + (!isVertical && rtlEnabled ^ i === cellsLength ? getBoundingRect(item[0]).width : 0) : 0,\r\n y: offset ? offset.top + (isVertical && i === cellsLength ? getBoundingRect(item[0]).height : 0) : 0,\r\n columnIndex: columnIndex\r\n };\r\n if (!isVertical && i > 0) {\r\n var prevItemOffset = items.eq(i - 1).offset();\r\n if (prevItemOffset.top < point.y) {\r\n point.y = prevItemOffset.top\r\n }\r\n }\r\n if (pointCreated) {\r\n notCreatePoint = pointCreated(point)\r\n }\r\n if (!notCreatePoint) {\r\n result.push(point)\r\n }\r\n columnIndex++\r\n }\r\n return result\r\n },\r\n getExpandCellTemplate: function() {\r\n return {\r\n allowRenderToDetachedContainer: true,\r\n render: function(container, options) {\r\n var $container = $(container);\r\n if (isDefined(options.value) && !(options.data && options.data.isContinuation) && !options.row.isNewRow) {\r\n var rowsView = options.component.getView(\"rowsView\");\r\n $container.addClass(DATAGRID_EXPAND_CLASS).addClass(DATAGRID_SELECTION_DISABLED_CLASS);\r\n $(\"
\").addClass(options.value ? DATAGRID_GROUP_OPENED_CLASS : DATAGRID_GROUP_CLOSED_CLASS).appendTo($container);\r\n rowsView.setAria(\"label\", options.value ? rowsView.localize(\"dxDataGrid-ariaCollapse\") : rowsView.localize(\"dxDataGrid-ariaExpand\"), $container)\r\n } else {\r\n setEmptyText($container)\r\n }\r\n }\r\n }\r\n },\r\n setEmptyText: setEmptyText,\r\n isDateType: isDateType,\r\n getSelectionRange: function(focusedElement) {\r\n try {\r\n if (focusedElement) {\r\n return {\r\n selectionStart: focusedElement.selectionStart,\r\n selectionEnd: focusedElement.selectionEnd\r\n }\r\n }\r\n } catch (e) {}\r\n return {}\r\n },\r\n setSelectionRange: function(focusedElement, selectionRange) {\r\n try {\r\n if (focusedElement && focusedElement.setSelectionRange) {\r\n focusedElement.setSelectionRange(selectionRange.selectionStart, selectionRange.selectionEnd)\r\n }\r\n } catch (e) {}\r\n },\r\n focusAndSelectElement: function(component, $element) {\r\n eventsEngine.trigger($element, \"focus\");\r\n var isSelectTextOnEditingStart = component.option(\"editing.selectTextOnEditStart\");\r\n var keyboardController = component.getController(\"keyboardNavigation\");\r\n var isEditingNavigationMode = keyboardController && keyboardController._isFastEditingStarted();\r\n var element = $element.get(0);\r\n if (isSelectTextOnEditingStart && !isEditingNavigationMode && $element.is(\".dx-texteditor-input\") && !$element.is(\"[readonly]\")) {\r\n var editor = getWidgetInstance($element.closest(\".dx-texteditor\"));\r\n when(editor && editor._loadItemDeferred).done((function() {\r\n element.select()\r\n }))\r\n }\r\n },\r\n getWidgetInstance: getWidgetInstance,\r\n getLastResizableColumnIndex: function(columns, resultWidths) {\r\n var hasResizableColumns = columns.some(column => column && !column.command && !column.fixed && false !== column.allowResizing);\r\n var lastColumnIndex;\r\n for (lastColumnIndex = columns.length - 1; columns[lastColumnIndex]; lastColumnIndex--) {\r\n var column = columns[lastColumnIndex];\r\n var width = resultWidths && resultWidths[lastColumnIndex];\r\n var allowResizing = !hasResizableColumns || false !== column.allowResizing;\r\n if (!column.command && !column.fixed && \"adaptiveHidden\" !== width && allowResizing) {\r\n break\r\n }\r\n }\r\n return lastColumnIndex\r\n },\r\n isElementInCurrentGrid: function(controller, $element) {\r\n if ($element && $element.length) {\r\n var $grid = $element.closest(\".\" + controller.getWidgetContainerClass()).parent();\r\n return $grid.is(controller.component.$element())\r\n }\r\n return false\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.focus.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport core from \"./ui.grid_core.modules\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport {\r\n equalByValue\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isBoolean\r\n} from \"../../core/utils/type\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\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 = core.ViewController.inherit({\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 if (\"focusedRowKey\" === args.name) {\r\n args.handled = true;\r\n if (Array.isArray(args.value) && JSON.stringify(args.value) === JSON.stringify(args.previousValue)) {\r\n return\r\n }\r\n var focusedRowIndex = this.option(\"focusedRowIndex\");\r\n this._focusRowByKey(args.value);\r\n this._triggerFocusedRowChangedIfNeed(args.value, focusedRowIndex)\r\n } else if (\"focusedColumnIndex\" === args.name) {\r\n args.handled = true\r\n } else if (\"focusedRowEnabled\" === args.name) {\r\n args.handled = true\r\n } else if (\"autoNavigateToFocusedRow\" === args.name) {\r\n args.handled = true\r\n } else {\r\n this.callBase(args)\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 = $(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 dataController = this.getController(\"data\");\r\n var pageSize = dataController.pageSize();\r\n var setKeyByIndex = () => {\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 (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 when(dataController.pageIndex(pageIndex), dataController.waitReady()).done(() => {\r\n setKeyByIndex()\r\n })\r\n } else {\r\n setKeyByIndex()\r\n }\r\n }\r\n },\r\n _isLocalRowIndex(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 (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 (!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 = 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;\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 = gridCoreUtils.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 that.component.on(\"contentReady\", (function triggerUpdateFocusedRow() {\r\n that.component.off(\"contentReady\", triggerUpdateFocusedRow);\r\n that._triggerUpdateFocusedRow(key, deferred)\r\n }))\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 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 (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(focusedRowIndex => {\r\n if (currentFocusedRowIndex >= 0 && focusedRowIndex < 0) {\r\n this._focusRowByIndex()\r\n } else if (currentFocusedRowIndex < 0 && focusedRowIndex >= 0) {\r\n keyboardController.setFocusedRowIndex(focusedRowIndex)\r\n }\r\n })\r\n }\r\n } else if (currentFocusedRowIndex >= 0) {\r\n this.getController(\"focus\")._focusRowByIndex(currentFocusedRowIndex)\r\n }\r\n },\r\n isRowFocused: function(key) {\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n if (isDefined(focusedRowKey)) {\r\n return 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 each(rowsView.getTableElements(), (function(index, element) {\r\n var _change$items;\r\n var isMainTable = 0 === index;\r\n $tableElement = $(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 $prevRowFocusedElement = $tableElement.find(FOCUSED_ROW_SELECTOR).filter((_, focusedRow) => {\r\n var $focusedRowTable = $(focusedRow).closest(\".\".concat(this.addWidgetPrefix(TABLE_POSTFIX_CLASS)));\r\n return $tableElement.is($focusedRowTable)\r\n });\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 = $(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 = $(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\nexport var focusModule = {\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 (isDefined(rowIndex)) {\r\n this._focusedCellPosition.rowIndex = this.option(\"focusedRowIndex\")\r\n }\r\n if (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 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 columns: {\r\n getSortDataSourceParameters: function(_, sortByKey) {\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(operationName => !remoteOperations[operationName]);\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(key => !this.columnOption(key, \"sortOrder\"));\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(notSortedKey => result.push({\r\n selector: notSortedKey,\r\n desc: false\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 if (\"append\" === e.changeType || \"prepend\" === e.changeType) {\r\n this._updatePageIndexes()\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 {\r\n reload: reload,\r\n fullReload: fullReload\r\n } = operationTypes;\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 && 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 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 if (this.getRowIndexByKey(focusedRowKey) < 0) {\r\n this.option(\"focusedRowIndex\", -1)\r\n }\r\n } else if (operationTypes.fullReload) {\r\n focusController._focusRowByKeyOrIndex()\r\n }\r\n },\r\n getPageIndexByKey: function(key) {\r\n var that = this;\r\n var d = new 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;\r\n var dataSource = that._dataSource;\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 gridCoreUtils.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 if (true === value ? !sortInfo.desc : sortInfo.desc) {\r\n result = [selector, \"<>\", value]\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 || 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 deferred = this.callBase.apply(this, arguments);\r\n var dataController = this.getController(\"data\");\r\n var rowKey = dataController.getKeyByRowIndex(rowIndex);\r\n deferred.done(() => {\r\n var rowIndex = dataController.getRowIndexByKey(rowKey);\r\n var visibleRows = dataController.getVisibleRows();\r\n if (-1 === rowIndex && !visibleRows.length) {\r\n this.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 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 (!isDefined(this._scrollToFocusOnResize)) {\r\n this._scrollToFocusOnResize = () => {\r\n this.scrollToElementVertically(this._findRowElementForTabIndex());\r\n this.resizeCompleted.remove(this._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 $(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 = $(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\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.context_menu.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport ContextMenu from \"../context_menu\";\r\nvar CONTEXT_MENU = \"dx-context-menu\";\r\nvar viewName = {\r\n columnHeadersView: \"header\",\r\n rowsView: \"content\",\r\n footerView: \"footer\",\r\n headerPanel: \"headerPanel\"\r\n};\r\nvar VIEW_NAMES = [\"columnHeadersView\", \"rowsView\", \"footerView\", \"headerPanel\"];\r\nvar ContextMenuController = modules.ViewController.inherit({\r\n init: function() {\r\n this.createAction(\"onContextMenuPreparing\")\r\n },\r\n getContextMenuItems: function(dxEvent) {\r\n if (!dxEvent) {\r\n return false\r\n }\r\n var that = this;\r\n var $targetElement = $(dxEvent.target);\r\n var $element;\r\n var $targetRowElement;\r\n var $targetCellElement;\r\n var menuItems;\r\n each(VIEW_NAMES, (function() {\r\n var view = that.getView(this);\r\n $element = view && view.element();\r\n if ($element && ($element.is($targetElement) || $element.find($targetElement).length)) {\r\n $targetCellElement = $targetElement.closest(\".dx-row > td, .dx-row > tr\");\r\n $targetRowElement = $targetCellElement.parent();\r\n var rowIndex = view.getRowIndex($targetRowElement);\r\n var columnIndex = $targetCellElement[0] && $targetCellElement[0].cellIndex;\r\n var rowOptions = $targetRowElement.data(\"options\");\r\n var options = {\r\n event: dxEvent,\r\n targetElement: getPublicElement($targetElement),\r\n target: viewName[this],\r\n rowIndex: rowIndex,\r\n row: view._getRows()[rowIndex],\r\n columnIndex: columnIndex,\r\n column: rowOptions && rowOptions.cells[columnIndex].column\r\n };\r\n options.items = view.getContextMenuItems && view.getContextMenuItems(options);\r\n that.executeAction(\"onContextMenuPreparing\", options);\r\n that._contextMenuPrepared(options);\r\n menuItems = options.items;\r\n if (menuItems) {\r\n return false\r\n }\r\n }\r\n }));\r\n return menuItems\r\n },\r\n _contextMenuPrepared: noop\r\n});\r\nvar ContextMenuView = modules.View.inherit({\r\n _renderCore: function() {\r\n var that = this;\r\n var $element = that.element().addClass(CONTEXT_MENU);\r\n this.setAria(\"role\", \"presentation\", $element);\r\n this._createComponent($element, ContextMenu, {\r\n onPositioning: function(actionArgs) {\r\n var event = actionArgs.event;\r\n var contextMenuInstance = actionArgs.component;\r\n var items = that.getController(\"contextMenu\").getContextMenuItems(event);\r\n if (items) {\r\n contextMenuInstance.option(\"items\", items);\r\n event.stopPropagation()\r\n } else {\r\n actionArgs.cancel = true\r\n }\r\n },\r\n onItemClick: function(params) {\r\n params.itemData.onItemClick && params.itemData.onItemClick(params)\r\n },\r\n cssClass: that.getWidgetContainerClass(),\r\n target: that.component.$element()\r\n })\r\n }\r\n});\r\nexport var contextMenuModule = {\r\n defaultOptions: function() {\r\n return {\r\n onContextMenuPreparing: null\r\n }\r\n },\r\n controllers: {\r\n contextMenu: ContextMenuController\r\n },\r\n views: {\r\n contextMenuView: ContextMenuView\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/exporter/file_saver.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport {\r\n getWindow,\r\n getNavigator\r\n} from \"../core/utils/window\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport errors from \"../ui/widget/ui.errors\";\r\nimport {\r\n isDefined,\r\n isFunction\r\n} from \"../core/utils/type\";\r\nimport {\r\n logger\r\n} from \"../core/utils/console\";\r\nvar window = getWindow();\r\nvar navigator = getNavigator();\r\nvar FILE_EXTESIONS = {\r\n EXCEL: \"xlsx\",\r\n CSS: \"css\",\r\n PNG: \"png\",\r\n JPEG: \"jpeg\",\r\n GIF: \"gif\",\r\n SVG: \"svg\",\r\n PDF: \"pdf\"\r\n};\r\nexport var MIME_TYPES = {\r\n CSS: \"text/css\",\r\n EXCEL: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\r\n PNG: \"image/png\",\r\n JPEG: \"image/jpeg\",\r\n GIF: \"image/gif\",\r\n SVG: \"image/svg+xml\",\r\n PDF: \"application/pdf\"\r\n};\r\nexport var fileSaver = {\r\n _revokeObjectURLTimeout: 3e4,\r\n _getDataUri: function(format, data) {\r\n var mimeType = this._getMimeType(format);\r\n return \"data:\".concat(mimeType, \";base64,\").concat(data)\r\n },\r\n _getMimeType: function(format) {\r\n return MIME_TYPES[format] || \"application/octet-stream\"\r\n },\r\n _linkDownloader: function(fileName, href) {\r\n var exportLinkElement = domAdapter.createElement(\"a\");\r\n exportLinkElement.download = fileName;\r\n exportLinkElement.href = href;\r\n exportLinkElement.target = \"_blank\";\r\n return exportLinkElement\r\n },\r\n _formDownloader: function(proxyUrl, fileName, contentType, data) {\r\n var formAttributes = {\r\n method: \"post\",\r\n action: proxyUrl,\r\n enctype: \"multipart/form-data\"\r\n };\r\n var exportForm = $(\"
\").css({\r\n display: \"none\"\r\n }).attr(formAttributes);\r\n\r\n function setAttributes(element, attributes) {\r\n for (var key in attributes) {\r\n element.setAttribute(key, attributes[key])\r\n }\r\n return element\r\n }\r\n exportForm.append(setAttributes(domAdapter.createElement(\"input\"), {\r\n type: \"hidden\",\r\n name: \"fileName\",\r\n value: fileName\r\n }));\r\n exportForm.append(setAttributes(domAdapter.createElement(\"input\"), {\r\n type: \"hidden\",\r\n name: \"contentType\",\r\n value: contentType\r\n }));\r\n exportForm.append(setAttributes(domAdapter.createElement(\"input\"), {\r\n type: \"hidden\",\r\n name: \"data\",\r\n value: data\r\n }));\r\n exportForm.appendTo(\"body\");\r\n eventsEngine.trigger(exportForm, \"submit\");\r\n if (eventsEngine.trigger(exportForm, \"submit\")) {\r\n exportForm.remove()\r\n }\r\n },\r\n _saveByProxy: function(proxyUrl, fileName, format, data) {\r\n var contentType = this._getMimeType(format);\r\n return this._formDownloader(proxyUrl, fileName, contentType, data)\r\n },\r\n _winJSBlobSave: function(blob, fileName, format) {\r\n var savePicker = new Windows.Storage.Pickers.FileSavePicker;\r\n savePicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.documentsLibrary;\r\n var fileExtension = FILE_EXTESIONS[format];\r\n if (fileExtension) {\r\n var mimeType = this._getMimeType(format);\r\n savePicker.fileTypeChoices.insert(mimeType, [\".\" + fileExtension])\r\n }\r\n savePicker.suggestedFileName = fileName;\r\n savePicker.pickSaveFileAsync().then((function(file) {\r\n if (file) {\r\n file.openAsync(Windows.Storage.FileAccessMode.readWrite).then((function(outputStream) {\r\n var inputStream = blob.msDetachStream();\r\n Windows.Storage.Streams.RandomAccessStream.copyAsync(inputStream, outputStream).then((function() {\r\n outputStream.flushAsync().done((function() {\r\n inputStream.close();\r\n outputStream.close()\r\n }))\r\n }))\r\n }))\r\n }\r\n }))\r\n },\r\n _click: function(link) {\r\n try {\r\n link.dispatchEvent(new MouseEvent(\"click\", {\r\n cancelable: true\r\n }))\r\n } catch (e) {\r\n var event = domAdapter.getDocument().createEvent(\"MouseEvents\");\r\n event.initMouseEvent(\"click\", true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);\r\n link.dispatchEvent(event)\r\n }\r\n },\r\n _saveBlobAs: function(fileName, format, data) {\r\n this._blobSaved = false;\r\n if (isDefined(navigator.msSaveOrOpenBlob)) {\r\n navigator.msSaveOrOpenBlob(data, fileName);\r\n this._blobSaved = true\r\n } else if (isDefined(window.WinJS)) {\r\n this._winJSBlobSave(data, fileName, format);\r\n this._blobSaved = true\r\n } else {\r\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL || window.oURL;\r\n if (isDefined(URL)) {\r\n var objectURL = URL.createObjectURL(data);\r\n var downloadLink = this._linkDownloader(fileName, objectURL);\r\n setTimeout(() => {\r\n URL.revokeObjectURL(objectURL);\r\n this._objectUrlRevoked = true\r\n }, this._revokeObjectURLTimeout);\r\n this._click(downloadLink)\r\n } else {\r\n logger.warn(\"window.URL || window.webkitURL || window.mozURL || window.msURL || window.oURL is not defined\")\r\n }\r\n }\r\n },\r\n saveAs: function(fileName, format, data, proxyURL, forceProxy) {\r\n var fileExtension = FILE_EXTESIONS[format];\r\n if (fileExtension) {\r\n fileName += \".\" + fileExtension\r\n }\r\n if (isDefined(proxyURL)) {\r\n errors.log(\"W0001\", \"Export\", \"proxyURL\", \"19.2\", \"This option is no longer required\")\r\n }\r\n if (forceProxy) {\r\n this._saveByProxy(proxyURL, fileName, format, data)\r\n } else if (isFunction(window.Blob)) {\r\n this._saveBlobAs(fileName, format, data)\r\n } else if (isDefined(proxyURL) && !isDefined(navigator.userAgent.match(/iPad/i))) {\r\n this._saveByProxy(proxyURL, fileName, format, data)\r\n } else {\r\n if (!isDefined(navigator.userAgent.match(/iPad/i))) {\r\n errors.log(\"E1034\")\r\n }\r\n var downloadLink = this._linkDownloader(fileName, this._getDataUri(format, data));\r\n this._click(downloadLink)\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.editing_form_based.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Guid from \"../../core/guid\";\r\nimport {\r\n isDefined,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport Button from \"../button\";\r\nimport devices from \"../../core/devices\";\r\nimport Form from \"../form\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport Scrollable from \"../scroll_view/ui.scrollable\";\r\nimport Popup from \"../popup\";\r\nimport {\r\n EDIT_MODE_FORM,\r\n EDIT_MODE_POPUP,\r\n FOCUSABLE_ELEMENT_SELECTOR,\r\n EDITING_EDITROWKEY_OPTION_NAME,\r\n EDITING_POPUP_OPTION_NAME,\r\n DATA_EDIT_DATA_INSERT_TYPE\r\n} from \"./ui.grid_core.editing_constants\";\r\nvar EDIT_FORM_ITEM_CLASS = \"edit-form-item\";\r\nvar EDIT_POPUP_CLASS = \"edit-popup\";\r\nvar SCROLLABLE_CONTAINER_CLASS = \"dx-scrollable-container\";\r\nvar BUTTON_CLASS = \"dx-button\";\r\nvar FORM_BUTTONS_CONTAINER_CLASS = \"form-buttons-container\";\r\nvar getEditorType = item => {\r\n var _column$formItem;\r\n var column = item.column;\r\n return item.isCustomEditorType ? item.editorType : null === (_column$formItem = column.formItem) || void 0 === _column$formItem ? void 0 : _column$formItem.editorType\r\n};\r\nvar forEachFormItems = (items, callBack) => {\r\n items.forEach(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\nexport var editingFormBasedModule = {\r\n extenders: {\r\n controllers: {\r\n editing: {\r\n init: function() {\r\n this._editForm = null;\r\n this._updateEditFormDeferred = null;\r\n this.callBase.apply(this, arguments)\r\n },\r\n isFormOrPopupEditMode: function() {\r\n return this.isPopupEditMode() || this.isFormEditMode()\r\n },\r\n isPopupEditMode: function() {\r\n var editMode = this.option(\"editing.mode\");\r\n return editMode === EDIT_MODE_POPUP\r\n },\r\n isFormEditMode: function() {\r\n var editMode = this.option(\"editing.mode\");\r\n return editMode === EDIT_MODE_FORM\r\n },\r\n getFirstEditableColumnIndex: function() {\r\n var firstFormItem = this._firstFormItem;\r\n if (this.isFormEditMode() && 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 return this._rowsView._getEditFormEditorVisibleIndex($editFormElements, firstFormItem.column)\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n getEditFormRowIndex: function() {\r\n return this.isFormOrPopupEditMode() ? this._getVisibleEditRowIndex() : this.callBase.apply(this, arguments)\r\n },\r\n _isEditColumnVisible: function() {\r\n var result = this.callBase.apply(this, arguments);\r\n var editingOptions = this.option(\"editing\");\r\n return this.isFormOrPopupEditMode() ? editingOptions.allowUpdating || result : result\r\n },\r\n _handleDataChanged: function(args) {\r\n var editForm = this._editForm;\r\n if (\"refresh\" === args.changeType && this.isPopupEditMode() && null !== editForm && void 0 !== editForm && editForm.option(\"visible\")) {\r\n this._repaintEditPopup()\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n getPopupContent: function() {\r\n var _this$_editPopup;\r\n var popupVisible = null === (_this$_editPopup = this._editPopup) || void 0 === _this$_editPopup ? void 0 : _this$_editPopup.option(\"visible\");\r\n if (this.isPopupEditMode() && popupVisible) {\r\n return this._$popupContent\r\n }\r\n },\r\n _showAddedRow: function(rowIndex) {\r\n if (this.isPopupEditMode()) {\r\n this._showEditPopup(rowIndex)\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _cancelEditDataCore: function() {\r\n this.callBase.apply(this, arguments);\r\n if (this.isPopupEditMode()) {\r\n this._hideEditPopup()\r\n }\r\n },\r\n _updateEditRowCore: function(row, skipCurrentRow, isCustomSetCellValue) {\r\n var editForm = this._editForm;\r\n if (this.isPopupEditMode()) {\r\n if (this.option(\"repaintChangesOnly\")) {\r\n var _row$update;\r\n null === (_row$update = row.update) || void 0 === _row$update ? void 0 : _row$update.call(row, row)\r\n } else if (editForm) {\r\n this._updateEditFormDeferred = (new Deferred).done(() => editForm.repaint());\r\n if (!this._updateLockCount) {\r\n this._updateEditFormDeferred.resolve()\r\n }\r\n }\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _showEditPopup: function(rowIndex, repaintForm) {\r\n var isMobileDevice = \"desktop\" !== devices.current().deviceType;\r\n var popupOptions = 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: this._getSaveButtonConfig()\r\n }, {\r\n toolbar: \"bottom\",\r\n location: \"after\",\r\n widget: \"dxButton\",\r\n options: this._getCancelButtonConfig()\r\n }],\r\n contentTemplate: this._getPopupEditFormTemplate(rowIndex)\r\n }, this.option(EDITING_POPUP_OPTION_NAME));\r\n if (!this._editPopup) {\r\n var $popupContainer = $(\"
\").appendTo(this.component.$element()).addClass(this.addWidgetPrefix(EDIT_POPUP_CLASS));\r\n this._editPopup = this._createComponent($popupContainer, Popup, {});\r\n this._editPopup.on(\"hiding\", this._getEditPopupHiddenHandler());\r\n this._editPopup.on(\"shown\", e => {\r\n eventsEngine.trigger(e.component.$content().find(FOCUSABLE_ELEMENT_SELECTOR).not(\".\" + SCROLLABLE_CONTAINER_CLASS).first(), \"focus\");\r\n if (repaintForm) {\r\n var _this$_editForm;\r\n null === (_this$_editForm = this._editForm) || void 0 === _this$_editForm ? void 0 : _this$_editForm.repaint()\r\n }\r\n })\r\n }\r\n this._editPopup.option(popupOptions);\r\n this._editPopup.show();\r\n this.callBase.apply(this, arguments)\r\n },\r\n _getPopupEditFormTemplate: function(rowIndex) {\r\n var row = this.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 container => {\r\n var formTemplate = this.getEditFormTemplate();\r\n var scrollable = this._createComponent($(\"
\").appendTo(container), Scrollable);\r\n this._$popupContent = scrollable.$content();\r\n formTemplate(this._$popupContent, templateOptions, true)\r\n }\r\n },\r\n _repaintEditPopup: function() {\r\n var _this$_editPopup2;\r\n var rowIndex = this._getVisibleEditRowIndex();\r\n if (null !== (_this$_editPopup2 = this._editPopup) && void 0 !== _this$_editPopup2 && _this$_editPopup2.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 _hideEditPopup: function() {\r\n var _this$_editPopup3;\r\n null === (_this$_editPopup3 = this._editPopup) || void 0 === _this$_editPopup3 ? void 0 : _this$_editPopup3.option(\"visible\", false)\r\n },\r\n optionChanged: function(args) {\r\n if (\"editing\" === args.name && this.isFormOrPopupEditMode()) {\r\n var fullName = args.fullName;\r\n var editPopup = this._editPopup;\r\n if (0 === (null === fullName || void 0 === fullName ? void 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 args.handled = true\r\n } else if (null !== editPopup && void 0 !== editPopup && editPopup.option(\"visible\") && 0 === fullName.indexOf(\"editing.form\")) {\r\n this._repaintEditPopup();\r\n args.handled = true\r\n }\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n renderFormEditTemplate: function(detailCellOptions, item, form, container, isReadOnly) {\r\n var that = this;\r\n var $container = $(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 = extend({}, detailCellOptions, {\r\n data: rowData,\r\n cellElement: null,\r\n isOnForm: true,\r\n item: item,\r\n column: 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 = this._getFormEditItemTemplate.bind(this)(cellOptions, column);\r\n this._rowsView.renderTemplate($container, template, cellOptions, !!$container.closest(getWindow().document).length).done(() => {\r\n this._rowsView._updateCell($container, cellOptions)\r\n });\r\n return cellOptions\r\n },\r\n getFormEditorTemplate: function(cellOptions, item) {\r\n var column = this.component.columnOption(item.dataField);\r\n return (options, container) => {\r\n var _cellOptions$row$watc, _cellOptions$row;\r\n var $container = $(container);\r\n null === (_cellOptions$row$watc = (_cellOptions$row = cellOptions.row).watch) || void 0 === _cellOptions$row$watc ? void 0 : _cellOptions$row$watc.call(_cellOptions$row, (function() {\r\n return column.selector(cellOptions.row.data)\r\n }), () => {\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 = this.renderFormEditTemplate.bind(this)(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 = this.renderFormEditTemplate.bind(this)(cellOptions, item, options.component, $container)\r\n }\r\n },\r\n getEditFormOptions: function(detailOptions) {\r\n var _this$_getValidationG;\r\n var editFormOptions = null === (_this$_getValidationG = this._getValidationGroupsInForm) || void 0 === _this$_getValidationG ? void 0 : _this$_getValidationG.call(this, 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 if (!items) {\r\n var columns = this.getController(\"columns\").getColumns();\r\n items = [];\r\n 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, 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 extend({}, editFormOptions, {\r\n items: items,\r\n formID: \"dx-\" + new Guid,\r\n customizeItem: item => {\r\n var column;\r\n var itemId = item.name || item.dataField;\r\n if (item.column || itemId) {\r\n column = item.column || this._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 || this.getFormEditorTemplate(detailOptions, item);\r\n item.column = column;\r\n item.isCustomEditorType = isCustomEditorType[itemId];\r\n if (column.formItem) {\r\n 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 = isDefined(item.visible) ? item.visible : true;\r\n if (!this._firstFormItem && itemVisible) {\r\n this._firstFormItem = item\r\n }\r\n }\r\n null === userCustomizeItem || void 0 === userCustomizeItem ? void 0 : userCustomizeItem.call(this, item);\r\n item.cssClass = isString(item.cssClass) ? item.cssClass + \" \" + editFormItemClass : editFormItemClass\r\n }\r\n })\r\n },\r\n getEditFormTemplate: function() {\r\n return ($container, detailOptions, renderFormOnly) => {\r\n var editFormOptions = this.option(\"editing.form\");\r\n var baseEditFormOptions = this.getEditFormOptions(detailOptions);\r\n this._firstFormItem = void 0;\r\n this._editForm = this._createComponent($(\"
\").appendTo($container), Form, extend({}, editFormOptions, baseEditFormOptions));\r\n if (!renderFormOnly) {\r\n var $buttonsContainer = $(\"
\").addClass(this.addWidgetPrefix(FORM_BUTTONS_CONTAINER_CLASS)).appendTo($container);\r\n this._createComponent($(\"
\").appendTo($buttonsContainer), Button, this._getSaveButtonConfig());\r\n this._createComponent($(\"
\").appendTo($buttonsContainer), Button, this._getCancelButtonConfig())\r\n }\r\n this._editForm.on(\"contentReady\", () => {\r\n var _this$_editPopup4;\r\n null === (_this$_editPopup4 = this._editPopup) || void 0 === _this$_editPopup4 ? void 0 : _this$_editPopup4.repaint()\r\n })\r\n }\r\n },\r\n getEditForm: function() {\r\n return this._editForm\r\n },\r\n _endUpdateCore: function() {\r\n var _this$_updateEditForm;\r\n null === (_this$_updateEditForm = this._updateEditFormDeferred) || void 0 === _this$_updateEditForm ? void 0 : _this$_updateEditForm.resolve()\r\n },\r\n _beforeEndSaving: function() {\r\n this.callBase.apply(this, arguments);\r\n if (this.isPopupEditMode()) {\r\n var _this$_editPopup5;\r\n null === (_this$_editPopup5 = this._editPopup) || void 0 === _this$_editPopup5 ? void 0 : _this$_editPopup5.hide()\r\n }\r\n },\r\n _processDataItemCore: function(item, _ref) {\r\n var {\r\n type: type\r\n } = _ref;\r\n if (this.isPopupEditMode() && type === DATA_EDIT_DATA_INSERT_TYPE) {\r\n item.visible = false\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _editRowFromOptionChangedCore: function(rowIndices, rowIndex, oldRowIndex) {\r\n if (this.isPopupEditMode()) {\r\n this._showEditPopup(rowIndex)\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n }\r\n },\r\n data: {\r\n _updateEditItem: function(item) {\r\n if (this._editingController.isFormEditMode()) {\r\n item.rowType = \"detail\"\r\n }\r\n }\r\n }\r\n },\r\n views: {\r\n rowsView: {\r\n _renderCellContent: function($cell, options) {\r\n if (\"data\" === options.rowType && this._editingController.isPopupEditMode() && false === options.row.visible) {\r\n return\r\n }\r\n this.callBase.apply(this, arguments)\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 _getVisibleColumnIndex: function($cells, rowIndex, columnIdentifier) {\r\n var editFormRowIndex = this._editingController.getEditFormRowIndex();\r\n if (editFormRowIndex === rowIndex && 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 each($cells, (function(index, cellElement) {\r\n var item = $(cellElement).find(\".dx-field-item-content\").data(\"dx-form-item\");\r\n if (null !== item && void 0 !== 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 _isFormItem: function(parameters) {\r\n var isDetailRow = \"detail\" === parameters.rowType || \"detailAdaptive\" === parameters.rowType;\r\n var isPopupEditing = \"data\" === parameters.rowType && this._editingController.isPopupEditMode();\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 }\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.data_source_adapter.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport gridCore from \"../data_grid/ui.data_grid.core\";\r\nimport {\r\n executeAsync,\r\n getKeyHash\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isPlainObject,\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport ArrayStore from \"../../data/array_store\";\r\nimport {\r\n applyBatch\r\n} from \"../../data/array_utils\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nexport default gridCore.Controller.inherit(function() {\r\n function cloneItems(items, groupCount) {\r\n if (items) {\r\n items = items.slice(0);\r\n if (groupCount) {\r\n for (var i = 0; i < items.length; i++) {\r\n items[i] = extend({\r\n key: items[i].key\r\n }, items[i]);\r\n items[i].items = cloneItems(items[i].items, groupCount - 1)\r\n }\r\n }\r\n }\r\n return items\r\n }\r\n\r\n function calculateOperationTypes(loadOptions, lastLoadOptions, isFullReload) {\r\n var operationTypes = {\r\n reload: true,\r\n fullReload: true\r\n };\r\n if (lastLoadOptions) {\r\n operationTypes = {\r\n sorting: !gridCore.equalSortParameters(loadOptions.sort, lastLoadOptions.sort),\r\n grouping: !gridCore.equalSortParameters(loadOptions.group, lastLoadOptions.group, true),\r\n groupExpanding: !gridCore.equalSortParameters(loadOptions.group, lastLoadOptions.group) || lastLoadOptions.groupExpand,\r\n filtering: !gridCore.equalFilterParameters(loadOptions.filter, lastLoadOptions.filter),\r\n pageIndex: loadOptions.pageIndex !== lastLoadOptions.pageIndex,\r\n skip: loadOptions.skip !== lastLoadOptions.skip,\r\n take: loadOptions.take !== lastLoadOptions.take,\r\n pageSize: loadOptions.pageSize !== lastLoadOptions.pageSize,\r\n fullReload: isFullReload\r\n };\r\n operationTypes.reload = isFullReload || operationTypes.sorting || operationTypes.grouping || operationTypes.filtering;\r\n operationTypes.paging = operationTypes.pageIndex || operationTypes.pageSize || operationTypes.take\r\n }\r\n return operationTypes\r\n }\r\n\r\n function getPageKey(pageIndex, loadPageCount) {\r\n return isDefined(loadPageCount) ? \"\".concat(pageIndex, \":\").concat(loadPageCount) : pageIndex\r\n }\r\n\r\n function getPageDataFromCache(options) {\r\n var key = getPageKey(options.pageIndex, options.loadPageCount);\r\n return options.cachedPagesData.pages[key]\r\n }\r\n return {\r\n init: function(dataSource, remoteOperations) {\r\n var that = this;\r\n that._dataSource = dataSource;\r\n that._remoteOperations = remoteOperations || {};\r\n that._isLastPage = !dataSource.isLastPage();\r\n that._hasLastPage = false;\r\n that._currentTotalCount = 0;\r\n that._cachedPagesData = {\r\n pages: {}\r\n };\r\n that._lastOperationTypes = {};\r\n that._eventsStrategy = dataSource._eventsStrategy;\r\n that._skipCorrection = 0;\r\n that._isLoadingAll = false;\r\n that.changed = Callbacks();\r\n that.loadingChanged = Callbacks();\r\n that.loadError = Callbacks();\r\n that.customizeStoreLoadOptions = Callbacks();\r\n that.changing = Callbacks();\r\n that._dataChangedHandler = that._handleDataChanged.bind(that);\r\n that._dataLoadingHandler = that._handleDataLoading.bind(that);\r\n that._dataLoadedHandler = that._handleDataLoaded.bind(that);\r\n that._loadingChangedHandler = that._handleLoadingChanged.bind(that);\r\n that._loadErrorHandler = that._handleLoadError.bind(that);\r\n that._pushHandler = that._handlePush.bind(that);\r\n that._changingHandler = that._handleChanging.bind(that);\r\n dataSource.on(\"changed\", that._dataChangedHandler);\r\n dataSource.on(\"customizeStoreLoadOptions\", that._dataLoadingHandler);\r\n dataSource.on(\"customizeLoadResult\", that._dataLoadedHandler);\r\n dataSource.on(\"loadingChanged\", that._loadingChangedHandler);\r\n dataSource.on(\"loadError\", that._loadErrorHandler);\r\n dataSource.on(\"changing\", that._changingHandler);\r\n dataSource.store().on(\"push\", that._pushHandler);\r\n each(dataSource, (function(memberName, member) {\r\n if (!that[memberName] && isFunction(member)) {\r\n that[memberName] = function() {\r\n return this._dataSource[memberName].apply(this._dataSource, arguments)\r\n }\r\n }\r\n }))\r\n },\r\n remoteOperations: function() {\r\n return this._remoteOperations\r\n },\r\n dispose: function(isSharedDataSource) {\r\n var dataSource = this._dataSource;\r\n var store = dataSource.store();\r\n dataSource.off(\"changed\", this._dataChangedHandler);\r\n dataSource.off(\"customizeStoreLoadOptions\", this._dataLoadingHandler);\r\n dataSource.off(\"customizeLoadResult\", this._dataLoadedHandler);\r\n dataSource.off(\"loadingChanged\", this._loadingChangedHandler);\r\n dataSource.off(\"loadError\", this._loadErrorHandler);\r\n dataSource.off(\"changing\", this._changingHandler);\r\n store && store.off(\"push\", this._pushHandler);\r\n if (!isSharedDataSource) {\r\n dataSource.dispose()\r\n }\r\n },\r\n refresh: function(options, operationTypes) {\r\n var dataSource = this._dataSource;\r\n if (operationTypes.reload) {\r\n this.resetCurrentTotalCount();\r\n this._isLastPage = !dataSource.paginate();\r\n this._hasLastPage = this._isLastPage\r\n }\r\n },\r\n resetCurrentTotalCount: function() {\r\n this._currentTotalCount = 0;\r\n this._skipCorrection = 0\r\n },\r\n resetCache: function() {\r\n this._cachedStoreData = void 0;\r\n this._cachedPagingData = void 0\r\n },\r\n resetPagesCache: function() {\r\n this._cachedPagesData = {\r\n pages: {}\r\n }\r\n },\r\n _needClearStoreDataCache: function() {\r\n var remoteOperations = this.remoteOperations();\r\n var operationTypes = calculateOperationTypes(this._lastLoadOptions || {}, {});\r\n var isLocalOperations = Object.keys(remoteOperations).every(operationName => !operationTypes[operationName] || !remoteOperations[operationName]);\r\n return !isLocalOperations\r\n },\r\n push: function(changes, fromStore) {\r\n var store = this.store();\r\n if (this._needClearStoreDataCache()) {\r\n this._cachedStoreData = void 0\r\n }\r\n this._cachedPagingData = void 0;\r\n this.resetPagesCache(true);\r\n if (this._cachedStoreData) {\r\n applyBatch({\r\n keyInfo: store,\r\n data: this._cachedStoreData,\r\n changes: changes\r\n })\r\n }\r\n if (!fromStore) {\r\n this._applyBatch(changes)\r\n }\r\n },\r\n getDataIndexGetter: function() {\r\n if (!this._dataIndexGetter) {\r\n var indexByKey;\r\n var storeData;\r\n var store = this.store();\r\n this._dataIndexGetter = data => {\r\n var isCacheUpdated = storeData && storeData !== this._cachedStoreData;\r\n if (!indexByKey || isCacheUpdated) {\r\n storeData = this._cachedStoreData || [];\r\n indexByKey = {};\r\n for (var i = 0; i < storeData.length; i++) {\r\n indexByKey[getKeyHash(store.keyOf(storeData[i]))] = i\r\n }\r\n }\r\n return indexByKey[getKeyHash(store.keyOf(data))]\r\n }\r\n }\r\n return this._dataIndexGetter\r\n },\r\n _getKeyInfo: function() {\r\n return this.store()\r\n },\r\n _applyBatch: function(changes) {\r\n var keyInfo = this._getKeyInfo();\r\n var dataSource = this._dataSource;\r\n var groupCount = gridCore.normalizeSortingInfo(this.group()).length;\r\n var totalCount = this.totalCount();\r\n var isVirtualMode = \"virtual\" === this.option(\"scrolling.mode\");\r\n changes = changes.filter((function(change) {\r\n return !dataSource.paginate() || \"insert\" !== change.type || void 0 !== change.index\r\n }));\r\n var getItemCount = () => groupCount ? this.itemsCount() : this._items.length;\r\n var oldItemCount = getItemCount();\r\n applyBatch({\r\n keyInfo: keyInfo,\r\n data: this._items,\r\n changes: changes,\r\n groupCount: groupCount,\r\n useInsertIndex: true\r\n });\r\n applyBatch({\r\n keyInfo: keyInfo,\r\n data: dataSource.items(),\r\n changes: changes,\r\n groupCount: groupCount,\r\n useInsertIndex: true\r\n });\r\n if (this._currentTotalCount > 0 || isVirtualMode && totalCount === oldItemCount) {\r\n this._skipCorrection += getItemCount() - oldItemCount\r\n }\r\n changes.splice(0, changes.length)\r\n },\r\n _handlePush: function(changes) {\r\n this.push(changes, true)\r\n },\r\n _handleChanging: function(e) {\r\n this.changing.fire(e);\r\n this._applyBatch(e.changes)\r\n },\r\n _needCleanCacheByOperation: function(operationType, remoteOperations) {\r\n var operationTypesByOrder = [\"filtering\", \"sorting\", \"paging\"];\r\n var operationTypeIndex = operationTypesByOrder.indexOf(operationType);\r\n var currentOperationTypes = operationTypeIndex >= 0 ? operationTypesByOrder.slice(operationTypeIndex) : [operationType];\r\n return currentOperationTypes.some(operationType => remoteOperations[operationType])\r\n },\r\n _customizeRemoteOperations: function(options, operationTypes) {\r\n var that = this;\r\n var cachedStoreData = that._cachedStoreData;\r\n var cachedPagingData = that._cachedPagingData;\r\n var cachedPagesData = that._cachedPagesData;\r\n if (options.storeLoadOptions.filter && !options.remoteOperations.filtering || options.storeLoadOptions.sort && !options.remoteOperations.sorting) {\r\n options.remoteOperations = {\r\n filtering: options.remoteOperations.filtering\r\n }\r\n }\r\n if (operationTypes.fullReload) {\r\n cachedStoreData = void 0;\r\n cachedPagingData = void 0;\r\n cachedPagesData = {\r\n pages: {}\r\n }\r\n } else {\r\n if (operationTypes.reload) {\r\n cachedPagingData = void 0;\r\n cachedPagesData = {\r\n pages: {}\r\n }\r\n } else if (operationTypes.pageSize || operationTypes.groupExpanding) {\r\n cachedPagesData = {\r\n pages: {}\r\n }\r\n }\r\n each(operationTypes, (function(operationType, value) {\r\n if (value && that._needCleanCacheByOperation(operationType, options.remoteOperations)) {\r\n cachedStoreData = void 0;\r\n cachedPagingData = void 0\r\n }\r\n }))\r\n }\r\n if (cachedPagingData) {\r\n options.remoteOperations.paging = false\r\n }\r\n options.cachedStoreData = cachedStoreData;\r\n options.cachedPagingData = cachedPagingData;\r\n options.cachedPagesData = cachedPagesData;\r\n if (!options.isCustomLoading) {\r\n that._cachedStoreData = cachedStoreData;\r\n that._cachedPagingData = cachedPagingData;\r\n that._cachedPagesData = cachedPagesData\r\n }\r\n },\r\n _handleDataLoading: function(options) {\r\n var dataSource = this._dataSource;\r\n var lastLoadOptions = this._lastLoadOptions;\r\n this.customizeStoreLoadOptions.fire(options);\r\n options.delay = this.option(\"loadingTimeout\");\r\n options.originalStoreLoadOptions = options.storeLoadOptions;\r\n options.remoteOperations = extend({}, this.remoteOperations());\r\n var isFullReload = !this.isLoaded() && !this._isRefreshing;\r\n if (this.option(\"integrationOptions.renderedOnServer\") && !this.isLoaded()) {\r\n options.delay = void 0\r\n }\r\n var loadOptions = extend({\r\n pageIndex: this.pageIndex(),\r\n pageSize: this.pageSize()\r\n }, options.storeLoadOptions);\r\n var operationTypes = calculateOperationTypes(loadOptions, lastLoadOptions, isFullReload);\r\n this._customizeRemoteOperations(options, operationTypes);\r\n if (!options.isCustomLoading) {\r\n var isRefreshing = this._isRefreshing;\r\n options.pageIndex = dataSource.pageIndex();\r\n options.lastLoadOptions = loadOptions;\r\n options.operationTypes = operationTypes;\r\n this._loadingOperationTypes = operationTypes;\r\n this._isRefreshing = true;\r\n when(isRefreshing || this._isRefreshed || this.refresh(options, operationTypes)).done(() => {\r\n if (this._lastOperationId === options.operationId) {\r\n this._isRefreshed = true;\r\n this.load().always(() => {\r\n this._isRefreshed = false\r\n })\r\n }\r\n }).fail(() => {\r\n dataSource.cancel(options.operationId)\r\n }).always(() => {\r\n this._isRefreshing = false\r\n });\r\n dataSource.cancel(this._lastOperationId);\r\n this._lastOperationId = options.operationId;\r\n if (this._isRefreshing) {\r\n dataSource.cancel(this._lastOperationId)\r\n }\r\n }\r\n this._handleDataLoadingCore(options)\r\n },\r\n _handleDataLoadingCore: function(options) {\r\n var remoteOperations = options.remoteOperations;\r\n options.loadOptions = {};\r\n var cachedExtra = options.cachedPagesData.extra;\r\n var localLoadOptionNames = {\r\n filter: !remoteOperations.filtering,\r\n sort: !remoteOperations.sorting,\r\n group: !remoteOperations.grouping,\r\n summary: !remoteOperations.summary,\r\n skip: !remoteOperations.paging,\r\n take: !remoteOperations.paging,\r\n requireTotalCount: cachedExtra && \"totalCount\" in cachedExtra || !remoteOperations.paging\r\n };\r\n each(options.storeLoadOptions, (function(optionName, optionValue) {\r\n if (localLoadOptionNames[optionName]) {\r\n options.loadOptions[optionName] = optionValue;\r\n delete options.storeLoadOptions[optionName]\r\n }\r\n }));\r\n if (cachedExtra) {\r\n options.extra = cachedExtra\r\n }\r\n options.data = getPageDataFromCache(options) || options.cachedStoreData\r\n },\r\n _handleDataLoaded: function(options) {\r\n var loadOptions = options.loadOptions;\r\n var localPaging = options.remoteOperations && !options.remoteOperations.paging;\r\n var cachedPagesData = options.cachedPagesData;\r\n var storeLoadOptions = options.storeLoadOptions;\r\n var needCache = false !== this.option(\"cacheEnabled\") && storeLoadOptions;\r\n var needPageCache = needCache && !options.isCustomLoading && cachedPagesData && (!localPaging || storeLoadOptions.group);\r\n var needPagingCache = needCache && localPaging;\r\n var needStoreCache = needPagingCache && !options.isCustomLoading;\r\n if (!loadOptions) {\r\n this._dataSource.cancel(options.operationId);\r\n return\r\n }\r\n if (options.lastLoadOptions) {\r\n this._lastLoadOptions = options.lastLoadOptions;\r\n Object.keys(options.operationTypes).forEach(operationType => {\r\n this._lastOperationTypes[operationType] = this._lastOperationTypes[operationType] || options.operationTypes[operationType]\r\n })\r\n }\r\n if (localPaging) {\r\n options.skip = loadOptions.skip;\r\n options.take = loadOptions.take;\r\n delete loadOptions.skip;\r\n delete loadOptions.take\r\n }\r\n if (loadOptions.group) {\r\n loadOptions.group = options.group || loadOptions.group\r\n }\r\n var groupCount = gridCore.normalizeSortingInfo(storeLoadOptions.group || loadOptions.group).length;\r\n if (!needPageCache || !getPageDataFromCache(options)) {\r\n if (needPagingCache && options.cachedPagingData) {\r\n options.data = cloneItems(options.cachedPagingData, groupCount)\r\n } else {\r\n if (needStoreCache) {\r\n if (!this._cachedStoreData) {\r\n this._cachedStoreData = cloneItems(options.data, gridCore.normalizeSortingInfo(storeLoadOptions.group).length)\r\n } else if (options.mergeStoreLoadData) {\r\n options.data = this._cachedStoreData = this._cachedStoreData.concat(options.data)\r\n }\r\n }\r\n new ArrayStore(options.data).load(loadOptions).done(data => {\r\n options.data = data;\r\n if (needStoreCache) {\r\n this._cachedPagingData = cloneItems(options.data, groupCount)\r\n }\r\n }).fail(error => {\r\n options.data = (new Deferred).reject(error)\r\n })\r\n }\r\n if (loadOptions.requireTotalCount && localPaging) {\r\n options.extra = isPlainObject(options.extra) ? options.extra : {};\r\n options.extra.totalCount = options.data.length\r\n }\r\n if (options.extra && options.extra.totalCount >= 0 && (false === storeLoadOptions.requireTotalCount || false === loadOptions.requireTotalCount)) {\r\n options.extra.totalCount = -1\r\n }\r\n this._handleDataLoadedCore(options);\r\n if (needPageCache) {\r\n cachedPagesData.extra = cachedPagesData.extra || extend({}, options.extra);\r\n when(options.data).done(data => {\r\n ! function(options, data) {\r\n var pageIndex = options.pageIndex;\r\n if (void 0 !== pageIndex) {\r\n var key = getPageKey(pageIndex, options.loadPageCount);\r\n options.cachedPagesData.pages[key] = data\r\n }\r\n }(options, cloneItems(data, groupCount))\r\n })\r\n }\r\n }\r\n options.storeLoadOptions = options.originalStoreLoadOptions\r\n },\r\n _handleDataLoadedCore: function(options) {\r\n if (options.remoteOperations && !options.remoteOperations.paging && Array.isArray(options.data)) {\r\n if (void 0 !== options.skip) {\r\n options.data = options.data.slice(options.skip)\r\n }\r\n if (void 0 !== options.take) {\r\n options.data = options.data.slice(0, options.take)\r\n }\r\n }\r\n },\r\n _handleLoadingChanged: function(isLoading) {\r\n this.loadingChanged.fire(isLoading)\r\n },\r\n _handleLoadError: function(error) {\r\n this.loadError.fire(error);\r\n this.changed.fire({\r\n changeType: \"loadError\",\r\n error: error\r\n })\r\n },\r\n _loadPageSize: function() {\r\n return this.pageSize()\r\n },\r\n _handleDataChanged: function(args) {\r\n var currentTotalCount;\r\n var dataSource = this._dataSource;\r\n var isLoading = false;\r\n var itemsCount = this.itemsCount();\r\n this._isLastPage = !itemsCount || !this._loadPageSize() || itemsCount < this._loadPageSize();\r\n if (this._isLastPage) {\r\n this._hasLastPage = true\r\n }\r\n if (dataSource.totalCount() >= 0) {\r\n if (dataSource.pageIndex() >= this.pageCount()) {\r\n dataSource.pageIndex(this.pageCount() - 1);\r\n this.pageIndex(dataSource.pageIndex());\r\n this.resetPagesCache();\r\n dataSource.load();\r\n isLoading = true\r\n }\r\n } else if (!args || isDefined(args.changeType)) {\r\n currentTotalCount = dataSource.pageIndex() * this.pageSize() + itemsCount;\r\n this._currentTotalCount = Math.max(this._currentTotalCount, currentTotalCount);\r\n if (0 === itemsCount && dataSource.pageIndex() >= this.pageCount()) {\r\n dataSource.pageIndex(this.pageCount() - 1);\r\n if (\"infinite\" !== this.option(\"scrolling.mode\")) {\r\n dataSource.load();\r\n isLoading = true\r\n }\r\n }\r\n }\r\n if (!isLoading) {\r\n this._operationTypes = this._lastOperationTypes;\r\n this._lastOperationTypes = {};\r\n this.component._optionCache = {};\r\n this.changed.fire(args);\r\n this.component._optionCache = void 0\r\n }\r\n },\r\n _scheduleCustomLoadCallbacks: function(deferred) {\r\n var that = this;\r\n that._isCustomLoading = true;\r\n deferred.always((function() {\r\n that._isCustomLoading = false\r\n }))\r\n },\r\n loadingOperationTypes: function() {\r\n return this._loadingOperationTypes\r\n },\r\n operationTypes: function() {\r\n return this._operationTypes\r\n },\r\n lastLoadOptions: function() {\r\n return this._lastLoadOptions || {}\r\n },\r\n isLastPage: function() {\r\n return this._isLastPage\r\n },\r\n totalCount: function() {\r\n return parseInt((this._currentTotalCount || this._dataSource.totalCount()) + this._skipCorrection)\r\n },\r\n itemsCount: function() {\r\n return this._dataSource.items().length\r\n },\r\n totalItemsCount: function() {\r\n return this.totalCount()\r\n },\r\n pageSize: function() {\r\n var dataSource = this._dataSource;\r\n if (!arguments.length && !dataSource.paginate()) {\r\n return 0\r\n }\r\n return dataSource.pageSize.apply(dataSource, arguments)\r\n },\r\n pageCount: function() {\r\n var count = this.totalItemsCount() - this._skipCorrection;\r\n var pageSize = this.pageSize();\r\n if (pageSize && count > 0) {\r\n return Math.max(1, Math.ceil(count / pageSize))\r\n }\r\n return 1\r\n },\r\n hasKnownLastPage: function() {\r\n return this._hasLastPage || this._dataSource.totalCount() >= 0\r\n },\r\n loadFromStore: function(loadOptions, store) {\r\n var dataSource = this._dataSource;\r\n var d = new Deferred;\r\n if (!dataSource) {\r\n return\r\n }\r\n store = store || dataSource.store();\r\n store.load(loadOptions).done((function(data, extra) {\r\n if (data && !Array.isArray(data) && Array.isArray(data.data)) {\r\n extra = data;\r\n data = data.data\r\n }\r\n d.resolve(data, extra)\r\n })).fail(d.reject);\r\n return d\r\n },\r\n isCustomLoading: function() {\r\n return !!this._isCustomLoading\r\n },\r\n load: function(options) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var d = new Deferred;\r\n if (options) {\r\n var store = dataSource.store();\r\n var dataSourceLoadOptions = dataSource.loadOptions();\r\n var loadResult = {\r\n storeLoadOptions: options,\r\n isCustomLoading: true\r\n };\r\n each(store._customLoadOptions() || [], (function(_, optionName) {\r\n if (!(optionName in loadResult.storeLoadOptions)) {\r\n loadResult.storeLoadOptions[optionName] = dataSourceLoadOptions[optionName]\r\n }\r\n }));\r\n this._isLoadingAll = options.isLoadingAll;\r\n that._scheduleCustomLoadCallbacks(d);\r\n dataSource._scheduleLoadCallbacks(d);\r\n that._handleDataLoading(loadResult);\r\n ! function(action, timeout) {\r\n if (isDefined(timeout)) {\r\n executeAsync(action, timeout)\r\n } else {\r\n action()\r\n }\r\n }((function() {\r\n if (!dataSource.store()) {\r\n return d.reject(\"canceled\")\r\n }\r\n when(loadResult.data || that.loadFromStore(loadResult.storeLoadOptions)).done((function(data, extra) {\r\n loadResult.data = data;\r\n loadResult.extra = extra || {};\r\n that._handleDataLoaded(loadResult);\r\n if (options.requireTotalCount && void 0 === loadResult.extra.totalCount) {\r\n loadResult.extra.totalCount = store.totalCount(loadResult.storeLoadOptions)\r\n }\r\n when(loadResult.data, loadResult.extra.totalCount).done((function(data, totalCount) {\r\n loadResult.extra.totalCount = totalCount;\r\n d.resolve(data, loadResult.extra)\r\n })).fail(d.reject)\r\n })).fail(d.reject)\r\n }), that.option(\"loadingTimeout\"));\r\n return d.fail((function() {\r\n that._eventsStrategy.fireEvent(\"loadError\", arguments)\r\n })).always(() => {\r\n this._isLoadingAll = false\r\n }).promise()\r\n } else {\r\n return dataSource.load()\r\n }\r\n },\r\n reload: function(full) {\r\n return full ? this._dataSource.reload() : this._dataSource.load()\r\n },\r\n getCachedStoreData: function() {\r\n return this._cachedStoreData\r\n }\r\n }\r\n}());\r\n","/**\r\n * DevExtreme (esm/ui/context_menu/ui.context_menu.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Guid from \"../../core/guid\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isObject,\r\n isRenderer,\r\n isWindow,\r\n isFunction,\r\n isPlainObject,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n contains\r\n} from \"../../core/utils/dom\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport fx from \"../../animation/fx\";\r\nimport animationPosition from \"../../animation/position\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport Overlay from \"../overlay/ui.overlay\";\r\nimport MenuBase from \"./ui.menu_base\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n name as contextMenuEventName\r\n} from \"../../events/contextmenu\";\r\nimport holdEvent from \"../../events/hold\";\r\nvar DX_MENU_CLASS = \"dx-menu\";\r\nvar DX_MENU_ITEM_CLASS = DX_MENU_CLASS + \"-item\";\r\nvar DX_MENU_ITEM_EXPANDED_CLASS = DX_MENU_ITEM_CLASS + \"-expanded\";\r\nvar DX_MENU_PHONE_CLASS = \"dx-menu-phone-overlay\";\r\nvar DX_MENU_ITEMS_CONTAINER_CLASS = DX_MENU_CLASS + \"-items-container\";\r\nvar DX_MENU_ITEM_WRAPPER_CLASS = DX_MENU_ITEM_CLASS + \"-wrapper\";\r\nvar DX_SUBMENU_CLASS = \"dx-submenu\";\r\nvar DX_CONTEXT_MENU_CLASS = \"dx-context-menu\";\r\nvar DX_HAS_CONTEXT_MENU_CLASS = \"dx-has-context-menu\";\r\nvar DX_STATE_DISABLED_CLASS = \"dx-state-disabled\";\r\nvar DX_STATE_FOCUSED_CLASS = \"dx-state-focused\";\r\nvar DX_STATE_HOVER_CLASS = \"dx-state-hover\";\r\nvar FOCUS_UP = \"up\";\r\nvar FOCUS_DOWN = \"down\";\r\nvar FOCUS_LEFT = \"left\";\r\nvar FOCUS_RIGHT = \"right\";\r\nvar FOCUS_FIRST = \"first\";\r\nvar FOCUS_LAST = \"last\";\r\nvar ACTIONS = [\"onShowing\", \"onShown\", \"onSubmenuCreated\", \"onHiding\", \"onHidden\", \"onPositioning\", \"onLeftFirstItem\", \"onLeftLastItem\", \"onCloseRootSubmenu\", \"onExpandLastSubmenu\"];\r\nvar LOCAL_SUBMENU_DIRECTIONS = [FOCUS_UP, FOCUS_DOWN, FOCUS_FIRST, FOCUS_LAST];\r\nvar DEFAULT_SHOW_EVENT = \"dxcontextmenu\";\r\nclass ContextMenu extends MenuBase {\r\n getShowEvent(showEventOption) {\r\n var result = null;\r\n if (isObject(showEventOption)) {\r\n if (null !== showEventOption.name) {\r\n result = showEventOption.name || DEFAULT_SHOW_EVENT\r\n }\r\n } else {\r\n result = showEventOption\r\n }\r\n return result\r\n }\r\n getShowDelay(showEventOption) {\r\n return isObject(showEventOption) && showEventOption.delay\r\n }\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n showEvent: DEFAULT_SHOW_EVENT,\r\n closeOnOutsideClick: true,\r\n position: {\r\n at: \"top left\",\r\n my: \"top left\"\r\n },\r\n onShowing: null,\r\n onShown: null,\r\n onSubmenuCreated: null,\r\n onHiding: null,\r\n onHidden: null,\r\n onPositioning: null,\r\n submenuDirection: \"auto\",\r\n visible: false,\r\n target: void 0,\r\n onLeftFirstItem: null,\r\n onLeftLastItem: null,\r\n onCloseRootSubmenu: null,\r\n onExpandLastSubmenu: null\r\n })\r\n }\r\n _defaultOptionsRules() {\r\n return super._defaultOptionsRules().concat([{\r\n device: () => !hasWindow(),\r\n options: {\r\n animation: null\r\n }\r\n }])\r\n }\r\n _initActions() {\r\n this._actions = {};\r\n each(ACTIONS, (index, action) => {\r\n this._actions[action] = this._createActionByOption(action) || noop\r\n })\r\n }\r\n _setOptionsByReference() {\r\n super._setOptionsByReference();\r\n extend(this._optionsByReference, {\r\n animation: true,\r\n selectedItem: true\r\n })\r\n }\r\n _focusInHandler() {}\r\n _itemContainer() {\r\n return this._overlay ? this._overlay.$content() : $()\r\n }\r\n _eventBindingTarget() {\r\n return this._itemContainer()\r\n }\r\n itemsContainer() {\r\n return this._overlay ? this._overlay.$content() : void 0\r\n }\r\n _supportedKeys() {\r\n return extend(super._supportedKeys(), {\r\n space: () => {\r\n var $item = $(this.option(\"focusedElement\"));\r\n this.hide();\r\n if (!$item.length || !this._isSelectionEnabled()) {\r\n return\r\n }\r\n this.selectItem($item[0])\r\n },\r\n escape: this.hide\r\n })\r\n }\r\n _getActiveItem() {\r\n var $availableItems = this._getAvailableItems();\r\n var $focusedItem = $availableItems.filter(\".\".concat(DX_STATE_FOCUSED_CLASS));\r\n var $hoveredItem = $availableItems.filter(\".\".concat(DX_STATE_HOVER_CLASS));\r\n var $hoveredItemContainer = $hoveredItem.closest(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS));\r\n if ($hoveredItemContainer.find(\".\".concat(DX_MENU_ITEM_CLASS)).index($focusedItem) >= 0) {\r\n return $focusedItem\r\n }\r\n if ($hoveredItem.length) {\r\n return $hoveredItem\r\n }\r\n return super._getActiveItem()\r\n }\r\n _moveFocus(location) {\r\n var $items = this._getItemsByLocation(location);\r\n var $oldTarget = this._getActiveItem(true);\r\n var $hoveredItem = this.itemsContainer().find(\".\".concat(DX_STATE_HOVER_CLASS));\r\n var $focusedItem = $(this.option(\"focusedElement\"));\r\n var $activeItemHighlighted = !!($focusedItem.length || $hoveredItem.length);\r\n var $newTarget;\r\n switch (location) {\r\n case FOCUS_UP:\r\n $newTarget = $activeItemHighlighted ? this._prevItem($items) : $oldTarget;\r\n this._setFocusedElement($newTarget);\r\n if ($oldTarget.is($items.first())) {\r\n this._actions.onLeftFirstItem($oldTarget)\r\n }\r\n break;\r\n case FOCUS_DOWN:\r\n $newTarget = $activeItemHighlighted ? this._nextItem($items) : $oldTarget;\r\n this._setFocusedElement($newTarget);\r\n if ($oldTarget.is($items.last())) {\r\n this._actions.onLeftLastItem($oldTarget)\r\n }\r\n break;\r\n case FOCUS_RIGHT:\r\n $newTarget = this.option(\"rtlEnabled\") ? this._hideSubmenuHandler() : this._expandSubmenuHandler($items, location);\r\n this._setFocusedElement($newTarget);\r\n break;\r\n case FOCUS_LEFT:\r\n $newTarget = this.option(\"rtlEnabled\") ? this._expandSubmenuHandler($items, location) : this._hideSubmenuHandler();\r\n this._setFocusedElement($newTarget);\r\n break;\r\n case FOCUS_FIRST:\r\n $newTarget = $items.first();\r\n this._setFocusedElement($newTarget);\r\n break;\r\n case FOCUS_LAST:\r\n $newTarget = $items.last();\r\n this._setFocusedElement($newTarget);\r\n break;\r\n default:\r\n return super._moveFocus(location)\r\n }\r\n }\r\n _setFocusedElement($element) {\r\n if ($element && 0 !== $element.length) {\r\n this.option(\"focusedElement\", getPublicElement($element))\r\n }\r\n }\r\n _getItemsByLocation(location) {\r\n var $activeItem = this._getActiveItem(true);\r\n var $items;\r\n if (inArray(location, LOCAL_SUBMENU_DIRECTIONS) >= 0) {\r\n $items = $activeItem.closest(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS)).children().children()\r\n }\r\n $items = this._getAvailableItems($items);\r\n return $items\r\n }\r\n _getAriaTarget() {\r\n return this.$element()\r\n }\r\n _refreshActiveDescendant() {\r\n if (isDefined(this._overlay)) {\r\n var $target = this._overlay.$content();\r\n super._refreshActiveDescendant($target)\r\n }\r\n }\r\n _hideSubmenuHandler() {\r\n var $curItem = this._getActiveItem(true);\r\n var $parentItem = $curItem.parents(\".\".concat(DX_MENU_ITEM_EXPANDED_CLASS)).first();\r\n if ($parentItem.length) {\r\n this._hideSubmenusOnSameLevel($parentItem);\r\n this._hideSubmenu($curItem.closest(\".\".concat(DX_SUBMENU_CLASS)));\r\n return $parentItem\r\n }\r\n this._actions.onCloseRootSubmenu($curItem);\r\n return $curItem\r\n }\r\n _expandSubmenuHandler($items, location) {\r\n var $curItem = this._getActiveItem(true);\r\n var itemData = this._getItemData($curItem);\r\n var node = this._dataAdapter.getNodeByItem(itemData);\r\n var isItemHasSubmenu = this._hasSubmenu(node);\r\n var $submenu = $curItem.children(\".\".concat(DX_SUBMENU_CLASS));\r\n if (isItemHasSubmenu && !$curItem.hasClass(DX_STATE_DISABLED_CLASS)) {\r\n if (!$submenu.length || \"hidden\" === $submenu.css(\"visibility\")) {\r\n this._showSubmenu($curItem)\r\n }\r\n return this._nextItem(this._getItemsByLocation(location))\r\n }\r\n this._actions.onExpandLastSubmenu($curItem);\r\n return\r\n }\r\n _clean() {\r\n if (this._overlay) {\r\n this._overlay.$element().remove();\r\n this._overlay = null\r\n }\r\n this._detachShowContextMenuEvents(this._getTarget());\r\n super._clean()\r\n }\r\n _initMarkup() {\r\n this.$element().addClass(DX_HAS_CONTEXT_MENU_CLASS);\r\n super._initMarkup()\r\n }\r\n _render() {\r\n super._render();\r\n this._renderVisibility(this.option(\"visible\"));\r\n this._addWidgetClass()\r\n }\r\n _renderContentImpl() {\r\n this._detachShowContextMenuEvents(this._getTarget());\r\n this._attachShowContextMenuEvents()\r\n }\r\n _attachKeyboardEvents() {\r\n !this._keyboardListenerId && this._focusTarget().length && super._attachKeyboardEvents()\r\n }\r\n _renderContextMenuOverlay() {\r\n if (this._overlay) {\r\n return\r\n }\r\n var overlayOptions = this._getOverlayOptions();\r\n this._overlay = this._createComponent($(\"
\").appendTo(this._$element), Overlay, overlayOptions);\r\n var $overlayContent = this._overlay.$content();\r\n $overlayContent.addClass(DX_CONTEXT_MENU_CLASS);\r\n this._addCustomCssClass($overlayContent);\r\n this._addPlatformDependentClass($overlayContent);\r\n this._attachContextMenuEvent()\r\n }\r\n preventShowingDefaultContextMenuAboveOverlay() {\r\n var $itemContainer = this._itemContainer();\r\n var eventName = addNamespace(contextMenuEventName, this.NAME);\r\n eventsEngine.off($itemContainer, eventName, \".\".concat(DX_SUBMENU_CLASS));\r\n eventsEngine.on($itemContainer, eventName, \".\".concat(DX_SUBMENU_CLASS), (e => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n eventsEngine.off($itemContainer, eventName, \".\".concat(DX_SUBMENU_CLASS))\r\n }).bind(this))\r\n }\r\n _itemContextMenuHandler(e) {\r\n super._itemContextMenuHandler(e);\r\n e.stopPropagation()\r\n }\r\n _addPlatformDependentClass($element) {\r\n if (devices.current().phone) {\r\n $element.addClass(DX_MENU_PHONE_CLASS)\r\n }\r\n }\r\n _detachShowContextMenuEvents(target) {\r\n var showEvent = this.getShowEvent(this.option(\"showEvent\"));\r\n if (!showEvent) {\r\n return\r\n }\r\n var eventName = addNamespace(showEvent, this.NAME);\r\n if (this._showContextMenuEventHandler) {\r\n eventsEngine.off(domAdapter.getDocument(), eventName, target, this._showContextMenuEventHandler)\r\n } else {\r\n eventsEngine.off($(target), eventName)\r\n }\r\n }\r\n _attachShowContextMenuEvents() {\r\n var target = this._getTarget();\r\n var showEvent = this.getShowEvent(this.option(\"showEvent\"));\r\n if (!showEvent) {\r\n return\r\n }\r\n var eventName = addNamespace(showEvent, this.NAME);\r\n var contextMenuAction = this._createAction(e => {\r\n var delay = this.getShowDelay(this.option(\"showEvent\"));\r\n if (delay) {\r\n setTimeout(() => this._show(e.event), delay)\r\n } else {\r\n this._show(e.event)\r\n }\r\n }, {\r\n validatingTargetName: \"target\"\r\n });\r\n var handler = e => contextMenuAction({\r\n event: e,\r\n target: $(e.currentTarget)\r\n });\r\n contextMenuAction = this._createAction(contextMenuAction);\r\n if (isRenderer(target) || target.nodeType || isWindow(target)) {\r\n this._showContextMenuEventHandler = void 0;\r\n eventsEngine.on(target, eventName, handler)\r\n } else {\r\n this._showContextMenuEventHandler = handler;\r\n eventsEngine.on(domAdapter.getDocument(), eventName, target, this._showContextMenuEventHandler)\r\n }\r\n }\r\n _hoverEndHandler(e) {\r\n super._hoverEndHandler(e);\r\n e.stopPropagation()\r\n }\r\n _renderDimensions() {}\r\n _renderContainer($wrapper, submenuContainer) {\r\n var $holder = submenuContainer || this._itemContainer();\r\n $wrapper = $(\"
\");\r\n $wrapper.appendTo($holder).addClass(DX_SUBMENU_CLASS).css(\"visibility\", submenuContainer ? \"hidden\" : \"visible\");\r\n var $itemsContainer = super._renderContainer($wrapper);\r\n if (submenuContainer) {\r\n return $itemsContainer\r\n }\r\n if (this.option(\"width\")) {\r\n return $itemsContainer.css(\"minWidth\", this.option(\"width\"))\r\n }\r\n if (this.option(\"height\")) {\r\n return $itemsContainer.css(\"minHeight\", this.option(\"height\"))\r\n }\r\n return $itemsContainer\r\n }\r\n _renderSubmenuItems(node, $itemFrame) {\r\n this._renderItems(this._getChildNodes(node), $itemFrame);\r\n this._actions.onSubmenuCreated({\r\n itemElement: getPublicElement($itemFrame),\r\n itemData: node.internalFields.item,\r\n submenuElement: getPublicElement($itemFrame.children(\".\".concat(DX_SUBMENU_CLASS)))\r\n })\r\n }\r\n _getOverlayOptions() {\r\n var position = this.option(\"position\");\r\n var overlayOptions = {\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n animation: this.option(\"animation\"),\r\n innerOverlay: true,\r\n closeOnOutsideClick: this._closeOnOutsideClickHandler.bind(this),\r\n propagateOutsideClick: true,\r\n closeOnTargetScroll: true,\r\n deferRendering: false,\r\n position: {\r\n at: position.at,\r\n my: position.my,\r\n of: this._getTarget(),\r\n collision: \"flipfit\"\r\n },\r\n shading: false,\r\n showTitle: false,\r\n height: \"auto\",\r\n width: \"auto\",\r\n onShown: this._overlayShownActionHandler.bind(this),\r\n onHiding: this._overlayHidingActionHandler.bind(this),\r\n onHidden: this._overlayHiddenActionHandler.bind(this)\r\n };\r\n return overlayOptions\r\n }\r\n _overlayShownActionHandler(arg) {\r\n this._actions.onShown(arg)\r\n }\r\n _overlayHidingActionHandler(arg) {\r\n this._actions.onHiding(arg);\r\n if (!arg.cancel) {\r\n this._hideAllShownSubmenus();\r\n this._setOptionWithoutOptionChange(\"visible\", false)\r\n }\r\n }\r\n _overlayHiddenActionHandler(arg) {\r\n this._actions.onHidden(arg)\r\n }\r\n _closeOnOutsideClickHandler(e) {\r\n var closeOnOutsideClick = this.option(\"closeOnOutsideClick\");\r\n if (isFunction(closeOnOutsideClick)) {\r\n return closeOnOutsideClick(e)\r\n }\r\n if (!closeOnOutsideClick) {\r\n return false\r\n }\r\n if (domAdapter.isDocument(e.target)) {\r\n return true\r\n }\r\n var $activeItemContainer = this._getActiveItemsContainer(e.target);\r\n var $itemContainers = this._getItemsContainers();\r\n var $clickedItem = this._searchActiveItem(e.target);\r\n var $rootItem = this.$element().parents(\".\".concat(DX_MENU_ITEM_CLASS));\r\n var isRootItemClicked = $clickedItem[0] === $rootItem[0] && $clickedItem.length && $rootItem.length;\r\n var isInnerOverlayClicked = this._isIncludeOverlay($activeItemContainer, $itemContainers) && $clickedItem.length;\r\n if (isInnerOverlayClicked || isRootItemClicked) {\r\n if (\"onClick\" === this._getShowSubmenuMode()) {\r\n this._hideAllShownChildSubmenus($clickedItem)\r\n }\r\n return false\r\n }\r\n return true\r\n }\r\n _getActiveItemsContainer(target) {\r\n return $(target).closest(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS))\r\n }\r\n _getItemsContainers() {\r\n return this._overlay.$content().find(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS))\r\n }\r\n _searchActiveItem(target) {\r\n return $(target).closest(\".\".concat(DX_MENU_ITEM_CLASS)).eq(0)\r\n }\r\n _isIncludeOverlay($activeOverlay, $allOverlays) {\r\n var isSame = false;\r\n each($allOverlays, (index, $overlay) => {\r\n if ($activeOverlay.is($overlay) && !isSame) {\r\n isSame = true\r\n }\r\n });\r\n return isSame\r\n }\r\n _hideAllShownChildSubmenus($clickedItem) {\r\n var $submenuElements = $clickedItem.find(\".\".concat(DX_SUBMENU_CLASS));\r\n var shownSubmenus = extend([], this._shownSubmenus);\r\n if ($submenuElements.length > 0) {\r\n each(shownSubmenus, (index, $submenu) => {\r\n var $context = this._searchActiveItem($submenu.context).parent();\r\n if ($context.parent().is($clickedItem.parent().parent()) && !$context.is($clickedItem.parent())) {\r\n this._hideSubmenu($submenu)\r\n }\r\n })\r\n }\r\n }\r\n _showSubmenu($item) {\r\n var node = this._dataAdapter.getNodeByItem(this._getItemData($item));\r\n this._hideSubmenusOnSameLevel($item);\r\n if (!this._hasSubmenu(node)) {\r\n return\r\n }\r\n var $submenu = $item.children(\".\".concat(DX_SUBMENU_CLASS));\r\n var isSubmenuRendered = $submenu.length;\r\n super._showSubmenu($item);\r\n if (!isSubmenuRendered) {\r\n this._renderSubmenuItems(node, $item)\r\n }\r\n if (!this._isSubmenuVisible($submenu)) {\r\n this._drawSubmenu($item)\r\n }\r\n }\r\n _hideSubmenusOnSameLevel($item) {\r\n var $expandedItems = $item.parent(\".\".concat(DX_MENU_ITEM_WRAPPER_CLASS)).siblings().find(\".\".concat(DX_MENU_ITEM_EXPANDED_CLASS));\r\n if ($expandedItems.length) {\r\n $expandedItems.removeClass(DX_MENU_ITEM_EXPANDED_CLASS);\r\n this._hideSubmenu($expandedItems.find(\".\".concat(DX_SUBMENU_CLASS)))\r\n }\r\n }\r\n _hideSubmenuGroup($submenu) {\r\n if (this._isSubmenuVisible($submenu)) {\r\n this._hideSubmenuCore($submenu)\r\n }\r\n }\r\n _isSubmenuVisible($submenu) {\r\n return \"visible\" === $submenu.css(\"visibility\")\r\n }\r\n _drawSubmenu($itemElement) {\r\n var animation = this.option(\"animation\") ? this.option(\"animation\").show : {};\r\n var $submenu = $itemElement.children(\".\".concat(DX_SUBMENU_CLASS));\r\n var submenuPosition = this._getSubmenuPosition($itemElement);\r\n if (this._overlay && this._overlay.option(\"visible\")) {\r\n if (!isDefined(this._shownSubmenus)) {\r\n this._shownSubmenus = []\r\n }\r\n if (inArray($submenu, this._shownSubmenus)) {\r\n this._shownSubmenus.push($submenu)\r\n }\r\n if (animation) {\r\n fx.stop($submenu)\r\n }\r\n animationPosition.setup($submenu, submenuPosition);\r\n if (animation) {\r\n if (isPlainObject(animation.to)) {\r\n animation.to.position = submenuPosition\r\n }\r\n this._animate($submenu, animation)\r\n }\r\n $submenu.css(\"visibility\", \"visible\")\r\n }\r\n }\r\n _animate($container, options) {\r\n fx.animate($container, options)\r\n }\r\n _getSubmenuPosition($rootItem) {\r\n var submenuDirection = this.option(\"submenuDirection\").toLowerCase();\r\n var $rootItemWrapper = $rootItem.parent(\".\".concat(DX_MENU_ITEM_WRAPPER_CLASS));\r\n var position = {\r\n collision: \"flip\",\r\n of: $rootItemWrapper,\r\n offset: {\r\n h: 0,\r\n v: -1\r\n }\r\n };\r\n switch (submenuDirection) {\r\n case \"left\":\r\n position.at = \"left top\";\r\n position.my = \"right top\";\r\n break;\r\n case \"right\":\r\n position.at = \"right top\";\r\n position.my = \"left top\";\r\n break;\r\n default:\r\n if (this.option(\"rtlEnabled\")) {\r\n position.at = \"left top\";\r\n position.my = \"right top\"\r\n } else {\r\n position.at = \"right top\";\r\n position.my = \"left top\"\r\n }\r\n }\r\n return position\r\n }\r\n _updateSubmenuVisibilityOnClick(actionArgs) {\r\n if (!actionArgs.args.length) {\r\n return\r\n }\r\n var itemData = actionArgs.args[0].itemData;\r\n var node = this._dataAdapter.getNodeByItem(itemData);\r\n if (!node) {\r\n return\r\n }\r\n var $itemElement = $(actionArgs.args[0].itemElement);\r\n var $submenu = $itemElement.find(\".\".concat(DX_SUBMENU_CLASS));\r\n var shouldRenderSubmenu = this._hasSubmenu(node) && !$submenu.length;\r\n if (shouldRenderSubmenu) {\r\n this._renderSubmenuItems(node, $itemElement);\r\n $submenu = $itemElement.find(\".\".concat(DX_SUBMENU_CLASS))\r\n }\r\n if ($itemElement.context === $submenu.context && \"visible\" === $submenu.css(\"visibility\")) {\r\n return\r\n }\r\n var notCloseMenuOnItemClick = itemData && false === itemData.closeMenuOnClick;\r\n if (!itemData || itemData.disabled || notCloseMenuOnItemClick) {\r\n return\r\n }\r\n this._updateSelectedItemOnClick(actionArgs);\r\n if (0 === $submenu.length) {\r\n var $prevSubmenu = $($itemElement.parents(\".\".concat(DX_SUBMENU_CLASS))[0]);\r\n this._hideSubmenu($prevSubmenu);\r\n if (!actionArgs.canceled && this._overlay && this._overlay.option(\"visible\")) {\r\n this.option(\"visible\", false)\r\n }\r\n } else {\r\n if (this._shownSubmenus && this._shownSubmenus.length > 0) {\r\n if (this._shownSubmenus[0].is($submenu)) {\r\n this._hideSubmenu($submenu)\r\n }\r\n }\r\n this._showSubmenu($itemElement)\r\n }\r\n }\r\n _hideSubmenu($curSubmenu) {\r\n var shownSubmenus = extend([], this._shownSubmenus);\r\n each(shownSubmenus, (index, $submenu) => {\r\n if ($curSubmenu.is($submenu) || contains($curSubmenu[0], $submenu[0])) {\r\n $submenu.parent().removeClass(DX_MENU_ITEM_EXPANDED_CLASS);\r\n this._hideSubmenuCore($submenu)\r\n }\r\n })\r\n }\r\n _hideSubmenuCore($submenu) {\r\n var index = inArray($submenu, this._shownSubmenus);\r\n var animation = this.option(\"animation\") ? this.option(\"animation\").hide : null;\r\n if (index >= 0) {\r\n this._shownSubmenus.splice(index, 1)\r\n }\r\n this._stopAnimate($submenu);\r\n animation && this._animate($submenu, animation);\r\n $submenu.css(\"visibility\", \"hidden\")\r\n }\r\n _stopAnimate($container) {\r\n fx.stop($container, true)\r\n }\r\n _hideAllShownSubmenus() {\r\n var shownSubmenus = extend([], this._shownSubmenus);\r\n var $expandedItems = this._overlay.$content().find(\".\".concat(DX_MENU_ITEM_EXPANDED_CLASS));\r\n $expandedItems.removeClass(DX_MENU_ITEM_EXPANDED_CLASS);\r\n each(shownSubmenus, (_, $submenu) => {\r\n this._hideSubmenu($submenu)\r\n })\r\n }\r\n _visibilityChanged(visible) {\r\n if (visible) {\r\n this._renderContentImpl()\r\n }\r\n }\r\n _optionChanged(args) {\r\n if (inArray(args.name, ACTIONS) > -1) {\r\n this._initActions();\r\n return\r\n }\r\n switch (args.name) {\r\n case \"visible\":\r\n this._renderVisibility(args.value);\r\n break;\r\n case \"showEvent\":\r\n case \"position\":\r\n case \"submenuDirection\":\r\n this._invalidate();\r\n break;\r\n case \"target\":\r\n args.previousValue && this._detachShowContextMenuEvents(args.previousValue);\r\n this._invalidate();\r\n break;\r\n case \"closeOnOutsideClick\":\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n _renderVisibility(showing) {\r\n return showing ? this._show() : this._hide()\r\n }\r\n _toggleVisibility() {}\r\n _show(event) {\r\n var args = {\r\n jQEvent: event\r\n };\r\n var promise = (new Deferred).reject().promise();\r\n this._actions.onShowing(args);\r\n if (args.cancel) {\r\n return promise\r\n }\r\n var position = this._positionContextMenu(event);\r\n if (position) {\r\n var _event$originalEvent;\r\n if (!this._overlay) {\r\n this._renderContextMenuOverlay();\r\n this._overlay.$content().addClass(this._widgetClass());\r\n this._renderFocusState();\r\n this._attachHoverEvents();\r\n this._attachClickEvent();\r\n this._renderItems(this._dataAdapter.getRootNodes())\r\n }\r\n this._setOptionWithoutOptionChange(\"visible\", true);\r\n this._overlay.option(\"position\", position);\r\n promise = this._overlay.show();\r\n event && event.stopPropagation();\r\n this._setAriaAttributes();\r\n if ((null === event || void 0 === event ? void 0 : null === (_event$originalEvent = event.originalEvent) || void 0 === _event$originalEvent ? void 0 : _event$originalEvent.type) === holdEvent.name) {\r\n this.preventShowingDefaultContextMenuAboveOverlay()\r\n }\r\n }\r\n return promise\r\n }\r\n _setAriaAttributes() {\r\n this._overlayContentId = \"dx-\".concat(new Guid);\r\n this.setAria(\"owns\", this._overlayContentId);\r\n this.setAria({\r\n id: this._overlayContentId,\r\n role: \"menu\"\r\n }, this._overlay.$content())\r\n }\r\n _cleanAriaAttributes() {\r\n this._overlay && this.setAria(\"id\", null, this._overlay.$content());\r\n this.setAria(\"owns\", void 0)\r\n }\r\n _getTarget() {\r\n return this.option(\"target\") || this.option(\"position\").of || $(domAdapter.getDocument())\r\n }\r\n _getContextMenuPosition() {\r\n return extend({}, this.option(\"position\"), {\r\n of: this._getTarget()\r\n })\r\n }\r\n _positionContextMenu(jQEvent) {\r\n var position = this._getContextMenuPosition();\r\n var isInitialPosition = this._isInitialOptionValue(\"position\");\r\n var positioningAction = this._createActionByOption(\"onPositioning\", actionArgs);\r\n if (jQEvent && jQEvent.preventDefault && isInitialPosition) {\r\n position.of = jQEvent\r\n }\r\n var actionArgs = {\r\n position: position,\r\n event: jQEvent\r\n };\r\n positioningAction(actionArgs);\r\n if (actionArgs.cancel) {\r\n position = null\r\n } else if (actionArgs.event) {\r\n actionArgs.event.cancel = true;\r\n jQEvent.preventDefault()\r\n }\r\n return position\r\n }\r\n _refresh() {\r\n if (!hasWindow()) {\r\n super._refresh()\r\n } else if (this._overlay) {\r\n var lastPosition = this._overlay.option(\"position\");\r\n super._refresh();\r\n this._overlay && this._overlay.option(\"position\", lastPosition)\r\n } else {\r\n super._refresh()\r\n }\r\n }\r\n _hide() {\r\n var promise;\r\n if (this._overlay) {\r\n promise = this._overlay.hide();\r\n this._setOptionWithoutOptionChange(\"visible\", false)\r\n }\r\n this._cleanAriaAttributes();\r\n this.option(\"focusedElement\", null);\r\n return promise || (new Deferred).reject().promise()\r\n }\r\n toggle(showing) {\r\n var visible = this.option(\"visible\");\r\n showing = void 0 === showing ? !visible : showing;\r\n return this._renderVisibility(showing)\r\n }\r\n show() {\r\n return this.toggle(true)\r\n }\r\n hide() {\r\n return this.toggle(false)\r\n }\r\n}\r\nregisterComponent(\"dxContextMenu\", ContextMenu);\r\nexport default ContextMenu;\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.row_dragging.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport Sortable from \"../sortable\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport browser from \"../../core/utils/browser\";\r\nvar COMMAND_HANDLE_CLASS = \"dx-command-drag\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar HANDLE_ICON_CLASS = \"drag-icon\";\r\nvar ROWS_VIEW = \"rowsview\";\r\nvar SORTABLE_WITHOUT_HANDLE_CLASS = \"dx-sortable-without-handle\";\r\nvar RowDraggingExtender = {\r\n init: function() {\r\n this.callBase.apply(this, arguments);\r\n this._updateHandleColumn()\r\n },\r\n _allowReordering: function() {\r\n var rowDragging = this.option(\"rowDragging\");\r\n return !!(rowDragging && (rowDragging.allowReordering || rowDragging.allowDropInsideItem || rowDragging.group))\r\n },\r\n _updateHandleColumn: function() {\r\n var rowDragging = this.option(\"rowDragging\");\r\n var allowReordering = this._allowReordering();\r\n var columnsController = this._columnsController;\r\n var isHandleColumnVisible = allowReordering && rowDragging.showDragIcons;\r\n columnsController && columnsController.addCommandColumn({\r\n type: \"drag\",\r\n command: \"drag\",\r\n visibleIndex: -2,\r\n alignment: \"center\",\r\n cssClass: COMMAND_HANDLE_CLASS,\r\n width: \"auto\",\r\n cellTemplate: this._getHandleTemplate(),\r\n visible: isHandleColumnVisible\r\n });\r\n columnsController.columnOption(\"type:drag\", \"visible\", isHandleColumnVisible)\r\n },\r\n _renderContent: function() {\r\n var rowDragging = this.option(\"rowDragging\");\r\n var allowReordering = this._allowReordering();\r\n var $content = this.callBase.apply(this, arguments);\r\n var isFixedTableRendering = this._isFixedTableRendering;\r\n var sortableName = \"_sortable\";\r\n var sortableFixedName = \"_sortableFixed\";\r\n var currentSortableName = isFixedTableRendering ? sortableFixedName : sortableName;\r\n var anotherSortableName = isFixedTableRendering ? sortableName : sortableFixedName;\r\n var togglePointerEventsStyle = toggle => {\r\n var _this$sortableFixedNa;\r\n null === (_this$sortableFixedNa = this[sortableFixedName]) || void 0 === _this$sortableFixedNa ? void 0 : _this$sortableFixedNa.$element().css(\"pointerEvents\", toggle ? \"auto\" : \"\")\r\n };\r\n if ((allowReordering || this[currentSortableName]) && $content.length) {\r\n this[currentSortableName] = this._createComponent($content, Sortable, extend({\r\n component: this.component,\r\n contentTemplate: null,\r\n filter: \"> table > tbody > .dx-row:not(.dx-freespace-row):not(.dx-virtual-row)\",\r\n dragTemplate: this._getDraggableRowTemplate(),\r\n handle: rowDragging.showDragIcons && \".\".concat(COMMAND_HANDLE_CLASS),\r\n dropFeedbackMode: \"indicate\"\r\n }, rowDragging, {\r\n onDragStart: e => {\r\n var _rowDragging$onDragSt;\r\n var row = e.component.getVisibleRows()[e.fromIndex];\r\n e.itemData = row && row.data;\r\n var isDataRow = row && \"data\" === row.rowType;\r\n e.cancel = !allowReordering || !isDataRow;\r\n null === (_rowDragging$onDragSt = rowDragging.onDragStart) || void 0 === _rowDragging$onDragSt ? void 0 : _rowDragging$onDragSt.call(rowDragging, e)\r\n },\r\n onDragEnter: () => {\r\n togglePointerEventsStyle(true)\r\n },\r\n onDragLeave: () => {\r\n togglePointerEventsStyle(false)\r\n },\r\n onDragEnd: e => {\r\n var _rowDragging$onDragEn;\r\n togglePointerEventsStyle(false);\r\n null === (_rowDragging$onDragEn = rowDragging.onDragEnd) || void 0 === _rowDragging$onDragEn ? void 0 : _rowDragging$onDragEn.call(rowDragging, e)\r\n },\r\n onAdd: e => {\r\n var _rowDragging$onAdd;\r\n togglePointerEventsStyle(false);\r\n null === (_rowDragging$onAdd = rowDragging.onAdd) || void 0 === _rowDragging$onAdd ? void 0 : _rowDragging$onAdd.call(rowDragging, e)\r\n },\r\n dropFeedbackMode: browser.msie ? \"indicate\" : rowDragging.dropFeedbackMode,\r\n onOptionChanged: e => {\r\n var hasFixedSortable = this[sortableFixedName];\r\n if (hasFixedSortable) {\r\n if (\"fromIndex\" === e.name || \"toIndex\" === e.name) {\r\n this[anotherSortableName].option(e.name, e.value)\r\n }\r\n }\r\n }\r\n }));\r\n $content.toggleClass(\"dx-scrollable-container\", isFixedTableRendering);\r\n $content.toggleClass(SORTABLE_WITHOUT_HANDLE_CLASS, allowReordering && !rowDragging.showDragIcons)\r\n }\r\n return $content\r\n },\r\n _resizeCore: function() {\r\n this.callBase.apply(this, arguments);\r\n var offset = this._dataController.getRowIndexOffset();\r\n [this._sortable, this._sortableFixed].forEach(sortable => {\r\n null === sortable || void 0 === sortable ? void 0 : sortable.option(\"offset\", offset);\r\n null === sortable || void 0 === sortable ? void 0 : sortable.update()\r\n })\r\n },\r\n _getDraggableGridOptions: function(options) {\r\n var gridOptions = this.option();\r\n var columns = this.getColumns();\r\n var $rowElement = $(this.getRowElement(options.rowIndex));\r\n return {\r\n dataSource: [{\r\n id: 1,\r\n parentId: 0\r\n }],\r\n showBorders: true,\r\n showColumnHeaders: false,\r\n scrolling: {\r\n useNative: false,\r\n showScrollbar: false\r\n },\r\n pager: {\r\n visible: false\r\n },\r\n loadingTimeout: void 0,\r\n columnFixing: gridOptions.columnFixing,\r\n columnAutoWidth: gridOptions.columnAutoWidth,\r\n showColumnLines: gridOptions.showColumnLines,\r\n columns: columns.map(column => ({\r\n width: column.width || column.visibleWidth,\r\n fixed: column.fixed,\r\n fixedPosition: column.fixedPosition\r\n })),\r\n onRowPrepared: e => {\r\n var rowsView = e.component.getView(\"rowsView\");\r\n $(e.rowElement).replaceWith($rowElement.eq(rowsView._isFixedTableRendering ? 1 : 0).clone())\r\n }\r\n }\r\n },\r\n _getDraggableRowTemplate: function() {\r\n return options => {\r\n var $rootElement = this.component.$element();\r\n var $dataGridContainer = $(\"
\").width($rootElement.width());\r\n var items = this._dataController.items();\r\n var row = items && items[options.fromIndex];\r\n var gridOptions = this._getDraggableGridOptions(row);\r\n this._createComponent($dataGridContainer, this.component.NAME, gridOptions);\r\n $dataGridContainer.find(\".dx-gridbase-container\").children(\":not(.\".concat(this.addWidgetPrefix(ROWS_VIEW), \")\")).hide();\r\n return $dataGridContainer\r\n }\r\n },\r\n _getHandleTemplate: function() {\r\n return (container, options) => {\r\n if (\"data\" === options.rowType) {\r\n $(container).addClass(CELL_FOCUS_DISABLED_CLASS);\r\n return $(\"\").addClass(this.addWidgetPrefix(HANDLE_ICON_CLASS))\r\n } else {\r\n gridCoreUtils.setEmptyText($(container))\r\n }\r\n }\r\n },\r\n optionChanged: function(args) {\r\n if (\"rowDragging\" === args.name) {\r\n this._updateHandleColumn();\r\n this._invalidate(true, true);\r\n args.handled = true\r\n }\r\n this.callBase.apply(this, arguments)\r\n }\r\n};\r\nexport var rowDraggingModule = {\r\n defaultOptions: function() {\r\n return {\r\n rowDragging: {\r\n showDragIcons: true,\r\n dropFeedbackMode: \"indicate\",\r\n allowReordering: false,\r\n allowDropInsideItem: false\r\n }\r\n }\r\n },\r\n extenders: {\r\n views: {\r\n rowsView: RowDraggingExtender\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.filter_row.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nimport {\r\n each,\r\n map\r\n} from \"../../core/utils/iterator\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport Editor from \"../editor/editor\";\r\nimport Overlay from \"../overlay/ui.overlay\";\r\nimport Menu from \"../menu\";\r\nimport {\r\n selectView\r\n} from \"../shared/accessibility\";\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) {\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 = gridCoreUtils.getFormatOptionsByColumn(column, \"filterRow\");\r\n if (Array.isArray(filterValue)) {\r\n result = gridCoreUtils.formatValue(filterValue[0], formatOptions);\r\n rangeEnd = gridCoreUtils.formatValue(filterValue[1], formatOptions);\r\n if (\"\" !== rangeEnd) {\r\n result += \" - \" + rangeEnd\r\n }\r\n } else if (isDefined(filterValue)) {\r\n result = gridCoreUtils.formatValue(filterValue, formatOptions)\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 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 && 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 }(filterValue, column) ? filterValue : null\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 (!isDefined(filterValue) && !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 = 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 }(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 editor = getEditorInstance($editorContainer);\r\n editor && editor.option(\"value\", getFilterValue(this, column.index, $editorContainer))\r\n },\r\n _columnOptionChanged: function(e) {\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 (gridCoreUtils.checkChanges(optionNames, [\"filterValue\", \"bufferedFilterValue\", \"selectedFilterOperation\", \"bufferedSelectedFilterOperation\"]) && void 0 !== e.columnIndex) {\r\n var visibleIndex = this._columnsController.getVisibleIndex(e.columnIndex);\r\n var column = this._columnsController.columnOption(e.columnIndex);\r\n $cell = this._getCellElement(this.element().find(\".\" + this.addWidgetPrefix(FILTER_ROW_CLASS)).index(), visibleIndex) || $();\r\n $editorContainer = $cell.find(\".\" + EDITOR_CONTAINER_CLASS).first();\r\n if (optionNames.filterValue || optionNames.bufferedFilterValue) {\r\n this._updateEditorValue(column, $editorContainer);\r\n var overlayInstance = $cell.find(\".\" + this.addWidgetPrefix(FILTER_RANGE_OVERLAY_CLASS)).data(\"dxOverlay\");\r\n if (overlayInstance) {\r\n $editorRangeElements = overlayInstance.$content().find(\".\" + EDITOR_CONTAINER_CLASS);\r\n this._updateEditorValue(column, $editorRangeElements.first());\r\n this._updateEditorValue(column, $editorRangeElements.last())\r\n }\r\n if (!overlayInstance || !overlayInstance.option(\"visible\")) {\r\n this._updateFilterRangeContent($cell, getRangeTextByFilterValue(this, 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 this._updateFilterOperationChooser($menu, column, $editorContainer);\r\n if (\"between\" === getColumnSelectedFilterOperation(this, column)) {\r\n this._renderFilterRangeContent($cell, column)\r\n } else if ($editorContainer.find(\".\" + FILTER_RANGE_CONTENT_CLASS).length) {\r\n this._renderEditor($editorContainer, this._getEditorOptions($editorContainer, column));\r\n this._hideFilterRange()\r\n }\r\n }\r\n }\r\n }\r\n return\r\n }\r\n this.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 = $(\"
\").addClass(that.addWidgetPrefix(FILTER_RANGE_OVERLAY_CLASS)).appendTo($cell);\r\n return that._createComponent($overlay, Overlay, {\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 = $(\"
\").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 eventsEngine.on($editor.find(EDITORS_INPUT_SELECTOR), \"keydown\", (function(e) {\r\n var $prevElement = $cell.find(\"[tabindex]\").not(e.target).first();\r\n if (\"tab\" === 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 eventsEngine.trigger($prevElement, \"focus\")\r\n }\r\n }));\r\n $editor = $(\"
\").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 eventsEngine.on($editor.find(EDITORS_INPUT_SELECTOR), \"keydown\", (function(e) {\r\n if (\"tab\" === normalizeKeyName(e) && !e.shiftKey) {\r\n e.preventDefault();\r\n that._hideFilterRange();\r\n eventsEngine.trigger($cell.next().find(\"[tabindex]\").first(), \"focus\")\r\n }\r\n }));\r\n return $(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 eventsEngine.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 $overlay = $cell.children(\".\" + this.addWidgetPrefix(FILTER_RANGE_OVERLAY_CLASS));\r\n var overlayInstance = $overlay.length && $overlay.data(\"dxOverlay\");\r\n if (!overlayInstance && column) {\r\n overlayInstance = this._initFilterRangeOverlay($cell, column)\r\n }\r\n if (!overlayInstance.option(\"visible\")) {\r\n this._filterRangeOverlayInstance && this._filterRangeOverlayInstance.hide();\r\n this._filterRangeOverlayInstance = overlayInstance;\r\n this._updateFilterRangeOverlay({\r\n width: $cell.outerWidth(true) + CORRECT_FILTER_RANGE_OVERLAY_WIDTH\r\n });\r\n this._filterRangeOverlayInstance && this._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 $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 eventsEngine.on($row, \"keydown\", event => selectView(\"filterRow\", this, event))\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 column = options.column;\r\n var $cell = $(cell);\r\n if (this.component.option(\"showColumnHeaders\")) {\r\n this.setAria(\"describedby\", column.headerId, $cell)\r\n }\r\n this.setAria(\"label\", messageLocalization.format(\"dxDataGrid-ariaFilterCell\"), $cell);\r\n $cell.addClass(EDITOR_CELL_CLASS);\r\n var $container = $(\"
\").appendTo($cell);\r\n var $editorContainer = $(\"
\").addClass(EDITOR_CONTAINER_CLASS).appendTo($container);\r\n if (\"between\" === getColumnSelectedFilterOperation(this, column)) {\r\n this._renderFilterRangeContent($cell, column)\r\n } else {\r\n var editorOptions = this._getEditorOptions($editorContainer, column);\r\n this._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 this._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 if (column.allowFiltering) {\r\n that.renderTemplate($cell, that._renderFilterCell.bind(that), options).done(() => {\r\n that._updateCell($cell, options)\r\n });\r\n return\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 = 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 = messageLocalization.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($(\"
\").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 = $(\"
\").addClass(FILTER_RANGE_CONTENT_CLASS).attr(\"tabindex\", this.option(\"tabIndex\"));\r\n eventsEngine.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.getInstance($menu);\r\n menu && menu.option(\"focusedElement\", null);\r\n isCellWasFocused && that._focusEditor($editorContainer)\r\n };\r\n that._createComponent($menu, Menu, {\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 eventsEngine.trigger($menu, \"blur\");\r\n restoreFocus()\r\n },\r\n onContentReady: function(e) {\r\n eventsEngine.on($menu, \"blur\", () => {\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 eventsEngine.trigger($container.find(EDITORS_INPUT_SELECTOR), \"focus\")\r\n },\r\n _renderFilterOperationChooser: function($container, column, $editorContainer) {\r\n var $menu;\r\n if (this.option(\"filterRow.showOperationChooser\")) {\r\n $container.addClass(EDITOR_WITH_MENU_CLASS);\r\n $menu = $(\"
\").prependTo($container);\r\n this._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 isDefined(OPERATION_DESCRIPTORS[value])\r\n }));\r\n result = 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 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 this.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 each(columns, (function() {\r\n if (this.allowFiltering && this.calculateFilterExpression && 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 gridCoreUtils.combineFilters(filters)\r\n }\r\n};\r\nvar ApplyFilterViewController = modules.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\nexport var filterRowModule = {\r\n defaultOptions: function() {\r\n return {\r\n filterRow: {\r\n visible: false,\r\n showOperationChooser: true,\r\n showAllText: messageLocalization.format(\"dxDataGrid-filterRowShowAllText\"),\r\n resetOperationText: messageLocalization.format(\"dxDataGrid-filterRowResetOperationText\"),\r\n applyFilter: \"auto\",\r\n applyFilterText: messageLocalization.format(\"dxDataGrid-applyFilterText\"),\r\n operationDescriptions: {\r\n equal: messageLocalization.format(\"dxDataGrid-filterRowOperationEquals\"),\r\n notEqual: messageLocalization.format(\"dxDataGrid-filterRowOperationNotEquals\"),\r\n lessThan: messageLocalization.format(\"dxDataGrid-filterRowOperationLess\"),\r\n lessThanOrEqual: messageLocalization.format(\"dxDataGrid-filterRowOperationLessOrEquals\"),\r\n greaterThan: messageLocalization.format(\"dxDataGrid-filterRowOperationGreater\"),\r\n greaterThanOrEqual: messageLocalization.format(\"dxDataGrid-filterRowOperationGreaterOrEquals\"),\r\n startsWith: messageLocalization.format(\"dxDataGrid-filterRowOperationStartsWith\"),\r\n contains: messageLocalization.format(\"dxDataGrid-filterRowOperationContains\"),\r\n notContains: messageLocalization.format(\"dxDataGrid-filterRowOperationNotContains\"),\r\n endsWith: messageLocalization.format(\"dxDataGrid-filterRowOperationEndsWith\"),\r\n between: messageLocalization.format(\"dxDataGrid-filterRowOperationBetween\"),\r\n isBlank: messageLocalization.format(\"dxFilterBuilder-filterOperationIsBlank\"),\r\n isNotBlank: messageLocalization.format(\"dxFilterBuilder-filterOperationIsNotBlank\")\r\n },\r\n betweenStartText: messageLocalization.format(\"dxDataGrid-filterRowOperationBetweenStartText\"),\r\n betweenEndText: messageLocalization.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 toolbarItem = {\r\n widget: \"dxButton\",\r\n options: {\r\n icon: \"apply-filter\",\r\n disabled: disabled,\r\n onClick: function() {\r\n that._applyFilterViewController.applyFilter()\r\n },\r\n hint: hintText,\r\n text: hintText,\r\n onInitialized: function(e) {\r\n $(e.element).addClass(that._getToolbarButtonClass(APPLY_BUTTON_CLASS))\r\n }\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\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.virtual_scrolling.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n VirtualScrollController,\r\n subscribeToExternalScrollers\r\n} from \"./ui.grid_core.virtual_scrolling_core\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nvar TABLE_CLASS = \"table\";\r\nvar BOTTOM_LOAD_PANEL_CLASS = \"bottom-load-panel\";\r\nvar TABLE_CONTENT_CLASS = \"table-content\";\r\nvar GROUP_SPACE_CLASS = \"group-space\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar FREESPACE_CLASS = \"dx-freespace-row\";\r\nvar COLUMN_LINES_CLASS = \"dx-column-lines\";\r\nvar VIRTUAL_ROW_CLASS = \"dx-virtual-row\";\r\nvar SCROLLING_MODE_INFINITE = \"infinite\";\r\nvar SCROLLING_MODE_VIRTUAL = \"virtual\";\r\nvar SCROLLING_MODE_STANDARD = \"standard\";\r\nvar PIXELS_LIMIT = 25e4;\r\nvar LOAD_TIMEOUT = 300;\r\nvar NEW_SCROLLING_MODE = \"scrolling.newMode\";\r\nvar isVirtualMode = function(that) {\r\n return that.option(\"scrolling.mode\") === SCROLLING_MODE_VIRTUAL\r\n};\r\nvar isAppendMode = function(that) {\r\n return that.option(\"scrolling.mode\") === SCROLLING_MODE_INFINITE\r\n};\r\nvar isVirtualRowRendering = function(that) {\r\n var rowRenderingMode = that.option(\"scrolling.rowRenderingMode\");\r\n if (rowRenderingMode === SCROLLING_MODE_VIRTUAL) {\r\n return true\r\n } else if (rowRenderingMode === SCROLLING_MODE_STANDARD) {\r\n return false\r\n }\r\n};\r\nvar _correctCount = function(items, count, fromEnd, isItemCountableFunc) {\r\n for (var i = 0; i < count + 1; i++) {\r\n var item = items[fromEnd ? items.length - 1 - i : i];\r\n if (item && !isItemCountableFunc(item, i === count, fromEnd)) {\r\n count++\r\n }\r\n }\r\n return count\r\n};\r\nvar isItemCountableByDataSource = function(item, dataSource) {\r\n return \"data\" === item.rowType && !item.isNewRow || \"group\" === item.rowType && dataSource.isGroupItemCountable(item.data)\r\n};\r\nvar updateItemIndices = function(items) {\r\n items.forEach((function(item, index) {\r\n item.rowIndex = index\r\n }));\r\n return items\r\n};\r\nvar VirtualScrollingDataSourceAdapterExtender = function() {\r\n var _updateLoading = function(that) {\r\n var beginPageIndex = that._virtualScrollController.beginPageIndex(-1);\r\n if (isVirtualMode(that)) {\r\n if (beginPageIndex < 0 || that.viewportSize() >= 0 && that.getViewportItemIndex() >= 0 && (beginPageIndex * that.pageSize() > that.getViewportItemIndex() || beginPageIndex * that.pageSize() + that.itemsCount() < that.getViewportItemIndex() + that.viewportSize()) && that._dataSource.isLoading()) {\r\n if (!that._isLoading) {\r\n that._isLoading = true;\r\n that.loadingChanged.fire(true)\r\n }\r\n } else if (that._isLoading) {\r\n that._isLoading = false;\r\n that.loadingChanged.fire(false)\r\n }\r\n }\r\n };\r\n var result = {\r\n init: function() {\r\n this.callBase.apply(this, arguments);\r\n this._items = [];\r\n this._isLoaded = true;\r\n this._loadPageCount = 1;\r\n this._virtualScrollController = new VirtualScrollController(this.component, this._getVirtualScrollDataOptions())\r\n },\r\n _getVirtualScrollDataOptions: function() {\r\n var that = this;\r\n return {\r\n pageSize: function() {\r\n return that.pageSize()\r\n },\r\n totalItemsCount: function() {\r\n return that.totalItemsCount()\r\n },\r\n hasKnownLastPage: function() {\r\n return that.hasKnownLastPage()\r\n },\r\n pageIndex: function(index) {\r\n return that._dataSource.pageIndex(index)\r\n },\r\n isLoading: function() {\r\n return that._dataSource.isLoading() && !that.isCustomLoading()\r\n },\r\n pageCount: function() {\r\n return that.pageCount()\r\n },\r\n load: function() {\r\n return that._dataSource.load()\r\n },\r\n updateLoading: function() {\r\n _updateLoading(that)\r\n },\r\n itemsCount: function() {\r\n return that.itemsCount(true)\r\n },\r\n items: function() {\r\n return that._dataSource.items()\r\n },\r\n viewportItems: function(items) {\r\n if (items) {\r\n that._items = items\r\n }\r\n return that._items\r\n },\r\n onChanged: function(e) {\r\n that.changed.fire(e)\r\n },\r\n changingDuration: function(e) {\r\n if (that.isLoading()) {\r\n return LOAD_TIMEOUT\r\n }\r\n return that._renderTime || 0\r\n }\r\n }\r\n },\r\n _handleLoadingChanged: function(isLoading) {\r\n if (this.option(NEW_SCROLLING_MODE)) {\r\n this.callBase.apply(this, arguments);\r\n return\r\n }\r\n if (!isVirtualMode(this) || this._isLoadingAll) {\r\n this._isLoading = isLoading;\r\n this.callBase.apply(this, arguments)\r\n }\r\n if (isLoading) {\r\n this._startLoadTime = new Date\r\n } else {\r\n this._startLoadTime = void 0\r\n }\r\n },\r\n _handleLoadError: function() {\r\n if (!this.option(NEW_SCROLLING_MODE)) {\r\n this._isLoading = false;\r\n this.loadingChanged.fire(false)\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _handleDataChanged: function(e) {\r\n if (this.option(NEW_SCROLLING_MODE)) {\r\n this.callBase.apply(this, arguments);\r\n return\r\n }\r\n var callBase = this.callBase.bind(this);\r\n this._virtualScrollController.handleDataChanged(callBase, e)\r\n },\r\n _customizeRemoteOperations: function(options, operationTypes) {\r\n var newMode = this.option(NEW_SCROLLING_MODE);\r\n if ((isVirtualMode(this) || isAppendMode(this) && newMode) && !operationTypes.reload && (operationTypes.skip || newMode) && this._renderTime < this.option(\"scrolling.renderingThreshold\")) {\r\n options.delay = void 0\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n items: function() {\r\n if (this.option(NEW_SCROLLING_MODE)) {\r\n return this._dataSource.items()\r\n }\r\n return this._items\r\n },\r\n itemsCount: function(isBase) {\r\n if (isBase) {\r\n return this.callBase()\r\n }\r\n return this._virtualScrollController.itemsCount()\r\n },\r\n load: function(loadOptions) {\r\n if (this.option(NEW_SCROLLING_MODE) || loadOptions) {\r\n return this.callBase(loadOptions)\r\n }\r\n return this._virtualScrollController.load()\r\n },\r\n isLoading: function() {\r\n return this._isLoading\r\n },\r\n isLoaded: function() {\r\n return this._dataSource.isLoaded() && this._isLoaded\r\n },\r\n resetPagesCache: function(isLiveUpdate) {\r\n if (!isLiveUpdate) {\r\n this._virtualScrollController.reset(true)\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _changeRowExpandCore: function() {\r\n var result = this.callBase.apply(this, arguments);\r\n if (this.option(NEW_SCROLLING_MODE)) {\r\n return result\r\n }\r\n this.resetPagesCache();\r\n _updateLoading(this);\r\n return result\r\n },\r\n reload: function() {\r\n this._dataSource.pageIndex(this.pageIndex());\r\n var virtualScrollController = this._virtualScrollController;\r\n if (!this.option(NEW_SCROLLING_MODE) && virtualScrollController) {\r\n var d = new Deferred;\r\n this.callBase.apply(this, arguments).done((function(r) {\r\n var delayDeferred = virtualScrollController.getDelayDeferred();\r\n if (delayDeferred) {\r\n delayDeferred.done(d.resolve).fail(d.reject)\r\n } else {\r\n d.resolve(r)\r\n }\r\n })).fail(d.reject);\r\n return d\r\n } else {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n },\r\n refresh: function(options, operationTypes) {\r\n if (!this.option(NEW_SCROLLING_MODE)) {\r\n var storeLoadOptions = options.storeLoadOptions;\r\n var dataSource = this._dataSource;\r\n if (operationTypes.reload) {\r\n this._virtualScrollController.reset();\r\n dataSource.items().length = 0;\r\n this._isLoaded = false;\r\n _updateLoading(this);\r\n this._isLoaded = true;\r\n if (isAppendMode(this)) {\r\n this.pageIndex(0);\r\n dataSource.pageIndex(0);\r\n storeLoadOptions.pageIndex = 0;\r\n options.pageIndex = 0;\r\n storeLoadOptions.skip = 0\r\n } else {\r\n dataSource.pageIndex(this.pageIndex());\r\n if (dataSource.paginate()) {\r\n options.pageIndex = this.pageIndex();\r\n storeLoadOptions.skip = this.pageIndex() * this.pageSize()\r\n }\r\n }\r\n } else if (isAppendMode(this) && storeLoadOptions.skip && this._skipCorrection < 0) {\r\n storeLoadOptions.skip += this._skipCorrection\r\n }\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n dispose: function() {\r\n this._virtualScrollController.dispose();\r\n this.callBase.apply(this, arguments)\r\n },\r\n loadPageCount: function(count) {\r\n if (!isDefined(count)) {\r\n return this._loadPageCount\r\n }\r\n this._loadPageCount = count\r\n },\r\n _handleDataLoading: function(options) {\r\n var loadPageCount = this.loadPageCount();\r\n options.loadPageCount = loadPageCount;\r\n if (this.option(NEW_SCROLLING_MODE) && loadPageCount > 1) {\r\n options.storeLoadOptions.take = loadPageCount * this.pageSize()\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _loadPageSize: function() {\r\n return this.callBase.apply(this, arguments) * this.loadPageCount()\r\n }\r\n };\r\n [\"beginPageIndex\", \"endPageIndex\"].forEach((function(name) {\r\n result[name] = function() {\r\n if (this.option(NEW_SCROLLING_MODE)) {\r\n var dataSource = this._dataSource;\r\n return dataSource.pageIndex.apply(dataSource, arguments)\r\n }\r\n var virtualScrollController = this._virtualScrollController;\r\n return virtualScrollController[name].apply(virtualScrollController, arguments)\r\n }\r\n }));\r\n [\"virtualItemsCount\", \"getContentOffset\", \"getVirtualContentSize\", \"setContentItemSizes\", \"setViewportPosition\", \"getViewportItemIndex\", \"setViewportItemIndex\", \"getItemIndexByPosition\", \"viewportSize\", \"viewportItemSize\", \"getItemSize\", \"getItemSizes\", \"pageIndex\", \"loadIfNeed\"].forEach((function(name) {\r\n result[name] = function() {\r\n var virtualScrollController = this._virtualScrollController;\r\n return virtualScrollController[name].apply(virtualScrollController, arguments)\r\n }\r\n }));\r\n return result\r\n}();\r\nvar VirtualScrollingRowsViewExtender = function() {\r\n var removeEmptyRows = function($emptyRows, className) {\r\n var tBodies = $emptyRows.toArray().map(row => $(row).parent(\".\" + className).get(0)).filter(row => row);\r\n if (tBodies.length) {\r\n $emptyRows = $(tBodies)\r\n }\r\n var rowCount = className === FREESPACE_CLASS ? $emptyRows.length - 1 : $emptyRows.length;\r\n for (var i = 0; i < rowCount; i++) {\r\n $emptyRows.eq(i).remove()\r\n }\r\n };\r\n return {\r\n init: function() {\r\n var _dataController$state;\r\n var dataController = this.getController(\"data\");\r\n this.callBase();\r\n dataController.pageChanged.add(() => {\r\n this.scrollToPage(dataController.pageIndex())\r\n });\r\n dataController.dataSourceChanged.add(() => {\r\n !this._scrollTop && this._scrollToCurrentPageOnResize()\r\n });\r\n null === (_dataController$state = dataController.stateLoaded) || void 0 === _dataController$state ? void 0 : _dataController$state.add(() => {\r\n this._scrollToCurrentPageOnResize()\r\n });\r\n this._scrollToCurrentPageOnResize()\r\n },\r\n _scrollToCurrentPageOnResize: function() {\r\n var dataController = this.getController(\"data\");\r\n if (dataController.pageIndex() > 0) {\r\n var resizeHandler = () => {\r\n this.resizeCompleted.remove(resizeHandler);\r\n this.scrollToPage(dataController.pageIndex())\r\n };\r\n this.resizeCompleted.add(resizeHandler)\r\n }\r\n },\r\n scrollToPage: function(pageIndex) {\r\n var dataController = this._dataController;\r\n var pageSize = dataController ? dataController.pageSize() : 0;\r\n var scrollPosition;\r\n if (isVirtualMode(this) || isAppendMode(this)) {\r\n var itemSize = dataController.getItemSize();\r\n var itemSizes = dataController.getItemSizes();\r\n var itemIndex = pageIndex * pageSize;\r\n scrollPosition = itemIndex * itemSize;\r\n for (var index in itemSizes) {\r\n if (index < itemIndex) {\r\n scrollPosition += itemSizes[index] - itemSize\r\n }\r\n }\r\n } else {\r\n scrollPosition = 0\r\n }\r\n this.scrollTo({\r\n y: scrollPosition,\r\n x: this._scrollLeft\r\n })\r\n },\r\n renderDelayedTemplates: function(e) {\r\n this._updateContentPosition(true);\r\n this.callBase.apply(this, arguments)\r\n },\r\n _renderCore: function(e) {\r\n var that = this;\r\n var startRenderTime = new Date;\r\n that.callBase.apply(that, arguments);\r\n var dataSource = that._dataController._dataSource;\r\n if (dataSource && e) {\r\n var itemCount = e.items ? e.items.length : 20;\r\n var viewportSize = that._dataController.viewportSize() || 20;\r\n if (isVirtualRowRendering(that) && itemCount > 0) {\r\n dataSource._renderTime = (new Date - startRenderTime) * viewportSize / itemCount\r\n } else {\r\n dataSource._renderTime = new Date - startRenderTime\r\n }\r\n }\r\n },\r\n _getRowElements: function(tableElement) {\r\n var $rows = this.callBase(tableElement);\r\n return $rows && $rows.not(\".\" + VIRTUAL_ROW_CLASS)\r\n },\r\n _removeRowsElements: function(contentTable, removeCount, changeType) {\r\n var rowElements = this._getRowElements(contentTable).toArray();\r\n if (\"append\" === changeType) {\r\n rowElements = rowElements.slice(0, removeCount)\r\n } else {\r\n rowElements = rowElements.slice(-removeCount)\r\n }\r\n var errorHandlingController = this.getController(\"errorHandling\");\r\n rowElements.map(rowElement => {\r\n var $rowElement = $(rowElement);\r\n errorHandlingController && errorHandlingController.removeErrorRow($rowElement.next());\r\n $rowElement.remove()\r\n })\r\n },\r\n _restoreErrorRow: function(contentTable) {\r\n var editingController = this.getController(\"editing\");\r\n editingController && editingController.hasChanges() && this._getRowElements(contentTable).each((_, item) => {\r\n var rowOptions = $(item).data(\"options\");\r\n if (rowOptions) {\r\n var change = editingController.getChangeByKey(rowOptions.key);\r\n change && editingController._showErrorRow(change)\r\n }\r\n })\r\n },\r\n _updateContent: function(tableElement, change) {\r\n var $freeSpaceRowElements;\r\n var contentElement = this._findContentElement();\r\n var changeType = change && change.changeType;\r\n if (\"append\" === changeType || \"prepend\" === changeType) {\r\n var contentTable = contentElement.children().first();\r\n var $tBodies = this._getBodies(tableElement);\r\n if (1 === $tBodies.length) {\r\n this._getBodies(contentTable)[\"append\" === changeType ? \"append\" : \"prepend\"]($tBodies.children())\r\n } else {\r\n $tBodies[\"append\" === changeType ? \"appendTo\" : \"prependTo\"](contentTable)\r\n }\r\n tableElement.remove();\r\n $freeSpaceRowElements = this._getFreeSpaceRowElements(contentTable);\r\n removeEmptyRows($freeSpaceRowElements, FREESPACE_CLASS);\r\n if (change.removeCount) {\r\n this._removeRowsElements(contentTable, change.removeCount, changeType)\r\n }\r\n this._restoreErrorRow(contentTable)\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n this._updateBottomLoading()\r\n },\r\n _addVirtualRow: function($table, isFixed, location, position) {\r\n if (!position) {\r\n return\r\n }\r\n var $virtualRow = this._createEmptyRow(VIRTUAL_ROW_CLASS, isFixed, position);\r\n $virtualRow = this._wrapRowIfNeed($table, $virtualRow);\r\n this._appendEmptyRow($table, $virtualRow, location)\r\n },\r\n _getRowHeights: function() {\r\n var rowHeights = this._getRowElements(this._tableElement).toArray().map((function(row) {\r\n return getBoundingRect(row).height\r\n }));\r\n return rowHeights\r\n },\r\n _correctRowHeights: function(rowHeights) {\r\n var dataController = this._dataController;\r\n var dataSource = dataController._dataSource;\r\n var correctedRowHeights = [];\r\n var visibleRows = dataController.getVisibleRows();\r\n var itemSize = 0;\r\n var firstCountableItem = true;\r\n for (var i = 0; i < rowHeights.length; i++) {\r\n var currentItem = visibleRows[i];\r\n if (!isDefined(currentItem)) {\r\n continue\r\n }\r\n if (isItemCountableByDataSource(currentItem, dataSource)) {\r\n if (firstCountableItem) {\r\n firstCountableItem = false\r\n } else {\r\n correctedRowHeights.push(itemSize);\r\n itemSize = 0\r\n }\r\n }\r\n itemSize += rowHeights[i]\r\n }\r\n itemSize > 0 && correctedRowHeights.push(itemSize);\r\n return correctedRowHeights\r\n },\r\n _updateContentPosition: function(isRender) {\r\n var dataController = this._dataController;\r\n var rowHeight = this._rowHeight || 20;\r\n dataController.viewportItemSize(rowHeight);\r\n if (isVirtualMode(this) || isVirtualRowRendering(this)) {\r\n if (!isRender) {\r\n var rowHeights = this._getRowHeights();\r\n var correctedRowHeights = this._correctRowHeights(rowHeights);\r\n dataController.setContentItemSizes(correctedRowHeights)\r\n }\r\n var top = dataController.getContentOffset(\"begin\");\r\n var bottom = dataController.getContentOffset(\"end\");\r\n var $tables = this.getTableElements();\r\n var $virtualRows = $tables.children(\"tbody\").children(\".\" + VIRTUAL_ROW_CLASS);\r\n removeEmptyRows($virtualRows, VIRTUAL_ROW_CLASS);\r\n $tables.each((index, element) => {\r\n var isFixed = index > 0;\r\n this._isFixedTableRendering = isFixed;\r\n this._addVirtualRow($(element), isFixed, \"top\", top);\r\n this._addVirtualRow($(element), isFixed, \"bottom\", bottom);\r\n this._isFixedTableRendering = false\r\n })\r\n }\r\n },\r\n _isTableLinesDisplaysCorrect: function(table) {\r\n var hasColumnLines = table.find(\".\" + COLUMN_LINES_CLASS).length > 0;\r\n return hasColumnLines === this.option(\"showColumnLines\")\r\n },\r\n _isColumnElementsEqual: function($columns, $virtualColumns) {\r\n var result = $columns.length === $virtualColumns.length;\r\n if (result) {\r\n each($columns, (function(index, element) {\r\n if (element.style.width !== $virtualColumns[index].style.width) {\r\n result = false;\r\n return result\r\n }\r\n }))\r\n }\r\n return result\r\n },\r\n _renderVirtualTableContent: function(container, height) {\r\n var columns = this._columnsController.getVisibleColumns();\r\n var html = this._createColGroup(columns).prop(\"outerHTML\");\r\n var freeSpaceCellsHtml = \"\";\r\n var columnLinesClass = this.option(\"showColumnLines\") ? COLUMN_LINES_CLASS : \"\";\r\n var createFreeSpaceRowHtml = function(height) {\r\n return \"\" + freeSpaceCellsHtml + \"\"\r\n };\r\n for (var i = 0; i < columns.length; i++) {\r\n var classes = this._getCellClasses(columns[i]);\r\n var classString = classes.length ? \" class='\" + classes.join(\" \") + \"'\" : \"\";\r\n freeSpaceCellsHtml += \"\"\r\n }\r\n while (height > PIXELS_LIMIT) {\r\n html += createFreeSpaceRowHtml(PIXELS_LIMIT);\r\n height -= PIXELS_LIMIT\r\n }\r\n html += createFreeSpaceRowHtml(height);\r\n container.addClass(this.addWidgetPrefix(TABLE_CLASS));\r\n container.html(html)\r\n },\r\n _getCellClasses: function(column) {\r\n var classes = [];\r\n var cssClass = column.cssClass;\r\n var isExpandColumn = \"expand\" === column.command;\r\n cssClass && classes.push(cssClass);\r\n isExpandColumn && classes.push(this.addWidgetPrefix(GROUP_SPACE_CLASS));\r\n return classes\r\n },\r\n _findBottomLoadPanel: function($contentElement) {\r\n var $element = $contentElement || this.element();\r\n var $bottomLoadPanel = $element && $element.find(\".\" + this.addWidgetPrefix(BOTTOM_LOAD_PANEL_CLASS));\r\n if ($bottomLoadPanel && $bottomLoadPanel.length) {\r\n return $bottomLoadPanel\r\n }\r\n },\r\n _updateBottomLoading: function() {\r\n var virtualMode = isVirtualMode(this);\r\n var appendMode = isAppendMode(this);\r\n var showBottomLoading = !this._dataController.hasKnownLastPage() && this._dataController.isLoaded() && (virtualMode || appendMode);\r\n var $contentElement = this._findContentElement();\r\n var bottomLoadPanelElement = this._findBottomLoadPanel($contentElement);\r\n if (showBottomLoading) {\r\n if (!bottomLoadPanelElement) {\r\n $(\"
\").addClass(this.addWidgetPrefix(BOTTOM_LOAD_PANEL_CLASS)).append(this._createComponent($(\"
\"), LoadIndicator).$element()).appendTo($contentElement)\r\n }\r\n } else if (bottomLoadPanelElement) {\r\n bottomLoadPanelElement.remove()\r\n }\r\n },\r\n _handleScroll: function(e) {\r\n var that = this;\r\n if (that._hasHeight && that._rowHeight) {\r\n that._dataController.setViewportPosition(e.scrollOffset.top)\r\n }\r\n that.callBase.apply(that, arguments)\r\n },\r\n _needUpdateRowHeight: function(itemsCount) {\r\n var that = this;\r\n return that.callBase.apply(that, arguments) || itemsCount > 0 && that.option(\"scrolling.mode\") === SCROLLING_MODE_INFINITE && that.option(\"scrolling.rowRenderingMode\") !== SCROLLING_MODE_VIRTUAL\r\n },\r\n _updateRowHeight: function() {\r\n this.callBase.apply(this, arguments);\r\n if (this._rowHeight) {\r\n this._updateContentPosition();\r\n var viewportHeight = this._hasHeight ? this.element().outerHeight() : $(getWindow()).outerHeight();\r\n var dataController = this._dataController;\r\n dataController.viewportSize(Math.ceil(viewportHeight / this._rowHeight));\r\n if (this.option(NEW_SCROLLING_MODE) && !isDefined(dataController._loadViewportParams)) {\r\n var viewportSize = dataController.viewportSize();\r\n var viewportIsNotFilled = viewportSize > dataController.items().length && (isAppendMode(this) || dataController.totalItemsCount() > viewportSize);\r\n viewportIsNotFilled && dataController.loadViewport()\r\n }\r\n }\r\n },\r\n updateFreeSpaceRowHeight: function() {\r\n var result = this.callBase.apply(this, arguments);\r\n if (result) {\r\n this._updateContentPosition()\r\n }\r\n return result\r\n },\r\n setLoading: function(isLoading, messageText) {\r\n var dataController = this._dataController;\r\n var hasBottomLoadPanel = dataController.pageIndex() > 0 && dataController.isLoaded() && !!this._findBottomLoadPanel();\r\n if (this.option(NEW_SCROLLING_MODE) && isLoading && dataController.isViewportChanging()) {\r\n return\r\n }\r\n if (hasBottomLoadPanel) {\r\n isLoading = false\r\n }\r\n this.callBase.call(this, isLoading, messageText)\r\n },\r\n _resizeCore: function() {\r\n var that = this;\r\n var $element = that.element();\r\n that.callBase();\r\n if (that.component.$element() && !that._windowScroll && $element.closest(getWindow().document).length) {\r\n that._windowScroll = subscribeToExternalScrollers($element, (function(scrollPos) {\r\n if (!that._hasHeight && that._rowHeight) {\r\n that._dataController.setViewportPosition(scrollPos)\r\n }\r\n }), that.component.$element());\r\n that.on(\"disposing\", (function() {\r\n that._windowScroll.dispose()\r\n }))\r\n }\r\n that.loadIfNeed()\r\n },\r\n loadIfNeed: function() {\r\n var _dataController$loadI;\r\n var dataController = this._dataController;\r\n null === dataController || void 0 === dataController ? void 0 : null === (_dataController$loadI = dataController.loadIfNeed) || void 0 === _dataController$loadI ? void 0 : _dataController$loadI.call(dataController)\r\n },\r\n setColumnWidths: function(widths) {\r\n var scrollable = this.getScrollable();\r\n var $content;\r\n this.callBase.apply(this, arguments);\r\n if (\"virtual\" === this.option(\"scrolling.mode\")) {\r\n $content = scrollable ? $(scrollable.content()) : this.element();\r\n this.callBase(widths, $content.children(\".\" + this.addWidgetPrefix(CONTENT_CLASS)).children(\":not(.\" + this.addWidgetPrefix(TABLE_CONTENT_CLASS) + \")\"))\r\n }\r\n },\r\n dispose: function() {\r\n clearTimeout(this._scrollTimeoutID);\r\n this.callBase()\r\n }\r\n }\r\n}();\r\nexport var virtualScrollingModule = {\r\n defaultOptions: function() {\r\n return {\r\n scrolling: {\r\n timeout: 300,\r\n updateTimeout: 300,\r\n minTimeout: 0,\r\n renderingThreshold: 100,\r\n removeInvisiblePages: true,\r\n rowPageSize: 5,\r\n mode: \"standard\",\r\n preloadEnabled: false,\r\n rowRenderingMode: \"standard\",\r\n loadTwoPagesOnStart: false,\r\n newMode: false,\r\n minGap: 1\r\n }\r\n }\r\n },\r\n extenders: {\r\n dataSourceAdapter: VirtualScrollingDataSourceAdapterExtender,\r\n controllers: {\r\n data: function() {\r\n var members = {\r\n _refreshDataSource: function() {\r\n var baseResult = this.callBase.apply(this, arguments) || (new Deferred).resolve().promise();\r\n baseResult.done(this.initVirtualRows.bind(this));\r\n return baseResult\r\n },\r\n getRowPageSize: function() {\r\n var rowPageSize = this.option(\"scrolling.rowPageSize\");\r\n var pageSize = this.pageSize();\r\n return pageSize && pageSize < rowPageSize ? pageSize : rowPageSize\r\n },\r\n reload: function() {\r\n var rowsScrollController = this._rowsScrollController || this._dataSource;\r\n var itemIndex = rowsScrollController && rowsScrollController.getItemIndexByPosition();\r\n var result = this.callBase.apply(this, arguments);\r\n return result && result.done(() => {\r\n if (isVirtualMode(this) || isVirtualRowRendering(this)) {\r\n var rowIndexOffset = this.getRowIndexOffset();\r\n var rowIndex = Math.floor(itemIndex) - rowIndexOffset;\r\n var component = this.component;\r\n var scrollable = component.getScrollable && component.getScrollable();\r\n var isSortingOperation = this.dataSource().operationTypes().sorting;\r\n if (scrollable && !isSortingOperation) {\r\n var rowElement = component.getRowElement(rowIndex);\r\n var $rowElement = rowElement && rowElement[0] && $(rowElement[0]);\r\n var top = $rowElement && $rowElement.position().top;\r\n var isChromeLatest = browser.chrome && browser.version >= 91;\r\n var allowedTopOffset = browser.mozilla || browser.msie || isChromeLatest ? 1 : 0;\r\n if (top > allowedTopOffset) {\r\n top = Math.round(top + $rowElement.outerHeight() * (itemIndex % 1));\r\n scrollable.scrollTo({\r\n y: top\r\n })\r\n }\r\n }\r\n }\r\n })\r\n },\r\n initVirtualRows: function() {\r\n var virtualRowsRendering = isVirtualRowRendering(this);\r\n if (\"virtual\" !== this.option(\"scrolling.mode\") && true !== virtualRowsRendering || false === virtualRowsRendering || !this.option(\"scrolling.rowPageSize\")) {\r\n this._visibleItems = null;\r\n this._rowsScrollController = null;\r\n return\r\n }\r\n var pageIndex = !isVirtualMode(this) && this.pageIndex() >= this.pageCount() ? this.pageCount() - 1 : this.pageIndex();\r\n this._rowPageIndex = Math.ceil(pageIndex * this.pageSize() / this.getRowPageSize());\r\n this._uncountableItemCount = 0;\r\n this._visibleItems = this.option(NEW_SCROLLING_MODE) ? null : [];\r\n this._rowsScrollController = new VirtualScrollController(this.component, this._getRowsScrollDataOptions(), true);\r\n this._viewportChanging = false;\r\n this._rowsScrollController.positionChanged.add(() => {\r\n var _this$_dataSource;\r\n if (this.option(NEW_SCROLLING_MODE)) {\r\n this._viewportChanging = true;\r\n this.loadViewport();\r\n this._viewportChanging = false;\r\n return\r\n }\r\n null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource ? void 0 : _this$_dataSource.setViewportItemIndex(this._rowsScrollController.getViewportItemIndex())\r\n });\r\n if (this.isLoaded() && !this.option(NEW_SCROLLING_MODE)) {\r\n this._rowsScrollController.load()\r\n }\r\n },\r\n isViewportChanging: function() {\r\n return this._viewportChanging\r\n },\r\n _getRowsScrollDataOptions: function() {\r\n var that = this;\r\n var isItemCountable = function(item) {\r\n return isItemCountableByDataSource(item, that._dataSource)\r\n };\r\n return {\r\n pageSize: function() {\r\n return that.getRowPageSize()\r\n },\r\n totalItemsCount: function() {\r\n if (that.option(NEW_SCROLLING_MODE)) {\r\n return that.totalItemsCount() + that._uncountableItemCount\r\n }\r\n return isVirtualMode(that) ? that.totalItemsCount() : that._items.filter(isItemCountable).length\r\n },\r\n hasKnownLastPage: function() {\r\n return true\r\n },\r\n pageIndex: function(index) {\r\n if (void 0 !== index) {\r\n that._rowPageIndex = index\r\n }\r\n return that._rowPageIndex\r\n },\r\n isLoading: function() {\r\n return that.isLoading()\r\n },\r\n pageCount: function() {\r\n var pageCount = Math.ceil(this.totalItemsCount() / this.pageSize());\r\n return pageCount ? pageCount : 1\r\n },\r\n load: function() {\r\n if (that._rowsScrollController.pageIndex() >= this.pageCount()) {\r\n that._rowPageIndex = this.pageCount() - 1;\r\n that._rowsScrollController.pageIndex(that._rowPageIndex)\r\n }\r\n if (!this.items().length && this.totalItemsCount()) {\r\n return\r\n }\r\n that._rowsScrollController.handleDataChanged(change => {\r\n change = change || {};\r\n change.changeType = change.changeType || \"refresh\";\r\n change.items = change.items || that._visibleItems;\r\n that._visibleItems.forEach((item, index) => {\r\n item.rowIndex = index\r\n });\r\n that._fireChanged(change)\r\n })\r\n },\r\n updateLoading: function() {},\r\n itemsCount: function() {\r\n return this.items().filter(isItemCountable).length\r\n },\r\n correctCount: function(items, count, fromEnd) {\r\n return _correctCount(items, count, fromEnd, (item, isNextAfterLast, fromEnd) => {\r\n if (item.isNewRow) {\r\n return isNextAfterLast && !fromEnd\r\n }\r\n if (isNextAfterLast && fromEnd) {\r\n return !item.isNewRow\r\n }\r\n return isItemCountable(item)\r\n })\r\n },\r\n items: function(countableOnly) {\r\n var dataSource = that.dataSource();\r\n var virtualItemsCount = dataSource && dataSource.virtualItemsCount();\r\n var begin = virtualItemsCount ? virtualItemsCount.begin : 0;\r\n var rowPageSize = that.getRowPageSize();\r\n var skip = that._rowPageIndex * rowPageSize - begin;\r\n var take = rowPageSize;\r\n var result = that._items;\r\n if (skip < 0) {\r\n return []\r\n }\r\n if (skip) {\r\n skip = this.correctCount(result, skip);\r\n result = result.slice(skip)\r\n }\r\n if (take) {\r\n take = this.correctCount(result, take);\r\n result = result.slice(0, take)\r\n }\r\n return countableOnly ? result.filter(isItemCountable) : result\r\n },\r\n viewportItems: function(items) {\r\n if (items && !that.option(NEW_SCROLLING_MODE)) {\r\n that._visibleItems = items\r\n }\r\n return that._visibleItems\r\n },\r\n onChanged: function() {},\r\n changingDuration: function(e) {\r\n var dataSource = that.dataSource();\r\n if (dataSource.isLoading() && !that.option(NEW_SCROLLING_MODE)) {\r\n return LOAD_TIMEOUT\r\n }\r\n return (null === dataSource || void 0 === dataSource ? void 0 : dataSource._renderTime) || 0\r\n }\r\n }\r\n },\r\n _updateItemsCore: function(change) {\r\n var delta = this.getRowIndexDelta();\r\n this.callBase.apply(this, arguments);\r\n if (this.option(NEW_SCROLLING_MODE) && isVirtualRowRendering(this)) {\r\n return\r\n }\r\n var rowsScrollController = this._rowsScrollController;\r\n if (rowsScrollController) {\r\n var visibleItems = this._visibleItems;\r\n var isRefresh = \"refresh\" === change.changeType || change.isLiveUpdate;\r\n if (\"append\" === change.changeType && change.items && !change.items.length) {\r\n return\r\n }\r\n if (isRefresh || \"append\" === change.changeType || \"prepend\" === change.changeType) {\r\n change.cancel = true;\r\n isRefresh && rowsScrollController.reset(true);\r\n rowsScrollController.load()\r\n } else {\r\n if (\"update\" === change.changeType) {\r\n change.rowIndices.forEach((rowIndex, index) => {\r\n var changeType = change.changeTypes[index];\r\n var newItem = change.items[index];\r\n if (\"update\" === changeType) {\r\n visibleItems[rowIndex] = newItem\r\n } else if (\"insert\" === changeType) {\r\n visibleItems.splice(rowIndex, 0, newItem)\r\n } else if (\"remove\" === changeType) {\r\n visibleItems.splice(rowIndex, 1)\r\n }\r\n })\r\n } else {\r\n visibleItems.forEach((item, index) => {\r\n visibleItems[index] = this._items[index + delta] || visibleItems[index]\r\n });\r\n change.items = visibleItems\r\n }\r\n updateItemIndices(visibleItems)\r\n }\r\n }\r\n },\r\n _updateLoadViewportParams: function() {\r\n this._loadViewportParams = this._rowsScrollController.getViewportParams()\r\n },\r\n _afterProcessItems: function(items, change) {\r\n this._uncountableItemCount = 0;\r\n if (isDefined(this._loadViewportParams)) {\r\n this._uncountableItemCount = items.filter(item => !isItemCountableByDataSource(item, this._dataSource)).length;\r\n this._updateLoadViewportParams();\r\n var {\r\n skipForCurrentPage: skipForCurrentPage\r\n } = this.getLoadPageParams();\r\n change.repaintChangesOnly = \"refresh\" === change.changeType;\r\n return items.slice(skipForCurrentPage, skipForCurrentPage + this._loadViewportParams.take)\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _applyChange: function(change) {\r\n var that = this;\r\n var items = change.items;\r\n var changeType = change.changeType;\r\n var removeCount = change.removeCount;\r\n if (removeCount) {\r\n var fromEnd = \"prepend\" === changeType;\r\n removeCount = _correctCount(that._items, removeCount, fromEnd, (function(item, isNextAfterLast) {\r\n return \"data\" === item.rowType && !item.isNewRow || \"group\" === item.rowType && (that._dataSource.isGroupItemCountable(item.data) || isNextAfterLast)\r\n }));\r\n change.removeCount = removeCount\r\n }\r\n switch (changeType) {\r\n case \"prepend\":\r\n that._items.unshift.apply(that._items, items);\r\n if (removeCount) {\r\n that._items.splice(-removeCount)\r\n }\r\n break;\r\n case \"append\":\r\n that._items.push.apply(that._items, items);\r\n if (removeCount) {\r\n that._items.splice(0, removeCount)\r\n }\r\n break;\r\n default:\r\n that.callBase(change)\r\n }\r\n },\r\n items: function(allItems) {\r\n return allItems ? this._items : this._visibleItems || this._items\r\n },\r\n getRowIndexDelta: function() {\r\n var visibleItems = this._visibleItems;\r\n var delta = 0;\r\n if (visibleItems && visibleItems[0]) {\r\n delta = this._items.indexOf(visibleItems[0])\r\n }\r\n return delta < 0 ? 0 : delta\r\n },\r\n getRowIndexOffset: function(byLoadedRows) {\r\n var offset = 0;\r\n var dataSource = this.dataSource();\r\n var rowsScrollController = this._rowsScrollController;\r\n var virtualMode = isVirtualMode(this);\r\n var appendMode = isAppendMode(this);\r\n var newMode = this.option(NEW_SCROLLING_MODE);\r\n if (rowsScrollController && !byLoadedRows) {\r\n if (this.option(NEW_SCROLLING_MODE) && isDefined(this._loadViewportParams)) {\r\n var {\r\n skipForCurrentPage: skipForCurrentPage,\r\n pageIndex: pageIndex\r\n } = this.getLoadPageParams();\r\n offset = pageIndex * this.pageSize() + skipForCurrentPage\r\n } else {\r\n offset = rowsScrollController.beginPageIndex() * rowsScrollController.pageSize()\r\n }\r\n } else if ((virtualMode || appendMode && newMode) && dataSource) {\r\n offset = dataSource.beginPageIndex() * dataSource.pageSize()\r\n }\r\n return offset\r\n },\r\n viewportSize: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n var dataSource = this._dataSource;\r\n var result = null === rowsScrollController || void 0 === rowsScrollController ? void 0 : rowsScrollController.viewportSize.apply(rowsScrollController, arguments);\r\n if (this.option(NEW_SCROLLING_MODE)) {\r\n return result\r\n }\r\n return null === dataSource || void 0 === dataSource ? void 0 : dataSource.viewportSize.apply(dataSource, arguments)\r\n },\r\n viewportItemSize: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n var dataSource = this._dataSource;\r\n var result = null === rowsScrollController || void 0 === rowsScrollController ? void 0 : rowsScrollController.viewportItemSize.apply(rowsScrollController, arguments);\r\n if (this.option(NEW_SCROLLING_MODE)) {\r\n return result\r\n }\r\n return null === dataSource || void 0 === dataSource ? void 0 : dataSource.viewportItemSize.apply(dataSource, arguments)\r\n },\r\n setViewportPosition: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n var dataSource = this._dataSource;\r\n if (rowsScrollController) {\r\n rowsScrollController.setViewportPosition.apply(rowsScrollController, arguments)\r\n } else {\r\n null === dataSource || void 0 === dataSource ? void 0 : dataSource.setViewportPosition.apply(dataSource, arguments)\r\n }\r\n },\r\n setContentItemSizes: function(sizes) {\r\n var rowsScrollController = this._rowsScrollController;\r\n var dataSource = this._dataSource;\r\n var result = null === rowsScrollController || void 0 === rowsScrollController ? void 0 : rowsScrollController.setContentItemSizes(sizes);\r\n if (this.option(NEW_SCROLLING_MODE)) {\r\n return result\r\n }\r\n return null === dataSource || void 0 === dataSource ? void 0 : dataSource.setContentItemSizes(sizes)\r\n },\r\n getLoadPageParams: function() {\r\n var viewportParams = this._loadViewportParams;\r\n var pageIndex = Math.floor(viewportParams.skip / this.pageSize());\r\n var skipForCurrentPage = viewportParams.skip - pageIndex * this.pageSize();\r\n var loadPageCount = Math.ceil((skipForCurrentPage + viewportParams.take) / this.pageSize());\r\n return {\r\n pageIndex: pageIndex,\r\n loadPageCount: loadPageCount,\r\n skipForCurrentPage: skipForCurrentPage\r\n }\r\n },\r\n loadViewport: function() {\r\n if (isVirtualMode(this) || isAppendMode(this)) {\r\n this._updateLoadViewportParams();\r\n var {\r\n pageIndex: pageIndex,\r\n loadPageCount: loadPageCount\r\n } = this.getLoadPageParams();\r\n var dataSourceAdapter = this._dataSource;\r\n if (pageIndex !== dataSourceAdapter.pageIndex() || loadPageCount !== dataSourceAdapter.loadPageCount()) {\r\n dataSourceAdapter.pageIndex(pageIndex);\r\n dataSourceAdapter.loadPageCount(loadPageCount);\r\n this.load()\r\n } else if (!this._isLoading) {\r\n this.updateItems()\r\n }\r\n }\r\n },\r\n loadIfNeed: function() {\r\n if (this.option(NEW_SCROLLING_MODE)) {\r\n return\r\n }\r\n var rowsScrollController = this._rowsScrollController;\r\n rowsScrollController && rowsScrollController.loadIfNeed();\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.loadIfNeed()\r\n },\r\n getItemSize: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n if (rowsScrollController) {\r\n return rowsScrollController.getItemSize.apply(rowsScrollController, arguments)\r\n }\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.getItemSize.apply(dataSource, arguments)\r\n },\r\n getItemSizes: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n if (rowsScrollController) {\r\n return rowsScrollController.getItemSizes.apply(rowsScrollController, arguments)\r\n }\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.getItemSizes.apply(dataSource, arguments)\r\n },\r\n getContentOffset: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n if (rowsScrollController) {\r\n return rowsScrollController.getContentOffset.apply(rowsScrollController, arguments)\r\n }\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.getContentOffset.apply(dataSource, arguments)\r\n },\r\n refresh: function(options) {\r\n var dataSource = this._dataSource;\r\n if (dataSource && options && options.load && isAppendMode(this)) {\r\n dataSource.resetCurrentTotalCount()\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n dispose: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n rowsScrollController && rowsScrollController.dispose();\r\n this.callBase.apply(this, arguments)\r\n },\r\n topItemIndex: function() {\r\n var _this$_loadViewportPa;\r\n return null === (_this$_loadViewportPa = this._loadViewportParams) || void 0 === _this$_loadViewportPa ? void 0 : _this$_loadViewportPa.skip\r\n },\r\n bottomItemIndex: function() {\r\n var viewportParams = this._loadViewportParams;\r\n return viewportParams && viewportParams.skip + viewportParams.take\r\n },\r\n virtualItemsCount: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n if (rowsScrollController) {\r\n return rowsScrollController.virtualItemsCount.apply(rowsScrollController, arguments)\r\n }\r\n var dataSource = this._dataSource;\r\n return null === dataSource || void 0 === dataSource ? void 0 : dataSource.virtualItemsCount.apply(dataSource, arguments)\r\n }\r\n };\r\n gridCoreUtils.proxyMethod(members, \"getVirtualContentSize\");\r\n gridCoreUtils.proxyMethod(members, \"setViewportItemIndex\");\r\n return members\r\n }(),\r\n resizing: {\r\n resize: function() {\r\n var that = this;\r\n var callBase = that.callBase;\r\n var result;\r\n if (isVirtualMode(that) || isVirtualRowRendering(that)) {\r\n clearTimeout(that._resizeTimeout);\r\n var diff = new Date - that._lastTime;\r\n var updateTimeout = that.option(\"scrolling.updateTimeout\");\r\n if (that._lastTime && diff < updateTimeout) {\r\n result = new Deferred;\r\n that._resizeTimeout = setTimeout((function() {\r\n callBase.apply(that).done(result.resolve).fail(result.reject);\r\n that._lastTime = new Date\r\n }), updateTimeout);\r\n that._lastTime = new Date\r\n } else {\r\n result = callBase.apply(that);\r\n if (that._dataController.isLoaded()) {\r\n that._lastTime = new Date\r\n }\r\n }\r\n } else {\r\n result = callBase.apply(that)\r\n }\r\n return result\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n clearTimeout(this._resizeTimeout)\r\n }\r\n }\r\n },\r\n views: {\r\n rowsView: VirtualScrollingRowsViewExtender\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.column_state_mixin.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getDefaultAlignment\r\n} from \"../../core/utils/position\";\r\nvar COLUMN_INDICATORS_CLASS = \"dx-column-indicators\";\r\nvar GROUP_PANEL_ITEM_CLASS = \"dx-group-panel-item\";\r\nexport default {\r\n _applyColumnState: function(options) {\r\n var _that$component;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var columnAlignment = this._getColumnAlignment(options.column.alignment, rtlEnabled);\r\n var parameters = extend(true, {\r\n columnAlignment: columnAlignment\r\n }, options);\r\n var isGroupPanelItem = parameters.rootElement.hasClass(GROUP_PANEL_ITEM_CLASS);\r\n var $indicatorsContainer = this._createIndicatorContainer(parameters, isGroupPanelItem);\r\n var $span = $(\"\").addClass(this._getIndicatorClassName(options.name));\r\n var columnsController = null === (_that$component = this.component) || void 0 === _that$component ? void 0 : _that$component.getController(\"columns\");\r\n var indicatorAlignment = (null === columnsController || void 0 === columnsController ? void 0 : columnsController.getHeaderContentAlignment(columnAlignment)) || columnAlignment;\r\n parameters.container = $indicatorsContainer;\r\n parameters.indicator = $span;\r\n this._renderIndicator(parameters);\r\n $indicatorsContainer[(isGroupPanelItem || !options.showColumnLines) && \"left\" === indicatorAlignment ? \"appendTo\" : \"prependTo\"](options.rootElement);\r\n return $span\r\n },\r\n _getIndicatorClassName: noop,\r\n _getColumnAlignment: function(alignment, rtlEnabled) {\r\n rtlEnabled = rtlEnabled || this.option(\"rtlEnabled\");\r\n return alignment && \"center\" !== alignment ? alignment : getDefaultAlignment(rtlEnabled)\r\n },\r\n _createIndicatorContainer: function(options, ignoreIndicatorAlignment) {\r\n var $indicatorsContainer = this._getIndicatorContainer(options.rootElement);\r\n var indicatorAlignment = \"left\" === options.columnAlignment ? \"right\" : \"left\";\r\n if (!$indicatorsContainer.length) {\r\n $indicatorsContainer = $(\"
\").addClass(COLUMN_INDICATORS_CLASS)\r\n }\r\n this.setAria(\"role\", \"presentation\", $indicatorsContainer);\r\n return $indicatorsContainer.css(\"float\", options.showColumnLines && !ignoreIndicatorAlignment ? indicatorAlignment : null)\r\n },\r\n _getIndicatorContainer: function($cell) {\r\n return $cell && $cell.find(\".\" + COLUMN_INDICATORS_CLASS)\r\n },\r\n _getIndicatorElements: function($cell) {\r\n var $indicatorContainer = this._getIndicatorContainer($cell);\r\n return $indicatorContainer && $indicatorContainer.children()\r\n },\r\n _renderIndicator: function(options) {\r\n var $container = options.container;\r\n var $indicator = options.indicator;\r\n $container && $indicator && $container.append($indicator)\r\n },\r\n _updateIndicators: function(indicatorName) {\r\n var columns = this.getColumns();\r\n var $cells = this.getColumnElements();\r\n var $cell;\r\n if (!$cells || columns.length !== $cells.length) {\r\n return\r\n }\r\n for (var i = 0; i < columns.length; i++) {\r\n $cell = $cells.eq(i);\r\n this._updateIndicator($cell, columns[i], indicatorName);\r\n var rowOptions = $cell.parent().data(\"options\");\r\n if (rowOptions && rowOptions.cells) {\r\n rowOptions.cells[$cell.index()].column = columns[i]\r\n }\r\n }\r\n },\r\n _updateIndicator: function($cell, column, indicatorName) {\r\n if (!column.command) {\r\n return this._applyColumnState({\r\n name: indicatorName,\r\n rootElement: $cell,\r\n column: column,\r\n showColumnLines: this.option(\"showColumnLines\")\r\n })\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/format_helper.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isString,\r\n isNumeric,\r\n isFunction,\r\n isDefined,\r\n isDate,\r\n isPlainObject\r\n} from \"./core/utils/type\";\r\nimport dateUtils from \"./core/utils/date\";\r\nimport numberLocalization from \"./localization/number\";\r\nimport dateLocalization from \"./localization/date\";\r\nimport dependencyInjector from \"./core/utils/dependency_injector\";\r\nimport \"./localization/currency\";\r\nexport default dependencyInjector({\r\n format: function(value, _format) {\r\n var formatIsValid = isString(_format) && \"\" !== _format || isPlainObject(_format) || isFunction(_format);\r\n var valueIsValid = isNumeric(value) || isDate(value);\r\n if (!formatIsValid || !valueIsValid) {\r\n return isDefined(value) ? value.toString() : \"\"\r\n }\r\n if (isFunction(_format)) {\r\n return _format(value)\r\n }\r\n if (isString(_format)) {\r\n _format = {\r\n type: _format\r\n }\r\n }\r\n if (isNumeric(value)) {\r\n return numberLocalization.format(value, _format)\r\n }\r\n if (isDate(value)) {\r\n return dateLocalization.format(value, _format)\r\n }\r\n },\r\n getTimeFormat: function(showSecond) {\r\n return showSecond ? \"longtime\" : \"shorttime\"\r\n },\r\n _normalizeFormat: function(format) {\r\n if (!Array.isArray(format)) {\r\n return format\r\n }\r\n if (1 === format.length) {\r\n return format[0]\r\n }\r\n return function(date) {\r\n return format.map((function(formatPart) {\r\n return dateLocalization.format(date, formatPart)\r\n })).join(\" \")\r\n }\r\n },\r\n getDateFormatByDifferences: function(dateDifferences, intervalFormat) {\r\n var resultFormat = [];\r\n var needSpecialSecondFormatter = intervalFormat && dateDifferences.millisecond && !(dateDifferences.year || dateDifferences.month || dateDifferences.day);\r\n if (needSpecialSecondFormatter) {\r\n resultFormat.push((function(date) {\r\n return date.getSeconds() + date.getMilliseconds() / 1e3 + \"s\"\r\n }))\r\n } else if (dateDifferences.millisecond) {\r\n resultFormat.push(\"millisecond\")\r\n }\r\n if (dateDifferences.hour || dateDifferences.minute || !needSpecialSecondFormatter && dateDifferences.second) {\r\n resultFormat.unshift(this.getTimeFormat(dateDifferences.second))\r\n }\r\n if (dateDifferences.year && dateDifferences.month && dateDifferences.day) {\r\n if (intervalFormat && \"month\" === intervalFormat) {\r\n return \"monthandyear\"\r\n } else {\r\n resultFormat.unshift(\"shortdate\");\r\n return this._normalizeFormat(resultFormat)\r\n }\r\n }\r\n if (dateDifferences.year && dateDifferences.month) {\r\n return \"monthandyear\"\r\n }\r\n if (dateDifferences.year && dateDifferences.quarter) {\r\n return \"quarterandyear\"\r\n }\r\n if (dateDifferences.year) {\r\n return \"year\"\r\n }\r\n if (dateDifferences.quarter) {\r\n return \"quarter\"\r\n }\r\n if (dateDifferences.month && dateDifferences.day) {\r\n if (intervalFormat) {\r\n resultFormat.unshift((function(date) {\r\n return dateLocalization.getMonthNames(\"abbreviated\")[date.getMonth()] + \" \" + dateLocalization.format(date, \"day\")\r\n }))\r\n } else {\r\n resultFormat.unshift(\"monthandday\")\r\n }\r\n return this._normalizeFormat(resultFormat)\r\n }\r\n if (dateDifferences.month) {\r\n return \"month\"\r\n }\r\n if (dateDifferences.day) {\r\n if (intervalFormat) {\r\n resultFormat.unshift(\"day\")\r\n } else {\r\n resultFormat.unshift((function(date) {\r\n return dateLocalization.format(date, \"dayofweek\") + \", \" + dateLocalization.format(date, \"day\")\r\n }))\r\n }\r\n return this._normalizeFormat(resultFormat)\r\n }\r\n return this._normalizeFormat(resultFormat)\r\n },\r\n getDateFormatByTicks: function(ticks) {\r\n var maxDiff;\r\n var currentDiff;\r\n var i;\r\n if (ticks.length > 1) {\r\n maxDiff = dateUtils.getDatesDifferences(ticks[0], ticks[1]);\r\n for (i = 1; i < ticks.length - 1; i++) {\r\n currentDiff = dateUtils.getDatesDifferences(ticks[i], ticks[i + 1]);\r\n if (maxDiff.count < currentDiff.count) {\r\n maxDiff = currentDiff\r\n }\r\n }\r\n } else {\r\n maxDiff = {\r\n year: true,\r\n month: true,\r\n day: true,\r\n hour: ticks[0].getHours() > 0,\r\n minute: ticks[0].getMinutes() > 0,\r\n second: ticks[0].getSeconds() > 0,\r\n millisecond: ticks[0].getMilliseconds() > 0\r\n }\r\n }\r\n var resultFormat = this.getDateFormatByDifferences(maxDiff);\r\n return resultFormat\r\n },\r\n getDateFormatByTickInterval: function(startValue, endValue, tickInterval) {\r\n var dateUnitInterval;\r\n var correctDateDifferences = function(dateDifferences, tickInterval, value) {\r\n switch (tickInterval) {\r\n case \"year\":\r\n case \"quarter\":\r\n dateDifferences.month = value;\r\n case \"month\":\r\n dateDifferences.day = value;\r\n case \"week\":\r\n case \"day\":\r\n dateDifferences.hour = value;\r\n case \"hour\":\r\n dateDifferences.minute = value;\r\n case \"minute\":\r\n dateDifferences.second = value;\r\n case \"second\":\r\n dateDifferences.millisecond = value\r\n }\r\n };\r\n tickInterval = isString(tickInterval) ? tickInterval.toLowerCase() : tickInterval;\r\n var dateDifferences = dateUtils.getDatesDifferences(startValue, endValue);\r\n if (startValue !== endValue) {\r\n ! function(differences, minDate, maxDate) {\r\n if (!maxDate.getMilliseconds() && maxDate.getSeconds()) {\r\n if (maxDate.getSeconds() - minDate.getSeconds() === 1) {\r\n differences.millisecond = true;\r\n differences.second = false\r\n }\r\n } else if (!maxDate.getSeconds() && maxDate.getMinutes()) {\r\n if (maxDate.getMinutes() - minDate.getMinutes() === 1) {\r\n differences.second = true;\r\n differences.minute = false\r\n }\r\n } else if (!maxDate.getMinutes() && maxDate.getHours()) {\r\n if (maxDate.getHours() - minDate.getHours() === 1) {\r\n differences.minute = true;\r\n differences.hour = false\r\n }\r\n } else if (!maxDate.getHours() && maxDate.getDate() > 1) {\r\n if (maxDate.getDate() - minDate.getDate() === 1) {\r\n differences.hour = true;\r\n differences.day = false\r\n }\r\n } else if (1 === maxDate.getDate() && maxDate.getMonth()) {\r\n if (maxDate.getMonth() - minDate.getMonth() === 1) {\r\n differences.day = true;\r\n differences.month = false\r\n }\r\n } else if (!maxDate.getMonth() && maxDate.getFullYear()) {\r\n if (maxDate.getFullYear() - minDate.getFullYear() === 1) {\r\n differences.month = true;\r\n differences.year = false\r\n }\r\n }\r\n }(dateDifferences, startValue > endValue ? endValue : startValue, startValue > endValue ? startValue : endValue)\r\n }\r\n dateUnitInterval = dateUtils.getDateUnitInterval(dateDifferences);\r\n correctDateDifferences(dateDifferences, dateUnitInterval, true);\r\n dateUnitInterval = dateUtils.getDateUnitInterval(tickInterval || \"second\");\r\n correctDateDifferences(dateDifferences, dateUnitInterval, false);\r\n dateDifferences[{\r\n week: \"day\"\r\n } [dateUnitInterval] || dateUnitInterval] = true;\r\n var resultFormat = this.getDateFormatByDifferences(dateDifferences);\r\n return resultFormat\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/overlay/utils.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n isNumeric\r\n} from \"../../core/utils/type\";\r\nvar WINDOW_HEIGHT_PERCENT = .9;\r\nexport var getElementMaxHeightByWindow = ($element, startLocation) => {\r\n var $window = $(getWindow());\r\n var {\r\n top: elementOffset\r\n } = $element.offset();\r\n var actualOffset;\r\n if (isNumeric(startLocation)) {\r\n if (startLocation < elementOffset) {\r\n return elementOffset - startLocation\r\n } else {\r\n actualOffset = $window.innerHeight() - startLocation + $window.scrollTop()\r\n }\r\n } else {\r\n var offsetTop = elementOffset - $window.scrollTop();\r\n var offsetBottom = $window.innerHeight() - offsetTop - $element.outerHeight();\r\n actualOffset = Math.max(offsetTop, offsetBottom)\r\n }\r\n return actualOffset * WINDOW_HEIGHT_PERCENT\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.core.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport gridCoreUtils from \"../grid_core/ui.grid_core.utils\";\r\nimport modules from \"../grid_core/ui.grid_core.modules\";\r\nexport default _extends({}, modules, gridCoreUtils, {\r\n modules: []\r\n});\r\n","/**\r\n * DevExtreme (esm/renovation/utils/combine_classes.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport function combineClasses(classesMap) {\r\n return Object.keys(classesMap).filter(p => classesMap[p]).join(\" \")\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.column_headers.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n columnHeadersModule\r\n} from \"../grid_core/ui.grid_core.column_headers\";\r\nexport var ColumnHeadersView = columnHeadersModule.views.columnHeadersView;\r\ngridCore.registerModule(\"columnHeaders\", columnHeadersModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.columns_controller.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n columnsControllerModule\r\n} from \"../grid_core/ui.grid_core.columns_controller\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\ngridCore.registerModule(\"columns\", {\r\n defaultOptions: function() {\r\n return extend(true, {}, columnsControllerModule.defaultOptions(), {\r\n commonColumnSettings: {\r\n allowExporting: true\r\n }\r\n })\r\n },\r\n controllers: columnsControllerModule.controllers\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.data_source_adapter.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport DataSourceAdapter from \"../grid_core/ui.grid_core.data_source_adapter\";\r\nvar dataSourceAdapterType = DataSourceAdapter;\r\nexport default {\r\n extend: function(extender) {\r\n dataSourceAdapterType = dataSourceAdapterType.inherit(extender)\r\n },\r\n create: function(component) {\r\n return new dataSourceAdapterType(component)\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.data_controller.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport dataSourceAdapterProvider from \"./ui.data_grid.data_source_adapter\";\r\nimport {\r\n dataControllerModule\r\n} from \"../grid_core/ui.grid_core.data_controller\";\r\nexport var DataController = dataControllerModule.controllers.data.inherit({\r\n _getDataSourceAdapter: function() {\r\n return dataSourceAdapterProvider\r\n },\r\n _getSpecificDataSourceOption: function() {\r\n var dataSource = this.option(\"dataSource\");\r\n if (dataSource && !Array.isArray(dataSource) && this.option(\"keyExpr\")) {\r\n errors.log(\"W1011\")\r\n }\r\n return this.callBase()\r\n }\r\n});\r\ngridCore.registerModule(\"data\", {\r\n defaultOptions: dataControllerModule.defaultOptions,\r\n controllers: {\r\n data: DataController\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.sorting.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n sortingModule\r\n} from \"../grid_core/ui.grid_core.sorting\";\r\ngridCore.registerModule(\"sorting\", sortingModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.rows.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n rowsModule\r\n} from \"../grid_core/ui.grid_core.rows\";\r\nexport var RowsView = rowsModule.views.rowsView;\r\ngridCore.registerModule(\"rows\", rowsModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.context_menu.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport treeListCore from \"./ui.data_grid.core\";\r\nimport {\r\n contextMenuModule\r\n} from \"../grid_core/ui.grid_core.context_menu\";\r\ntreeListCore.registerModule(\"contextMenu\", contextMenuModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.error_handling.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n errorHandlingModule\r\n} from \"../grid_core/ui.grid_core.error_handling\";\r\ngridCore.registerModule(\"errorHandling\", errorHandlingModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.grid_view.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n gridViewModule\r\n} from \"../grid_core/ui.grid_core.grid_view\";\r\ngridCore.registerModule(\"gridView\", gridViewModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.header_panel.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n headerPanelModule\r\n} from \"../grid_core/ui.grid_core.header_panel\";\r\nexport var HeaderPanel = headerPanelModule.views.headerPanel;\r\ngridCore.registerModule(\"headerPanel\", headerPanelModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.base.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n deferRender,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isFunction,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n logger\r\n} from \"../../core/utils/console\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n isMaterial\r\n} from \"../themes\";\r\nvar DATAGRID_ROW_SELECTOR = \".dx-row\";\r\nvar DATAGRID_DEPRECATED_TEMPLATE_WARNING = \"Specifying grid templates with the jQuery selector name is now deprecated. Use the DOM Node or the jQuery object that references this selector instead.\";\r\nimport \"./ui.data_grid.column_headers\";\r\nimport \"./ui.data_grid.columns_controller\";\r\nimport \"./ui.data_grid.data_controller\";\r\nimport \"./ui.data_grid.sorting\";\r\nimport \"./ui.data_grid.rows\";\r\nimport \"./ui.data_grid.context_menu\";\r\nimport \"./ui.data_grid.error_handling\";\r\nimport \"./ui.data_grid.grid_view\";\r\nimport \"./ui.data_grid.header_panel\";\r\ngridCore.registerModulesOrder([\"stateStoring\", \"columns\", \"selection\", \"editorFactory\", \"columnChooser\", \"grouping\", \"editing\", \"editingRowBased\", \"editingFormBased\", \"editingCellBased\", \"masterDetail\", \"validating\", \"adaptivity\", \"data\", \"virtualScrolling\", \"columnHeaders\", \"filterRow\", \"headerPanel\", \"headerFilter\", \"sorting\", \"search\", \"rows\", \"pager\", \"columnsResizingReordering\", \"contextMenu\", \"keyboardNavigation\", \"errorHandling\", \"summary\", \"columnFixing\", \"export\", \"gridView\"]);\r\nvar DataGrid = Widget.inherit({\r\n _activeStateUnit: DATAGRID_ROW_SELECTOR,\r\n _getDefaultOptions: function() {\r\n var result = this.callBase();\r\n each(gridCore.modules, (function() {\r\n if (isFunction(this.defaultOptions)) {\r\n extend(true, result, this.defaultOptions())\r\n }\r\n }));\r\n return result\r\n },\r\n _setDeprecatedOptions: function() {\r\n this.callBase();\r\n extend(this._deprecatedOptions, {\r\n useKeyboard: {\r\n since: \"19.2\",\r\n alias: \"keyboardNavigation.enabled\"\r\n }\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"ios\"\r\n },\r\n options: {\r\n showRowLines: true\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial()\r\n },\r\n options: {\r\n showRowLines: true,\r\n showColumnLines: false,\r\n headerFilter: {\r\n height: 315\r\n },\r\n editing: {\r\n useIcons: true\r\n }\r\n }\r\n }, {\r\n device: function() {\r\n return browser.webkit\r\n },\r\n options: {\r\n loadingTimeout: 30,\r\n loadPanel: {\r\n animation: {\r\n show: {\r\n easing: \"cubic-bezier(1, 0, 1, 0)\",\r\n duration: 500,\r\n from: {\r\n opacity: 0\r\n },\r\n to: {\r\n opacity: 1\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }, {\r\n device: function(_device) {\r\n return \"desktop\" !== _device.deviceType\r\n },\r\n options: {\r\n grouping: {\r\n expandMode: \"rowClick\"\r\n }\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n gridCore.processModules(this, gridCore);\r\n gridCore.callModuleItemsMethod(this, \"init\")\r\n },\r\n _clean: noop,\r\n _optionChanged: function(args) {\r\n gridCore.callModuleItemsMethod(this, \"optionChanged\", [args]);\r\n if (!args.handled) {\r\n this.callBase(args)\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n this.updateDimensions(true)\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this.updateDimensions()\r\n }\r\n },\r\n _initMarkup: function() {\r\n this.callBase.apply(this, arguments);\r\n this.getView(\"gridView\").render(this.$element())\r\n },\r\n _renderContentImpl: function() {\r\n this.getView(\"gridView\").update()\r\n },\r\n _renderContent: function() {\r\n var that = this;\r\n deferRender((function() {\r\n that._renderContentImpl()\r\n }))\r\n },\r\n _getTemplate: function(templateName) {\r\n var template = templateName;\r\n if (isString(template) && \"#\" === template[0]) {\r\n template = $(templateName);\r\n logger.warn(DATAGRID_DEPRECATED_TEMPLATE_WARNING)\r\n }\r\n return this.callBase(template)\r\n },\r\n _dispose: function() {\r\n this.callBase();\r\n gridCore.callModuleItemsMethod(this, \"dispose\")\r\n },\r\n isReady: function() {\r\n return this.getController(\"data\").isReady()\r\n },\r\n beginUpdate: function() {\r\n this.callBase();\r\n gridCore.callModuleItemsMethod(this, \"beginUpdate\")\r\n },\r\n endUpdate: function() {\r\n gridCore.callModuleItemsMethod(this, \"endUpdate\");\r\n this.callBase()\r\n },\r\n getController: function(name) {\r\n return this._controllers[name]\r\n },\r\n getView: function(name) {\r\n return this._views[name]\r\n },\r\n focus: function(element) {\r\n this.getController(\"keyboardNavigation\").focus(element)\r\n }\r\n});\r\nDataGrid.registerModule = gridCore.registerModule.bind(gridCore);\r\nregisterComponent(\"dxDataGrid\", DataGrid);\r\nexport default DataGrid;\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.state_storing.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n stateStoringModule\r\n} from \"../grid_core/ui.grid_core.state_storing\";\r\ngridCore.registerModule(\"stateStoring\", stateStoringModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.selection.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n selectionModule\r\n} from \"../grid_core/ui.grid_core.selection\";\r\ngridCore.registerModule(\"selection\", selectionModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.column_chooser.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n columnChooserModule\r\n} from \"../grid_core/ui.grid_core.column_chooser\";\r\nexport var ColumnChooserController = columnChooserModule.controllers.columnChooser;\r\nexport var ColumnChooserView = columnChooserModule.views.columnChooserView;\r\ngridCore.registerModule(\"columnChooser\", columnChooserModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.grouping.core.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Class from \"../../core/class\";\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n normalizeSortingInfo\r\n} from \"../../data/utils\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\nexport function createOffsetFilter(path, storeLoadOptions, lastLevelOnly) {\r\n var groups = normalizeSortingInfo(storeLoadOptions.group);\r\n var filter = [];\r\n for (var i = lastLevelOnly ? path.length - 1 : 0; i < path.length; i++) {\r\n var filterElement = [];\r\n for (var j = 0; j <= i; j++) {\r\n var selector = groups[j].selector;\r\n if (i === j && (null === path[j] || false === path[j] || true === path[j])) {\r\n if (false === path[j]) {\r\n filterElement.push([selector, \"=\", groups[j].desc ? true : null])\r\n } else if (path[j] ? !groups[j].desc : groups[j].desc) {\r\n filterElement.push([selector, \"<>\", path[j]])\r\n } else {\r\n filterElement.push([selector, \"<>\", null]);\r\n filterElement.push([selector, \"=\", null])\r\n }\r\n } else {\r\n var currentFilter = [selector, i === j ? groups[j].desc ? \">\" : \"<\" : \"=\", path[j]];\r\n if (\"<\" === currentFilter[1]) {\r\n filterElement.push([currentFilter, \"or\", [selector, \"=\", null]])\r\n } else {\r\n filterElement.push(currentFilter)\r\n }\r\n }\r\n }\r\n filter.push(gridCore.combineFilters(filterElement))\r\n }\r\n filter = gridCore.combineFilters(filter, \"or\");\r\n return gridCore.combineFilters([filter, storeLoadOptions.filter])\r\n}\r\nexport var GroupingHelper = Class.inherit(function() {\r\n var findGroupInfoByKey = function(groupsInfo, key) {\r\n var hash = groupsInfo.hash;\r\n return hash && hash[JSON.stringify(key)]\r\n };\r\n var getGroupInfoIndexByOffset = function(groupsInfo, offset) {\r\n var leftIndex = 0;\r\n var rightIndex = groupsInfo.length - 1;\r\n if (!groupsInfo.length) {\r\n return 0\r\n }\r\n do {\r\n var middleIndex = rightIndex + leftIndex >> 1;\r\n if (groupsInfo[middleIndex].offset > offset) {\r\n rightIndex = middleIndex\r\n } else {\r\n leftIndex = middleIndex\r\n }\r\n } while (rightIndex - leftIndex > 1);\r\n var index;\r\n for (index = leftIndex; index <= rightIndex; index++) {\r\n if (groupsInfo[index].offset > offset) {\r\n break\r\n }\r\n }\r\n return index\r\n };\r\n return {\r\n ctor: function(dataSourceAdapter) {\r\n this._dataSource = dataSourceAdapter;\r\n this.reset()\r\n },\r\n reset: function() {\r\n this._groupsInfo = [];\r\n this._totalCountCorrection = 0\r\n },\r\n totalCountCorrection: function() {\r\n return this._totalCountCorrection\r\n },\r\n updateTotalItemsCount: function(totalCountCorrection) {\r\n this._totalCountCorrection = totalCountCorrection || 0\r\n },\r\n isGroupItemCountable: function(item) {\r\n return !this._isVirtualPaging() || !item.isContinuation\r\n },\r\n _isVirtualPaging: function() {\r\n var scrollingMode = this._dataSource.option(\"scrolling.mode\");\r\n return \"virtual\" === scrollingMode || \"infinite\" === scrollingMode\r\n },\r\n itemsCount: function() {\r\n var dataSourceAdapter = this._dataSource;\r\n var dataSource = dataSourceAdapter._dataSource;\r\n var groupCount = gridCore.normalizeSortingInfo(dataSource.group() || []).length;\r\n var itemsCount = function calculateItemsCount(that, items, groupsCount) {\r\n var result = 0;\r\n if (items) {\r\n if (!groupsCount) {\r\n result = items.length\r\n } else {\r\n for (var i = 0; i < items.length; i++) {\r\n if (that.isGroupItemCountable(items[i])) {\r\n result++\r\n }\r\n result += calculateItemsCount(that, items[i].items, groupsCount - 1)\r\n }\r\n }\r\n }\r\n return result\r\n }(this, dataSource.items(), groupCount);\r\n return itemsCount\r\n },\r\n foreachGroups: function(callback, childrenAtFirst, foreachCollapsedGroups, updateOffsets, updateParentOffsets) {\r\n var that = this;\r\n return function foreachGroupsCore(groupsInfo, callback, childrenAtFirst, parents) {\r\n var callbackResults = [];\r\n\r\n function executeCallback(callback, data, parents, callbackResults) {\r\n var callbackResult = data && callback(data, parents);\r\n callbackResult && callbackResults.push(callbackResult);\r\n return callbackResult\r\n }\r\n for (var i = 0; i < groupsInfo.length; i++) {\r\n parents.push(groupsInfo[i].data);\r\n if (!childrenAtFirst && false === executeCallback(callback, groupsInfo[i].data, parents, callbackResults)) {\r\n return false\r\n }\r\n if (!groupsInfo[i].data || groupsInfo[i].data.isExpanded || foreachCollapsedGroups) {\r\n var children = groupsInfo[i].children;\r\n var callbackResult = children.length && foreachGroupsCore(children, callback, childrenAtFirst, parents);\r\n callbackResult && callbackResults.push(callbackResult);\r\n if (false === callbackResult) {\r\n return false\r\n }\r\n }\r\n if (childrenAtFirst && false === executeCallback(callback, groupsInfo[i].data, parents, callbackResults)) {\r\n return false\r\n }\r\n if (!groupsInfo[i].data || groupsInfo[i].data.offset !== groupsInfo[i].offset) {\r\n updateOffsets = true\r\n }\r\n parents.pop()\r\n }\r\n var currentParents = updateParentOffsets && parents.slice(0);\r\n return updateOffsets && when.apply($, callbackResults).always((function() {\r\n that._updateGroupInfoOffsets(groupsInfo, currentParents)\r\n }))\r\n }(that._groupsInfo, callback, childrenAtFirst, [])\r\n },\r\n _updateGroupInfoOffsets: function(groupsInfo, parents) {\r\n parents = parents || [];\r\n for (var index = 0; index < groupsInfo.length; index++) {\r\n var groupInfo = groupsInfo[index];\r\n if (groupInfo.data && groupInfo.data.offset !== groupInfo.offset) {\r\n groupInfo.offset = groupInfo.data.offset;\r\n for (var parentIndex = 0; parentIndex < parents.length; parentIndex++) {\r\n parents[parentIndex].offset = groupInfo.offset\r\n }\r\n }\r\n }\r\n groupsInfo.sort((function(a, b) {\r\n return a.offset - b.offset\r\n }))\r\n },\r\n findGroupInfo: function(path) {\r\n var groupInfo;\r\n var groupsInfo = this._groupsInfo;\r\n for (var pathIndex = 0; groupsInfo && pathIndex < path.length; pathIndex++) {\r\n groupInfo = findGroupInfoByKey(groupsInfo, path[pathIndex]);\r\n groupsInfo = groupInfo && groupInfo.children\r\n }\r\n return groupInfo && groupInfo.data\r\n },\r\n addGroupInfo: function(groupInfoData) {\r\n var groupInfo;\r\n var path = groupInfoData.path;\r\n var groupsInfo = this._groupsInfo;\r\n for (var pathIndex = 0; pathIndex < path.length; pathIndex++) {\r\n groupInfo = findGroupInfoByKey(groupsInfo, path[pathIndex]);\r\n if (!groupInfo) {\r\n groupInfo = {\r\n key: path[pathIndex],\r\n offset: groupInfoData.offset,\r\n data: {\r\n offset: groupInfoData.offset,\r\n isExpanded: true,\r\n path: path.slice(0, pathIndex + 1)\r\n },\r\n children: []\r\n };\r\n var index = getGroupInfoIndexByOffset(groupsInfo, groupInfoData.offset);\r\n groupsInfo.splice(index, 0, groupInfo);\r\n groupsInfo.hash = groupsInfo.hash || {};\r\n groupsInfo.hash[JSON.stringify(groupInfo.key)] = groupInfo\r\n }\r\n if (pathIndex === path.length - 1) {\r\n groupInfo.data = groupInfoData;\r\n if (groupInfo.offset !== groupInfoData.offset) {\r\n this._updateGroupInfoOffsets(groupsInfo)\r\n }\r\n }\r\n groupsInfo = groupInfo.children\r\n }\r\n },\r\n allowCollapseAll: function() {\r\n return true\r\n },\r\n refresh: function(options) {\r\n var storeLoadOptions = options.storeLoadOptions;\r\n var groups = normalizeSortingInfo(storeLoadOptions.group || []);\r\n var oldGroups = \"_group\" in this ? normalizeSortingInfo(this._group || []) : groups;\r\n var groupsCount = Math.min(oldGroups.length, groups.length);\r\n this._group = storeLoadOptions.group;\r\n for (var groupIndex = 0; groupIndex < groupsCount; groupIndex++) {\r\n if (oldGroups[groupIndex].selector !== groups[groupIndex].selector) {\r\n groupsCount = groupIndex;\r\n break\r\n }\r\n }\r\n if (!groupsCount) {\r\n this.reset()\r\n } else {\r\n ! function cleanGroupsInfo(groupsInfo, groupIndex, groupsCount) {\r\n for (var i = 0; i < groupsInfo.length; i++) {\r\n if (groupIndex + 1 >= groupsCount) {\r\n groupsInfo[i].children = []\r\n } else {\r\n cleanGroupsInfo(groupsInfo[i].children, groupIndex + 1, groupsCount)\r\n }\r\n }\r\n }(this._groupsInfo, 0, groupsCount)\r\n }\r\n },\r\n handleDataLoading: function() {},\r\n handleDataLoaded: function(options, callBase) {\r\n callBase(options)\r\n },\r\n handleDataLoadedCore: function(options, callBase) {\r\n callBase(options)\r\n }\r\n }\r\n}());\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.utils.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCoreUtils from \"../grid_core/ui.grid_core.utils\";\r\nimport {\r\n normalizeSortingInfo\r\n} from \"../../data/utils\";\r\nexport function createGroupFilter(path, storeLoadOptions) {\r\n var groups = normalizeSortingInfo(storeLoadOptions.group);\r\n var filter = [];\r\n for (var i = 0; i < path.length; i++) {\r\n filter.push([groups[i].selector, \"=\", path[i]])\r\n }\r\n if (storeLoadOptions.filter) {\r\n filter.push(storeLoadOptions.filter)\r\n }\r\n return gridCoreUtils.combineFilters(filter)\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.grouping.expanded.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n toComparable\r\n} from \"../../core/utils/data\";\r\nimport {\r\n keysEqual\r\n} from \"../../data/utils\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport storeHelper from \"../../data/store_helper\";\r\nimport dataGridCore from \"./ui.data_grid.core\";\r\nimport {\r\n GroupingHelper as GroupingHelperCore,\r\n createOffsetFilter\r\n} from \"./ui.data_grid.grouping.core\";\r\nimport {\r\n createGroupFilter\r\n} from \"./ui.data_grid.utils\";\r\nimport dataQuery from \"../../data/query\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar loadTotalCount = function(dataSource, options) {\r\n var d = new Deferred;\r\n var loadOptions = extend({\r\n skip: 0,\r\n take: 1,\r\n requireTotalCount: true\r\n }, options);\r\n dataSource.load(loadOptions).done((function(data, extra) {\r\n d.resolve(extra && extra.totalCount)\r\n })).fail(d.reject.bind(d));\r\n return d\r\n};\r\nexport var GroupingHelper = GroupingHelperCore.inherit(function() {\r\n var foreachCollapsedGroups = function(that, callback, updateOffsets) {\r\n return that.foreachGroups((function(groupInfo) {\r\n if (!groupInfo.isExpanded) {\r\n return callback(groupInfo)\r\n }\r\n }), false, false, updateOffsets, true)\r\n };\r\n var correctSkipLoadOption = function(that, skip) {\r\n var skipCorrection = 0;\r\n var resultSkip = skip || 0;\r\n if (skip) {\r\n foreachCollapsedGroups(that, (function(groupInfo) {\r\n if (groupInfo.offset - skipCorrection >= skip) {\r\n return false\r\n }\r\n skipCorrection += groupInfo.count - 1\r\n }));\r\n resultSkip += skipCorrection\r\n }\r\n return resultSkip\r\n };\r\n var pathEquals = function(path1, path2) {\r\n if (path1.length !== path2.length) {\r\n return false\r\n }\r\n for (var i = 0; i < path1.length; i++) {\r\n if (!keysEqual(null, path1[i], path2[i])) {\r\n return false\r\n }\r\n }\r\n return true\r\n };\r\n var updateGroupOffsets = function updateGroupOffsets(that, items, path, offset, additionalGroupInfo) {\r\n if (!items) {\r\n return\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n if (\"key\" in item && void 0 !== item.items) {\r\n path.push(item.key);\r\n if (additionalGroupInfo && pathEquals(additionalGroupInfo.path, path) && !item.isContinuation) {\r\n additionalGroupInfo.offset = offset\r\n }\r\n var groupInfo = that.findGroupInfo(path);\r\n if (groupInfo && !item.isContinuation) {\r\n groupInfo.offset = offset\r\n }\r\n if (groupInfo && !groupInfo.isExpanded) {\r\n offset += groupInfo.count\r\n } else {\r\n offset = updateGroupOffsets(that, item.items, path, offset, additionalGroupInfo)\r\n }\r\n path.pop()\r\n } else {\r\n offset++\r\n }\r\n }\r\n return offset\r\n };\r\n var getGroupCount = function getGroupCount(item, groupCount) {\r\n var count = item.count || item.items.length;\r\n if (!item.count && groupCount > 1) {\r\n count = 0;\r\n for (var i = 0; i < item.items.length; i++) {\r\n count += getGroupCount(item.items[i], groupCount - 1)\r\n }\r\n }\r\n return count\r\n };\r\n return {\r\n handleDataLoading: function(options) {\r\n var storeLoadOptions = options.storeLoadOptions;\r\n var collapsedGroups = [];\r\n var collapsedItemsCount = 0;\r\n var skipFirstItem = false;\r\n var take;\r\n var group = options.loadOptions.group;\r\n var skipCorrection = 0;\r\n ! function(storeLoadOptions, loadOptions) {\r\n if (loadOptions.group) {\r\n var groups = dataGridCore.normalizeSortingInfo(loadOptions.group);\r\n var sorts = dataGridCore.normalizeSortingInfo(storeLoadOptions.sort);\r\n storeLoadOptions.sort = storeHelper.arrangeSortingInfo(groups, sorts);\r\n delete loadOptions.group\r\n }\r\n }(storeLoadOptions, options.loadOptions);\r\n options.group = options.group || group;\r\n if (options.isCustomLoading) {\r\n return\r\n }\r\n var loadOptions = extend({}, storeLoadOptions);\r\n loadOptions.skip = correctSkipLoadOption(this, storeLoadOptions.skip);\r\n if (loadOptions.skip && loadOptions.take && group) {\r\n loadOptions.skip--;\r\n loadOptions.take++;\r\n skipFirstItem = true\r\n }\r\n if (loadOptions.take && group) {\r\n take = loadOptions.take;\r\n loadOptions.take++\r\n }\r\n foreachCollapsedGroups(this, (function(groupInfo) {\r\n if (groupInfo.offset >= loadOptions.skip + loadOptions.take + skipCorrection) {\r\n return false\r\n } else if (groupInfo.offset >= loadOptions.skip + skipCorrection && groupInfo.count) {\r\n skipCorrection += groupInfo.count - 1;\r\n collapsedGroups.push(groupInfo);\r\n collapsedItemsCount += groupInfo.count\r\n }\r\n }));\r\n each(collapsedGroups, (function() {\r\n loadOptions.filter = function(path, storeLoadOptions, group) {\r\n var groups = dataGridCore.normalizeSortingInfo(group || storeLoadOptions.group);\r\n var filter = [];\r\n for (var i = 0; i < path.length; i++) {\r\n var filterElement = [];\r\n for (var j = 0; j <= i; j++) {\r\n filterElement.push([groups[j].selector, i === j ? \"<>\" : \"=\", path[j]])\r\n }\r\n filter.push(dataGridCore.combineFilters(filterElement))\r\n }\r\n filter = dataGridCore.combineFilters(filter, \"or\");\r\n return dataGridCore.combineFilters([filter, storeLoadOptions.filter])\r\n }(this.path, loadOptions, group)\r\n }));\r\n options.storeLoadOptions = loadOptions;\r\n options.collapsedGroups = collapsedGroups;\r\n options.collapsedItemsCount = collapsedItemsCount;\r\n options.skip = loadOptions.skip || 0;\r\n options.skipFirstItem = skipFirstItem;\r\n options.take = take\r\n },\r\n handleDataLoaded: function(options, callBase) {\r\n var data = options.data;\r\n var collapsedGroups = options.collapsedGroups;\r\n var groups = dataGridCore.normalizeSortingInfo(options.group);\r\n var groupCount = groups.length;\r\n\r\n function appendCollapsedPath(data, path, groups, collapsedGroup, offset) {\r\n if (!data || !path.length || !groups.length) {\r\n return\r\n }\r\n var keyValue;\r\n var i;\r\n var pathValue = toComparable(path[0], true);\r\n for (i = 0; i < data.length; i++) {\r\n keyValue = toComparable(data[i].key, true);\r\n if (offset >= collapsedGroup.offset || pathValue === keyValue) {\r\n break\r\n } else {\r\n offset += getGroupCount(data[i], groups.length)\r\n }\r\n }\r\n if (!data.length || pathValue !== keyValue) {\r\n data.splice(i, 0, {\r\n key: path[0],\r\n items: [],\r\n count: 1 === path.length ? collapsedGroup.count : void 0\r\n })\r\n }\r\n appendCollapsedPath(data[i].items, path.slice(1), groups.slice(1), collapsedGroup, offset)\r\n }\r\n if (options.collapsedItemsCount && options.extra && options.extra.totalCount >= 0) {\r\n options.extra.totalCount += options.collapsedItemsCount\r\n }\r\n callBase(options);\r\n if (groupCount) {\r\n var query = dataQuery(data);\r\n storeHelper.multiLevelGroup(query, groups).enumerate().done((function(groupedData) {\r\n data = groupedData\r\n }));\r\n if (collapsedGroups) {\r\n for (var pathIndex = 0; pathIndex < collapsedGroups.length; pathIndex++) {\r\n appendCollapsedPath(data, collapsedGroups[pathIndex].path, groups, collapsedGroups[pathIndex], options.skip)\r\n }\r\n }\r\n if (!options.isCustomLoading) {\r\n ! function processGroupItems(that, items, path, offset, skipFirstItem, take) {\r\n var removeLastItemsCount = 0;\r\n var needRemoveFirstItem = false;\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n if (void 0 !== item.items) {\r\n path.push(item.key);\r\n var groupInfo = that.findGroupInfo(path);\r\n if (groupInfo && !groupInfo.isExpanded) {\r\n item.collapsedItems = item.items;\r\n item.items = null;\r\n offset += groupInfo.count;\r\n take--;\r\n if (take < 0) {\r\n removeLastItemsCount++\r\n }\r\n if (skipFirstItem) {\r\n needRemoveFirstItem = true\r\n }\r\n } else if (item.items) {\r\n var offsetInfo = processGroupItems(that, item.items, path, offset, skipFirstItem, take);\r\n if (skipFirstItem) {\r\n if (offsetInfo.offset - offset > 1) {\r\n item.isContinuation = true\r\n } else {\r\n needRemoveFirstItem = true\r\n }\r\n }\r\n offset = offsetInfo.offset;\r\n take = offsetInfo.take;\r\n if (take < 0) {\r\n if (item.items.length) {\r\n item.isContinuationOnNextPage = true\r\n } else {\r\n removeLastItemsCount++\r\n }\r\n }\r\n }\r\n path.pop()\r\n } else {\r\n if (skipFirstItem) {\r\n needRemoveFirstItem = true\r\n }\r\n offset++;\r\n take--;\r\n if (take < 0) {\r\n removeLastItemsCount++\r\n }\r\n }\r\n skipFirstItem = false\r\n }\r\n if (needRemoveFirstItem) {\r\n items.splice(0, 1)\r\n }\r\n if (removeLastItemsCount) {\r\n items.splice(-removeLastItemsCount, removeLastItemsCount)\r\n }\r\n return {\r\n offset: offset,\r\n take: take\r\n }\r\n }(this, data, [], options.skip, options.skipFirstItem, options.take)\r\n }\r\n options.data = data\r\n }\r\n },\r\n isGroupItemCountable: function(item) {\r\n return null === item.items\r\n },\r\n updateTotalItemsCount: function() {\r\n var itemsCountCorrection = 0;\r\n foreachCollapsedGroups(this, (function(groupInfo) {\r\n if (groupInfo.count) {\r\n itemsCountCorrection -= groupInfo.count - 1\r\n }\r\n }));\r\n this.callBase(itemsCountCorrection)\r\n },\r\n changeRowExpand: function(path) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var beginPageIndex = dataSource.beginPageIndex ? dataSource.beginPageIndex() : dataSource.pageIndex();\r\n var dataSourceItems = dataSource.items();\r\n var offset = correctSkipLoadOption(that, beginPageIndex * dataSource.pageSize());\r\n var groupInfo = that.findGroupInfo(path);\r\n var groupCountQuery;\r\n if (groupInfo && !groupInfo.isExpanded) {\r\n groupCountQuery = (new Deferred).resolve(groupInfo.count)\r\n } else {\r\n groupCountQuery = loadTotalCount(dataSource, {\r\n filter: createGroupFilter(path, {\r\n filter: dataSource.filter(),\r\n group: dataSource.group()\r\n })\r\n })\r\n }\r\n return when(groupCountQuery).done((function(count) {\r\n count = parseInt(count.length ? count[0] : count);\r\n if (groupInfo) {\r\n updateGroupOffsets(that, dataSourceItems, [], offset);\r\n groupInfo.isExpanded = !groupInfo.isExpanded;\r\n groupInfo.count = count\r\n } else {\r\n groupInfo = {\r\n offset: -1,\r\n count: count,\r\n path: path,\r\n isExpanded: false\r\n };\r\n updateGroupOffsets(that, dataSourceItems, [], offset, groupInfo);\r\n if (groupInfo.offset >= 0) {\r\n that.addGroupInfo(groupInfo)\r\n }\r\n }\r\n that.updateTotalItemsCount()\r\n })).fail((function() {\r\n dataSource._eventsStrategy.fireEvent(\"loadError\", arguments)\r\n }))\r\n },\r\n allowCollapseAll: function() {\r\n return false\r\n },\r\n refresh: function(options, operationTypes) {\r\n var that = this;\r\n var storeLoadOptions = options.storeLoadOptions;\r\n var dataSource = that._dataSource;\r\n this.callBase.apply(this, arguments);\r\n if (operationTypes.reload) {\r\n return foreachCollapsedGroups(that, (function(groupInfo) {\r\n var groupCountQuery = loadTotalCount(dataSource, {\r\n filter: createGroupFilter(groupInfo.path, storeLoadOptions)\r\n });\r\n var groupOffsetQuery = loadTotalCount(dataSource, {\r\n filter: createOffsetFilter(groupInfo.path, storeLoadOptions)\r\n });\r\n return when(groupOffsetQuery, groupCountQuery).done((function(offset, count) {\r\n offset = parseInt(offset.length ? offset[0] : offset);\r\n count = parseInt(count.length ? count[0] : count);\r\n groupInfo.offset = offset;\r\n if (groupInfo.count !== count) {\r\n groupInfo.count = count;\r\n that.updateTotalItemsCount()\r\n }\r\n }))\r\n }), true)\r\n }\r\n }\r\n }\r\n}());\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.grouping.collapsed.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport dataGridCore from \"./ui.data_grid.core\";\r\nimport {\r\n GroupingHelper as GroupingHelperCore,\r\n createOffsetFilter\r\n} from \"./ui.data_grid.grouping.core\";\r\nimport {\r\n createGroupFilter\r\n} from \"./ui.data_grid.utils\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n errors as dataErrors\r\n} from \"../../data/errors\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\n\r\nfunction getContinuationGroupCount(groupOffset, pageSize, groupSize, groupIndex) {\r\n groupIndex = groupIndex || 0;\r\n if (pageSize > 1 && groupSize > 0) {\r\n var pageOffset = groupOffset - Math.floor(groupOffset / pageSize) * pageSize || pageSize;\r\n pageOffset += groupSize - groupIndex - 2;\r\n if (pageOffset < 0) {\r\n pageOffset += pageSize\r\n }\r\n return Math.floor(pageOffset / (pageSize - groupIndex - 1))\r\n }\r\n return 0\r\n}\r\nexport var GroupingHelper = GroupingHelperCore.inherit(function() {\r\n var foreachExpandedGroups = function(that, callback, updateGroups) {\r\n return that.foreachGroups((function(groupInfo, parents) {\r\n if (groupInfo.isExpanded) {\r\n return callback(groupInfo, parents)\r\n }\r\n }), true, false, updateGroups, updateGroups)\r\n };\r\n var processGroupItems = function processGroupItems(that, items, groupsCount, expandedInfo, path, isCustomLoading, isLastGroupExpanded) {\r\n var isExpanded;\r\n expandedInfo.items = expandedInfo.items || [];\r\n expandedInfo.paths = expandedInfo.paths || [];\r\n expandedInfo.count = expandedInfo.count || 0;\r\n expandedInfo.lastCount = expandedInfo.lastCount || 0;\r\n if (!groupsCount) {\r\n return\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n if (void 0 !== item.items) {\r\n path.push(item.key);\r\n if (isCustomLoading) {\r\n isExpanded = true\r\n } else {\r\n var groupInfo = that.findGroupInfo(path);\r\n isExpanded = groupInfo && groupInfo.isExpanded\r\n }\r\n if (!isExpanded) {\r\n item.collapsedItems = item.items;\r\n item.items = null\r\n } else if (item.items) {\r\n processGroupItems(that, item.items, groupsCount - 1, expandedInfo, path, isCustomLoading, isLastGroupExpanded)\r\n } else if (1 === groupsCount && item.count && (!isCustomLoading || isLastGroupExpanded)) {\r\n expandedInfo.items.push(item);\r\n expandedInfo.paths.push(path.slice(0));\r\n expandedInfo.count += expandedInfo.lastCount;\r\n expandedInfo.lastCount = item.count\r\n }\r\n path.pop()\r\n }\r\n }\r\n };\r\n var updateGroupInfoItem = function(that, item, isLastGroupLevel, path, offset) {\r\n var groupInfo = that.findGroupInfo(path);\r\n var count;\r\n if (!groupInfo) {\r\n if (isLastGroupLevel) {\r\n count = item.count > 0 ? item.count : item.items.length\r\n }\r\n that.addGroupInfo({\r\n isExpanded: that._isGroupExpanded(path.length - 1),\r\n path: path.slice(0),\r\n offset: offset,\r\n count: count || 0\r\n })\r\n } else {\r\n if (isLastGroupLevel) {\r\n groupInfo.count = item.count > 0 ? item.count : item.items && item.items.length || 0\r\n } else {\r\n item.count = groupInfo.count || item.count\r\n }\r\n groupInfo.offset = offset\r\n }\r\n };\r\n var updateGroupInfos = function updateGroupInfos(that, options, items, loadedGroupCount, groupIndex, path, parentIndex) {\r\n var groupCount = options.group ? options.group.length : 0;\r\n var isLastGroupLevel = groupCount === loadedGroupCount;\r\n var remotePaging = options.remoteOperations.paging;\r\n var offset = 0;\r\n var totalCount = 0;\r\n var count;\r\n groupIndex = groupIndex || 0;\r\n path = path || [];\r\n if (remotePaging && !parentIndex) {\r\n offset = 0 === groupIndex ? options.skip || 0 : options.skips[groupIndex - 1] || 0\r\n }\r\n if (groupIndex >= loadedGroupCount) {\r\n return items.length\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n if (item) {\r\n path.push(item.key);\r\n if (!item.count && !item.items || void 0 === item.items) {\r\n return -1\r\n }\r\n updateGroupInfoItem(that, item, isLastGroupLevel, path, offset + i);\r\n count = item.items ? updateGroupInfos(that, options, item.items, loadedGroupCount, groupIndex + 1, path, i) : item.count || -1;\r\n if (count < 0) {\r\n return -1\r\n }\r\n totalCount += count;\r\n path.pop()\r\n }\r\n }\r\n return totalCount\r\n };\r\n var isGroupExpanded = function(groups, groupIndex) {\r\n return groups && groups.length && groups[groupIndex] && !!groups[groupIndex].isExpanded\r\n };\r\n var getTotalOffset = function(groupInfos, pageSize, offset) {\r\n var groupSize;\r\n var totalOffset = offset;\r\n for (var groupIndex = 0; groupIndex < groupInfos.length; groupIndex++) {\r\n groupSize = groupInfos[groupIndex].offset + 1;\r\n if (groupIndex > 0) {\r\n groupSize += groupInfos[groupIndex - 1].childrenTotalCount;\r\n if (pageSize) {\r\n groupSize += getContinuationGroupCount(totalOffset, pageSize, groupSize, groupIndex - 1) * groupIndex\r\n }\r\n }\r\n totalOffset += groupSize\r\n }\r\n return totalOffset\r\n };\r\n\r\n function applyContinuationToGroupItem(options, expandedInfo, groupLevel, expandedItemIndex) {\r\n var item = expandedInfo.items[expandedItemIndex];\r\n var skip = options.skips && options.skips[groupLevel];\r\n var take = options.takes && options.takes[groupLevel];\r\n var isLastExpandedItem = expandedItemIndex === expandedInfo.items.length - 1;\r\n var isFirstExpandedItem = 0 === expandedItemIndex;\r\n var lastExpandedItemSkip = isFirstExpandedItem && skip || 0;\r\n var isItemsTruncatedByTake = item.count > take + lastExpandedItemSkip;\r\n if (isFirstExpandedItem && void 0 !== skip) {\r\n item.isContinuation = true\r\n }\r\n if (isLastExpandedItem && void 0 !== take && isItemsTruncatedByTake) {\r\n item.isContinuationOnNextPage = true\r\n }\r\n }\r\n\r\n function isDataDeferred(data) {\r\n return !Array.isArray(data)\r\n }\r\n\r\n function makeDataDeferred(options) {\r\n if (!isDataDeferred(options.data)) {\r\n options.data = new Deferred\r\n }\r\n }\r\n\r\n function loadGroupItems(that, options, loadedGroupCount, expandedInfo, groupLevel, data) {\r\n if (!options.isCustomLoading) {\r\n expandedInfo = {};\r\n processGroupItems(that, data, loadedGroupCount, expandedInfo, []);\r\n ! function(options, expandedInfo, currentGroupCount) {\r\n var currentGroupIndex = currentGroupCount - 1;\r\n var groupCount = options.group ? options.group.length : 0;\r\n expandedInfo.skip = options.skips && options.skips[currentGroupIndex];\r\n if (options.takes && void 0 !== options.takes[currentGroupIndex]) {\r\n if (groupCount === currentGroupCount) {\r\n expandedInfo.take = expandedInfo.count ? expandedInfo.count - (expandedInfo.skip || 0) : 0\r\n } else {\r\n expandedInfo.take = 0\r\n }\r\n expandedInfo.take += options.takes[currentGroupIndex]\r\n }\r\n }(options, expandedInfo, loadedGroupCount)\r\n }\r\n var groupCount = options.group ? options.group.length : 0;\r\n if (expandedInfo.paths.length && groupCount - loadedGroupCount > 0) {\r\n makeDataDeferred(options);\r\n ! function(that, options, expandedInfo, loadedGroupCount, groupLevel, data) {\r\n var groups = options.group || [];\r\n var currentGroup = groups[groupLevel + 1];\r\n var deferreds = [];\r\n each(expandedInfo.paths, (function(expandedItemIndex) {\r\n var loadOptions = {\r\n requireTotalCount: false,\r\n requireGroupCount: true,\r\n group: [currentGroup],\r\n groupSummary: options.storeLoadOptions.groupSummary,\r\n filter: createGroupFilter(expandedInfo.paths[expandedItemIndex], {\r\n filter: options.storeLoadOptions.filter,\r\n group: groups\r\n }),\r\n select: options.storeLoadOptions.select\r\n };\r\n if (0 === expandedItemIndex) {\r\n loadOptions.skip = expandedInfo.skip || 0\r\n }\r\n if (expandedItemIndex === expandedInfo.paths.length - 1) {\r\n loadOptions.take = expandedInfo.take\r\n }\r\n var loadResult = 0 === loadOptions.take ? [] : that._dataSource.loadFromStore(loadOptions);\r\n when(loadResult).done((function(data) {\r\n var item = expandedInfo.items[expandedItemIndex];\r\n applyContinuationToGroupItem(options, expandedInfo, groupLevel, expandedItemIndex);\r\n item.items = data\r\n }));\r\n deferreds.push(loadResult)\r\n }));\r\n when.apply(null, deferreds).done((function() {\r\n updateGroupInfos(that, options, data, loadedGroupCount + 1);\r\n loadGroupItems(that, options, loadedGroupCount + 1, expandedInfo, groupLevel + 1, data)\r\n }))\r\n }(that, options, expandedInfo, loadedGroupCount, groupLevel, data)\r\n } else if (expandedInfo.paths.length && options.storeLoadOptions.group) {\r\n makeDataDeferred(options);\r\n ! function(that, options, expandedInfo, data) {\r\n var expandedFilters = [];\r\n var groups = options.group || [];\r\n each(expandedInfo.paths, (function(_, expandedPath) {\r\n expandedFilters.push(createGroupFilter(expandedPath, {\r\n group: options.isCustomLoading ? options.storeLoadOptions.group : groups\r\n }))\r\n }));\r\n var filter = options.storeLoadOptions.filter;\r\n if (!options.storeLoadOptions.isLoadingAll) {\r\n filter = dataGridCore.combineFilters([filter, dataGridCore.combineFilters(expandedFilters, \"or\")])\r\n }\r\n var loadOptions = extend({}, options.storeLoadOptions, {\r\n requireTotalCount: false,\r\n requireGroupCount: false,\r\n group: null,\r\n sort: groups.concat(dataGridCore.normalizeSortingInfo(options.storeLoadOptions.sort || [])),\r\n filter: filter\r\n });\r\n var isPagingLocal = that._dataSource.isLastLevelGroupItemsPagingLocal();\r\n if (!isPagingLocal) {\r\n loadOptions.skip = expandedInfo.skip;\r\n loadOptions.take = expandedInfo.take\r\n }\r\n when(0 === expandedInfo.take ? [] : that._dataSource.loadFromStore(loadOptions)).done((function(items, extra) {\r\n if (isPagingLocal) {\r\n items = that._dataSource.sortLastLevelGroupItems(items, groups, expandedInfo.paths);\r\n items = expandedInfo.skip ? items.slice(expandedInfo.skip) : items;\r\n items = expandedInfo.take ? items.slice(0, expandedInfo.take) : items\r\n }\r\n each(expandedInfo.items, (function(index, item) {\r\n var itemCount = item.count - (0 === index && expandedInfo.skip || 0);\r\n var expandedItems = items.splice(0, itemCount);\r\n applyContinuationToGroupItem(options, expandedInfo, groups.length - 1, index);\r\n item.items = expandedItems\r\n }));\r\n options.data.resolve(data)\r\n })).fail(options.data.reject)\r\n }(that, options, expandedInfo, data)\r\n } else if (isDataDeferred(options.data)) {\r\n options.data.resolve(data)\r\n }\r\n }\r\n var loadGroupTotalCount = function(dataSource, options) {\r\n var d = new Deferred;\r\n var isGrouping = !!(options.group && options.group.length);\r\n var loadOptions = extend({\r\n skip: 0,\r\n take: 1,\r\n requireGroupCount: isGrouping,\r\n requireTotalCount: !isGrouping\r\n }, options, {\r\n group: isGrouping ? options.group : null\r\n });\r\n dataSource.load(loadOptions).done((function(data, extra) {\r\n var count = extra && (isGrouping ? extra.groupCount : extra.totalCount);\r\n if (!isFinite(count)) {\r\n d.reject(dataErrors.Error(isGrouping ? \"E4022\" : \"E4021\"));\r\n return\r\n }\r\n d.resolve(count)\r\n })).fail(d.reject.bind(d));\r\n return d\r\n };\r\n return {\r\n updateTotalItemsCount: function(options) {\r\n var totalItemsCount = 0;\r\n var totalCount = options.extra && options.extra.totalCount || 0;\r\n var groupCount = options.extra && options.extra.groupCount || 0;\r\n var pageSize = this._dataSource.pageSize();\r\n var isVirtualPaging = this._isVirtualPaging();\r\n foreachExpandedGroups(this, (function(groupInfo) {\r\n groupInfo.childrenTotalCount = 0\r\n }));\r\n foreachExpandedGroups(this, (function(groupInfo, parents) {\r\n var totalOffset = getTotalOffset(parents, isVirtualPaging ? 0 : pageSize, totalItemsCount);\r\n var count = groupInfo.count + groupInfo.childrenTotalCount;\r\n if (!isVirtualPaging) {\r\n count += getContinuationGroupCount(totalOffset, pageSize, count, parents.length - 1)\r\n }\r\n if (parents[parents.length - 2]) {\r\n parents[parents.length - 2].childrenTotalCount += count\r\n } else {\r\n totalItemsCount += count\r\n }\r\n }));\r\n this.callBase(totalItemsCount - totalCount + groupCount)\r\n },\r\n _isGroupExpanded: function(groupIndex) {\r\n var groups = this._dataSource.group();\r\n return isGroupExpanded(groups, groupIndex)\r\n },\r\n _updatePagingOptions: function(options, callback) {\r\n var isVirtualPaging = this._isVirtualPaging();\r\n var pageSize = this._dataSource.pageSize();\r\n var skips = [];\r\n var takes = [];\r\n var skipChildrenTotalCount = 0;\r\n var childrenTotalCount = 0;\r\n if (options.take) {\r\n foreachExpandedGroups(this, (function(groupInfo) {\r\n groupInfo.childrenTotalCount = 0;\r\n groupInfo.skipChildrenTotalCount = 0\r\n }));\r\n foreachExpandedGroups(this, (function(groupInfo, parents) {\r\n var take;\r\n var takeCorrection = 0;\r\n var parentTakeCorrection = 0;\r\n var totalOffset = getTotalOffset(parents, isVirtualPaging ? 0 : pageSize, childrenTotalCount);\r\n var continuationGroupCount = 0;\r\n var skipContinuationGroupCount = 0;\r\n var groupInfoCount = groupInfo.count + groupInfo.childrenTotalCount;\r\n var childrenGroupInfoCount = groupInfoCount;\r\n callback && callback(groupInfo, totalOffset);\r\n var skip = options.skip - totalOffset;\r\n if (totalOffset <= options.skip + options.take && groupInfoCount) {\r\n take = options.take;\r\n if (!isVirtualPaging) {\r\n continuationGroupCount = getContinuationGroupCount(totalOffset, pageSize, groupInfoCount, parents.length - 1);\r\n groupInfoCount += continuationGroupCount * parents.length;\r\n childrenGroupInfoCount += continuationGroupCount;\r\n if (pageSize && skip >= 0) {\r\n takeCorrection = parents.length;\r\n parentTakeCorrection = parents.length - 1;\r\n skipContinuationGroupCount = Math.floor(skip / pageSize)\r\n }\r\n }\r\n if (skip >= 0) {\r\n if (totalOffset + groupInfoCount > options.skip) {\r\n skips.unshift(skip - skipContinuationGroupCount * takeCorrection - groupInfo.skipChildrenTotalCount)\r\n }\r\n if (totalOffset + groupInfoCount >= options.skip + take) {\r\n takes.unshift(take - takeCorrection - groupInfo.childrenTotalCount + groupInfo.skipChildrenTotalCount)\r\n }\r\n } else if (totalOffset + groupInfoCount >= options.skip + take) {\r\n takes.unshift(take + skip - groupInfo.childrenTotalCount)\r\n }\r\n }\r\n if (totalOffset <= options.skip) {\r\n if (parents[parents.length - 2]) {\r\n parents[parents.length - 2].skipChildrenTotalCount += Math.min(childrenGroupInfoCount, skip + 1 - skipContinuationGroupCount * parentTakeCorrection)\r\n } else {\r\n skipChildrenTotalCount += Math.min(childrenGroupInfoCount, skip + 1)\r\n }\r\n }\r\n if (totalOffset <= options.skip + take) {\r\n groupInfoCount = Math.min(childrenGroupInfoCount, skip + take - (skipContinuationGroupCount + 1) * parentTakeCorrection);\r\n if (parents[parents.length - 2]) {\r\n parents[parents.length - 2].childrenTotalCount += groupInfoCount\r\n } else {\r\n childrenTotalCount += groupInfoCount\r\n }\r\n }\r\n }));\r\n options.skip -= skipChildrenTotalCount;\r\n options.take -= childrenTotalCount - skipChildrenTotalCount\r\n }\r\n options.skips = skips;\r\n options.takes = takes\r\n },\r\n changeRowExpand: function(path) {\r\n var groupInfo = this.findGroupInfo(path);\r\n var dataSource = this._dataSource;\r\n var remoteGroupPaging = dataSource.remoteOperations().groupPaging;\r\n var groups = dataGridCore.normalizeSortingInfo(dataSource.group());\r\n if (groupInfo) {\r\n groupInfo.isExpanded = !groupInfo.isExpanded;\r\n if (remoteGroupPaging && groupInfo.isExpanded && path.length < groups.length) {\r\n return loadGroupTotalCount(dataSource, {\r\n filter: createGroupFilter(path, {\r\n filter: dataSource.lastLoadOptions().filter,\r\n group: dataSource.group()\r\n }),\r\n group: [groups[path.length]],\r\n select: dataSource.select()\r\n }).done((function(groupCount) {\r\n groupInfo.count = groupCount\r\n }))\r\n }\r\n return (new Deferred).resolve()\r\n }\r\n return (new Deferred).reject()\r\n },\r\n handleDataLoading: function(options) {\r\n var storeLoadOptions = options.storeLoadOptions;\r\n var groups = dataGridCore.normalizeSortingInfo(storeLoadOptions.group || options.loadOptions.group);\r\n if (options.isCustomLoading || !groups.length) {\r\n return\r\n }\r\n if (options.remoteOperations.grouping) {\r\n var remotePaging = this._dataSource.remoteOperations().paging;\r\n storeLoadOptions.group = dataGridCore.normalizeSortingInfo(storeLoadOptions.group);\r\n storeLoadOptions.group.forEach((function(group, index) {\r\n var isLastGroup = index === storeLoadOptions.group.length - 1;\r\n group.isExpanded = !remotePaging || !isLastGroup\r\n }))\r\n }\r\n options.group = options.group || groups;\r\n if (options.remoteOperations.paging) {\r\n options.skip = storeLoadOptions.skip;\r\n options.take = storeLoadOptions.take;\r\n storeLoadOptions.requireGroupCount = true;\r\n storeLoadOptions.group = groups.slice(0, 1);\r\n this._updatePagingOptions(options);\r\n storeLoadOptions.skip = options.skip;\r\n storeLoadOptions.take = options.take\r\n }\r\n },\r\n handleDataLoadedCore: function(options, callBase) {\r\n var loadedGroupCount = dataGridCore.normalizeSortingInfo(options.storeLoadOptions.group || options.loadOptions.group).length;\r\n var groupCount = options.group ? options.group.length : 0;\r\n var totalCount;\r\n var expandedInfo = {};\r\n if (options.isCustomLoading) {\r\n callBase(options);\r\n processGroupItems(this, options.data, loadedGroupCount, expandedInfo, [], options.isCustomLoading, options.storeLoadOptions.isLoadingAll)\r\n } else {\r\n if (!options.remoteOperations.paging) {\r\n this.foreachGroups((function(groupInfo) {\r\n groupInfo.count = 0\r\n }))\r\n }\r\n totalCount = updateGroupInfos(this, options, options.data, loadedGroupCount);\r\n if (totalCount < 0) {\r\n options.data = (new Deferred).reject(errors.Error(\"E1037\"));\r\n return\r\n }\r\n if (!options.remoteOperations.paging) {\r\n if (loadedGroupCount && options.extra && options.loadOptions.requireTotalCount) {\r\n options.extra.totalCount = totalCount;\r\n options.extra.groupCount = options.data.length\r\n }\r\n }\r\n if (groupCount && options.storeLoadOptions.requireGroupCount && !isFinite(options.extra.groupCount)) {\r\n options.data = (new Deferred).reject(dataErrors.Error(\"E4022\"));\r\n return\r\n }\r\n this.updateTotalItemsCount(options);\r\n if (!options.remoteOperations.paging) {\r\n this._updatePagingOptions(options)\r\n }\r\n callBase(options);\r\n if (!options.remoteOperations.paging) {\r\n this._processPaging(options, loadedGroupCount)\r\n }\r\n }\r\n loadGroupItems(this, options, loadedGroupCount, expandedInfo, 0, options.data)\r\n },\r\n _processSkips: function(items, skips, groupCount) {\r\n if (!groupCount) {\r\n return\r\n }\r\n var firstItem = items[0];\r\n var skip = skips[0];\r\n var children = firstItem && firstItem.items;\r\n if (void 0 !== skip) {\r\n firstItem.isContinuation = true;\r\n if (children) {\r\n firstItem.items = children.slice(skip);\r\n this._processSkips(firstItem.items, skips.slice(1), groupCount - 1)\r\n }\r\n }\r\n },\r\n _processTakes: function(items, skips, takes, groupCount, parents) {\r\n if (!groupCount || !items) {\r\n return\r\n }\r\n parents = parents || [];\r\n var lastItem = items[items.length - 1];\r\n var children = lastItem && lastItem.items;\r\n var take = takes[0];\r\n var skip = skips[0];\r\n if (lastItem) {\r\n var maxTakeCount = lastItem.count - (lastItem.isContinuation && skip || 0) || children.length;\r\n if (void 0 !== take && maxTakeCount > take) {\r\n lastItem.isContinuationOnNextPage = true;\r\n parents.forEach((function(parent) {\r\n parent.isContinuationOnNextPage = true\r\n }));\r\n if (children) {\r\n children = children.slice(0, take);\r\n lastItem.items = children\r\n }\r\n }\r\n parents.push(lastItem);\r\n this._processTakes(children, skips.slice(1), takes.slice(1), groupCount - 1, parents)\r\n }\r\n },\r\n _processPaging: function(options, groupCount) {\r\n this._processSkips(options.data, options.skips, groupCount);\r\n this._processTakes(options.data, options.skips, options.takes, groupCount)\r\n },\r\n isLastLevelGroupItemsPagingLocal: function() {\r\n return false\r\n },\r\n sortLastLevelGroupItems: function(items) {\r\n return items\r\n },\r\n refresh: function(options, operationTypes) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var storeLoadOptions = options.storeLoadOptions;\r\n var group = options.group || options.storeLoadOptions.group;\r\n var oldGroups = dataGridCore.normalizeSortingInfo(that._group);\r\n var isExpanded;\r\n var groupIndex;\r\n\r\n function handleGroup(groupInfo, parents) {\r\n if (parents.length === groupIndex + 1) {\r\n groupInfo.isExpanded = isExpanded\r\n }\r\n }\r\n for (groupIndex = 0; groupIndex < oldGroups.length; groupIndex++) {\r\n isExpanded = isGroupExpanded(group, groupIndex);\r\n if (isGroupExpanded(that._group, groupIndex) !== isExpanded) {\r\n that.foreachGroups(handleGroup)\r\n }\r\n }\r\n that.callBase.apply(this, arguments);\r\n if (group && options.remoteOperations.paging && operationTypes.reload) {\r\n return foreachExpandedGroups(that, (function(groupInfo) {\r\n var groupCountQuery = loadGroupTotalCount(dataSource, {\r\n filter: createGroupFilter(groupInfo.path, {\r\n filter: storeLoadOptions.filter,\r\n group: group\r\n }),\r\n group: group.slice(groupInfo.path.length),\r\n select: storeLoadOptions.select\r\n });\r\n var groupOffsetQuery = loadGroupTotalCount(dataSource, {\r\n filter: createOffsetFilter(groupInfo.path, {\r\n filter: storeLoadOptions.filter,\r\n group: group\r\n }, true),\r\n group: group.slice(groupInfo.path.length - 1, groupInfo.path.length),\r\n select: storeLoadOptions.select\r\n });\r\n return when(groupOffsetQuery, groupCountQuery).done((function(offset, count) {\r\n offset = parseInt(offset.length ? offset[0] : offset);\r\n count = parseInt(count.length ? count[0] : count);\r\n groupInfo.offset = offset;\r\n if (groupInfo.count !== count) {\r\n groupInfo.count = count;\r\n that.updateTotalItemsCount(options)\r\n }\r\n }))\r\n }), true)\r\n }\r\n }\r\n }\r\n}());\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.grouping.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n GroupingHelper as ExpandedGroupingHelper\r\n} from \"./ui.data_grid.grouping.expanded\";\r\nimport {\r\n GroupingHelper as CollapsedGroupingHelper\r\n} from \"./ui.data_grid.grouping.collapsed\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport dataSourceAdapter from \"./ui.data_grid.data_source_adapter\";\r\nimport {\r\n isDefined,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n registerKeyboardAction\r\n} from \"../grid_core/ui.grid_core.accessibility\";\r\nimport {\r\n setTabIndex,\r\n restoreFocus\r\n} from \"../shared/accessibility\";\r\nvar DATAGRID_GROUP_PANEL_CLASS = \"dx-datagrid-group-panel\";\r\nvar DATAGRID_GROUP_PANEL_MESSAGE_CLASS = \"dx-group-panel-message\";\r\nvar DATAGRID_GROUP_PANEL_ITEM_CLASS = \"dx-group-panel-item\";\r\nvar DATAGRID_GROUP_PANEL_LABEL_CLASS = \"dx-toolbar-label\";\r\nvar DATAGRID_EXPAND_CLASS = \"dx-datagrid-expand\";\r\nvar DATAGRID_GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar HEADER_FILTER_CLASS_SELECTOR = \".dx-header-filter\";\r\nvar GroupingDataSourceAdapterExtender = {\r\n init: function() {\r\n this.callBase.apply(this, arguments);\r\n this._initGroupingHelper()\r\n },\r\n _initGroupingHelper: function(options) {\r\n var grouping = this._grouping;\r\n var isAutoExpandAll = this.option(\"grouping.autoExpandAll\");\r\n var isFocusedRowEnabled = this.option(\"focusedRowEnabled\");\r\n var remoteOperations = options ? options.remoteOperations : this.remoteOperations();\r\n var isODataRemoteOperations = remoteOperations.filtering && remoteOperations.sorting && remoteOperations.paging;\r\n if (isODataRemoteOperations && !remoteOperations.grouping && (isAutoExpandAll || !isFocusedRowEnabled)) {\r\n if (!grouping || grouping instanceof CollapsedGroupingHelper) {\r\n this._grouping = new ExpandedGroupingHelper(this)\r\n }\r\n } else if (!grouping || grouping instanceof ExpandedGroupingHelper) {\r\n this._grouping = new CollapsedGroupingHelper(this)\r\n }\r\n },\r\n totalItemsCount: function() {\r\n var totalCount = this.callBase();\r\n return totalCount > 0 && this._dataSource.group() && this._dataSource.requireTotalCount() ? totalCount + this._grouping.totalCountCorrection() : totalCount\r\n },\r\n itemsCount: function() {\r\n return this._dataSource.group() ? this._grouping.itemsCount() || 0 : this.callBase.apply(this, arguments)\r\n },\r\n allowCollapseAll: function() {\r\n return this._grouping.allowCollapseAll()\r\n },\r\n isGroupItemCountable: function(item) {\r\n return this._grouping.isGroupItemCountable(item)\r\n },\r\n isRowExpanded: function(key) {\r\n var groupInfo = this._grouping.findGroupInfo(key);\r\n return groupInfo ? groupInfo.isExpanded : !this._grouping.allowCollapseAll()\r\n },\r\n collapseAll: function(groupIndex) {\r\n return this._collapseExpandAll(groupIndex, false)\r\n },\r\n expandAll: function(groupIndex) {\r\n return this._collapseExpandAll(groupIndex, true)\r\n },\r\n _collapseExpandAll: function(groupIndex, isExpand) {\r\n var dataSource = this._dataSource;\r\n var group = dataSource.group();\r\n var groups = gridCore.normalizeSortingInfo(group || []);\r\n if (groups.length) {\r\n for (var i = 0; i < groups.length; i++) {\r\n if (void 0 === groupIndex || groupIndex === i) {\r\n groups[i].isExpanded = isExpand\r\n } else if (group && group[i]) {\r\n groups[i].isExpanded = group[i].isExpanded\r\n }\r\n }\r\n dataSource.group(groups);\r\n this._grouping.foreachGroups((function(groupInfo, parents) {\r\n if (void 0 === groupIndex || groupIndex === parents.length - 1) {\r\n groupInfo.isExpanded = isExpand\r\n }\r\n }), false, true);\r\n this.resetPagesCache()\r\n }\r\n return true\r\n },\r\n refresh: function() {\r\n this.callBase.apply(this, arguments);\r\n return this._grouping.refresh.apply(this._grouping, arguments)\r\n },\r\n changeRowExpand: function(path) {\r\n var dataSource = this._dataSource;\r\n if (dataSource.group()) {\r\n dataSource.beginLoading();\r\n if (this._lastLoadOptions) {\r\n this._lastLoadOptions.groupExpand = true\r\n }\r\n return this._changeRowExpandCore(path).always((function() {\r\n dataSource.endLoading()\r\n }))\r\n }\r\n },\r\n _changeRowExpandCore: function(path) {\r\n return this._grouping.changeRowExpand(path)\r\n },\r\n _hasGroupLevelsExpandState: function(group, isExpanded) {\r\n if (group && Array.isArray(group)) {\r\n for (var i = 0; i < group.length; i++) {\r\n if (group[i].isExpanded === isExpanded) {\r\n return true\r\n }\r\n }\r\n }\r\n },\r\n _customizeRemoteOperations: function(options, operationTypes) {\r\n var remoteOperations = options.remoteOperations;\r\n if (options.storeLoadOptions.group) {\r\n if (remoteOperations.grouping && !options.isCustomLoading) {\r\n if (!remoteOperations.groupPaging || this._hasGroupLevelsExpandState(options.storeLoadOptions.group, true)) {\r\n remoteOperations.paging = false\r\n }\r\n }\r\n if (!remoteOperations.grouping && (!remoteOperations.sorting || !remoteOperations.filtering || options.isCustomLoading || this._hasGroupLevelsExpandState(options.storeLoadOptions.group, false))) {\r\n remoteOperations.paging = false\r\n }\r\n } else if (!options.isCustomLoading && remoteOperations.paging && operationTypes.grouping) {\r\n this.resetCache()\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _handleDataLoading: function(options) {\r\n this.callBase(options);\r\n this._initGroupingHelper(options);\r\n return this._grouping.handleDataLoading(options)\r\n },\r\n _handleDataLoaded: function(options) {\r\n return this._grouping.handleDataLoaded(options, this.callBase.bind(this))\r\n },\r\n _handleDataLoadedCore: function(options) {\r\n return this._grouping.handleDataLoadedCore(options, this.callBase.bind(this))\r\n }\r\n};\r\ndataSourceAdapter.extend(GroupingDataSourceAdapterExtender);\r\nvar GroupingDataControllerExtender = {\r\n init: function() {\r\n this.callBase();\r\n this.createAction(\"onRowExpanding\");\r\n this.createAction(\"onRowExpanded\");\r\n this.createAction(\"onRowCollapsing\");\r\n this.createAction(\"onRowCollapsed\")\r\n },\r\n _beforeProcessItems: function(items) {\r\n var groupColumns = this._columnsController.getGroupColumns();\r\n items = this.callBase(items);\r\n if (items.length && groupColumns.length) {\r\n items = this._processGroupItems(items, groupColumns.length)\r\n }\r\n return items\r\n },\r\n _processItem: function(item, options) {\r\n if (isDefined(item.groupIndex) && isString(item.rowType) && 0 === item.rowType.indexOf(\"group\")) {\r\n item = this._processGroupItem(item, options);\r\n options.dataIndex = 0\r\n } else {\r\n item = this.callBase.apply(this, arguments)\r\n }\r\n return item\r\n },\r\n _processGroupItem: function(item) {\r\n return item\r\n },\r\n _processGroupItems: function(items, groupsCount, options) {\r\n var groupedColumns = this._columnsController.getGroupColumns();\r\n var column = groupedColumns[groupedColumns.length - groupsCount];\r\n if (!options) {\r\n var scrollingMode = this.option(\"scrolling.mode\");\r\n options = {\r\n collectContinuationItems: \"virtual\" !== scrollingMode && \"infinite\" !== scrollingMode,\r\n resultItems: [],\r\n path: [],\r\n values: []\r\n }\r\n }\r\n var resultItems = options.resultItems;\r\n if (options.data) {\r\n if (options.collectContinuationItems || !options.data.isContinuation) {\r\n resultItems.push({\r\n rowType: \"group\",\r\n data: options.data,\r\n groupIndex: options.path.length - 1,\r\n isExpanded: !!options.data.items,\r\n key: options.path.slice(0),\r\n values: options.values.slice(0)\r\n })\r\n }\r\n }\r\n if (items) {\r\n if (0 === groupsCount) {\r\n resultItems.push.apply(resultItems, items)\r\n } else {\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n if (item && \"items\" in item) {\r\n options.data = item;\r\n options.path.push(item.key);\r\n options.values.push(column && column.deserializeValue && !column.calculateDisplayValue ? column.deserializeValue(item.key) : item.key);\r\n this._processGroupItems(item.items, groupsCount - 1, options);\r\n options.data = void 0;\r\n options.path.pop();\r\n options.values.pop()\r\n } else {\r\n resultItems.push(item)\r\n }\r\n }\r\n }\r\n }\r\n return resultItems\r\n },\r\n publicMethods: function() {\r\n return this.callBase().concat([\"collapseAll\", \"expandAll\", \"isRowExpanded\", \"expandRow\", \"collapseRow\"])\r\n },\r\n collapseAll: function(groupIndex) {\r\n var dataSource = this._dataSource;\r\n if (dataSource && dataSource.collapseAll(groupIndex)) {\r\n dataSource.pageIndex(0);\r\n dataSource.reload()\r\n }\r\n },\r\n expandAll: function(groupIndex) {\r\n var dataSource = this._dataSource;\r\n if (dataSource && dataSource.expandAll(groupIndex)) {\r\n dataSource.pageIndex(0);\r\n dataSource.reload()\r\n }\r\n },\r\n changeRowExpand: function(key) {\r\n var that = this;\r\n var expanded = that.isRowExpanded(key);\r\n var args = {\r\n key: key,\r\n expanded: expanded\r\n };\r\n that.executeAction(expanded ? \"onRowCollapsing\" : \"onRowExpanding\", args);\r\n if (!args.cancel) {\r\n return when(that._changeRowExpandCore(key)).done((function() {\r\n args.expanded = !expanded;\r\n that.executeAction(expanded ? \"onRowCollapsed\" : \"onRowExpanded\", args)\r\n }))\r\n }\r\n return (new Deferred).resolve()\r\n },\r\n _changeRowExpandCore: function(key) {\r\n var that = this;\r\n var dataSource = this._dataSource;\r\n var d = new Deferred;\r\n if (!dataSource) {\r\n d.resolve()\r\n } else {\r\n when(dataSource.changeRowExpand(key)).done((function() {\r\n that.load().done(d.resolve).fail(d.reject)\r\n })).fail(d.reject)\r\n }\r\n return d\r\n },\r\n isRowExpanded: function(key) {\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.isRowExpanded(key)\r\n },\r\n expandRow: function(key) {\r\n if (!this.isRowExpanded(key)) {\r\n return this.changeRowExpand(key)\r\n }\r\n return (new Deferred).resolve()\r\n },\r\n collapseRow: function(key) {\r\n if (this.isRowExpanded(key)) {\r\n return this.changeRowExpand(key)\r\n }\r\n return (new Deferred).resolve()\r\n },\r\n optionChanged: function(args) {\r\n if (\"grouping\" === args.name) {\r\n args.name = \"dataSource\"\r\n }\r\n this.callBase(args)\r\n }\r\n};\r\nvar onGroupingMenuItemClick = function(column, params) {\r\n var columnsController = this._columnsController;\r\n switch (params.itemData.value) {\r\n case \"group\":\r\n var groups = columnsController._dataSource.group() || [];\r\n columnsController.columnOption(column.dataField, \"groupIndex\", groups.length);\r\n break;\r\n case \"ungroup\":\r\n columnsController.columnOption(column.dataField, \"groupIndex\", -1);\r\n break;\r\n case \"ungroupAll\":\r\n this.component.clearGrouping()\r\n }\r\n};\r\nexport var GroupingHeaderPanelExtender = {\r\n _getToolbarItems: function() {\r\n var items = this.callBase();\r\n return this._appendGroupingItem(items)\r\n },\r\n _appendGroupingItem: function(items) {\r\n if (this._isGroupPanelVisible()) {\r\n var isRendered = false;\r\n var toolbarItem = {\r\n template: () => {\r\n var $groupPanel = $(\"
\").addClass(DATAGRID_GROUP_PANEL_CLASS);\r\n this._updateGroupPanelContent($groupPanel);\r\n registerKeyboardAction(\"groupPanel\", this, $groupPanel, void 0, this._handleActionKeyDown.bind(this));\r\n return $groupPanel\r\n },\r\n name: \"groupPanel\",\r\n onItemRendered: () => {\r\n isRendered && this.renderCompleted.fire();\r\n isRendered = true\r\n },\r\n location: \"before\",\r\n locateInMenu: \"never\",\r\n sortIndex: 1\r\n };\r\n items.push(toolbarItem)\r\n }\r\n return items\r\n },\r\n _handleActionKeyDown: function(args) {\r\n var event = args.event;\r\n var $target = $(event.target);\r\n var groupColumnIndex = $target.closest(\".\".concat(DATAGRID_GROUP_PANEL_ITEM_CLASS)).index();\r\n var column = this._columnsController.getGroupColumns()[groupColumnIndex];\r\n var columnIndex = column && column.index;\r\n if ($target.is(HEADER_FILTER_CLASS_SELECTOR)) {\r\n this.getController(\"headerFilter\").showHeaderFilterMenu(columnIndex, true)\r\n } else {\r\n this._processGroupItemAction(columnIndex)\r\n }\r\n event.preventDefault()\r\n },\r\n _isGroupPanelVisible: function() {\r\n var groupPanelOptions = this.option(\"groupPanel\");\r\n var isVisible;\r\n if (groupPanelOptions) {\r\n isVisible = groupPanelOptions.visible;\r\n if (\"auto\" === isVisible) {\r\n isVisible = \"desktop\" === devices.current().deviceType ? true : false\r\n }\r\n }\r\n return isVisible\r\n },\r\n _renderGroupPanelItems: function($groupPanel, groupColumns) {\r\n var that = this;\r\n $groupPanel.empty();\r\n each(groupColumns, (function(index, groupColumn) {\r\n that._createGroupPanelItem($groupPanel, groupColumn)\r\n }));\r\n restoreFocus(this)\r\n },\r\n _createGroupPanelItem: function($rootElement, groupColumn) {\r\n var $groupPanelItem = $(\"
\").addClass(groupColumn.cssClass).addClass(DATAGRID_GROUP_PANEL_ITEM_CLASS).data(\"columnData\", groupColumn).appendTo($rootElement).text(groupColumn.caption);\r\n setTabIndex(this, $groupPanelItem);\r\n return $groupPanelItem\r\n },\r\n _columnOptionChanged: function(e) {\r\n if (!this._requireReady && !gridCore.checkChanges(e.optionNames, [\"width\", \"visibleWidth\"])) {\r\n var $toolbarElement = this.element();\r\n var $groupPanel = $toolbarElement && $toolbarElement.find(\".\" + DATAGRID_GROUP_PANEL_CLASS);\r\n if ($groupPanel && $groupPanel.length) {\r\n this._updateGroupPanelContent($groupPanel);\r\n this.renderCompleted.fire()\r\n }\r\n }\r\n this.callBase()\r\n },\r\n _updateGroupPanelContent: function($groupPanel) {\r\n var groupColumns = this.getController(\"columns\").getGroupColumns();\r\n var groupPanelOptions = this.option(\"groupPanel\");\r\n this._renderGroupPanelItems($groupPanel, groupColumns);\r\n if (groupPanelOptions.allowColumnDragging && !groupColumns.length) {\r\n $(\"
\").addClass(DATAGRID_GROUP_PANEL_MESSAGE_CLASS).text(groupPanelOptions.emptyPanelText).appendTo($groupPanel);\r\n $groupPanel.closest(\".\" + DATAGRID_GROUP_PANEL_LABEL_CLASS).css(\"maxWidth\", \"none\");\r\n this.updateToolbarDimensions()\r\n }\r\n },\r\n allowDragging: function(column) {\r\n var groupPanelOptions = this.option(\"groupPanel\");\r\n return this._isGroupPanelVisible() && groupPanelOptions.allowColumnDragging && column && column.allowGrouping\r\n },\r\n getColumnElements: function() {\r\n var $element = this.element();\r\n return $element && $element.find(\".\" + DATAGRID_GROUP_PANEL_ITEM_CLASS)\r\n },\r\n getColumns: function() {\r\n return this.getController(\"columns\").getGroupColumns()\r\n },\r\n getBoundingRect: function() {\r\n var $element = this.element();\r\n if ($element && $element.find(\".\" + DATAGRID_GROUP_PANEL_CLASS).length) {\r\n var offset = $element.offset();\r\n return {\r\n top: offset.top,\r\n bottom: offset.top + $element.height()\r\n }\r\n }\r\n return null\r\n },\r\n getName: function() {\r\n return \"group\"\r\n },\r\n getContextMenuItems: function(options) {\r\n var contextMenuEnabled = this.option(\"grouping.contextMenuEnabled\");\r\n var $groupedColumnElement = $(options.targetElement).closest(\".\" + DATAGRID_GROUP_PANEL_ITEM_CLASS);\r\n var items;\r\n if ($groupedColumnElement.length) {\r\n options.column = $groupedColumnElement.data(\"columnData\")\r\n }\r\n if (contextMenuEnabled && options.column) {\r\n var column = options.column;\r\n var isGroupingAllowed = isDefined(column.allowGrouping) ? column.allowGrouping : true;\r\n if (isGroupingAllowed) {\r\n var isColumnGrouped = isDefined(column.groupIndex) && column.groupIndex > -1;\r\n var groupingTexts = this.option(\"grouping.texts\");\r\n var onItemClick = onGroupingMenuItemClick.bind(this, column);\r\n items = [{\r\n text: groupingTexts.ungroup,\r\n value: \"ungroup\",\r\n disabled: !isColumnGrouped,\r\n onItemClick: onItemClick\r\n }, {\r\n text: groupingTexts.ungroupAll,\r\n value: \"ungroupAll\",\r\n onItemClick: onItemClick\r\n }]\r\n }\r\n }\r\n return items\r\n },\r\n isVisible: function() {\r\n return this.callBase() || this._isGroupPanelVisible()\r\n },\r\n optionChanged: function(args) {\r\n if (\"groupPanel\" === 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\nvar GroupingRowsViewExtender = {\r\n getContextMenuItems: function(options) {\r\n var contextMenuEnabled = this.option(\"grouping.contextMenuEnabled\");\r\n var items;\r\n if (contextMenuEnabled && options.row && \"group\" === options.row.rowType) {\r\n var columnsController = this._columnsController;\r\n var column = columnsController.columnOption(\"groupIndex:\" + options.row.groupIndex);\r\n if (column && column.allowGrouping) {\r\n var groupingTexts = this.option(\"grouping.texts\");\r\n var onItemClick = onGroupingMenuItemClick.bind(this, column);\r\n items = [];\r\n items.push({\r\n text: groupingTexts.ungroup,\r\n value: \"ungroup\",\r\n onItemClick: onItemClick\r\n }, {\r\n text: groupingTexts.ungroupAll,\r\n value: \"ungroupAll\",\r\n onItemClick: onItemClick\r\n })\r\n }\r\n }\r\n return items\r\n },\r\n _rowClick: function(e) {\r\n var expandMode = this.option(\"grouping.expandMode\");\r\n var scrollingMode = this.option(\"scrolling.mode\");\r\n var isGroupRowStateChanged = \"infinite\" !== scrollingMode && \"rowClick\" === expandMode && $(e.event.target).closest(\".\" + DATAGRID_GROUP_ROW_CLASS).length;\r\n var isExpandButtonClicked = $(e.event.target).closest(\".\" + DATAGRID_EXPAND_CLASS).length;\r\n if (isGroupRowStateChanged || isExpandButtonClicked) {\r\n this._changeGroupRowState(e)\r\n }\r\n this.callBase(e)\r\n },\r\n _changeGroupRowState: function(e) {\r\n var dataController = this.getController(\"data\");\r\n var row = dataController.items()[e.rowIndex];\r\n var allowCollapsing = this._columnsController.columnOption(\"groupIndex:\" + row.groupIndex, \"allowCollapsing\");\r\n if (\"data\" === row.rowType || \"group\" === row.rowType && false !== allowCollapsing) {\r\n dataController.changeRowExpand(row.key, true);\r\n e.event.preventDefault();\r\n e.handled = true\r\n }\r\n }\r\n};\r\nvar columnHeadersViewExtender = {\r\n getContextMenuItems: function(options) {\r\n var contextMenuEnabled = this.option(\"grouping.contextMenuEnabled\");\r\n var items = this.callBase(options);\r\n if (contextMenuEnabled && options.row && (\"header\" === options.row.rowType || \"detailAdaptive\" === options.row.rowType)) {\r\n var column = options.column;\r\n if (!column.command && (!isDefined(column.allowGrouping) || column.allowGrouping)) {\r\n var groupingTexts = this.option(\"grouping.texts\");\r\n var isColumnGrouped = isDefined(column.groupIndex) && column.groupIndex > -1;\r\n var onItemClick = onGroupingMenuItemClick.bind(this, column);\r\n items = items || [];\r\n items.push({\r\n text: groupingTexts.groupByThisColumn,\r\n value: \"group\",\r\n beginGroup: true,\r\n disabled: isColumnGrouped,\r\n onItemClick: onItemClick\r\n });\r\n if (column.showWhenGrouped) {\r\n items.push({\r\n text: groupingTexts.ungroup,\r\n value: \"ungroup\",\r\n disabled: !isColumnGrouped,\r\n onItemClick: onItemClick\r\n })\r\n }\r\n items.push({\r\n text: groupingTexts.ungroupAll,\r\n value: \"ungroupAll\",\r\n onItemClick: onItemClick\r\n })\r\n }\r\n }\r\n return items\r\n }\r\n};\r\ngridCore.registerModule(\"grouping\", {\r\n defaultOptions: function() {\r\n return {\r\n grouping: {\r\n autoExpandAll: true,\r\n allowCollapsing: true,\r\n contextMenuEnabled: false,\r\n expandMode: \"buttonClick\",\r\n texts: {\r\n groupContinuesMessage: messageLocalization.format(\"dxDataGrid-groupContinuesMessage\"),\r\n groupContinuedMessage: messageLocalization.format(\"dxDataGrid-groupContinuedMessage\"),\r\n groupByThisColumn: messageLocalization.format(\"dxDataGrid-groupHeaderText\"),\r\n ungroup: messageLocalization.format(\"dxDataGrid-ungroupHeaderText\"),\r\n ungroupAll: messageLocalization.format(\"dxDataGrid-ungroupAllText\")\r\n }\r\n },\r\n groupPanel: {\r\n visible: false,\r\n emptyPanelText: messageLocalization.format(\"dxDataGrid-groupPanelEmptyText\"),\r\n allowColumnDragging: true\r\n }\r\n }\r\n },\r\n extenders: {\r\n controllers: {\r\n data: GroupingDataControllerExtender,\r\n columns: {\r\n _getExpandColumnOptions: function() {\r\n var options = this.callBase.apply(this, arguments);\r\n options.cellTemplate = gridCore.getExpandCellTemplate();\r\n return options\r\n }\r\n }\r\n },\r\n views: {\r\n headerPanel: GroupingHeaderPanelExtender,\r\n rowsView: GroupingRowsViewExtender,\r\n columnHeadersView: columnHeadersViewExtender\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.master_detail.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n masterDetailModule\r\n} from \"../grid_core/ui.grid_core.master_detail\";\r\ngridCore.registerModule(\"masterDetail\", masterDetailModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.editor_factory.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n editorFactoryModule\r\n} from \"../grid_core/ui.grid_core.editor_factory\";\r\ngridCore.registerModule(\"editorFactory\", editorFactoryModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.editing.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport \"./ui.data_grid.editor_factory\";\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n editingModule\r\n} from \"../grid_core/ui.grid_core.editing\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\ngridCore.registerModule(\"editing\", extend(true, {}, editingModule, {\r\n extenders: {\r\n controllers: {\r\n data: {\r\n _changeRowExpandCore: function(key) {\r\n var editingController = this._editingController;\r\n if (Array.isArray(key)) {\r\n editingController && editingController.refresh()\r\n }\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n }\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.editing_row_based.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n editingRowBasedModule\r\n} from \"../grid_core/ui.grid_core.editing_row_based\";\r\ngridCore.registerModule(\"editingRowBased\", editingRowBasedModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.editing_form_based.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n editingFormBasedModule\r\n} from \"../grid_core/ui.grid_core.editing_form_based\";\r\ngridCore.registerModule(\"editingFormBased\", editingFormBasedModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.editing_cell_based.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport editingCellBasedModule from \"../grid_core/ui.grid_core.editing_cell_based\";\r\ngridCore.registerModule(\"editingCellBased\", editingCellBasedModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.validating.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n validatingModule\r\n} from \"../grid_core/ui.grid_core.validating\";\r\ngridCore.registerModule(\"validating\", validatingModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.virtual_scrolling.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport dataSourceAdapter from \"./ui.data_grid.data_source_adapter\";\r\nimport {\r\n virtualScrollingModule\r\n} from \"../grid_core/ui.grid_core.virtual_scrolling\";\r\ngridCore.registerModule(\"virtualScrolling\", virtualScrollingModule);\r\ndataSourceAdapter.extend(virtualScrollingModule.extenders.dataSourceAdapter);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.filter_row.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport core from \"./ui.data_grid.core\";\r\nimport {\r\n filterRowModule\r\n} from \"../grid_core/ui.grid_core.filter_row\";\r\ncore.registerModule(\"filterRow\", filterRowModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.header_filter.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport core from \"./ui.data_grid.core\";\r\nimport {\r\n headerFilterModule\r\n} from \"../grid_core/ui.grid_core.header_filter\";\r\ncore.registerModule(\"headerFilter\", headerFilterModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.filter_sync.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport core from \"./ui.data_grid.core\";\r\nimport {\r\n filterSyncModule\r\n} from \"../grid_core/ui.grid_core.filter_sync\";\r\ncore.registerModule(\"filterSync\", filterSyncModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.filter_builder.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport core from \"./ui.data_grid.core\";\r\nimport {\r\n filterBuilderModule\r\n} from \"../grid_core/ui.grid_core.filter_builder\";\r\ncore.registerModule(\"filterBuilder\", filterBuilderModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.filter_panel.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport core from \"./ui.data_grid.core\";\r\nimport {\r\n filterPanelModule\r\n} from \"../grid_core/ui.grid_core.filter_panel\";\r\ncore.registerModule(\"filterPanel\", filterPanelModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.search.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n searchModule\r\n} from \"../grid_core/ui.grid_core.search\";\r\ngridCore.registerModule(\"search\", searchModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.pager.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n pagerModule\r\n} from \"../grid_core/ui.grid_core.pager\";\r\ngridCore.registerModule(\"pager\", pagerModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.columns_resizing_reordering.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n columnsResizingReorderingModule\r\n} from \"../grid_core/ui.grid_core.columns_resizing_reordering\";\r\nexport var DraggingHeaderView = columnsResizingReorderingModule.views.draggingHeaderView;\r\nexport var DraggingHeaderViewController = columnsResizingReorderingModule.controllers.draggingHeader;\r\nexport var ColumnsSeparatorView = columnsResizingReorderingModule.views.columnsSeparatorView;\r\nexport var TablePositionViewController = columnsResizingReorderingModule.controllers.tablePosition;\r\nexport var ColumnsResizerViewController = columnsResizingReorderingModule.controllers.columnsResizer;\r\nexport var TrackerView = columnsResizingReorderingModule.views.trackerView;\r\ngridCore.registerModule(\"columnsResizingReordering\", columnsResizingReorderingModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.keyboard_navigation.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n keyboardNavigationModule\r\n} from \"../grid_core/ui.grid_core.keyboard_navigation\";\r\ngridCore.registerModule(\"keyboardNavigation\", keyboardNavigationModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/aggregate_calculator.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../../core/class\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport {\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nimport {\r\n errors\r\n} from \"../../data/errors\";\r\nimport {\r\n aggregators\r\n} from \"../../data/utils\";\r\n\r\nfunction depthFirstSearch(i, depth, root, callback) {\r\n var j = 0;\r\n if (i < depth) {\r\n for (; j < root.items.length; j++) {\r\n depthFirstSearch(i + 1, depth, root.items[j], callback)\r\n }\r\n }\r\n if (i === depth) {\r\n callback(root)\r\n }\r\n}\r\n\r\nfunction map(array, callback) {\r\n var i;\r\n if (\"map\" in array) {\r\n return array.map(callback)\r\n }\r\n var result = new Array(array.length);\r\n for (i in array) {\r\n result[i] = callback(array[i], i)\r\n }\r\n return result\r\n}\r\n\r\nfunction isEmpty(x) {\r\n return x !== x || \"\" === x || null === x || void 0 === x\r\n}\r\n\r\nfunction isCount(aggregator) {\r\n return aggregator === aggregators.count\r\n}\r\n\r\nfunction normalizeAggregate(aggregate) {\r\n var selector = compileGetter(aggregate.selector);\r\n var skipEmptyValues = \"skipEmptyValues\" in aggregate ? aggregate.skipEmptyValues : true;\r\n var aggregator = aggregate.aggregator;\r\n if (\"string\" === typeof aggregator) {\r\n aggregator = aggregators[aggregator];\r\n if (!aggregator) {\r\n throw errors.Error(\"E4001\", aggregate.aggregator)\r\n }\r\n }\r\n return {\r\n selector: selector,\r\n aggregator: aggregator,\r\n skipEmptyValues: skipEmptyValues\r\n }\r\n}\r\nexport default Class.inherit({\r\n ctor: function(options) {\r\n this._data = options.data;\r\n this._groupLevel = options.groupLevel || 0;\r\n this._totalAggregates = map(options.totalAggregates || [], normalizeAggregate);\r\n this._groupAggregates = map(options.groupAggregates || [], normalizeAggregate);\r\n this._totals = []\r\n },\r\n calculate: function() {\r\n if (this._totalAggregates.length) {\r\n this._calculateTotals(0, {\r\n items: this._data\r\n })\r\n }\r\n if (this._groupAggregates.length && this._groupLevel > 0) {\r\n this._calculateGroups({\r\n items: this._data\r\n })\r\n }\r\n },\r\n totalAggregates: function() {\r\n return this._totals\r\n },\r\n _aggregate: function(aggregates, data, container) {\r\n var length = data.items ? data.items.length : 0;\r\n for (var i = 0; i < aggregates.length; i++) {\r\n if (isCount(aggregates[i].aggregator)) {\r\n container[i] = (container[i] || 0) + length;\r\n continue\r\n }\r\n for (var j = 0; j < length; j++) {\r\n this._accumulate(i, aggregates[i], container, data.items[j])\r\n }\r\n }\r\n },\r\n _calculateTotals: function(level, data) {\r\n if (0 === level) {\r\n this._totals = this._seed(this._totalAggregates)\r\n }\r\n if (level === this._groupLevel) {\r\n this._aggregate(this._totalAggregates, data, this._totals)\r\n } else {\r\n for (var i = 0; i < data.items.length; i++) {\r\n this._calculateTotals(level + 1, data.items[i])\r\n }\r\n }\r\n if (0 === level) {\r\n this._totals = this._finalize(this._totalAggregates, this._totals)\r\n }\r\n },\r\n _calculateGroups: function(root) {\r\n var maxLevel = this._groupLevel;\r\n var currentLevel = maxLevel + 1;\r\n var seedFn = this._seed.bind(this, this._groupAggregates);\r\n var stepFn = this._aggregate.bind(this, this._groupAggregates);\r\n var finalizeFn = this._finalize.bind(this, this._groupAggregates);\r\n\r\n function aggregator(node) {\r\n node.aggregates = seedFn(currentLevel - 1);\r\n if (currentLevel === maxLevel) {\r\n stepFn(node, node.aggregates)\r\n } else {\r\n depthFirstSearch(currentLevel, maxLevel, node, (function(innerNode) {\r\n stepFn(innerNode, node.aggregates)\r\n }))\r\n }\r\n node.aggregates = finalizeFn(node.aggregates)\r\n }\r\n while (--currentLevel > 0) {\r\n depthFirstSearch(0, currentLevel, root, aggregator)\r\n }\r\n },\r\n _seed: function(aggregates, groupIndex) {\r\n return map(aggregates, (function(aggregate) {\r\n var aggregator = aggregate.aggregator;\r\n var seed = \"seed\" in aggregator ? isFunction(aggregator.seed) ? aggregator.seed(groupIndex) : aggregator.seed : NaN;\r\n return seed\r\n }))\r\n },\r\n _accumulate: function(aggregateIndex, aggregate, results, item) {\r\n var value = aggregate.selector(item);\r\n var aggregator = aggregate.aggregator;\r\n var skipEmptyValues = aggregate.skipEmptyValues;\r\n if (skipEmptyValues && isEmpty(value)) {\r\n return\r\n }\r\n if (results[aggregateIndex] !== results[aggregateIndex]) {\r\n results[aggregateIndex] = value\r\n } else {\r\n results[aggregateIndex] = aggregator.step(results[aggregateIndex], value)\r\n }\r\n },\r\n _finalize: function(aggregates, results) {\r\n return map(aggregates, (function(aggregate, index) {\r\n var fin = aggregate.aggregator.finalize;\r\n return fin ? fin(results[index]) : results[index]\r\n }))\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.summary.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isPlainObject,\r\n isEmptyObject,\r\n isString,\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each,\r\n map\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport dataSourceAdapter from \"./ui.data_grid.data_source_adapter\";\r\nimport {\r\n ColumnsView\r\n} from \"../grid_core/ui.grid_core.columns_view\";\r\nimport AggregateCalculator from \"./aggregate_calculator\";\r\nimport dataQuery from \"../../data/query\";\r\nimport storeHelper from \"../../data/store_helper\";\r\nimport {\r\n normalizeSortingInfo\r\n} from \"../../data/utils\";\r\nvar DATAGRID_TOTAL_FOOTER_CLASS = \"dx-datagrid-total-footer\";\r\nvar DATAGRID_SUMMARY_ITEM_CLASS = \"dx-datagrid-summary-item\";\r\nvar DATAGRID_TEXT_CONTENT_CLASS = \"dx-datagrid-text-content\";\r\nvar DATAGRID_GROUP_FOOTER_CLASS = \"dx-datagrid-group-footer\";\r\nvar DATAGRID_GROUP_TEXT_CONTENT_CLASS = \"dx-datagrid-group-text-content\";\r\nvar DATAGRID_NOWRAP_CLASS = \"dx-datagrid-nowrap\";\r\nvar DATAGRID_GROUP_FOOTER_ROW_TYPE = \"groupFooter\";\r\nexport var renderSummaryCell = function(cell, options) {\r\n var $cell = $(cell);\r\n var column = options.column;\r\n var summaryItems = options.summaryItems;\r\n var $summaryItems = [];\r\n if (!column.command && summaryItems) {\r\n for (var i = 0; i < summaryItems.length; i++) {\r\n var summaryItem = summaryItems[i];\r\n $summaryItems.push($(\"
\").css(\"textAlign\", summaryItem.alignment || column.alignment).addClass(DATAGRID_SUMMARY_ITEM_CLASS).addClass(DATAGRID_TEXT_CONTENT_CLASS).addClass(summaryItem.cssClass).toggleClass(DATAGRID_GROUP_TEXT_CONTENT_CLASS, \"group\" === options.rowType).text(gridCore.getSummaryText(summaryItem, options.summaryTexts)))\r\n }\r\n $cell.append($summaryItems)\r\n }\r\n};\r\nvar getSummaryCellOptions = function(that, options) {\r\n var summaryTexts = that.option(\"summary.texts\") || {};\r\n return {\r\n totalItem: options.row,\r\n summaryItems: options.row.summaryCells[options.columnIndex],\r\n summaryTexts: summaryTexts\r\n }\r\n};\r\nvar getGroupAggregates = function(data) {\r\n return data.summary || data.aggregates || []\r\n};\r\nvar recalculateWhileEditing = function(that) {\r\n return that.option(\"summary.recalculateWhileEditing\")\r\n};\r\nexport var FooterView = ColumnsView.inherit({\r\n _getRows: function() {\r\n return this._dataController.footerItems()\r\n },\r\n _getCellOptions: function(options) {\r\n return extend(this.callBase(options), getSummaryCellOptions(this, options))\r\n },\r\n _renderCellContent: function($cell, options) {\r\n renderSummaryCell($cell, options);\r\n this.callBase($cell, options)\r\n },\r\n _renderCore: function(change) {\r\n var needUpdateScrollLeft = false;\r\n var totalItem = this._dataController.footerItems()[0];\r\n if (!change || !change.columnIndices) {\r\n this.element().empty().addClass(DATAGRID_TOTAL_FOOTER_CLASS).toggleClass(DATAGRID_NOWRAP_CLASS, !this.option(\"wordWrapEnabled\"));\r\n needUpdateScrollLeft = true\r\n }\r\n if (totalItem && totalItem.summaryCells && totalItem.summaryCells.length) {\r\n this._updateContent(this._renderTable({\r\n change: change\r\n }), change);\r\n needUpdateScrollLeft && this._updateScrollLeftPosition()\r\n }\r\n },\r\n _updateContent: function($newTable, change) {\r\n if (change && \"update\" === change.changeType && change.columnIndices) {\r\n var $row = this.getTableElement().find(\".dx-row\");\r\n var $newRow = $newTable.find(\".dx-row\");\r\n this._updateCells($row, $newRow, change.columnIndices[0])\r\n } else {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _rowClick: function(e) {\r\n var item = this._dataController.footerItems()[e.rowIndex] || {};\r\n this.executeAction(\"onRowClick\", extend({}, e, item))\r\n },\r\n _columnOptionChanged: function(e) {\r\n var optionNames = e.optionNames;\r\n if (e.changeTypes.grouping) {\r\n return\r\n }\r\n if (optionNames.width || optionNames.visibleWidth) {\r\n this.callBase(e)\r\n }\r\n },\r\n _handleDataChanged: function(e) {\r\n var changeType = e.changeType;\r\n if (\"update\" === e.changeType && e.repaintChangesOnly) {\r\n if (!e.totalColumnIndices) {\r\n this.render()\r\n } else if (e.totalColumnIndices.length) {\r\n this.render(null, {\r\n changeType: \"update\",\r\n columnIndices: [e.totalColumnIndices]\r\n })\r\n }\r\n } else if (\"refresh\" === changeType || \"append\" === changeType || \"prepend\" === changeType) {\r\n this.render()\r\n }\r\n },\r\n getHeight: function() {\r\n return this.getElementHeight()\r\n },\r\n isVisible: function() {\r\n return !!this._dataController.footerItems().length\r\n }\r\n});\r\nvar SummaryDataSourceAdapterExtender = {\r\n init: function() {\r\n this.callBase.apply(this, arguments);\r\n this._totalAggregates = [];\r\n this._summaryGetter = noop\r\n },\r\n summaryGetter: function(_summaryGetter) {\r\n if (!arguments.length) {\r\n return this._summaryGetter\r\n }\r\n if (isFunction(_summaryGetter)) {\r\n this._summaryGetter = _summaryGetter\r\n }\r\n },\r\n summary: function(_summary) {\r\n if (!arguments.length) {\r\n return this._summaryGetter()\r\n }\r\n this._summaryGetter = function() {\r\n return _summary\r\n }\r\n },\r\n totalAggregates: function() {\r\n return this._totalAggregates\r\n },\r\n isLastLevelGroupItemsPagingLocal: function() {\r\n var summary = this.summary();\r\n var sortByGroupsInfo = summary && summary.sortByGroups();\r\n return sortByGroupsInfo && sortByGroupsInfo.length\r\n },\r\n sortLastLevelGroupItems: function(items, groups, paths) {\r\n var groupedItems = storeHelper.multiLevelGroup(dataQuery(items), groups).toArray();\r\n var result = [];\r\n paths.forEach((function(path) {\r\n ! function forEachGroup(groups, groupCount, callback, path) {\r\n path = path || [];\r\n for (var i = 0; i < groups.length; i++) {\r\n path.push(groups[i].key);\r\n if (1 === groupCount) {\r\n callback(path, groups[i].items)\r\n } else {\r\n forEachGroup(groups[i].items, groupCount - 1, callback, path)\r\n }\r\n path.pop()\r\n }\r\n }(groupedItems, groups.length, (function(itemsPath, items) {\r\n if (path.toString() === itemsPath.toString()) {\r\n result = result.concat(items)\r\n }\r\n }))\r\n }));\r\n return result\r\n }\r\n};\r\nvar SummaryDataSourceAdapterClientExtender = function() {\r\n var calculateAggregates = function(that, summary, data, groupLevel) {\r\n var calculator;\r\n if (recalculateWhileEditing(that)) {\r\n var editingController = that.getController(\"editing\");\r\n if (editingController) {\r\n var insertedData = editingController.getInsertedData();\r\n if (insertedData.length) {\r\n data = function applyAddedData(data, insertedData, groupLevel) {\r\n if (groupLevel) {\r\n return applyAddedData(data, insertedData.map(item => ({\r\n items: [item]\r\n }), groupLevel - 1))\r\n }\r\n return data.concat(insertedData)\r\n }(data, insertedData, groupLevel)\r\n }\r\n var removedData = editingController.getRemovedData();\r\n if (removedData.length) {\r\n data = function applyRemovedData(data, removedData, groupLevel) {\r\n if (groupLevel) {\r\n return data.map(data => {\r\n var updatedData = {};\r\n var updatedItems = applyRemovedData(data.items || [], removedData, groupLevel - 1);\r\n Object.defineProperty(updatedData, \"aggregates\", {\r\n get: () => data.aggregates,\r\n set: value => {\r\n data.aggregates = value\r\n }\r\n });\r\n return extend(updatedData, data, {\r\n items: updatedItems\r\n })\r\n })\r\n }\r\n return data.filter(data => removedData.indexOf(data) < 0)\r\n }(data, removedData, groupLevel)\r\n }\r\n }\r\n }\r\n if (summary) {\r\n calculator = new AggregateCalculator({\r\n totalAggregates: summary.totalAggregates,\r\n groupAggregates: summary.groupAggregates,\r\n data: data,\r\n groupLevel: groupLevel\r\n });\r\n calculator.calculate()\r\n }\r\n return calculator ? calculator.totalAggregates() : []\r\n };\r\n var sortGroupsBySummary = function(data, group, summary) {\r\n var sortByGroups = summary && summary.sortByGroups && summary.sortByGroups();\r\n if (sortByGroups && sortByGroups.length) {\r\n return function sortGroupsBySummaryCore(items, groups, sortByGroups) {\r\n if (!items || !groups.length) {\r\n return items\r\n }\r\n var group = groups[0];\r\n var sorts = sortByGroups[0];\r\n var query;\r\n if (group && sorts && sorts.length) {\r\n query = dataQuery(items);\r\n each(sorts, (function(index) {\r\n if (0 === index) {\r\n query = query.sortBy(this.selector, this.desc)\r\n } else {\r\n query = query.thenBy(this.selector, this.desc)\r\n }\r\n }));\r\n query.enumerate().done((function(sortedItems) {\r\n items = sortedItems\r\n }))\r\n }\r\n groups = groups.slice(1);\r\n sortByGroups = sortByGroups.slice(1);\r\n if (groups.length && sortByGroups.length) {\r\n each(items, (function() {\r\n this.items = sortGroupsBySummaryCore(this.items, groups, sortByGroups)\r\n }))\r\n }\r\n return items\r\n }(data, group, sortByGroups)\r\n }\r\n return data\r\n };\r\n return {\r\n _customizeRemoteOperations: function(options) {\r\n var summary = this.summary();\r\n if (summary) {\r\n if (options.remoteOperations.summary) {\r\n if (!options.isCustomLoading || options.storeLoadOptions.isLoadingAll) {\r\n if (options.storeLoadOptions.group) {\r\n if (options.remoteOperations.grouping) {\r\n options.storeLoadOptions.groupSummary = summary.groupAggregates\r\n } else if (summary.groupAggregates.length) {\r\n options.remoteOperations.paging = false\r\n }\r\n }\r\n options.storeLoadOptions.totalSummary = summary.totalAggregates\r\n }\r\n } else if (summary.totalAggregates.length || summary.groupAggregates.length && options.storeLoadOptions.group) {\r\n options.remoteOperations.paging = false\r\n }\r\n }\r\n this.callBase.apply(this, arguments);\r\n var cachedExtra = options.cachedPagesData.extra;\r\n if (cachedExtra && cachedExtra.summary && !options.isCustomLoading) {\r\n options.storeLoadOptions.totalSummary = void 0\r\n }\r\n },\r\n _handleDataLoadedCore: function(options) {\r\n var groups = normalizeSortingInfo(options.storeLoadOptions.group || options.loadOptions.group || []);\r\n var remoteOperations = options.remoteOperations || {};\r\n var summary = this.summaryGetter()(remoteOperations);\r\n var totalAggregates;\r\n if (!options.isCustomLoading || options.storeLoadOptions.isLoadingAll) {\r\n if (remoteOperations.summary) {\r\n if (!remoteOperations.paging && groups.length && summary) {\r\n if (!remoteOperations.grouping) {\r\n calculateAggregates(this, {\r\n groupAggregates: summary.groupAggregates\r\n }, options.data, groups.length)\r\n }\r\n options.data = sortGroupsBySummary(options.data, groups, summary)\r\n }\r\n } else if (!remoteOperations.paging) {\r\n totalAggregates = calculateAggregates(this, summary, options.data, groups.length);\r\n options.data = sortGroupsBySummary(options.data, groups, summary);\r\n options.extra = isPlainObject(options.extra) ? options.extra : {};\r\n options.extra.summary = totalAggregates\r\n }\r\n }\r\n if (!options.isCustomLoading) {\r\n this._totalAggregates = options.extra && options.extra.summary || this._totalAggregates\r\n }\r\n this.callBase(options)\r\n }\r\n }\r\n}();\r\ndataSourceAdapter.extend(SummaryDataSourceAdapterExtender);\r\ndataSourceAdapter.extend(SummaryDataSourceAdapterClientExtender);\r\ngridCore.registerModule(\"summary\", {\r\n defaultOptions: function() {\r\n return {\r\n summary: {\r\n groupItems: void 0,\r\n totalItems: void 0,\r\n calculateCustomSummary: void 0,\r\n skipEmptyValues: true,\r\n recalculateWhileEditing: false,\r\n texts: {\r\n sum: messageLocalization.getFormatter(\"dxDataGrid-summarySum\"),\r\n sumOtherColumn: messageLocalization.getFormatter(\"dxDataGrid-summarySumOtherColumn\"),\r\n min: messageLocalization.getFormatter(\"dxDataGrid-summaryMin\"),\r\n minOtherColumn: messageLocalization.getFormatter(\"dxDataGrid-summaryMinOtherColumn\"),\r\n max: messageLocalization.getFormatter(\"dxDataGrid-summaryMax\"),\r\n maxOtherColumn: messageLocalization.getFormatter(\"dxDataGrid-summaryMaxOtherColumn\"),\r\n avg: messageLocalization.getFormatter(\"dxDataGrid-summaryAvg\"),\r\n avgOtherColumn: messageLocalization.getFormatter(\"dxDataGrid-summaryAvgOtherColumn\"),\r\n count: messageLocalization.getFormatter(\"dxDataGrid-summaryCount\")\r\n }\r\n },\r\n sortByGroupSummaryInfo: void 0\r\n }\r\n },\r\n views: {\r\n footerView: FooterView\r\n },\r\n extenders: {\r\n controllers: {\r\n data: {\r\n _isDataColumn: function(column) {\r\n return column && (!isDefined(column.groupIndex) || column.showWhenGrouped)\r\n },\r\n _isGroupFooterVisible: function() {\r\n var groupItems = this.option(\"summary.groupItems\") || [];\r\n for (var i = 0; i < groupItems.length; i++) {\r\n var groupItem = groupItems[i];\r\n var column = this._columnsController.columnOption(groupItem.showInColumn || groupItem.column);\r\n if (groupItem.showInGroupFooter && this._isDataColumn(column)) {\r\n return true\r\n }\r\n }\r\n return false\r\n },\r\n _processGroupItems: function(items, groupCount, options) {\r\n var data = options && options.data;\r\n var result = this.callBase.apply(this, arguments);\r\n if (options) {\r\n if (void 0 === options.isGroupFooterVisible) {\r\n options.isGroupFooterVisible = this._isGroupFooterVisible()\r\n }\r\n if (data && data.items && options.isGroupFooterVisible && (options.collectContinuationItems || !data.isContinuationOnNextPage)) {\r\n result.push({\r\n rowType: DATAGRID_GROUP_FOOTER_ROW_TYPE,\r\n key: options.path.slice(),\r\n data: data,\r\n groupIndex: options.path.length - 1,\r\n values: []\r\n })\r\n }\r\n }\r\n return result\r\n },\r\n _processGroupItem: function(groupItem, options) {\r\n var that = this;\r\n if (!options.summaryGroupItems) {\r\n options.summaryGroupItems = that.option(\"summary.groupItems\") || []\r\n }\r\n if (\"group\" === groupItem.rowType) {\r\n var groupColumnIndex = -1;\r\n var afterGroupColumnIndex = -1;\r\n each(options.visibleColumns, (function(visibleIndex) {\r\n var prevColumn = options.visibleColumns[visibleIndex - 1];\r\n if (groupItem.groupIndex === this.groupIndex) {\r\n groupColumnIndex = this.index\r\n }\r\n if (visibleIndex > 0 && \"expand\" === prevColumn.command && \"expand\" !== this.command) {\r\n afterGroupColumnIndex = this.index\r\n }\r\n }));\r\n groupItem.summaryCells = this._calculateSummaryCells(options.summaryGroupItems, getGroupAggregates(groupItem.data), options.visibleColumns, (function(summaryItem, column) {\r\n if (summaryItem.showInGroupFooter) {\r\n return -1\r\n }\r\n if (summaryItem.alignByColumn && column && !isDefined(column.groupIndex) && column.index !== afterGroupColumnIndex) {\r\n return column.index\r\n } else {\r\n return groupColumnIndex\r\n }\r\n }))\r\n }\r\n if (groupItem.rowType === DATAGRID_GROUP_FOOTER_ROW_TYPE) {\r\n groupItem.summaryCells = this._calculateSummaryCells(options.summaryGroupItems, getGroupAggregates(groupItem.data), options.visibleColumns, (function(summaryItem, column) {\r\n return summaryItem.showInGroupFooter && that._isDataColumn(column) ? column.index : -1\r\n }))\r\n }\r\n return groupItem\r\n },\r\n _calculateSummaryCells: function(summaryItems, aggregates, visibleColumns, calculateTargetColumnIndex) {\r\n var that = this;\r\n var summaryCells = [];\r\n var summaryCellsByColumns = {};\r\n each(summaryItems, (function(summaryIndex, summaryItem) {\r\n var column = that._columnsController.columnOption(summaryItem.column);\r\n var showInColumn = summaryItem.showInColumn && that._columnsController.columnOption(summaryItem.showInColumn) || column;\r\n var columnIndex = calculateTargetColumnIndex(summaryItem, showInColumn);\r\n if (columnIndex >= 0) {\r\n if (!summaryCellsByColumns[columnIndex]) {\r\n summaryCellsByColumns[columnIndex] = []\r\n }\r\n var aggregate = aggregates[summaryIndex];\r\n if (aggregate === aggregate) {\r\n var valueFormat;\r\n if (isDefined(summaryItem.valueFormat)) {\r\n valueFormat = summaryItem.valueFormat\r\n } else if (\"count\" !== summaryItem.summaryType) {\r\n valueFormat = gridCore.getFormatByDataType(column && column.dataType)\r\n }\r\n summaryCellsByColumns[columnIndex].push(extend({}, summaryItem, {\r\n value: isString(aggregate) && column && column.deserializeValue ? column.deserializeValue(aggregate) : aggregate,\r\n valueFormat: valueFormat,\r\n columnCaption: column && column.index !== columnIndex ? column.caption : void 0\r\n }))\r\n }\r\n }\r\n }));\r\n if (!isEmptyObject(summaryCellsByColumns)) {\r\n each(visibleColumns, (function() {\r\n summaryCells.push(summaryCellsByColumns[this.index] || [])\r\n }))\r\n }\r\n return summaryCells\r\n },\r\n _getSummaryCells: function(summaryTotalItems, totalAggregates) {\r\n var that = this;\r\n var columnsController = that._columnsController;\r\n return that._calculateSummaryCells(summaryTotalItems, totalAggregates, columnsController.getVisibleColumns(), (function(summaryItem, column) {\r\n return that._isDataColumn(column) ? column.index : -1\r\n }))\r\n },\r\n _updateItemsCore: function(change) {\r\n var summaryCells;\r\n var dataSource = this._dataSource;\r\n var footerItems = this._footerItems;\r\n var oldSummaryCells = footerItems && footerItems[0] && footerItems[0].summaryCells;\r\n var summaryTotalItems = this.option(\"summary.totalItems\");\r\n this._footerItems = [];\r\n if (dataSource && summaryTotalItems && summaryTotalItems.length) {\r\n var totalAggregates = dataSource.totalAggregates();\r\n summaryCells = this._getSummaryCells(summaryTotalItems, totalAggregates);\r\n if (change && change.repaintChangesOnly && oldSummaryCells) {\r\n change.totalColumnIndices = summaryCells.map((function(summaryCell, index) {\r\n if (JSON.stringify(summaryCell) !== JSON.stringify(oldSummaryCells[index])) {\r\n return index\r\n }\r\n return -1\r\n })).filter(index => index >= 0)\r\n }\r\n if (summaryCells.length) {\r\n this._footerItems.push({\r\n rowType: \"totalFooter\",\r\n summaryCells: summaryCells\r\n })\r\n }\r\n }\r\n this.callBase(change)\r\n },\r\n _prepareUnsavedDataSelector: function(selector) {\r\n if (recalculateWhileEditing(this)) {\r\n var editingController = this.getController(\"editing\");\r\n if (editingController) {\r\n return function(data) {\r\n data = editingController.getUpdatedData(data);\r\n return selector(data)\r\n }\r\n }\r\n }\r\n return selector\r\n },\r\n _prepareAggregateSelector: function(selector, aggregator) {\r\n selector = this._prepareUnsavedDataSelector(selector);\r\n if (\"avg\" === aggregator || \"sum\" === aggregator) {\r\n return function(data) {\r\n var value = selector(data);\r\n return isDefined(value) ? Number(value) : value\r\n }\r\n }\r\n return selector\r\n },\r\n _getAggregates: function(summaryItems, remoteOperations) {\r\n var that = this;\r\n var columnsController = that.getController(\"columns\");\r\n var calculateCustomSummary = that.option(\"summary.calculateCustomSummary\");\r\n var commonSkipEmptyValues = that.option(\"summary.skipEmptyValues\");\r\n return map(summaryItems || [], (function(summaryItem) {\r\n var column = columnsController.columnOption(summaryItem.column);\r\n var calculateCellValue = column && column.calculateCellValue ? column.calculateCellValue.bind(column) : compileGetter(column ? column.dataField : summaryItem.column);\r\n var aggregator = summaryItem.summaryType || \"count\";\r\n var selector = summaryItem.column;\r\n var skipEmptyValues = isDefined(summaryItem.skipEmptyValues) ? summaryItem.skipEmptyValues : commonSkipEmptyValues;\r\n if (remoteOperations) {\r\n return {\r\n selector: summaryItem.column,\r\n summaryType: aggregator\r\n }\r\n } else {\r\n selector = that._prepareAggregateSelector(calculateCellValue, aggregator);\r\n if (\"custom\" === aggregator) {\r\n if (!calculateCustomSummary) {\r\n errors.log(\"E1026\");\r\n calculateCustomSummary = function() {}\r\n }\r\n var options = {\r\n component: that.component,\r\n name: summaryItem.name\r\n };\r\n calculateCustomSummary(options);\r\n options.summaryProcess = \"calculate\";\r\n aggregator = {\r\n seed: function(groupIndex) {\r\n options.summaryProcess = \"start\";\r\n options.totalValue = void 0;\r\n options.groupIndex = groupIndex;\r\n delete options.value;\r\n calculateCustomSummary(options);\r\n return options.totalValue\r\n },\r\n step: function(totalValue, value) {\r\n options.summaryProcess = \"calculate\";\r\n options.totalValue = totalValue;\r\n options.value = value;\r\n calculateCustomSummary(options);\r\n return options.totalValue\r\n },\r\n finalize: function(totalValue) {\r\n options.summaryProcess = \"finalize\";\r\n options.totalValue = totalValue;\r\n delete options.value;\r\n calculateCustomSummary(options);\r\n return options.totalValue\r\n }\r\n }\r\n }\r\n return {\r\n selector: selector,\r\n aggregator: aggregator,\r\n skipEmptyValues: skipEmptyValues\r\n }\r\n }\r\n }))\r\n },\r\n _addSortInfo: function(sortByGroups, groupColumn, selector, sortOrder) {\r\n if (groupColumn) {\r\n var groupIndex = groupColumn.groupIndex;\r\n sortOrder = sortOrder || groupColumn.sortOrder;\r\n if (isDefined(groupIndex)) {\r\n sortByGroups[groupIndex] = sortByGroups[groupIndex] || [];\r\n sortByGroups[groupIndex].push({\r\n selector: selector,\r\n desc: \"desc\" === sortOrder\r\n })\r\n }\r\n }\r\n },\r\n _findSummaryItem: function(summaryItems, name) {\r\n var summaryItemIndex = -1;\r\n if (isDefined(name)) {\r\n each(summaryItems || [], (function(index) {\r\n if (this.name === name || index === name || this.summaryType === name || this.column === name || (summaryItem = this, summaryType = summaryItem.summaryType, column = summaryItem.column, summaryType && column && summaryType + \"_\" + column) === name) {\r\n summaryItemIndex = index;\r\n return false\r\n }\r\n var summaryItem, summaryType, column\r\n }))\r\n }\r\n return summaryItemIndex\r\n },\r\n _getSummarySortByGroups: function(sortByGroupSummaryInfo, groupSummaryItems) {\r\n var that = this;\r\n var columnsController = that._columnsController;\r\n var groupColumns = columnsController.getGroupColumns();\r\n var sortByGroups = [];\r\n if (!groupSummaryItems || !groupSummaryItems.length) {\r\n return\r\n }\r\n each(sortByGroupSummaryInfo || [], (function() {\r\n var sortOrder = this.sortOrder;\r\n var groupColumn = this.groupColumn;\r\n var summaryItemIndex = that._findSummaryItem(groupSummaryItems, this.summaryItem);\r\n if (summaryItemIndex < 0) {\r\n return\r\n }\r\n var selector = function(data) {\r\n return getGroupAggregates(data)[summaryItemIndex]\r\n };\r\n if (isDefined(groupColumn)) {\r\n groupColumn = columnsController.columnOption(groupColumn);\r\n that._addSortInfo(sortByGroups, groupColumn, selector, sortOrder)\r\n } else {\r\n each(groupColumns, (function(groupIndex, groupColumn) {\r\n that._addSortInfo(sortByGroups, groupColumn, selector, sortOrder)\r\n }))\r\n }\r\n }));\r\n return sortByGroups\r\n },\r\n _createDataSourceAdapterCore: function(dataSource, remoteOperations) {\r\n var that = this;\r\n var dataSourceAdapter = this.callBase(dataSource, remoteOperations);\r\n dataSourceAdapter.summaryGetter((function(currentRemoteOperations) {\r\n return that._getSummaryOptions(currentRemoteOperations || remoteOperations)\r\n }));\r\n return dataSourceAdapter\r\n },\r\n _getSummaryOptions: function(remoteOperations) {\r\n var that = this;\r\n var groupSummaryItems = that.option(\"summary.groupItems\");\r\n var totalSummaryItems = that.option(\"summary.totalItems\");\r\n var sortByGroupSummaryInfo = that.option(\"sortByGroupSummaryInfo\");\r\n var groupAggregates = that._getAggregates(groupSummaryItems, remoteOperations && remoteOperations.grouping && remoteOperations.summary);\r\n var totalAggregates = that._getAggregates(totalSummaryItems, remoteOperations && remoteOperations.summary);\r\n if (groupAggregates.length || totalAggregates.length) {\r\n return {\r\n groupAggregates: groupAggregates,\r\n totalAggregates: totalAggregates,\r\n sortByGroups: function() {\r\n return that._getSummarySortByGroups(sortByGroupSummaryInfo, groupSummaryItems)\r\n }\r\n }\r\n }\r\n },\r\n publicMethods: function() {\r\n var methods = this.callBase();\r\n methods.push(\"getTotalSummaryValue\");\r\n return methods\r\n },\r\n getTotalSummaryValue: function(summaryItemName) {\r\n var summaryItemIndex = this._findSummaryItem(this.option(\"summary.totalItems\"), summaryItemName);\r\n var aggregates = this._dataSource.totalAggregates();\r\n if (aggregates.length && summaryItemIndex > -1) {\r\n return aggregates[summaryItemIndex]\r\n }\r\n },\r\n optionChanged: function(args) {\r\n if (\"summary\" === args.name || \"sortByGroupSummaryInfo\" === args.name) {\r\n args.name = \"dataSource\"\r\n }\r\n this.callBase(args)\r\n },\r\n init: function() {\r\n this._footerItems = [];\r\n this.callBase()\r\n },\r\n footerItems: function() {\r\n return this._footerItems\r\n }\r\n },\r\n editing: {\r\n _refreshSummary: function() {\r\n if (recalculateWhileEditing(this) && !this.isSaving()) {\r\n this._dataController.refresh({\r\n load: true,\r\n changesOnly: true\r\n })\r\n }\r\n },\r\n _addChange: function(params) {\r\n var result = this.callBase.apply(this, arguments);\r\n if (params.type) {\r\n this._refreshSummary()\r\n }\r\n return result\r\n },\r\n _removeChange: function() {\r\n var result = this.callBase.apply(this, arguments);\r\n this._refreshSummary();\r\n return result\r\n },\r\n cancelEditData: function() {\r\n var result = this.callBase.apply(this, arguments);\r\n this._refreshSummary();\r\n return result\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 row && $row.addClass(row.rowType === DATAGRID_GROUP_FOOTER_ROW_TYPE ? DATAGRID_GROUP_FOOTER_CLASS : \"\");\r\n return $row\r\n },\r\n _renderCells: function($row, options) {\r\n this.callBase.apply(this, arguments);\r\n if (\"group\" === options.row.rowType && options.row.summaryCells && options.row.summaryCells.length) {\r\n this._renderGroupSummaryCells($row, options)\r\n }\r\n },\r\n _hasAlignByColumnSummaryItems: function(columnIndex, options) {\r\n return !isDefined(options.columns[columnIndex].groupIndex) && options.row.summaryCells[columnIndex].length\r\n },\r\n _getAlignByColumnCellCount: function(groupCellColSpan, options) {\r\n var alignByColumnCellCount = 0;\r\n for (var i = 1; i < groupCellColSpan; i++) {\r\n var columnIndex = options.row.summaryCells.length - i;\r\n alignByColumnCellCount = this._hasAlignByColumnSummaryItems(columnIndex, options) ? i : alignByColumnCellCount\r\n }\r\n return alignByColumnCellCount\r\n },\r\n _renderGroupSummaryCells: function($row, options) {\r\n var $groupCell = $row.children().last();\r\n var groupCellColSpan = Number($groupCell.attr(\"colSpan\")) || 1;\r\n var alignByColumnCellCount = this._getAlignByColumnCellCount(groupCellColSpan, options);\r\n this._renderGroupSummaryCellsCore($groupCell, options, groupCellColSpan, alignByColumnCellCount)\r\n },\r\n _renderGroupSummaryCellsCore: function($groupCell, options, groupCellColSpan, alignByColumnCellCount) {\r\n if (alignByColumnCellCount > 0) {\r\n $groupCell.attr(\"colSpan\", groupCellColSpan - alignByColumnCellCount);\r\n for (var i = 0; i < alignByColumnCellCount; i++) {\r\n var columnIndex = options.columns.length - alignByColumnCellCount + i;\r\n this._renderCell($groupCell.parent(), extend({\r\n column: options.columns[columnIndex],\r\n columnIndex: this._getSummaryCellIndex(columnIndex, options.columns)\r\n }, options))\r\n }\r\n }\r\n },\r\n _getSummaryCellIndex: function(columnIndex) {\r\n return columnIndex\r\n },\r\n _getCellTemplate: function(options) {\r\n if (!options.column.command && !isDefined(options.column.groupIndex) && options.summaryItems && options.summaryItems.length) {\r\n return renderSummaryCell\r\n } else {\r\n return this.callBase(options)\r\n }\r\n },\r\n _getCellOptions: function(options) {\r\n var parameters = this.callBase(options);\r\n if (options.row.summaryCells) {\r\n return extend(parameters, getSummaryCellOptions(this, options))\r\n } else {\r\n return parameters\r\n }\r\n }\r\n }\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.column_fixing.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n columnFixingModule\r\n} from \"../grid_core/ui.grid_core.column_fixing\";\r\ngridCore.registerModule(\"columnFixing\", columnFixingModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.adaptivity.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n adaptivityModule\r\n} from \"../grid_core/ui.grid_core.adaptivity\";\r\ngridCore.registerModule(\"adaptivity\", adaptivityModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.virtual_columns.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n virtualColumnsModule\r\n} from \"../grid_core/ui.grid_core.virtual_columns\";\r\ngridCore.registerModule(\"virtualColumns\", virtualColumnsModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.export.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getDefaultAlignment\r\n} from \"../../core/utils/position\";\r\nimport {\r\n merge\r\n} from \"../../core/utils/array\";\r\nimport dataGridCore from \"./ui.data_grid.core\";\r\nimport exportMixin from \"../grid_core/ui.grid_core.export_mixin\";\r\nimport {\r\n export as clientExport,\r\n excel\r\n} from \"../../exporter\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport Button from \"../button\";\r\nimport List from \"../list\";\r\nimport ContextMenu from \"../context_menu\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar DATAGRID_EXPORT_MENU_CLASS = \"dx-datagrid-export-menu\";\r\nvar DATAGRID_EXPORT_BUTTON_CLASS = \"dx-datagrid-export-button\";\r\nvar DATAGRID_EXPORT_ICON = \"export-to\";\r\nvar DATAGRID_EXPORT_EXCEL_ICON = \"xlsxfile\";\r\nvar DATAGRID_EXPORT_SELECTED_ICON = \"exportselected\";\r\nvar DATAGRID_EXPORT_EXCEL_BUTTON_ICON = \"export-excel-button\";\r\nvar TOOLBAR_ITEM_AUTO_HIDE_CLASS = \"dx-toolbar-item-auto-hide\";\r\nvar TOOLBAR_HIDDEN_BUTTON_CLASS = \"dx-toolbar-hidden-button\";\r\nvar BUTTON_CLASS = \"dx-button\";\r\nexport var DataProvider = Class.inherit({\r\n ctor: function(exportController, initialColumnWidthsByColumnIndex, selectedRowsOnly) {\r\n this._exportController = exportController;\r\n this._initialColumnWidthsByColumnIndex = initialColumnWidthsByColumnIndex;\r\n this._selectedRowsOnly = selectedRowsOnly\r\n },\r\n _getGroupValue: function(item) {\r\n var {\r\n key: key,\r\n data: data,\r\n rowType: rowType,\r\n groupIndex: groupIndex,\r\n summaryCells: summaryCells\r\n } = item;\r\n var groupColumn = this._options.groupColumns[groupIndex];\r\n var value = dataGridCore.getDisplayValue(groupColumn, groupColumn.deserializeValue ? groupColumn.deserializeValue(key[groupIndex]) : key[groupIndex], data, rowType);\r\n var result = groupColumn.caption + \": \" + dataGridCore.formatValue(value, groupColumn);\r\n if (summaryCells && summaryCells[0] && summaryCells[0].length) {\r\n result += \" \" + dataGridCore.getGroupRowSummaryText(summaryCells[0], this._options.summaryTexts)\r\n }\r\n return result\r\n },\r\n _correctCellIndex: function(cellIndex) {\r\n return cellIndex\r\n },\r\n _initOptions: function() {\r\n var exportController = this._exportController;\r\n var groupColumns = exportController._columnsController.getGroupColumns();\r\n var excelWrapTextEnabled = exportController.option(\"export.excelWrapTextEnabled\");\r\n this._options = {\r\n columns: exportController._getColumns(this._initialColumnWidthsByColumnIndex),\r\n groupColumns: groupColumns,\r\n items: this._selectedRowsOnly || exportController._selectionOnly ? exportController._getSelectedItems() : exportController._getAllItems(),\r\n getVisibleIndex: exportController._columnsController.getVisibleIndex.bind(exportController._columnsController),\r\n isHeadersVisible: exportController.option(\"showColumnHeaders\"),\r\n summaryTexts: exportController.option(\"summary.texts\"),\r\n customizeExportData: exportController.option(\"customizeExportData\"),\r\n rtlEnabled: exportController.option(\"rtlEnabled\"),\r\n wrapTextEnabled: isDefined(excelWrapTextEnabled) ? excelWrapTextEnabled : !!exportController.option(\"wordWrapEnabled\"),\r\n customizeExcelCell: exportController.option(\"export.customizeExcelCell\")\r\n }\r\n },\r\n hasCustomizeExcelCell: function() {\r\n return isDefined(this._options.customizeExcelCell)\r\n },\r\n customizeExcelCell: function(e, cellSourceData) {\r\n if (this._options.customizeExcelCell) {\r\n e.gridCell = cellSourceData;\r\n if (isDefined(this._exportController) && isDefined(this._exportController.component)) {\r\n e.component = this._exportController.component\r\n }\r\n this._options.customizeExcelCell(e)\r\n }\r\n },\r\n getHeaderStyles: () => [{\r\n bold: true,\r\n alignment: \"center\",\r\n wrapText: true\r\n }, {\r\n bold: true,\r\n alignment: \"left\",\r\n wrapText: true\r\n }, {\r\n bold: true,\r\n alignment: \"right\",\r\n wrapText: true\r\n }],\r\n getGroupRowStyle() {\r\n return {\r\n bold: true,\r\n wrapText: false,\r\n alignment: getDefaultAlignment(this._options.rtlEnabled)\r\n }\r\n },\r\n getColumnStyles() {\r\n var wrapTextEnabled = this._options.wrapTextEnabled;\r\n var columnStyles = [];\r\n this.getColumns().forEach(column => {\r\n columnStyles.push({\r\n alignment: column.alignment || \"left\",\r\n format: column.format,\r\n wrapText: wrapTextEnabled,\r\n dataType: column.dataType\r\n })\r\n });\r\n return columnStyles\r\n },\r\n getStyles: function() {\r\n return [...this.getHeaderStyles(), ...this.getColumnStyles(), this.getGroupRowStyle()]\r\n },\r\n _getTotalCellStyleId: function(cellIndex) {\r\n var _this$getColumns$cell;\r\n var alignment = (null === (_this$getColumns$cell = this.getColumns()[cellIndex]) || void 0 === _this$getColumns$cell ? void 0 : _this$getColumns$cell.alignment) || \"right\";\r\n return this.getHeaderStyles().map(style => style.alignment).indexOf(alignment)\r\n },\r\n getStyleId: function(rowIndex, cellIndex) {\r\n if (rowIndex < this.getHeaderRowCount()) {\r\n return 0\r\n } else if (this.isTotalCell(rowIndex - this.getHeaderRowCount(), cellIndex)) {\r\n return this._getTotalCellStyleId(cellIndex)\r\n } else if (this.isGroupRow(rowIndex - this.getHeaderRowCount())) {\r\n return this.getHeaderStyles().length + this.getColumns().length\r\n } else {\r\n return cellIndex + this.getHeaderStyles().length\r\n }\r\n },\r\n getColumns: function(getColumnsByAllRows) {\r\n var {\r\n columns: columns\r\n } = this._options;\r\n return getColumnsByAllRows ? columns : columns[columns.length - 1]\r\n },\r\n getColumnsWidths: function() {\r\n var columns = this.getColumns();\r\n return isDefined(columns) ? columns.map(c => c.width) : void 0\r\n },\r\n getRowsCount: function() {\r\n return this._options.items.length + this.getHeaderRowCount()\r\n },\r\n getHeaderRowCount: function() {\r\n if (this.isHeadersVisible()) {\r\n return this._options.columns.length - 1\r\n }\r\n return 0\r\n },\r\n isGroupRow: function(rowIndex) {\r\n return rowIndex < this._options.items.length && \"group\" === this._options.items[rowIndex].rowType\r\n },\r\n getGroupLevel: function(rowIndex) {\r\n var item = this._options.items[rowIndex - this.getHeaderRowCount()];\r\n var groupIndex = item && item.groupIndex;\r\n if (item && \"totalFooter\" === item.rowType) {\r\n return 0\r\n }\r\n return isDefined(groupIndex) ? groupIndex : this._options.groupColumns.length\r\n },\r\n getCellType: function(rowIndex, cellIndex) {\r\n var columns = this.getColumns();\r\n if (rowIndex < this.getHeaderRowCount()) {\r\n return \"string\"\r\n } else {\r\n rowIndex -= this.getHeaderRowCount()\r\n }\r\n if (cellIndex < columns.length) {\r\n var item = this._options.items.length && this._options.items[rowIndex];\r\n var column = columns[cellIndex];\r\n if (item && \"data\" === item.rowType) {\r\n if (isFinite(item.values[this._correctCellIndex(cellIndex)]) && !isDefined(column.customizeText)) {\r\n return isDefined(column.lookup) ? column.lookup.dataType : column.dataType\r\n }\r\n }\r\n return \"string\"\r\n }\r\n },\r\n ready: function() {\r\n var that = this;\r\n that._initOptions();\r\n var options = that._options;\r\n return when(options.items).done((function(items) {\r\n options.customizeExportData && options.customizeExportData(that.getColumns(that.getHeaderRowCount() > 1), items);\r\n options.items = items\r\n })).fail((function() {\r\n options.items = []\r\n }))\r\n },\r\n _convertFromGridGroupSummaryItems: function(gridGroupSummaryItems) {\r\n if (isDefined(gridGroupSummaryItems) && gridGroupSummaryItems.length > 0) {\r\n return gridGroupSummaryItems.map((function(item) {\r\n return {\r\n value: item.value,\r\n name: item.name\r\n }\r\n }))\r\n }\r\n },\r\n getCellData: function(rowIndex, cellIndex, isExcelJS) {\r\n var value;\r\n var column;\r\n var result = {\r\n cellSourceData: {},\r\n value: value\r\n };\r\n var columns = this.getColumns();\r\n var correctedCellIndex = this._correctCellIndex(cellIndex);\r\n if (rowIndex < this.getHeaderRowCount()) {\r\n var columnsRow = this.getColumns(true)[rowIndex];\r\n column = columnsRow[cellIndex];\r\n result.cellSourceData.rowType = \"header\";\r\n result.cellSourceData.column = column && column.gridColumn;\r\n result.value = column && column.caption\r\n } else {\r\n rowIndex -= this.getHeaderRowCount();\r\n var item = this._options.items.length && this._options.items[rowIndex];\r\n if (item) {\r\n var itemValues = item.values;\r\n result.cellSourceData.rowType = item.rowType;\r\n result.cellSourceData.column = columns[cellIndex] && columns[cellIndex].gridColumn;\r\n switch (item.rowType) {\r\n case \"groupFooter\":\r\n case \"totalFooter\":\r\n if (correctedCellIndex < itemValues.length) {\r\n value = itemValues[correctedCellIndex];\r\n if (isDefined(value)) {\r\n result.cellSourceData.value = value.value;\r\n result.cellSourceData.totalSummaryItemName = value.name;\r\n result.value = dataGridCore.getSummaryText(value, this._options.summaryTexts)\r\n } else {\r\n result.cellSourceData.value = void 0\r\n }\r\n }\r\n break;\r\n case \"group\":\r\n result.cellSourceData.groupIndex = item.groupIndex;\r\n if (cellIndex < 1) {\r\n result.cellSourceData.column = this._options.groupColumns[item.groupIndex];\r\n result.cellSourceData.value = item.key[item.groupIndex];\r\n result.cellSourceData.groupSummaryItems = this._convertFromGridGroupSummaryItems(item.summaryCells[0]);\r\n result.value = this._getGroupValue(item)\r\n } else {\r\n var summaryItems = item.values[correctedCellIndex];\r\n if (Array.isArray(summaryItems)) {\r\n result.cellSourceData.groupSummaryItems = this._convertFromGridGroupSummaryItems(summaryItems);\r\n value = \"\";\r\n for (var i = 0; i < summaryItems.length; i++) {\r\n value += (i > 0 ? isExcelJS ? \"\\n\" : \" \\n \" : \"\") + dataGridCore.getSummaryText(summaryItems[i], this._options.summaryTexts)\r\n }\r\n result.value = value\r\n } else {\r\n result.cellSourceData.value = void 0\r\n }\r\n }\r\n break;\r\n default:\r\n column = columns[cellIndex];\r\n if (column) {\r\n var _value = itemValues[correctedCellIndex];\r\n var displayValue = dataGridCore.getDisplayValue(column, _value, item.data, item.rowType);\r\n if (!isFinite(displayValue) || isDefined(column.customizeText)) {\r\n if (isExcelJS && isDefined(column.customizeText) && column.customizeText === this._exportController._columnsController.getCustomizeTextByDataType(\"boolean\")) {\r\n result.value = displayValue\r\n } else {\r\n result.value = dataGridCore.formatValue(displayValue, column)\r\n }\r\n } else {\r\n result.value = displayValue\r\n }\r\n result.cellSourceData.value = _value\r\n }\r\n result.cellSourceData.data = item.data\r\n }\r\n }\r\n }\r\n return result\r\n },\r\n isHeadersVisible: function() {\r\n return this._options.isHeadersVisible\r\n },\r\n isTotalCell: function(rowIndex, cellIndex) {\r\n var items = this._options.items;\r\n var item = items[rowIndex];\r\n var correctCellIndex = this._correctCellIndex(cellIndex);\r\n var isSummaryAlignByColumn = item.summaryCells && item.summaryCells[correctCellIndex] && item.summaryCells[correctCellIndex].length > 0 && item.summaryCells[correctCellIndex][0].alignByColumn;\r\n return item && \"groupFooter\" === item.rowType || \"totalFooter\" === item.rowType || isSummaryAlignByColumn\r\n },\r\n getCellMerging: function(rowIndex, cellIndex) {\r\n var columns = this._options.columns;\r\n var column = columns[rowIndex] && columns[rowIndex][cellIndex];\r\n return column ? {\r\n colspan: (column.exportColspan || 1) - 1,\r\n rowspan: (column.rowspan || 1) - 1\r\n } : {\r\n colspan: 0,\r\n rowspan: 0\r\n }\r\n },\r\n getFrozenArea: function() {\r\n return {\r\n x: 0,\r\n y: this.getHeaderRowCount()\r\n }\r\n }\r\n});\r\nexport var ExportController = dataGridCore.ViewController.inherit({}).include(exportMixin).inherit({\r\n _getEmptyCell: function() {\r\n return {\r\n caption: \"\",\r\n colspan: 1,\r\n rowspan: 1\r\n }\r\n },\r\n _updateColumnWidth: function(column, width) {\r\n column.width = width\r\n },\r\n _getColumns: function(initialColumnWidthsByColumnIndex) {\r\n var result = [];\r\n var i;\r\n var columns;\r\n var columnsController = this._columnsController;\r\n var rowCount = columnsController.getRowCount();\r\n for (i = 0; i <= rowCount; i++) {\r\n var currentHeaderRow = [];\r\n columns = columnsController.getVisibleColumns(i, true);\r\n var columnWidthsByColumnIndex = void 0;\r\n if (i === rowCount) {\r\n if (this._updateLockCount) {\r\n columnWidthsByColumnIndex = initialColumnWidthsByColumnIndex\r\n } else {\r\n var columnWidths = this._getColumnWidths(this._headersView, this._rowsView);\r\n if (columnWidths && columnWidths.length) {\r\n columnWidthsByColumnIndex = {};\r\n for (var _i = 0; _i < columns.length; _i++) {\r\n columnWidthsByColumnIndex[columns[_i].index] = columnWidths[_i]\r\n }\r\n }\r\n }\r\n }\r\n for (var j = 0; j < columns.length; j++) {\r\n var column = extend({}, columns[j], {\r\n dataType: \"datetime\" === columns[j].dataType ? \"date\" : columns[j].dataType,\r\n gridColumn: columns[j]\r\n });\r\n if (this._needColumnExporting(column)) {\r\n var currentColspan = this._calculateExportColspan(column);\r\n if (isDefined(currentColspan)) {\r\n column.exportColspan = currentColspan\r\n }\r\n if (columnWidthsByColumnIndex) {\r\n this._updateColumnWidth(column, columnWidthsByColumnIndex[column.index])\r\n }\r\n currentHeaderRow.push(column)\r\n }\r\n }\r\n result.push(currentHeaderRow)\r\n }\r\n columns = result[rowCount];\r\n result = this._prepareItems(result.slice(0, -1));\r\n result.push(columns);\r\n return result\r\n },\r\n _calculateExportColspan: function(column) {\r\n if (!column.isBand) {\r\n return\r\n }\r\n var childColumns = this._columnsController.getChildrenByBandColumn(column.index, true);\r\n if (!isDefined(childColumns)) {\r\n return\r\n }\r\n return childColumns.reduce((result, childColumn) => {\r\n if (this._needColumnExporting(childColumn)) {\r\n return result + (this._calculateExportColspan(childColumn) || 1)\r\n } else {\r\n return result\r\n }\r\n }, 0)\r\n },\r\n _needColumnExporting: function(column) {\r\n return !column.command && (column.allowExporting || void 0 === column.allowExporting)\r\n },\r\n _getFooterSummaryItems: function(summaryCells, isTotal) {\r\n var result = [];\r\n var estimatedItemsCount = 1;\r\n var i = 0;\r\n do {\r\n var values = [];\r\n for (var j = 0; j < summaryCells.length; j++) {\r\n var summaryCell = summaryCells[j];\r\n var itemsLength = summaryCell.length;\r\n if (estimatedItemsCount < itemsLength) {\r\n estimatedItemsCount = itemsLength\r\n }\r\n values.push(summaryCell[i])\r\n }\r\n result.push({\r\n values: values,\r\n rowType: isTotal ? \"totalFooter\" : \"groupFooter\"\r\n })\r\n } while (i++ < estimatedItemsCount - 1);\r\n return result\r\n },\r\n _hasSummaryGroupFooters: function() {\r\n var groupItems = this.option(\"summary.groupItems\");\r\n if (isDefined(groupItems)) {\r\n for (var i = 0; i < groupItems.length; i++) {\r\n if (groupItems[i].showInGroupFooter) {\r\n return true\r\n }\r\n }\r\n }\r\n return false\r\n },\r\n _getItemsWithSummaryGroupFooters: function(sourceItems) {\r\n var result = [];\r\n var beforeGroupFooterItems = [];\r\n var groupFooterItems = [];\r\n for (var i = 0; i < sourceItems.length; i++) {\r\n var item = sourceItems[i];\r\n if (\"groupFooter\" === item.rowType) {\r\n groupFooterItems = this._getFooterSummaryItems(item.summaryCells);\r\n result = result.concat(beforeGroupFooterItems, groupFooterItems);\r\n beforeGroupFooterItems = []\r\n } else {\r\n beforeGroupFooterItems.push(item)\r\n }\r\n }\r\n return result.length ? result : beforeGroupFooterItems\r\n },\r\n _updateGroupValuesWithSummaryByColumn: function(sourceItems) {\r\n var summaryValues = [];\r\n for (var i = 0; i < sourceItems.length; i++) {\r\n var item = sourceItems[i];\r\n var summaryCells = item.summaryCells;\r\n if (\"group\" === item.rowType && summaryCells && summaryCells.length > 1) {\r\n var groupColumnCount = item.values.length;\r\n for (var j = 1; j < summaryCells.length; j++) {\r\n for (var k = 0; k < summaryCells[j].length; k++) {\r\n var summaryItem = summaryCells[j][k];\r\n if (summaryItem && summaryItem.alignByColumn) {\r\n if (!Array.isArray(summaryValues[j - groupColumnCount])) {\r\n summaryValues[j - groupColumnCount] = []\r\n }\r\n summaryValues[j - groupColumnCount].push(summaryItem)\r\n }\r\n }\r\n }\r\n if (summaryValues.length > 0) {\r\n merge(item.values, summaryValues);\r\n summaryValues = []\r\n }\r\n }\r\n }\r\n },\r\n _processUnExportedItems: function(items) {\r\n var columns = this._columnsController.getVisibleColumns(null, true);\r\n var groupColumns = this._columnsController.getGroupColumns();\r\n var values;\r\n var summaryCells;\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n var isDetailExpandColumn = false;\r\n values = [];\r\n summaryCells = [];\r\n for (var j = 0; j < columns.length; j++) {\r\n var column = columns[j];\r\n isDetailExpandColumn = isDetailExpandColumn || \"detailExpand\" === column.type;\r\n if (this._needColumnExporting(column)) {\r\n if (item.values) {\r\n if (\"group\" === item.rowType && !values.length) {\r\n values.push(item.key[item.groupIndex])\r\n } else {\r\n values.push(item.values[j])\r\n }\r\n }\r\n if (item.summaryCells) {\r\n if (\"group\" === item.rowType && !summaryCells.length) {\r\n var index = j - groupColumns.length + item.groupIndex;\r\n summaryCells.push(item.summaryCells[isDetailExpandColumn ? index - 1 : index])\r\n } else {\r\n summaryCells.push(item.summaryCells[j])\r\n }\r\n }\r\n }\r\n }\r\n if (values.length) {\r\n item.values = values\r\n }\r\n if (summaryCells.length) {\r\n item.summaryCells = summaryCells\r\n }\r\n }\r\n },\r\n _getAllItems: function(data) {\r\n var that = this;\r\n var d = new Deferred;\r\n var dataController = this.getController(\"data\");\r\n var footerItems = dataController.footerItems();\r\n var totalItem = footerItems.length && footerItems[0];\r\n var summaryTotalItems = that.option(\"summary.totalItems\");\r\n var summaryCells;\r\n when(data).done((function(data) {\r\n dataController.loadAll(data).done((function(sourceItems, totalAggregates) {\r\n that._updateGroupValuesWithSummaryByColumn(sourceItems);\r\n if (that._hasSummaryGroupFooters()) {\r\n sourceItems = that._getItemsWithSummaryGroupFooters(sourceItems)\r\n }\r\n summaryCells = totalItem && totalItem.summaryCells;\r\n if (isDefined(totalAggregates) && summaryTotalItems) {\r\n summaryCells = that._getSummaryCells(summaryTotalItems, totalAggregates)\r\n }\r\n var summaryItems = totalItem && that._getFooterSummaryItems(summaryCells, true);\r\n if (summaryItems) {\r\n sourceItems = sourceItems.concat(summaryItems)\r\n }\r\n that._processUnExportedItems(sourceItems);\r\n d.resolve(sourceItems)\r\n })).fail(d.reject)\r\n })).fail(d.reject);\r\n return d\r\n },\r\n _getSummaryCells: function(summaryTotalItems, totalAggregates) {\r\n var dataController = this.getController(\"data\");\r\n var columnsController = dataController._columnsController;\r\n return dataController._calculateSummaryCells(summaryTotalItems, totalAggregates, columnsController.getVisibleColumns(null, true), (function(summaryItem, column) {\r\n return dataController._isDataColumn(column) ? column.index : -1\r\n }))\r\n },\r\n _getSelectedItems: function() {\r\n var selectionController = this.getController(\"selection\");\r\n var selectedRowData = selectionController.getSelectedRowsData();\r\n return this._getAllItems(selectedRowData)\r\n },\r\n _getColumnWidths: function(headersView, rowsView) {\r\n return headersView && headersView.isVisible() ? headersView.getColumnWidths() : rowsView.getColumnWidths()\r\n },\r\n init: function() {\r\n this._columnsController = this.getController(\"columns\");\r\n this._rowsView = this.getView(\"rowsView\");\r\n this._headersView = this.getView(\"columnHeadersView\");\r\n this.createAction(\"onExporting\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onExported\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onFileSaving\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n callbackNames: function() {\r\n return [\"selectionOnlyChanged\"]\r\n },\r\n getExportFormat: function() {\r\n return [\"EXCEL\"]\r\n },\r\n getDataProvider: function(selectedRowsOnly) {\r\n var columnWidths = this._getColumnWidths(this._headersView, this._rowsView);\r\n var initialColumnWidthsByColumnIndex;\r\n if (columnWidths && columnWidths.length) {\r\n initialColumnWidthsByColumnIndex = {};\r\n var columnsLastRowVisibleColumns = this._columnsController.getVisibleColumns(this._columnsController.getRowCount(), true);\r\n for (var i = 0; i < columnsLastRowVisibleColumns.length; i++) {\r\n initialColumnWidthsByColumnIndex[columnsLastRowVisibleColumns[i].index] = columnWidths[i]\r\n }\r\n }\r\n return new DataProvider(this, initialColumnWidthsByColumnIndex, selectedRowsOnly)\r\n },\r\n exportToExcel: function(selectionOnly) {\r\n this._selectionOnly = selectionOnly;\r\n clientExport(this.component.getDataProvider(), {\r\n fileName: this.option(\"export.fileName\"),\r\n proxyUrl: this.option(\"export.proxyUrl\"),\r\n format: \"EXCEL\",\r\n autoFilterEnabled: !!this.option(\"export.excelFilterEnabled\"),\r\n rtlEnabled: this.option(\"rtlEnabled\"),\r\n ignoreErrors: this.option(\"export.ignoreExcelErrors\"),\r\n exportingAction: this.getAction(\"onExporting\"),\r\n exportedAction: this.getAction(\"onExported\"),\r\n fileSavingAction: this.getAction(\"onFileSaving\")\r\n }, excel.getData)\r\n },\r\n publicMethods: function() {\r\n return [\"getDataProvider\", \"getExportFormat\", \"exportToExcel\"]\r\n },\r\n selectionOnly: function(value) {\r\n if (isDefined(value)) {\r\n this._isSelectedRows = value;\r\n this.selectionOnlyChanged.fire()\r\n } else {\r\n return this._isSelectedRows\r\n }\r\n }\r\n});\r\ndataGridCore.registerModule(\"export\", {\r\n defaultOptions: function() {\r\n return {\r\n export: {\r\n enabled: false,\r\n fileName: \"DataGrid\",\r\n excelFilterEnabled: false,\r\n excelWrapTextEnabled: void 0,\r\n proxyUrl: void 0,\r\n allowExportSelectedData: false,\r\n ignoreExcelErrors: true,\r\n texts: {\r\n exportTo: messageLocalization.format(\"dxDataGrid-exportTo\"),\r\n exportAll: messageLocalization.format(\"dxDataGrid-exportAll\"),\r\n exportSelectedRows: messageLocalization.format(\"dxDataGrid-exportSelectedRows\")\r\n }\r\n }\r\n }\r\n },\r\n controllers: {\r\n export: ExportController\r\n },\r\n extenders: {\r\n controllers: {\r\n editing: {\r\n callbackNames: function() {\r\n var callbackList = this.callBase();\r\n return isDefined(callbackList) ? callbackList.push(\"editingChanged\") : [\"editingChanged\"]\r\n },\r\n _updateEditButtons: function() {\r\n this.callBase();\r\n this.editingChanged.fire(this.hasChanges())\r\n }\r\n }\r\n },\r\n views: {\r\n headerPanel: {\r\n _getToolbarItems: function() {\r\n var items = this.callBase();\r\n return this._appendExportItems(items)\r\n },\r\n _appendExportItems: function(items) {\r\n var that = this;\r\n var exportOptions = that.option(\"export\");\r\n if (exportOptions.enabled) {\r\n var exportItems = [];\r\n if (exportOptions.allowExportSelectedData) {\r\n exportItems.push({\r\n template: function(data, index, container) {\r\n var $container = $(container);\r\n that._renderButton(data, $container);\r\n that._renderExportMenu($container)\r\n },\r\n menuItemTemplate: function(data, index, container) {\r\n that._renderList(data, $(container))\r\n },\r\n name: \"exportButton\",\r\n allowExportSelected: true,\r\n location: \"after\",\r\n locateInMenu: \"auto\",\r\n sortIndex: 30\r\n })\r\n } else {\r\n exportItems.push({\r\n template: function(data, index, container) {\r\n that._renderButton(data, $(container))\r\n },\r\n menuItemTemplate: function(data, index, container) {\r\n that._renderButton(data, $(container), true)\r\n },\r\n name: \"exportButton\",\r\n location: \"after\",\r\n locateInMenu: \"auto\",\r\n sortIndex: 30\r\n })\r\n }\r\n items = items.concat(exportItems);\r\n that._correctItemsPosition(items)\r\n }\r\n return items\r\n },\r\n _renderButton: function(data, $container, withText) {\r\n var buttonOptions = this._getButtonOptions(data.allowExportSelected);\r\n var $buttonContainer = this._getButtonContainer().addClass(DATAGRID_EXPORT_BUTTON_CLASS).appendTo($container);\r\n if (withText) {\r\n var wrapperNode = $(\"
\").addClass(TOOLBAR_ITEM_AUTO_HIDE_CLASS);\r\n $container.wrapInner(wrapperNode).parent().addClass(\"dx-toolbar-menu-action dx-toolbar-menu-button \" + TOOLBAR_HIDDEN_BUTTON_CLASS);\r\n buttonOptions.text = buttonOptions.hint\r\n }\r\n this._createComponent($buttonContainer, Button, buttonOptions)\r\n },\r\n _renderList: function(data, $container) {\r\n var that = this;\r\n var texts = that.option(\"export.texts\");\r\n var items = [{\r\n template: function(data, index, container) {\r\n that._renderFakeButton(data, $(container), DATAGRID_EXPORT_EXCEL_ICON)\r\n },\r\n text: texts.exportAll\r\n }, {\r\n template: function(data, index, container) {\r\n that._renderFakeButton(data, $(container), DATAGRID_EXPORT_SELECTED_ICON)\r\n },\r\n text: texts.exportSelectedRows,\r\n exportSelected: true\r\n }];\r\n that._createComponent($container, List, {\r\n items: items,\r\n onItemClick: function(e) {\r\n that._exportController.exportToExcel(e.itemData.exportSelected)\r\n },\r\n scrollingEnabled: false\r\n })\r\n },\r\n _renderFakeButton: function(data, $container, iconName) {\r\n var $icon = $(\"
\").addClass(\"dx-icon dx-icon-\" + iconName);\r\n var $text = $(\"\").addClass(\"dx-button-text\").text(data.text);\r\n var $content = $(\"
\").addClass(\"dx-button-content\").append($icon).append($text);\r\n var $button = $(\"
\").addClass(BUTTON_CLASS + \" dx-button-has-text dx-button-has-icon dx-datagrid-toolbar-button\").append($content);\r\n var $toolbarItem = $(\"
\").addClass(TOOLBAR_ITEM_AUTO_HIDE_CLASS).append($button);\r\n $container.append($toolbarItem).parent().addClass(\"dx-toolbar-menu-custom \" + TOOLBAR_HIDDEN_BUTTON_CLASS)\r\n },\r\n _correctItemsPosition: function(items) {\r\n items.sort((function(itemA, itemB) {\r\n return itemA.sortIndex - itemB.sortIndex\r\n }))\r\n },\r\n _renderExportMenu: function($buttonContainer) {\r\n var that = this;\r\n var $button = $buttonContainer.find(\".\" + BUTTON_CLASS);\r\n var texts = that.option(\"export.texts\");\r\n var menuItems = [{\r\n text: texts.exportAll,\r\n icon: DATAGRID_EXPORT_EXCEL_ICON\r\n }, {\r\n text: texts.exportSelectedRows,\r\n exportSelected: true,\r\n icon: DATAGRID_EXPORT_SELECTED_ICON\r\n }];\r\n var $menuContainer = $(\"
\").appendTo($buttonContainer);\r\n that._contextMenu = that._createComponent($menuContainer, ContextMenu, {\r\n showEvent: \"dxclick\",\r\n items: menuItems,\r\n cssClass: DATAGRID_EXPORT_MENU_CLASS,\r\n onItemClick: function(e) {\r\n that._exportController.exportToExcel(e.itemData.exportSelected)\r\n },\r\n target: $button,\r\n position: {\r\n at: \"left bottom\",\r\n my: \"left top\",\r\n offset: \"0 3\",\r\n collision: \"fit\",\r\n boundary: that._$parent,\r\n boundaryOffset: \"1 1\"\r\n }\r\n })\r\n },\r\n _isExportButtonVisible: function() {\r\n return this.option(\"export.enabled\")\r\n },\r\n _getButtonOptions: function(allowExportSelected) {\r\n var that = this;\r\n var texts = that.option(\"export.texts\");\r\n var options;\r\n if (allowExportSelected) {\r\n options = {\r\n hint: texts.exportTo,\r\n icon: DATAGRID_EXPORT_ICON\r\n }\r\n } else {\r\n options = {\r\n hint: texts.exportAll,\r\n icon: DATAGRID_EXPORT_EXCEL_BUTTON_ICON,\r\n onClick: function() {\r\n that._exportController.exportToExcel()\r\n }\r\n }\r\n }\r\n return options\r\n },\r\n optionChanged: function(args) {\r\n this.callBase(args);\r\n if (\"export\" === args.name) {\r\n args.handled = true;\r\n this._invalidate()\r\n }\r\n },\r\n init: function() {\r\n var that = this;\r\n this.callBase();\r\n this._exportController = this.getController(\"export\");\r\n this._editingController = this.getController(\"editing\");\r\n this._editingController.editingChanged.add((function(hasChanges) {\r\n that.setToolbarItemDisabled(\"exportButton\", hasChanges)\r\n }))\r\n },\r\n isVisible: function() {\r\n return this.callBase() || this._isExportButtonVisible()\r\n }\r\n }\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.focus.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n focusModule\r\n} from \"../grid_core/ui.grid_core.focus\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n equalByValue\r\n} from \"../../core/utils/common\";\r\nimport {\r\n createGroupFilter\r\n} from \"./ui.data_grid.utils\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\r\ngridCore.registerModule(\"focus\", extend(true, {}, focusModule, {\r\n extenders: {\r\n controllers: {\r\n data: {\r\n changeRowExpand: function(path, isRowClick) {\r\n if (this.option(\"focusedRowEnabled\") && Array.isArray(path) && this.isRowExpanded(path)) {\r\n var keyboardNavigation = this.getController(\"keyboardNavigation\");\r\n if ((!isRowClick || !keyboardNavigation.isKeyboardEnabled()) && this._isFocusedRowInsideGroup(path)) {\r\n this.option(\"focusedRowKey\", path)\r\n }\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _isFocusedRowInsideGroup: function(path) {\r\n var columnsController = this.getController(\"columns\");\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var rowIndex = this.getRowIndexByKey(focusedRowKey);\r\n var focusedRow = rowIndex >= 0 && this.getVisibleRows()[rowIndex];\r\n var groups = columnsController.getGroupDataSourceParameters(true);\r\n if (focusedRow) {\r\n for (var i = 0; i < path.length; ++i) {\r\n var getter = compileGetter(groups[i] && groups[i].selector);\r\n if (getter(focusedRow.data) !== path[i]) {\r\n return false\r\n }\r\n }\r\n }\r\n return true\r\n },\r\n _getGroupPath: function(group) {\r\n var groupPath = [group.key];\r\n var items = group.items;\r\n while (items && items[0]) {\r\n var item = items[0];\r\n if (void 0 !== item.key) {\r\n groupPath.push(item.key)\r\n }\r\n items = item.items\r\n }\r\n return groupPath\r\n },\r\n _expandGroupByPath: function(that, groupPath, level) {\r\n var d = new Deferred;\r\n level++;\r\n that.expandRow(groupPath.slice(0, level)).done((function() {\r\n if (level === groupPath.length) {\r\n d.resolve()\r\n } else {\r\n that._expandGroupByPath(that, groupPath, level).done(d.resolve).fail(d.reject)\r\n }\r\n })).fail(d.reject);\r\n return d.promise()\r\n },\r\n _calculateGlobalRowIndexByGroupedData: function(key) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var filter = that._generateFilterByKey(key);\r\n var deferred = new Deferred;\r\n var isGroupKey = Array.isArray(key);\r\n var group = dataSource.group();\r\n if (isGroupKey) {\r\n return deferred.resolve(-1).promise()\r\n }\r\n if (!dataSource._grouping._updatePagingOptions) {\r\n that._calculateGlobalRowIndexByFlatData(key, null, true).done(deferred.resolve).fail(deferred.reject);\r\n return deferred\r\n }\r\n dataSource.load({\r\n filter: that._concatWithCombinedFilter(filter),\r\n group: group\r\n }).done((function(data) {\r\n if (!data || 0 === data.length || !isDefined(data[0].key) || -1 === data[0].key) {\r\n return deferred.resolve(-1).promise()\r\n }\r\n var groupPath = that._getGroupPath(data[0]);\r\n that._expandGroupByPath(that, groupPath, 0).done((function() {\r\n that._calculateExpandedRowGlobalIndex(deferred, key, groupPath, group)\r\n })).fail(deferred.reject)\r\n })).fail(deferred.reject);\r\n return deferred.promise()\r\n },\r\n _calculateExpandedRowGlobalIndex: function(deferred, key, groupPath, group) {\r\n var groupFilter = createGroupFilter(groupPath, {\r\n group: group\r\n });\r\n var dataSource = this._dataSource;\r\n var scrollingMode = this.option(\"scrolling.mode\");\r\n var isVirtualScrolling = \"virtual\" === scrollingMode || \"infinite\" === scrollingMode;\r\n var pageSize = dataSource.pageSize();\r\n var groupOffset;\r\n dataSource._grouping._updatePagingOptions({\r\n skip: 0,\r\n take: MAX_SAFE_INTEGER\r\n }, (function(groupInfo, totalOffset) {\r\n if (equalByValue(groupInfo.path, groupPath)) {\r\n groupOffset = totalOffset\r\n }\r\n }));\r\n this._calculateGlobalRowIndexByFlatData(key, groupFilter).done((function(dataOffset) {\r\n var count;\r\n var groupContinuationCount;\r\n if (dataOffset < 0) {\r\n deferred.resolve(-1);\r\n return\r\n }\r\n var currentPageOffset = groupOffset % pageSize || pageSize;\r\n count = currentPageOffset + dataOffset - groupPath.length;\r\n if (isVirtualScrolling) {\r\n groupContinuationCount = 0\r\n } else {\r\n groupContinuationCount = Math.floor(count / (pageSize - groupPath.length)) * groupPath.length\r\n }\r\n count = groupOffset + dataOffset + groupContinuationCount;\r\n deferred.resolve(count)\r\n })).fail(deferred.reject)\r\n }\r\n }\r\n }\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.row_dragging.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport gridCore from \"./ui.data_grid.core\";\r\nimport {\r\n rowDraggingModule\r\n} from \"../grid_core/ui.grid_core.row_dragging\";\r\ngridCore.registerModule(\"rowDragging\", rowDraggingModule);\r\n","/**\r\n * DevExtreme (esm/ui/data_grid/ui.data_grid.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport DataGrid from \"./ui.data_grid.base\";\r\nexport default DataGrid;\r\nimport \"./ui.data_grid.state_storing\";\r\nimport \"./ui.data_grid.selection\";\r\nimport \"./ui.data_grid.column_chooser\";\r\nimport \"./ui.data_grid.grouping\";\r\nimport \"./ui.data_grid.master_detail\";\r\nimport \"./ui.data_grid.editing\";\r\nimport \"./ui.data_grid.editing_row_based\";\r\nimport \"./ui.data_grid.editing_form_based\";\r\nimport \"./ui.data_grid.editing_cell_based\";\r\nimport \"./ui.data_grid.validating\";\r\nimport \"./ui.data_grid.virtual_scrolling\";\r\nimport \"./ui.data_grid.filter_row\";\r\nimport \"./ui.data_grid.header_filter\";\r\nimport \"./ui.data_grid.filter_sync\";\r\nimport \"./ui.data_grid.filter_builder\";\r\nimport \"./ui.data_grid.filter_panel\";\r\nimport \"./ui.data_grid.search\";\r\nimport \"./ui.data_grid.pager\";\r\nimport \"./ui.data_grid.columns_resizing_reordering\";\r\nimport \"./ui.data_grid.keyboard_navigation\";\r\nimport \"./ui.data_grid.summary\";\r\nimport \"./ui.data_grid.column_fixing\";\r\nimport \"./ui.data_grid.adaptivity\";\r\nimport \"./ui.data_grid.virtual_columns\";\r\nimport \"./ui.data_grid.export\";\r\nimport \"./ui.data_grid.focus\";\r\nimport \"./ui.data_grid.row_dragging\";\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.header_filter.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport filterUtils from \"../shared/filtering\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport {\r\n headerFilterMixin,\r\n HeaderFilterView,\r\n updateHeaderFilterItemSelectionState,\r\n allowHeaderFiltering\r\n} from \"./ui.grid_core.header_filter_core\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isDefined,\r\n isObject,\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nimport {\r\n getDefaultAlignment\r\n} from \"../../core/utils/position\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n normalizeDataSourceOptions\r\n} from \"../../data/data_source/utils\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport variableWrapper from \"../../core/utils/variable_wrapper\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n restoreFocus\r\n} from \"../shared/accessibility\";\r\nvar DATE_INTERVAL_FORMATS = {\r\n month: function(value) {\r\n return dateLocalization.getMonthNames()[value - 1]\r\n },\r\n quarter: function(value) {\r\n return dateLocalization.format(new Date(2e3, 3 * value - 1), \"quarter\")\r\n }\r\n};\r\nvar HeaderFilterController = modules.ViewController.inherit({\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 }\r\n updateHeaderFilterItemSelectionState(item, gridCoreUtils.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 (!isObject(item)) {\r\n item = {}\r\n } else {\r\n item = 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 = gridCoreUtils.formatValue(displayValue, function(value, column, currentLevel) {\r\n var groupInterval = filterUtils.getGroupInterval(column);\r\n var result = gridCoreUtils.getFormatOptionsByColumn(column, \"headerFilter\");\r\n if (groupInterval) {\r\n result.groupInterval = groupInterval[currentLevel];\r\n if (gridCoreUtils.isDateType(column.dataType)) {\r\n result.format = DATE_INTERVAL_FORMATS[groupInterval[currentLevel]]\r\n } else 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 = gridCoreUtils.formatValue(value, formatOptions);\r\n var secondValue = value + groupInterval[currentLevel];\r\n var secondValueText = gridCoreUtils.formatValue(secondValue, formatOptions);\r\n return firstValueText && secondValueText ? firstValueText + \" - \" + secondValueText : \"\"\r\n }\r\n }\r\n }\r\n return result\r\n }(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 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 = compileGetter(lookup.displayExpr);\r\n valueSelector = compileGetter(lookup.valueExpr)\r\n }\r\n for (var i = 0; i < groupItems.length; i++) {\r\n groupItems[i] = this._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 || !isDefined(groupItems[i].value)) {\r\n delete groupItems[i].items\r\n } else {\r\n this._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 = gridCoreUtils.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 (isDefined(headerFilterDataSource) && !isFunction(headerFilterDataSource)) {\r\n options.dataSource = normalizeDataSourceOptions(headerFilterDataSource)\r\n } else 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 (isFunction(lookupDataSourceOptions) && !variableWrapper.isWrapped(lookupDataSourceOptions)) {\r\n lookupDataSourceOptions = lookupDataSourceOptions({})\r\n }\r\n }\r\n options.dataSource = 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;\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 if (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 = 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 that = this;\r\n var column = options.column;\r\n if (column) {\r\n var groupInterval = filterUtils.getGroupInterval(column);\r\n var dataSource = that._dataController.dataSource();\r\n var remoteFiltering = dataSource && dataSource.remoteOperations().filtering;\r\n 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: () => restoreFocus(this)\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\nvar ColumnHeadersViewHeaderFilterExtender = extend({}, headerFilterMixin, {\r\n _renderCellContent: function($cell, options) {\r\n var $headerFilterIndicator;\r\n var column = options.column;\r\n if (!column.command && allowHeaderFiltering(column) && this.option(\"headerFilter.visible\") && \"header\" === options.rowType) {\r\n $headerFilterIndicator = this._applyColumnState({\r\n name: \"headerFilter\",\r\n rootElement: $cell,\r\n column: column,\r\n showColumnLines: this.option(\"showColumnLines\")\r\n });\r\n $headerFilterIndicator && this._subscribeToIndicatorEvent($headerFilterIndicator, column, \"headerFilter\")\r\n }\r\n this.callBase($cell, options)\r\n },\r\n _subscribeToIndicatorEvent: function($indicator, column, indicatorName) {\r\n var that = this;\r\n if (\"headerFilter\" === indicatorName) {\r\n eventsEngine.on($indicator, clickEventName, 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 (gridCoreUtils.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 = extend({}, 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 && 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: getDefaultAlignment(that.option(\"rtlEnabled\")),\r\n filterValues: groupColumn.filterValues,\r\n allowHeaderFiltering: true\r\n },\r\n showColumnLines: true\r\n });\r\n $headerFilterIndicator && eventsEngine.on($headerFilterIndicator, clickEventName, 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\nexport function 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 filters = [this.callBase()];\r\n var columns = this._columnsController.getVisibleColumns(null, true);\r\n var headerFilterController = this.getController(\"headerFilter\");\r\n var currentColumn = headerFilterController.getCurrentColumn();\r\n each(columns, (function(_, column) {\r\n var filter;\r\n if (currentColumn && currentColumn.index === column.index) {\r\n return\r\n }\r\n if (allowHeaderFiltering(column) && column.calculateFilterExpression && Array.isArray(column.filterValues) && column.filterValues.length) {\r\n var filterValues = [];\r\n each(column.filterValues, (function(_, filterValue) {\r\n if (Array.isArray(filterValue)) {\r\n filter = filterValue\r\n } else {\r\n if (column.deserializeValue && !gridCoreUtils.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 = gridCoreUtils.combineFilters(filterValues, \"or\");\r\n filters.push(\"exclude\" === column.filterType ? [\"!\", filterValues] : filterValues)\r\n }\r\n }));\r\n return gridCoreUtils.combineFilters(filters)\r\n }\r\n};\r\nexport var headerFilterModule = {\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: messageLocalization.format(\"dxDataGrid-headerFilterEmptyValue\"),\r\n ok: messageLocalization.format(\"dxDataGrid-headerFilterOK\"),\r\n cancel: messageLocalization.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: 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\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.columns_view.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n data as elementData\r\n} from \"../../core/element_data\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n name as dblclickEvent\r\n} from \"../../events/double_click\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n setWidth\r\n} from \"../../core/utils/style\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n isRenderer,\r\n isFunction,\r\n isString,\r\n isDefined,\r\n isNumeric\r\n} from \"../../core/utils/type\";\r\nimport {\r\n getBoundingRect,\r\n getDefaultAlignment\r\n} from \"../../core/utils/position\";\r\nimport * as iteratorUtils from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport columnStateMixin from \"./ui.grid_core.column_state_mixin\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n nativeScrolling\r\n} from \"../../core/utils/support\";\r\nvar SCROLL_CONTAINER_CLASS = \"scroll-container\";\r\nvar SCROLLABLE_SIMULATED_CLASS = \"scrollable-simulated\";\r\nvar GROUP_SPACE_CLASS = \"group-space\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar TABLE_CLASS = \"table\";\r\nvar TABLE_FIXED_CLASS = \"table-fixed\";\r\nvar CONTENT_FIXED_CLASS = \"content-fixed\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar DETAIL_ROW_CLASS = \"dx-master-detail-row\";\r\nvar FILTER_ROW_CLASS = \"filter-row\";\r\nvar CELL_UPDATED_ANIMATION_CLASS = \"cell-updated-animation\";\r\nvar HIDDEN_COLUMNS_WIDTH = \"0.0001px\";\r\nvar CELL_HINT_VISIBLE = \"dxCellHintVisible\";\r\nvar FORM_FIELD_ITEM_CONTENT_CLASS = \"dx-field-item-content\";\r\nvar appendElementTemplate = {\r\n render: function(options) {\r\n options.container.append(options.content)\r\n }\r\n};\r\nvar subscribeToRowEvents = function(that, $table) {\r\n var touchTarget;\r\n var touchCurrentTarget;\r\n var timeoutId;\r\n\r\n function clearTouchTargets(timeout) {\r\n return setTimeout((function() {\r\n touchTarget = touchCurrentTarget = null\r\n }), timeout)\r\n }\r\n eventsEngine.on($table, \"touchstart touchend\", \".dx-row\", (function(e) {\r\n clearTimeout(timeoutId);\r\n if (\"touchstart\" === e.type) {\r\n touchTarget = e.target;\r\n touchCurrentTarget = e.currentTarget;\r\n timeoutId = clearTouchTargets(1e3)\r\n } else {\r\n timeoutId = clearTouchTargets()\r\n }\r\n }));\r\n eventsEngine.on($table, [clickEventName, dblclickEvent, pointerEvents.down].join(\" \"), \".dx-row\", {\r\n useNative: that._isNativeClick()\r\n }, that.createAction((function(e) {\r\n var event = e.event;\r\n if (touchTarget) {\r\n event.target = touchTarget;\r\n event.currentTarget = touchCurrentTarget\r\n }\r\n if (!$(event.target).closest(\"a\").length) {\r\n e.rowIndex = that.getRowIndex(event.currentTarget);\r\n if (e.rowIndex >= 0) {\r\n e.rowElement = getPublicElement($(event.currentTarget));\r\n e.columns = that.getColumns();\r\n if (event.type === pointerEvents.down) {\r\n that._rowPointerDown(e)\r\n } else if (event.type === clickEventName) {\r\n that._rowClick(e)\r\n } else {\r\n that._rowDblClick(e)\r\n }\r\n }\r\n }\r\n })))\r\n};\r\nvar getWidthStyle = function(width) {\r\n if (\"auto\" === width) {\r\n return \"\"\r\n }\r\n return isNumeric(width) ? width + \"px\" : width\r\n};\r\nvar setCellWidth = function(cell, column, width) {\r\n cell.style.width = cell.style.maxWidth = \"auto\" === column.width ? \"\" : width\r\n};\r\nvar copyAttributes = function(element, newElement) {\r\n if (!element || !newElement) {\r\n return\r\n }\r\n var oldAttributes = element.attributes;\r\n var newAttributes = newElement.attributes;\r\n var i;\r\n for (i = 0; i < oldAttributes.length; i++) {\r\n var name = oldAttributes[i].nodeName;\r\n if (!newElement.hasAttribute(name)) {\r\n element.removeAttribute(name)\r\n }\r\n }\r\n for (i = 0; i < newAttributes.length; i++) {\r\n element.setAttribute(newAttributes[i].nodeName, newAttributes[i].nodeValue)\r\n }\r\n};\r\nexport var ColumnsView = modules.View.inherit(columnStateMixin).inherit({\r\n _createScrollableOptions: function() {\r\n var scrollingOptions = this.option(\"scrolling\");\r\n var useNativeScrolling = this.option(\"scrolling.useNative\");\r\n var options = extend({}, scrollingOptions, {\r\n direction: \"both\",\r\n bounceEnabled: false,\r\n useKeyboard: false\r\n });\r\n if (void 0 === useNativeScrolling) {\r\n useNativeScrolling = true\r\n }\r\n if (\"auto\" === useNativeScrolling) {\r\n delete options.useNative;\r\n delete options.useSimulatedScrollbar\r\n } else {\r\n options.useNative = !!useNativeScrolling;\r\n options.useSimulatedScrollbar = !useNativeScrolling\r\n }\r\n return options\r\n },\r\n _updateCell: function($cell, parameters) {\r\n if (parameters.rowType) {\r\n this._cellPrepared($cell, parameters)\r\n }\r\n },\r\n _createCell: function(options) {\r\n var column = options.column;\r\n var alignment = column.alignment || getDefaultAlignment(this.option(\"rtlEnabled\"));\r\n var cell = domAdapter.createElement(\"td\");\r\n cell.style.textAlign = alignment;\r\n var $cell = $(cell);\r\n if (\"data\" === options.rowType && column.headerId && !column.type) {\r\n if (this.component.option(\"showColumnHeaders\")) {\r\n this.setAria(\"describedby\", column.headerId, $cell)\r\n }\r\n }\r\n if (column.cssClass) {\r\n $cell.addClass(column.cssClass)\r\n }\r\n if (\"expand\" === column.command) {\r\n $cell.addClass(column.cssClass);\r\n $cell.addClass(this.addWidgetPrefix(GROUP_SPACE_CLASS))\r\n }\r\n if (column.colspan > 1) {\r\n $cell.attr(\"colSpan\", column.colspan)\r\n } else if (!column.isBand && \"auto\" !== column.visibleWidth && this.option(\"columnAutoWidth\")) {\r\n if (column.width || column.minWidth) {\r\n cell.style.minWidth = getWidthStyle(column.minWidth || column.width)\r\n }\r\n if (column.width) {\r\n setCellWidth(cell, column, getWidthStyle(column.width))\r\n }\r\n }\r\n return $cell\r\n },\r\n _createRow: function(rowObject) {\r\n var $element = $(\"\").addClass(ROW_CLASS);\r\n this.setAria(\"role\", \"row\", $element);\r\n return $element\r\n },\r\n _isAltRow: function(row) {\r\n return row && row.dataIndex % 2 === 1\r\n },\r\n _createTable: function(columns, isAppend) {\r\n var that = this;\r\n var $table = $(\"\").addClass(that.addWidgetPrefix(TABLE_CLASS)).addClass(that.addWidgetPrefix(TABLE_FIXED_CLASS));\r\n if (columns && !isAppend) {\r\n $table.append(that._createColGroup(columns));\r\n if (browser.safari) {\r\n $table.append($(\"\").append(\"\"))\r\n }\r\n that.setAria(\"role\", \"presentation\", $table)\r\n } else {\r\n that.setAria(\"hidden\", true, $table)\r\n }\r\n this.setAria(\"role\", \"presentation\", $(\"\").appendTo($table));\r\n if (isAppend) {\r\n return $table\r\n }\r\n if (browser.mozilla) {\r\n eventsEngine.on($table, \"mousedown\", \"td\", (function(e) {\r\n if (e.ctrlKey) {\r\n e.preventDefault()\r\n }\r\n }))\r\n }\r\n if (that.option(\"cellHintEnabled\")) {\r\n eventsEngine.on($table, \"mousemove\", \".dx-row > td\", this.createAction((function(args) {\r\n var e = args.event;\r\n var $element = $(e.target);\r\n var $cell = $(e.currentTarget);\r\n var $row = $cell.parent();\r\n var isDataRow = $row.hasClass(\"dx-data-row\");\r\n var isHeaderRow = $row.hasClass(\"dx-header-row\");\r\n var isGroupRow = $row.hasClass(GROUP_ROW_CLASS);\r\n var isMasterDetailRow = $row.hasClass(DETAIL_ROW_CLASS);\r\n var isFilterRow = $row.hasClass(that.addWidgetPrefix(FILTER_ROW_CLASS));\r\n var visibleColumns = that._columnsController.getVisibleColumns();\r\n var rowOptions = $row.data(\"options\");\r\n var columnIndex = $cell.index();\r\n var cellOptions = rowOptions && rowOptions.cells && rowOptions.cells[columnIndex];\r\n var column = cellOptions ? cellOptions.column : visibleColumns[columnIndex];\r\n var msieCorrection = browser.msie ? 1 : 0;\r\n if (!isMasterDetailRow && !isFilterRow && (!isDataRow || isDataRow && column && !column.cellTemplate) && (!isHeaderRow || isHeaderRow && column && !column.headerCellTemplate) && (!isGroupRow || isGroupRow && column && (void 0 === column.groupIndex || !column.groupCellTemplate))) {\r\n if ($element.data(CELL_HINT_VISIBLE)) {\r\n $element.removeAttr(\"title\");\r\n $element.data(CELL_HINT_VISIBLE, false)\r\n }\r\n var difference = $element[0].scrollWidth - $element[0].clientWidth - msieCorrection;\r\n if (difference > 0 && !isDefined($element.attr(\"title\"))) {\r\n $element.attr(\"title\", $element.text());\r\n $element.data(CELL_HINT_VISIBLE, true)\r\n }\r\n }\r\n })))\r\n }\r\n var getOptions = function(event) {\r\n var $cell = $(event.currentTarget);\r\n var $fieldItemContent = $(event.target).closest(\".\" + FORM_FIELD_ITEM_CONTENT_CLASS);\r\n var rowOptions = $cell.parent().data(\"options\");\r\n var options = rowOptions && rowOptions.cells && rowOptions.cells[$cell.index()];\r\n if (!$cell.closest(\"table\").is(event.delegateTarget)) {\r\n return\r\n }\r\n var resultOptions = extend({}, options, {\r\n cellElement: getPublicElement($cell),\r\n event: event,\r\n eventType: event.type\r\n });\r\n if ($fieldItemContent.length) {\r\n var formItemOptions = $fieldItemContent.data(\"dx-form-item\");\r\n if (formItemOptions.column) {\r\n resultOptions.column = formItemOptions.column;\r\n resultOptions.columnIndex = that._columnsController.getVisibleIndex(resultOptions.column.index)\r\n }\r\n }\r\n return resultOptions\r\n };\r\n eventsEngine.on($table, \"mouseover\", \".dx-row > td\", (function(e) {\r\n var options = getOptions(e);\r\n options && that.executeAction(\"onCellHoverChanged\", options)\r\n }));\r\n eventsEngine.on($table, \"mouseout\", \".dx-row > td\", (function(e) {\r\n var options = getOptions(e);\r\n options && that.executeAction(\"onCellHoverChanged\", options)\r\n }));\r\n eventsEngine.on($table, clickEventName, \".dx-row > td\", (function(e) {\r\n var options = getOptions(e);\r\n options && that.executeAction(\"onCellClick\", options)\r\n }));\r\n eventsEngine.on($table, dblclickEvent, \".dx-row > td\", (function(e) {\r\n var options = getOptions(e);\r\n options && that.executeAction(\"onCellDblClick\", options)\r\n }));\r\n subscribeToRowEvents(that, $table);\r\n return $table\r\n },\r\n _isNativeClick: noop,\r\n _rowPointerDown: noop,\r\n _rowClick: noop,\r\n _rowDblClick: noop,\r\n _createColGroup: function(columns) {\r\n var colgroupElement = $(\"\");\r\n for (var i = 0; i < columns.length; i++) {\r\n var colspan = columns[i].colspan || 1;\r\n for (var j = 0; j < colspan; j++) {\r\n colgroupElement.append(this._createCol(columns[i]))\r\n }\r\n }\r\n return colgroupElement\r\n },\r\n _createCol: function(column) {\r\n var width = column.visibleWidth || column.width;\r\n if (\"adaptiveHidden\" === width) {\r\n width = HIDDEN_COLUMNS_WIDTH\r\n }\r\n var col = $(\"\");\r\n setWidth(col, width);\r\n return col\r\n },\r\n renderDelayedTemplates: function() {\r\n var delayedTemplates = this._delayedTemplates;\r\n var syncTemplates = delayedTemplates.filter(template => !template.async);\r\n var asyncTemplates = delayedTemplates.filter(template => template.async);\r\n this._delayedTemplates = [];\r\n this._renderDelayedTemplatesCore(syncTemplates);\r\n this._renderDelayedTemplatesCoreAsync(asyncTemplates)\r\n },\r\n _renderDelayedTemplatesCoreAsync: function(templates) {\r\n var that = this;\r\n if (templates.length) {\r\n getWindow().setTimeout((function() {\r\n that._renderDelayedTemplatesCore(templates, true)\r\n }))\r\n }\r\n },\r\n _renderDelayedTemplatesCore: function(templates, isAsync) {\r\n var date = new Date;\r\n while (templates.length) {\r\n var templateParameters = templates.shift();\r\n var options = templateParameters.options;\r\n var doc = domAdapter.getDocument();\r\n if (!isAsync || $(options.container).closest(doc).length) {\r\n templateParameters.template.render(options)\r\n }\r\n if (isAsync && new Date - date > 30) {\r\n this._renderDelayedTemplatesCoreAsync(templates);\r\n break\r\n }\r\n }\r\n if (!templates.length && this._delayedTemplates.length) {\r\n this.renderDelayedTemplates()\r\n }\r\n },\r\n _processTemplate: function(template) {\r\n var renderingTemplate;\r\n if (template && template.render && !isRenderer(template)) {\r\n renderingTemplate = {\r\n allowRenderToDetachedContainer: template.allowRenderToDetachedContainer,\r\n render: function(options) {\r\n template.render(options.container, options.model);\r\n options.deferred && options.deferred.resolve()\r\n }\r\n }\r\n } else if (isFunction(template)) {\r\n renderingTemplate = {\r\n render: function(options) {\r\n var renderedTemplate = template(getPublicElement(options.container), options.model);\r\n if (renderedTemplate && (renderedTemplate.nodeType || isRenderer(renderedTemplate))) {\r\n options.container.append(renderedTemplate)\r\n }\r\n options.deferred && options.deferred.resolve()\r\n }\r\n }\r\n } else {\r\n var templateID = isString(template) ? template : $(template).attr(\"id\");\r\n if (!templateID) {\r\n renderingTemplate = this.getTemplate(template)\r\n } else {\r\n if (!this._templatesCache[templateID]) {\r\n this._templatesCache[templateID] = this.getTemplate(template)\r\n }\r\n renderingTemplate = this._templatesCache[templateID]\r\n }\r\n }\r\n return renderingTemplate\r\n },\r\n renderTemplate: function(container, template, options, allowRenderToDetachedContainer) {\r\n var renderingTemplate = this._processTemplate(template, options);\r\n var column = options.column;\r\n var isDataRow = \"data\" === options.rowType;\r\n var templateDeferred = new Deferred;\r\n var templateOptions = {\r\n container: container,\r\n model: options,\r\n deferred: templateDeferred,\r\n onRendered: () => {\r\n templateDeferred.resolve()\r\n }\r\n };\r\n if (renderingTemplate) {\r\n options.component = this.component;\r\n var async = column && (column.renderAsync && isDataRow || this.option(\"renderAsync\") && (false !== column.renderAsync && (column.command || column.showEditorAlways) && isDataRow || \"filter\" === options.rowType));\r\n if ((renderingTemplate.allowRenderToDetachedContainer || allowRenderToDetachedContainer) && !async) {\r\n renderingTemplate.render(templateOptions)\r\n } else {\r\n this._delayedTemplates.push({\r\n template: renderingTemplate,\r\n options: templateOptions,\r\n async: async\r\n })\r\n }\r\n } else {\r\n templateDeferred.reject()\r\n }\r\n return templateDeferred.promise()\r\n },\r\n _getBodies: function(tableElement) {\r\n return $(tableElement).children(\"tbody\").not(\".dx-header\").not(\".dx-footer\")\r\n },\r\n _wrapRowIfNeed: function($table, $row) {\r\n var $tBodies = this.option(\"rowTemplate\") && this._getBodies(this._tableElement || $table);\r\n if ($tBodies && $tBodies.filter(\".\" + ROW_CLASS).length) {\r\n var $tbody = $(\"\").addClass($row.attr(\"class\"));\r\n this.setAria(\"role\", \"presentation\", $tbody);\r\n return $tbody.append($row)\r\n }\r\n return $row\r\n },\r\n _appendRow: function($table, $row, appendTemplate) {\r\n appendTemplate = appendTemplate || appendElementTemplate;\r\n appendTemplate.render({\r\n content: $row,\r\n container: $table\r\n })\r\n },\r\n _resizeCore: function() {\r\n var scrollLeft = this._scrollLeft;\r\n if (scrollLeft >= 0) {\r\n this._scrollLeft = 0;\r\n this.scrollTo({\r\n left: scrollLeft\r\n })\r\n }\r\n },\r\n _renderCore: function(e) {\r\n var $root = this.element().parent();\r\n if (!$root || $root.parent().length) {\r\n this.renderDelayedTemplates(e)\r\n }\r\n },\r\n _renderTable: function(options) {\r\n options = options || {};\r\n options.columns = this._columnsController.getVisibleColumns();\r\n var changeType = options.change && options.change.changeType;\r\n var $table = this._createTable(options.columns, \"append\" === changeType || \"prepend\" === changeType || \"update\" === changeType);\r\n this._renderRows($table, options);\r\n return $table\r\n },\r\n _renderRows: function($table, options) {\r\n var rows = this._getRows(options.change);\r\n var columnIndices = options.change && options.change.columnIndices || [];\r\n var changeTypes = options.change && options.change.changeTypes || [];\r\n for (var i = 0; i < rows.length; i++) {\r\n this._renderRow($table, extend({\r\n row: rows[i],\r\n columnIndices: columnIndices[i],\r\n changeType: changeTypes[i]\r\n }, options))\r\n }\r\n },\r\n _renderRow: function($table, options) {\r\n if (!options.columnIndices) {\r\n options.row.cells = []\r\n }\r\n var $row = this._createRow(options.row);\r\n var $wrappedRow = this._wrapRowIfNeed($table, $row);\r\n if (\"remove\" !== options.changeType) {\r\n this._renderCells($row, options)\r\n }\r\n this._appendRow($table, $wrappedRow);\r\n var rowOptions = extend({\r\n columns: options.columns\r\n }, options.row);\r\n this._addWatchMethod(rowOptions, options.row);\r\n this._rowPrepared($wrappedRow, rowOptions, options.row)\r\n },\r\n _needRenderCell: function(columnIndex, columnIndices) {\r\n return !columnIndices || columnIndices.indexOf(columnIndex) >= 0\r\n },\r\n _renderCells: function($row, options) {\r\n var columnIndex = 0;\r\n var row = options.row;\r\n var columns = options.columns;\r\n for (var i = 0; i < columns.length; i++) {\r\n if (this._needRenderCell(i, options.columnIndices)) {\r\n this._renderCell($row, extend({\r\n column: columns[i],\r\n columnIndex: columnIndex,\r\n value: row.values && row.values[columnIndex],\r\n oldValue: row.oldValues && row.oldValues[columnIndex]\r\n }, options))\r\n }\r\n if (columns[i].colspan > 1) {\r\n columnIndex += columns[i].colspan\r\n } else {\r\n columnIndex++\r\n }\r\n }\r\n },\r\n _updateCells: function($rowElement, $newRowElement, columnIndices) {\r\n var $cells = $rowElement.children();\r\n var $newCells = $newRowElement.children();\r\n var highlightChanges = this.option(\"highlightChanges\");\r\n var cellUpdatedClass = this.addWidgetPrefix(CELL_UPDATED_ANIMATION_CLASS);\r\n columnIndices.forEach((function(columnIndex, index) {\r\n var $cell = $cells.eq(columnIndex);\r\n var $newCell = $newCells.eq(index);\r\n $cell.replaceWith($newCell);\r\n if (highlightChanges && !$newCell.hasClass(\"dx-command-expand\")) {\r\n $newCell.addClass(cellUpdatedClass)\r\n }\r\n }));\r\n copyAttributes($rowElement.get(0), $newRowElement.get(0))\r\n },\r\n _setCellAriaAttributes: function($cell, cellOptions) {\r\n if (\"freeSpace\" !== cellOptions.rowType) {\r\n this.setAria(\"selected\", false, $cell);\r\n this.setAria(\"role\", \"gridcell\", $cell);\r\n var columnIndexOffset = this._columnsController.getColumnIndexOffset();\r\n var ariaColIndex = cellOptions.columnIndex + columnIndexOffset + 1;\r\n this.setAria(\"colindex\", ariaColIndex, $cell)\r\n }\r\n },\r\n _renderCell: function($row, options) {\r\n var cellOptions = this._getCellOptions(options);\r\n if (options.columnIndices) {\r\n if (options.row.cells) {\r\n options.row.cells[cellOptions.columnIndex] = cellOptions\r\n }\r\n } else {\r\n options.row.cells.push(cellOptions)\r\n }\r\n var $cell = this._createCell(cellOptions);\r\n this._setCellAriaAttributes($cell, cellOptions);\r\n this._renderCellContent($cell, cellOptions);\r\n $row.get(0).appendChild($cell.get(0));\r\n return $cell\r\n },\r\n _renderCellContent: function($cell, options) {\r\n var template = this._getCellTemplate(options);\r\n when(!template || this.renderTemplate($cell, template, options)).done(() => {\r\n this._updateCell($cell, options)\r\n })\r\n },\r\n _getCellTemplate: function() {},\r\n _getRows: function() {\r\n return []\r\n },\r\n _getCellOptions: function(options) {\r\n var cellOptions = {\r\n column: options.column,\r\n columnIndex: options.columnIndex,\r\n rowType: options.row.rowType,\r\n isAltRow: this._isAltRow(options.row)\r\n };\r\n this._addWatchMethod(cellOptions);\r\n return cellOptions\r\n },\r\n _addWatchMethod: function(options, source) {\r\n if (!this.option(\"repaintChangesOnly\")) {\r\n return\r\n }\r\n var watchers = [];\r\n source = source || options;\r\n source.watch = source.watch || function(getter, updateFunc) {\r\n var oldValue = getter(source.data);\r\n var watcher = function(row) {\r\n var newValue = getter(source.data);\r\n if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) {\r\n if (row) {\r\n updateFunc(newValue, row)\r\n }\r\n oldValue = newValue\r\n }\r\n };\r\n watchers.push(watcher);\r\n return function() {\r\n var index = watchers.indexOf(watcher);\r\n if (index >= 0) {\r\n watchers.splice(index, 1)\r\n }\r\n }\r\n };\r\n source.update = source.update || function(row) {\r\n if (row) {\r\n this.data = options.data = row.data;\r\n this.rowIndex = options.rowIndex = row.rowIndex;\r\n this.dataIndex = options.dataIndex = row.dataIndex;\r\n this.isExpanded = options.isExpanded = row.isExpanded;\r\n if (options.row) {\r\n options.row = row\r\n }\r\n }\r\n watchers.forEach((function(watcher) {\r\n watcher(row)\r\n }))\r\n };\r\n if (source !== options) {\r\n options.watch = source.watch.bind(source)\r\n }\r\n return options\r\n },\r\n _cellPrepared: function(cell, options) {\r\n options.cellElement = getPublicElement($(cell));\r\n this.executeAction(\"onCellPrepared\", options)\r\n },\r\n _rowPrepared: function($row, options) {\r\n elementData($row.get(0), \"options\", options);\r\n options.rowElement = getPublicElement($row);\r\n this.executeAction(\"onRowPrepared\", options)\r\n },\r\n _columnOptionChanged: function(e) {\r\n var optionNames = e.optionNames;\r\n if (gridCoreUtils.checkChanges(optionNames, [\"width\", \"visibleWidth\"])) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var widths = iteratorUtils.map(visibleColumns, (function(column) {\r\n var width = column.visibleWidth || column.width;\r\n return isDefined(width) ? width : \"auto\"\r\n }));\r\n this.setColumnWidths({\r\n widths: widths,\r\n optionNames: optionNames\r\n });\r\n return\r\n }\r\n if (!this._requireReady) {\r\n this.render()\r\n }\r\n },\r\n getCellIndex: function($cell) {\r\n var cellIndex = $cell.length ? $cell[0].cellIndex : -1;\r\n return cellIndex\r\n },\r\n getTableElements: function() {\r\n return this._tableElement || $()\r\n },\r\n getTableElement: function() {\r\n return this._tableElement\r\n },\r\n setTableElement: function(tableElement) {\r\n this._tableElement = tableElement\r\n },\r\n optionChanged: function(args) {\r\n this.callBase(args);\r\n switch (args.name) {\r\n case \"cellHintEnabled\":\r\n case \"onCellPrepared\":\r\n case \"onRowPrepared\":\r\n case \"onCellHoverChanged\":\r\n this._invalidate(true, true);\r\n args.handled = true\r\n }\r\n },\r\n init: function() {\r\n var that = this;\r\n that._scrollLeft = -1;\r\n that._columnsController = that.getController(\"columns\");\r\n that._dataController = that.getController(\"data\");\r\n that._delayedTemplates = [];\r\n that._templatesCache = {};\r\n that.createAction(\"onCellClick\");\r\n that.createAction(\"onRowClick\");\r\n that.createAction(\"onCellDblClick\");\r\n that.createAction(\"onRowDblClick\");\r\n that.createAction(\"onCellHoverChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onCellPrepared\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\"\r\n });\r\n that.createAction(\"onRowPrepared\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\",\r\n afterExecute: function(e) {\r\n that._afterRowPrepared(e)\r\n }\r\n });\r\n that._columnsController.columnsChanged.add(that._columnOptionChanged.bind(that));\r\n that._dataController && that._dataController.changed.add(that._handleDataChanged.bind(that))\r\n },\r\n _afterRowPrepared: noop,\r\n _handleDataChanged: function() {},\r\n callbackNames: function() {\r\n return [\"scrollChanged\"]\r\n },\r\n _updateScrollLeftPosition: function() {\r\n var scrollLeft = this._scrollLeft;\r\n if (scrollLeft >= 0) {\r\n this._scrollLeft = 0;\r\n this.scrollTo({\r\n left: scrollLeft\r\n })\r\n }\r\n },\r\n scrollTo: function(pos) {\r\n var $element = this.element();\r\n var $scrollContainer = $element && $element.children(\".\" + this.addWidgetPrefix(SCROLL_CONTAINER_CLASS)).not(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS));\r\n if (isDefined(pos) && isDefined(pos.left) && this._scrollLeft !== pos.left) {\r\n this._scrollLeft = pos.left;\r\n $scrollContainer && $scrollContainer.scrollLeft(pos.left)\r\n }\r\n },\r\n _wrapTableInScrollContainer: function($table) {\r\n var $scrollContainer = $(\"
\");\r\n var useNative = this.option(\"scrolling.useNative\");\r\n if (false === useNative || \"auto\" === useNative && !nativeScrolling) {\r\n $scrollContainer.addClass(this.addWidgetPrefix(SCROLLABLE_SIMULATED_CLASS))\r\n }\r\n eventsEngine.on($scrollContainer, \"scroll\", () => {\r\n var scrollLeft = $scrollContainer.scrollLeft();\r\n if (scrollLeft !== this._scrollLeft) {\r\n this.scrollChanged.fire({\r\n left: scrollLeft\r\n }, this.name)\r\n }\r\n });\r\n $scrollContainer.addClass(this.addWidgetPrefix(CONTENT_CLASS)).addClass(this.addWidgetPrefix(SCROLL_CONTAINER_CLASS)).append($table).appendTo(this.element());\r\n this.setAria(\"role\", \"presentation\", $scrollContainer);\r\n return $scrollContainer\r\n },\r\n _updateContent: function($newTableElement) {\r\n this.setTableElement($newTableElement);\r\n this._wrapTableInScrollContainer($newTableElement)\r\n },\r\n _findContentElement: noop,\r\n _getWidths: function($cellElements) {\r\n var result = [];\r\n var width;\r\n if ($cellElements) {\r\n iteratorUtils.each($cellElements, (function(index, item) {\r\n width = item.offsetWidth;\r\n if (item.getBoundingClientRect) {\r\n var clientRect = getBoundingRect(item);\r\n if (clientRect.width > width - 1) {\r\n width = clientRect.width\r\n }\r\n }\r\n result.push(width)\r\n }))\r\n }\r\n return result\r\n },\r\n getColumnWidths: function($tableElement) {\r\n var result = [];\r\n var $rows;\r\n var $cells;\r\n (this.option(\"forceApplyBindings\") || noop)();\r\n $tableElement = $tableElement || this.getTableElement();\r\n if ($tableElement) {\r\n $rows = $tableElement.children(\"tbody:not(.dx-header)\").children();\r\n for (var i = 0; i < $rows.length; i++) {\r\n var $row = $rows.eq(i);\r\n var isRowVisible = \"none\" !== $row.get(0).style.display && !$row.hasClass(\"dx-state-invisible\");\r\n if (!$row.is(\".\" + GROUP_ROW_CLASS) && !$row.is(\".\" + DETAIL_ROW_CLASS) && isRowVisible) {\r\n $cells = $row.children(\"td\");\r\n break\r\n }\r\n }\r\n result = this._getWidths($cells)\r\n }\r\n return result\r\n },\r\n getVisibleColumnIndex: function(columnIndex, rowIndex) {\r\n return columnIndex\r\n },\r\n setColumnWidths: function(_ref) {\r\n var {\r\n widths: widths,\r\n $tableElement: $tableElement,\r\n columns: columns,\r\n fixed: fixed\r\n } = _ref;\r\n var $cols;\r\n var width;\r\n var minWidth;\r\n var columnIndex;\r\n var columnAutoWidth = this.option(\"columnAutoWidth\");\r\n $tableElement = $tableElement || this.getTableElement();\r\n if ($tableElement && $tableElement.length && widths) {\r\n columnIndex = 0;\r\n $cols = $tableElement.children(\"colgroup\").children(\"col\");\r\n setWidth($cols, \"auto\");\r\n columns = columns || this.getColumns(null, $tableElement);\r\n for (var i = 0; i < columns.length; i++) {\r\n if (columnAutoWidth && !fixed) {\r\n width = columns[i].width;\r\n if (width && !columns[i].command) {\r\n width = columns[i].visibleWidth || width;\r\n width = getWidthStyle(width);\r\n minWidth = getWidthStyle(columns[i].minWidth || width);\r\n var $rows = $rows || $tableElement.children().children(\".dx-row\").not(\".\" + GROUP_ROW_CLASS).not(\".\" + DETAIL_ROW_CLASS);\r\n for (var rowIndex = 0; rowIndex < $rows.length; rowIndex++) {\r\n var visibleIndex = this.getVisibleColumnIndex(i, rowIndex);\r\n var cell = $rows[rowIndex].cells[visibleIndex];\r\n if (cell) {\r\n setCellWidth(cell, columns[i], width);\r\n cell.style.minWidth = minWidth\r\n }\r\n }\r\n }\r\n }\r\n if (columns[i].colspan) {\r\n columnIndex += columns[i].colspan;\r\n continue\r\n }\r\n width = widths[columnIndex];\r\n if (\"adaptiveHidden\" === width) {\r\n width = HIDDEN_COLUMNS_WIDTH\r\n }\r\n if (\"number\" === typeof width) {\r\n width = width.toFixed(3) + \"px\"\r\n }\r\n setWidth($cols.eq(columnIndex), isDefined(width) ? width : \"auto\");\r\n columnIndex++\r\n }\r\n }\r\n },\r\n getCellElements: function(rowIndex) {\r\n return this._getCellElementsCore(rowIndex)\r\n },\r\n _getCellElementsCore: function(rowIndex) {\r\n var $row = this._getRowElements().eq(rowIndex);\r\n return $row.children()\r\n },\r\n _getCellElement: function(rowIndex, columnIdentifier) {\r\n var $cell;\r\n var $cells = this.getCellElements(rowIndex);\r\n var columnVisibleIndex = this._getVisibleColumnIndex($cells, rowIndex, columnIdentifier);\r\n if ($cells.length && columnVisibleIndex >= 0) {\r\n $cell = $cells.eq(columnVisibleIndex)\r\n }\r\n if ($cell && $cell.length) {\r\n return $cell\r\n }\r\n },\r\n _getRowElement: function(rowIndex) {\r\n var that = this;\r\n var $rowElement = $();\r\n var $tableElements = that.getTableElements();\r\n iteratorUtils.each($tableElements, (function(_, tableElement) {\r\n $rowElement = $rowElement.add(that._getRowElements($(tableElement)).eq(rowIndex))\r\n }));\r\n if ($rowElement.length) {\r\n return $rowElement\r\n }\r\n },\r\n getCellElement: function(rowIndex, columnIdentifier) {\r\n return getPublicElement(this._getCellElement(rowIndex, columnIdentifier))\r\n },\r\n getRowElement: function(rowIndex) {\r\n var $rows = this._getRowElement(rowIndex);\r\n var elements = [];\r\n if ($rows && !getPublicElement($rows).get) {\r\n for (var i = 0; i < $rows.length; i++) {\r\n elements.push($rows[i])\r\n }\r\n } else {\r\n elements = $rows\r\n }\r\n return elements\r\n },\r\n _getVisibleColumnIndex: function($cells, rowIndex, columnIdentifier) {\r\n if (isString(columnIdentifier)) {\r\n var columnIndex = this._columnsController.columnOption(columnIdentifier, \"index\");\r\n return this._columnsController.getVisibleIndex(columnIndex)\r\n }\r\n return columnIdentifier\r\n },\r\n getColumnElements: function() {},\r\n getColumns: function(rowIndex) {\r\n return this._columnsController.getVisibleColumns(rowIndex)\r\n },\r\n getCell: function(cellPosition, rows) {\r\n var $rows = rows || this._getRowElements();\r\n var $cells;\r\n if ($rows.length > 0 && cellPosition.rowIndex >= 0) {\r\n if (\"virtual\" !== this.option(\"scrolling.mode\")) {\r\n cellPosition.rowIndex = cellPosition.rowIndex < $rows.length ? cellPosition.rowIndex : $rows.length - 1\r\n }\r\n $cells = this.getCellElements(cellPosition.rowIndex);\r\n if ($cells && $cells.length > 0) {\r\n return $cells.eq($cells.length > cellPosition.columnIndex ? cellPosition.columnIndex : $cells.length - 1)\r\n }\r\n }\r\n },\r\n getRowsCount: function() {\r\n var tableElement = this.getTableElement();\r\n if (tableElement && 1 === tableElement.length) {\r\n return tableElement[0].rows.length\r\n }\r\n return 0\r\n },\r\n _getRowElementsCore: function(tableElement) {\r\n tableElement = tableElement || this.getTableElement();\r\n if (tableElement) {\r\n var tBodies = this.option(\"rowTemplate\") && tableElement.find(\"> tbody.\" + ROW_CLASS);\r\n return tBodies && tBodies.length ? tBodies : tableElement.find(\"> tbody > .\" + ROW_CLASS + \", > .\" + ROW_CLASS)\r\n }\r\n return $()\r\n },\r\n _getRowElements: function(tableElement) {\r\n return this._getRowElementsCore(tableElement)\r\n },\r\n getRowIndex: function($row) {\r\n return this._getRowElements().index($row)\r\n },\r\n getBoundingRect: function() {},\r\n getName: function() {},\r\n setScrollerSpacing: function(width) {\r\n var $element = this.element();\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n $element && $element.css({\r\n paddingLeft: rtlEnabled ? width : \"\",\r\n paddingRight: !rtlEnabled ? width : \"\"\r\n })\r\n },\r\n isScrollbarVisible: function(isHorizontal) {\r\n var $element = this.element();\r\n var $tableElement = this._tableElement;\r\n if ($element && $tableElement) {\r\n return isHorizontal ? $tableElement.outerWidth() - $element.width() > 0 : $tableElement.outerHeight() - $element.height() > 0\r\n }\r\n return false\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/shared/filtering.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDate,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n map\r\n} from \"../../core/utils/iterator\";\r\nvar DEFAULT_DATE_INTERVAL = [\"year\", \"month\", \"day\"];\r\nvar DEFAULT_DATETIME_INTERVAL = [\"year\", \"month\", \"day\", \"hour\", \"minute\"];\r\nvar isDateType = function(dataType) {\r\n return \"date\" === dataType || \"datetime\" === dataType\r\n};\r\nvar getGroupInterval = function(column) {\r\n var index;\r\n var result = [];\r\n var dateIntervals = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\"];\r\n var groupInterval = column.headerFilter && column.headerFilter.groupInterval;\r\n var interval = \"quarter\" === groupInterval ? \"month\" : groupInterval;\r\n if (isDateType(column.dataType) && null !== groupInterval) {\r\n result = \"datetime\" === column.dataType ? DEFAULT_DATETIME_INTERVAL : DEFAULT_DATE_INTERVAL;\r\n index = inArray(interval, dateIntervals);\r\n if (index >= 0) {\r\n result = dateIntervals.slice(0, index);\r\n result.push(groupInterval);\r\n return result\r\n }\r\n return result\r\n } else if (isDefined(groupInterval)) {\r\n return Array.isArray(groupInterval) ? groupInterval : [groupInterval]\r\n }\r\n};\r\nexport default (function() {\r\n var getFilterSelector = function(column, target) {\r\n var selector = column.dataField || column.selector;\r\n if (\"search\" === target) {\r\n selector = column.displayField || column.calculateDisplayValue || selector\r\n }\r\n return selector\r\n };\r\n var getFilterExpressionByRange = function(filterValue, target) {\r\n var endFilterValue;\r\n var startFilterExpression;\r\n var endFilterExpression;\r\n var selector = getFilterSelector(this, target);\r\n if (Array.isArray(filterValue) && isDefined(filterValue[0]) && isDefined(filterValue[1])) {\r\n startFilterExpression = [selector, \">=\", filterValue[0]];\r\n endFilterExpression = [selector, \"<=\", filterValue[1]];\r\n if (isDateType(this.dataType) && (date = filterValue[1], date.getHours() + date.getMinutes() + date.getSeconds() + date.getMilliseconds() < 1)) {\r\n endFilterValue = new Date(filterValue[1].getTime());\r\n if (\"date\" === this.dataType) {\r\n endFilterValue.setDate(filterValue[1].getDate() + 1)\r\n }\r\n endFilterExpression = [selector, \"<\", endFilterValue]\r\n }\r\n return [startFilterExpression, \"and\", endFilterExpression]\r\n }\r\n var date\r\n };\r\n var getFilterExpressionForDate = function(filterValue, selectedFilterOperation, target) {\r\n var dateStart;\r\n var dateEnd;\r\n var dateInterval;\r\n var values = function(dateValue) {\r\n if (isDate(dateValue)) {\r\n return [dateValue.getFullYear(), dateValue.getMonth(), dateValue.getDate(), dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds()]\r\n }\r\n return map((\"\" + dateValue).split(\"/\"), (function(value, index) {\r\n return 1 === index ? Number(value) - 1 : Number(value)\r\n }))\r\n }(filterValue);\r\n var selector = getFilterSelector(this, target);\r\n if (\"headerFilter\" === target) {\r\n dateInterval = getGroupInterval(this)[values.length - 1]\r\n } else if (\"datetime\" === this.dataType) {\r\n dateInterval = \"minute\"\r\n }\r\n switch (dateInterval) {\r\n case \"year\":\r\n dateStart = new Date(values[0], 0, 1);\r\n dateEnd = new Date(values[0] + 1, 0, 1);\r\n break;\r\n case \"month\":\r\n dateStart = new Date(values[0], values[1], 1);\r\n dateEnd = new Date(values[0], values[1] + 1, 1);\r\n break;\r\n case \"quarter\":\r\n dateStart = new Date(values[0], 3 * values[1], 1);\r\n dateEnd = new Date(values[0], 3 * values[1] + 3, 1);\r\n break;\r\n case \"hour\":\r\n dateStart = new Date(values[0], values[1], values[2], values[3]);\r\n dateEnd = new Date(values[0], values[1], values[2], values[3] + 1);\r\n break;\r\n case \"minute\":\r\n dateStart = new Date(values[0], values[1], values[2], values[3], values[4]);\r\n dateEnd = new Date(values[0], values[1], values[2], values[3], values[4] + 1);\r\n break;\r\n case \"second\":\r\n dateStart = new Date(values[0], values[1], values[2], values[3], values[4], values[5]);\r\n dateEnd = new Date(values[0], values[1], values[2], values[3], values[4], values[5] + 1);\r\n break;\r\n default:\r\n dateStart = new Date(values[0], values[1], values[2]);\r\n dateEnd = new Date(values[0], values[1], values[2] + 1)\r\n }\r\n switch (selectedFilterOperation) {\r\n case \"<\":\r\n return [selector, \"<\", dateStart];\r\n case \"<=\":\r\n return [selector, \"<\", dateEnd];\r\n case \">\":\r\n return [selector, \">=\", dateEnd];\r\n case \">=\":\r\n return [selector, \">=\", dateStart];\r\n case \"<>\":\r\n return [\r\n [selector, \"<\", dateStart], \"or\", [selector, \">=\", dateEnd]\r\n ];\r\n default:\r\n return [\r\n [selector, \">=\", dateStart], \"and\", [selector, \"<\", dateEnd]\r\n ]\r\n }\r\n };\r\n var getFilterExpressionForNumber = function(filterValue, selectedFilterOperation, target) {\r\n var selector = getFilterSelector(this, target);\r\n var groupInterval = getGroupInterval(this);\r\n if (\"headerFilter\" === target && groupInterval && isDefined(filterValue)) {\r\n var values = (\"\" + filterValue).split(\"/\");\r\n var value = Number(values[values.length - 1]);\r\n var interval = groupInterval[values.length - 1];\r\n var startFilterValue = [selector, \">=\", value];\r\n var endFilterValue = [selector, \"<\", value + interval];\r\n var condition = [startFilterValue, \"and\", endFilterValue];\r\n return condition\r\n }\r\n return [selector, selectedFilterOperation || \"=\", filterValue]\r\n };\r\n return {\r\n defaultCalculateFilterExpression: function(filterValue, selectedFilterOperation, target) {\r\n var column = this;\r\n var selector = getFilterSelector(column, target);\r\n var isSearchByDisplayValue = column.calculateDisplayValue && \"search\" === target;\r\n var dataType = isSearchByDisplayValue && column.lookup && column.lookup.dataType || column.dataType;\r\n var filter = null;\r\n if ((\"headerFilter\" === target || \"filterBuilder\" === target) && null === filterValue) {\r\n filter = [selector, selectedFilterOperation || \"=\", null];\r\n if (\"string\" === dataType) {\r\n filter = [filter, \"=\" === selectedFilterOperation ? \"or\" : \"and\", [selector, selectedFilterOperation || \"=\", \"\"]]\r\n }\r\n } else if (\"string\" === dataType && (!column.lookup || isSearchByDisplayValue)) {\r\n filter = [selector, selectedFilterOperation || \"contains\", filterValue]\r\n } else if (\"between\" === selectedFilterOperation) {\r\n return getFilterExpressionByRange.apply(column, [filterValue, target])\r\n } else if (isDateType(dataType) && isDefined(filterValue)) {\r\n return getFilterExpressionForDate.apply(column, arguments)\r\n } else if (\"number\" === dataType) {\r\n return getFilterExpressionForNumber.apply(column, arguments)\r\n } else if (\"object\" !== dataType) {\r\n filter = [selector, selectedFilterOperation || \"=\", filterValue]\r\n }\r\n return filter\r\n },\r\n getGroupInterval: getGroupInterval\r\n }\r\n}());\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.selection.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport gridCore from \"../data_grid/ui.data_grid.core\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n touch\r\n} from \"../../core/utils/support\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n addNamespace,\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nimport holdEvent from \"../../events/hold\";\r\nimport Selection from \"../selection/selection\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport errors from \"../widget/ui.errors\";\r\nvar EDITOR_CELL_CLASS = \"dx-editor-cell\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar ROW_SELECTION_CLASS = \"dx-selection\";\r\nvar SELECT_CHECKBOX_CLASS = \"dx-select-checkbox\";\r\nvar CHECKBOXES_HIDDEN_CLASS = \"dx-select-checkboxes-hidden\";\r\nvar COMMAND_SELECT_CLASS = \"dx-command-select\";\r\nvar SELECTION_DISABLED_CLASS = \"dx-selection-disabled\";\r\nvar DATA_ROW_CLASS = \"dx-data-row\";\r\nvar SHOW_CHECKBOXES_MODE = \"selection.showCheckBoxesMode\";\r\nvar SELECTION_MODE = \"selection.mode\";\r\nvar processLongTap = function(that, dxEvent) {\r\n var selectionController = that.getController(\"selection\");\r\n var rowsView = that.getView(\"rowsView\");\r\n var $row = $(dxEvent.target).closest(\".\" + DATA_ROW_CLASS);\r\n var rowIndex = rowsView.getRowIndex($row);\r\n if (rowIndex < 0) {\r\n return\r\n }\r\n if (\"onLongTap\" === that.option(SHOW_CHECKBOXES_MODE)) {\r\n if (selectionController.isSelectionWithCheckboxes()) {\r\n selectionController.stopSelectionWithCheckboxes()\r\n } else {\r\n selectionController.startSelectionWithCheckboxes()\r\n }\r\n } else {\r\n if (\"onClick\" === that.option(SHOW_CHECKBOXES_MODE)) {\r\n selectionController.startSelectionWithCheckboxes()\r\n }\r\n if (\"always\" !== that.option(SHOW_CHECKBOXES_MODE)) {\r\n selectionController.changeItemSelection(rowIndex, {\r\n control: true\r\n })\r\n }\r\n }\r\n};\r\nvar SelectionController = gridCore.Controller.inherit(function() {\r\n var selectionCellTemplate = (container, options) => {\r\n var component = options.component;\r\n var rowsView = component.getView(\"rowsView\");\r\n if (component.option(\"renderAsync\") && !component.option(\"selection.deferred\")) {\r\n options.value = component.isRowSelected(options.row.key)\r\n }\r\n rowsView.renderSelectCheckBoxContainer($(container), options)\r\n };\r\n var selectionHeaderTemplate = (container, options) => {\r\n var column = options.column;\r\n var $cellElement = $(container);\r\n var columnHeadersView = options.component.getView(\"columnHeadersView\");\r\n $cellElement.addClass(EDITOR_CELL_CLASS);\r\n columnHeadersView._renderSelectAllCheckBox($cellElement, column);\r\n columnHeadersView._attachSelectAllCheckBoxClickEvent($cellElement)\r\n };\r\n return {\r\n init: function() {\r\n var {\r\n deferred: deferred,\r\n selectAllMode: selectAllMode,\r\n mode: mode\r\n } = this.option(\"selection\") || {};\r\n if (\"infinite\" === this.option(\"scrolling.mode\") && !deferred && \"multiple\" === mode && \"allPages\" === selectAllMode) {\r\n errors.log(\"W1018\")\r\n }\r\n this._dataController = this.getController(\"data\");\r\n this._selectionMode = mode;\r\n this._isSelectionWithCheckboxes = false;\r\n this._selection = this._createSelection();\r\n this._updateSelectColumn();\r\n this.createAction(\"onSelectionChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _getSelectionConfig: function() {\r\n var dataController = this._dataController;\r\n var selectionOptions = this.option(\"selection\") || {};\r\n return {\r\n selectedKeys: this.option(\"selectedRowKeys\"),\r\n mode: this._selectionMode,\r\n deferred: selectionOptions.deferred,\r\n maxFilterLengthInRequest: selectionOptions.maxFilterLengthInRequest,\r\n selectionFilter: this.option(\"selectionFilter\"),\r\n ignoreDisabledItems: true,\r\n key: function() {\r\n return null === dataController || void 0 === dataController ? void 0 : dataController.key()\r\n },\r\n keyOf: function(item) {\r\n return null === dataController || void 0 === dataController ? void 0 : dataController.keyOf(item)\r\n },\r\n dataFields: function() {\r\n var _dataController$dataS;\r\n return null === (_dataController$dataS = dataController.dataSource()) || void 0 === _dataController$dataS ? void 0 : _dataController$dataS.select()\r\n },\r\n load: function(options) {\r\n var _dataController$dataS2;\r\n return (null === (_dataController$dataS2 = dataController.dataSource()) || void 0 === _dataController$dataS2 ? void 0 : _dataController$dataS2.load(options)) || (new Deferred).resolve([])\r\n },\r\n plainItems: function() {\r\n return dataController.items(true)\r\n },\r\n isItemSelected: function(item) {\r\n return item.selected\r\n },\r\n isSelectableItem: function(item) {\r\n return \"data\" === (null === item || void 0 === item ? void 0 : item.rowType) && !item.isNewRow\r\n },\r\n getItemData: function(item) {\r\n return (null === item || void 0 === item ? void 0 : item.oldData) || (null === item || void 0 === item ? void 0 : item.data) || item\r\n },\r\n filter: function() {\r\n return dataController.getCombinedFilter(true)\r\n },\r\n totalCount: () => dataController.totalCount(),\r\n onSelectionChanged: this._updateSelectedItems.bind(this)\r\n }\r\n },\r\n _updateSelectColumn: function() {\r\n var columnsController = this.getController(\"columns\");\r\n var isSelectColumnVisible = this.isSelectColumnVisible();\r\n columnsController.addCommandColumn({\r\n type: \"selection\",\r\n command: \"select\",\r\n visible: isSelectColumnVisible,\r\n visibleIndex: -1,\r\n dataType: \"boolean\",\r\n alignment: \"center\",\r\n cssClass: COMMAND_SELECT_CLASS,\r\n width: \"auto\",\r\n cellTemplate: selectionCellTemplate,\r\n headerCellTemplate: selectionHeaderTemplate\r\n });\r\n columnsController.columnOption(\"command:select\", \"visible\", isSelectColumnVisible)\r\n },\r\n _createSelection: function() {\r\n var options = this._getSelectionConfig();\r\n return new Selection(options)\r\n },\r\n _fireSelectionChanged: function(options) {\r\n if (options) {\r\n this.executeAction(\"onSelectionChanged\", options)\r\n }\r\n var argument = this.option(\"selection.deferred\") ? {\r\n selectionFilter: this.option(\"selectionFilter\")\r\n } : {\r\n selectedRowKeys: this.option(\"selectedRowKeys\")\r\n };\r\n this.selectionChanged.fire(argument)\r\n },\r\n _updateCheckboxesState: function(options) {\r\n var isDeferredMode = options.isDeferredMode;\r\n var selectionFilter = options.selectionFilter;\r\n var selectedItemKeys = options.selectedItemKeys;\r\n var removedItemKeys = options.removedItemKeys;\r\n if (\"onClick\" === this.option(SHOW_CHECKBOXES_MODE)) {\r\n if (isDeferredMode ? selectionFilter && function(that, selectionFilter) {\r\n var keyIndex = 0;\r\n var store = that._dataController.store();\r\n var key = store && store.key();\r\n var isComplexKey = Array.isArray(key);\r\n if (!selectionFilter.length) {\r\n return false\r\n }\r\n if (isComplexKey && Array.isArray(selectionFilter[0]) && \"and\" === selectionFilter[1]) {\r\n for (var i = 0; i < selectionFilter.length; i++) {\r\n if (Array.isArray(selectionFilter[i])) {\r\n if (selectionFilter[i][0] !== key[keyIndex] || \"=\" !== selectionFilter[i][1]) {\r\n return true\r\n }\r\n keyIndex++\r\n }\r\n }\r\n return false\r\n }\r\n return key !== selectionFilter[0]\r\n }(this, selectionFilter) : selectedItemKeys.length > 1) {\r\n this.startSelectionWithCheckboxes()\r\n } else if (isDeferredMode ? selectionFilter && !selectionFilter.length : 0 === selectedItemKeys.length && removedItemKeys.length) {\r\n this.stopSelectionWithCheckboxes()\r\n }\r\n }\r\n },\r\n _updateSelectedItems: function(args) {\r\n var selectionChangedOptions;\r\n var isDeferredMode = this.option(\"selection.deferred\");\r\n var selectionFilter = this._selection.selectionFilter();\r\n var dataController = this._dataController;\r\n var items = dataController.items();\r\n if (!items) {\r\n return\r\n }\r\n var isSelectionWithCheckboxes = this.isSelectionWithCheckboxes();\r\n var changedItemIndexes = this.getChangedItemIndexes(items);\r\n this._updateCheckboxesState({\r\n selectedItemKeys: args.selectedItemKeys,\r\n removedItemKeys: args.removedItemKeys,\r\n selectionFilter: selectionFilter,\r\n isDeferredMode: isDeferredMode\r\n });\r\n if (changedItemIndexes.length || isSelectionWithCheckboxes !== this.isSelectionWithCheckboxes()) {\r\n dataController.updateItems({\r\n changeType: \"updateSelection\",\r\n itemIndexes: changedItemIndexes\r\n })\r\n }\r\n if (isDeferredMode) {\r\n this.option(\"selectionFilter\", selectionFilter);\r\n selectionChangedOptions = {}\r\n } else if (args.addedItemKeys.length || args.removedItemKeys.length) {\r\n this._selectedItemsInternalChange = true;\r\n this.option(\"selectedRowKeys\", args.selectedItemKeys.slice(0));\r\n this._selectedItemsInternalChange = false;\r\n selectionChangedOptions = {\r\n selectedRowsData: args.selectedItems.slice(0),\r\n selectedRowKeys: args.selectedItemKeys.slice(0),\r\n currentSelectedRowKeys: args.addedItemKeys.slice(0),\r\n currentDeselectedRowKeys: args.removedItemKeys.slice(0)\r\n }\r\n }\r\n this._fireSelectionChanged(selectionChangedOptions)\r\n },\r\n getChangedItemIndexes: function(items) {\r\n var itemIndexes = [];\r\n var isDeferredSelection = this.option(\"selection.deferred\");\r\n for (var i = 0, length = items.length; i < length; i++) {\r\n var row = items[i];\r\n var isItemSelected = this.isRowSelected(isDeferredSelection ? row.data : row.key);\r\n if (this._selection.isDataItem(row) && row.isSelected !== isItemSelected) {\r\n itemIndexes.push(i)\r\n }\r\n }\r\n return itemIndexes\r\n },\r\n callbackNames: function() {\r\n return [\"selectionChanged\"]\r\n },\r\n optionChanged: function(args) {\r\n this.callBase(args);\r\n switch (args.name) {\r\n case \"selection\":\r\n var oldSelectionMode = this._selectionMode;\r\n this.init();\r\n if (\"selection.showCheckBoxesMode\" !== args.fullName) {\r\n var selectionMode = this._selectionMode;\r\n var selectedRowKeys = this.option(\"selectedRowKeys\");\r\n if (oldSelectionMode !== selectionMode) {\r\n if (\"single\" === selectionMode) {\r\n if (selectedRowKeys.length > 1) {\r\n selectedRowKeys = [selectedRowKeys[0]]\r\n }\r\n } else if (\"multiple\" !== selectionMode) {\r\n selectedRowKeys = []\r\n }\r\n }\r\n this.selectRows(selectedRowKeys).always(() => {\r\n this._fireSelectionChanged()\r\n })\r\n }\r\n this.getController(\"columns\").updateColumns();\r\n args.handled = true;\r\n break;\r\n case \"selectionFilter\":\r\n this._selection.selectionFilter(args.value);\r\n args.handled = true;\r\n break;\r\n case \"selectedRowKeys\":\r\n var value = args.value || [];\r\n if (Array.isArray(value) && !this._selectedItemsInternalChange && (this.component.getDataSource() || !value.length)) {\r\n this.selectRows(value)\r\n }\r\n args.handled = true\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"selectRows\", \"deselectRows\", \"selectRowsByIndexes\", \"getSelectedRowKeys\", \"getSelectedRowsData\", \"clearSelection\", \"selectAll\", \"deselectAll\", \"startSelectionWithCheckboxes\", \"stopSelectionWithCheckboxes\", \"isRowSelected\"]\r\n },\r\n isRowSelected: function(arg) {\r\n return this._selection.isItemSelected(arg)\r\n },\r\n isSelectColumnVisible: function() {\r\n return \"multiple\" === this.option(SELECTION_MODE) && (\"always\" === this.option(SHOW_CHECKBOXES_MODE) || \"onClick\" === this.option(SHOW_CHECKBOXES_MODE) || this._isSelectionWithCheckboxes)\r\n },\r\n _isOnePageSelectAll: function() {\r\n return \"page\" === this.option(\"selection.selectAllMode\")\r\n },\r\n isSelectAll: function() {\r\n return this._selection.getSelectAllState(this._isOnePageSelectAll())\r\n },\r\n selectAll: function() {\r\n if (\"onClick\" === this.option(SHOW_CHECKBOXES_MODE)) {\r\n this.startSelectionWithCheckboxes()\r\n }\r\n return this._selection.selectAll(this._isOnePageSelectAll())\r\n },\r\n deselectAll: function() {\r\n return this._selection.deselectAll(this._isOnePageSelectAll())\r\n },\r\n clearSelection: function() {\r\n return this.selectedItemKeys([])\r\n },\r\n refresh: function() {\r\n var selectedRowKeys = this.option(\"selectedRowKeys\") || [];\r\n if (!this.option(\"selection.deferred\") && selectedRowKeys.length) {\r\n return this.selectedItemKeys(selectedRowKeys)\r\n }\r\n return (new Deferred).resolve().promise()\r\n },\r\n selectedItemKeys: function(value, preserve, isDeselect, isSelectAll) {\r\n return this._selection.selectedItemKeys(value, preserve, isDeselect, isSelectAll)\r\n },\r\n getSelectedRowKeys: function() {\r\n return this._selection.getSelectedItemKeys()\r\n },\r\n selectRows: function(keys, preserve) {\r\n return this.selectedItemKeys(keys, preserve)\r\n },\r\n deselectRows: function(keys) {\r\n return this.selectedItemKeys(keys, true, true)\r\n },\r\n selectRowsByIndexes: function(indexes) {\r\n var items = this._dataController.items();\r\n var keys = [];\r\n if (!Array.isArray(indexes)) {\r\n indexes = Array.prototype.slice.call(arguments, 0)\r\n }\r\n each(indexes, (function() {\r\n var item = items[this];\r\n if (item && \"data\" === item.rowType) {\r\n keys.push(item.key)\r\n }\r\n }));\r\n return this.selectRows(keys)\r\n },\r\n getSelectedRowsData: function() {\r\n return this._selection.getSelectedItems()\r\n },\r\n changeItemSelection: function(itemIndex, keys) {\r\n keys = keys || {};\r\n if (this.isSelectionWithCheckboxes()) {\r\n keys.control = true\r\n }\r\n return this._selection.changeItemSelection(this._dataController.getRowIndexDelta() + itemIndex, keys)\r\n },\r\n focusedItemIndex: function(itemIndex) {\r\n if (isDefined(itemIndex)) {\r\n this._selection._focusedItemIndex = itemIndex\r\n } else {\r\n return this._selection._focusedItemIndex\r\n }\r\n },\r\n isSelectionWithCheckboxes: function() {\r\n return \"multiple\" === this.option(SELECTION_MODE) && (\"always\" === this.option(SHOW_CHECKBOXES_MODE) || this._isSelectionWithCheckboxes)\r\n },\r\n startSelectionWithCheckboxes: function() {\r\n if (\"multiple\" === this.option(SELECTION_MODE) && !this.isSelectionWithCheckboxes()) {\r\n this._isSelectionWithCheckboxes = true;\r\n this._updateSelectColumn();\r\n return true\r\n }\r\n return false\r\n },\r\n stopSelectionWithCheckboxes: function() {\r\n if (this._isSelectionWithCheckboxes) {\r\n this._isSelectionWithCheckboxes = false;\r\n this._updateSelectColumn();\r\n return true\r\n }\r\n return false\r\n }\r\n }\r\n}());\r\nexport var selectionModule = {\r\n defaultOptions: function() {\r\n return {\r\n selection: {\r\n mode: \"none\",\r\n showCheckBoxesMode: \"onClick\",\r\n allowSelectAll: true,\r\n selectAllMode: \"allPages\",\r\n maxFilterLengthInRequest: 1500,\r\n deferred: false\r\n },\r\n selectionFilter: [],\r\n selectedRowKeys: []\r\n }\r\n },\r\n controllers: {\r\n selection: SelectionController\r\n },\r\n extenders: {\r\n controllers: {\r\n data: {\r\n init: function() {\r\n var selectionController = this.getController(\"selection\");\r\n var isDeferredMode = this.option(\"selection.deferred\");\r\n this.callBase.apply(this, arguments);\r\n if (isDeferredMode) {\r\n selectionController._updateCheckboxesState({\r\n isDeferredMode: true,\r\n selectionFilter: this.option(\"selectionFilter\")\r\n })\r\n }\r\n },\r\n _loadDataSource: function() {\r\n var that = this;\r\n return that.callBase().done((function() {\r\n that.getController(\"selection\").refresh()\r\n }))\r\n },\r\n _processDataItem: function(item, options) {\r\n var that = this;\r\n var selectionController = that.getController(\"selection\");\r\n var hasSelectColumn = selectionController.isSelectColumnVisible();\r\n var isDeferredSelection = options.isDeferredSelection = void 0 === options.isDeferredSelection ? this.option(\"selection.deferred\") : options.isDeferredSelection;\r\n var dataItem = this.callBase.apply(this, arguments);\r\n dataItem.isSelected = selectionController.isRowSelected(isDeferredSelection ? dataItem.data : dataItem.key);\r\n if (hasSelectColumn && dataItem.values) {\r\n for (var i = 0; i < options.visibleColumns.length; i++) {\r\n if (\"select\" === options.visibleColumns[i].command) {\r\n dataItem.values[i] = dataItem.isSelected;\r\n break\r\n }\r\n }\r\n }\r\n return dataItem\r\n },\r\n refresh: function(options) {\r\n var that = this;\r\n var d = new Deferred;\r\n this.callBase.apply(this, arguments).done((function() {\r\n if (!options || options.selection) {\r\n that.getController(\"selection\").refresh().done(d.resolve).fail(d.reject)\r\n } else {\r\n d.resolve()\r\n }\r\n })).fail(d.reject);\r\n return d.promise()\r\n },\r\n _handleDataChanged: function(e) {\r\n this.callBase.apply(this, arguments);\r\n if ((!e || \"refresh\" === e.changeType) && !this._repaintChangesOnly) {\r\n this.getController(\"selection\").focusedItemIndex(-1)\r\n }\r\n },\r\n _applyChange: function(change) {\r\n if (change && \"updateSelection\" === change.changeType) {\r\n change.items.forEach((item, index) => {\r\n var currentItem = this._items[index];\r\n if (currentItem) {\r\n currentItem.isSelected = item.isSelected;\r\n currentItem.values = item.values\r\n }\r\n });\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _endUpdateCore: function() {\r\n var changes = this._changes;\r\n var isUpdateSelection = changes.length > 1 && changes.every(change => \"updateSelection\" === change.changeType);\r\n if (isUpdateSelection) {\r\n var itemIndexes = changes.map(change => change.itemIndexes || []).reduce((a, b) => a.concat(b));\r\n this._changes = [{\r\n changeType: \"updateSelection\",\r\n itemIndexes: itemIndexes\r\n }]\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n push: function(changes) {\r\n this.callBase.apply(this, arguments);\r\n var removedKeys = changes.filter(change => \"remove\" === change.type).map(change => change.key);\r\n removedKeys.length && this.getController(\"selection\").deselectRows(removedKeys)\r\n }\r\n },\r\n contextMenu: {\r\n _contextMenuPrepared: function(options) {\r\n var dxEvent = options.event;\r\n if (dxEvent.originalEvent && \"dxhold\" !== dxEvent.originalEvent.type || options.items && options.items.length > 0) {\r\n return\r\n }\r\n processLongTap(this, dxEvent)\r\n }\r\n }\r\n },\r\n views: {\r\n columnHeadersView: {\r\n init: function() {\r\n this.callBase();\r\n this.getController(\"selection\").selectionChanged.add(this._updateSelectAllValue.bind(this))\r\n },\r\n _updateSelectAllValue: function() {\r\n var $element = this.element();\r\n var $editor = $element && $element.find(\".\" + SELECT_CHECKBOX_CLASS);\r\n if ($element && $editor.length && \"multiple\" === this.option(\"selection.mode\")) {\r\n var selectAllValue = this.getController(\"selection\").isSelectAll();\r\n var hasSelection = false !== selectAllValue;\r\n var isVisible = this.option(\"selection.allowSelectAll\") ? !this.getController(\"data\").isEmpty() : hasSelection;\r\n $editor.dxCheckBox(\"instance\").option({\r\n visible: isVisible,\r\n value: selectAllValue\r\n })\r\n }\r\n },\r\n _handleDataChanged: function(e) {\r\n this.callBase(e);\r\n if (!e || \"refresh\" === e.changeType) {\r\n this._updateSelectAllValue()\r\n }\r\n },\r\n _renderSelectAllCheckBox: function($container, column) {\r\n var that = this;\r\n var selectionController = that.getController(\"selection\");\r\n var isEmptyData = that.getController(\"data\").isEmpty();\r\n var groupElement = $(\"
\").appendTo($container).addClass(SELECT_CHECKBOX_CLASS);\r\n that.setAria(\"label\", messageLocalization.format(\"dxDataGrid-ariaSelectAll\"), $container);\r\n that.getController(\"editorFactory\").createEditor(groupElement, extend({}, column, {\r\n parentType: \"headerRow\",\r\n dataType: \"boolean\",\r\n value: selectionController.isSelectAll(),\r\n editorOptions: {\r\n visible: !isEmptyData && (that.option(\"selection.allowSelectAll\") || false !== selectionController.isSelectAll())\r\n },\r\n tabIndex: that.option(\"useLegacyKeyboardNavigation\") ? -1 : that.option(\"tabIndex\") || 0,\r\n setValue: function(value, e) {\r\n var allowSelectAll = that.option(\"selection.allowSelectAll\");\r\n e.component.option(\"visible\", allowSelectAll || false !== e.component.option(\"value\"));\r\n if (!e.event || selectionController.isSelectAll() === value) {\r\n return\r\n }\r\n if (e.value && !allowSelectAll) {\r\n e.component.option(\"value\", false)\r\n } else {\r\n e.value ? selectionController.selectAll() : selectionController.deselectAll()\r\n }\r\n e.event.preventDefault()\r\n }\r\n }));\r\n return groupElement\r\n },\r\n _attachSelectAllCheckBoxClickEvent: function($element) {\r\n eventsEngine.on($element, clickEventName, this.createAction((function(e) {\r\n var event = e.event;\r\n if (!$(event.target).closest(\".\" + SELECT_CHECKBOX_CLASS).length) {\r\n eventsEngine.trigger($(event.currentTarget).children(\".\" + SELECT_CHECKBOX_CLASS), clickEventName)\r\n }\r\n event.preventDefault()\r\n })))\r\n }\r\n },\r\n rowsView: {\r\n renderSelectCheckBoxContainer: function($container, options) {\r\n if (\"data\" === options.rowType && !options.row.isNewRow) {\r\n $container.addClass(EDITOR_CELL_CLASS);\r\n this._attachCheckBoxClickEvent($container);\r\n this.setAria(\"label\", messageLocalization.format(\"dxDataGrid-ariaSelectRow\"), $container);\r\n this._renderSelectCheckBox($container, options)\r\n } else {\r\n gridCoreUtils.setEmptyText($container)\r\n }\r\n },\r\n _renderSelectCheckBox: function(container, options) {\r\n var groupElement = $(\"
\").addClass(SELECT_CHECKBOX_CLASS).appendTo(container);\r\n this.getController(\"editorFactory\").createEditor(groupElement, extend({}, options.column, {\r\n parentType: \"dataRow\",\r\n dataType: \"boolean\",\r\n lookup: null,\r\n value: options.value,\r\n setValue: function(value, e) {\r\n var _e$event;\r\n if (\"keydown\" === (null === e || void 0 === e ? void 0 : null === (_e$event = e.event) || void 0 === _e$event ? void 0 : _e$event.type)) {\r\n eventsEngine.trigger(e.element, clickEventName, e)\r\n }\r\n },\r\n row: options.row\r\n }));\r\n return groupElement\r\n },\r\n _attachCheckBoxClickEvent: function($element) {\r\n eventsEngine.on($element, clickEventName, this.createAction((function(e) {\r\n var selectionController = this.getController(\"selection\");\r\n var event = e.event;\r\n var rowIndex = this.getRowIndex($(event.currentTarget).closest(\".\" + ROW_CLASS));\r\n if (rowIndex >= 0) {\r\n selectionController.startSelectionWithCheckboxes();\r\n selectionController.changeItemSelection(rowIndex, {\r\n shift: event.shiftKey\r\n });\r\n if ($(event.target).closest(\".\" + SELECT_CHECKBOX_CLASS).length) {\r\n this.getController(\"data\").updateItems({\r\n changeType: \"updateSelection\",\r\n itemIndexes: [rowIndex]\r\n })\r\n }\r\n }\r\n })))\r\n },\r\n _update: function(change) {\r\n var that = this;\r\n var tableElements = that.getTableElements();\r\n if (\"updateSelection\" === change.changeType) {\r\n if (tableElements.length > 0) {\r\n each(tableElements, (function(_, tableElement) {\r\n each(change.itemIndexes || [], (function(_, index) {\r\n var $row;\r\n if (change.items[index]) {\r\n $row = that._getRowElements($(tableElement)).eq(index);\r\n if ($row.length) {\r\n var isSelected = change.items[index].isSelected;\r\n $row.toggleClass(ROW_SELECTION_CLASS, void 0 === isSelected ? false : isSelected).find(\".\" + SELECT_CHECKBOX_CLASS).dxCheckBox(\"option\", \"value\", isSelected);\r\n that.setAria(\"selected\", isSelected, $row)\r\n }\r\n }\r\n }))\r\n }));\r\n that._updateCheckboxesClass()\r\n }\r\n } else {\r\n that.callBase(change)\r\n }\r\n },\r\n _createTable: function() {\r\n var that = this;\r\n var selectionMode = that.option(\"selection.mode\");\r\n var $table = that.callBase.apply(that, arguments);\r\n if (\"none\" !== selectionMode) {\r\n if (\"onLongTap\" === that.option(SHOW_CHECKBOXES_MODE) || !touch) {\r\n eventsEngine.on($table, addNamespace(holdEvent.name, \"dxDataGridRowsView\"), \".\" + DATA_ROW_CLASS, that.createAction((function(e) {\r\n processLongTap(that.component, e.event);\r\n e.event.stopPropagation()\r\n })))\r\n }\r\n eventsEngine.on($table, \"mousedown selectstart\", that.createAction((function(e) {\r\n var event = e.event;\r\n if (event.shiftKey) {\r\n event.preventDefault()\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 isSelected = !!row.isSelected;\r\n if (isSelected) {\r\n $row.addClass(ROW_SELECTION_CLASS)\r\n }\r\n this.setAria(\"selected\", isSelected, $row)\r\n }\r\n return $row\r\n },\r\n _rowClick: function(e) {\r\n var dxEvent = e.event;\r\n var isSelectionDisabled = $(dxEvent.target).closest(\".\" + SELECTION_DISABLED_CLASS).length;\r\n if (!this.isClickableElement($(dxEvent.target))) {\r\n if (!isSelectionDisabled && (\"multiple\" !== this.option(SELECTION_MODE) || \"always\" !== this.option(SHOW_CHECKBOXES_MODE))) {\r\n if (this.getController(\"selection\").changeItemSelection(e.rowIndex, {\r\n control: isCommandKeyPressed(dxEvent),\r\n shift: dxEvent.shiftKey\r\n })) {\r\n dxEvent.preventDefault();\r\n e.handled = true\r\n }\r\n }\r\n this.callBase(e)\r\n }\r\n },\r\n isClickableElement: function($target) {\r\n var isCommandSelect = $target.closest(\".\" + COMMAND_SELECT_CLASS).length;\r\n return !!isCommandSelect\r\n },\r\n _renderCore: function(change) {\r\n this.callBase(change);\r\n this._updateCheckboxesClass()\r\n },\r\n _updateCheckboxesClass: function() {\r\n var tableElements = this.getTableElements();\r\n var selectionController = this.getController(\"selection\");\r\n var isCheckBoxesHidden = selectionController.isSelectColumnVisible() && !selectionController.isSelectionWithCheckboxes();\r\n each(tableElements, (function(_, tableElement) {\r\n $(tableElement).toggleClass(CHECKBOXES_HIDDEN_CLASS, isCheckBoxesHidden)\r\n }))\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.column_fixing.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n name as wheelEventName\r\n} from \"../../events/core/wheel\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport gridCoreUtils from \"../grid_core/ui.grid_core.utils\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport Scrollable from \"../scroll_view/ui.scrollable\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar CONTENT_FIXED_CLASS = \"content-fixed\";\r\nvar MASTER_DETAIL_CELL_CLASS = \"dx-master-detail-cell\";\r\nvar FIRST_CELL_CLASS = \"dx-first-cell\";\r\nvar LAST_CELL_CLASS = \"dx-last-cell\";\r\nvar HOVER_STATE_CLASS = \"dx-state-hover\";\r\nvar FIXED_COL_CLASS = \"dx-col-fixed\";\r\nvar FIXED_COLUMNS_CLASS = \"dx-fixed-columns\";\r\nvar POINTER_EVENTS_NONE_CLASS = \"dx-pointer-events-none\";\r\nvar COMMAND_TRANSPARENT = \"transparent\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar getTransparentColumnIndex = function(fixedColumns) {\r\n var transparentColumnIndex = -1;\r\n each(fixedColumns, (function(index, column) {\r\n if (column.command === COMMAND_TRANSPARENT) {\r\n transparentColumnIndex = index;\r\n return false\r\n }\r\n }));\r\n return transparentColumnIndex\r\n};\r\nvar normalizeColumnWidths = function(fixedColumns, widths, fixedWidths) {\r\n var fixedColumnIndex = 0;\r\n if (fixedColumns && widths && fixedWidths) {\r\n for (var i = 0; i < fixedColumns.length; i++) {\r\n if (fixedColumns[i].command === COMMAND_TRANSPARENT) {\r\n fixedColumnIndex += fixedColumns[i].colspan\r\n } else {\r\n if (widths[fixedColumnIndex] < fixedWidths[i]) {\r\n widths[fixedColumnIndex] = fixedWidths[i]\r\n }\r\n fixedColumnIndex++\r\n }\r\n }\r\n }\r\n return widths\r\n};\r\nvar baseFixedColumns = {\r\n init: function() {\r\n this.callBase();\r\n this._isFixedTableRendering = false;\r\n this._isFixedColumns = false\r\n },\r\n _createCol: function(column) {\r\n return this.callBase(column).toggleClass(FIXED_COL_CLASS, !!(this._isFixedTableRendering && (column.fixed || column.command && column.command !== COMMAND_TRANSPARENT)))\r\n },\r\n _correctColumnIndicesForFixedColumns: function(fixedColumns, change) {\r\n var transparentColumnIndex = getTransparentColumnIndex(fixedColumns);\r\n var transparentColspan = fixedColumns[transparentColumnIndex].colspan;\r\n var columnIndices = change && change.columnIndices;\r\n if (columnIndices) {\r\n change.columnIndices = columnIndices.map((function(columnIndices) {\r\n if (columnIndices) {\r\n return columnIndices.map((function(columnIndex) {\r\n if (columnIndex < transparentColumnIndex) {\r\n return columnIndex\r\n } else if (columnIndex >= transparentColumnIndex + transparentColspan) {\r\n return columnIndex - transparentColspan + 1\r\n }\r\n return -1\r\n })).filter((function(columnIndex) {\r\n return columnIndex >= 0\r\n }))\r\n }\r\n }))\r\n }\r\n },\r\n _renderTable: function(options) {\r\n var $fixedTable;\r\n var fixedColumns = this.getFixedColumns();\r\n this._isFixedColumns = !!fixedColumns.length;\r\n var $table = this.callBase(options);\r\n if (this._isFixedColumns) {\r\n this._isFixedTableRendering = true;\r\n var change = options && options.change;\r\n var columnIndices = change && change.columnIndices;\r\n this._correctColumnIndicesForFixedColumns(fixedColumns, change);\r\n $fixedTable = this._createTable(fixedColumns);\r\n this._renderRows($fixedTable, extend({}, options, {\r\n columns: fixedColumns\r\n }));\r\n this._updateContent($fixedTable, change);\r\n if (columnIndices) {\r\n change.columnIndices = columnIndices\r\n }\r\n this._isFixedTableRendering = false\r\n } else {\r\n this._fixedTableElement && this._fixedTableElement.parent().remove();\r\n this._fixedTableElement = null\r\n }\r\n return $table\r\n },\r\n _renderRow: function($table, options) {\r\n var fixedCorrection;\r\n var cells = options.row.cells;\r\n this.callBase.apply(this, arguments);\r\n if (this._isFixedTableRendering && cells && cells.length) {\r\n fixedCorrection = 0;\r\n var fixedCells = options.row.cells || [];\r\n cells = cells.slice();\r\n options.row.cells = cells;\r\n for (var i = 0; i < fixedCells.length; i++) {\r\n if (fixedCells[i].column && fixedCells[i].column.command === COMMAND_TRANSPARENT) {\r\n fixedCorrection = (fixedCells[i].column.colspan || 1) - 1;\r\n continue\r\n }\r\n cells[i + fixedCorrection] = fixedCells[i]\r\n }\r\n }\r\n },\r\n _createCell: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n var columnCommand = column && column.command;\r\n var rowType = options.rowType;\r\n var $cell = that.callBase.apply(that, arguments);\r\n var fixedColumns;\r\n var prevFixedColumn;\r\n var transparentColumnIndex;\r\n if (that._isFixedTableRendering || \"filter\" === rowType) {\r\n fixedColumns = that.getFixedColumns();\r\n transparentColumnIndex = getTransparentColumnIndex(fixedColumns);\r\n prevFixedColumn = fixedColumns[transparentColumnIndex - 1]\r\n }\r\n if (that._isFixedTableRendering) {\r\n if (columnCommand === COMMAND_TRANSPARENT) {\r\n $cell.addClass(POINTER_EVENTS_NONE_CLASS).toggleClass(FIRST_CELL_CLASS, 0 === transparentColumnIndex || prevFixedColumn && \"expand\" === prevFixedColumn.command).toggleClass(LAST_CELL_CLASS, fixedColumns.length && transparentColumnIndex === fixedColumns.length - 1);\r\n if (\"freeSpace\" !== rowType) {\r\n gridCoreUtils.setEmptyText($cell)\r\n }\r\n }\r\n } else if (\"filter\" === rowType) {\r\n $cell.toggleClass(FIRST_CELL_CLASS, options.columnIndex === transparentColumnIndex)\r\n }\r\n var isRowAltStyle = that.option(\"rowAlternationEnabled\") && options.isAltRow;\r\n if (browser.mozilla && options.column.fixed && \"group\" !== options.rowType && !isRowAltStyle) {\r\n $cell.addClass(FIXED_COL_CLASS)\r\n }\r\n return $cell\r\n },\r\n _wrapTableInScrollContainer: function() {\r\n var $scrollContainer = this.callBase.apply(this, arguments);\r\n if (this._isFixedTableRendering) {\r\n $scrollContainer.addClass(this.addWidgetPrefix(CONTENT_FIXED_CLASS))\r\n }\r\n return $scrollContainer\r\n },\r\n _renderCellContent: function($cell, options) {\r\n var isEmptyCell;\r\n var column = options.column;\r\n var isFixedTableRendering = this._isFixedTableRendering;\r\n var isGroupCell = \"group\" === options.rowType && isDefined(column.groupIndex);\r\n if (isFixedTableRendering && isGroupCell && !column.command && !column.groupCellTemplate) {\r\n $cell.css(\"pointerEvents\", \"none\")\r\n }\r\n if (!isFixedTableRendering && this._isFixedColumns) {\r\n isEmptyCell = column.fixed || column.command && false !== column.fixed;\r\n if (isGroupCell) {\r\n isEmptyCell = false;\r\n if (options.row.summaryCells && options.row.summaryCells.length) {\r\n var columns = this._columnsController.getVisibleColumns();\r\n var alignByFixedColumnCellCount = this._getAlignByColumnCellCount ? this._getAlignByColumnCellCount(column.colspan, {\r\n columns: columns,\r\n row: options.row,\r\n isFixed: true\r\n }) : 0;\r\n if (alignByFixedColumnCellCount > 0) {\r\n var transparentColumnIndex = getTransparentColumnIndex(this._columnsController.getFixedColumns());\r\n isEmptyCell = columns.length - alignByFixedColumnCellCount < transparentColumnIndex\r\n }\r\n }\r\n }\r\n if (isEmptyCell) {\r\n if (column.command && \"buttons\" !== column.type || \"group\" === options.rowType) {\r\n $cell.html(\" \").addClass(column.cssClass);\r\n return\r\n } else {\r\n $cell.addClass(\"dx-hidden-cell\")\r\n }\r\n }\r\n }\r\n if (column.command !== COMMAND_TRANSPARENT) {\r\n this.callBase($cell, options)\r\n }\r\n },\r\n _getCellElementsCore: function(rowIndex) {\r\n var cellElements = this.callBase.apply(this, arguments);\r\n var isGroupRow = cellElements.parent().hasClass(GROUP_ROW_CLASS);\r\n var headerRowIndex = \"columnHeadersView\" === this.name ? rowIndex : void 0;\r\n if (this._fixedTableElement && cellElements) {\r\n var fixedColumns = this.getFixedColumns(headerRowIndex);\r\n var fixedCellElements = this._getRowElements(this._fixedTableElement).eq(rowIndex).children(\"td\");\r\n each(fixedCellElements, (columnIndex, cell) => {\r\n if (isGroupRow) {\r\n if (cellElements[columnIndex] && \"hidden\" !== cell.style.visibility) {\r\n cellElements[columnIndex] = cell\r\n }\r\n } else {\r\n var fixedColumn = fixedColumns[columnIndex];\r\n if (fixedColumn) {\r\n if (fixedColumn.command === COMMAND_TRANSPARENT) {\r\n if (fixedCellElements.eq(columnIndex).hasClass(MASTER_DETAIL_CELL_CLASS)) {\r\n cellElements[columnIndex] = cell || cellElements[columnIndex]\r\n }\r\n } else {\r\n var fixedColumnIndex = this._columnsController.getVisibleIndexByColumn(fixedColumn, headerRowIndex);\r\n cellElements[fixedColumnIndex] = cell || cellElements[fixedColumnIndex]\r\n }\r\n }\r\n }\r\n })\r\n }\r\n return cellElements\r\n },\r\n getColumnWidths: function() {\r\n var fixedWidths;\r\n var result = this.callBase();\r\n var fixedColumns = this.getFixedColumns();\r\n if (this._fixedTableElement && result.length) {\r\n fixedWidths = this.callBase(this._fixedTableElement)\r\n }\r\n return normalizeColumnWidths(fixedColumns, result, fixedWidths)\r\n },\r\n getTableElement: function() {\r\n var tableElement = this._isFixedTableRendering ? this._fixedTableElement : this.callBase();\r\n return tableElement\r\n },\r\n setTableElement: function(tableElement) {\r\n if (this._isFixedTableRendering) {\r\n this._fixedTableElement = tableElement.addClass(POINTER_EVENTS_NONE_CLASS)\r\n } else {\r\n this.callBase(tableElement)\r\n }\r\n },\r\n getColumns: function(rowIndex, $tableElement) {\r\n $tableElement = $tableElement || this.getTableElement();\r\n if (this._isFixedTableRendering || $tableElement && $tableElement.closest(\"table\").parent(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS)).length) {\r\n return this.getFixedColumns(rowIndex)\r\n }\r\n return this.callBase(rowIndex, $tableElement)\r\n },\r\n getRowIndex: function($row) {\r\n var $fixedTable = this._fixedTableElement;\r\n if ($fixedTable && $fixedTable.find($row).length) {\r\n return this._getRowElements($fixedTable).index($row)\r\n }\r\n return this.callBase($row)\r\n },\r\n getTableElements: function() {\r\n var result = this.callBase.apply(this, arguments);\r\n if (this._fixedTableElement) {\r\n result = $([result.get(0), this._fixedTableElement.get(0)])\r\n }\r\n return result\r\n },\r\n getFixedColumns: function(rowIndex) {\r\n return this._columnsController.getFixedColumns(rowIndex)\r\n },\r\n getFixedColumnsOffset: function() {\r\n var offset = {\r\n left: 0,\r\n right: 0\r\n };\r\n var $transparentColumn;\r\n if (this._fixedTableElement) {\r\n $transparentColumn = this.getTransparentColumnElement();\r\n var positionTransparentColumn = $transparentColumn.position();\r\n offset = {\r\n left: positionTransparentColumn.left,\r\n right: this.element().outerWidth(true) - ($transparentColumn.outerWidth(true) + positionTransparentColumn.left)\r\n }\r\n }\r\n return offset\r\n },\r\n getTransparentColumnElement: function() {\r\n return this._fixedTableElement && this._fixedTableElement.find(\".\" + POINTER_EVENTS_NONE_CLASS).first()\r\n },\r\n getFixedTableElement: function() {\r\n return this._fixedTableElement\r\n },\r\n isFixedColumns: function() {\r\n return this._isFixedColumns\r\n },\r\n _resizeCore: function() {\r\n this.callBase();\r\n this.synchronizeRows()\r\n },\r\n setColumnWidths: function(options) {\r\n var columns;\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var widths = options.widths;\r\n var isWidthsSynchronized = widths && widths.length && isDefined(visibleColumns[0].visibleWidth);\r\n var optionNames = options.optionNames;\r\n var isColumnWidthChanged = optionNames && optionNames.width;\r\n var useVisibleColumns = false;\r\n this.callBase.apply(this, arguments);\r\n if (this._fixedTableElement) {\r\n var hasAutoWidth = widths && widths.some((function(width) {\r\n return \"auto\" === width\r\n }));\r\n useVisibleColumns = hasAutoWidth && (!isWidthsSynchronized || !this.isScrollbarVisible(true));\r\n if (useVisibleColumns) {\r\n columns = visibleColumns\r\n }\r\n this.callBase(extend({}, options, {\r\n $tableElement: this._fixedTableElement,\r\n columns: columns,\r\n fixed: true\r\n }))\r\n }\r\n if (isWidthsSynchronized || isColumnWidthChanged && this.option(\"wordWrapEnabled\")) {\r\n this.synchronizeRows()\r\n }\r\n },\r\n _createColGroup: function(columns) {\r\n if (this._isFixedTableRendering && !this.option(\"columnAutoWidth\")) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var useVisibleColumns = visibleColumns.filter((function(column) {\r\n return !column.width\r\n })).length;\r\n if (useVisibleColumns) {\r\n columns = visibleColumns\r\n }\r\n }\r\n return this.callBase(columns)\r\n },\r\n _getClientHeight: function(element) {\r\n var boundingClientRectElement = element.getBoundingClientRect && getBoundingRect(element);\r\n return boundingClientRectElement && boundingClientRectElement.height ? boundingClientRectElement.height : element.clientHeight\r\n },\r\n synchronizeRows: function() {\r\n var rowHeights = [];\r\n var fixedRowHeights = [];\r\n var rowIndex;\r\n var $rowElements;\r\n var $fixedRowElements;\r\n var $contentElement;\r\n if (this._isFixedColumns && this._tableElement && this._fixedTableElement) {\r\n var heightTable = this._getClientHeight(this._tableElement.get(0));\r\n var heightFixedTable = this._getClientHeight(this._fixedTableElement.get(0));\r\n $rowElements = this._getRowElements(this._tableElement);\r\n $fixedRowElements = this._getRowElements(this._fixedTableElement);\r\n $contentElement = this._findContentElement();\r\n if (heightTable !== heightFixedTable) {\r\n $contentElement && $contentElement.css(\"height\", heightTable);\r\n $rowElements.css(\"height\", \"\");\r\n $fixedRowElements.css(\"height\", \"\");\r\n for (rowIndex = 0; rowIndex < $rowElements.length; rowIndex++) {\r\n rowHeights.push(this._getClientHeight($rowElements.get(rowIndex)));\r\n fixedRowHeights.push(this._getClientHeight($fixedRowElements.get(rowIndex)))\r\n }\r\n for (rowIndex = 0; rowIndex < $rowElements.length; rowIndex++) {\r\n var rowHeight = rowHeights[rowIndex];\r\n var fixedRowHeight = fixedRowHeights[rowIndex];\r\n if (rowHeight > fixedRowHeight) {\r\n $fixedRowElements.eq(rowIndex).css(\"height\", rowHeight)\r\n } else if (rowHeight < fixedRowHeight) {\r\n $rowElements.eq(rowIndex).css(\"height\", fixedRowHeight)\r\n }\r\n }\r\n $contentElement && $contentElement.css(\"height\", \"\")\r\n }\r\n }\r\n },\r\n setScrollerSpacing: function(width) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n this.callBase(width);\r\n this.element().children(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS)).css({\r\n paddingLeft: rtlEnabled ? width : \"\",\r\n paddingRight: !rtlEnabled ? width : \"\"\r\n })\r\n }\r\n};\r\nvar ColumnHeadersViewFixedColumnsExtender = extend({}, baseFixedColumns, {\r\n _getRowVisibleColumns: function(rowIndex) {\r\n if (this._isFixedTableRendering) {\r\n return this.getFixedColumns(rowIndex)\r\n }\r\n return this.callBase(rowIndex)\r\n },\r\n getContextMenuItems: function(options) {\r\n var column = options.column;\r\n var columnFixingOptions = this.option(\"columnFixing\");\r\n var items = this.callBase(options);\r\n if (options.row && \"header\" === options.row.rowType) {\r\n if (true === columnFixingOptions.enabled && column && column.allowFixing) {\r\n var onItemClick = params => {\r\n switch (params.itemData.value) {\r\n case \"none\":\r\n this._columnsController.columnOption(column.index, \"fixed\", false);\r\n break;\r\n case \"left\":\r\n this._columnsController.columnOption(column.index, {\r\n fixed: true,\r\n fixedPosition: \"left\"\r\n });\r\n break;\r\n case \"right\":\r\n this._columnsController.columnOption(column.index, {\r\n fixed: true,\r\n fixedPosition: \"right\"\r\n })\r\n }\r\n };\r\n items = items || [];\r\n items.push({\r\n text: columnFixingOptions.texts.fix,\r\n beginGroup: true,\r\n items: [{\r\n text: columnFixingOptions.texts.leftPosition,\r\n value: \"left\",\r\n disabled: column.fixed && (!column.fixedPosition || \"left\" === column.fixedPosition),\r\n onItemClick: onItemClick\r\n }, {\r\n text: columnFixingOptions.texts.rightPosition,\r\n value: \"right\",\r\n disabled: column.fixed && \"right\" === column.fixedPosition,\r\n onItemClick: onItemClick\r\n }]\r\n }, {\r\n text: columnFixingOptions.texts.unfix,\r\n value: \"none\",\r\n disabled: !column.fixed,\r\n onItemClick: onItemClick\r\n })\r\n }\r\n }\r\n return items\r\n },\r\n getFixedColumnElements: function(rowIndex) {\r\n if (isDefined(rowIndex)) {\r\n return this._fixedTableElement && this._getRowElements(this._fixedTableElement).eq(rowIndex).children()\r\n }\r\n var columnElements = this.getColumnElements();\r\n var $transparentColumnElement = this.getTransparentColumnElement();\r\n if (columnElements && $transparentColumnElement && $transparentColumnElement.length) {\r\n var transparentColumnIndex = getTransparentColumnIndex(this.getFixedColumns());\r\n columnElements.splice(transparentColumnIndex, $transparentColumnElement.get(0).colSpan, $transparentColumnElement.get(0))\r\n }\r\n return columnElements\r\n },\r\n getColumnWidths: function() {\r\n var fixedWidths;\r\n var result = this.callBase();\r\n var $fixedColumnElements = this.getFixedColumnElements();\r\n var fixedColumns = this.getFixedColumns();\r\n if (this._fixedTableElement) {\r\n if ($fixedColumnElements && $fixedColumnElements.length) {\r\n fixedWidths = this._getWidths($fixedColumnElements)\r\n } else {\r\n fixedWidths = this.callBase(this._fixedTableElement)\r\n }\r\n }\r\n return normalizeColumnWidths(fixedColumns, result, fixedWidths)\r\n }\r\n});\r\nvar RowsViewFixedColumnsExtender = extend({}, baseFixedColumns, {\r\n _detachHoverEvents: function() {\r\n this._fixedTableElement && eventsEngine.off(this._fixedTableElement, \"mouseover mouseout\", \".dx-data-row\");\r\n this._tableElement && eventsEngine.off(this._tableElement, \"mouseover mouseout\", \".dx-data-row\")\r\n },\r\n _attachHoverEvents: function() {\r\n var that = this;\r\n var attachHoverEvent = function($table) {\r\n eventsEngine.on($table, \"mouseover mouseout\", \".dx-data-row\", that.createAction((function(args) {\r\n var event = args.event;\r\n var rowIndex = that.getRowIndex($(event.target).closest(\".dx-row\"));\r\n var isHover = \"mouseover\" === event.type;\r\n if (rowIndex >= 0) {\r\n that._tableElement && that._getRowElements(that._tableElement).eq(rowIndex).toggleClass(HOVER_STATE_CLASS, isHover);\r\n that._fixedTableElement && that._getRowElements(that._fixedTableElement).eq(rowIndex).toggleClass(HOVER_STATE_CLASS, isHover)\r\n }\r\n })))\r\n };\r\n if (that._fixedTableElement && that._tableElement) {\r\n attachHoverEvent(that._fixedTableElement);\r\n attachHoverEvent(that._tableElement)\r\n }\r\n },\r\n _findContentElement: function() {\r\n var that = this;\r\n var $content;\r\n var scrollTop;\r\n var contentClass = that.addWidgetPrefix(CONTENT_CLASS);\r\n var element = that.element();\r\n var scrollDelay = browser.mozilla ? 60 : 0;\r\n if (element && that._isFixedTableRendering) {\r\n $content = element.children(\".\" + contentClass);\r\n var scrollable = that.getScrollable();\r\n if (!$content.length && scrollable) {\r\n $content = $(\"
\").addClass(contentClass);\r\n eventsEngine.on($content, \"scroll\", (function(e) {\r\n clearTimeout(that._fixedScrollTimeout);\r\n that._fixedScrollTimeout = setTimeout((function() {\r\n scrollTop = $(e.target).scrollTop();\r\n scrollable.scrollTo({\r\n y: scrollTop\r\n })\r\n }), scrollDelay)\r\n }));\r\n eventsEngine.on($content, wheelEventName, (function(e) {\r\n var $nearestScrollable = $(e.target).closest(\".dx-scrollable\");\r\n var shouldScroll = false;\r\n if (scrollable && scrollable.$element().is($nearestScrollable)) {\r\n shouldScroll = true\r\n } else {\r\n var nearestScrollableInstance = $nearestScrollable.length && Scrollable.getInstance($nearestScrollable.get(0));\r\n var nearestScrollableHasVerticalScrollbar = nearestScrollableInstance && nearestScrollableInstance.scrollHeight() - nearestScrollableInstance.clientHeight() > 0;\r\n shouldScroll = nearestScrollableInstance && !nearestScrollableHasVerticalScrollbar\r\n }\r\n if (shouldScroll) {\r\n scrollTop = scrollable.scrollTop();\r\n scrollable.scrollTo({\r\n y: scrollTop - e.delta\r\n });\r\n if (scrollable.scrollTop() > 0 && scrollable.scrollTop() + scrollable.clientHeight() < scrollable.scrollHeight() + that.getScrollbarWidth()) {\r\n return false\r\n }\r\n }\r\n }));\r\n $content.appendTo(element)\r\n }\r\n return $content\r\n }\r\n return that.callBase()\r\n },\r\n _updateScrollable: function() {\r\n this.callBase();\r\n var scrollable = this.getScrollable();\r\n var scrollTop = scrollable && scrollable.scrollOffset().top;\r\n this._updateFixedTablePosition(scrollTop)\r\n },\r\n _renderContent: function(contentElement, tableElement) {\r\n if (this._isFixedTableRendering) {\r\n return contentElement.empty().addClass(this.addWidgetPrefix(CONTENT_CLASS) + \" \" + this.addWidgetPrefix(CONTENT_FIXED_CLASS)).append(tableElement)\r\n }\r\n return this.callBase(contentElement, tableElement)\r\n },\r\n _getGroupCellOptions: function(options) {\r\n if (this._isFixedTableRendering) {\r\n return this.callBase(extend({}, options, {\r\n columns: this._columnsController.getVisibleColumns()\r\n }))\r\n }\r\n return this.callBase(options)\r\n },\r\n _renderGroupedCells: function($row, options) {\r\n return this.callBase($row, extend({}, options, {\r\n columns: this._columnsController.getVisibleColumns()\r\n }))\r\n },\r\n _renderGroupSummaryCells: function($row, options) {\r\n if (this._isFixedTableRendering) {\r\n this.callBase($row, extend({}, options, {\r\n columns: this._columnsController.getVisibleColumns()\r\n }))\r\n } else {\r\n this.callBase($row, options)\r\n }\r\n },\r\n _hasAlignByColumnSummaryItems: function(columnIndex, options) {\r\n var result = this.callBase.apply(this, arguments);\r\n var column = options.columns[columnIndex];\r\n if (options.isFixed) {\r\n return column.fixed && (result || \"right\" === column.fixedPosition)\r\n }\r\n return result && (!this._isFixedColumns || !column.fixed)\r\n },\r\n _renderGroupSummaryCellsCore: function($groupCell, options, groupCellColSpan, alignByColumnCellCount) {\r\n var alignByFixedColumnCellCount;\r\n if (this._isFixedTableRendering) {\r\n options.isFixed = true;\r\n alignByFixedColumnCellCount = this._getAlignByColumnCellCount(groupCellColSpan, options);\r\n options.isFixed = false;\r\n var startColumnIndex = options.columns.length - alignByFixedColumnCellCount;\r\n options = extend({}, options, {\r\n columns: this.getFixedColumns()\r\n });\r\n var transparentColumnIndex = getTransparentColumnIndex(options.columns);\r\n if (startColumnIndex < transparentColumnIndex) {\r\n alignByFixedColumnCellCount -= options.columns[transparentColumnIndex].colspan - 1 || 0;\r\n groupCellColSpan -= options.columns[transparentColumnIndex].colspan - 1 || 0\r\n } else if (alignByColumnCellCount > 0) {\r\n $groupCell.css(\"visibility\", \"hidden\")\r\n }\r\n alignByColumnCellCount = alignByFixedColumnCellCount\r\n }\r\n this.callBase($groupCell, options, groupCellColSpan, alignByColumnCellCount)\r\n },\r\n _getSummaryCellIndex: function(columnIndex, columns) {\r\n if (this._isFixedTableRendering) {\r\n var transparentColumnIndex = getTransparentColumnIndex(columns);\r\n if (columnIndex > transparentColumnIndex) {\r\n columnIndex += columns[transparentColumnIndex].colspan - 1\r\n }\r\n return columnIndex\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _renderCore: function(change) {\r\n this._detachHoverEvents();\r\n this.callBase(change);\r\n var isFixedColumns = this._isFixedColumns;\r\n this.element().toggleClass(FIXED_COLUMNS_CLASS, isFixedColumns);\r\n if (this.option(\"hoverStateEnabled\") && isFixedColumns) {\r\n this._attachHoverEvents()\r\n }\r\n },\r\n setRowsOpacity: function(columnIndex, value) {\r\n this.callBase(columnIndex, value);\r\n var $rows = this._getRowElements(this._fixedTableElement);\r\n this._setRowsOpacityCore($rows, this.getFixedColumns(), columnIndex, value)\r\n },\r\n optionChanged: function(args) {\r\n this.callBase(args);\r\n if (\"hoverStateEnabled\" === args.name && this._isFixedColumns) {\r\n args.value ? this._attachHoverEvents() : this._detachHoverEvents()\r\n }\r\n },\r\n getCellIndex: function($cell) {\r\n var $fixedTable = this._fixedTableElement;\r\n var cellIndex = 0;\r\n if ($fixedTable && $cell.is(\"td\") && $cell.closest($fixedTable).length) {\r\n var columns = this.getFixedColumns();\r\n each(columns, (function(index, column) {\r\n if (index === $cell[0].cellIndex) {\r\n return false\r\n }\r\n if (column.colspan) {\r\n cellIndex += column.colspan;\r\n return\r\n }\r\n cellIndex++\r\n }));\r\n return cellIndex\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _updateFixedTablePosition: function(scrollTop, needFocus) {\r\n if (this._fixedTableElement && this._tableElement) {\r\n var $focusedElement;\r\n var editorFactory = this.getController(\"editorFactory\");\r\n this._fixedTableElement.parent().scrollTop(scrollTop);\r\n if (needFocus && editorFactory) {\r\n $focusedElement = editorFactory.focus();\r\n $focusedElement && editorFactory.focus($focusedElement)\r\n }\r\n }\r\n },\r\n setScrollerSpacing: function(vWidth, hWidth) {\r\n var styles = {\r\n marginBottom: 0\r\n };\r\n var $fixedContent = this.element().children(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS));\r\n if ($fixedContent.length && this._fixedTableElement) {\r\n $fixedContent.css(styles);\r\n this._fixedTableElement.css(styles);\r\n styles[this.option(\"rtlEnabled\") ? \"marginLeft\" : \"marginRight\"] = vWidth;\r\n styles.marginBottom = hWidth;\r\n var useNativeScrolling = this._scrollable && this._scrollable.option(\"useNative\");\r\n (useNativeScrolling ? $fixedContent : this._fixedTableElement).css(styles)\r\n }\r\n },\r\n _getElasticScrollTop: function(e) {\r\n var elasticScrollTop = 0;\r\n var scrollbarWidth = this.getScrollbarWidth(true);\r\n if (e.scrollOffset.top < 0) {\r\n elasticScrollTop = -e.scrollOffset.top\r\n } else if (e.reachedBottom) {\r\n var scrollableContent = this._findContentElement();\r\n var scrollableContainer = e.component._container();\r\n var maxScrollTop = Math.max(scrollableContent.height() + scrollbarWidth - scrollableContainer.height(), 0);\r\n elasticScrollTop = maxScrollTop - e.scrollOffset.top\r\n }\r\n return elasticScrollTop\r\n },\r\n _applyElasticScrolling: function(e) {\r\n if (this._fixedTableElement) {\r\n var elasticScrollTop = this._getElasticScrollTop(e);\r\n if (0 !== Math.ceil(elasticScrollTop)) {\r\n move(this._fixedTableElement, {\r\n top: elasticScrollTop\r\n })\r\n } else {\r\n this._fixedTableElement.css(\"transform\", \"\")\r\n }\r\n }\r\n },\r\n _handleScroll: function(e) {\r\n this._updateFixedTablePosition(e.scrollOffset.top, true);\r\n this._applyElasticScrolling(e);\r\n this.callBase(e)\r\n },\r\n _updateContentPosition: function(isRender) {\r\n this.callBase.apply(this, arguments);\r\n if (!isRender) {\r\n this._updateFixedTablePosition(this._scrollTop)\r\n }\r\n },\r\n _afterRowPrepared: function(e) {\r\n if (this._isFixedTableRendering) {\r\n return\r\n }\r\n this.callBase(e)\r\n },\r\n _scrollToElement: function($element) {\r\n this.callBase($element, this.getFixedColumnsOffset())\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n clearTimeout(this._fixedScrollTimeout)\r\n }\r\n});\r\nvar FooterViewFixedColumnsExtender = baseFixedColumns;\r\nexport var columnFixingModule = {\r\n defaultOptions: function() {\r\n return {\r\n columnFixing: {\r\n enabled: false,\r\n texts: {\r\n fix: messageLocalization.format(\"dxDataGrid-columnFixingFix\"),\r\n unfix: messageLocalization.format(\"dxDataGrid-columnFixingUnfix\"),\r\n leftPosition: messageLocalization.format(\"dxDataGrid-columnFixingLeftPosition\"),\r\n rightPosition: messageLocalization.format(\"dxDataGrid-columnFixingRightPosition\")\r\n }\r\n }\r\n }\r\n },\r\n extenders: {\r\n views: {\r\n columnHeadersView: ColumnHeadersViewFixedColumnsExtender,\r\n rowsView: RowsViewFixedColumnsExtender,\r\n footerView: FooterViewFixedColumnsExtender\r\n },\r\n controllers: function() {\r\n var normalizeColumnIndicesByPoints = function(columns, fixedColumns, pointsByColumns) {\r\n var transparentColumnIndex = getTransparentColumnIndex(fixedColumns);\r\n var correctIndex = columns.length - fixedColumns.length;\r\n each(pointsByColumns, (function(_, point) {\r\n if (point.index > transparentColumnIndex) {\r\n point.columnIndex += correctIndex;\r\n point.index += correctIndex\r\n }\r\n }));\r\n return pointsByColumns\r\n };\r\n return {\r\n draggingHeader: {\r\n _generatePointsByColumns: function(options) {\r\n var visibleColumns = options.columns;\r\n var targetDraggingPanel = options.targetDraggingPanel;\r\n if (targetDraggingPanel && \"headers\" === targetDraggingPanel.getName() && targetDraggingPanel.isFixedColumns()) {\r\n if (options.sourceColumn.fixed) {\r\n if (!options.rowIndex) {\r\n options.columnElements = targetDraggingPanel.getFixedColumnElements(0)\r\n }\r\n options.columns = targetDraggingPanel.getFixedColumns(options.rowIndex);\r\n var pointsByColumns = this.callBase(options);\r\n normalizeColumnIndicesByPoints(visibleColumns, options.columns, pointsByColumns);\r\n return pointsByColumns\r\n }\r\n }\r\n return this.callBase(options)\r\n },\r\n _pointCreated: function(point, columns, location, sourceColumn) {\r\n var result = this.callBase.apply(this, arguments);\r\n var targetColumn = columns[point.columnIndex];\r\n var $transparentColumn = this._columnHeadersView.getTransparentColumnElement();\r\n if (!result && \"headers\" === location && $transparentColumn && $transparentColumn.length) {\r\n var boundingRect = getBoundingRect($transparentColumn.get(0));\r\n if (sourceColumn && sourceColumn.fixed) {\r\n return \"right\" === sourceColumn.fixedPosition ? point.x < boundingRect.right : point.x > boundingRect.left\r\n } else {\r\n if (targetColumn && targetColumn.fixed && \"right\" !== targetColumn.fixedPosition) {\r\n return true\r\n }\r\n return point.x < boundingRect.left || point.x > boundingRect.right\r\n }\r\n }\r\n return result\r\n }\r\n },\r\n columnsResizer: {\r\n _generatePointsByColumns: function() {\r\n var that = this;\r\n var columnsController = that._columnsController;\r\n var columns = columnsController && that._columnsController.getVisibleColumns();\r\n var fixedColumns = columnsController && that._columnsController.getFixedColumns();\r\n var cells = that._columnHeadersView.getFixedColumnElements();\r\n var pointsByFixedColumns = [];\r\n that.callBase();\r\n if (cells && cells.length > 0) {\r\n pointsByFixedColumns = gridCoreUtils.getPointsByColumns(cells, (function(point) {\r\n return that._pointCreated(point, cells.length, fixedColumns)\r\n }));\r\n that._pointsByFixedColumns = normalizeColumnIndicesByPoints(columns, fixedColumns, pointsByFixedColumns)\r\n }\r\n },\r\n _pointCreated: function(point, cellsLength, columns) {\r\n var isWidgetResizingMode = \"widget\" === this.option(\"columnResizingMode\");\r\n if (point.index > 0 && point.index < cellsLength) {\r\n var currentColumn = columns[point.columnIndex - 1] || {};\r\n var nextColumn = columns[point.columnIndex] || {};\r\n if (currentColumn.fixed || nextColumn.fixed) {\r\n point.columnIndex -= 1;\r\n return !((currentColumn.allowResizing || currentColumn.command === COMMAND_TRANSPARENT) && (isWidgetResizingMode || nextColumn.allowResizing || nextColumn.command === COMMAND_TRANSPARENT))\r\n }\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _getTargetPoint: function(pointsByColumns, currentX, deltaX) {\r\n var $transparentColumn = this._columnHeadersView.getTransparentColumnElement();\r\n if ($transparentColumn && $transparentColumn.length) {\r\n var boundingRect = getBoundingRect($transparentColumn.get(0));\r\n if (currentX <= boundingRect.left || currentX >= boundingRect.right) {\r\n return this.callBase(this._pointsByFixedColumns, currentX, deltaX)\r\n }\r\n }\r\n return this.callBase(pointsByColumns, currentX, deltaX)\r\n }\r\n }\r\n }\r\n }()\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.filter_panel.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport gridUtils from \"./ui.grid_core.utils\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport CheckBox from \"../check_box\";\r\nimport {\r\n getCurrentLookupValueText,\r\n getCustomOperation,\r\n getCurrentValueText,\r\n getField,\r\n getCaptionByOperation,\r\n getGroupValue,\r\n isCondition,\r\n isGroup\r\n} from \"../filter_builder/utils\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n captionize\r\n} from \"../../core/utils/inflector\";\r\nimport {\r\n registerKeyboardAction\r\n} from \"./ui.grid_core.accessibility\";\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 = modules.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 this.getController(\"data\").dataSourceChanged.add(() => this.render())\r\n },\r\n _renderCore: function() {\r\n var $element = this.element();\r\n $element.empty().addClass(this.addWidgetPrefix(FILTER_PANEL_CLASS));\r\n var $leftContainer = $(\"
\").addClass(this.addWidgetPrefix(FILTER_PANEL_LEFT_CONTAINER)).appendTo($element);\r\n if (this.option(\"filterValue\") || this._filterValueBuffer) {\r\n $leftContainer.append(this._getCheckElement()).append(this._getFilterElement()).append(this._getTextElement());\r\n $element.append(this._getRemoveButtonElement())\r\n } else {\r\n $leftContainer.append(this._getFilterElement()).append(this._getTextElement())\r\n }\r\n },\r\n _getCheckElement: function() {\r\n var that = this;\r\n var $element = $(\"
\").addClass(this.addWidgetPrefix(FILTER_PANEL_CHECKBOX_CLASS));\r\n that._createComponent($element, CheckBox, {\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 = $(\"
\").addClass(\"dx-icon-filter\");\r\n eventsEngine.on($element, \"click\", () => that._showFilterBuilder());\r\n registerKeyboardAction(\"filterPanel\", that, $element, void 0, () => that._showFilterBuilder());\r\n that._addTabIndexToElement($element);\r\n return $element\r\n },\r\n _getTextElement: function() {\r\n var that = this;\r\n var $textElement = $(\"
\").addClass(that.addWidgetPrefix(FILTER_PANEL_TEXT_CLASS));\r\n var filterText;\r\n var filterValue = that.option(\"filterValue\");\r\n if (filterValue) {\r\n 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 eventsEngine.on($textElement, \"click\", () => that._showFilterBuilder());\r\n registerKeyboardAction(\"filterPanel\", that, $textElement, void 0, () => that._showFilterBuilder());\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 = () => that.option(\"filterValue\", null);\r\n var $element = $(\"
\").addClass(that.addWidgetPrefix(FILTER_PANEL_CLEAR_FILTER_CLASS)).text(that.option(\"filterPanel.texts.clearFilter\"));\r\n eventsEngine.on($element, \"click\", clearFilterValue);\r\n 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 (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 deferred = new Deferred;\r\n var hasCustomOperation = customOperation && customOperation.customizeText;\r\n if (isDefined(value) || hasCustomOperation) {\r\n if (!hasCustomOperation && field.lookup) {\r\n getCurrentLookupValueText(field, value, data => {\r\n deferred.resolve(this._getValueMaskedText(data))\r\n })\r\n } else {\r\n var displayValue = Array.isArray(value) ? value : gridUtils.getDisplayValue(field, value);\r\n when(getCurrentValueText(field, displayValue, customOperation, FILTER_PANEL_TARGET)).done(data => {\r\n deferred.resolve(this._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;\r\n var customOperation = getCustomOperation(options.customOperations, operation);\r\n var operationText;\r\n var field = 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 || captionize(customOperation.name)\r\n } else if (null === value) {\r\n operationText = getCaptionByOperation(\"=\" === operation ? \"isblank\" : \"isnotblank\", options.filterOperationDescriptions)\r\n } else {\r\n operationText = getCaptionByOperation(operation, options.filterOperationDescriptions)\r\n }\r\n this._getValueText(field, customOperation, value).done(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;\r\n var textParts = [];\r\n var groupValue = getGroupValue(filterValue);\r\n filterValue.forEach(item => {\r\n if (isCondition(item)) {\r\n textParts.push(that.getConditionText(item, options))\r\n } else if (isGroup(item)) {\r\n textParts.push(that.getGroupText(item, options, true))\r\n }\r\n });\r\n 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 options = {\r\n customOperations: customOperations,\r\n columns: this.getController(\"columns\").getFilteringColumns(),\r\n filterOperationDescriptions: this.option(\"filterBuilder.filterOperationDescriptions\"),\r\n groupOperationDescriptions: this.option(\"filterBuilder.groupOperationDescriptions\")\r\n };\r\n return isCondition(filterValue) ? this.getConditionText(filterValue, options) : this.getGroupText(filterValue, options)\r\n }\r\n});\r\nexport var filterPanelModule = {\r\n defaultOptions: function() {\r\n return {\r\n filterPanel: {\r\n visible: false,\r\n filterEnabled: true,\r\n texts: {\r\n createFilter: messageLocalization.format(\"dxDataGrid-filterPanelCreateFilter\"),\r\n clearFilter: messageLocalization.format(\"dxDataGrid-filterPanelClearFilter\"),\r\n filterEnabledHint: messageLocalization.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\n","/**\r\n * DevExtreme (esm/ui/context_menu.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport ContextMenu from \"./context_menu/ui.context_menu\";\r\nexport default ContextMenu;\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.columns_resizing_reordering.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n isDefined,\r\n isString,\r\n isObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport {\r\n addNamespace,\r\n eventData as getEventData,\r\n isTouchEvent\r\n} from \"../../events/utils/index\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport {\r\n start as dragEventStart,\r\n move as dragEventMove,\r\n end as dragEventEnd\r\n} from \"../../events/drag\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport fx from \"../../animation/fx\";\r\nimport swatchContainer from \"../widget/swatch_container\";\r\nvar COLUMNS_SEPARATOR_CLASS = \"columns-separator\";\r\nvar COLUMNS_SEPARATOR_TRANSPARENT = \"columns-separator-transparent\";\r\nvar DRAGGING_HEADER_CLASS = \"drag-header\";\r\nvar CELL_CONTENT_CLASS = \"text-content\";\r\nvar HEADERS_DRAG_ACTION_CLASS = \"drag-action\";\r\nvar TRACKER_CLASS = \"tracker\";\r\nvar HEADERS_DROP_HIGHLIGHT_CLASS = \"drop-highlight\";\r\nvar BLOCK_SEPARATOR_CLASS = \"dx-block-separator\";\r\nvar HEADER_ROW_CLASS = \"dx-header-row\";\r\nvar WIDGET_CLASS = \"dx-widget\";\r\nvar DRAGGING_COMMAND_CELL_CLASS = \"dx-drag-command-cell\";\r\nvar MODULE_NAMESPACE = \"dxDataGridResizingReordering\";\r\nvar COLUMNS_SEPARATOR_TOUCH_TRACKER_WIDTH = 10;\r\nvar DRAGGING_DELTA = 5;\r\nvar COLUMN_OPACITY = .5;\r\nvar allowResizing = function(that) {\r\n return that.option(\"allowColumnResizing\") || that.getController(\"columns\").isColumnOptionUsed(\"allowResizing\")\r\n};\r\nvar allowReordering = function(that) {\r\n return that.option(\"allowColumnReordering\") || that.getController(\"columns\").isColumnOptionUsed(\"allowReordering\")\r\n};\r\nvar TrackerView = modules.View.inherit({\r\n _renderCore: function() {\r\n this.callBase();\r\n this.element().addClass(this.addWidgetPrefix(TRACKER_CLASS));\r\n this.hide()\r\n },\r\n _unsubscribeFromCallback: function() {\r\n if (this._positionChanged) {\r\n this._tablePositionController.positionChanged.remove(this._positionChanged)\r\n }\r\n },\r\n _subscribeToCallback: function() {\r\n var that = this;\r\n that._positionChanged = function(position) {\r\n var $element = that.element();\r\n if ($element && $element.hasClass(that.addWidgetPrefix(TRACKER_CLASS))) {\r\n $element.css({\r\n top: position.top\r\n });\r\n $element.height(position.height)\r\n }\r\n };\r\n this._tablePositionController.positionChanged.add(that._positionChanged)\r\n },\r\n optionChanged: function(args) {\r\n if (\"allowColumnResizing\" === args.name) {\r\n this._unsubscribeFromCallback();\r\n if (args.value) {\r\n this._subscribeToCallback();\r\n this._invalidate()\r\n }\r\n }\r\n this.callBase(args)\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._tablePositionController = this.getController(\"tablePosition\");\r\n this._subscribeToCallback()\r\n },\r\n isVisible: function() {\r\n return allowResizing(this)\r\n },\r\n show: function() {\r\n this.element().show()\r\n },\r\n hide: function() {\r\n this.element() && this.element().hide()\r\n },\r\n setHeight: function(value) {\r\n this.element().height(value)\r\n },\r\n dispose: function() {\r\n this._unsubscribeFromCallback();\r\n this.callBase()\r\n }\r\n});\r\nvar SeparatorView = modules.View.inherit({\r\n _renderSeparator: function() {},\r\n _renderCore: function(options) {\r\n this.callBase(options);\r\n this._isShown = true;\r\n this._renderSeparator();\r\n this.hide()\r\n },\r\n show: function() {\r\n this._isShown = true\r\n },\r\n hide: function() {\r\n this._isShown = false\r\n },\r\n height: function(value) {\r\n var $element = this.element();\r\n if ($element) {\r\n if (isDefined(value)) {\r\n $element.height(value)\r\n } else {\r\n return $element.height()\r\n }\r\n }\r\n },\r\n width: function(value) {\r\n var $element = this.element();\r\n if ($element) {\r\n if (isDefined(value)) {\r\n $element.width(value)\r\n } else {\r\n return $element.width()\r\n }\r\n }\r\n }\r\n});\r\nvar ColumnsSeparatorView = SeparatorView.inherit({\r\n _renderSeparator: function() {\r\n this.callBase();\r\n var $element = this.element();\r\n $element.addClass(this.addWidgetPrefix(COLUMNS_SEPARATOR_CLASS))\r\n },\r\n _subscribeToCallback: function() {\r\n var that = this;\r\n var $element;\r\n that._positionChanged = function(position) {\r\n $element = that.element();\r\n if ($element) {\r\n $element.css({\r\n top: position.top\r\n });\r\n $element.height(position.height)\r\n }\r\n };\r\n that._tablePositionController.positionChanged.add(that._positionChanged)\r\n },\r\n _unsubscribeFromCallback: function() {\r\n this._positionChanged && this._tablePositionController.positionChanged.remove(this._positionChanged)\r\n },\r\n _init: function() {\r\n this._isTransparent = allowResizing(this);\r\n if (this.isVisible()) {\r\n this._subscribeToCallback()\r\n }\r\n },\r\n isVisible: function() {\r\n return this.option(\"showColumnHeaders\") && (allowReordering(this) || allowResizing(this))\r\n },\r\n optionChanged: function(args) {\r\n if (\"allowColumnResizing\" === args.name) {\r\n if (args.value) {\r\n this._init();\r\n this._invalidate();\r\n this.hide(true)\r\n } else {\r\n this._unsubscribeFromCallback();\r\n this._isTransparent = allowResizing(this);\r\n this.hide(true)\r\n }\r\n }\r\n this.callBase(args)\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._tablePositionController = this.getController(\"tablePosition\");\r\n this._init()\r\n },\r\n show: function() {\r\n var $element = this.element();\r\n if ($element && !this._isShown) {\r\n if (this._isTransparent) {\r\n $element.removeClass(this.addWidgetPrefix(COLUMNS_SEPARATOR_TRANSPARENT))\r\n } else {\r\n $element.show()\r\n }\r\n }\r\n this.callBase()\r\n },\r\n hide: function(force) {\r\n var $element = this.element();\r\n var columnsSeparatorTransparent = this.addWidgetPrefix(COLUMNS_SEPARATOR_TRANSPARENT);\r\n if ($element && (this._isShown || force)) {\r\n if (this._isTransparent) {\r\n $element.addClass(columnsSeparatorTransparent);\r\n $element.css(\"left\", \"\");\r\n $element.show()\r\n } else {\r\n if ($element.hasClass(columnsSeparatorTransparent)) {\r\n $element.removeClass(columnsSeparatorTransparent)\r\n }\r\n $element.hide()\r\n }\r\n }\r\n this.callBase()\r\n },\r\n moveByX: function(outerX) {\r\n var $element = this.element();\r\n if ($element) {\r\n $element.css(\"left\", outerX - this._parentElement().offset().left)\r\n }\r\n },\r\n changeCursor: function(cursorName) {\r\n cursorName = isDefined(cursorName) ? cursorName : \"\";\r\n var $element = this.element();\r\n if ($element) {\r\n $element.css(\"cursor\", cursorName)\r\n }\r\n },\r\n dispose: function() {\r\n this._unsubscribeFromCallback();\r\n this.callBase()\r\n }\r\n});\r\nvar BlockSeparatorView = SeparatorView.inherit({\r\n init: function() {\r\n var that = this;\r\n this.callBase();\r\n this.getController(\"data\").loadingChanged.add((function(isLoading) {\r\n if (!isLoading) {\r\n that.hide()\r\n }\r\n }))\r\n },\r\n _renderSeparator: function() {\r\n this.callBase();\r\n this.element().addClass(BLOCK_SEPARATOR_CLASS).html(\" \")\r\n },\r\n hide: function() {\r\n var $parent = this._parentElement();\r\n var $element = this.element();\r\n if ($element && this._isShown) {\r\n $element.css(\"display\", \"none\")\r\n }\r\n if ($parent && !$parent.children(\".\" + BLOCK_SEPARATOR_CLASS).length) {\r\n $parent.prepend(this.element())\r\n }\r\n this.callBase()\r\n },\r\n isVisible: function() {\r\n var groupPanelOptions = this.option(\"groupPanel\");\r\n var columnChooserOptions = this.option(\"columnChooser\");\r\n return groupPanelOptions && groupPanelOptions.visible || columnChooserOptions && columnChooserOptions.enabled\r\n },\r\n show: function(targetLocation) {\r\n var $element = this.element();\r\n var startAnimate = function(toOptions) {\r\n fx.stop($element, true);\r\n fx.animate($element, {\r\n type: \"slide\",\r\n from: {\r\n width: 0,\r\n display: toOptions.display\r\n },\r\n to: toOptions,\r\n duration: 300,\r\n easing: \"swing\"\r\n })\r\n };\r\n if ($element && !this._isShown) {\r\n switch (targetLocation) {\r\n case \"group\":\r\n startAnimate({\r\n width: \"50px\",\r\n display: \"inline-block\"\r\n });\r\n break;\r\n case \"columnChooser\":\r\n startAnimate({\r\n width: \"100%\",\r\n display: \"block\"\r\n });\r\n break;\r\n default:\r\n $element.css(\"display\", \"\")\r\n }\r\n }\r\n this.callBase()\r\n }\r\n});\r\nvar DraggingHeaderView = modules.View.inherit({\r\n _isDragging: false,\r\n isDragging: function() {\r\n return this._isDragging\r\n },\r\n _getDraggingPanelByPos: function(pos) {\r\n var result;\r\n each(this._dragOptions.draggingPanels, (function(index, draggingPanel) {\r\n if (draggingPanel) {\r\n var boundingRect = draggingPanel.getBoundingRect();\r\n if (boundingRect && (void 0 === boundingRect.bottom || pos.y < boundingRect.bottom) && (void 0 === boundingRect.top || pos.y > boundingRect.top) && (void 0 === boundingRect.left || pos.x > boundingRect.left) && (void 0 === boundingRect.right || pos.x < boundingRect.right)) {\r\n result = draggingPanel;\r\n return false\r\n }\r\n }\r\n }));\r\n return result\r\n },\r\n _renderCore: function() {\r\n this.element().addClass(this.addWidgetPrefix(DRAGGING_HEADER_CLASS) + \" \" + this.addWidgetPrefix(CELL_CONTENT_CLASS) + \" \" + WIDGET_CLASS).hide()\r\n },\r\n _resetTargetColumnOptions: function() {\r\n var params = this._dropOptions;\r\n params.targetColumnIndex = -1;\r\n delete params.targetColumnElement;\r\n delete params.isLast;\r\n delete params.posX;\r\n delete params.posY\r\n },\r\n _getVisibleIndexObject: function(rowIndex, visibleIndex) {\r\n if (isDefined(rowIndex)) {\r\n return {\r\n columnIndex: visibleIndex,\r\n rowIndex: rowIndex\r\n }\r\n }\r\n return visibleIndex\r\n },\r\n dispose: function() {\r\n var element = this.element();\r\n this._dragOptions = null;\r\n element && element.parent().find(\".\" + this.addWidgetPrefix(DRAGGING_HEADER_CLASS)).remove()\r\n },\r\n isVisible: function() {\r\n var columnsController = this.getController(\"columns\");\r\n var commonColumnSettings = columnsController.getCommonSettings();\r\n return this.option(\"showColumnHeaders\") && (allowReordering(this) || commonColumnSettings.allowGrouping || commonColumnSettings.allowHiding)\r\n },\r\n init: function() {\r\n var that = this;\r\n this.callBase();\r\n this._controller = this.getController(\"draggingHeader\");\r\n this._columnsResizerViewController = this.getController(\"columnsResizer\");\r\n this.getController(\"data\").loadingChanged.add((function(isLoading) {\r\n var element = that.element();\r\n if (!isLoading && element) {\r\n element.hide()\r\n }\r\n }))\r\n },\r\n dragHeader: function(options) {\r\n var columnElement = options.columnElement;\r\n var isCommandColumn = !!options.sourceColumn.type;\r\n this._isDragging = true;\r\n this._dragOptions = options;\r\n this._dropOptions = {\r\n sourceIndex: options.index,\r\n sourceColumnIndex: this._getVisibleIndexObject(options.rowIndex, options.columnIndex),\r\n sourceColumnElement: options.columnElement,\r\n sourceLocation: options.sourceLocation\r\n };\r\n var document = domAdapter.getDocument();\r\n this._onSelectStart = document.onselectstart;\r\n document.onselectstart = function() {\r\n return false\r\n };\r\n this._controller.drag(this._dropOptions);\r\n this.element().css({\r\n textAlign: columnElement && columnElement.css(\"textAlign\"),\r\n height: columnElement && (isCommandColumn && columnElement.get(0).clientHeight || columnElement.height()),\r\n width: columnElement && (isCommandColumn && columnElement.get(0).clientWidth || columnElement.width()),\r\n whiteSpace: columnElement && columnElement.css(\"whiteSpace\")\r\n }).addClass(this.addWidgetPrefix(HEADERS_DRAG_ACTION_CLASS)).toggleClass(DRAGGING_COMMAND_CELL_CLASS, isCommandColumn).text(isCommandColumn ? \"\" : options.sourceColumn.caption);\r\n this.element().appendTo(swatchContainer.getSwatchContainer(columnElement))\r\n },\r\n moveHeader: function(args) {\r\n var e = args.event;\r\n var that = e.data.that;\r\n var eventData = getEventData(e);\r\n var isResizing = that._columnsResizerViewController ? that._columnsResizerViewController.isResizing() : false;\r\n var dragOptions = that._dragOptions;\r\n if (that._isDragging && !isResizing) {\r\n var $element = that.element();\r\n var moveDeltaX = Math.abs(eventData.x - dragOptions.columnElement.offset().left - dragOptions.deltaX);\r\n var moveDeltaY = Math.abs(eventData.y - dragOptions.columnElement.offset().top - dragOptions.deltaY);\r\n if ($element.is(\":visible\") || moveDeltaX > DRAGGING_DELTA || moveDeltaY > DRAGGING_DELTA) {\r\n $element.show();\r\n var newLeft = eventData.x - dragOptions.deltaX;\r\n var newTop = eventData.y - dragOptions.deltaY;\r\n $element.css({\r\n left: newLeft,\r\n top: newTop\r\n });\r\n that.dockHeader(eventData)\r\n }\r\n e.preventDefault()\r\n }\r\n },\r\n dockHeader: function(eventData) {\r\n var targetDraggingPanel = this._getDraggingPanelByPos(eventData);\r\n var controller = this._controller;\r\n var params = this._dropOptions;\r\n var dragOptions = this._dragOptions;\r\n if (targetDraggingPanel) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var isVerticalOrientation = \"columnChooser\" === targetDraggingPanel.getName();\r\n var axisName = isVerticalOrientation ? \"y\" : \"x\";\r\n var targetLocation = targetDraggingPanel.getName();\r\n var rowIndex = \"headers\" === targetLocation ? dragOptions.rowIndex : void 0;\r\n var sourceColumn = dragOptions.sourceColumn;\r\n var columnElements = targetDraggingPanel.getColumnElements(rowIndex, null === sourceColumn || void 0 === sourceColumn ? void 0 : sourceColumn.ownerBand) || [];\r\n var pointsByTarget = dragOptions.pointsByTarget = dragOptions.pointsByTarget || {};\r\n var pointsByColumns = \"columnChooser\" === targetLocation ? [] : pointsByTarget[targetLocation] || controller._generatePointsByColumns(extend({}, dragOptions, {\r\n targetDraggingPanel: targetDraggingPanel,\r\n columns: targetDraggingPanel.getColumns(rowIndex),\r\n columnElements: columnElements,\r\n isVerticalOrientation: isVerticalOrientation,\r\n startColumnIndex: \"headers\" === targetLocation && $(columnElements[0]).index()\r\n }));\r\n pointsByTarget[targetLocation] = pointsByColumns;\r\n params.targetLocation = targetLocation;\r\n if (pointsByColumns.length > 0) {\r\n for (var i = 0; i < pointsByColumns.length; i++) {\r\n var centerPosition = pointsByColumns[i + 1] && (pointsByColumns[i][axisName] + pointsByColumns[i + 1][axisName]) / 2;\r\n if (void 0 === centerPosition || (rtlEnabled && \"x\" === axisName ? eventData[axisName] > centerPosition : eventData[axisName] < centerPosition)) {\r\n params.targetColumnIndex = this._getVisibleIndexObject(rowIndex, pointsByColumns[i].columnIndex);\r\n if (columnElements[i]) {\r\n params.targetColumnElement = columnElements.eq(i);\r\n params.isLast = false\r\n } else {\r\n params.targetColumnElement = columnElements.last();\r\n params.isLast = true\r\n }\r\n params.posX = pointsByColumns[i].x;\r\n params.posY = pointsByColumns[i].y;\r\n controller.dock(params);\r\n break\r\n }\r\n }\r\n } else {\r\n this._resetTargetColumnOptions();\r\n controller.dock(params)\r\n }\r\n }\r\n },\r\n dropHeader: function(args) {\r\n var e = args.event;\r\n var that = e.data.that;\r\n var controller = that._controller;\r\n that.element().hide();\r\n if (controller && that._isDragging) {\r\n controller.drop(that._dropOptions)\r\n }\r\n that.element().appendTo(that._parentElement());\r\n that._dragOptions = null;\r\n that._dropOptions = null;\r\n that._isDragging = false;\r\n domAdapter.getDocument().onselectstart = that._onSelectStart || null\r\n }\r\n});\r\nvar isNextColumnResizingMode = function(that) {\r\n return \"widget\" !== that.option(\"columnResizingMode\")\r\n};\r\nvar ColumnsResizerViewController = modules.ViewController.inherit({\r\n _isHeadersRowArea: function(posY) {\r\n if (this._columnHeadersView) {\r\n var element = this._columnHeadersView.element();\r\n if (element) {\r\n var offsetTop = element.offset().top;\r\n var headersRowHeight = this._columnHeadersView.getHeadersRowHeight();\r\n return posY >= offsetTop && posY <= offsetTop + headersRowHeight\r\n }\r\n }\r\n return false\r\n },\r\n _isRtlParentStyle: function() {\r\n var _this$_$parentContain;\r\n return this.option(\"rtlEnabled\") && \"rtl\" === (null === (_this$_$parentContain = this._$parentContainer) || void 0 === _this$_$parentContain ? void 0 : _this$_$parentContain.parent().css(\"direction\"))\r\n },\r\n _pointCreated: function(point, cellsLength, columns) {\r\n var isNextColumnMode = isNextColumnResizingMode(this);\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var isRtlParentStyle = this._isRtlParentStyle();\r\n var firstPointColumnIndex = !isNextColumnMode && rtlEnabled && !isRtlParentStyle ? 0 : 1;\r\n if (point.index >= firstPointColumnIndex && point.index < cellsLength + (!isNextColumnMode && (!rtlEnabled || isRtlParentStyle) ? 1 : 0)) {\r\n point.columnIndex -= firstPointColumnIndex;\r\n var currentColumn = columns[point.columnIndex] || {};\r\n var nextColumn = columns[point.columnIndex + 1] || {};\r\n return !(isNextColumnMode ? currentColumn.allowResizing && nextColumn.allowResizing : currentColumn.allowResizing)\r\n }\r\n return true\r\n },\r\n _getTargetPoint: function(pointsByColumns, currentX, deltaX) {\r\n if (pointsByColumns) {\r\n for (var i = 0; i < pointsByColumns.length; i++) {\r\n if (pointsByColumns[i].x === pointsByColumns[0].x && pointsByColumns[i + 1] && pointsByColumns[i].x === pointsByColumns[i + 1].x) {\r\n continue\r\n }\r\n if (pointsByColumns[i].x - deltaX <= currentX && currentX <= pointsByColumns[i].x + deltaX) {\r\n return pointsByColumns[i]\r\n }\r\n }\r\n }\r\n return null\r\n },\r\n _moveSeparator: function(args) {\r\n var e = args.event;\r\n var that = e.data;\r\n var columnsSeparatorWidth = that._columnsSeparatorView.width();\r\n var isNextColumnMode = isNextColumnResizingMode(that);\r\n var deltaX = columnsSeparatorWidth / 2;\r\n var parentOffset = that._$parentContainer.offset();\r\n var parentOffsetLeft = parentOffset.left;\r\n var eventData = getEventData(e);\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n var isRtlParentStyle = this._isRtlParentStyle();\r\n if (that._isResizing && that._resizingInfo) {\r\n if ((parentOffsetLeft <= eventData.x || !isNextColumnMode && isRtlParentStyle) && (!isNextColumnMode || eventData.x <= parentOffsetLeft + that._$parentContainer.width())) {\r\n if (that._updateColumnsWidthIfNeeded(eventData.x)) {\r\n var $cell = that._columnHeadersView.getColumnElements().eq(that._resizingInfo.currentColumnIndex);\r\n var cell = $cell[0];\r\n if (cell) {\r\n var outerWidth = cell.getBoundingClientRect().width;\r\n that._columnsSeparatorView.moveByX($cell.offset().left + ((isNextColumnMode || isRtlParentStyle) && rtlEnabled ? 0 : outerWidth));\r\n that._tablePositionController.update(that._targetPoint.y);\r\n e.preventDefault()\r\n }\r\n }\r\n }\r\n } else if (that._isHeadersRowArea(eventData.y)) {\r\n if (that._previousParentOffset) {\r\n if (that._previousParentOffset.left !== parentOffset.left || that._previousParentOffset.top !== parentOffset.top) {\r\n that.pointsByColumns(null)\r\n }\r\n }\r\n that._targetPoint = that._getTargetPoint(that.pointsByColumns(), eventData.x, columnsSeparatorWidth);\r\n that._previousParentOffset = parentOffset;\r\n that._isReadyResizing = false;\r\n if (that._targetPoint) {\r\n that._columnsSeparatorView.changeCursor(\"col-resize\");\r\n that._columnsSeparatorView.moveByX(that._targetPoint.x - deltaX);\r\n that._tablePositionController.update(that._targetPoint.y);\r\n that._isReadyResizing = true;\r\n e.preventDefault()\r\n } else {\r\n that._columnsSeparatorView.changeCursor()\r\n }\r\n } else {\r\n that.pointsByColumns(null);\r\n that._isReadyResizing = false;\r\n that._columnsSeparatorView.changeCursor()\r\n }\r\n },\r\n _endResizing: function(args) {\r\n var e = args.event;\r\n var that = e.data;\r\n if (that._isResizing) {\r\n that.pointsByColumns(null);\r\n that._resizingInfo = null;\r\n that._columnsSeparatorView.hide();\r\n that._columnsSeparatorView.changeCursor();\r\n that._trackerView.hide();\r\n that._isReadyResizing = false;\r\n that._isResizing = false\r\n }\r\n },\r\n _getNextColumnIndex: function(currentColumnIndex) {\r\n return currentColumnIndex + 1\r\n },\r\n _setupResizingInfo: function(posX) {\r\n var currentColumnIndex = this._targetPoint.columnIndex;\r\n var nextColumnIndex = this._getNextColumnIndex(currentColumnIndex);\r\n var currentHeader = this._columnHeadersView.getHeaderElement(currentColumnIndex);\r\n var nextHeader = this._columnHeadersView.getHeaderElement(nextColumnIndex);\r\n this._resizingInfo = {\r\n startPosX: posX,\r\n currentColumnIndex: currentColumnIndex,\r\n currentColumnWidth: currentHeader && currentHeader.length > 0 ? getBoundingRect(currentHeader[0]).width : 0,\r\n nextColumnIndex: nextColumnIndex,\r\n nextColumnWidth: nextHeader && nextHeader.length > 0 ? getBoundingRect(nextHeader[0]).width : 0\r\n }\r\n },\r\n _startResizing: function(args) {\r\n var e = args.event;\r\n var that = e.data;\r\n var eventData = getEventData(e);\r\n if (isTouchEvent(e)) {\r\n if (that._isHeadersRowArea(eventData.y)) {\r\n that._targetPoint = that._getTargetPoint(that.pointsByColumns(), eventData.x, COLUMNS_SEPARATOR_TOUCH_TRACKER_WIDTH);\r\n if (that._targetPoint) {\r\n that._columnsSeparatorView.moveByX(that._targetPoint.x - that._columnsSeparatorView.width() / 2);\r\n that._isReadyResizing = true\r\n }\r\n } else {\r\n that._isReadyResizing = false\r\n }\r\n }\r\n if (that._isReadyResizing) {\r\n that._setupResizingInfo(eventData.x);\r\n that._isResizing = true;\r\n that._tablePositionController.update(that._targetPoint.y);\r\n that._columnsSeparatorView.show();\r\n that._trackerView.show();\r\n var scrollable = that.component.getScrollable();\r\n if (scrollable && that._isRtlParentStyle()) {\r\n that._scrollRight = scrollable.$content().width() - scrollable._container().width() - scrollable.scrollLeft()\r\n }\r\n e.preventDefault();\r\n e.stopPropagation()\r\n }\r\n if (this.isResizing()) {\r\n this.getController(\"editorFactory\").loseFocus()\r\n }\r\n },\r\n _generatePointsByColumns: function() {\r\n var that = this;\r\n var columns = that._columnsController ? that._columnsController.getVisibleColumns() : [];\r\n var cells = that._columnHeadersView.getColumnElements();\r\n var pointsByColumns = [];\r\n if (cells && cells.length > 0) {\r\n pointsByColumns = gridCoreUtils.getPointsByColumns(cells, (function(point) {\r\n return that._pointCreated(point, cells.length, columns)\r\n }))\r\n }\r\n that._pointsByColumns = pointsByColumns\r\n },\r\n _unsubscribeFromEvents: function() {\r\n this._moveSeparatorHandler && eventsEngine.off(domAdapter.getDocument(), addNamespace(pointerEvents.move, MODULE_NAMESPACE), this._moveSeparatorHandler);\r\n this._startResizingHandler && eventsEngine.off(this._$parentContainer, addNamespace(pointerEvents.down, MODULE_NAMESPACE), this._startResizingHandler);\r\n if (this._endResizingHandler) {\r\n eventsEngine.off(this._columnsSeparatorView.element(), addNamespace(pointerEvents.up, MODULE_NAMESPACE), this._endResizingHandler);\r\n eventsEngine.off(domAdapter.getDocument(), addNamespace(pointerEvents.up, MODULE_NAMESPACE), this._endResizingHandler)\r\n }\r\n },\r\n _subscribeToEvents: function() {\r\n this._moveSeparatorHandler = this.createAction(this._moveSeparator);\r\n this._startResizingHandler = this.createAction(this._startResizing);\r\n this._endResizingHandler = this.createAction(this._endResizing);\r\n eventsEngine.on(domAdapter.getDocument(), addNamespace(pointerEvents.move, MODULE_NAMESPACE), this, this._moveSeparatorHandler);\r\n eventsEngine.on(this._$parentContainer, addNamespace(pointerEvents.down, MODULE_NAMESPACE), this, this._startResizingHandler);\r\n eventsEngine.on(this._columnsSeparatorView.element(), addNamespace(pointerEvents.up, MODULE_NAMESPACE), this, this._endResizingHandler);\r\n eventsEngine.on(domAdapter.getDocument(), addNamespace(pointerEvents.up, MODULE_NAMESPACE), this, this._endResizingHandler)\r\n },\r\n _updateColumnsWidthIfNeeded: function(posX) {\r\n var deltaX;\r\n var needUpdate = false;\r\n var nextCellWidth;\r\n var resizingInfo = this._resizingInfo;\r\n var columnsController = this._columnsController;\r\n var visibleColumns = columnsController.getVisibleColumns();\r\n var columnsSeparatorWidth = this._columnsSeparatorView.width();\r\n var contentWidth = this._rowsView.contentWidth();\r\n var isNextColumnMode = isNextColumnResizingMode(this);\r\n var adaptColumnWidthByRatio = isNextColumnMode && this.option(\"adaptColumnWidthByRatio\") && !this.option(\"columnAutoWidth\");\r\n var minWidth;\r\n var nextColumn;\r\n var cellWidth;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var isRtlParentStyle = this._isRtlParentStyle();\r\n\r\n function isPercentWidth(width) {\r\n return isString(width) && \"%\" === width.slice(-1)\r\n }\r\n\r\n function setColumnWidth(column, columnWidth, contentWidth, adaptColumnWidthByRatio) {\r\n if (column) {\r\n var oldColumnWidth = column.width;\r\n if (oldColumnWidth) {\r\n adaptColumnWidthByRatio = isPercentWidth(oldColumnWidth)\r\n }\r\n if (adaptColumnWidthByRatio) {\r\n columnsController.columnOption(column.index, \"visibleWidth\", columnWidth);\r\n columnsController.columnOption(column.index, \"width\", (columnWidth / contentWidth * 100).toFixed(3) + \"%\")\r\n } else {\r\n columnsController.columnOption(column.index, \"visibleWidth\", null);\r\n columnsController.columnOption(column.index, \"width\", columnWidth)\r\n }\r\n }\r\n }\r\n deltaX = posX - resizingInfo.startPosX;\r\n if ((isNextColumnMode || isRtlParentStyle) && rtlEnabled) {\r\n deltaX = -deltaX\r\n }\r\n cellWidth = resizingInfo.currentColumnWidth + deltaX;\r\n var column = visibleColumns[resizingInfo.currentColumnIndex];\r\n minWidth = column && column.minWidth || columnsSeparatorWidth;\r\n needUpdate = cellWidth >= minWidth;\r\n if (isNextColumnMode) {\r\n nextCellWidth = resizingInfo.nextColumnWidth - deltaX;\r\n nextColumn = visibleColumns[resizingInfo.nextColumnIndex];\r\n minWidth = nextColumn && nextColumn.minWidth || columnsSeparatorWidth;\r\n needUpdate = needUpdate && nextCellWidth >= minWidth\r\n }\r\n if (needUpdate) {\r\n columnsController.beginUpdate();\r\n cellWidth = Math.floor(cellWidth);\r\n contentWidth = function(contentWidth, visibleColumns) {\r\n var allColumnsHaveWidth = visibleColumns.every(column => column.width);\r\n if (allColumnsHaveWidth) {\r\n var totalPercent = visibleColumns.reduce((sum, column) => {\r\n if (isPercentWidth(column.width)) {\r\n sum += parseFloat(column.width)\r\n }\r\n return sum\r\n }, 0);\r\n if (totalPercent > 100) {\r\n contentWidth = contentWidth / totalPercent * 100\r\n }\r\n }\r\n return contentWidth\r\n }(contentWidth, visibleColumns);\r\n setColumnWidth(column, cellWidth, contentWidth, adaptColumnWidthByRatio);\r\n if (isNextColumnMode) {\r\n nextCellWidth = Math.floor(nextCellWidth);\r\n setColumnWidth(nextColumn, nextCellWidth, contentWidth, adaptColumnWidthByRatio)\r\n } else {\r\n var columnWidths = this._columnHeadersView.getColumnWidths();\r\n columnWidths[resizingInfo.currentColumnIndex] = cellWidth;\r\n var hasScroll = columnWidths.reduce((totalWidth, width) => totalWidth + width, 0) > this._rowsView.contentWidth();\r\n if (!hasScroll) {\r\n var lastColumnIndex = gridCoreUtils.getLastResizableColumnIndex(visibleColumns);\r\n if (lastColumnIndex >= 0) {\r\n columnsController.columnOption(visibleColumns[lastColumnIndex].index, \"visibleWidth\", \"auto\")\r\n }\r\n }\r\n for (var i = 0; i < columnWidths.length; i++) {\r\n if (visibleColumns[i] && visibleColumns[i] !== column && void 0 === visibleColumns[i].width) {\r\n columnsController.columnOption(visibleColumns[i].index, \"width\", columnWidths[i])\r\n }\r\n }\r\n }\r\n columnsController.endUpdate();\r\n if (!isNextColumnMode) {\r\n this.component.updateDimensions();\r\n var scrollable = this.component.getScrollable();\r\n if (scrollable && isRtlParentStyle) {\r\n var left = scrollable.$content().width() - scrollable._container().width() - this._scrollRight;\r\n scrollable.scrollTo({\r\n left: left\r\n })\r\n }\r\n }\r\n }\r\n return needUpdate\r\n },\r\n _subscribeToCallback: function(callback, handler) {\r\n callback.add(handler);\r\n this._subscribesToCallbacks.push({\r\n callback: callback,\r\n handler: handler\r\n })\r\n },\r\n _unsubscribeFromCallbacks: function() {\r\n for (var i = 0; i < this._subscribesToCallbacks.length; i++) {\r\n var subscribe = this._subscribesToCallbacks[i];\r\n subscribe.callback.remove(subscribe.handler)\r\n }\r\n this._subscribesToCallbacks = []\r\n },\r\n _unsubscribes: function() {\r\n this._unsubscribeFromEvents();\r\n this._unsubscribeFromCallbacks()\r\n },\r\n _init: function() {\r\n var that = this;\r\n var generatePointsByColumnsHandler = function() {\r\n if (!that._isResizing) {\r\n that.pointsByColumns(null)\r\n }\r\n };\r\n var generatePointsByColumnsScrollHandler = function(offset) {\r\n if (that._scrollLeft !== offset.left) {\r\n that._scrollLeft = offset.left;\r\n that.pointsByColumns(null)\r\n }\r\n };\r\n that._columnsSeparatorView = that.getView(\"columnsSeparatorView\");\r\n that._columnHeadersView = that.getView(\"columnHeadersView\");\r\n that._trackerView = that.getView(\"trackerView\");\r\n that._rowsView = that.getView(\"rowsView\");\r\n that._columnsController = that.getController(\"columns\");\r\n that._tablePositionController = that.getController(\"tablePosition\");\r\n that._$parentContainer = that.component.$element();\r\n that._subscribeToCallback(that._columnHeadersView.renderCompleted, generatePointsByColumnsHandler);\r\n that._subscribeToCallback(that._columnHeadersView.resizeCompleted, generatePointsByColumnsHandler);\r\n that._subscribeToCallback(that._columnsSeparatorView.renderCompleted, (function() {\r\n that._unsubscribeFromEvents();\r\n that._subscribeToEvents()\r\n }));\r\n that._subscribeToCallback(that._rowsView.renderCompleted, (function() {\r\n that._rowsView.scrollChanged.remove(generatePointsByColumnsScrollHandler);\r\n that._rowsView.scrollChanged.add(generatePointsByColumnsScrollHandler)\r\n }));\r\n var previousScrollbarVisibility = 0 !== that._rowsView.getScrollbarWidth();\r\n var previousTableHeight = 0;\r\n that._subscribeToCallback(that.getController(\"tablePosition\").positionChanged, (function(e) {\r\n if (that._isResizing && !that._rowsView.isResizing) {\r\n var scrollbarVisibility = 0 !== that._rowsView.getScrollbarWidth();\r\n if (previousScrollbarVisibility !== scrollbarVisibility || previousTableHeight && previousTableHeight !== e.height) {\r\n previousScrollbarVisibility = scrollbarVisibility;\r\n previousTableHeight = e.height;\r\n that.component.updateDimensions()\r\n } else {\r\n that._rowsView.updateFreeSpaceRowHeight()\r\n }\r\n }\r\n previousTableHeight = e.height\r\n }))\r\n },\r\n optionChanged: function(args) {\r\n this.callBase(args);\r\n if (\"allowColumnResizing\" === args.name) {\r\n if (args.value) {\r\n this._init();\r\n this._subscribeToEvents()\r\n } else {\r\n this._unsubscribes()\r\n }\r\n }\r\n },\r\n isResizing: function() {\r\n return this._isResizing\r\n },\r\n init: function() {\r\n this._subscribesToCallbacks = [];\r\n if (allowResizing(this)) {\r\n this._init()\r\n }\r\n },\r\n pointsByColumns: function(value) {\r\n if (void 0 !== value) {\r\n this._pointsByColumns = value\r\n } else {\r\n if (!this._pointsByColumns) {\r\n this._generatePointsByColumns()\r\n }\r\n return this._pointsByColumns\r\n }\r\n },\r\n dispose: function() {\r\n this._unsubscribes();\r\n this.callBase()\r\n }\r\n});\r\nvar TablePositionViewController = modules.ViewController.inherit({\r\n update: function(top) {\r\n var params = {};\r\n var $element = this._columnHeadersView.element();\r\n var offset = $element && $element.offset();\r\n var offsetTop = offset && offset.top || 0;\r\n var diffOffsetTop = isDefined(top) ? Math.abs(top - offsetTop) : 0;\r\n var columnsHeadersHeight = this._columnHeadersView ? this._columnHeadersView.getHeight() : 0;\r\n var scrollBarWidth = this._rowsView.getScrollbarWidth(true);\r\n var rowsHeight = this._rowsView ? this._rowsView.height() - scrollBarWidth : 0;\r\n var columnsResizerController = this.component.getController(\"columnsResizer\");\r\n var draggingHeaderView = this.component.getView(\"draggingHeaderView\");\r\n params.height = columnsHeadersHeight;\r\n var isDraggingOrResizing = false !== columnsResizerController.isResizing() || draggingHeaderView.isDragging();\r\n if (isDraggingOrResizing) {\r\n params.height += rowsHeight - diffOffsetTop\r\n }\r\n if (null !== top && $element && $element.length) {\r\n params.top = $element[0].offsetTop + diffOffsetTop\r\n }\r\n this.positionChanged.fire(params)\r\n },\r\n init: function() {\r\n var that = this;\r\n that.callBase();\r\n that._columnHeadersView = this.getView(\"columnHeadersView\");\r\n that._rowsView = this.getView(\"rowsView\");\r\n that._pagerView = this.getView(\"pagerView\");\r\n that._rowsView.resizeCompleted.add((function() {\r\n if (that.option(\"allowColumnResizing\")) {\r\n var targetPoint = that.getController(\"columnsResizer\")._targetPoint;\r\n that.update(targetPoint ? targetPoint.y : null)\r\n }\r\n }))\r\n },\r\n ctor: function(component) {\r\n this.callBase(component);\r\n this.positionChanged = Callbacks()\r\n }\r\n});\r\nvar DraggingHeaderViewController = modules.ViewController.inherit({\r\n _generatePointsByColumns: function(options) {\r\n var that = this;\r\n return gridCoreUtils.getPointsByColumns(options.columnElements, (function(point) {\r\n return that._pointCreated(point, options.columns, options.targetDraggingPanel.getName(), options.sourceColumn)\r\n }), options.isVerticalOrientation, options.startColumnIndex)\r\n },\r\n _pointCreated: function(point, columns, location, sourceColumn) {\r\n var targetColumn = columns[point.columnIndex];\r\n var prevColumn = columns[point.columnIndex - 1];\r\n switch (location) {\r\n case \"columnChooser\":\r\n return true;\r\n case \"headers\":\r\n return sourceColumn && !sourceColumn.allowReordering || (!targetColumn || !targetColumn.allowReordering) && (!prevColumn || !prevColumn.allowReordering);\r\n default:\r\n return 0 === columns.length\r\n }\r\n },\r\n _subscribeToEvents: function(draggingHeader, draggingPanels) {\r\n var that = this;\r\n each(draggingPanels, (function(_, draggingPanel) {\r\n if (draggingPanel) {\r\n var columns;\r\n var rowCount = draggingPanel.getRowCount ? draggingPanel.getRowCount() : 1;\r\n var nameDraggingPanel = draggingPanel.getName();\r\n var subscribeToEvents = function(index, columnElement) {\r\n if (!columnElement) {\r\n return\r\n }\r\n var $columnElement = $(columnElement);\r\n var column = columns[index];\r\n if (draggingPanel.allowDragging(column, nameDraggingPanel, draggingPanels)) {\r\n $columnElement.addClass(that.addWidgetPrefix(HEADERS_DRAG_ACTION_CLASS));\r\n eventsEngine.on($columnElement, addNamespace(dragEventStart, MODULE_NAMESPACE), that.createAction((function(args) {\r\n var e = args.event;\r\n var eventData = getEventData(e);\r\n draggingHeader.dragHeader({\r\n deltaX: eventData.x - $(e.currentTarget).offset().left,\r\n deltaY: eventData.y - $(e.currentTarget).offset().top,\r\n sourceColumn: column,\r\n index: column.index,\r\n columnIndex: index,\r\n columnElement: $columnElement,\r\n sourceLocation: nameDraggingPanel,\r\n draggingPanels: draggingPanels,\r\n rowIndex: that._columnsController.getRowIndex(column.index, true)\r\n })\r\n })));\r\n eventsEngine.on($columnElement, addNamespace(dragEventMove, MODULE_NAMESPACE), {\r\n that: draggingHeader\r\n }, that.createAction(draggingHeader.moveHeader));\r\n eventsEngine.on($columnElement, addNamespace(dragEventEnd, MODULE_NAMESPACE), {\r\n that: draggingHeader\r\n }, that.createAction(draggingHeader.dropHeader))\r\n }\r\n };\r\n for (var i = 0; i < rowCount; i++) {\r\n var columnElements = draggingPanel.getColumnElements(i) || [];\r\n if (columnElements.length) {\r\n columns = draggingPanel.getColumns(i) || [];\r\n each(columnElements, subscribeToEvents)\r\n }\r\n }\r\n }\r\n }))\r\n },\r\n _unsubscribeFromEvents: function(draggingHeader, draggingPanels) {\r\n var that = this;\r\n each(draggingPanels, (function(_, draggingPanel) {\r\n if (draggingPanel) {\r\n var columnElements = draggingPanel.getColumnElements() || [];\r\n each(columnElements, (function(index, columnElement) {\r\n var $columnElement = $(columnElement);\r\n eventsEngine.off($columnElement, addNamespace(dragEventStart, MODULE_NAMESPACE));\r\n eventsEngine.off($columnElement, addNamespace(dragEventMove, MODULE_NAMESPACE));\r\n eventsEngine.off($columnElement, addNamespace(dragEventEnd, MODULE_NAMESPACE));\r\n $columnElement.removeClass(that.addWidgetPrefix(HEADERS_DRAG_ACTION_CLASS))\r\n }))\r\n }\r\n }))\r\n },\r\n _getSeparator: function(targetLocation) {\r\n return \"headers\" === targetLocation ? this._columnsSeparatorView : this._blockSeparatorView\r\n },\r\n hideSeparators: function(type) {\r\n var blockSeparator = this._blockSeparatorView;\r\n var columnsSeparator = this._columnsSeparatorView;\r\n this._animationColumnIndex = null;\r\n blockSeparator && blockSeparator.hide();\r\n \"block\" !== type && columnsSeparator && columnsSeparator.hide()\r\n },\r\n init: function() {\r\n var that = this;\r\n that.callBase();\r\n that._columnsController = that.getController(\"columns\");\r\n that._columnHeadersView = that.getView(\"columnHeadersView\");\r\n that._columnsSeparatorView = that.getView(\"columnsSeparatorView\");\r\n that._draggingHeaderView = that.getView(\"draggingHeaderView\");\r\n that._rowsView = that.getView(\"rowsView\");\r\n that._blockSeparatorView = that.getView(\"blockSeparatorView\");\r\n that._headerPanelView = that.getView(\"headerPanel\");\r\n that._columnChooserView = that.getView(\"columnChooserView\");\r\n var subscribeToEvents = function() {\r\n if (that._draggingHeaderView) {\r\n var draggingPanels = [that._columnChooserView, that._columnHeadersView, that._headerPanelView];\r\n that._unsubscribeFromEvents(that._draggingHeaderView, draggingPanels);\r\n that._subscribeToEvents(that._draggingHeaderView, draggingPanels)\r\n }\r\n };\r\n that._columnHeadersView.renderCompleted.add(subscribeToEvents);\r\n that._headerPanelView && that._headerPanelView.renderCompleted.add(subscribeToEvents);\r\n that._columnChooserView && that._columnChooserView.renderCompleted.add(subscribeToEvents)\r\n },\r\n allowDrop: function(parameters) {\r\n return this._columnsController.allowMoveColumn(parameters.sourceColumnIndex, parameters.targetColumnIndex, parameters.sourceLocation, parameters.targetLocation)\r\n },\r\n drag: function(parameters) {\r\n var sourceIndex = parameters.sourceIndex;\r\n var sourceLocation = parameters.sourceLocation;\r\n var sourceColumnElement = parameters.sourceColumnElement;\r\n var headersView = this._columnHeadersView;\r\n var rowsView = this._rowsView;\r\n if (sourceColumnElement) {\r\n sourceColumnElement.css({\r\n opacity: COLUMN_OPACITY\r\n });\r\n if (\"headers\" === sourceLocation) {\r\n headersView && headersView.setRowsOpacity(sourceIndex, COLUMN_OPACITY);\r\n rowsView && rowsView.setRowsOpacity(sourceIndex, COLUMN_OPACITY)\r\n }\r\n }\r\n },\r\n dock: function(parameters) {\r\n var that = this;\r\n var targetColumnIndex = isObject(parameters.targetColumnIndex) ? parameters.targetColumnIndex.columnIndex : parameters.targetColumnIndex;\r\n var sourceLocation = parameters.sourceLocation;\r\n var targetLocation = parameters.targetLocation;\r\n var separator = that._getSeparator(targetLocation);\r\n var hasTargetVisibleIndex = targetColumnIndex >= 0;\r\n that._columnHeadersView.element().find(\".\" + HEADER_ROW_CLASS).toggleClass(that.addWidgetPrefix(HEADERS_DROP_HIGHLIGHT_CLASS), \"headers\" !== sourceLocation && \"headers\" === targetLocation && !hasTargetVisibleIndex);\r\n if (separator) {\r\n if (that.allowDrop(parameters) && hasTargetVisibleIndex) {\r\n if (\"group\" === targetLocation || \"columnChooser\" === targetLocation) {\r\n ! function() {\r\n if (that._animationColumnIndex !== targetColumnIndex) {\r\n that.hideSeparators();\r\n separator.element()[parameters.isLast ? \"insertAfter\" : \"insertBefore\"](parameters.targetColumnElement);\r\n that._animationColumnIndex = targetColumnIndex;\r\n separator.show(targetLocation)\r\n }\r\n }()\r\n } else {\r\n that.hideSeparators(\"block\");\r\n that.getController(\"tablePosition\").update(parameters.posY);\r\n separator.moveByX(parameters.posX - separator.width());\r\n separator.show()\r\n }\r\n } else {\r\n that.hideSeparators()\r\n }\r\n }\r\n },\r\n drop: function(parameters) {\r\n var sourceColumnElement = parameters.sourceColumnElement;\r\n if (sourceColumnElement) {\r\n sourceColumnElement.css({\r\n opacity: \"\"\r\n });\r\n this._columnHeadersView.setRowsOpacity(parameters.sourceIndex, \"\");\r\n this._rowsView.setRowsOpacity(parameters.sourceIndex, \"\");\r\n this._columnHeadersView.element().find(\".\" + HEADER_ROW_CLASS).removeClass(this.addWidgetPrefix(HEADERS_DROP_HIGHLIGHT_CLASS))\r\n }\r\n if (this.allowDrop(parameters)) {\r\n var separator = this._getSeparator(parameters.targetLocation);\r\n if (separator) {\r\n separator.hide()\r\n }\r\n this._columnsController.moveColumn(parameters.sourceColumnIndex, parameters.targetColumnIndex, parameters.sourceLocation, parameters.targetLocation)\r\n }\r\n },\r\n dispose: function() {\r\n if (this._draggingHeaderView) {\r\n this._unsubscribeFromEvents(this._draggingHeaderView, [this._columnChooserView, this._columnHeadersView, this._headerPanelView])\r\n }\r\n }\r\n});\r\nexport var columnsResizingReorderingModule = {\r\n views: {\r\n columnsSeparatorView: ColumnsSeparatorView,\r\n blockSeparatorView: BlockSeparatorView,\r\n draggingHeaderView: DraggingHeaderView,\r\n trackerView: TrackerView\r\n },\r\n controllers: {\r\n draggingHeader: DraggingHeaderViewController,\r\n tablePosition: TablePositionViewController,\r\n columnsResizer: ColumnsResizerViewController\r\n },\r\n extenders: {\r\n views: {\r\n rowsView: {\r\n _needUpdateRowHeight: function(itemCount) {\r\n var wordWrapEnabled = this.option(\"wordWrapEnabled\");\r\n var columnsResizerController = this.getController(\"columnsResizer\");\r\n var isResizing = columnsResizerController.isResizing();\r\n return this.callBase.apply(this, arguments) || itemCount > 0 && wordWrapEnabled && isResizing\r\n }\r\n }\r\n },\r\n controllers: {\r\n editorFactory: {\r\n renderFocusOverlay: function() {\r\n if (this.getController(\"columnsResizer\").isResizing()) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.virtual_columns_core.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nexport function foreachColumnInfo(info, callback, rowIndex, offsets, columnCount, lastProcessedIndexes) {\r\n rowIndex = rowIndex || 0;\r\n offsets = offsets || [];\r\n lastProcessedIndexes = lastProcessedIndexes || [];\r\n offsets[rowIndex] = offsets[rowIndex] || 0;\r\n var row = info[rowIndex];\r\n var startIndex = lastProcessedIndexes[rowIndex] + 1 || 0;\r\n var processedColumnCount = 0;\r\n var colIndex;\r\n if (!row) {\r\n return\r\n }\r\n for (colIndex = startIndex; colIndex < row.length; colIndex++) {\r\n var cell = row[colIndex];\r\n var visibleIndex = colIndex + offsets[rowIndex];\r\n var colspan = cell.colspan || 1;\r\n foreachColumnInfo(info, callback, rowIndex + (cell.rowspan || 1), offsets, colspan, lastProcessedIndexes);\r\n offsets[rowIndex] += colspan - 1;\r\n processedColumnCount += colspan;\r\n if (cell.rowspan) {\r\n for (var i = rowIndex + 1; i < rowIndex + cell.rowspan; i++) {\r\n offsets[i] = offsets[i] || 0;\r\n offsets[i] += cell.colspan || 1\r\n }\r\n }\r\n if (false === callback(cell, visibleIndex, rowIndex, colIndex)) {\r\n break\r\n }\r\n if (void 0 !== columnCount && processedColumnCount >= columnCount) {\r\n break\r\n }\r\n }\r\n lastProcessedIndexes[rowIndex] = colIndex\r\n}\r\nexport function createColumnsInfo(info, startIndex, endIndex) {\r\n var newInfo = [];\r\n foreachColumnInfo(info, (function(columnInfo, visibleIndex, rowIndex) {\r\n var cell = columnInfo;\r\n var colspan;\r\n var cellColspan = cell.colspan || 1;\r\n var isVisible = visibleIndex + cellColspan - 1 >= startIndex && visibleIndex < endIndex;\r\n newInfo[rowIndex] = newInfo[rowIndex] || [];\r\n if (isVisible) {\r\n if (visibleIndex < startIndex) {\r\n colspan = cellColspan - (startIndex - visibleIndex);\r\n visibleIndex = startIndex\r\n } else {\r\n colspan = cellColspan\r\n }\r\n if (visibleIndex + colspan > endIndex) {\r\n colspan = endIndex - visibleIndex\r\n }\r\n if (colspan !== cellColspan) {\r\n cell = extend({}, cell, {\r\n colspan: colspan\r\n })\r\n }\r\n newInfo[rowIndex].push(cell)\r\n } else if (visibleIndex > endIndex) {\r\n return false\r\n }\r\n }));\r\n for (var i = 0; i < newInfo.length; i++) {\r\n newInfo[i] = newInfo[i] || []\r\n }\r\n return newInfo\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.columns_controller.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport $ from \"../../core/renderer\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport variableWrapper from \"../../core/utils/variable_wrapper\";\r\nimport {\r\n compileGetter,\r\n compileSetter\r\n} from \"../../core/utils/data\";\r\nimport {\r\n grep\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isString,\r\n isNumeric,\r\n isFunction,\r\n isObject,\r\n isPlainObject,\r\n type\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each,\r\n map\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n getDefaultAlignment\r\n} from \"../../core/utils/position\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n inArray,\r\n normalizeIndexes\r\n} from \"../../core/utils/array\";\r\nimport config from \"../../core/config\";\r\nimport {\r\n orderEach,\r\n deepExtendArraySafe\r\n} from \"../../core/utils/object\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport {\r\n captionize\r\n} from \"../../core/utils/inflector\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport numberLocalization from \"../../localization/number\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport Store from \"../../data/abstract_store\";\r\nimport {\r\n DataSource\r\n} from \"../../data/data_source/data_source\";\r\nimport {\r\n normalizeDataSourceOptions\r\n} from \"../../data/data_source/utils\";\r\nimport filterUtils from \"../shared/filtering\";\r\nvar USER_STATE_FIELD_NAMES_15_1 = [\"filterValues\", \"filterType\", \"fixed\", \"fixedPosition\"];\r\nvar USER_STATE_FIELD_NAMES = [\"visibleIndex\", \"dataField\", \"name\", \"dataType\", \"width\", \"visible\", \"sortOrder\", \"lastSortOrder\", \"sortIndex\", \"groupIndex\", \"filterValue\", \"selectedFilterOperation\", \"added\"].concat(USER_STATE_FIELD_NAMES_15_1);\r\nvar IGNORE_COLUMN_OPTION_NAMES = {\r\n visibleWidth: true,\r\n bestFitWidth: true,\r\n bufferedFilterValue: true\r\n};\r\nvar COMMAND_EXPAND_CLASS = \"dx-command-expand\";\r\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\r\nvar GROUP_COMMAND_COLUMN_NAME = \"groupExpand\";\r\nvar regExp = /columns\\[(\\d+)\\]\\.?/gi;\r\nvar globalColumnId = 1;\r\nexport var columnsControllerModule = {\r\n defaultOptions: function() {\r\n return {\r\n commonColumnSettings: {\r\n allowFiltering: true,\r\n allowHiding: true,\r\n allowSorting: true,\r\n allowEditing: true,\r\n encodeHtml: true,\r\n trueText: messageLocalization.format(\"dxDataGrid-trueText\"),\r\n falseText: messageLocalization.format(\"dxDataGrid-falseText\")\r\n },\r\n allowColumnReordering: false,\r\n allowColumnResizing: false,\r\n columnResizingMode: \"nextColumn\",\r\n columnMinWidth: void 0,\r\n columnWidth: void 0,\r\n adaptColumnWidthByRatio: true,\r\n columns: void 0,\r\n regenerateColumnsByVisibleItems: false,\r\n customizeColumns: null,\r\n dateSerializationFormat: void 0\r\n }\r\n },\r\n controllers: {\r\n columns: modules.Controller.inherit(function() {\r\n var DEFAULT_COLUMN_OPTIONS = {\r\n visible: true,\r\n showInColumnChooser: true\r\n };\r\n var DATATYPE_OPERATIONS = {\r\n number: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"between\"],\r\n string: [\"contains\", \"notcontains\", \"startswith\", \"endswith\", \"=\", \"<>\"],\r\n date: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"between\"],\r\n datetime: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"between\"]\r\n };\r\n var COLUMN_INDEX_OPTIONS = {\r\n visibleIndex: true,\r\n groupIndex: true,\r\n grouped: true,\r\n sortIndex: true,\r\n sortOrder: true\r\n };\r\n var setFilterOperationsAsDefaultValues = function(column) {\r\n column.filterOperations = column.defaultFilterOperations\r\n };\r\n var createColumn = function(that, columnOptions, userStateColumnOptions, bandColumn) {\r\n var commonColumnOptions = {};\r\n if (columnOptions) {\r\n if (isString(columnOptions)) {\r\n columnOptions = {\r\n dataField: columnOptions\r\n }\r\n }\r\n that.setName(columnOptions);\r\n var result = {};\r\n if (columnOptions.command) {\r\n result = deepExtendArraySafe(commonColumnOptions, columnOptions)\r\n } else {\r\n commonColumnOptions = that.getCommonSettings(columnOptions);\r\n if (userStateColumnOptions && userStateColumnOptions.name && userStateColumnOptions.dataField) {\r\n columnOptions = extend({}, columnOptions, {\r\n dataField: userStateColumnOptions.dataField\r\n })\r\n }\r\n var calculatedColumnOptions = that._createCalculatedColumnOptions(columnOptions, bandColumn);\r\n if (!columnOptions.type) {\r\n result = {\r\n headerId: \"dx-col-\".concat(globalColumnId++)\r\n }\r\n }\r\n result = deepExtendArraySafe(result, DEFAULT_COLUMN_OPTIONS);\r\n deepExtendArraySafe(result, commonColumnOptions);\r\n deepExtendArraySafe(result, calculatedColumnOptions);\r\n deepExtendArraySafe(result, columnOptions);\r\n deepExtendArraySafe(result, {\r\n selector: null\r\n })\r\n }\r\n if (columnOptions.filterOperations === columnOptions.defaultFilterOperations) {\r\n setFilterOperationsAsDefaultValues(result)\r\n }\r\n return result\r\n }\r\n };\r\n var createColumnsFromOptions = function createColumnsFromOptions(that, columnsOptions, bandColumn) {\r\n var result = [];\r\n if (columnsOptions) {\r\n each(columnsOptions, (function(index, columnOptions) {\r\n var userStateColumnOptions = that._columnsUserState && checkUserStateColumn(columnOptions, that._columnsUserState[index]) && that._columnsUserState[index];\r\n var column = createColumn(that, columnOptions, userStateColumnOptions, bandColumn);\r\n if (column) {\r\n if (bandColumn) {\r\n column.ownerBand = bandColumn\r\n }\r\n result.push(column);\r\n if (column.columns) {\r\n result = result.concat(createColumnsFromOptions(that, column.columns, column));\r\n delete column.columns;\r\n column.hasColumns = true\r\n }\r\n }\r\n }))\r\n }\r\n return result\r\n };\r\n var getParentBandColumns = function(columnIndex, columnParentByIndex) {\r\n var result = [];\r\n var parent = columnParentByIndex[columnIndex];\r\n while (parent) {\r\n result.unshift(parent);\r\n columnIndex = parent.index;\r\n parent = columnParentByIndex[columnIndex]\r\n }\r\n return result\r\n };\r\n var _getChildrenByBandColumn = function(columnIndex, columnChildrenByIndex, recursive) {\r\n var result = [];\r\n var children = columnChildrenByIndex[columnIndex];\r\n if (children) {\r\n for (var i = 0; i < children.length; i++) {\r\n var column = children[i];\r\n if (!isDefined(column.groupIndex) || column.showWhenGrouped) {\r\n result.push(column);\r\n if (recursive && column.isBand) {\r\n result = result.concat(_getChildrenByBandColumn(column.index, columnChildrenByIndex, recursive))\r\n }\r\n }\r\n }\r\n }\r\n return result\r\n };\r\n var getColumnFullPath = function(that, column) {\r\n var result = [];\r\n var columns;\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var callbackFilter = function(item) {\r\n return item.ownerBand === column.ownerBand\r\n };\r\n if (bandColumnsCache.isPlain) {\r\n var columnIndex = that._columns.indexOf(column);\r\n if (columnIndex >= 0) {\r\n result = [\"columns[\".concat(columnIndex, \"]\")]\r\n }\r\n } else {\r\n columns = that._columns.filter(callbackFilter);\r\n while (columns.length && -1 !== columns.indexOf(column)) {\r\n result.unshift(\"columns[\".concat(columns.indexOf(column), \"]\"));\r\n column = bandColumnsCache.columnParentByIndex[column.index];\r\n columns = column ? that._columns.filter(callbackFilter) : []\r\n }\r\n }\r\n return result.join(\".\")\r\n };\r\n var calculateColspan = function calculateColspan(that, columnID) {\r\n var colspan = 0;\r\n var columns = that.getChildrenByBandColumn(columnID, true);\r\n each(columns, (function(_, column) {\r\n if (column.isBand) {\r\n column.colspan = column.colspan || calculateColspan(that, column.index);\r\n colspan += column.colspan || 1\r\n } else {\r\n colspan += 1\r\n }\r\n }));\r\n return colspan\r\n };\r\n var getValueDataType = function(value) {\r\n var dataType = type(value);\r\n if (\"string\" !== dataType && \"boolean\" !== dataType && \"number\" !== dataType && \"date\" !== dataType && \"object\" !== dataType) {\r\n dataType = void 0\r\n }\r\n return dataType\r\n };\r\n var getSerializationFormat = function(dataType, value) {\r\n switch (dataType) {\r\n case \"date\":\r\n case \"datetime\":\r\n return dateSerialization.getDateSerializationFormat(value);\r\n case \"number\":\r\n if (isString(value)) {\r\n return \"string\"\r\n }\r\n if (isNumeric(value)) {\r\n return null\r\n }\r\n }\r\n };\r\n var updateSerializers = function(options, dataType) {\r\n if (!options.deserializeValue) {\r\n if (gridCoreUtils.isDateType(dataType)) {\r\n options.deserializeValue = function(value) {\r\n return dateSerialization.deserializeDate(value)\r\n };\r\n options.serializeValue = function(value) {\r\n return isString(value) ? value : dateSerialization.serializeDate(value, this.serializationFormat)\r\n }\r\n }\r\n if (\"number\" === dataType) {\r\n options.deserializeValue = function(value) {\r\n var parsedValue = parseFloat(value);\r\n return isNaN(parsedValue) ? value : parsedValue\r\n };\r\n options.serializeValue = function(value, target) {\r\n if (\"filter\" === target) {\r\n return value\r\n }\r\n return isDefined(value) && \"string\" === this.serializationFormat ? value.toString() : value\r\n }\r\n }\r\n }\r\n };\r\n var customizeTextForBooleanDataType = function(e) {\r\n if (true === e.value) {\r\n return this.trueText || \"true\"\r\n } else if (false === e.value) {\r\n return this.falseText || \"false\"\r\n } else {\r\n return e.valueText || \"\"\r\n }\r\n };\r\n var getCustomizeTextByDataType = function(dataType) {\r\n if (\"boolean\" === dataType) {\r\n return customizeTextForBooleanDataType\r\n }\r\n };\r\n var updateColumnIndexes = function(that) {\r\n each(that._columns, (function(index, column) {\r\n column.index = index\r\n }));\r\n each(that._columns, (function(index, column) {\r\n if (isObject(column.ownerBand)) {\r\n column.ownerBand = column.ownerBand.index\r\n }\r\n }));\r\n each(that._commandColumns, (function(index, column) {\r\n column.index = -(index + 1)\r\n }))\r\n };\r\n var updateColumnGroupIndexes = function(that, currentColumn) {\r\n normalizeIndexes(that._columns, \"groupIndex\", currentColumn, (function(column) {\r\n var grouped = column.grouped;\r\n delete column.grouped;\r\n return grouped\r\n }))\r\n };\r\n var getColumnIndexByVisibleIndex = function(that, visibleIndex, location) {\r\n var rowIndex = isObject(visibleIndex) ? visibleIndex.rowIndex : null;\r\n var columns = \"group\" === location ? that.getGroupColumns() : \"columnChooser\" === location ? that.getChooserColumns() : that.getVisibleColumns(rowIndex);\r\n var column;\r\n visibleIndex = isObject(visibleIndex) ? visibleIndex.columnIndex : visibleIndex;\r\n column = columns[visibleIndex];\r\n if (column && column.type === GROUP_COMMAND_COLUMN_NAME) {\r\n column = that._columns.filter(col => column.type === col.type)[0] || column\r\n }\r\n return column && isDefined(column.index) ? column.index : -1\r\n };\r\n\r\n function checkUserStateColumn(column, userStateColumn) {\r\n return column && userStateColumn && (userStateColumn.name === column.name || !column.name) && (userStateColumn.dataField === column.dataField || column.name)\r\n }\r\n var applyUserState = function(that) {\r\n var columnsUserState = that._columnsUserState;\r\n var ignoreColumnOptionNames = that._ignoreColumnOptionNames || [];\r\n var columns = that._columns;\r\n var columnCountById = {};\r\n var resultColumns = [];\r\n var allColumnsHaveState = true;\r\n var userStateColumnIndexes = [];\r\n var column;\r\n var userStateColumnIndex;\r\n var i;\r\n\r\n function applyFieldsState(column, userStateColumn) {\r\n if (!userStateColumn) {\r\n return\r\n }\r\n for (var index = 0; index < USER_STATE_FIELD_NAMES.length; index++) {\r\n var fieldName = USER_STATE_FIELD_NAMES[index];\r\n if (inArray(fieldName, ignoreColumnOptionNames) >= 0) {\r\n continue\r\n }\r\n if (\"dataType\" === fieldName) {\r\n column[fieldName] = column[fieldName] || userStateColumn[fieldName]\r\n } else if (inArray(fieldName, USER_STATE_FIELD_NAMES_15_1) >= 0) {\r\n if (fieldName in userStateColumn) {\r\n column[fieldName] = userStateColumn[fieldName]\r\n }\r\n } else {\r\n if (\"selectedFilterOperation\" === fieldName && userStateColumn[fieldName]) {\r\n column.defaultSelectedFilterOperation = column[fieldName] || null\r\n }\r\n column[fieldName] = userStateColumn[fieldName]\r\n }\r\n }\r\n }\r\n\r\n function findUserStateColumn(columnsUserState, column) {\r\n var id = column.name || column.dataField;\r\n var count = columnCountById[id] || 0;\r\n for (var j = 0; j < columnsUserState.length; j++) {\r\n if (checkUserStateColumn(column, columnsUserState[j])) {\r\n if (count) {\r\n count--\r\n } else {\r\n columnCountById[id] = columnCountById[id] || 0;\r\n columnCountById[id]++;\r\n return j\r\n }\r\n }\r\n }\r\n return -1\r\n }\r\n if (columnsUserState) {\r\n for (i = 0; i < columns.length; i++) {\r\n userStateColumnIndex = findUserStateColumn(columnsUserState, columns[i]);\r\n allColumnsHaveState = allColumnsHaveState && userStateColumnIndex >= 0;\r\n userStateColumnIndexes.push(userStateColumnIndex)\r\n }\r\n for (i = 0; i < columns.length; i++) {\r\n column = columns[i];\r\n userStateColumnIndex = userStateColumnIndexes[i];\r\n if (that._hasUserState || allColumnsHaveState) {\r\n applyFieldsState(column, columnsUserState[userStateColumnIndex])\r\n }\r\n if (userStateColumnIndex >= 0 && isDefined(columnsUserState[userStateColumnIndex].initialIndex)) {\r\n resultColumns[userStateColumnIndex] = column\r\n } else {\r\n resultColumns.push(column)\r\n }\r\n }\r\n var hasAddedBands = false;\r\n for (i = 0; i < columnsUserState.length; i++) {\r\n var columnUserState = columnsUserState[i];\r\n if (columnUserState.added && findUserStateColumn(columns, columnUserState) < 0) {\r\n column = createColumn(that, columnUserState.added);\r\n applyFieldsState(column, columnUserState);\r\n resultColumns.push(column);\r\n if (columnUserState.added.columns) {\r\n hasAddedBands = true\r\n }\r\n }\r\n }\r\n if (hasAddedBands) {\r\n updateColumnIndexes(that);\r\n resultColumns = createColumnsFromOptions(that, resultColumns)\r\n }\r\n assignColumns(that, resultColumns)\r\n }\r\n };\r\n var updateIndexes = function(that, column) {\r\n updateColumnIndexes(that);\r\n updateColumnGroupIndexes(that, column);\r\n ! function(that, currentColumn) {\r\n each(that._columns, (function(index, column) {\r\n if (isDefined(column.sortIndex) && !isSortOrderValid(column.sortOrder)) {\r\n delete column.sortIndex\r\n }\r\n }));\r\n normalizeIndexes(that._columns, \"sortIndex\", currentColumn, (function(column) {\r\n return !isDefined(column.groupIndex) && isSortOrderValid(column.sortOrder)\r\n }))\r\n }(that, column);\r\n resetBandColumnsCache(that);\r\n ! function(that, currentColumn) {\r\n var key;\r\n var column;\r\n var bandColumns = {};\r\n var result = [];\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var columns = that._columns.filter(column => !column.command);\r\n for (var i = 0; i < columns.length; i++) {\r\n column = columns[i];\r\n var parentBandColumns = getParentBandColumns(i, bandColumnsCache.columnParentByIndex);\r\n if (parentBandColumns.length) {\r\n var bandColumnIndex = parentBandColumns[parentBandColumns.length - 1].index;\r\n bandColumns[bandColumnIndex] = bandColumns[bandColumnIndex] || [];\r\n bandColumns[bandColumnIndex].push(column)\r\n } else {\r\n result.push(column)\r\n }\r\n }\r\n for (key in bandColumns) {\r\n normalizeIndexes(bandColumns[key], \"visibleIndex\", currentColumn)\r\n }\r\n normalizeIndexes(result, \"visibleIndex\", currentColumn)\r\n }(that, column)\r\n };\r\n var resetColumnsCache = function(that) {\r\n that.resetColumnsCache()\r\n };\r\n\r\n function assignColumns(that, columns) {\r\n that._columns = columns;\r\n resetColumnsCache(that);\r\n that.updateColumnDataTypes()\r\n }\r\n var updateColumnChanges = function(that, changeType, optionName, columnIndex) {\r\n var columnChanges = that._columnChanges || {\r\n optionNames: {\r\n length: 0\r\n },\r\n changeTypes: {\r\n length: 0\r\n },\r\n columnIndex: columnIndex\r\n };\r\n optionName = optionName || \"all\";\r\n optionName = optionName.split(\".\")[0];\r\n var changeTypes = columnChanges.changeTypes;\r\n if (changeType && !changeTypes[changeType]) {\r\n changeTypes[changeType] = true;\r\n changeTypes.length++\r\n }\r\n var optionNames = columnChanges.optionNames;\r\n if (optionName && !optionNames[optionName]) {\r\n optionNames[optionName] = true;\r\n optionNames.length++\r\n }\r\n if (void 0 === columnIndex || columnIndex !== columnChanges.columnIndex) {\r\n delete columnChanges.columnIndex\r\n }\r\n that._columnChanges = columnChanges;\r\n resetColumnsCache(that)\r\n };\r\n var fireColumnsChanged = function(that) {\r\n var onColumnsChanging = that.option(\"onColumnsChanging\");\r\n var columnChanges = that._columnChanges;\r\n var reinitOptionNames = [\"dataField\", \"lookup\", \"dataType\", \"columns\"];\r\n if (that.isInitialized() && !that._updateLockCount && columnChanges) {\r\n if (onColumnsChanging) {\r\n that._updateLockCount++;\r\n onColumnsChanging(extend({\r\n component: that.component\r\n }, columnChanges));\r\n that._updateLockCount--\r\n }\r\n that._columnChanges = void 0;\r\n if (options = columnChanges.optionNames, options && reinitOptionNames.some(name => options[name])) {\r\n that.reinit()\r\n } else {\r\n that.columnsChanged.fire(columnChanges)\r\n }\r\n }\r\n var options\r\n };\r\n var updateSortOrderWhenGrouping = function(that, column, groupIndex, prevGroupIndex) {\r\n var columnWasGrouped = prevGroupIndex >= 0;\r\n if (groupIndex >= 0) {\r\n if (!columnWasGrouped) {\r\n column.lastSortOrder = column.sortOrder\r\n }\r\n } else {\r\n var sortMode = that.option(\"sorting.mode\");\r\n var sortOrder = column.lastSortOrder;\r\n if (\"single\" === sortMode) {\r\n var sortedByAnotherColumn = that._columns.some(col => col !== column && isDefined(col.sortIndex));\r\n if (sortedByAnotherColumn) {\r\n sortOrder = void 0\r\n }\r\n }\r\n column.sortOrder = sortOrder\r\n }\r\n };\r\n var fireOptionChanged = function(that, options) {\r\n var value = options.value;\r\n var optionName = options.optionName;\r\n var prevValue = options.prevValue;\r\n var fullOptionName = options.fullOptionName;\r\n var fullOptionPath = \"\".concat(fullOptionName, \".\").concat(optionName);\r\n if (!IGNORE_COLUMN_OPTION_NAMES[optionName] && that._skipProcessingColumnsChange !== fullOptionPath) {\r\n that._skipProcessingColumnsChange = fullOptionPath;\r\n that.component._notifyOptionChanged(fullOptionPath, value, prevValue);\r\n that._skipProcessingColumnsChange = false\r\n }\r\n };\r\n var columnOptionCore = function(that, column, optionName, value, notFireEvent) {\r\n var optionGetter = compileGetter(optionName);\r\n var columnIndex = column.index;\r\n var columns;\r\n var changeType;\r\n var initialColumn;\r\n if (3 === arguments.length) {\r\n return optionGetter(column, {\r\n functionsAsIs: true\r\n })\r\n }\r\n var prevValue = optionGetter(column, {\r\n functionsAsIs: true\r\n });\r\n if (prevValue !== value) {\r\n if (\"groupIndex\" === optionName || \"calculateGroupValue\" === optionName) {\r\n changeType = \"grouping\";\r\n updateSortOrderWhenGrouping(that, column, value, prevValue)\r\n } else if (\"sortIndex\" === optionName || \"sortOrder\" === optionName || \"calculateSortValue\" === optionName) {\r\n changeType = \"sorting\"\r\n } else {\r\n changeType = \"columns\"\r\n }\r\n var optionSetter = compileSetter(optionName);\r\n optionSetter(column, value, {\r\n functionsAsIs: true\r\n });\r\n var fullOptionName = getColumnFullPath(that, column);\r\n if (COLUMN_INDEX_OPTIONS[optionName]) {\r\n updateIndexes(that, column);\r\n value = optionGetter(column)\r\n }\r\n if (\"name\" === optionName || \"allowEditing\" === optionName) {\r\n that._checkColumns()\r\n }\r\n fullOptionName && fireOptionChanged(that, {\r\n fullOptionName: fullOptionName,\r\n optionName: optionName,\r\n value: value,\r\n prevValue: prevValue\r\n });\r\n if (!isDefined(prevValue) && !isDefined(value) && 0 !== optionName.indexOf(\"buffer\")) {\r\n notFireEvent = true\r\n }\r\n if (!notFireEvent) {\r\n if (inArray(optionName, USER_STATE_FIELD_NAMES) < 0 && \"visibleWidth\" !== optionName) {\r\n columns = that.option(\"columns\");\r\n initialColumn = that.getColumnByPath(fullOptionName, columns);\r\n if (isString(initialColumn)) {\r\n initialColumn = columns[columnIndex] = {\r\n dataField: initialColumn\r\n }\r\n }\r\n if (initialColumn && checkUserStateColumn(initialColumn, column)) {\r\n optionSetter(initialColumn, value, {\r\n functionsAsIs: true\r\n })\r\n }\r\n }\r\n updateColumnChanges(that, changeType, optionName, columnIndex)\r\n } else {\r\n resetColumnsCache(that)\r\n }\r\n }\r\n };\r\n\r\n function isSortOrderValid(sortOrder) {\r\n return \"asc\" === sortOrder || \"desc\" === sortOrder\r\n }\r\n var defaultSetCellValue = function(data, value) {\r\n var path = this.dataField.split(\".\");\r\n var dotCount = path.length - 1;\r\n if (this.serializeValue) {\r\n value = this.serializeValue(value)\r\n }\r\n for (var i = 0; i < dotCount; i++) {\r\n var name = path[i];\r\n data = data[name] = data[name] || {}\r\n }\r\n data[path[dotCount]] = value\r\n };\r\n var isCustomCommandColumn = (that, commandColumn) => !!that._columns.filter(column => column.type === commandColumn.type).length;\r\n var getFixedPosition = function(that, column) {\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n if (column.command && !isCustomCommandColumn(that, column) || !column.fixedPosition) {\r\n return rtlEnabled ? \"right\" : \"left\"\r\n }\r\n return column.fixedPosition\r\n };\r\n var processExpandColumns = function(columns, expandColumns, type, columnIndex) {\r\n var customColumnIndex;\r\n var rowCount = this.getRowCount();\r\n var rowspan = columns[columnIndex] && columns[columnIndex].rowspan;\r\n var expandColumnsByType = expandColumns.filter(column => column.type === type);\r\n columns.forEach((column, index) => {\r\n if (column.type === type) {\r\n customColumnIndex = index;\r\n rowspan = columns[index + 1] ? columns[index + 1].rowspan : rowCount\r\n }\r\n });\r\n if (rowspan > 1) {\r\n expandColumnsByType = map(expandColumnsByType, (function(expandColumn) {\r\n return extend({}, expandColumn, {\r\n rowspan: rowspan\r\n })\r\n }))\r\n }\r\n expandColumnsByType.unshift.apply(expandColumnsByType, isDefined(customColumnIndex) ? [customColumnIndex, 1] : [columnIndex, 0]);\r\n columns.splice.apply(columns, expandColumnsByType);\r\n return rowspan || 1\r\n };\r\n var numberToString = function(number, digitsCount) {\r\n var str = number ? number.toString() : \"0\";\r\n while (str.length < digitsCount) {\r\n str = \"0\" + str\r\n }\r\n return str\r\n };\r\n var mergeColumns = (that, columns, commandColumns, needToExtend) => {\r\n var column;\r\n var commandColumnIndex;\r\n var result = columns.slice().map(column => extend({}, column));\r\n var isColumnFixing = that._isColumnFixing();\r\n var defaultCommandColumns = commandColumns.slice().map(column => extend({\r\n fixed: isColumnFixing\r\n }, column));\r\n var getCommandColumnIndex = column => commandColumns.reduce((result, commandColumn, index) => {\r\n var columnType = needToExtend && column.type === GROUP_COMMAND_COLUMN_NAME ? \"expand\" : column.type;\r\n return commandColumn.type === columnType || commandColumn.command === column.command ? index : result\r\n }, -1);\r\n var callbackFilter = commandColumn => commandColumn.command !== commandColumns[commandColumnIndex].command;\r\n for (var i = 0; i < columns.length; i++) {\r\n column = columns[i];\r\n commandColumnIndex = column && (column.type || column.command) ? getCommandColumnIndex(column) : -1;\r\n if (commandColumnIndex >= 0) {\r\n if (needToExtend) {\r\n result[i] = extend({\r\n fixed: isColumnFixing\r\n }, commandColumns[commandColumnIndex], column);\r\n if (column.type !== GROUP_COMMAND_COLUMN_NAME) {\r\n defaultCommandColumns = defaultCommandColumns.filter(callbackFilter)\r\n }\r\n } else {\r\n var columnOptions = {\r\n visibleIndex: column.visibleIndex,\r\n index: column.index,\r\n headerId: column.headerId,\r\n allowFixing: 0 === column.groupIndex,\r\n allowReordering: 0 === column.groupIndex,\r\n groupIndex: column.groupIndex\r\n };\r\n result[i] = extend({}, column, commandColumns[commandColumnIndex], column.type === GROUP_COMMAND_COLUMN_NAME && columnOptions)\r\n }\r\n }\r\n }\r\n if (columns.length && needToExtend && defaultCommandColumns.length) {\r\n result = result.concat(defaultCommandColumns)\r\n }\r\n return result\r\n };\r\n var isColumnFixed = (that, column) => isDefined(column.fixed) || !column.type ? column.fixed : that._isColumnFixing();\r\n var resetBandColumnsCache = that => {\r\n that._bandColumnsCache = void 0\r\n };\r\n var findColumn = (columns, identifier) => {\r\n var identifierOptionName = isString(identifier) && identifier.substr(0, identifier.indexOf(\":\"));\r\n var column;\r\n if (void 0 === identifier) {\r\n return\r\n }\r\n if (identifierOptionName) {\r\n identifier = identifier.substr(identifierOptionName.length + 1)\r\n }\r\n if (identifierOptionName) {\r\n column = columns.filter(column => \"\" + column[identifierOptionName] === identifier)[0]\r\n } else {\r\n [\"index\", \"name\", \"dataField\", \"caption\"].some(optionName => {\r\n column = columns.filter(column => column[optionName] === identifier)[0];\r\n return !!column\r\n })\r\n }\r\n return column\r\n };\r\n return {\r\n _getExpandColumnOptions: function() {\r\n return {\r\n type: \"expand\",\r\n command: \"expand\",\r\n width: \"auto\",\r\n cssClass: COMMAND_EXPAND_CLASS,\r\n allowEditing: false,\r\n allowGrouping: false,\r\n allowSorting: false,\r\n allowResizing: false,\r\n allowReordering: false,\r\n allowHiding: false\r\n }\r\n },\r\n _getFirstItems: function(dataSource) {\r\n var groupsCount;\r\n var items = [];\r\n if (dataSource && dataSource.items().length > 0) {\r\n groupsCount = gridCoreUtils.normalizeSortingInfo(dataSource.group()).length;\r\n items = function getFirstItemsCore(items, groupsCount) {\r\n if (!items || !groupsCount) {\r\n return items\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n var childItems = getFirstItemsCore(items[i].items || items[i].collapsedItems, groupsCount - 1);\r\n if (childItems && childItems.length) {\r\n return childItems\r\n }\r\n }\r\n }(dataSource.items(), groupsCount) || []\r\n }\r\n return items\r\n },\r\n _endUpdateCore: function() {\r\n !this._skipProcessingColumnsChange && fireColumnsChanged(this)\r\n },\r\n init: function() {\r\n var columns = this.option(\"columns\");\r\n this._commandColumns = this._commandColumns || [];\r\n this._columns = this._columns || [];\r\n this._isColumnsFromOptions = !!columns;\r\n if (this._isColumnsFromOptions) {\r\n assignColumns(this, columns ? createColumnsFromOptions(this, columns) : []);\r\n applyUserState(this)\r\n } else {\r\n assignColumns(this, this._columnsUserState ? createColumnsFromOptions(this, this._columnsUserState) : this._columns)\r\n }! function(that) {\r\n var options = that._getExpandColumnOptions();\r\n that.addCommandColumn(options)\r\n }(this);\r\n if (this._dataSourceApplied) {\r\n this.applyDataSource(this._dataSource, true)\r\n } else {\r\n updateIndexes(this)\r\n }\r\n this._checkColumns()\r\n },\r\n callbackNames: function() {\r\n return [\"columnsChanged\"]\r\n },\r\n getColumnByPath: function(path, columns) {\r\n var column;\r\n var columnIndexes = [];\r\n path.replace(regExp, (function(_, columnIndex) {\r\n columnIndexes.push(parseInt(columnIndex));\r\n return \"\"\r\n }));\r\n if (columnIndexes.length) {\r\n if (columns) {\r\n column = columnIndexes.reduce((function(column, index) {\r\n return column && column.columns && column.columns[index]\r\n }), {\r\n columns: columns\r\n })\r\n } else {\r\n column = function(that, columnIndexes) {\r\n var result;\r\n var columns;\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var callbackFilter = function(column) {\r\n var ownerBand = result ? result.index : void 0;\r\n return column.ownerBand === ownerBand\r\n };\r\n if (bandColumnsCache.isPlain) {\r\n result = that._columns[columnIndexes[0]]\r\n } else {\r\n columns = that._columns.filter(callbackFilter);\r\n for (var i = 0; i < columnIndexes.length; i++) {\r\n result = columns[columnIndexes[i]];\r\n if (result) {\r\n columns = that._columns.filter(callbackFilter)\r\n }\r\n }\r\n }\r\n return result\r\n }(this, columnIndexes)\r\n }\r\n }\r\n return column\r\n },\r\n optionChanged: function(args) {\r\n var needUpdateRequireResize;\r\n switch (args.name) {\r\n case \"adaptColumnWidthByRatio\":\r\n args.handled = true;\r\n break;\r\n case \"dataSource\":\r\n if (args.value !== args.previousValue && !this.option(\"columns\") && (!Array.isArray(args.value) || !Array.isArray(args.previousValue))) {\r\n this._columns = []\r\n }\r\n break;\r\n case \"columns\":\r\n needUpdateRequireResize = this._skipProcessingColumnsChange;\r\n args.handled = true;\r\n if (!this._skipProcessingColumnsChange) {\r\n if (args.name === args.fullName) {\r\n this._columnsUserState = null;\r\n this._ignoreColumnOptionNames = null;\r\n this.init()\r\n } else {\r\n this._columnOptionChanged(args);\r\n needUpdateRequireResize = true\r\n }\r\n }\r\n if (needUpdateRequireResize) {\r\n this._updateRequireResize(args)\r\n }\r\n break;\r\n case \"commonColumnSettings\":\r\n case \"columnAutoWidth\":\r\n case \"allowColumnResizing\":\r\n case \"allowColumnReordering\":\r\n case \"columnFixing\":\r\n case \"grouping\":\r\n case \"groupPanel\":\r\n case \"regenerateColumnsByVisibleItems\":\r\n case \"customizeColumns\":\r\n case \"columnHidingEnabled\":\r\n case \"dateSerializationFormat\":\r\n case \"columnResizingMode\":\r\n case \"columnMinWidth\":\r\n case \"columnWidth\":\r\n args.handled = true;\r\n var ignoreColumnOptionNames = \"columnWidth\" === args.fullName && [\"width\"];\r\n this.reinit(ignoreColumnOptionNames);\r\n break;\r\n case \"rtlEnabled\":\r\n this.reinit();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _columnOptionChanged: function(args) {\r\n var columnOptionValue = {};\r\n var column = this.getColumnByPath(args.fullName);\r\n var columnOptionName = args.fullName.replace(regExp, \"\");\r\n if (column) {\r\n if (columnOptionName) {\r\n columnOptionValue[columnOptionName] = args.value\r\n } else {\r\n columnOptionValue = args.value\r\n }\r\n this._skipProcessingColumnsChange = args.fullName;\r\n this.columnOption(column.index, columnOptionValue);\r\n this._skipProcessingColumnsChange = false\r\n }\r\n },\r\n _updateRequireResize: function(args) {\r\n var component = this.component;\r\n if (\"width\" === args.fullName.replace(regExp, \"\") && component._updateLockCount) {\r\n component._requireResize = true\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"addColumn\", \"deleteColumn\", \"columnOption\", \"columnCount\", \"clearSorting\", \"clearGrouping\", \"getVisibleColumns\", \"getVisibleColumnIndex\"]\r\n },\r\n applyDataSource: function(dataSource, forceApplying) {\r\n var isDataSourceLoaded = dataSource && dataSource.isLoaded();\r\n this._dataSource = dataSource;\r\n if (!this._dataSourceApplied || 0 === this._dataSourceColumnsCount || forceApplying || this.option(\"regenerateColumnsByVisibleItems\")) {\r\n if (isDataSourceLoaded) {\r\n if (!this._isColumnsFromOptions) {\r\n var columnsFromDataSource = function(that, dataSource) {\r\n var firstItems = that._getFirstItems(dataSource);\r\n var fieldName;\r\n var processedFields = {};\r\n var result = [];\r\n for (var i = 0; i < firstItems.length; i++) {\r\n if (firstItems[i]) {\r\n for (fieldName in firstItems[i]) {\r\n if (!isFunction(firstItems[i][fieldName]) || variableWrapper.isWrapped(firstItems[i][fieldName])) {\r\n processedFields[fieldName] = true\r\n }\r\n }\r\n }\r\n }\r\n for (fieldName in processedFields) {\r\n if (0 !== fieldName.indexOf(\"__\")) {\r\n var column = createColumn(that, fieldName);\r\n result.push(column)\r\n }\r\n }\r\n return result\r\n }(this, dataSource);\r\n if (columnsFromDataSource.length) {\r\n assignColumns(this, columnsFromDataSource);\r\n this._dataSourceColumnsCount = this._columns.length;\r\n applyUserState(this)\r\n }\r\n }\r\n return this.updateColumns(dataSource, forceApplying)\r\n } else {\r\n this._dataSourceApplied = false\r\n }\r\n } else if (isDataSourceLoaded && !this.isAllDataTypesDefined(true) && this.updateColumnDataTypes(dataSource)) {\r\n updateColumnChanges(this, \"columns\");\r\n fireColumnsChanged(this);\r\n return (new Deferred).reject().promise()\r\n }\r\n },\r\n reset: function() {\r\n this._dataSourceApplied = false;\r\n this._dataSourceColumnsCount = void 0;\r\n this.reinit()\r\n },\r\n resetColumnsCache: function() {\r\n this._visibleColumns = void 0;\r\n this._fixedColumns = void 0;\r\n this._rowCount = void 0;\r\n resetBandColumnsCache(this)\r\n },\r\n reinit: function(ignoreColumnOptionNames) {\r\n this._columnsUserState = this.getUserState();\r\n this._ignoreColumnOptionNames = ignoreColumnOptionNames || null;\r\n this.init();\r\n if (ignoreColumnOptionNames) {\r\n this._ignoreColumnOptionNames = null\r\n }\r\n },\r\n isInitialized: function() {\r\n return !!this._columns.length || !!this.option(\"columns\")\r\n },\r\n isDataSourceApplied: function() {\r\n return this._dataSourceApplied\r\n },\r\n getCommonSettings: function(column) {\r\n var commonColumnSettings = (!column || !column.type) && this.option(\"commonColumnSettings\") || {};\r\n var groupingOptions = this.option(\"grouping\") || {};\r\n var groupPanelOptions = this.option(\"groupPanel\") || {};\r\n return extend({\r\n allowFixing: this.option(\"columnFixing.enabled\"),\r\n allowResizing: this.option(\"allowColumnResizing\") || void 0,\r\n allowReordering: this.option(\"allowColumnReordering\"),\r\n minWidth: this.option(\"columnMinWidth\"),\r\n width: this.option(\"columnWidth\"),\r\n autoExpandGroup: groupingOptions.autoExpandAll,\r\n allowCollapsing: groupingOptions.allowCollapsing,\r\n allowGrouping: groupPanelOptions.allowColumnDragging && groupPanelOptions.visible || groupingOptions.contextMenuEnabled\r\n }, commonColumnSettings)\r\n },\r\n isColumnOptionUsed: function(optionName) {\r\n for (var i = 0; i < this._columns.length; i++) {\r\n if (this._columns[i][optionName]) {\r\n return true\r\n }\r\n }\r\n },\r\n isAllDataTypesDefined: function(checkSerializers) {\r\n var columns = this._columns;\r\n if (!columns.length) {\r\n return false\r\n }\r\n for (var i = 0; i < columns.length; i++) {\r\n if (!columns[i].dataField && columns[i].calculateCellValue === columns[i].defaultCalculateCellValue) {\r\n continue\r\n }\r\n if (!columns[i].dataType || checkSerializers && columns[i].deserializeValue && void 0 === columns[i].serializationFormat) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n getColumns: function() {\r\n return this._columns\r\n },\r\n isBandColumnsUsed: function() {\r\n return this.getColumns().some((function(column) {\r\n return column.isBand\r\n }))\r\n },\r\n getGroupColumns: function() {\r\n var result = [];\r\n each(this._columns, (function() {\r\n if (isDefined(this.groupIndex)) {\r\n result[this.groupIndex] = this\r\n }\r\n }));\r\n return result\r\n },\r\n getVisibleColumns: function(rowIndex) {\r\n this._visibleColumns = this._visibleColumns || this._getVisibleColumnsCore();\r\n rowIndex = isDefined(rowIndex) ? rowIndex : this._visibleColumns.length - 1;\r\n return this._visibleColumns[rowIndex] || []\r\n },\r\n getFixedColumns: function(rowIndex) {\r\n this._fixedColumns = this._fixedColumns || this._getFixedColumnsCore();\r\n rowIndex = isDefined(rowIndex) ? rowIndex : this._fixedColumns.length - 1;\r\n return this._fixedColumns[rowIndex] || []\r\n },\r\n getFilteringColumns: function() {\r\n return this.getColumns().filter(item => (item.dataField || item.name) && (item.allowFiltering || item.allowHeaderFiltering)).map(item => {\r\n var field = extend(true, {}, item);\r\n if (!isDefined(field.dataField)) {\r\n field.dataField = field.name\r\n }\r\n field.filterOperations = item.filterOperations !== item.defaultFilterOperations ? field.filterOperations : null;\r\n return field\r\n })\r\n },\r\n getColumnIndexOffset: function() {\r\n return 0\r\n },\r\n _getFixedColumnsCore: function() {\r\n var result = [];\r\n var rowCount = this.getRowCount();\r\n var isColumnFixing = this._isColumnFixing();\r\n var transparentColumn = {\r\n command: \"transparent\"\r\n };\r\n var transparentColspan = 0;\r\n var notFixedColumnCount;\r\n var transparentColumnIndex;\r\n var lastFixedPosition;\r\n if (isColumnFixing) {\r\n for (var i = 0; i <= rowCount; i++) {\r\n notFixedColumnCount = 0;\r\n lastFixedPosition = null;\r\n transparentColumnIndex = null;\r\n var visibleColumns = this.getVisibleColumns(i, true);\r\n for (var j = 0; j < visibleColumns.length; j++) {\r\n var prevColumn = visibleColumns[j - 1];\r\n var column = visibleColumns[j];\r\n if (!column.fixed) {\r\n if (0 === i) {\r\n if (column.isBand && column.colspan) {\r\n transparentColspan += column.colspan\r\n } else {\r\n transparentColspan++\r\n }\r\n }\r\n notFixedColumnCount++;\r\n if (!isDefined(transparentColumnIndex)) {\r\n transparentColumnIndex = j\r\n }\r\n } else if (prevColumn && prevColumn.fixed && getFixedPosition(this, prevColumn) !== getFixedPosition(this, column)) {\r\n if (!isDefined(transparentColumnIndex)) {\r\n transparentColumnIndex = j\r\n }\r\n } else {\r\n lastFixedPosition = column.fixedPosition\r\n }\r\n }\r\n if (0 === i && (0 === notFixedColumnCount || notFixedColumnCount >= visibleColumns.length)) {\r\n return []\r\n }\r\n if (!isDefined(transparentColumnIndex)) {\r\n transparentColumnIndex = \"right\" === lastFixedPosition ? 0 : visibleColumns.length\r\n }\r\n result[i] = visibleColumns.slice(0);\r\n if (!transparentColumn.colspan) {\r\n transparentColumn.colspan = transparentColspan\r\n }\r\n result[i].splice(transparentColumnIndex, notFixedColumnCount, transparentColumn)\r\n }\r\n }\r\n return result.map(columns => columns.map(column => {\r\n var newColumn = _extends({}, column);\r\n if (newColumn.headerId) {\r\n newColumn.headerId += \"-fixed\"\r\n }\r\n return newColumn\r\n }))\r\n },\r\n _isColumnFixing: function() {\r\n var isColumnFixing = this.option(\"columnFixing.enabled\");\r\n !isColumnFixing && each(this._columns, (function(_, column) {\r\n if (column.fixed) {\r\n isColumnFixing = true;\r\n return false\r\n }\r\n }));\r\n return isColumnFixing\r\n },\r\n _getExpandColumnsCore: function() {\r\n return this.getGroupColumns()\r\n },\r\n getExpandColumns: function() {\r\n var expandColumns = this._getExpandColumnsCore();\r\n var expandColumn;\r\n var firstGroupColumn = expandColumns.filter(column => 0 === column.groupIndex)[0];\r\n var isFixedFirstGroupColumn = firstGroupColumn && firstGroupColumn.fixed;\r\n var isColumnFixing = this._isColumnFixing();\r\n if (expandColumns.length) {\r\n expandColumn = this.columnOption(\"command:expand\")\r\n }\r\n expandColumns = map(expandColumns, column => extend({}, column, {\r\n visibleWidth: null,\r\n minWidth: null,\r\n cellTemplate: !isDefined(column.groupIndex) ? column.cellTemplate : null,\r\n headerCellTemplate: null,\r\n fixed: !isDefined(column.groupIndex) || !isFixedFirstGroupColumn ? isColumnFixing : true\r\n }, expandColumn, {\r\n index: column.index,\r\n type: column.type || GROUP_COMMAND_COLUMN_NAME\r\n }));\r\n return expandColumns\r\n },\r\n getBandColumnsCache: function() {\r\n if (!this._bandColumnsCache) {\r\n var columns = this._columns;\r\n var columnChildrenByIndex = {};\r\n var columnParentByIndex = {};\r\n var isPlain = true;\r\n columns.forEach((function(column) {\r\n var parentIndex = column.ownerBand;\r\n var parent = columns[parentIndex];\r\n if (column.hasColumns) {\r\n isPlain = false\r\n }\r\n if (column.colspan) {\r\n column.colspan = void 0\r\n }\r\n if (column.rowspan) {\r\n column.rowspan = void 0\r\n }\r\n if (parent) {\r\n columnParentByIndex[column.index] = parent\r\n } else {\r\n parentIndex = -1\r\n }\r\n columnChildrenByIndex[parentIndex] = columnChildrenByIndex[parentIndex] || [];\r\n columnChildrenByIndex[parentIndex].push(column)\r\n }));\r\n this._bandColumnsCache = {\r\n isPlain: isPlain,\r\n columnChildrenByIndex: columnChildrenByIndex,\r\n columnParentByIndex: columnParentByIndex\r\n }\r\n }\r\n return this._bandColumnsCache\r\n },\r\n _isColumnVisible: function(column) {\r\n return column.visible && this.isParentColumnVisible(column.index)\r\n },\r\n _getVisibleColumnsCore: function() {\r\n var that = this;\r\n var i;\r\n var result = [];\r\n var rowspanGroupColumns = 0;\r\n var rowspanExpandColumns = 0;\r\n var rowCount = that.getRowCount();\r\n var positiveIndexedColumns = [];\r\n var negativeIndexedColumns = [];\r\n var notGroupedColumnsCount = 0;\r\n var isFixedToEnd;\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var expandColumns = mergeColumns(that, that.getExpandColumns(), that._columns);\r\n var columns = mergeColumns(that, that._columns, that._commandColumns, true);\r\n var columnDigitsCount = function(number) {\r\n var i;\r\n for (i = 0; number > 1; i++) {\r\n number /= 10\r\n }\r\n return i\r\n }(columns.length);\r\n ! function(that, columns, bandColumnsCache) {\r\n var rowspan;\r\n for (var i = 0; i < columns.length; i++) {\r\n var column = columns[i];\r\n if (column.visible || column.command) {\r\n if (column.isBand) {\r\n column.colspan = column.colspan || calculateColspan(that, column.index)\r\n }\r\n if (!column.isBand || !column.colspan) {\r\n rowspan = that.getRowCount();\r\n if (!column.command && (!isDefined(column.groupIndex) || column.showWhenGrouped)) {\r\n rowspan -= getParentBandColumns(column.index, bandColumnsCache.columnParentByIndex).length\r\n }\r\n if (rowspan > 1) {\r\n column.rowspan = rowspan\r\n }\r\n }\r\n }\r\n }\r\n }(that, columns, bandColumnsCache);\r\n for (i = 0; i < rowCount; i++) {\r\n result[i] = [];\r\n negativeIndexedColumns[i] = [{}];\r\n positiveIndexedColumns[i] = [{}, {}, {}]\r\n }\r\n each(columns, (function() {\r\n var visibleIndex = this.visibleIndex;\r\n var indexedColumns;\r\n var parentBandColumns = getParentBandColumns(this.index, bandColumnsCache.columnParentByIndex);\r\n var visible = that._isColumnVisible(this);\r\n if (visible && (!isDefined(this.groupIndex) || this.showWhenGrouped)) {\r\n var rowIndex = parentBandColumns.length;\r\n if (visibleIndex < 0) {\r\n visibleIndex = -visibleIndex;\r\n indexedColumns = negativeIndexedColumns[rowIndex]\r\n } else {\r\n this.fixed = parentBandColumns.length ? parentBandColumns[0].fixed : this.fixed;\r\n this.fixedPosition = parentBandColumns.length ? parentBandColumns[0].fixedPosition : this.fixedPosition;\r\n if (this.fixed) {\r\n isFixedToEnd = \"right\" === this.fixedPosition;\r\n if (rtlEnabled && (!this.command || isCustomCommandColumn(that, this))) {\r\n isFixedToEnd = !isFixedToEnd\r\n }\r\n if (isFixedToEnd) {\r\n indexedColumns = positiveIndexedColumns[rowIndex][2]\r\n } else {\r\n indexedColumns = positiveIndexedColumns[rowIndex][0]\r\n }\r\n } else {\r\n indexedColumns = positiveIndexedColumns[rowIndex][1]\r\n }\r\n }\r\n if (parentBandColumns.length) {\r\n visibleIndex = numberToString(visibleIndex, columnDigitsCount);\r\n for (i = parentBandColumns.length - 1; i >= 0; i--) {\r\n visibleIndex = numberToString(parentBandColumns[i].visibleIndex, columnDigitsCount) + visibleIndex\r\n }\r\n }\r\n indexedColumns[visibleIndex] = indexedColumns[visibleIndex] || [];\r\n indexedColumns[visibleIndex].push(this);\r\n notGroupedColumnsCount++\r\n }\r\n }));\r\n each(result, (function(rowIndex) {\r\n orderEach(negativeIndexedColumns[rowIndex], (function(_, columns) {\r\n result[rowIndex].unshift.apply(result[rowIndex], columns)\r\n }));\r\n var firstPositiveIndexColumn = result[rowIndex].length;\r\n each(positiveIndexedColumns[rowIndex], (function(index, columnsByFixing) {\r\n orderEach(columnsByFixing, (function(_, columnsByVisibleIndex) {\r\n result[rowIndex].push.apply(result[rowIndex], columnsByVisibleIndex)\r\n }))\r\n }));\r\n if (rowspanExpandColumns < rowIndex + 1) {\r\n rowspanExpandColumns += processExpandColumns.call(that, result[rowIndex], expandColumns, \"detailExpand\", firstPositiveIndexColumn)\r\n }\r\n if (rowspanGroupColumns < rowIndex + 1) {\r\n rowspanGroupColumns += processExpandColumns.call(that, result[rowIndex], expandColumns, GROUP_COMMAND_COLUMN_NAME, firstPositiveIndexColumn)\r\n }\r\n }));\r\n result.push(function getDataColumns(columns, rowIndex, bandColumnID) {\r\n var result = [];\r\n rowIndex = rowIndex || 0;\r\n columns[rowIndex] && each(columns[rowIndex], (function(_, column) {\r\n if (column.ownerBand === bandColumnID || column.type === GROUP_COMMAND_COLUMN_NAME) {\r\n if (!column.isBand || !column.colspan) {\r\n if (!column.command || rowIndex < 1) {\r\n result.push(column)\r\n }\r\n } else {\r\n result.push.apply(result, getDataColumns(columns, rowIndex + 1, column.index))\r\n }\r\n }\r\n }));\r\n return result\r\n }(result));\r\n if (!notGroupedColumnsCount && that._columns.length) {\r\n result[rowCount].push({\r\n command: \"empty\"\r\n })\r\n }\r\n return result\r\n },\r\n getInvisibleColumns: function(columns, bandColumnIndex) {\r\n var that = this;\r\n var result = [];\r\n var hiddenColumnsByBand;\r\n columns = columns || that._columns;\r\n each(columns, (function(_, column) {\r\n if (column.ownerBand !== bandColumnIndex) {\r\n return\r\n }\r\n if (column.isBand) {\r\n if (!column.visible) {\r\n hiddenColumnsByBand = that.getChildrenByBandColumn(column.index)\r\n } else {\r\n hiddenColumnsByBand = that.getInvisibleColumns(that.getChildrenByBandColumn(column.index), column.index)\r\n }\r\n if (hiddenColumnsByBand.length) {\r\n result.push(column);\r\n result = result.concat(hiddenColumnsByBand)\r\n }\r\n return\r\n }\r\n if (!column.visible) {\r\n result.push(column)\r\n }\r\n }));\r\n return result\r\n },\r\n getChooserColumns: function(getAllColumns) {\r\n var columns = getAllColumns ? this.getColumns() : this.getInvisibleColumns();\r\n return grep(columns, (function(column) {\r\n return column.showInColumnChooser\r\n }))\r\n },\r\n allowMoveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {\r\n var columnIndex = getColumnIndexByVisibleIndex(this, fromVisibleIndex, sourceLocation);\r\n var sourceColumn = this._columns[columnIndex];\r\n if (sourceColumn && (sourceColumn.allowReordering || sourceColumn.allowGrouping || sourceColumn.allowHiding)) {\r\n if (sourceLocation === targetLocation) {\r\n if (\"columnChooser\" === sourceLocation) {\r\n return false\r\n }\r\n fromVisibleIndex = isObject(fromVisibleIndex) ? fromVisibleIndex.columnIndex : fromVisibleIndex;\r\n toVisibleIndex = isObject(toVisibleIndex) ? toVisibleIndex.columnIndex : toVisibleIndex;\r\n return fromVisibleIndex !== toVisibleIndex && fromVisibleIndex + 1 !== toVisibleIndex\r\n } else if (\"group\" === sourceLocation && \"columnChooser\" !== targetLocation || \"group\" === targetLocation) {\r\n return sourceColumn && sourceColumn.allowGrouping\r\n } else if (\"columnChooser\" === sourceLocation || \"columnChooser\" === targetLocation) {\r\n return sourceColumn && sourceColumn.allowHiding\r\n }\r\n return true\r\n }\r\n return false\r\n },\r\n moveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {\r\n var options = {};\r\n var prevGroupIndex;\r\n var fromIndex = getColumnIndexByVisibleIndex(this, fromVisibleIndex, sourceLocation);\r\n var toIndex = getColumnIndexByVisibleIndex(this, toVisibleIndex, targetLocation);\r\n var targetGroupIndex;\r\n if (fromIndex >= 0) {\r\n var column = this._columns[fromIndex];\r\n toVisibleIndex = isObject(toVisibleIndex) ? toVisibleIndex.columnIndex : toVisibleIndex;\r\n targetGroupIndex = toIndex >= 0 ? this._columns[toIndex].groupIndex : -1;\r\n if (isDefined(column.groupIndex) && \"group\" === sourceLocation) {\r\n if (targetGroupIndex > column.groupIndex) {\r\n targetGroupIndex--\r\n }\r\n if (\"group\" !== targetLocation) {\r\n options.groupIndex = void 0\r\n } else {\r\n prevGroupIndex = column.groupIndex;\r\n delete column.groupIndex;\r\n updateColumnGroupIndexes(this)\r\n }\r\n }\r\n if (\"group\" === targetLocation) {\r\n options.groupIndex = function(that, column, groupIndex) {\r\n var groupColumns = that.getGroupColumns();\r\n var i;\r\n if (groupIndex >= 0) {\r\n for (i = 0; i < groupColumns.length; i++) {\r\n if (groupColumns[i].groupIndex >= groupIndex) {\r\n groupColumns[i].groupIndex++\r\n }\r\n }\r\n } else {\r\n groupIndex = 0;\r\n for (i = 0; i < groupColumns.length; i++) {\r\n groupIndex = Math.max(groupIndex, groupColumns[i].groupIndex + 1)\r\n }\r\n }\r\n return groupIndex\r\n }(this, 0, targetGroupIndex);\r\n column.groupIndex = prevGroupIndex\r\n } else if (toVisibleIndex >= 0) {\r\n var targetColumn = this._columns[toIndex];\r\n if (!targetColumn || column.ownerBand !== targetColumn.ownerBand) {\r\n options.visibleIndex = MAX_SAFE_INTEGER\r\n } else if (isColumnFixed(this, column) ^ isColumnFixed(this, targetColumn)) {\r\n options.visibleIndex = MAX_SAFE_INTEGER\r\n } else {\r\n options.visibleIndex = targetColumn.visibleIndex\r\n }\r\n }\r\n var isVisible = \"columnChooser\" !== targetLocation;\r\n if (column.visible !== isVisible) {\r\n options.visible = isVisible\r\n }\r\n this.columnOption(column.index, options)\r\n }\r\n },\r\n changeSortOrder: function(columnIndex, sortOrder) {\r\n var options = {};\r\n var sortingOptions = this.option(\"sorting\");\r\n var sortingMode = sortingOptions && sortingOptions.mode;\r\n var needResetSorting = \"single\" === sortingMode || !sortOrder;\r\n var allowSorting = \"single\" === sortingMode || \"multiple\" === sortingMode;\r\n var column = this._columns[columnIndex];\r\n if (allowSorting && column && column.allowSorting) {\r\n if (needResetSorting && !isDefined(column.groupIndex)) {\r\n each(this._columns, (function(index) {\r\n if (index !== columnIndex && this.sortOrder) {\r\n if (!isDefined(this.groupIndex)) {\r\n delete this.sortOrder\r\n }\r\n delete this.sortIndex\r\n }\r\n }))\r\n }\r\n if (isSortOrderValid(sortOrder)) {\r\n if (column.sortOrder !== sortOrder) {\r\n options.sortOrder = sortOrder\r\n }\r\n } else if (\"none\" === sortOrder) {\r\n if (column.sortOrder) {\r\n options.sortIndex = void 0;\r\n options.sortOrder = void 0\r\n }\r\n } else {\r\n ! function(column) {\r\n if (\"ctrl\" === sortOrder) {\r\n if (!(\"sortOrder\" in column && \"sortIndex\" in column)) {\r\n return false\r\n }\r\n options.sortOrder = void 0;\r\n options.sortIndex = void 0\r\n } else if (isDefined(column.groupIndex) || isDefined(column.sortIndex)) {\r\n options.sortOrder = \"desc\" === column.sortOrder ? \"asc\" : \"desc\"\r\n } else {\r\n options.sortOrder = \"asc\"\r\n }\r\n return true\r\n }(column)\r\n }\r\n }\r\n this.columnOption(column.index, options)\r\n },\r\n getSortDataSourceParameters: function(useLocalSelector) {\r\n var sortColumns = [];\r\n var sort = [];\r\n each(this._columns, (function() {\r\n if ((this.dataField || this.selector || this.calculateCellValue) && isDefined(this.sortIndex) && !isDefined(this.groupIndex)) {\r\n sortColumns[this.sortIndex] = this\r\n }\r\n }));\r\n each(sortColumns, (function() {\r\n var sortOrder = this && this.sortOrder;\r\n if (isSortOrderValid(sortOrder)) {\r\n var sortItem = {\r\n selector: this.calculateSortValue || this.displayField || this.calculateDisplayValue || useLocalSelector && this.selector || this.dataField || this.calculateCellValue,\r\n desc: \"desc\" === this.sortOrder\r\n };\r\n if (this.sortingMethod) {\r\n sortItem.compare = this.sortingMethod.bind(this)\r\n }\r\n sort.push(sortItem)\r\n }\r\n }));\r\n return sort.length > 0 ? sort : null\r\n },\r\n getGroupDataSourceParameters: function(useLocalSelector) {\r\n var group = [];\r\n each(this.getGroupColumns(), (function() {\r\n var selector = this.calculateGroupValue || this.displayField || this.calculateDisplayValue || useLocalSelector && this.selector || this.dataField || this.calculateCellValue;\r\n if (selector) {\r\n var groupItem = {\r\n selector: selector,\r\n desc: \"desc\" === this.sortOrder,\r\n isExpanded: !!this.autoExpandGroup\r\n };\r\n if (this.sortingMethod) {\r\n groupItem.compare = this.sortingMethod.bind(this)\r\n }\r\n group.push(groupItem)\r\n }\r\n }));\r\n return group.length > 0 ? group : null\r\n },\r\n refresh: function(updateNewLookupsOnly) {\r\n var deferreds = [];\r\n each(this._columns, (function() {\r\n var lookup = this.lookup;\r\n if (lookup && !this.calculateDisplayValue) {\r\n if (updateNewLookupsOnly && lookup.valueMap) {\r\n return\r\n }\r\n if (lookup.update) {\r\n deferreds.push(lookup.update())\r\n }\r\n }\r\n }));\r\n return when.apply($, deferreds).done(resetColumnsCache.bind(null, this))\r\n },\r\n _updateColumnOptions: function(column, columnIndex) {\r\n column.selector = column.selector || function(data) {\r\n return column.calculateCellValue(data)\r\n };\r\n each([\"calculateSortValue\", \"calculateGroupValue\", \"calculateDisplayValue\"], (function(_, calculateCallbackName) {\r\n var calculateCallback = column[calculateCallbackName];\r\n if (isFunction(calculateCallback) && !calculateCallback.originalCallback) {\r\n column[calculateCallbackName] = function(data) {\r\n return calculateCallback.call(column, data)\r\n };\r\n column[calculateCallbackName].originalCallback = calculateCallback;\r\n column[calculateCallbackName].columnIndex = columnIndex\r\n }\r\n }));\r\n if (isString(column.calculateDisplayValue)) {\r\n column.displayField = column.calculateDisplayValue;\r\n column.calculateDisplayValue = compileGetter(column.displayField)\r\n }\r\n if (column.calculateDisplayValue) {\r\n column.displayValueMap = column.displayValueMap || {}\r\n }\r\n updateSerializers(column, column.dataType);\r\n var lookup = column.lookup;\r\n if (lookup) {\r\n updateSerializers(lookup, lookup.dataType)\r\n }\r\n var dataType = lookup ? lookup.dataType : column.dataType;\r\n if (dataType) {\r\n column.alignment = column.alignment || function(dataType, isRTL) {\r\n switch (dataType) {\r\n case \"number\":\r\n return \"right\";\r\n case \"boolean\":\r\n return \"center\";\r\n default:\r\n return getDefaultAlignment(isRTL)\r\n }\r\n }(dataType, this.option(\"rtlEnabled\"));\r\n column.format = column.format || gridCoreUtils.getFormatByDataType(dataType);\r\n column.customizeText = column.customizeText || getCustomizeTextByDataType(dataType);\r\n column.defaultFilterOperations = column.defaultFilterOperations || !lookup && DATATYPE_OPERATIONS[dataType] || [];\r\n if (!isDefined(column.filterOperations)) {\r\n setFilterOperationsAsDefaultValues(column)\r\n }\r\n column.defaultFilterOperation = column.filterOperations && column.filterOperations[0] || \"=\";\r\n column.showEditorAlways = isDefined(column.showEditorAlways) ? column.showEditorAlways : \"boolean\" === dataType && !column.cellTemplate\r\n }\r\n },\r\n updateColumnDataTypes: function(dataSource) {\r\n var that = this;\r\n var dateSerializationFormat = that.option(\"dateSerializationFormat\");\r\n var firstItems = that._getFirstItems(dataSource);\r\n var isColumnDataTypesUpdated = false;\r\n each(that._columns, (function(index, column) {\r\n var i;\r\n var value;\r\n var dataType;\r\n var lookupDataType;\r\n var valueDataType;\r\n var lookup = column.lookup;\r\n if (gridCoreUtils.isDateType(column.dataType) && void 0 === column.serializationFormat) {\r\n column.serializationFormat = dateSerializationFormat\r\n }\r\n if (lookup && gridCoreUtils.isDateType(lookup.dataType) && void 0 === column.serializationFormat) {\r\n lookup.serializationFormat = dateSerializationFormat\r\n }\r\n if (column.calculateCellValue && firstItems.length) {\r\n if (!column.dataType || lookup && !lookup.dataType) {\r\n for (i = 0; i < firstItems.length; i++) {\r\n value = column.calculateCellValue(firstItems[i]);\r\n if (!column.dataType) {\r\n valueDataType = getValueDataType(value);\r\n dataType = dataType || valueDataType;\r\n if (dataType && valueDataType && dataType !== valueDataType) {\r\n dataType = \"string\"\r\n }\r\n }\r\n if (lookup && !lookup.dataType) {\r\n valueDataType = getValueDataType(gridCoreUtils.getDisplayValue(column, value, firstItems[i]));\r\n lookupDataType = lookupDataType || valueDataType;\r\n if (lookupDataType && valueDataType && lookupDataType !== valueDataType) {\r\n lookupDataType = \"string\"\r\n }\r\n }\r\n }\r\n if (dataType || lookupDataType) {\r\n if (dataType) {\r\n column.dataType = dataType\r\n }\r\n if (lookup && lookupDataType) {\r\n lookup.dataType = lookupDataType\r\n }\r\n isColumnDataTypesUpdated = true\r\n }\r\n }\r\n if (void 0 === column.serializationFormat || lookup && void 0 === lookup.serializationFormat) {\r\n for (i = 0; i < firstItems.length; i++) {\r\n value = column.calculateCellValue(firstItems[i], true);\r\n if (void 0 === column.serializationFormat) {\r\n column.serializationFormat = getSerializationFormat(column.dataType, value)\r\n }\r\n if (lookup && void 0 === lookup.serializationFormat) {\r\n lookup.serializationFormat = getSerializationFormat(lookup.dataType, lookup.calculateCellValue(value, true))\r\n }\r\n }\r\n }\r\n }\r\n that._updateColumnOptions(column, index)\r\n }));\r\n return isColumnDataTypesUpdated\r\n },\r\n _customizeColumns: function(columns) {\r\n var customizeColumns = this.option(\"customizeColumns\");\r\n if (customizeColumns) {\r\n var hasOwnerBand = columns.some((function(column) {\r\n return isObject(column.ownerBand)\r\n }));\r\n if (hasOwnerBand) {\r\n updateIndexes(this)\r\n }\r\n customizeColumns(columns);\r\n assignColumns(this, createColumnsFromOptions(this, columns))\r\n }\r\n },\r\n updateColumns: function(dataSource, forceApplying) {\r\n if (!forceApplying) {\r\n this.updateSortingGrouping(dataSource)\r\n }\r\n if (!dataSource || dataSource.isLoaded()) {\r\n var sortParameters = dataSource ? dataSource.sort() || [] : this.getSortDataSourceParameters();\r\n var groupParameters = dataSource ? dataSource.group() || [] : this.getGroupDataSourceParameters();\r\n var filterParameters = null === dataSource || void 0 === dataSource ? void 0 : dataSource.lastLoadOptions().filter;\r\n this._customizeColumns(this._columns);\r\n updateIndexes(this);\r\n var columns = this._columns;\r\n return when(this.refresh(true)).always(() => {\r\n if (this._columns !== columns) {\r\n return\r\n }\r\n this._updateChanges(dataSource, {\r\n sorting: sortParameters,\r\n grouping: groupParameters,\r\n filtering: filterParameters\r\n });\r\n fireColumnsChanged(this)\r\n })\r\n }\r\n },\r\n _updateChanges: function(dataSource, parameters) {\r\n if (dataSource) {\r\n this.updateColumnDataTypes(dataSource);\r\n this._dataSourceApplied = true\r\n }\r\n if (!gridCoreUtils.equalSortParameters(parameters.sorting, this.getSortDataSourceParameters())) {\r\n updateColumnChanges(this, \"sorting\")\r\n }\r\n if (!gridCoreUtils.equalSortParameters(parameters.grouping, this.getGroupDataSourceParameters())) {\r\n updateColumnChanges(this, \"grouping\")\r\n }\r\n var dataController = this.getController(\"data\");\r\n if (dataController && !gridCoreUtils.equalFilterParameters(parameters.filtering, dataController.getCombinedFilter())) {\r\n updateColumnChanges(this, \"filtering\")\r\n }\r\n updateColumnChanges(this, \"columns\")\r\n },\r\n updateSortingGrouping: function(dataSource, fromDataSource) {\r\n var that = this;\r\n var sortParameters;\r\n var isColumnsChanged;\r\n var updateSortGroupParameterIndexes = function(columns, sortParameters, indexParameterName) {\r\n each(columns, (function(index, column) {\r\n delete column[indexParameterName];\r\n if (sortParameters) {\r\n for (var i = 0; i < sortParameters.length; i++) {\r\n var selector = sortParameters[i].selector;\r\n var isExpanded = sortParameters[i].isExpanded;\r\n if (selector === column.dataField || selector === column.name || selector === column.selector || selector === column.calculateCellValue || selector === column.calculateGroupValue || selector === column.calculateDisplayValue) {\r\n column.sortOrder = column.sortOrder || (sortParameters[i].desc ? \"desc\" : \"asc\");\r\n if (void 0 !== isExpanded) {\r\n column.autoExpandGroup = isExpanded\r\n }\r\n column[indexParameterName] = i;\r\n break\r\n }\r\n }\r\n }\r\n }))\r\n };\r\n if (dataSource) {\r\n sortParameters = gridCoreUtils.normalizeSortingInfo(dataSource.sort());\r\n var groupParameters = gridCoreUtils.normalizeSortingInfo(dataSource.group());\r\n var columnsGroupParameters = that.getGroupDataSourceParameters();\r\n var columnsSortParameters = that.getSortDataSourceParameters();\r\n if (!that._columns.length) {\r\n each(groupParameters, (function(index, group) {\r\n that._columns.push(group.selector)\r\n }));\r\n each(sortParameters, (function(index, sort) {\r\n that._columns.push(sort.selector)\r\n }));\r\n assignColumns(that, createColumnsFromOptions(that, that._columns))\r\n }\r\n if ((fromDataSource || !columnsGroupParameters && !that._hasUserState) && !gridCoreUtils.equalSortParameters(groupParameters, columnsGroupParameters)) {\r\n updateSortGroupParameterIndexes(that._columns, groupParameters, \"groupIndex\");\r\n if (fromDataSource) {\r\n updateColumnChanges(that, \"grouping\");\r\n isColumnsChanged = true\r\n }\r\n }\r\n if ((fromDataSource || !columnsSortParameters && !that._hasUserState) && !gridCoreUtils.equalSortParameters(sortParameters, columnsSortParameters)) {\r\n updateSortGroupParameterIndexes(that._columns, sortParameters, \"sortIndex\");\r\n if (fromDataSource) {\r\n updateColumnChanges(that, \"sorting\");\r\n isColumnsChanged = true\r\n }\r\n }\r\n if (isColumnsChanged) {\r\n fireColumnsChanged(that)\r\n }\r\n }\r\n },\r\n updateFilter: function(filter, remoteFiltering, columnIndex, filterValue) {\r\n if (!Array.isArray(filter)) {\r\n return filter\r\n }\r\n filter = extend([], filter);\r\n columnIndex = void 0 !== filter.columnIndex ? filter.columnIndex : columnIndex;\r\n filterValue = void 0 !== filter.filterValue ? filter.filterValue : filterValue;\r\n if (isString(filter[0]) && \"!\" !== filter[0]) {\r\n var column = this.columnOption(filter[0]);\r\n if (remoteFiltering) {\r\n if (config().forceIsoDateParsing && column && column.serializeValue && filter.length > 1) {\r\n filter[filter.length - 1] = column.serializeValue(filter[filter.length - 1], \"filter\")\r\n }\r\n } else if (column && column.selector) {\r\n filter[0] = column.selector;\r\n filter[0].columnIndex = column.index\r\n }\r\n } else if (isFunction(filter[0])) {\r\n filter[0].columnIndex = columnIndex;\r\n filter[0].filterValue = filterValue\r\n }\r\n for (var i = 0; i < filter.length; i++) {\r\n filter[i] = this.updateFilter(filter[i], remoteFiltering, columnIndex, filterValue)\r\n }\r\n return filter\r\n },\r\n columnCount: function() {\r\n return this._columns ? this._columns.length : 0\r\n },\r\n columnOption: function(identifier, option, value, notFireEvent) {\r\n var that = this;\r\n var columns = that._columns.concat(that._commandColumns);\r\n var column = findColumn(columns, identifier);\r\n if (column) {\r\n if (1 === arguments.length) {\r\n return extend({}, column)\r\n }\r\n if (isString(option)) {\r\n if (2 === arguments.length) {\r\n return columnOptionCore(that, column, option)\r\n } else {\r\n columnOptionCore(that, column, option, value, notFireEvent)\r\n }\r\n } else if (isObject(option)) {\r\n each(option, (function(optionName, value) {\r\n columnOptionCore(that, column, optionName, value, notFireEvent)\r\n }))\r\n }\r\n fireColumnsChanged(that)\r\n }\r\n },\r\n clearSorting: function() {\r\n var columnCount = this.columnCount();\r\n this.beginUpdate();\r\n for (var i = 0; i < columnCount; i++) {\r\n this.columnOption(i, \"sortOrder\", void 0)\r\n }\r\n this.endUpdate()\r\n },\r\n clearGrouping: function() {\r\n var columnCount = this.columnCount();\r\n this.beginUpdate();\r\n for (var i = 0; i < columnCount; i++) {\r\n this.columnOption(i, \"groupIndex\", void 0)\r\n }\r\n this.endUpdate()\r\n },\r\n getVisibleIndex: function(index, rowIndex) {\r\n var columns = this.getVisibleColumns(rowIndex);\r\n for (var i = columns.length - 1; i >= 0; i--) {\r\n if (columns[i].index === index) {\r\n return i\r\n }\r\n }\r\n return -1\r\n },\r\n getVisibleIndexByColumn: function(column, rowIndex) {\r\n var visibleColumns = this.getVisibleColumns(rowIndex);\r\n var visibleColumn = visibleColumns.filter(col => col.index === column.index && col.command === column.command)[0];\r\n return visibleColumns.indexOf(visibleColumn)\r\n },\r\n getVisibleColumnIndex: function(id, rowIndex) {\r\n var index = this.columnOption(id, \"index\");\r\n return this.getVisibleIndex(index, rowIndex)\r\n },\r\n addColumn: function(options) {\r\n var column = createColumn(this, options);\r\n var index = this._columns.length;\r\n this._columns.push(column);\r\n if (column.isBand) {\r\n this._columns = createColumnsFromOptions(this, this._columns);\r\n column = this._columns[index]\r\n }\r\n column.added = options;\r\n updateIndexes(this, column);\r\n this.updateColumns(this._dataSource);\r\n this._checkColumns()\r\n },\r\n deleteColumn: function(id) {\r\n var column = this.columnOption(id);\r\n if (column && column.index >= 0) {\r\n columns = this._columns, void columns.forEach(column => {\r\n if (isDefined(column.ownerBand)) {\r\n column.ownerBand = columns[column.ownerBand]\r\n }\r\n });\r\n this._columns.splice(column.index, 1);\r\n if (column.isBand) {\r\n var childIndexes = this.getChildrenByBandColumn(column.index).map(column => column.index);\r\n this._columns = this._columns.filter(column => childIndexes.indexOf(column.index) < 0)\r\n }\r\n updateIndexes(this);\r\n this.updateColumns(this._dataSource)\r\n }\r\n var columns\r\n },\r\n addCommandColumn: function(options) {\r\n var commandColumn = this._commandColumns.filter(column => column.command === options.command)[0];\r\n if (!commandColumn) {\r\n commandColumn = options;\r\n this._commandColumns.push(commandColumn)\r\n }\r\n },\r\n getUserState: function() {\r\n var columns = this._columns;\r\n var result = [];\r\n var i;\r\n\r\n function handleStateField(index, value) {\r\n if (void 0 !== columns[i][value]) {\r\n result[i][value] = columns[i][value]\r\n }\r\n }\r\n for (i = 0; i < columns.length; i++) {\r\n result[i] = {};\r\n each(USER_STATE_FIELD_NAMES, handleStateField)\r\n }\r\n return result\r\n },\r\n setName: function(column) {\r\n var dataField = column.dataField;\r\n if (!isDefined(column.name) && isDefined(dataField)) {\r\n column.name = dataField\r\n }\r\n },\r\n setUserState: function(state) {\r\n var dataSource = this._dataSource;\r\n var ignoreColumnOptionNames = this.option(\"stateStoring.ignoreColumnOptionNames\");\r\n null === state || void 0 === state ? void 0 : state.forEach(this.setName);\r\n if (!ignoreColumnOptionNames) {\r\n ignoreColumnOptionNames = [];\r\n var commonColumnSettings = this.getCommonSettings();\r\n if (!this.option(\"columnChooser.enabled\")) {\r\n ignoreColumnOptionNames.push(\"visible\")\r\n }\r\n if (\"none\" === this.option(\"sorting.mode\")) {\r\n ignoreColumnOptionNames.push(\"sortIndex\", \"sortOrder\")\r\n }\r\n if (!commonColumnSettings.allowGrouping) {\r\n ignoreColumnOptionNames.push(\"groupIndex\")\r\n }\r\n if (!commonColumnSettings.allowFixing) {\r\n ignoreColumnOptionNames.push(\"fixed\", \"fixedPosition\")\r\n }\r\n if (!commonColumnSettings.allowResizing) {\r\n ignoreColumnOptionNames.push(\"width\", \"visibleWidth\")\r\n }\r\n var isFilterPanelHidden = !this.option(\"filterPanel.visible\");\r\n if (!this.option(\"filterRow.visible\") && isFilterPanelHidden) {\r\n ignoreColumnOptionNames.push(\"filterValue\", \"selectedFilterOperation\")\r\n }\r\n if (!this.option(\"headerFilter.visible\") && isFilterPanelHidden) {\r\n ignoreColumnOptionNames.push(\"filterValues\", \"filterType\")\r\n }\r\n }\r\n this._columnsUserState = state;\r\n this._ignoreColumnOptionNames = ignoreColumnOptionNames;\r\n this._hasUserState = !!state;\r\n updateColumnChanges(this, \"filtering\");\r\n this.init();\r\n if (dataSource) {\r\n dataSource.sort(this.getSortDataSourceParameters());\r\n dataSource.group(this.getGroupDataSourceParameters())\r\n }\r\n },\r\n _checkColumns: function() {\r\n var usedNames = {};\r\n var hasEditableColumnWithoutName = false;\r\n var duplicatedNames = [];\r\n this._columns.forEach(column => {\r\n var _column$columns;\r\n var name = column.name;\r\n var isBand = null === (_column$columns = column.columns) || void 0 === _column$columns ? void 0 : _column$columns.length;\r\n var isEditable = column.allowEditing && (column.dataField || column.setCellValue) && !isBand;\r\n if (name) {\r\n if (usedNames[name]) {\r\n duplicatedNames.push('\"'.concat(name, '\"'))\r\n }\r\n usedNames[name] = true\r\n } else if (isEditable) {\r\n hasEditableColumnWithoutName = true\r\n }\r\n });\r\n if (duplicatedNames.length) {\r\n errors.log(\"E1059\", duplicatedNames.join(\", \"))\r\n }\r\n if (hasEditableColumnWithoutName) {\r\n errors.log(\"E1060\")\r\n }\r\n },\r\n _createCalculatedColumnOptions: function(columnOptions, bandColumn) {\r\n var calculatedColumnOptions = {};\r\n var dataField = columnOptions.dataField;\r\n if (Array.isArray(columnOptions.columns) && columnOptions.columns.length || columnOptions.isBand) {\r\n calculatedColumnOptions.isBand = true;\r\n dataField = null\r\n }\r\n if (dataField) {\r\n if (isString(dataField)) {\r\n var getter = compileGetter(dataField);\r\n calculatedColumnOptions = {\r\n caption: captionize(dataField),\r\n calculateCellValue: function(data, skipDeserialization) {\r\n var value = getter(data);\r\n return this.deserializeValue && !skipDeserialization ? this.deserializeValue(value) : value\r\n },\r\n setCellValue: defaultSetCellValue,\r\n parseValue: function(text) {\r\n var result;\r\n var parsedValue;\r\n if (\"number\" === this.dataType) {\r\n if (isString(text) && this.format) {\r\n parsedValue = numberLocalization.parse(text);\r\n if (isNumeric(parsedValue)) {\r\n result = parsedValue\r\n }\r\n } else if (isDefined(text) && isNumeric(text)) {\r\n result = Number(text)\r\n }\r\n } else if (\"boolean\" === this.dataType) {\r\n if (text === this.trueText) {\r\n result = true\r\n } else if (text === this.falseText) {\r\n result = false\r\n }\r\n } else if (gridCoreUtils.isDateType(this.dataType)) {\r\n parsedValue = dateLocalization.parse(text, this.format);\r\n if (parsedValue) {\r\n result = parsedValue\r\n }\r\n } else {\r\n result = text\r\n }\r\n return result\r\n }\r\n }\r\n }\r\n calculatedColumnOptions.allowFiltering = true\r\n } else {\r\n calculatedColumnOptions.allowFiltering = !!columnOptions.calculateFilterExpression\r\n }\r\n calculatedColumnOptions.calculateFilterExpression = function() {\r\n return filterUtils.defaultCalculateFilterExpression.apply(this, arguments)\r\n };\r\n calculatedColumnOptions.createFilterExpression = function(filterValue) {\r\n var result;\r\n if (this.calculateFilterExpression) {\r\n result = this.calculateFilterExpression.apply(this, arguments)\r\n }\r\n if (isFunction(result)) {\r\n result = [result, \"=\", true]\r\n }\r\n if (result) {\r\n result.columnIndex = this.index;\r\n result.filterValue = filterValue\r\n }\r\n return result\r\n };\r\n if (!dataField || !isString(dataField)) {\r\n extend(true, calculatedColumnOptions, {\r\n allowSorting: false,\r\n allowGrouping: false,\r\n calculateCellValue: function() {\r\n return null\r\n }\r\n })\r\n }\r\n if (bandColumn) {\r\n calculatedColumnOptions.allowFixing = false\r\n }\r\n if (columnOptions.dataType) {\r\n calculatedColumnOptions.userDataType = columnOptions.dataType\r\n }\r\n if (columnOptions.selectedFilterOperation && !(\"defaultSelectedFilterOperation\" in calculatedColumnOptions)) {\r\n calculatedColumnOptions.defaultSelectedFilterOperation = columnOptions.selectedFilterOperation\r\n }\r\n if (columnOptions.lookup) {\r\n calculatedColumnOptions.lookup = {\r\n calculateCellValue: function(value, skipDeserialization) {\r\n if (this.valueExpr) {\r\n value = this.valueMap && this.valueMap[value]\r\n }\r\n return this.deserializeValue && !skipDeserialization ? this.deserializeValue(value) : value\r\n },\r\n updateValueMap: function() {\r\n this.valueMap = {};\r\n if (this.items) {\r\n var calculateValue = compileGetter(this.valueExpr);\r\n var calculateDisplayValue = compileGetter(this.displayExpr);\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n var displayValue = calculateDisplayValue(item);\r\n this.valueMap[calculateValue(item)] = displayValue;\r\n this.dataType = this.dataType || getValueDataType(displayValue)\r\n }\r\n }\r\n },\r\n update: function() {\r\n var that = this;\r\n var dataSource = that.dataSource;\r\n if (dataSource) {\r\n if (isFunction(dataSource) && !variableWrapper.isWrapped(dataSource)) {\r\n dataSource = dataSource({})\r\n }\r\n if (isPlainObject(dataSource) || dataSource instanceof Store || Array.isArray(dataSource)) {\r\n if (that.valueExpr) {\r\n var dataSourceOptions = normalizeDataSourceOptions(dataSource);\r\n dataSourceOptions.paginate = false;\r\n dataSource = new DataSource(dataSourceOptions);\r\n return dataSource.load().done((function(data) {\r\n that.items = data;\r\n that.updateValueMap && that.updateValueMap()\r\n }))\r\n }\r\n } else {\r\n errors.log(\"E1016\")\r\n }\r\n } else {\r\n that.updateValueMap && that.updateValueMap()\r\n }\r\n }\r\n }\r\n }\r\n calculatedColumnOptions.resizedCallbacks = Callbacks();\r\n if (columnOptions.resized) {\r\n calculatedColumnOptions.resizedCallbacks.add(columnOptions.resized.bind(columnOptions))\r\n }\r\n each(calculatedColumnOptions, (function(optionName) {\r\n if (isFunction(calculatedColumnOptions[optionName]) && 0 !== optionName.indexOf(\"default\")) {\r\n var defaultOptionName = \"default\" + optionName.charAt(0).toUpperCase() + optionName.substr(1);\r\n calculatedColumnOptions[defaultOptionName] = calculatedColumnOptions[optionName]\r\n }\r\n }));\r\n return calculatedColumnOptions\r\n },\r\n getRowCount: function() {\r\n this._rowCount = this._rowCount || function(that) {\r\n var rowCount = 1;\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var columnParentByIndex = bandColumnsCache.columnParentByIndex;\r\n that._columns.forEach((function(column) {\r\n var parents = getParentBandColumns(column.index, columnParentByIndex);\r\n var invisibleParents = parents.filter((function(column) {\r\n return !column.visible\r\n }));\r\n if (column.visible && !invisibleParents.length) {\r\n rowCount = Math.max(rowCount, parents.length + 1)\r\n }\r\n }));\r\n return rowCount\r\n }(this);\r\n return this._rowCount\r\n },\r\n getRowIndex: function(columnIndex, alwaysGetRowIndex) {\r\n var column = this._columns[columnIndex];\r\n var bandColumnsCache = this.getBandColumnsCache();\r\n return column && (alwaysGetRowIndex || column.visible && !(column.command || isDefined(column.groupIndex))) ? getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex).length : 0\r\n },\r\n getChildrenByBandColumn: function(bandColumnIndex, onlyVisibleDirectChildren) {\r\n var bandColumnsCache = this.getBandColumnsCache();\r\n var result = _getChildrenByBandColumn(bandColumnIndex, bandColumnsCache.columnChildrenByIndex, !onlyVisibleDirectChildren);\r\n if (onlyVisibleDirectChildren) {\r\n return result.filter((function(column) {\r\n return column.visible && !column.command\r\n })).sort((function(column1, column2) {\r\n return column1.visibleIndex - column2.visibleIndex\r\n }))\r\n }\r\n return result\r\n },\r\n isParentBandColumn: function(columnIndex, bandColumnIndex) {\r\n var result = false;\r\n var column = this._columns[columnIndex];\r\n var bandColumnsCache = this.getBandColumnsCache();\r\n var parentBandColumns = column && getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex);\r\n if (parentBandColumns) {\r\n each(parentBandColumns, (function(_, bandColumn) {\r\n if (bandColumn.index === bandColumnIndex) {\r\n result = true;\r\n return false\r\n }\r\n }))\r\n }\r\n return result\r\n },\r\n isParentColumnVisible: function(columnIndex) {\r\n var result = true;\r\n var bandColumnsCache = this.getBandColumnsCache();\r\n var bandColumns = columnIndex >= 0 && getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex);\r\n bandColumns && each(bandColumns, (function(_, bandColumn) {\r\n result = result && bandColumn.visible;\r\n return result\r\n }));\r\n return result\r\n },\r\n getColumnId: function(column) {\r\n if (column.command && column.type === GROUP_COMMAND_COLUMN_NAME) {\r\n if (isCustomCommandColumn(this, column)) {\r\n return \"type:\" + column.type\r\n }\r\n return \"command:\" + column.command\r\n }\r\n return column.index\r\n },\r\n getCustomizeTextByDataType: getCustomizeTextByDataType,\r\n getHeaderContentAlignment: function(columnAlignment) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n if (rtlEnabled) {\r\n return \"left\" === columnAlignment ? \"right\" : \"left\"\r\n }\r\n return columnAlignment\r\n }\r\n }\r\n }())\r\n }\r\n};\r\n","export const InfernoEffectHost = {\n lockCount: 0,\n lock() {\n this.lockCount++;\n },\n callbacks: [],\n callEffects() {\n this.lockCount--;\n if (this.lockCount < 0) {\n throw 'Unexpected Effect Call';\n }\n if (this.lockCount === 0) {\n const effects = this.callbacks;\n this.callbacks = [];\n effects.forEach((callback) => callback());\n }\n },\n};\n","import { Component, findDOMfromVNode } from 'inferno';\nimport { InfernoEffectHost } from './effect_host';\nconst areObjectsEqual = (firstObject, secondObject) => {\n const bothAreObjects = firstObject instanceof Object && secondObject instanceof Object;\n if (!bothAreObjects) {\n return firstObject === secondObject;\n }\n const firstObjectKeys = Object.keys(firstObject);\n const secondObjectKeys = Object.keys(secondObject);\n if (firstObjectKeys.length !== secondObjectKeys.length) {\n return false;\n }\n const hasDifferentElement = firstObjectKeys.some((key) => firstObject[key] !== secondObject[key]);\n return !hasDifferentElement;\n};\nexport class BaseInfernoComponent extends Component {\n constructor() {\n super(...arguments);\n this._pendingContext = this.context;\n }\n componentWillReceiveProps(_, context) {\n this._pendingContext = context !== null && context !== void 0 ? context : {};\n }\n shouldComponentUpdate(nextProps, nextState) {\n return (!areObjectsEqual(this.props, nextProps)\n || !areObjectsEqual(this.state, nextState)\n || !areObjectsEqual(this.context, this._pendingContext));\n }\n}\nexport class InfernoComponent extends BaseInfernoComponent {\n constructor() {\n super(...arguments);\n this._effects = [];\n }\n createEffects() {\n return [];\n }\n updateEffects() { }\n componentWillMount() {\n InfernoEffectHost.lock();\n }\n componentWillUpdate() {\n InfernoEffectHost.lock();\n }\n componentDidMount() {\n InfernoEffectHost.callbacks.push(() => { this._effects = this.createEffects(); });\n InfernoEffectHost.callEffects();\n }\n componentDidUpdate() {\n InfernoEffectHost.callbacks.push(() => this.updateEffects());\n InfernoEffectHost.callEffects();\n }\n destroyEffects() {\n this._effects.forEach((e) => e.dispose());\n }\n componentWillUnmount() {\n this.destroyEffects();\n }\n}\nexport class InfernoWrapperComponent extends InfernoComponent {\n constructor() {\n super(...arguments);\n this.vDomElement = null;\n this.vDomPreviousClasses = [];\n this.vDomRemovedClasses = [];\n this.vDomAddedClasses = [];\n }\n vDomUpdateClasses() {\n var _a;\n const currentClasses = ((_a = this.vDomElement) === null || _a === void 0 ? void 0 : _a.className.length) ? this.vDomElement.className.split(' ')\n : [];\n const addedClasses = currentClasses.filter((className) => this.vDomPreviousClasses.indexOf(className) < 0);\n const removedClasses = this.vDomPreviousClasses.filter((className) => currentClasses.indexOf(className) < 0);\n addedClasses.forEach((value) => {\n const indexInRemoved = this.vDomRemovedClasses.indexOf(value);\n if (indexInRemoved > -1) {\n this.vDomRemovedClasses.splice(indexInRemoved, 1);\n }\n else {\n this.vDomAddedClasses.push(value);\n }\n });\n removedClasses.forEach((value) => {\n const indexInAdded = this.vDomAddedClasses.indexOf(value);\n if (indexInAdded > -1) {\n this.vDomAddedClasses.splice(indexInAdded, 1);\n }\n else {\n this.vDomRemovedClasses.push(value);\n }\n });\n }\n componentDidMount() {\n var _a;\n super.componentDidMount();\n this.vDomElement = findDOMfromVNode(this.$LI, true);\n this.vDomPreviousClasses = ((_a = this.vDomElement) === null || _a === void 0 ? void 0 : _a.className.length) ? this.vDomElement.className.split(' ')\n : [];\n }\n componentDidUpdate() {\n var _a;\n super.componentDidUpdate();\n const element = this.vDomElement;\n if (element !== null) {\n this.vDomAddedClasses.forEach((className) => element.classList.add(className));\n this.vDomRemovedClasses.forEach((className) => element.classList.remove(className));\n this.vDomPreviousClasses = ((_a = this.vDomElement) === null || _a === void 0 ? void 0 : _a.className.length) ? this.vDomElement.className.split(' ')\n : [];\n }\n }\n shouldComponentUpdate(nextProps, nextState) {\n const shouldUpdate = super.shouldComponentUpdate(nextProps, nextState);\n if (shouldUpdate) {\n this.vDomUpdateClasses();\n }\n return shouldUpdate;\n }\n}\n","export const createContext = function (defaultValue) {\n return defaultValue;\n};\n","export class InfernoEffect {\n constructor(effect, dependency) {\n this.effect = effect;\n this.dependency = dependency;\n this.destroy = effect();\n }\n update(dependency) {\n if (!dependency || dependency.some((d, i) => this.dependency[i] !== d)) {\n this.dispose();\n this.destroy = this.effect();\n }\n if (dependency) {\n this.dependency = dependency;\n }\n }\n dispose() {\n if (this.destroy) {\n this.destroy();\n }\n }\n}\n","import { createPortal } from 'inferno';\nexport const Portal = ({ container, children }) => {\n if (container) {\n return createPortal(children, container);\n }\n return null;\n};\n","const NUMBER_STYLES = [\n 'animation-iteration-count',\n 'border-image-outset',\n 'border-image-slice',\n 'border-image-width',\n 'box-flex',\n 'box-flex-group',\n 'box-ordinal-group',\n 'column-count',\n 'fill-opacity',\n 'flex',\n 'flex-grow',\n 'flex-negative',\n 'flex-order',\n 'flex-positive',\n 'flex-shrink',\n 'flood-opacity',\n 'font-weight',\n 'grid-column',\n 'grid-row',\n 'line-clamp',\n 'line-height',\n 'opacity',\n 'order',\n 'orphans',\n 'stop-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke-width',\n 'tab-size',\n 'widows',\n 'z-index',\n 'zoom',\n];\nconst uppercasePattern = /[A-Z]/g;\nconst kebabCase = (str) => str.replace(uppercasePattern, '-$&').toLowerCase();\nconst isNumeric = (value) => {\n if (typeof value === 'number')\n return true;\n return !isNaN(Number(value));\n};\nconst getNumberStyleValue = (style, value) => (NUMBER_STYLES.indexOf(style) > -1 ? value : `${value}px`);\nexport const normalizeStyles = (styles) => {\n if (!(styles instanceof Object))\n return undefined;\n return Object.keys(styles).reduce((result, key) => {\n const value = styles[key];\n const kebabString = kebabCase(key);\n result[kebabString] = isNumeric(value)\n ? getNumberStyleValue(kebabString, value)\n : value;\n return result;\n }, {});\n};\n","/*!\n\nJSZip v3.7.0 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/master/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(o,a,f){function u(r,e){if(!a[r]){if(!o[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(d)return d(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=a[r]={exports:{}};o[r][0].call(i.exports,function(e){var t=o[r][1][e];return u(t||e)},i,i.exports,s,o,a,f)}return a[r].exports}for(var d=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,o=1>6:64,a=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(a++)))>>2,n=(3&s)<<6|(o=p.indexOf(e.charAt(a++))),u[f++]=t,64!==s&&(u[f++]=r),64!==o&&(u[f++]=n);return u}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),o=e(\"./stream/DataLengthProbe\");function a(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}a.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new o(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},a.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new o(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new o(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=a},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(e){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\"),o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r){var n=o,i=0+r;e^=-1;for(var s=0;s>>8^n[255&(e^t[s])];return-1^e}(0|t,e,e.length):function(e,t,r){var n=o,i=0+r;e^=-1;for(var s=0;s>>8^n[255&(e^t.charCodeAt(s))];return-1^e}(0|t,e,e.length):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),o=e(\"./stream/GenericWorker\"),a=n?\"uint8array\":\"array\";function f(e,t){o.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(f,o),f.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(a,e.data),!1)},f.prototype.flush=function(){o.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},f.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this._pako=null},f.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new f(\"Deflate\",e)},r.uncompressWorker=function(){return new f(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function O(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function i(e,t,r,n,i,s){var o,a,f=e.file,u=e.compression,d=s!==D.utf8encode,h=I.transformTo(\"string\",s(f.name)),l=I.transformTo(\"string\",D.utf8encode(f.name)),c=f.comment,p=I.transformTo(\"string\",s(c)),m=I.transformTo(\"string\",D.utf8encode(c)),_=l.length!==f.name.length,w=m.length!==c.length,v=\"\",g=\"\",y=\"\",b=f.dir,k=f.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),d||!_&&!w||(S|=2048);var E,z=0,C=0;b&&(z|=16),\"UNIX\"===i?(C=798,z|=((E=f.unixPermissions)||(E=b?16893:33204),(65535&E)<<16)):(C=20,z|=63&(f.dosPermissions||0)),o=k.getUTCHours(),o<<=6,o|=k.getUTCMinutes(),o<<=5,o|=k.getUTCSeconds()/2,a=k.getUTCFullYear()-1980,a<<=4,a|=k.getUTCMonth()+1,a<<=5,a|=k.getUTCDate(),_&&(v+=\"up\"+O((g=O(1,1)+O(B(h),4)+l).length,2)+g),w&&(v+=\"uc\"+O((y=O(1,1)+O(B(p),4)+m).length,2)+y);var A=\"\";return A+=\"\\n\\0\",A+=O(S,2),A+=u.magic,A+=O(o,2),A+=O(a,2),A+=O(x.crc32,4),A+=O(x.compressedSize,4),A+=O(x.uncompressedSize,4),A+=O(h.length,2),A+=O(v.length,2),{fileRecord:T.LOCAL_FILE_HEADER+A+h+v,dirRecord:T.CENTRAL_FILE_HEADER+O(C,2)+A+O(p.length,2)+\"\\0\\0\\0\\0\"+O(z,4)+O(n,4)+h+v+p}}var I=e(\"../utils\"),s=e(\"../stream/GenericWorker\"),D=e(\"../utf8\"),B=e(\"../crc32\"),T=e(\"../signature\");function n(e,t,r,n){s.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(n,s),n.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,s.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},n.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=i(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},n.prototype.closedSource=function(e){this.accumulate=!1;var t,r=this.streamFiles&&!e.file.dir,n=i(e,r,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(n.dirRecord),r)this.push({data:(t=e,T.DATA_DESCRIPTOR+O(t.crc32,4)+O(t.compressedSize,4)+O(t.uncompressedSize,4)),meta:{percent:100}});else for(this.push({data:n.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},n.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(e){},lastIndexOfSignature:function(e){},readAndCheckSignature:function(e){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),o=e(\"./StringReader\"),a=e(\"./NodeBufferReader\"),f=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new a(e):i.uint8array?new f(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new o(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var u=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),d=e(\"../base64\"),n=e(\"../support\"),o=e(\"../external\"),a=null;if(n.nodestream)try{a=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function f(e,t,r){var n=t;switch(t){case\"blob\":case\"arraybuffer\":n=\"uint8array\";break;case\"base64\":n=\"string\"}try{this._internalType=n,this._outputType=t,this._mimeType=r,u.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s(\"error\"),this._worker.error(e)}}f.prototype={accumulate:function(e){return a=this,f=e,new o.Promise(function(t,r){var n=[],i=a._internalType,s=a._outputType,o=a._mimeType;a.on(\"data\",function(e,t){n.push(e),f&&f(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return u.newBlob(u.transformTo(\"arraybuffer\",t),r);case\"base64\":return d.encode(t);default:return u.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return f.nodebuffer?a.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,o=new Array(2*s);for(t=r=0;t>10&1023,o[r++]=56320|1023&n)}return o.length!==r&&(o.subarray?o=o.subarray(0,r):o.length=r),a.applyFromCharCode(o)}(e=a.transformTo(f.uint8array?\"uint8array\":\"array\",e))},a.inherits(o,n),o.prototype.processChunk=function(e){var t=a.transformTo(f.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(f.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(f.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},o.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=o,a.inherits(d,n),d.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=d},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var f=e(\"./support\"),u=e(\"./base64\"),r=e(\"./nodejsUtils\"),n=e(\"set-immediate-shim\"),d=e(\"./external\");function i(e){return e}function h(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(e){if(this.extraFields[1]){var t=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=t.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=t.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=t.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=t.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return d(e,e.length)},r.binstring2buf=function(e){for(var t=new f.Buf8(e.length),r=0,n=t.length;r>10&1023,a[n++]=56320|1023&i)}return d(a,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,o=0;0!==r;){for(r-=o=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=a,s=n+r;e^=-1;for(var o=n;o>>8^i[255&(e^t[o])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var f,l=e(\"../utils/common\"),u=e(\"./trees\"),c=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),d=0,h=0,m=-2,i=2,_=8,s=286,o=30,a=19,w=2*s+1,v=15,g=3,y=258,b=y+g+1,k=42,x=113;function S(e,t){return e.msg=n[t],t}function E(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(l.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function A(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,C(e.strm)}function O(e,t){e.pending_buf[e.pending++]=t}function I(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function D(e,t){var r,n,i=e.max_chain_length,s=e.strstart,o=e.prev_length,a=e.nice_match,f=e.strstart>e.w_size-b?e.strstart-(e.w_size-b):0,u=e.window,d=e.w_mask,h=e.prev,l=e.strstart+y,c=u[s+o-1],p=u[s+o];e.prev_length>=e.good_match&&(i>>=2),a>e.lookahead&&(a=e.lookahead);do{if(u[(r=t)+o]===p&&u[r+o-1]===c&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sf&&0!=--i);return o<=e.lookahead?o:e.lookahead}function B(e){var t,r,n,i,s,o,a,f,u,d,h=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=h+(h-b)){for(l.arraySet(e.window,e.window,h,h,0),e.match_start-=h,e.strstart-=h,e.block_start-=h,t=r=e.hash_size;n=e.head[--t],e.head[t]=h<=n?n-h:0,--r;);for(t=r=h;n=e.prev[--t],e.prev[t]=h<=n?n-h:0,--r;);i+=h}if(0===e.strm.avail_in)break;if(o=e.strm,a=e.window,f=e.strstart+e.lookahead,d=void 0,(u=i)<(d=o.avail_in)&&(d=u),r=0===d?0:(o.avail_in-=d,l.arraySet(a,o.input,o.next_in,d,f),1===o.state.wrap?o.adler=c(o.adler,a,d,f):2===o.state.wrap&&(o.adler=p(o.adler,a,d,f)),o.next_in+=d,o.total_in+=d,d),e.lookahead+=r,e.lookahead+e.insert>=g)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=g&&(e.ins_h=(e.ins_h<=g)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-g),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=g){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=g&&(e.ins_h=(e.ins_h<=g&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-g,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-g),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(B(e),0===e.lookahead&&t===d)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,A(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-b&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(A(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(A(e,!1),e.strm.avail_out),1)}),new F(4,4,8,4,T),new F(4,5,16,8,T),new F(4,6,32,32,T),new F(4,4,16,16,R),new F(8,16,32,32,R),new F(8,16,128,128,R),new F(8,32,128,256,R),new F(32,128,258,1024,R),new F(32,258,258,4096,R)],r.deflateInit=function(e,t){return P(e,t,_,15,8,0)},r.deflateInit2=P,r.deflateReset=L,r.deflateResetKeep=U,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?m:(e.state.gzhead=t,h):m},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),O(n,n.gzhead.time>>16&255),O(n,n.gzhead.time>>24&255),O(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),O(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(O(n,255&n.gzhead.extra.length),O(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(O(n,0),O(n,0),O(n,0),O(n,0),O(n,0),O(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),O(n,3),n.status=x);else{var o=_+(n.w_bits-8<<4)<<8;o|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(o|=32),o+=31-o%31,n.status=x,I(n,o),0!==n.strstart&&(I(n,e.adler>>>16),I(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),C(e),i=n.pending,n.pending!==n.pending_buf_size));)O(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),C(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),C(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&C(e),n.pending+2<=n.pending_buf_size&&(O(n,255&e.adler),O(n,e.adler>>8&255),e.adler=0,n.status=x)):n.status=x),0!==n.pending){if(C(e),0===e.avail_out)return n.last_flush=-1,h}else if(0===e.avail_in&&E(t)<=E(r)&&4!==t)return S(e,-5);if(666===n.status&&0!==e.avail_in)return S(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==d&&666!==n.status){var a=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(B(e),0===e.lookahead)){if(t===d)return 1;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(A(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(A(e,!1),0===e.strm.avail_out)?1:2}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,o=e.window;;){if(e.lookahead<=y){if(B(e),e.lookahead<=y&&t===d)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=g&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=g?(r=u._tr_tally(e,1,e.match_length-g),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(A(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(A(e,!1),0===e.strm.avail_out)?1:2}(n,t):f[n.level].func(n,t);if(3!==a&&4!==a||(n.status=666),1===a||3===a)return 0===e.avail_out&&(n.last_flush=-1),h;if(2===a&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(z(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),C(e),0===e.avail_out))return n.last_flush=-1,h}return 4!==t?h:n.wrap<=0?1:(2===n.wrap?(O(n,255&e.adler),O(n,e.adler>>8&255),O(n,e.adler>>16&255),O(n,e.adler>>24&255),O(n,255&e.total_in),O(n,e.total_in>>8&255),O(n,e.total_in>>16&255),O(n,e.total_in>>24&255)):(I(n,e.adler>>>16),I(n,65535&e.adler)),C(e),0=r.w_size&&(0===s&&(z(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new l.Buf8(r.w_size),l.arraySet(u,t,d-r.w_size,r.w_size,0),t=u,d=r.w_size),o=e.avail_in,a=e.next_in,f=e.input,e.avail_in=d,e.next_in=0,e.input=t,B(r);r.lookahead>=g;){for(n=r.strstart,i=r.lookahead-(g-1);r.ins_h=(r.ins_h<>>=y=g>>>24,p-=y,0==(y=g>>>16&255))z[s++]=65535&g;else{if(!(16&y)){if(0==(64&y)){g=m[(65535&g)+(c&(1<>>=y,p-=y),p<15&&(c+=E[n++]<>>=y=g>>>24,p-=y,!(16&(y=g>>>16&255))){if(0==(64&y)){g=_[(65535&g)+(c&(1<>>=y,p-=y,(y=s-o)>3,c&=(1<<(p-=b<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new O.Buf16(320),this.work=new O.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function o(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=L,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new O.Buf32(n),t.distcode=t.distdyn=new O.Buf32(i),t.sane=1,t.back=-1,N):U}function a(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,o(e)):U}function f(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(O.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),O.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(O.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=D(r.check,C,2,0),d=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(d-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(C[0]=255&u,C[1]=u>>>8&255,r.check=D(r.check,C,2,0)),d=u=0,r.mode=3;case 3:for(;d<32;){if(0===a)break e;a--,u+=n[s++]<>>8&255,C[2]=u>>>16&255,C[3]=u>>>24&255,r.check=D(r.check,C,4,0)),d=u=0,r.mode=4;case 4:for(;d<16;){if(0===a)break e;a--,u+=n[s++]<>8),512&r.flags&&(C[0]=255&u,C[1]=u>>>8&255,r.check=D(r.check,C,2,0)),d=u=0,r.mode=5;case 5:if(1024&r.flags){for(;d<16;){if(0===a)break e;a--,u+=n[s++]<>>8&255,r.check=D(r.check,C,2,0)),d=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(a<(c=r.length)&&(c=a),c&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),O.arraySet(r.head.extra,n,s,c,k)),512&r.flags&&(r.check=D(r.check,n,c,s)),a-=c,s+=c,r.length-=c),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===a)break e;for(c=0;k=n[s+c++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&c>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;d<32;){if(0===a)break e;a--,u+=n[s++]<>>=7&d,d-=7&d,r.mode=27;break}for(;d<3;){if(0===a)break e;a--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,d-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,d-=2;break;case 14:for(u>>>=7&d,d-=7&d;d<32;){if(0===a)break e;a--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,d=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(c=r.length){if(a>>=5,d-=5,r.ndist=1+(31&u),u>>>=5,d-=5,r.ncode=4+(15&u),u>>>=4,d-=4,286>>=3,d-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,v=65535&z,!((_=z>>>24)<=d);){if(0===a)break e;a--,u+=n[s++]<>>=_,d-=_,r.lens[r.have++]=v;else{if(16===v){for(E=_+2;d>>=_,d-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],c=3+(3&u),u>>>=2,d-=2}else if(17===v){for(E=_+3;d>>=_)),u>>>=3,d-=3}else{for(E=_+7;d>>=_)),u>>>=7,d-=7}if(r.have+c>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;c--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(R,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=a&&258<=f){e.next_out=o,e.avail_out=f,e.next_in=s,e.avail_in=a,r.hold=u,r.bits=d,B(e,l),o=e.next_out,i=e.output,f=e.avail_out,s=e.next_in,n=e.input,a=e.avail_in,u=r.hold,d=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;w=(z=r.lencode[u&(1<>>16&255,v=65535&z,!((_=z>>>24)<=d);){if(0===a)break e;a--,u+=n[s++]<>g)])>>>16&255,v=65535&z,!(g+(_=z>>>24)<=d);){if(0===a)break e;a--,u+=n[s++]<>>=g,d-=g,r.back+=g}if(u>>>=_,d-=_,r.back+=_,r.length=v,0===w){r.mode=26;break}if(32&w){r.back=-1,r.mode=12;break}if(64&w){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&w,r.mode=22;case 22:if(r.extra){for(E=r.extra;d>>=r.extra,d-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;w=(z=r.distcode[u&(1<>>16&255,v=65535&z,!((_=z>>>24)<=d);){if(0===a)break e;a--,u+=n[s++]<>g)])>>>16&255,v=65535&z,!(g+(_=z>>>24)<=d);){if(0===a)break e;a--,u+=n[s++]<>>=g,d-=g,r.back+=g}if(u>>>=_,d-=_,r.back+=_,64&w){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=v,r.extra=15&w,r.mode=24;case 24:if(r.extra){for(E=r.extra;d>>=r.extra,d-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===f)break e;if(c=l-f,r.offset>c){if((c=r.offset-c)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=c>r.wnext?(c-=r.wnext,r.wsize-c):r.wnext-c,c>r.length&&(c=r.length),m=r.window}else m=i,p=o-r.offset,c=r.length;for(fc?(m=B[T+o[g]],A[O+o[g]]):(m=96,0),f=1<>S)+(u-=f)]=p<<24|m<<16|_|0,0!==u;);for(f=1<>=1;if(0!==f?(C&=f-1,C+=f):C=0,g++,0==--I[v]){if(v===b)break;v=t[r+o[g]]}if(k>>7)]}function x(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function S(e,t,r){e.bi_valid>i-r?(e.bi_buf|=t<>i-e.bi_valid,e.bi_valid+=r-i):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function C(e,t,r){var n,i,s=new Array(_+1),o=0;for(n=1;n<=_;n++)s[n]=o=o+r[n-1]<<1;for(i=0;i<=t;i++){var a=e[2*i+1];0!==a&&(e[2*i]=z(s[a]++,a))}}function A(e){var t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function O(e){8>1;1<=r;r--)D(e,s,r);for(i=f;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],D(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,D(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,o,a,f=t.dyn_tree,u=t.max_code,d=t.stat_desc.static_tree,h=t.stat_desc.has_stree,l=t.stat_desc.extra_bits,c=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=_;s++)e.bl_count[s]=0;for(f[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<573;r++)p<(s=f[2*f[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),f[2*n+1]=s,u>=7;n<30;n++)for(y[n]=i<<7,e=0;e<1<>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),T(e,e.l_desc),T(e,e.d_desc),o=function(e){var t;for(R(e,e.dyn_ltree,e.l_desc.max_code),R(e,e.dyn_dtree,e.d_desc.max_code),T(e,e.bl_desc),t=18;3<=t&&0===e.bl_tree[2*d[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?U(e,t,r,n):4===e.strategy||s===i?(S(e,2+(n?1:0),3),B(e,h,l)):(S(e,4+(n?1:0),3),function(e,t,r,n){var i;for(S(e,t-257,5),S(e,r-1,5),S(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(p[r]+256+1)]++,e.dyn_dtree[2*k(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){var t;S(e,2,3),E(e,256,h),16===(t=e).bi_valid?(x(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):8<=t.bi_valid&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){\"use strict\";t.exports=\"function\"==typeof setImmediate?setImmediate:function(){var e=[].slice.apply(arguments);e.splice(1,0,0),setTimeout.apply(null,e)}},{}]},{},[10])(10)})}).call(this,void 0!==r?r:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1])(1)});","/**\r\n * DevExtreme (esm/ui/shared/accessibility.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nvar FOCUS_STATE_CLASS = \"dx-state-focused\";\r\nvar FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar FOCUSED_ROW_SELECTOR = \".dx-row-focused\";\r\nvar GRID_ROW_SELECTOR = \".dx-datagrid-rowsview .dx-row\";\r\nvar GRID_CELL_SELECTOR = \"\".concat(GRID_ROW_SELECTOR, \" > td\");\r\nvar TREELIST_ROW_SELECTOR = \".dx-treelist-rowsview .dx-row\";\r\nvar TREELIST_CELL_SELECTOR = \"\".concat(TREELIST_ROW_SELECTOR, \" > td\");\r\nvar viewItemSelectorMap = {\r\n groupPanel: [\".dx-datagrid-group-panel .dx-group-panel-item[tabindex]\"],\r\n columnHeaders: [\".dx-datagrid-headers .dx-header-row > td.dx-datagrid-action\", \".dx-treelist-headers .dx-header-row > td.dx-treelist-action\"],\r\n filterRow: [\".dx-datagrid-headers .dx-datagrid-filter-row .dx-editor-cell .dx-texteditor-input\", \".dx-treelist-headers .dx-treelist-filter-row .dx-editor-cell .dx-texteditor-input\"],\r\n rowsView: [\"\".concat(FOCUSED_ROW_SELECTOR), \"\".concat(GRID_ROW_SELECTOR, \"[tabindex]\"), \"\".concat(GRID_CELL_SELECTOR, \"[tabindex]\"), \"\".concat(GRID_CELL_SELECTOR), \"\".concat(TREELIST_ROW_SELECTOR, \"[tabindex]\"), \"\".concat(TREELIST_CELL_SELECTOR, \"[tabindex]\"), \"\".concat(TREELIST_CELL_SELECTOR)],\r\n footer: [\".dx-datagrid-total-footer .dx-datagrid-summary-item\", \".dx-treelist-total-footer .dx-treelist-summary-item\"],\r\n filterPanel: [\".dx-datagrid-filter-panel .dx-icon-filter\", \".dx-treelist-filter-panel .dx-icon-filter\"],\r\n pager: [\".dx-datagrid-pager [tabindex]\", \".dx-treelist-pager [tabindex]\"]\r\n};\r\nvar isMouseDown = false;\r\nvar isHiddenFocusing = false;\r\nvar focusedElementInfo = null;\r\n\r\nfunction processKeyDown(viewName, instance, event, action, $mainElement, executeKeyDown) {\r\n var isHandled = fireKeyDownEvent(instance, event.originalEvent, executeKeyDown);\r\n if (isHandled) {\r\n return\r\n }\r\n var keyName = normalizeKeyName(event);\r\n if (\"enter\" === keyName || \"space\" === keyName) {\r\n saveFocusedElementInfo(event.target, instance);\r\n action && action({\r\n event: event\r\n })\r\n } else if (\"tab\" === keyName) {\r\n $mainElement.addClass(FOCUS_STATE_CLASS)\r\n } else {\r\n selectView(viewName, instance, event)\r\n }\r\n}\r\n\r\nfunction saveFocusedElementInfo(target, instance) {\r\n var $target = $(target);\r\n var ariaLabel = $target.attr(\"aria-label\");\r\n var $activeElements = getActiveAccessibleElements(ariaLabel, instance.element());\r\n var targetIndex = $activeElements.index($target);\r\n focusedElementInfo = extend({}, {\r\n ariaLabel: ariaLabel,\r\n index: targetIndex\r\n }, {\r\n viewInstance: instance\r\n })\r\n}\r\n\r\nfunction getActiveAccessibleElements(ariaLabel, viewElement) {\r\n var $viewElement = $(viewElement);\r\n var $activeElements;\r\n if (ariaLabel) {\r\n $activeElements = $viewElement.find('[aria-label=\"'.concat(ariaLabel, '\"][tabindex]'))\r\n } else {\r\n $activeElements = $viewElement.find(\"[tabindex]\")\r\n }\r\n return $activeElements\r\n}\r\n\r\nfunction findFocusedViewElement(viewSelectors) {\r\n for (var index in viewSelectors) {\r\n var selector = viewSelectors[index];\r\n var $focusViewElement = $(selector).first();\r\n if ($focusViewElement.length) {\r\n return $focusViewElement\r\n }\r\n }\r\n}\r\n\r\nfunction fireKeyDownEvent(instance, event, executeAction) {\r\n var args = {\r\n event: event,\r\n handled: false\r\n };\r\n if (executeAction) {\r\n executeAction(args)\r\n } else {\r\n instance._createActionByOption(\"onKeyDown\")(args)\r\n }\r\n return args.handled\r\n}\r\n\r\nfunction onDocumentVisibilityChange() {\r\n isHiddenFocusing = \"visible\" === domAdapter.getDocument().visibilityState\r\n}\r\nexport function subscribeVisibilityChange() {\r\n eventsEngine.on(domAdapter.getDocument(), \"visibilitychange\", onDocumentVisibilityChange)\r\n}\r\nexport function unsubscribeVisibilityChange() {\r\n eventsEngine.off(domAdapter.getDocument(), \"visibilitychange\", onDocumentVisibilityChange)\r\n}\r\nexport function hiddenFocus(element) {\r\n isHiddenFocusing = true;\r\n element.focus();\r\n isHiddenFocusing = false\r\n}\r\nexport function registerKeyboardAction(viewName, instance, $element, selector, action, executeKeyDown) {\r\n if (instance.option(\"useLegacyKeyboardNavigation\")) {\r\n return noop\r\n }\r\n var getMainElement = () => $(instance.element());\r\n var keyDownHandler = e => processKeyDown(viewName, instance, e, action, getMainElement(), executeKeyDown);\r\n var mouseDownHandler = () => {\r\n isMouseDown = true;\r\n getMainElement().removeClass(FOCUS_STATE_CLASS)\r\n };\r\n var focusinHandler = () => {\r\n var needShowOverlay = !isMouseDown && !isHiddenFocusing;\r\n if (needShowOverlay) {\r\n getMainElement().addClass(FOCUS_STATE_CLASS)\r\n }\r\n isMouseDown = false\r\n };\r\n eventsEngine.on($element, \"keydown\", selector, keyDownHandler);\r\n eventsEngine.on($element, \"mousedown\", selector, mouseDownHandler);\r\n eventsEngine.on($element, \"focusin\", selector, focusinHandler);\r\n return () => {\r\n eventsEngine.off($element, \"keydown\", selector, keyDownHandler);\r\n eventsEngine.off($element, \"mousedown\", selector, mouseDownHandler);\r\n eventsEngine.off($element, \"focusin\", selector, focusinHandler)\r\n }\r\n}\r\nexport function restoreFocus(instance) {\r\n if (!instance.option(\"useLegacyKeyboardNavigation\") && focusedElementInfo) {\r\n var viewInstance = focusedElementInfo.viewInstance;\r\n if (viewInstance) {\r\n var $activeElements = getActiveAccessibleElements(focusedElementInfo.ariaLabel, viewInstance.element());\r\n var $targetElement = $activeElements.eq(focusedElementInfo.index);\r\n focusedElementInfo = null;\r\n eventsEngine.trigger($targetElement, \"focus\")\r\n }\r\n }\r\n}\r\nexport function selectView(viewName, instance, event) {\r\n var keyName = normalizeKeyName(event);\r\n if (event.ctrlKey && (\"upArrow\" === keyName || \"downArrow\" === keyName)) {\r\n var viewNames = Object.keys(viewItemSelectorMap);\r\n var viewItemIndex = viewNames.indexOf(viewName);\r\n while (viewItemIndex >= 0 && viewItemIndex < viewNames.length) {\r\n viewItemIndex = \"upArrow\" === keyName ? --viewItemIndex : ++viewItemIndex;\r\n var _viewName = viewNames[viewItemIndex];\r\n var viewSelectors = viewItemSelectorMap[_viewName];\r\n var $focusViewElement = findFocusedViewElement(viewSelectors);\r\n if ($focusViewElement && $focusViewElement.length) {\r\n $focusViewElement.attr(\"tabindex\", instance.option(\"tabindex\") || 0);\r\n eventsEngine.trigger($focusViewElement, \"focus\");\r\n $focusViewElement.removeClass(FOCUS_DISABLED_CLASS);\r\n break\r\n }\r\n }\r\n }\r\n}\r\nexport function setTabIndex(instance, $element) {\r\n if (!instance.option(\"useLegacyKeyboardnavigation\")) {\r\n $element.attr(\"tabindex\", instance.option(\"tabindex\") || 0)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/exporter/excel_format_converter.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n format as stringFormat\r\n} from \"../core/utils/string\";\r\nimport numberFormatter from \"../localization/number\";\r\nimport dateLocalization from \"../localization/date\";\r\nimport {\r\n isDefined,\r\n isString\r\n} from \"../core/utils/type\";\r\nimport {\r\n getFormat\r\n} from \"../localization/ldml/date.format\";\r\nimport {\r\n getLanguageId\r\n} from \"../localization/language_codes\";\r\nimport \"../localization/currency\";\r\nvar ARABIC_ZERO_CODE = 1632;\r\nvar DEFINED_NUMBER_FORMTATS = {\r\n thousands: \"#,##0{0},"K"\",\r\n millions: \"#,##0{0},,"M"\",\r\n billions: \"#,##0{0},,,"B"\",\r\n trillions: \"#,##0{0},,,,"T"\",\r\n percent: \"0{0}%\",\r\n decimal: \"#{0}\",\r\n fixedpoint: \"#,##0{0}\",\r\n exponential: \"0{0}E+00\",\r\n currency: \" \"\r\n};\r\nvar PERIOD_REGEXP = /a+/g;\r\nvar DAY_REGEXP = /E/g;\r\nvar DO_REGEXP = /dE+/g;\r\nvar STANDALONE_MONTH_REGEXP = /L/g;\r\nvar HOUR_REGEXP = /h/g;\r\nvar ANY_REGEXP = /./g;\r\nvar excelFormatConverter = {\r\n _applyPrecision: function(format, precision) {\r\n var result;\r\n var i;\r\n if (precision > 0) {\r\n result = \"decimal\" !== format ? \".\" : \"\";\r\n for (i = 0; i < precision; i++) {\r\n result += \"0\"\r\n }\r\n return result\r\n }\r\n return \"\"\r\n },\r\n _hasArabicDigits: function(text) {\r\n var code;\r\n for (var i = 0; i < text.length; i++) {\r\n code = text.charCodeAt(i);\r\n if (code >= ARABIC_ZERO_CODE && code < ARABIC_ZERO_CODE + 10) {\r\n return true\r\n }\r\n }\r\n return false\r\n },\r\n _convertDateFormatToOpenXml: function(format) {\r\n return format.split(\"/\").join(\"\\\\/\").split(\"'\").map((function(datePart, index) {\r\n if (index % 2 === 0) {\r\n return datePart.replace(PERIOD_REGEXP, \"AM/PM\").replace(DO_REGEXP, \"d\").replace(DAY_REGEXP, \"d\").replace(STANDALONE_MONTH_REGEXP, \"M\").replace(HOUR_REGEXP, \"H\").split(\"[\").join(\"\\\\[\").split(\"]\").join(\"\\\\]\")\r\n }\r\n if (datePart) {\r\n return datePart.replace(ANY_REGEXP, \"\\\\$&\")\r\n }\r\n return \"'\"\r\n })).join(\"\")\r\n },\r\n _convertDateFormat: function(format) {\r\n var formattedValue = (dateLocalization.format(new Date(2009, 8, 8, 6, 5, 4), format) || \"\").toString();\r\n var result = getFormat(value => dateLocalization.format(value, format));\r\n if (result) {\r\n result = this._convertDateFormatToOpenXml(result);\r\n result = this._getLanguageInfo(formattedValue) + result\r\n }\r\n return result\r\n },\r\n _getLanguageInfo: function(defaultPattern) {\r\n var languageID = getLanguageId();\r\n var languageIDStr = languageID ? languageID.toString(16) : \"\";\r\n var languageInfo = \"\";\r\n if (this._hasArabicDigits(defaultPattern)) {\r\n while (languageIDStr.length < 3) {\r\n languageIDStr = \"0\" + languageIDStr\r\n }\r\n languageInfo = \"[$-2010\" + languageIDStr + \"]\"\r\n } else if (languageIDStr) {\r\n languageInfo = \"[$-\" + languageIDStr + \"]\"\r\n }\r\n return languageInfo\r\n },\r\n _convertNumberFormat: function(format, precision, currency) {\r\n var result;\r\n var excelFormat;\r\n if (\"currency\" === format) {\r\n excelFormat = numberFormatter.getOpenXmlCurrencyFormat(currency)\r\n } else {\r\n excelFormat = DEFINED_NUMBER_FORMTATS[format.toLowerCase()]\r\n }\r\n if (excelFormat) {\r\n result = stringFormat(excelFormat, this._applyPrecision(format, precision))\r\n }\r\n return result\r\n },\r\n convertFormat: function(format, precision, type, currency) {\r\n if (isDefined(format)) {\r\n if (\"date\" === type) {\r\n return excelFormatConverter._convertDateFormat(format)\r\n } else if (isString(format) && DEFINED_NUMBER_FORMTATS[format.toLowerCase()]) {\r\n return excelFormatConverter._convertNumberFormat(format, precision, currency)\r\n }\r\n }\r\n }\r\n};\r\nexport default excelFormatConverter;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.tag_helper.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nvar tagHelper = {\r\n toXml: function(tagName, attributes, content) {\r\n var result = [\"<\", tagName];\r\n for (var attributeName in attributes) {\r\n var attributeValue = attributes[attributeName];\r\n if (isDefined(attributeValue)) {\r\n result.push(\" \", attributeName, '=\"', attributeValue, '\"')\r\n }\r\n }\r\n if (isDefined(content) && \"\" !== content) {\r\n result.push(\">\", content, \"\")\r\n } else {\r\n result.push(\" />\")\r\n }\r\n return result.join(\"\")\r\n }\r\n};\r\nexport default tagHelper;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.cell_alignment_helper.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport tagHelper from \"./excel.tag_helper\";\r\nvar cellAlignmentHelper = {\r\n tryCreateTag: function(sourceObj) {\r\n var result = null;\r\n if (isDefined(sourceObj)) {\r\n result = {\r\n vertical: sourceObj.vertical,\r\n wrapText: sourceObj.wrapText,\r\n horizontal: sourceObj.horizontal\r\n };\r\n if (cellAlignmentHelper.isEmpty(result)) {\r\n result = null\r\n }\r\n }\r\n return result\r\n },\r\n copy: function(source) {\r\n var result = null;\r\n if (isDefined(source)) {\r\n result = {};\r\n if (void 0 !== source.horizontal) {\r\n result.horizontal = source.horizontal\r\n }\r\n if (void 0 !== source.vertical) {\r\n result.vertical = source.vertical\r\n }\r\n if (void 0 !== source.wrapText) {\r\n result.wrapText = source.wrapText\r\n }\r\n }\r\n return result\r\n },\r\n areEqual: function(leftTag, rightTag) {\r\n return cellAlignmentHelper.isEmpty(leftTag) && cellAlignmentHelper.isEmpty(rightTag) || isDefined(leftTag) && isDefined(rightTag) && leftTag.vertical === rightTag.vertical && leftTag.wrapText === rightTag.wrapText && leftTag.horizontal === rightTag.horizontal\r\n },\r\n isEmpty: function(tag) {\r\n return !isDefined(tag) || !isDefined(tag.vertical) && !isDefined(tag.wrapText) && !isDefined(tag.horizontal)\r\n },\r\n toXml: function(tag) {\r\n return tagHelper.toXml(\"alignment\", {\r\n vertical: tag.vertical,\r\n wrapText: isDefined(tag.wrapText) ? Number(tag.wrapText) : void 0,\r\n horizontal: tag.horizontal\r\n })\r\n }\r\n};\r\nexport default cellAlignmentHelper;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.color_helper.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport tagHelper from \"./excel.tag_helper\";\r\nvar colorHelper = {\r\n _tryConvertColor: function(source) {\r\n if (\"string\" !== typeof source) {\r\n return source\r\n }\r\n var result;\r\n if (source.length > 0 && \"#\" === source[0]) {\r\n var colorCode = source.substr(1, source.length);\r\n if (6 === colorCode.length) {\r\n result = \"FF\" + colorCode\r\n } else if (8 === colorCode.length) {\r\n result = colorCode[6] + colorCode[7] + colorCode.substr(0, 6)\r\n } else {\r\n result = colorCode\r\n }\r\n } else {\r\n result = source\r\n }\r\n return result\r\n },\r\n tryCreateTag: function(sourceObj) {\r\n var result = null;\r\n if (isDefined(sourceObj)) {\r\n if (\"string\" === typeof sourceObj) {\r\n result = {\r\n rgb: this._tryConvertColor(sourceObj)\r\n }\r\n } else {\r\n result = {\r\n rgb: this._tryConvertColor(sourceObj.rgb),\r\n theme: sourceObj.theme\r\n }\r\n }\r\n if (colorHelper.isEmpty(result)) {\r\n result = null\r\n }\r\n }\r\n return result\r\n },\r\n copy: function(source) {\r\n var result = null;\r\n if (isDefined(source)) {\r\n if (\"string\" === typeof source) {\r\n result = source\r\n } else {\r\n result = {};\r\n if (void 0 !== source.rgb) {\r\n result.rgb = source.rgb\r\n }\r\n if (void 0 !== source.theme) {\r\n result.theme = source.theme\r\n }\r\n }\r\n }\r\n return result\r\n },\r\n isEmpty: function(tag) {\r\n return !isDefined(tag) || !isDefined(tag.rgb) && !isDefined(tag.theme)\r\n },\r\n areEqual: function(leftTag, rightTag) {\r\n return colorHelper.isEmpty(leftTag) && colorHelper.isEmpty(rightTag) || isDefined(leftTag) && isDefined(rightTag) && leftTag.rgb === rightTag.rgb && leftTag.theme === rightTag.theme\r\n },\r\n toXml: function(tagName, tag) {\r\n return tagHelper.toXml(tagName, {\r\n rgb: tag.rgb,\r\n theme: tag.theme\r\n })\r\n }\r\n};\r\nexport default colorHelper;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.pattern_fill_helper.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport tagHelper from \"./excel.tag_helper\";\r\nimport colorHelper from \"./excel.color_helper\";\r\nvar patternFillHelper = {\r\n tryCreateTag: function(sourceObj) {\r\n var result = null;\r\n if (isDefined(sourceObj)) {\r\n result = {\r\n patternType: sourceObj.patternType,\r\n backgroundColor: colorHelper.tryCreateTag(sourceObj.backgroundColor),\r\n foregroundColor: colorHelper.tryCreateTag(sourceObj.foregroundColor)\r\n };\r\n if (patternFillHelper.isEmpty(result)) {\r\n result = null\r\n }\r\n }\r\n return result\r\n },\r\n copy: function(source) {\r\n var result = null;\r\n if (isDefined(source)) {\r\n result = {};\r\n if (void 0 !== source.patternType) {\r\n result.patternType = source.patternType\r\n }\r\n if (void 0 !== source.backgroundColor) {\r\n result.backgroundColor = colorHelper.copy(source.backgroundColor)\r\n }\r\n if (void 0 !== source.foregroundColor) {\r\n result.foregroundColor = colorHelper.copy(source.foregroundColor)\r\n }\r\n }\r\n return result\r\n },\r\n areEqual: function(leftTag, rightTag) {\r\n return patternFillHelper.isEmpty(leftTag) && patternFillHelper.isEmpty(rightTag) || isDefined(leftTag) && isDefined(rightTag) && leftTag.patternType === rightTag.patternType && colorHelper.areEqual(leftTag.backgroundColor, rightTag.backgroundColor) && colorHelper.areEqual(leftTag.foregroundColor, rightTag.foregroundColor)\r\n },\r\n isEmpty: function(tag) {\r\n return !isDefined(tag) || !isDefined(tag.patternType)\r\n },\r\n toXml: function(tag) {\r\n var content = [isDefined(tag.foregroundColor) ? colorHelper.toXml(\"fgColor\", tag.foregroundColor) : \"\", isDefined(tag.backgroundColor) ? colorHelper.toXml(\"bgColor\", tag.backgroundColor) : \"\"].join(\"\");\r\n return tagHelper.toXml(\"patternFill\", {\r\n patternType: tag.patternType\r\n }, content)\r\n }\r\n};\r\nexport default patternFillHelper;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.fill_helper.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport tagHelper from \"./excel.tag_helper\";\r\nimport patternFillHelper from \"./excel.pattern_fill_helper\";\r\nvar fillHelper = {\r\n tryCreateTag: function(sourceObj) {\r\n var result = null;\r\n if (isDefined(sourceObj)) {\r\n result = {\r\n patternFill: patternFillHelper.tryCreateTag(sourceObj.patternFill)\r\n };\r\n if (fillHelper.isEmpty(result)) {\r\n result = null\r\n }\r\n }\r\n return result\r\n },\r\n tryCreateFillFromSimpleFormat: function() {\r\n var {\r\n backgroundColor: backgroundColor,\r\n fillPatternType: fillPatternType,\r\n fillPatternColor: fillPatternColor\r\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\r\n if (isDefined(backgroundColor) && !(isDefined(fillPatternType) && isDefined(fillPatternColor))) {\r\n return {\r\n patternFill: {\r\n patternType: \"solid\",\r\n foregroundColor: {\r\n rgb: backgroundColor\r\n }\r\n }\r\n }\r\n } else if (isDefined(fillPatternType) && isDefined(fillPatternColor)) {\r\n return {\r\n patternFill: {\r\n patternType: fillPatternType,\r\n foregroundColor: {\r\n rgb: fillPatternColor\r\n },\r\n backgroundColor: {\r\n rgb: backgroundColor\r\n }\r\n }\r\n }\r\n }\r\n },\r\n copySimpleFormat: function(source, target) {\r\n if (void 0 !== source.backgroundColor) {\r\n target.backgroundColor = source.backgroundColor\r\n }\r\n if (void 0 !== source.fillPatternType) {\r\n target.fillPatternType = source.fillPatternType\r\n }\r\n if (void 0 !== source.fillPatternColor) {\r\n target.fillPatternColor = source.fillPatternColor\r\n }\r\n },\r\n copy: function(source) {\r\n var result = null;\r\n if (isDefined(source)) {\r\n result = {};\r\n if (void 0 !== source.patternFill) {\r\n result.patternFill = patternFillHelper.copy(source.patternFill)\r\n }\r\n }\r\n return result\r\n },\r\n areEqual: function(leftTag, rightTag) {\r\n return fillHelper.isEmpty(leftTag) && fillHelper.isEmpty(rightTag) || isDefined(leftTag) && isDefined(rightTag) && patternFillHelper.areEqual(leftTag.patternFill, rightTag.patternFill)\r\n },\r\n isEmpty: function(tag) {\r\n return !isDefined(tag) || patternFillHelper.isEmpty(tag.patternFill)\r\n },\r\n toXml: function(tag) {\r\n return tagHelper.toXml(\"fill\", {}, patternFillHelper.toXml(tag.patternFill))\r\n }\r\n};\r\nexport default fillHelper;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.font_helper.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport tagHelper from \"./excel.tag_helper\";\r\nimport colorHelper from \"./excel.color_helper\";\r\nvar fontHelper = {\r\n tryCreateTag: function(sourceObj) {\r\n var result = null;\r\n if (isDefined(sourceObj)) {\r\n result = {\r\n size: sourceObj.size,\r\n name: sourceObj.name,\r\n family: sourceObj.family,\r\n scheme: sourceObj.scheme,\r\n bold: sourceObj.bold,\r\n italic: sourceObj.italic,\r\n underline: sourceObj.underline,\r\n color: colorHelper.tryCreateTag(sourceObj.color)\r\n };\r\n if (fontHelper.isEmpty(result)) {\r\n result = null\r\n }\r\n }\r\n return result\r\n },\r\n copy: function(source) {\r\n var result = null;\r\n if (isDefined(source)) {\r\n result = {};\r\n if (void 0 !== source.size) {\r\n result.size = source.size\r\n }\r\n if (void 0 !== source.name) {\r\n result.name = source.name\r\n }\r\n if (void 0 !== source.family) {\r\n result.family = source.family\r\n }\r\n if (void 0 !== source.scheme) {\r\n result.scheme = source.scheme\r\n }\r\n if (void 0 !== source.bold) {\r\n result.bold = source.bold\r\n }\r\n if (void 0 !== source.italic) {\r\n result.italic = source.italic\r\n }\r\n if (void 0 !== source.underline) {\r\n result.underline = source.underline\r\n }\r\n if (void 0 !== source.color) {\r\n result.color = colorHelper.copy(source.color)\r\n }\r\n }\r\n return result\r\n },\r\n areEqual: function(leftTag, rightTag) {\r\n return fontHelper.isEmpty(leftTag) && fontHelper.isEmpty(rightTag) || isDefined(leftTag) && isDefined(rightTag) && leftTag.size === rightTag.size && leftTag.name === rightTag.name && leftTag.family === rightTag.family && leftTag.scheme === rightTag.scheme && (leftTag.bold === rightTag.bold || !leftTag.bold === !rightTag.bold) && (leftTag.italic === rightTag.italic || !leftTag.italic === !rightTag.italic) && leftTag.underline === rightTag.underline && colorHelper.areEqual(leftTag.color, rightTag.color)\r\n },\r\n isEmpty: function(tag) {\r\n return !isDefined(tag) || !isDefined(tag.size) && !isDefined(tag.name) && !isDefined(tag.family) && !isDefined(tag.scheme) && (!isDefined(tag.bold) || !tag.bold) && (!isDefined(tag.italic) || !tag.italic) && !isDefined(tag.underline) && colorHelper.isEmpty(tag.color)\r\n },\r\n toXml: function(tag) {\r\n var content = [isDefined(tag.bold) && tag.bold ? tagHelper.toXml(\"b\", {}) : \"\", isDefined(tag.size) ? tagHelper.toXml(\"sz\", {\r\n val: tag.size\r\n }) : \"\", isDefined(tag.color) ? colorHelper.toXml(\"color\", tag.color) : \"\", isDefined(tag.name) ? tagHelper.toXml(\"name\", {\r\n val: tag.name\r\n }) : \"\", isDefined(tag.family) ? tagHelper.toXml(\"family\", {\r\n val: tag.family\r\n }) : \"\", isDefined(tag.scheme) ? tagHelper.toXml(\"scheme\", {\r\n val: tag.scheme\r\n }) : \"\", isDefined(tag.italic) && tag.italic ? tagHelper.toXml(\"i\", {}) : \"\", isDefined(tag.underline) ? tagHelper.toXml(\"u\", {\r\n val: tag.underline\r\n }) : \"\"].join(\"\");\r\n return tagHelper.toXml(\"font\", {}, content)\r\n }\r\n};\r\nexport default fontHelper;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.cell_format_helper.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport tagHelper from \"./excel.tag_helper\";\r\nimport cellAlignmentHelper from \"./excel.cell_alignment_helper\";\r\nimport fillHelper from \"./excel.fill_helper\";\r\nimport fontHelper from \"./excel.font_helper\";\r\nvar cellFormatHelper = {\r\n tryCreateTag: function(sourceObj, sharedItemsContainer) {\r\n var result = null;\r\n if (isDefined(sourceObj)) {\r\n var numberFormatId;\r\n if (\"number\" === typeof sourceObj.numberFormat) {\r\n numberFormatId = sourceObj.numberFormat\r\n } else {\r\n numberFormatId = sharedItemsContainer.registerNumberFormat(sourceObj.numberFormat)\r\n }\r\n var fill = sourceObj.fill;\r\n if (!isDefined(fill)) {\r\n fill = fillHelper.tryCreateFillFromSimpleFormat(sourceObj)\r\n }\r\n result = {\r\n numberFormatId: numberFormatId,\r\n alignment: cellAlignmentHelper.tryCreateTag(sourceObj.alignment),\r\n fontId: sharedItemsContainer.registerFont(sourceObj.font),\r\n fillId: sharedItemsContainer.registerFill(fill)\r\n };\r\n if (cellFormatHelper.isEmpty(result)) {\r\n result = null\r\n }\r\n }\r\n return result\r\n },\r\n copy: function(source) {\r\n var result;\r\n if (null === source) {\r\n result = null\r\n } else if (isDefined(source)) {\r\n result = {};\r\n if (void 0 !== source.numberFormat) {\r\n result.numberFormat = source.numberFormat\r\n }\r\n if (void 0 !== source.fill) {\r\n result.fill = fillHelper.copy(source.fill)\r\n } else {\r\n fillHelper.copySimpleFormat(source, result)\r\n }\r\n if (void 0 !== source.alignment) {\r\n result.alignment = cellAlignmentHelper.copy(source.alignment)\r\n }\r\n if (void 0 !== source.font) {\r\n result.font = fontHelper.copy(source.font)\r\n }\r\n }\r\n return result\r\n },\r\n areEqual: function(leftTag, rightTag) {\r\n return cellFormatHelper.isEmpty(leftTag) && cellFormatHelper.isEmpty(rightTag) || isDefined(leftTag) && isDefined(rightTag) && leftTag.fontId === rightTag.fontId && leftTag.numberFormatId === rightTag.numberFormatId && leftTag.fillId === rightTag.fillId && cellAlignmentHelper.areEqual(leftTag.alignment, rightTag.alignment)\r\n },\r\n isEmpty: function(tag) {\r\n return !isDefined(tag) || !isDefined(tag.fontId) && !isDefined(tag.numberFormatId) && !isDefined(tag.fillId) && cellAlignmentHelper.isEmpty(tag.alignment)\r\n },\r\n toXml: function(tag) {\r\n var isAlignmentEmpty = cellAlignmentHelper.isEmpty(tag.alignment);\r\n var applyNumberFormat;\r\n if (isDefined(tag.numberFormatId)) {\r\n applyNumberFormat = tag.numberFormatId > 0 ? 1 : 0\r\n }\r\n return tagHelper.toXml(\"xf\", {\r\n xfId: 0,\r\n applyAlignment: isAlignmentEmpty ? null : 1,\r\n fontId: tag.fontId,\r\n applyNumberFormat: applyNumberFormat,\r\n fillId: tag.fillId,\r\n numFmtId: tag.numberFormatId\r\n }, isAlignmentEmpty ? null : cellAlignmentHelper.toXml(tag.alignment))\r\n }\r\n};\r\nexport default cellFormatHelper;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.number_format_helper.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport tagHelper from \"./excel.tag_helper\";\r\nvar numberFormatHelper = {\r\n ID_PROPERTY_NAME: \"id\",\r\n tryCreateTag: function(sourceObj) {\r\n var result = null;\r\n if (\"string\" === typeof sourceObj) {\r\n result = {\r\n formatCode: sourceObj\r\n };\r\n if (numberFormatHelper.isEmpty(result)) {\r\n result = null\r\n }\r\n }\r\n return result\r\n },\r\n areEqual: function(leftTag, rightTag) {\r\n return numberFormatHelper.isEmpty(leftTag) && numberFormatHelper.isEmpty(rightTag) || isDefined(leftTag) && isDefined(rightTag) && leftTag.formatCode === rightTag.formatCode\r\n },\r\n isEmpty: function(tag) {\r\n return !isDefined(tag) || !isDefined(tag.formatCode) || \"\" === tag.formatCode\r\n },\r\n toXml: function(tag) {\r\n return tagHelper.toXml(\"numFmt\", {\r\n numFmtId: tag[numberFormatHelper.ID_PROPERTY_NAME],\r\n formatCode: tag.formatCode\r\n })\r\n }\r\n};\r\nexport default numberFormatHelper;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.file.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport tagHelper from \"./excel.tag_helper\";\r\nimport cellFormatHelper from \"./excel.cell_format_helper\";\r\nimport fillHelper from \"./excel.fill_helper\";\r\nimport fontHelper from \"./excel.font_helper\";\r\nimport numberFormatHelper from \"./excel.number_format_helper\";\r\nexport default class ExcelFile {\r\n constructor() {\r\n this._cellFormatTags = [];\r\n this._fillTags = [];\r\n this._fontTags = [];\r\n this._numberFormatTags = [];\r\n this._fillTags.push(fillHelper.tryCreateTag({\r\n patternFill: {\r\n patternType: \"none\"\r\n }\r\n }))\r\n }\r\n registerCellFormat(cellFormat) {\r\n var result;\r\n var cellFormatTag = cellFormatHelper.tryCreateTag(cellFormat, {\r\n registerFill: this.registerFill.bind(this),\r\n registerFont: this.registerFont.bind(this),\r\n registerNumberFormat: this.registerNumberFormat.bind(this)\r\n });\r\n if (isDefined(cellFormatTag)) {\r\n for (var i = 0; i < this._cellFormatTags.length; i++) {\r\n if (cellFormatHelper.areEqual(this._cellFormatTags[i], cellFormatTag)) {\r\n result = i;\r\n break\r\n }\r\n }\r\n if (void 0 === result) {\r\n result = this._cellFormatTags.push(cellFormatTag) - 1\r\n }\r\n }\r\n return result\r\n }\r\n static copyCellFormat(source) {\r\n return cellFormatHelper.copy(source)\r\n }\r\n generateCellFormatsXml() {\r\n var cellFormatTagsAsXmlStringsArray = this._cellFormatTags.map(tag => cellFormatHelper.toXml(tag));\r\n return tagHelper.toXml(\"cellXfs\", {\r\n count: cellFormatTagsAsXmlStringsArray.length\r\n }, cellFormatTagsAsXmlStringsArray.join(\"\"))\r\n }\r\n registerFill(fill) {\r\n var result;\r\n var fillTag = fillHelper.tryCreateTag(fill);\r\n if (isDefined(fillTag)) {\r\n for (var i = 0; i < this._fillTags.length; i++) {\r\n if (fillHelper.areEqual(this._fillTags[i], fillTag)) {\r\n result = i;\r\n break\r\n }\r\n }\r\n if (void 0 === result) {\r\n if (this._fillTags.length < 2) {\r\n this._fillTags.push(fillHelper.tryCreateTag({\r\n patternFill: {\r\n patternType: \"Gray125\"\r\n }\r\n }))\r\n }\r\n result = this._fillTags.push(fillTag) - 1\r\n }\r\n }\r\n return result\r\n }\r\n generateFillsXml() {\r\n var tagsAsXmlStringsArray = this._fillTags.map(tag => fillHelper.toXml(tag));\r\n return tagHelper.toXml(\"fills\", {\r\n count: tagsAsXmlStringsArray.length\r\n }, tagsAsXmlStringsArray.join(\"\"))\r\n }\r\n registerFont(font) {\r\n var result;\r\n var fontTag = fontHelper.tryCreateTag(font);\r\n if (isDefined(fontTag)) {\r\n for (var i = 0; i < this._fontTags.length; i++) {\r\n if (fontHelper.areEqual(this._fontTags[i], fontTag)) {\r\n result = i;\r\n break\r\n }\r\n }\r\n if (void 0 === result) {\r\n result = this._fontTags.push(fontTag) - 1\r\n }\r\n }\r\n return result\r\n }\r\n generateFontsXml() {\r\n var xmlStringsArray = this._fontTags.map(tag => fontHelper.toXml(tag));\r\n return tagHelper.toXml(\"fonts\", {\r\n count: xmlStringsArray.length\r\n }, xmlStringsArray.join(\"\"))\r\n }\r\n _convertNumberFormatIndexToId(index) {\r\n return 165 + index\r\n }\r\n registerNumberFormat(numberFormat) {\r\n var result;\r\n var tag = numberFormatHelper.tryCreateTag(numberFormat);\r\n if (isDefined(tag)) {\r\n for (var i = 0; i < this._numberFormatTags.length; i++) {\r\n if (numberFormatHelper.areEqual(this._numberFormatTags[i], tag)) {\r\n result = this._numberFormatTags[i][numberFormatHelper.ID_PROPERTY_NAME];\r\n break\r\n }\r\n }\r\n if (void 0 === result) {\r\n tag[numberFormatHelper.ID_PROPERTY_NAME] = this._convertNumberFormatIndexToId(this._numberFormatTags.length);\r\n result = tag[numberFormatHelper.ID_PROPERTY_NAME];\r\n this._numberFormatTags.push(tag)\r\n }\r\n }\r\n return result\r\n }\r\n generateNumberFormatsXml() {\r\n if (this._numberFormatTags.length > 0) {\r\n var xmlStringsArray = this._numberFormatTags.map(tag => numberFormatHelper.toXml(tag));\r\n return tagHelper.toXml(\"numFmts\", {\r\n count: xmlStringsArray.length\r\n }, xmlStringsArray.join(\"\"))\r\n } else {\r\n return \"\"\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/exporter/excel_creator.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../core/class\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n isDefined,\r\n isString,\r\n isDate,\r\n isBoolean,\r\n isObject,\r\n isFunction\r\n} from \"../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport errors from \"../ui/widget/ui.errors\";\r\nimport {\r\n encodeHtml\r\n} from \"../core/utils/string\";\r\nimport JSZip from \"jszip\";\r\nimport {\r\n MIME_TYPES\r\n} from \"./file_saver\";\r\nimport excelFormatConverter from \"./excel_format_converter\";\r\nimport ExcelFile from \"./excel/excel.file\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar XML_TAG = '';\r\nvar GROUP_SHEET_PR_XML = '';\r\nvar SINGLE_SHEET_PR_XML = \"\";\r\nvar BASE_STYLE_XML2 = '';\r\nvar OPEN_XML_FORMAT_URL = \"http://schemas.openxmlformats.org\";\r\nvar RELATIONSHIP_PART_NAME = \"rels\";\r\nvar XL_FOLDER_NAME = \"xl\";\r\nvar WORKBOOK_FILE_NAME = \"workbook.xml\";\r\nvar CONTENTTYPES_FILE_NAME = \"[Content_Types].xml\";\r\nvar SHAREDSTRING_FILE_NAME = \"sharedStrings.xml\";\r\nvar STYLE_FILE_NAME = \"styles.xml\";\r\nvar WORKSHEETS_FOLDER = \"worksheets\";\r\nvar WORKSHEET_FILE_NAME = \"sheet1.xml\";\r\nvar WORKSHEET_HEADER_XML = '';\r\nvar VALID_TYPES = {\r\n boolean: \"b\",\r\n date: \"d\",\r\n number: \"n\",\r\n string: \"s\"\r\n};\r\nvar EXCEL_START_TIME = Date.UTC(1899, 11, 30);\r\nvar DAYS_COUNT_BEFORE_29_FEB_1900 = 60;\r\nvar MAX_DIGIT_WIDTH_IN_PIXELS = 7;\r\nvar UNSUPPORTED_FORMAT_MAPPING = {\r\n quarter: \"shortDate\",\r\n quarterAndYear: \"shortDate\",\r\n minute: \"longTime\",\r\n millisecond: \"longTime\"\r\n};\r\nexport var ExcelCreator = Class.inherit({\r\n _getXMLTag: function(tagName, attributes, content) {\r\n var result = \"<\" + tagName;\r\n var i;\r\n var length = attributes.length;\r\n var attr;\r\n for (i = 0; i < length; i++) {\r\n attr = attributes[i];\r\n if (void 0 !== attr.value) {\r\n result = result + \" \" + attr.name + '=\"' + attr.value + '\"'\r\n }\r\n }\r\n return isDefined(content) ? result + \">\" + content + \"\" : result + \" />\"\r\n },\r\n _convertToExcelCellRef: function(zeroBasedRowIndex, zeroBasedCellIndex) {\r\n var columnName = \"\";\r\n var charCode;\r\n var isCellIndexFound;\r\n while (!isCellIndexFound) {\r\n charCode = 65 + (zeroBasedCellIndex >= 26 ? zeroBasedCellIndex % 26 : Math.ceil(zeroBasedCellIndex));\r\n columnName = String.fromCharCode(charCode) + columnName;\r\n if (zeroBasedCellIndex >= 26) {\r\n zeroBasedCellIndex = Math.floor(zeroBasedCellIndex / 26) - 1\r\n } else {\r\n isCellIndexFound = true\r\n }\r\n }\r\n return columnName + (zeroBasedRowIndex + 1)\r\n },\r\n _convertToExcelCellRefAndTrackMaxIndex: function(rowIndex, cellIndex) {\r\n if (this._maxRowIndex < Number(rowIndex)) {\r\n this._maxRowIndex = Number(rowIndex)\r\n }\r\n if (this._maxColumnIndex < Number(cellIndex)) {\r\n this._maxColumnIndex = Number(cellIndex)\r\n }\r\n return this._convertToExcelCellRef(rowIndex, cellIndex)\r\n },\r\n _getDataType: function(dataType) {\r\n return VALID_TYPES[dataType] || VALID_TYPES.string\r\n },\r\n _tryGetExcelCellDataType: function(object) {\r\n if (isDefined(object)) {\r\n if (\"number\" === typeof object) {\r\n if (isFinite(object)) {\r\n return VALID_TYPES.number\r\n } else {\r\n return VALID_TYPES.string\r\n }\r\n } else if (isString(object)) {\r\n return VALID_TYPES.string\r\n } else if (isDate(object)) {\r\n return VALID_TYPES.number\r\n } else if (isBoolean(object)) {\r\n return VALID_TYPES.boolean\r\n }\r\n }\r\n },\r\n _formatObjectConverter: function(format, dataType) {\r\n var result = {\r\n format: format,\r\n precision: format && format.precision,\r\n dataType: dataType\r\n };\r\n if (isObject(format)) {\r\n return extend(result, format, {\r\n format: format.formatter || format.type,\r\n currency: format.currency\r\n })\r\n }\r\n return result\r\n },\r\n _tryConvertToExcelNumberFormat: function(format, dataType) {\r\n var newFormat = this._formatObjectConverter(format, dataType);\r\n format = newFormat.format;\r\n var currency = newFormat.currency;\r\n dataType = newFormat.dataType;\r\n if (isDefined(format) && \"date\" === dataType) {\r\n format = UNSUPPORTED_FORMAT_MAPPING[format && format.type || format] || format\r\n }\r\n return excelFormatConverter.convertFormat(format, newFormat.precision, dataType, currency)\r\n },\r\n _appendString: function(value) {\r\n if (isDefined(value)) {\r\n value = String(value);\r\n if (value.length) {\r\n value = encodeHtml(value);\r\n if (void 0 === this._stringHash[value]) {\r\n this._stringHash[value] = this._stringArray.length;\r\n this._stringArray.push(value)\r\n }\r\n return this._stringHash[value]\r\n }\r\n }\r\n },\r\n _tryGetExcelDateValue: function(date) {\r\n var days;\r\n var totalTime;\r\n if (isDate(date)) {\r\n days = Math.floor((Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - EXCEL_START_TIME) / 864e5);\r\n if (days < DAYS_COUNT_BEFORE_29_FEB_1900) {\r\n days--\r\n }\r\n totalTime = (3600 * date.getHours() + 60 * date.getMinutes() + date.getSeconds()) / 86400;\r\n return days + totalTime\r\n }\r\n },\r\n _prepareValue: function(rowIndex, cellIndex) {\r\n var dataProvider = this._dataProvider;\r\n var {\r\n cellSourceData: cellSourceData\r\n } = dataProvider.getCellData(rowIndex, cellIndex) || {};\r\n var {\r\n value: value\r\n } = dataProvider.getCellData(rowIndex, cellIndex) || {};\r\n var sourceValue;\r\n var type = this._getDataType(dataProvider.getCellType(rowIndex, cellIndex));\r\n if (type === VALID_TYPES.date && !isDate(value)) {\r\n type = VALID_TYPES.string\r\n }\r\n switch (type) {\r\n case VALID_TYPES.string:\r\n sourceValue = value;\r\n value = this._appendString(value);\r\n break;\r\n case VALID_TYPES.date:\r\n sourceValue = value;\r\n value = this._tryGetExcelDateValue(value);\r\n type = VALID_TYPES.number\r\n }\r\n return {\r\n value: value,\r\n type: type,\r\n sourceValue: sourceValue,\r\n cellSourceData: cellSourceData\r\n }\r\n },\r\n _callCustomizeExcelCell: function(_ref) {\r\n var {\r\n dataProvider: dataProvider,\r\n value: value,\r\n style: style,\r\n sourceData: sourceData\r\n } = _ref;\r\n var styleCopy = ExcelFile.copyCellFormat(style);\r\n var args = {\r\n value: value,\r\n numberFormat: styleCopy.numberFormat,\r\n clearStyle: function() {\r\n this.horizontalAlignment = null;\r\n this.verticalAlignment = null;\r\n this.wrapTextEnabled = null;\r\n this.font = null;\r\n this.numberFormat = null\r\n }\r\n };\r\n if (isDefined(styleCopy)) {\r\n if (isDefined(styleCopy.alignment)) {\r\n args.horizontalAlignment = styleCopy.alignment.horizontal;\r\n args.verticalAlignment = styleCopy.alignment.vertical;\r\n args.wrapTextEnabled = styleCopy.alignment.wrapText\r\n }\r\n args.backgroundColor = styleCopy.backgroundColor;\r\n args.fillPatternType = styleCopy.fillPatternType;\r\n args.fillPatternColor = styleCopy.fillPatternColor;\r\n args.font = styleCopy.font\r\n }\r\n dataProvider.customizeExcelCell(args, sourceData);\r\n var newStyle = styleCopy || {};\r\n newStyle.font = args.font;\r\n newStyle.alignment = newStyle.alignment || {};\r\n newStyle.alignment.horizontal = args.horizontalAlignment;\r\n newStyle.alignment.vertical = args.verticalAlignment;\r\n newStyle.alignment.wrapText = args.wrapTextEnabled;\r\n newStyle.backgroundColor = args.backgroundColor;\r\n newStyle.fillPatternType = args.fillPatternType;\r\n newStyle.fillPatternColor = args.fillPatternColor;\r\n newStyle.numberFormat = args.numberFormat;\r\n return {\r\n value: args.value,\r\n style: newStyle\r\n }\r\n },\r\n _getDataArray: function() {\r\n var rowIndex;\r\n var cellIndex;\r\n var cellsArray;\r\n var cellData;\r\n var result = [];\r\n var dataProvider = this._dataProvider;\r\n var rowsLength = dataProvider.getRowsCount();\r\n var columns = dataProvider.getColumns();\r\n var cellsLength;\r\n for (rowIndex = 0; rowIndex < rowsLength; rowIndex++) {\r\n cellsArray = [];\r\n cellsLength = columns.length;\r\n for (cellIndex = 0; cellIndex !== cellsLength; cellIndex++) {\r\n cellData = this._prepareValue(rowIndex, cellIndex);\r\n var styleArrayIndex = dataProvider.getStyleId(rowIndex, cellIndex);\r\n var cellStyleId = this._styleArrayIndexToCellStyleIdMap[styleArrayIndex];\r\n if (dataProvider.hasCustomizeExcelCell && dataProvider.hasCustomizeExcelCell()) {\r\n var value = cellData.sourceValue || cellData.value;\r\n var modifiedExcelCell = this._callCustomizeExcelCell({\r\n dataProvider: dataProvider,\r\n value: value,\r\n style: this._styleArray[styleArrayIndex],\r\n sourceData: cellData.cellSourceData\r\n });\r\n if (modifiedExcelCell.value !== value) {\r\n if (typeof modifiedExcelCell.value !== typeof value || \"number\" === typeof modifiedExcelCell.value && !isFinite(modifiedExcelCell.value)) {\r\n var cellDataType = this._tryGetExcelCellDataType(modifiedExcelCell.value);\r\n if (isDefined(cellDataType)) {\r\n cellData.type = cellDataType\r\n }\r\n }\r\n switch (cellData.type) {\r\n case VALID_TYPES.string:\r\n cellData.value = this._appendString(modifiedExcelCell.value);\r\n break;\r\n case VALID_TYPES.date:\r\n cellData.value = modifiedExcelCell.value;\r\n break;\r\n case VALID_TYPES.number:\r\n var newValue = modifiedExcelCell.value;\r\n var excelDateValue = this._tryGetExcelDateValue(newValue);\r\n if (isDefined(excelDateValue)) {\r\n newValue = excelDateValue\r\n }\r\n cellData.value = newValue;\r\n break;\r\n default:\r\n cellData.value = modifiedExcelCell.value\r\n }\r\n }\r\n cellStyleId = this._excelFile.registerCellFormat(modifiedExcelCell.style)\r\n }\r\n cellsArray.push({\r\n style: cellStyleId,\r\n value: cellData.value,\r\n type: cellData.type\r\n })\r\n }\r\n if (!this._needSheetPr && dataProvider.getGroupLevel(rowIndex) > 0) {\r\n this._needSheetPr = true\r\n }\r\n result.push(cellsArray)\r\n }\r\n return result\r\n },\r\n _calculateWidth: function(pixelsWidth) {\r\n pixelsWidth = parseInt(pixelsWidth, 10);\r\n if (!pixelsWidth || pixelsWidth < 5) {\r\n pixelsWidth = 100\r\n }\r\n return Math.min(255, Math.floor((pixelsWidth - 5) / MAX_DIGIT_WIDTH_IN_PIXELS * 100 + .5) / 100)\r\n },\r\n _prepareStyleData: function() {\r\n var that = this;\r\n var styles = that._dataProvider.getStyles();\r\n that._dataProvider.getColumns().forEach((function(column) {\r\n that._colsArray.push(that._calculateWidth(column.width))\r\n }));\r\n var fonts = [{\r\n size: 11,\r\n color: {\r\n theme: 1\r\n },\r\n name: \"Calibri\",\r\n family: 2,\r\n scheme: \"minor\",\r\n bold: false\r\n }, {\r\n size: 11,\r\n color: {\r\n theme: 1\r\n },\r\n name: \"Calibri\",\r\n family: 2,\r\n scheme: \"minor\",\r\n bold: true\r\n }];\r\n this._excelFile.registerFont(fonts[0]);\r\n this._excelFile.registerFont(fonts[1]);\r\n styles.forEach((function(style) {\r\n var numberFormat = that._tryConvertToExcelNumberFormat(style.format, style.dataType);\r\n if (!isDefined(numberFormat)) {\r\n numberFormat = 0\r\n }\r\n that._styleArray.push({\r\n font: fonts[Number(!!style.bold)],\r\n numberFormat: numberFormat,\r\n alignment: {\r\n vertical: \"top\",\r\n wrapText: !!style.wrapText,\r\n horizontal: style.alignment || \"left\"\r\n }\r\n })\r\n }));\r\n that._styleArrayIndexToCellStyleIdMap = that._styleArray.map(item => this._excelFile.registerCellFormat(item))\r\n },\r\n _prepareCellData: function() {\r\n this._cellsArray = this._getDataArray()\r\n },\r\n _createXMLRelationships: function(xmlRelationships) {\r\n return this._getXMLTag(\"Relationships\", [{\r\n name: \"xmlns\",\r\n value: OPEN_XML_FORMAT_URL + \"/package/2006/relationships\"\r\n }], xmlRelationships)\r\n },\r\n _createXMLRelationship: function(id, type, target) {\r\n return this._getXMLTag(\"Relationship\", [{\r\n name: \"Id\",\r\n value: \"rId\" + id\r\n }, {\r\n name: \"Type\",\r\n value: OPEN_XML_FORMAT_URL + \"/officeDocument/2006/relationships/\" + type\r\n }, {\r\n name: \"Target\",\r\n value: target\r\n }])\r\n },\r\n _getWorkbookContent: function() {\r\n return XML_TAG + this._getXMLTag(\"workbook\", [{\r\n name: \"xmlns:r\",\r\n value: OPEN_XML_FORMAT_URL + \"/officeDocument/2006/relationships\"\r\n }, {\r\n name: \"xmlns\",\r\n value: OPEN_XML_FORMAT_URL + \"/spreadsheetml/2006/main\"\r\n }], 'Sheet!$1:$1')\r\n },\r\n _getContentTypesContent: function() {\r\n return XML_TAG + ''\r\n },\r\n _generateStylesXML: function() {\r\n var folder = this._zip.folder(XL_FOLDER_NAME);\r\n var XML = \"\";\r\n XML += this._excelFile.generateNumberFormatsXml();\r\n XML += this._excelFile.generateFontsXml();\r\n XML += this._excelFile.generateFillsXml();\r\n XML += BASE_STYLE_XML2;\r\n XML += this._excelFile.generateCellFormatsXml();\r\n XML += this._getXMLTag(\"cellStyles\", [{\r\n name: \"count\",\r\n value: 1\r\n }], this._getXMLTag(\"cellStyle\", [{\r\n name: \"name\",\r\n value: \"Normal\"\r\n }, {\r\n name: \"xfId\",\r\n value: 0\r\n }, {\r\n name: \"builtinId\",\r\n value: 0\r\n }]));\r\n XML = XML_TAG + this._getXMLTag(\"styleSheet\", [{\r\n name: \"xmlns\",\r\n value: OPEN_XML_FORMAT_URL + \"/spreadsheetml/2006/main\"\r\n }], XML);\r\n folder.file(STYLE_FILE_NAME, XML);\r\n this._styleArray = []\r\n },\r\n _generateStringsXML: function() {\r\n var folder = this._zip.folder(XL_FOLDER_NAME);\r\n var stringIndex;\r\n var stringsLength = this._stringArray.length;\r\n var sharedStringXml = XML_TAG;\r\n for (stringIndex = 0; stringIndex < stringsLength; stringIndex++) {\r\n this._stringArray[stringIndex] = this._getXMLTag(\"si\", [], this._getXMLTag(\"t\", [], this._stringArray[stringIndex]))\r\n }\r\n sharedStringXml += this._getXMLTag(\"sst\", [{\r\n name: \"xmlns\",\r\n value: OPEN_XML_FORMAT_URL + \"/spreadsheetml/2006/main\"\r\n }, {\r\n name: \"count\",\r\n value: this._stringArray.length\r\n }, {\r\n name: \"uniqueCount\",\r\n value: this._stringArray.length\r\n }], this._stringArray.join(\"\"));\r\n folder.file(SHAREDSTRING_FILE_NAME, sharedStringXml);\r\n this._stringArray = []\r\n },\r\n _getPaneXML: function() {\r\n var attributes = [{\r\n name: \"activePane\",\r\n value: \"bottomLeft\"\r\n }, {\r\n name: \"state\",\r\n value: \"frozen\"\r\n }];\r\n var frozenArea = this._dataProvider.getFrozenArea();\r\n if (!(frozenArea.x || frozenArea.y)) {\r\n return \"\"\r\n }\r\n if (frozenArea.x) {\r\n attributes.push({\r\n name: \"xSplit\",\r\n value: frozenArea.x\r\n })\r\n }\r\n if (frozenArea.y) {\r\n attributes.push({\r\n name: \"ySplit\",\r\n value: frozenArea.y\r\n })\r\n }\r\n attributes.push({\r\n name: \"topLeftCell\",\r\n value: this._convertToExcelCellRefAndTrackMaxIndex(frozenArea.y, frozenArea.x)\r\n });\r\n return this._getXMLTag(\"pane\", attributes)\r\n },\r\n _getAutoFilterXML: function(maxCellIndex) {\r\n if (this._options.autoFilterEnabled) {\r\n return ''\r\n }\r\n return \"\"\r\n },\r\n _getIgnoredErrorsXML: function(maxCellIndex) {\r\n if (this._options.ignoreErrors) {\r\n return ''\r\n }\r\n return \"\"\r\n },\r\n _generateWorksheetXML: function() {\r\n var colIndex;\r\n var rowIndex;\r\n var cellData;\r\n var xmlCells;\r\n var xmlRows = [];\r\n var rowsLength = this._cellsArray.length;\r\n var cellsLength;\r\n var colsLength = this._colsArray.length;\r\n var rSpans = \"1:\" + colsLength;\r\n var headerRowCount = this._dataProvider.getHeaderRowCount ? this._dataProvider.getHeaderRowCount() : 1;\r\n var xmlResult = [WORKSHEET_HEADER_XML];\r\n xmlResult.push(this._needSheetPr ? GROUP_SHEET_PR_XML : SINGLE_SHEET_PR_XML);\r\n xmlResult.push('');\r\n xmlResult.push(\"');\r\n xmlResult.push(this._getPaneXML());\r\n xmlResult.push(\"\");\r\n xmlResult.push(' 0 ? this._dataProvider.getGroupLevel(0) : 0) + '\"');\r\n xmlResult.push(' x14ac:dyDescent=\"0.25\"/>');\r\n for (colIndex = 0; colIndex < colsLength; colIndex++) {\r\n this._colsArray[colIndex] = this._getXMLTag(\"col\", [{\r\n name: \"width\",\r\n value: this._colsArray[colIndex]\r\n }, {\r\n name: \"min\",\r\n value: Number(colIndex) + 1\r\n }, {\r\n name: \"max\",\r\n value: Number(colIndex) + 1\r\n }, {\r\n name: \"customWidth\",\r\n value: 1\r\n }])\r\n }\r\n xmlResult.push(this._getXMLTag(\"cols\", [], this._colsArray.join(\"\")) + \"\");\r\n for (rowIndex = 0; rowIndex < rowsLength; rowIndex++) {\r\n xmlCells = [];\r\n cellsLength = this._cellsArray[rowIndex].length;\r\n for (colIndex = 0; colIndex < cellsLength; colIndex++) {\r\n rowIndex = Number(rowIndex);\r\n cellData = this._cellsArray[rowIndex][colIndex];\r\n xmlCells.push(this._getXMLTag(\"c\", [{\r\n name: \"r\",\r\n value: this._convertToExcelCellRefAndTrackMaxIndex(rowIndex, colIndex)\r\n }, {\r\n name: \"s\",\r\n value: cellData.style\r\n }, {\r\n name: \"t\",\r\n value: cellData.type\r\n }], isDefined(cellData.value) ? this._getXMLTag(\"v\", [], cellData.value) : null))\r\n }\r\n xmlRows.push(this._getXMLTag(\"row\", [{\r\n name: \"r\",\r\n value: Number(rowIndex) + 1\r\n }, {\r\n name: \"spans\",\r\n value: rSpans\r\n }, {\r\n name: \"outlineLevel\",\r\n value: rowIndex >= headerRowCount ? this._dataProvider.getGroupLevel(rowIndex) : 0\r\n }, {\r\n name: \"x14ac:dyDescent\",\r\n value: \"0.25\"\r\n }], xmlCells.join(\"\")));\r\n this._cellsArray[rowIndex] = null;\r\n if (xmlRows.length > 1e4) {\r\n xmlResult.push(xmlRows.join(\"\"));\r\n xmlRows = []\r\n }\r\n }\r\n xmlResult.push(xmlRows.join(\"\"));\r\n xmlRows = [];\r\n var rightBottomCellRef = this._convertToExcelCellRef(this._maxRowIndex, this._maxColumnIndex);\r\n xmlResult.push(\"\" + this._getAutoFilterXML(rightBottomCellRef) + this._generateMergingXML() + this._getIgnoredErrorsXML(rightBottomCellRef) + \"\");\r\n this._zip.folder(XL_FOLDER_NAME).folder(WORKSHEETS_FOLDER).file(WORKSHEET_FILE_NAME, xmlResult.join(\"\"));\r\n this._colsArray = [];\r\n this._cellsArray = [];\r\n xmlResult = []\r\n },\r\n _generateMergingXML: function() {\r\n var k;\r\n var l;\r\n var cellIndex;\r\n var rowIndex;\r\n var rowsLength = isDefined(this._dataProvider.getHeaderRowCount) ? this._dataProvider.getHeaderRowCount() : this._dataProvider.getRowsCount();\r\n var columnsLength = this._dataProvider.getColumns().length;\r\n var usedArea = [];\r\n var mergeArray = [];\r\n var mergeIndex;\r\n var mergeXML = \"\";\r\n for (rowIndex = 0; rowIndex < rowsLength; rowIndex++) {\r\n for (cellIndex = 0; cellIndex !== columnsLength; cellIndex++) {\r\n if (!isDefined(usedArea[rowIndex]) || !isDefined(usedArea[rowIndex][cellIndex])) {\r\n var cellMerge = this._dataProvider.getCellMerging(rowIndex, cellIndex);\r\n if (cellMerge.colspan || cellMerge.rowspan) {\r\n mergeArray.push({\r\n start: this._convertToExcelCellRefAndTrackMaxIndex(rowIndex, cellIndex),\r\n end: this._convertToExcelCellRefAndTrackMaxIndex(rowIndex + (cellMerge.rowspan || 0), cellIndex + (cellMerge.colspan || 0))\r\n });\r\n for (k = rowIndex; k <= rowIndex + cellMerge.rowspan || 0; k++) {\r\n for (l = cellIndex; l <= cellIndex + cellMerge.colspan || 0; l++) {\r\n if (!isDefined(usedArea[k])) {\r\n usedArea[k] = []\r\n }\r\n usedArea[k][l] = true\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n var mergeArrayLength = mergeArray.length;\r\n for (mergeIndex = 0; mergeIndex < mergeArrayLength; mergeIndex++) {\r\n mergeXML += this._getXMLTag(\"mergeCell\", [{\r\n name: \"ref\",\r\n value: mergeArray[mergeIndex].start + \":\" + mergeArray[mergeIndex].end\r\n }])\r\n }\r\n return mergeXML.length ? this._getXMLTag(\"mergeCells\", [{\r\n name: \"count\",\r\n value: mergeArrayLength\r\n }], mergeXML) : \"\"\r\n },\r\n _generateCommonXML: function() {\r\n var relsFileContent = XML_TAG + this._createXMLRelationships(this._createXMLRelationship(1, \"officeDocument\", \"xl/\" + WORKBOOK_FILE_NAME));\r\n var folder = this._zip.folder(XL_FOLDER_NAME);\r\n var relsXML = XML_TAG;\r\n this._zip.folder(\"_\" + RELATIONSHIP_PART_NAME).file(\".\" + RELATIONSHIP_PART_NAME, relsFileContent);\r\n var xmlRelationships = this._createXMLRelationship(1, \"worksheet\", \"worksheets/\" + WORKSHEET_FILE_NAME) + this._createXMLRelationship(2, \"styles\", STYLE_FILE_NAME) + this._createXMLRelationship(3, \"sharedStrings\", SHAREDSTRING_FILE_NAME);\r\n relsXML += this._createXMLRelationships(xmlRelationships);\r\n folder.folder(\"_\" + RELATIONSHIP_PART_NAME).file(WORKBOOK_FILE_NAME + \".rels\", relsXML);\r\n folder.file(WORKBOOK_FILE_NAME, this._getWorkbookContent());\r\n this._zip.file(CONTENTTYPES_FILE_NAME, this._getContentTypesContent())\r\n },\r\n _generateContent: function() {\r\n this._prepareStyleData();\r\n this._prepareCellData();\r\n this._generateWorkXML();\r\n this._generateCommonXML()\r\n },\r\n _generateWorkXML: function() {\r\n this._generateStylesXML();\r\n this._generateStringsXML();\r\n this._generateWorksheetXML()\r\n },\r\n ctor: function(dataProvider, options) {\r\n this._rtlEnabled = options && !!options.rtlEnabled;\r\n this._options = options;\r\n this._maxRowIndex = 0;\r\n this._maxColumnIndex = 0;\r\n this._stringArray = [];\r\n this._stringHash = {};\r\n this._styleArray = [];\r\n this._colsArray = [];\r\n this._cellsArray = [];\r\n this._needSheetPr = false;\r\n this._dataProvider = dataProvider;\r\n this._excelFile = new ExcelFile;\r\n if (isDefined(ExcelCreator.JSZip)) {\r\n this._zip = new ExcelCreator.JSZip\r\n } else {\r\n this._zip = null\r\n }\r\n },\r\n _checkZipState: function() {\r\n if (!this._zip) {\r\n throw errors.Error(\"E1041\", \"JSZip\")\r\n }\r\n },\r\n ready: function() {\r\n return this._dataProvider.ready()\r\n },\r\n getData: function(isBlob) {\r\n var options = {\r\n type: isBlob ? \"blob\" : \"base64\",\r\n compression: \"DEFLATE\",\r\n mimeType: MIME_TYPES.EXCEL\r\n };\r\n var deferred = new Deferred;\r\n this._checkZipState();\r\n this._generateContent();\r\n if (this._zip.generateAsync) {\r\n this._zip.generateAsync(options).then(deferred.resolve)\r\n } else {\r\n deferred.resolve(this._zip.generate(options))\r\n }\r\n return deferred\r\n }\r\n});\r\nExcelCreator.JSZip = JSZip;\r\nexport function getData(data, options) {\r\n var excelCreator = new ExcelCreator(data, options);\r\n excelCreator._checkZipState();\r\n return excelCreator.ready().then(() => excelCreator.getData(isFunction(getWindow().Blob)))\r\n}\r\n","/**\r\n * DevExtreme (esm/exporter/image_creator.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport Color from \"../color\";\r\nimport {\r\n isFunction,\r\n isPromise,\r\n isDefined\r\n} from \"../core/utils/type\";\r\nimport {\r\n getSvgElement\r\n} from \"../core/utils/svg\";\r\nimport {\r\n each as _each,\r\n map as _map\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport {\r\n contains\r\n} from \"../core/utils/dom\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nvar window = getWindow();\r\nimport {\r\n camelize\r\n} from \"../core/utils/inflector\";\r\nimport {\r\n Deferred,\r\n fromPromise\r\n} from \"../core/utils/deferred\";\r\nvar _math = Math;\r\nvar PI = _math.PI;\r\nvar _min = _math.min;\r\nvar _abs = _math.abs;\r\nvar _sqrt = _math.sqrt;\r\nvar _pow = _math.pow;\r\nvar _atan2 = _math.atan2;\r\nvar _cos = _math.cos;\r\nvar _sin = _math.sin;\r\nvar _number = Number;\r\nvar IMAGE_QUALITY = 1;\r\nvar TEXT_DECORATION_LINE_WIDTH_COEFF = .05;\r\nvar DEFAULT_FONT_SIZE = \"10px\";\r\nvar DEFAULT_FONT_FAMILY = \"sans-serif\";\r\nvar DEFAULT_TEXT_COLOR = \"#000\";\r\nvar parseAttributes;\r\n\r\nfunction createCanvas(width, height, margin) {\r\n var canvas = $(\"\")[0];\r\n canvas.width = width + 2 * margin;\r\n canvas.height = height + 2 * margin;\r\n canvas.hidden = true;\r\n return canvas\r\n}\r\n\r\nfunction getStringFromCanvas(canvas, mimeType) {\r\n var dataURL = canvas.toDataURL(mimeType, IMAGE_QUALITY);\r\n var imageData = window.atob(dataURL.substring((\"data:\" + mimeType + \";base64,\").length));\r\n return imageData\r\n}\r\n\r\nfunction arcTo(x1, y1, x2, y2, radius, largeArcFlag, clockwise, context) {\r\n var cBx = (x1 + x2) / 2;\r\n var cBy = (y1 + y2) / 2;\r\n var aB = _atan2(y1 - y2, x1 - x2);\r\n var k = largeArcFlag ? 1 : -1;\r\n aB += PI / 180 * 90 * (clockwise ? 1 : -1);\r\n var opSide = _sqrt(_pow(x2 - x1, 2) + _pow(y2 - y1, 2)) / 2;\r\n var adjSide = _sqrt(_abs(_pow(radius, 2) - _pow(opSide, 2)));\r\n var centerX = cBx + k * (adjSide * _cos(aB));\r\n var centerY = cBy + k * (adjSide * _sin(aB));\r\n var startAngle = _atan2(y1 - centerY, x1 - centerX);\r\n var endAngle = _atan2(y2 - centerY, x2 - centerX);\r\n context.arc(centerX, centerY, radius, startAngle, endAngle, !clockwise)\r\n}\r\n\r\nfunction getElementOptions(element, rootAppended) {\r\n var attr = parseAttributes(element.attributes || {});\r\n var options = extend({}, attr, {\r\n text: element.textContent.replace(/\\s+/g, \" \"),\r\n textAlign: \"middle\" === attr[\"text-anchor\"] ? \"center\" : attr[\"text-anchor\"]\r\n });\r\n var transform = attr.transform;\r\n var coords;\r\n if (transform) {\r\n coords = transform.match(/translate\\(-*\\d+([.]\\d+)*(,*\\s*-*\\d+([.]\\d+)*)*/);\r\n if (coords) {\r\n coords = coords[0].match(/-*\\d+([.]\\d+)*/g);\r\n options.translateX = _number(coords[0]);\r\n options.translateY = coords[1] ? _number(coords[1]) : 0\r\n }\r\n coords = transform.match(/rotate\\(-*\\d+([.]\\d+)*(,*\\s*-*\\d+([.]\\d+)*,*\\s*-*\\d+([.]\\d+)*)*/);\r\n if (coords) {\r\n coords = coords[0].match(/-*\\d+([.]\\d+)*/g);\r\n options.rotationAngle = _number(coords[0]);\r\n options.rotationX = coords[1] && _number(coords[1]);\r\n options.rotationY = coords[2] && _number(coords[2])\r\n }\r\n coords = transform.match(/scale\\(-*\\d+([.]\\d+)*(,*\\s*-*\\d+([.]\\d+)*)*/);\r\n if (coords) {\r\n coords = coords[0].match(/-*\\d+([.]\\d+)*/g);\r\n options.scaleX = _number(coords[0]);\r\n if (coords.length > 1) {\r\n options.scaleY = _number(coords[1])\r\n } else {\r\n options.scaleY = options.scaleX\r\n }\r\n }\r\n }\r\n parseStyles(element, options, rootAppended);\r\n return options\r\n}\r\n\r\nfunction drawRect(context, options) {\r\n var x = options.x;\r\n var y = options.y;\r\n var width = options.width;\r\n var height = options.height;\r\n var cornerRadius = options.rx;\r\n if (!cornerRadius) {\r\n context.rect(x, y, width, height)\r\n } else {\r\n cornerRadius = _min(cornerRadius, width / 2, height / 2);\r\n context.save();\r\n context.translate(x, y);\r\n context.moveTo(width / 2, 0);\r\n context.arcTo(width, 0, width, height, cornerRadius);\r\n context.arcTo(width, height, 0, height, cornerRadius);\r\n context.arcTo(0, height, 0, 0, cornerRadius);\r\n context.arcTo(0, 0, cornerRadius, 0, cornerRadius);\r\n context.lineTo(width / 2, 0);\r\n context.restore()\r\n }\r\n}\r\n\r\nfunction drawImage(context, options, shared) {\r\n var d = new Deferred;\r\n var image = new window.Image;\r\n image.onload = function() {\r\n context.save();\r\n context.globalAlpha = options.globalAlpha;\r\n transformElement(context, options);\r\n clipElement(context, options, shared);\r\n context.drawImage(image, options.x, options.y, options.width, options.height);\r\n context.restore();\r\n d.resolve()\r\n };\r\n image.onerror = function() {\r\n d.resolve()\r\n };\r\n image.setAttribute(\"crossOrigin\", \"anonymous\");\r\n image.src = options.href || options[\"xlink:href\"];\r\n return d\r\n}\r\n\r\nfunction drawPath(context, dAttr) {\r\n var dArray = dAttr.replace(/,/g, \" \").split(/([A-Z])/i).filter(item => \"\" !== item.trim());\r\n var i = 0;\r\n var params;\r\n var prevParams;\r\n var prevParamsLen;\r\n do {\r\n params = (dArray[i + 1] || \"\").trim().split(\" \");\r\n switch (dArray[i]) {\r\n case \"M\":\r\n context.moveTo(_number(params[0]), _number(params[1]));\r\n i += 2;\r\n break;\r\n case \"L\":\r\n for (var j = 0; j < params.length / 2; j++) {\r\n context.lineTo(_number(params[2 * j]), _number(params[2 * j + 1]))\r\n }\r\n i += 2;\r\n break;\r\n case \"C\":\r\n context.bezierCurveTo(_number(params[0]), _number(params[1]), _number(params[2]), _number(params[3]), _number(params[4]), _number(params[5]));\r\n i += 2;\r\n break;\r\n case \"a\":\r\n prevParams = dArray[i - 1].trim().split(\" \");\r\n prevParamsLen = prevParams.length - 1;\r\n arcTo(_number(prevParams[prevParamsLen - 1]), _number(prevParams[prevParamsLen]), _number(prevParams[prevParamsLen - 1]) + _number(params[5]), _number(prevParams[prevParamsLen]) + _number(params[6]), _number(params[0]), _number(params[3]), _number(params[4]), context);\r\n i += 2;\r\n break;\r\n case \"A\":\r\n prevParams = dArray[i - 1].trim().split(\" \");\r\n prevParamsLen = prevParams.length - 1;\r\n arcTo(_number(prevParams[prevParamsLen - 1]), _number(prevParams[prevParamsLen]), _number(params[5]), _number(params[6]), _number(params[0]), _number(params[3]), _number(params[4]), context);\r\n i += 2;\r\n break;\r\n case \"Z\":\r\n context.closePath();\r\n i += 1;\r\n break;\r\n default:\r\n i++\r\n }\r\n } while (i < dArray.length)\r\n}\r\n\r\nfunction parseStyles(element, options, rootAppended) {\r\n var style = element.style || {};\r\n var field;\r\n for (field in style) {\r\n if (\"\" !== style[field]) {\r\n options[camelize(field)] = style[field]\r\n }\r\n }\r\n if (rootAppended && domAdapter.isElementNode(element)) {\r\n style = window.getComputedStyle(element);\r\n [\"fill\", \"stroke\", \"stroke-width\", \"font-family\", \"font-size\", \"font-style\", \"font-weight\"].forEach((function(prop) {\r\n if (prop in style && \"\" !== style[prop]) {\r\n options[camelize(prop)] = style[prop]\r\n }\r\n }));\r\n [\"opacity\", \"fill-opacity\", \"stroke-opacity\"].forEach((function(prop) {\r\n if (prop in style && \"\" !== style[prop] && \"1\" !== style[prop]) {\r\n options[prop] = _number(style[prop])\r\n }\r\n }))\r\n }\r\n options.textDecoration = options.textDecoration || options.textDecorationLine;\r\n options.globalAlpha = isDefined(options.opacity) ? options.opacity : options.globalAlpha\r\n}\r\n\r\nfunction parseUrl(urlString) {\r\n var matches = urlString && urlString.match(/url\\(.*#(.*?)[\"']?\\)/i);\r\n return matches && matches[1]\r\n}\r\n\r\nfunction setFontStyle(context, options) {\r\n var fontParams = [];\r\n options.fontSize = options.fontSize || DEFAULT_FONT_SIZE;\r\n options.fontFamily = options.fontFamily || DEFAULT_FONT_FAMILY;\r\n options.fill = options.fill || DEFAULT_TEXT_COLOR;\r\n options.fontStyle && fontParams.push(options.fontStyle);\r\n options.fontWeight && fontParams.push(options.fontWeight);\r\n fontParams.push(options.fontSize);\r\n fontParams.push(options.fontFamily);\r\n context.font = fontParams.join(\" \");\r\n context.textAlign = options.textAlign;\r\n context.fillStyle = options.fill;\r\n context.globalAlpha = options.globalAlpha\r\n}\r\n\r\nfunction drawText(context, options, shared) {\r\n setFontStyle(context, options);\r\n applyFilter(context, options, shared);\r\n options.text && context.fillText(options.text, options.x || 0, options.y || 0);\r\n strokeElement(context, options, true);\r\n drawTextDecoration(context, options, shared)\r\n}\r\n\r\nfunction drawTextDecoration(context, options, shared) {\r\n if (!options.textDecoration || \"none\" === options.textDecoration) {\r\n return\r\n }\r\n var x = options.x;\r\n var textWidth = context.measureText(options.text).width;\r\n var textHeight = parseInt(options.fontSize, 10);\r\n var lineHeight = textHeight * TEXT_DECORATION_LINE_WIDTH_COEFF < 1 ? 1 : textHeight * TEXT_DECORATION_LINE_WIDTH_COEFF;\r\n var y = options.y;\r\n switch (options.textDecoration) {\r\n case \"line-through\":\r\n y -= textHeight / 3 + lineHeight / 2;\r\n break;\r\n case \"overline\":\r\n y -= textHeight - lineHeight;\r\n break;\r\n case \"underline\":\r\n y += lineHeight\r\n }\r\n context.rect(x, y, textWidth, lineHeight);\r\n fillElement(context, options, shared);\r\n strokeElement(context, options)\r\n}\r\n\r\nfunction aggregateOpacity(options) {\r\n options.strokeOpacity = void 0 !== options[\"stroke-opacity\"] ? options[\"stroke-opacity\"] : 1;\r\n options.fillOpacity = void 0 !== options[\"fill-opacity\"] ? options[\"fill-opacity\"] : 1;\r\n if (void 0 !== options.opacity) {\r\n options.strokeOpacity *= options.opacity;\r\n options.fillOpacity *= options.opacity\r\n }\r\n}\r\n\r\nfunction hasTspan(element) {\r\n var nodes = element.childNodes;\r\n for (var i = 0; i < nodes.length; i++) {\r\n if (\"tspan\" === nodes[i].tagName) {\r\n return true\r\n }\r\n }\r\n return false\r\n}\r\n\r\nfunction drawTextElement(childNodes, context, options, shared) {\r\n var lines = [];\r\n var line;\r\n var offset = 0;\r\n for (var i = 0; i < childNodes.length; i++) {\r\n var element = childNodes[i];\r\n if (void 0 === element.tagName) {\r\n drawElement(element, context, options, shared)\r\n } else if (\"tspan\" === element.tagName || \"text\" === element.tagName) {\r\n var elementOptions = getElementOptions(element, shared.rootAppended);\r\n var mergedOptions = extend({}, options, elementOptions);\r\n if (\"tspan\" === element.tagName && hasTspan(element)) {\r\n drawTextElement(element.childNodes, context, mergedOptions, shared);\r\n continue\r\n }\r\n mergedOptions.textAlign = \"start\";\r\n if (!line || void 0 !== elementOptions.x) {\r\n line = {\r\n elements: [],\r\n options: [],\r\n widths: [],\r\n offsets: []\r\n };\r\n lines.push(line)\r\n }\r\n if (void 0 !== elementOptions.y) {\r\n offset = 0\r\n }\r\n if (void 0 !== elementOptions.dy) {\r\n offset += parseFloat(elementOptions.dy)\r\n }\r\n line.elements.push(element);\r\n line.options.push(mergedOptions);\r\n line.offsets.push(offset);\r\n setFontStyle(context, mergedOptions);\r\n line.widths.push(context.measureText(mergedOptions.text).width)\r\n }\r\n }\r\n lines.forEach((function(line) {\r\n var commonWidth = line.widths.reduce((function(commonWidth, width) {\r\n return commonWidth + width\r\n }), 0);\r\n var xDiff = 0;\r\n var currentOffset = 0;\r\n if (\"center\" === options.textAlign) {\r\n xDiff = commonWidth / 2\r\n }\r\n if (\"end\" === options.textAlign) {\r\n xDiff = commonWidth\r\n }\r\n line.options.forEach((function(o, index) {\r\n var width = line.widths[index];\r\n o.x = o.x - xDiff + currentOffset;\r\n o.y += line.offsets[index];\r\n currentOffset += width\r\n }));\r\n line.elements.forEach((function(element, index) {\r\n drawTextElement(element.childNodes, context, line.options[index], shared)\r\n }))\r\n }))\r\n}\r\n\r\nfunction drawElement(element, context, parentOptions, shared) {\r\n var tagName = element.tagName;\r\n var isText = \"text\" === tagName || \"tspan\" === tagName || void 0 === tagName;\r\n var isImage = \"image\" === tagName;\r\n var options = extend({}, parentOptions, getElementOptions(element, shared.rootAppended));\r\n if (\"hidden\" === options.visibility || options[\"hidden-for-export\"]) {\r\n return\r\n }\r\n context.save();\r\n !isImage && transformElement(context, options);\r\n clipElement(context, options, shared);\r\n aggregateOpacity(options);\r\n var promise;\r\n context.beginPath();\r\n switch (element.tagName) {\r\n case void 0:\r\n drawText(context, options, shared);\r\n break;\r\n case \"text\":\r\n case \"tspan\":\r\n drawTextElement(element.childNodes, context, options, shared);\r\n break;\r\n case \"image\":\r\n promise = drawImage(context, options, shared);\r\n break;\r\n case \"path\":\r\n drawPath(context, options.d);\r\n break;\r\n case \"rect\":\r\n drawRect(context, options);\r\n context.closePath();\r\n break;\r\n case \"circle\":\r\n context.arc(options.cx, options.cy, options.r, 0, 2 * PI, 1)\r\n }\r\n if (!isText) {\r\n applyFilter(context, options, shared);\r\n fillElement(context, options, shared);\r\n strokeElement(context, options)\r\n }\r\n applyGradient(context, options, shared, element);\r\n context.restore();\r\n return promise\r\n}\r\n\r\nfunction applyGradient(context, options, _ref, element) {\r\n var {\r\n gradients: gradients\r\n } = _ref;\r\n if (0 === gradients.length) {\r\n return\r\n }\r\n var id = parseUrl(options.fill);\r\n if (id && gradients[id]) {\r\n var box = element.getBBox();\r\n var gradient = context.createLinearGradient(box.x, 0, box.x + box.width, 0);\r\n gradients[id].forEach(opt => {\r\n var offset = parseInt(opt.offset.replace(/%/, \"\"));\r\n gradient.addColorStop(offset / 100, opt.stopColor)\r\n });\r\n context.globalAlpha = options.opacity;\r\n context.fillStyle = gradient;\r\n context.fill()\r\n }\r\n}\r\n\r\nfunction applyFilter(context, options, shared) {\r\n var filterOptions;\r\n var id = parseUrl(options.filter);\r\n if (id) {\r\n filterOptions = shared.filters[id];\r\n if (!filterOptions) {\r\n filterOptions = {\r\n offsetX: 0,\r\n offsetY: 0,\r\n blur: 0,\r\n color: \"#000\"\r\n }\r\n }\r\n context.shadowOffsetX = filterOptions.offsetX;\r\n context.shadowOffsetY = filterOptions.offsetY;\r\n context.shadowColor = filterOptions.color;\r\n context.shadowBlur = filterOptions.blur\r\n }\r\n}\r\n\r\nfunction transformElement(context, options) {\r\n context.translate(options.translateX || 0, options.translateY || 0);\r\n options.translateX = void 0;\r\n options.translateY = void 0;\r\n if (options.rotationAngle) {\r\n context.translate(options.rotationX || 0, options.rotationY || 0);\r\n context.rotate(options.rotationAngle * PI / 180);\r\n context.translate(-(options.rotationX || 0), -(options.rotationY || 0));\r\n options.rotationAngle = void 0;\r\n options.rotationX = void 0;\r\n options.rotationY = void 0\r\n }\r\n if (isFinite(options.scaleX)) {\r\n context.scale(options.scaleX, options.scaleY);\r\n options.scaleX = void 0;\r\n options.scaleY = void 0\r\n }\r\n}\r\n\r\nfunction clipElement(context, options, shared) {\r\n if (options[\"clip-path\"]) {\r\n drawElement(shared.clipPaths[parseUrl(options[\"clip-path\"])], context, {}, shared);\r\n context.clip();\r\n options[\"clip-path\"] = void 0\r\n }\r\n}\r\n\r\nfunction hex2rgba(hexColor, alpha) {\r\n var color = new Color(hexColor);\r\n return \"rgba(\" + color.r + \",\" + color.g + \",\" + color.b + \",\" + alpha + \")\"\r\n}\r\n\r\nfunction createGradient(element) {\r\n var options = [];\r\n _each(element.childNodes, (_, _ref2) => {\r\n var {\r\n attributes: attributes\r\n } = _ref2;\r\n options.push({\r\n offset: attributes.offset.value,\r\n stopColor: attributes[\"stop-color\"].value\r\n })\r\n });\r\n return options\r\n}\r\n\r\nfunction createFilter(element) {\r\n var color;\r\n var opacity;\r\n var filterOptions = {};\r\n _each(element.childNodes, (function(_, node) {\r\n var attr = node.attributes;\r\n if (!attr.result) {\r\n return\r\n }\r\n switch (attr.result.value) {\r\n case \"gaussianBlurResult\":\r\n filterOptions.blur = _number(attr.stdDeviation.value);\r\n break;\r\n case \"offsetResult\":\r\n filterOptions.offsetX = _number(attr.dx.value);\r\n filterOptions.offsetY = _number(attr.dy.value);\r\n break;\r\n case \"floodResult\":\r\n color = attr[\"flood-color\"] ? attr[\"flood-color\"].value : \"#000\";\r\n opacity = attr[\"flood-opacity\"] ? attr[\"flood-opacity\"].value : 1;\r\n filterOptions.color = hex2rgba(color, opacity)\r\n }\r\n }));\r\n return filterOptions\r\n}\r\n\r\nfunction asyncEach(array, callback) {\r\n var d = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : new Deferred;\r\n var i = 0;\r\n for (; i < array.length; i++) {\r\n var result = callback(array[i]);\r\n if (isPromise(result)) {\r\n result.then(() => {\r\n asyncEach(Array.prototype.slice.call(array, i + 1), callback, d)\r\n });\r\n break\r\n }\r\n }\r\n if (i === array.length) {\r\n d.resolve()\r\n }\r\n return d\r\n}\r\n\r\nfunction drawCanvasElements(elements, context, parentOptions, shared) {\r\n return asyncEach(elements, (function(element) {\r\n switch (element.tagName && element.tagName.toLowerCase()) {\r\n case \"g\":\r\n case \"svg\":\r\n var options = extend({}, parentOptions, getElementOptions(element, shared.rootAppended));\r\n context.save();\r\n transformElement(context, options);\r\n clipElement(context, options, shared);\r\n var onDone = () => {\r\n context.restore()\r\n };\r\n var d = drawCanvasElements(element.childNodes, context, options, shared);\r\n if (isPromise(d)) {\r\n d.then(onDone)\r\n } else {\r\n onDone()\r\n }\r\n return d;\r\n case \"defs\":\r\n return drawCanvasElements(element.childNodes, context, {}, shared);\r\n case \"clippath\":\r\n shared.clipPaths[element.attributes.id.textContent] = element.childNodes[0];\r\n break;\r\n case \"pattern\":\r\n shared.patterns[element.attributes.id.textContent] = element;\r\n break;\r\n case \"filter\":\r\n shared.filters[element.id] = createFilter(element);\r\n break;\r\n case \"lineargradient\":\r\n shared.gradients[element.attributes.id.textContent] = createGradient(element);\r\n break;\r\n default:\r\n return drawElement(element, context, parentOptions, shared)\r\n }\r\n }))\r\n}\r\n\r\nfunction setLineDash(context, options) {\r\n var matches = options[\"stroke-dasharray\"] && options[\"stroke-dasharray\"].match(/(\\d+)/g);\r\n if (matches && matches.length) {\r\n matches = _map(matches, (function(item) {\r\n return _number(item)\r\n }));\r\n context.setLineDash(matches)\r\n }\r\n}\r\n\r\nfunction strokeElement(context, options, isText) {\r\n var stroke = options.stroke;\r\n if (stroke && \"none\" !== stroke && 0 !== options[\"stroke-width\"]) {\r\n setLineDash(context, options);\r\n context.lineJoin = options[\"stroke-linejoin\"];\r\n context.lineWidth = options[\"stroke-width\"];\r\n context.globalAlpha = options.strokeOpacity;\r\n context.strokeStyle = stroke;\r\n isText ? context.strokeText(options.text, options.x, options.y) : context.stroke();\r\n context.globalAlpha = 1\r\n }\r\n}\r\n\r\nfunction getPattern(context, pattern, shared) {\r\n var options = getElementOptions(pattern, shared.rootAppended);\r\n var patternCanvas = createCanvas(options.width, options.height, 0);\r\n var patternContext = patternCanvas.getContext(\"2d\");\r\n drawCanvasElements(pattern.childNodes, patternContext, options, shared);\r\n return context.createPattern(patternCanvas, \"repeat\")\r\n}\r\n\r\nfunction fillElement(context, options, shared) {\r\n var fill = options.fill;\r\n if (fill && \"none\" !== fill) {\r\n if (-1 === fill.search(/url/)) {\r\n context.fillStyle = fill\r\n } else {\r\n var pattern = shared.patterns[parseUrl(fill)];\r\n if (!pattern) {\r\n return\r\n }\r\n context.fillStyle = getPattern(context, pattern, shared)\r\n }\r\n context.globalAlpha = options.fillOpacity;\r\n context.fill();\r\n context.globalAlpha = 1\r\n }\r\n}\r\nparseAttributes = function(attributes) {\r\n var newAttributes = {};\r\n var attr;\r\n _each(attributes, (function(index, item) {\r\n attr = item.textContent;\r\n if (isFinite(attr)) {\r\n attr = _number(attr)\r\n }\r\n newAttributes[item.name.toLowerCase()] = attr\r\n }));\r\n return newAttributes\r\n};\r\n\r\nfunction drawBackground(context, width, height, backgroundColor, margin) {\r\n context.fillStyle = backgroundColor || \"#ffffff\";\r\n context.fillRect(-margin, -margin, width + 2 * margin, height + 2 * margin)\r\n}\r\n\r\nfunction createInvisibleDiv() {\r\n var invisibleDiv = domAdapter.createElement(\"div\");\r\n invisibleDiv.style.left = \"-9999px\";\r\n invisibleDiv.style.position = \"absolute\";\r\n return invisibleDiv\r\n}\r\n\r\nfunction convertSvgToCanvas(svg, canvas, rootAppended) {\r\n return drawCanvasElements(svg.childNodes, canvas.getContext(\"2d\"), {}, {\r\n clipPaths: {},\r\n patterns: {},\r\n filters: {},\r\n gradients: {},\r\n rootAppended: rootAppended\r\n })\r\n}\r\n\r\nfunction getCanvasFromSvg(markup, width, height, backgroundColor, margin, pixelRatio) {\r\n var svgToCanvas = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : convertSvgToCanvas;\r\n var canvas = createCanvas(width, height, margin);\r\n var context = canvas.getContext(\"2d\");\r\n context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\r\n var svgElem = getSvgElement(markup);\r\n var invisibleDiv;\r\n var markupIsDomElement = domAdapter.isElementNode(markup);\r\n context.translate(margin, margin);\r\n domAdapter.getBody().appendChild(canvas);\r\n if (!markupIsDomElement) {\r\n invisibleDiv = createInvisibleDiv();\r\n invisibleDiv.appendChild(svgElem);\r\n domAdapter.getBody().appendChild(invisibleDiv)\r\n }\r\n if (svgElem.attributes.direction) {\r\n canvas.dir = svgElem.attributes.direction.textContent\r\n }\r\n drawBackground(context, width, height, backgroundColor, margin);\r\n return fromPromise(svgToCanvas(svgElem, canvas, markupIsDomElement && contains(domAdapter.getBody(), markup))).then(() => canvas).always(() => {\r\n invisibleDiv && domAdapter.getBody().removeChild(invisibleDiv);\r\n domAdapter.getBody().removeChild(canvas)\r\n })\r\n}\r\nexport var imageCreator = {\r\n getImageData: function(markup, options) {\r\n var pixelRatio = window.devicePixelRatio || 1;\r\n var mimeType = \"image/\" + options.format;\r\n var width = options.width * pixelRatio;\r\n var height = options.height * pixelRatio;\r\n var backgroundColor = options.backgroundColor;\r\n if (isFunction(options.__parseAttributesFn)) {\r\n parseAttributes = options.__parseAttributesFn\r\n }\r\n return getCanvasFromSvg(markup, width, height, backgroundColor, options.margin, pixelRatio, options.svgToCanvas).then(canvas => getStringFromCanvas(canvas, mimeType))\r\n },\r\n getData: function(markup, options) {\r\n var that = this;\r\n return imageCreator.getImageData(markup, options).then(binaryData => {\r\n var mimeType = \"image/\" + options.format;\r\n var data = isFunction(window.Blob) && !options.forceProxy ? that._getBlob(binaryData, mimeType) : that._getBase64(binaryData);\r\n return data\r\n })\r\n },\r\n _getBlob: function(binaryData, mimeType) {\r\n var i;\r\n var dataArray = new Uint8Array(binaryData.length);\r\n for (i = 0; i < binaryData.length; i++) {\r\n dataArray[i] = binaryData.charCodeAt(i)\r\n }\r\n return new window.Blob([dataArray.buffer], {\r\n type: mimeType\r\n })\r\n },\r\n _getBase64: function(binaryData) {\r\n return window.btoa(binaryData)\r\n }\r\n};\r\nexport function getData(data, options) {\r\n return imageCreator.getData(data, options)\r\n}\r\nexport function testFormats(formats) {\r\n var canvas = createCanvas(100, 100, 0);\r\n return formats.reduce((function(r, f) {\r\n var mimeType = (\"image/\" + f).toLowerCase();\r\n if (-1 !== canvas.toDataURL(mimeType).indexOf(mimeType)) {\r\n r.supported.push(f)\r\n } else {\r\n r.unsupported.push(f)\r\n }\r\n return r\r\n }), {\r\n supported: [],\r\n unsupported: []\r\n })\r\n}\r\n","/**\r\n * DevExtreme (esm/exporter/svg_creator.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport ajax from \"../core/utils/ajax\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nvar window = getWindow();\r\nimport {\r\n isFunction\r\n} from \"../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n getSvgElement,\r\n getSvgMarkup\r\n} from \"../core/utils/svg\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nexport var svgCreator = {\r\n _markup: \"\",\r\n _imageArray: {},\r\n _imageDeferreds: [],\r\n _getBinaryFile: function(src, callback) {\r\n ajax.sendRequest({\r\n url: src,\r\n method: \"GET\",\r\n responseType: \"arraybuffer\"\r\n }).done(callback).fail((function() {\r\n callback(false)\r\n }))\r\n },\r\n _loadImages: function() {\r\n var that = this;\r\n each(that._imageArray, (function(src) {\r\n var deferred = new Deferred;\r\n that._imageDeferreds.push(deferred);\r\n that._getBinaryFile(src, (function(response) {\r\n if (!response) {\r\n delete that._imageArray[src];\r\n deferred.resolve();\r\n return\r\n }\r\n var i;\r\n var binary = \"\";\r\n var bytes = new Uint8Array(response);\r\n var length = bytes.byteLength;\r\n for (i = 0; i < length; i++) {\r\n binary += String.fromCharCode(bytes[i])\r\n }\r\n that._imageArray[src] = \"data:image/png;base64,\" + window.btoa(binary);\r\n deferred.resolve()\r\n }))\r\n }))\r\n },\r\n _parseImages: function(element) {\r\n var href;\r\n var that = this;\r\n if (\"image\" === element.tagName) {\r\n href = $(element).attr(\"href\") || $(element).attr(\"xlink:href\");\r\n if (!that._imageArray[href]) {\r\n that._imageArray[href] = \"\"\r\n }\r\n }\r\n each(element.childNodes, (function(_, element) {\r\n that._parseImages(element)\r\n }))\r\n },\r\n _prepareImages: function(svgElem) {\r\n this._parseImages(svgElem);\r\n this._loadImages();\r\n return when.apply($, this._imageDeferreds)\r\n },\r\n getData: function(data, options) {\r\n var markup;\r\n var that = this;\r\n var svgElem = getSvgElement(data);\r\n var $svgObject = $(svgElem);\r\n markup = '' + getSvgMarkup($svgObject.get(0), options.backgroundColor);\r\n return that._prepareImages(svgElem).then(() => {\r\n each(that._imageArray, (function(href, dataURI) {\r\n var regexpString = \"href=['|\\\"]\".concat(href, \"['|\\\"]\");\r\n markup = markup.replace(new RegExp(regexpString, \"gi\"), 'href=\"'.concat(dataURI, '\"'))\r\n }));\r\n return isFunction(window.Blob) ? that._getBlob(markup) : that._getBase64(markup)\r\n })\r\n },\r\n _getBlob: function(markup) {\r\n return new window.Blob([markup], {\r\n type: \"image/svg+xml\"\r\n })\r\n },\r\n _getBase64: function(markup) {\r\n return window.btoa(markup)\r\n }\r\n};\r\nexport function getData(data, options) {\r\n return svgCreator.getData(data, options)\r\n}\r\n","/**\r\n * DevExtreme (esm/exporter/pdf_creator.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n version\r\n} from \"../core/version\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nvar window = getWindow();\r\nimport {\r\n imageCreator\r\n} from \"./image_creator\";\r\nimport {\r\n isFunction\r\n} from \"../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nvar mainPageTemplate = \"%PDF-1.3\\r\\n2 0 obj\\r\\n<>>>\\r\\nendobj\\r\\n4 0 obj\\r\\n<>\\r\\nendobj\\r\\n7 0 obj\\r\\n<>\\r\\nendobj\\r\\n1 0 obj\\r\\n<>\\r\\nendobj\\r\\n\";\r\nvar contentTemplate = \"3 0 obj\\r\\n<>stream\\r\\n0.20 w\\n0 G\\nq _width_ 0 0 _height_ 0.00 0.00 cm /I0 Do Q\\r\\nendstream\\r\\nendobj\\r\\n\";\r\nvar infoTemplate = \"6 0 obj\\r\\n<>\\r\\nendobj\\r\\n\";\r\nvar imageStartTemplate = \"5 0 obj\\r\\n<>stream\\r\\n\";\r\nvar imageEndTemplate = \"\\r\\nendstream\\r\\nendobj\\r\\n\";\r\nvar trailerTemplate = \"trailer\\r\\n<<\\r\\n/Size 8\\r\\n/Root 7 0 R\\r\\n/Info 6 0 R\\r\\n>>\\r\\nstartxref\\r\\n_length_\\r\\n%%EOF\";\r\nvar xrefTemplate = \"xref\\r\\n0 8\\r\\n0000000000 65535 f\\r\\n0000000241 00000 n\\r\\n0000000010 00000 n\\r\\n_main_ 00000 n\\r\\n0000000089 00000 n\\r\\n_image_ 00000 n\\r\\n_info_ 00000 n\\r\\n0000000143 00000 n\\r\\n\";\r\nvar pad = function pad(str, len) {\r\n return str.length < len ? pad(\"0\" + str, len) : str\r\n};\r\nvar composePdfString = function(imageString, options, curDate) {\r\n var margin = 2 * (options.margin || 0);\r\n var width = options.width + margin;\r\n var height = options.height + margin;\r\n var widthPt = (.75 * width).toFixed(2);\r\n var heightPt = (.75 * height).toFixed(2);\r\n var mainPage = mainPageTemplate.replace(\"_width_\", widthPt).replace(\"_height_\", heightPt);\r\n var content = contentTemplate.replace(\"_width_\", widthPt).replace(\"_height_\", heightPt);\r\n var info = infoTemplate.replace(\"_date_\", curDate).replace(\"_version_\", version);\r\n var image = imageStartTemplate.replace(\"_width_\", width).replace(\"_height_\", height).replace(\"_length_\", imageString.length) + imageString + imageEndTemplate;\r\n var xref = getXref(mainPage.length, content.length, info.length);\r\n var mainContent = mainPage + content + info + image;\r\n var trailer = trailerTemplate.replace(\"_length_\", mainContent.length);\r\n return mainContent + xref + trailer\r\n};\r\n\r\nfunction getXref(mainPageLength, contentLength, infoLength) {\r\n return xrefTemplate.replace(\"_main_\", pad(mainPageLength + \"\", 10)).replace(\"_info_\", pad(mainPageLength + contentLength + \"\", 10)).replace(\"_image_\", pad(mainPageLength + contentLength + infoLength + \"\", 10))\r\n}\r\nvar getCurDate = function() {\r\n return new Date\r\n};\r\nvar getBlob = function(binaryData) {\r\n var i = 0;\r\n var dataArray = new Uint8Array(binaryData.length);\r\n for (; i < binaryData.length; i++) {\r\n dataArray[i] = binaryData.charCodeAt(i)\r\n }\r\n return new window.Blob([dataArray.buffer], {\r\n type: \"application/pdf\"\r\n })\r\n};\r\nvar getBase64 = function(binaryData) {\r\n return window.btoa(binaryData)\r\n};\r\nexport function getData(data, options) {\r\n return imageCreator.getImageData(data, extend({}, options, {\r\n format: \"JPEG\"\r\n })).then(imageString => {\r\n var binaryData = composePdfString(imageString, options, getCurDate());\r\n var pdfData = isFunction(window.Blob) ? getBlob(binaryData) : getBase64(binaryData);\r\n return pdfData\r\n })\r\n}\r\n","/**\r\n * DevExtreme (esm/exporter.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n fileSaver\r\n} from \"./exporter/file_saver\";\r\nimport {\r\n ExcelCreator,\r\n getData as getExcelData\r\n} from \"./exporter/excel_creator\";\r\nimport {\r\n imageCreator,\r\n testFormats,\r\n getData as getImageData\r\n} from \"./exporter/image_creator\";\r\nimport {\r\n svgCreator,\r\n getData as getSvgData\r\n} from \"./exporter/svg_creator\";\r\nimport {\r\n isFunction as _isFunction\r\n} from \"./core/utils/type\";\r\nimport {\r\n Deferred\r\n} from \"./core/utils/deferred\";\r\nimport formatConverter from \"./exporter/excel_format_converter\";\r\nimport {\r\n getData\r\n} from \"./exporter/pdf_creator\";\r\n\r\nfunction _export(data, options, getData) {\r\n if (!data) {\r\n return (new Deferred).resolve()\r\n }\r\n var exportingAction = options.exportingAction;\r\n var exportedAction = options.exportedAction;\r\n var fileSavingAction = options.fileSavingAction;\r\n var eventArgs = {\r\n fileName: options.fileName,\r\n format: options.format,\r\n cancel: false\r\n };\r\n _isFunction(exportingAction) && exportingAction(eventArgs);\r\n if (!eventArgs.cancel) {\r\n return getData(data, options).then(blob => {\r\n _isFunction(exportedAction) && exportedAction();\r\n if (_isFunction(fileSavingAction)) {\r\n eventArgs.data = blob;\r\n fileSavingAction(eventArgs)\r\n }\r\n if (!eventArgs.cancel) {\r\n fileSaver.saveAs(eventArgs.fileName, options.format, blob, options.proxyUrl, options.forceProxy)\r\n }\r\n })\r\n }\r\n return (new Deferred).resolve()\r\n}\r\nexport {\r\n _export as\r\n export, fileSaver\r\n};\r\nexport var excel = {\r\n creator: ExcelCreator,\r\n getData: getExcelData,\r\n formatConverter: formatConverter\r\n};\r\nexport var image = {\r\n creator: imageCreator,\r\n getData: getImageData,\r\n testFormats: testFormats\r\n};\r\nexport var pdf = {\r\n getData: getData\r\n};\r\nexport var svg = {\r\n creator: svgCreator,\r\n getData: getSvgData\r\n};\r\n","/*!\n * devextreme-vue\n * Version: 21.1.5\n * Build date: Mon Aug 02 2021\n *\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-vue\n */\n\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DxMy = exports.DxMasterDetail = exports.DxLookup = exports.DxLoadPanel = exports.DxLabel = exports.DxKeyboardNavigation = exports.DxHide = exports.DxHeaderFilter = exports.DxGroupPanel = exports.DxGroupOperationDescriptions = exports.DxGroupItem = exports.DxGroupingTexts = exports.DxGrouping = exports.DxFormItem = exports.DxFormat = exports.DxForm = exports.DxFilterRow = exports.DxFilterPanelTexts = exports.DxFilterPanel = exports.DxFilterOperationDescriptions = exports.DxFilterBuilderPopup = exports.DxFilterBuilder = exports.DxFieldLookup = exports.DxField = exports.DxExportTexts = exports.DxExport = exports.DxEmailRule = exports.DxEditingTexts = exports.DxEditing = exports.DxDataGridHeaderFilterTexts = exports.DxDataGridHeaderFilter = exports.DxCustomRule = exports.DxCustomOperation = exports.DxCursorOffset = exports.DxCompareRule = exports.DxColumnLookup = exports.DxColumnHeaderFilter = exports.DxColumnFixingTexts = exports.DxColumnFixing = exports.DxColumnChooser = exports.DxColumn = exports.DxCollision = exports.DxColCountByScreen = exports.DxChange = exports.DxButton = exports.DxBoundaryOffset = exports.DxAt = exports.DxAsyncRule = exports.DxAnimation = exports.DxDataGrid = void 0;\nexports.DxValueFormat = exports.DxValidationRule = exports.DxTotalItem = exports.DxToolbarItem = exports.DxTexts = exports.DxSummaryTexts = exports.DxSummary = exports.DxStringLengthRule = exports.DxStateStoring = exports.DxSorting = exports.DxSortByGroupSummaryInfo = exports.DxShow = exports.DxSelection = exports.DxSearchPanel = exports.DxScrolling = exports.DxRowDragging = exports.DxRequiredRule = exports.DxRemoteOperations = exports.DxRangeRule = exports.DxPosition = exports.DxPopup = exports.DxPatternRule = exports.DxPaging = exports.DxPager = exports.DxOperationDescriptions = exports.DxOffset = exports.DxNumericRule = void 0;\nvar data_grid_1 = __importDefault(require(\"devextreme/ui/data_grid\"));\nvar index_1 = require(\"./core/index\");\nvar index_2 = require(\"./core/index\");\nvar DxDataGrid = index_1.createComponent({\n props: {\n accessKey: String,\n activeStateEnabled: Boolean,\n allowColumnReordering: Boolean,\n allowColumnResizing: Boolean,\n autoNavigateToFocusedRow: Boolean,\n cacheEnabled: Boolean,\n cellHintEnabled: Boolean,\n columnAutoWidth: Boolean,\n columnChooser: Object,\n columnFixing: Object,\n columnHidingEnabled: Boolean,\n columnMinWidth: Number,\n columnResizingMode: String,\n columns: Array,\n columnWidth: [Number, String],\n customizeColumns: Function,\n dataSource: [Array, Object, String],\n dateSerializationFormat: String,\n disabled: Boolean,\n editing: Object,\n elementAttr: {},\n errorRowEnabled: Boolean,\n export: Object,\n filterBuilder: Object,\n filterBuilderPopup: Object,\n filterPanel: Object,\n filterRow: Object,\n filterSyncEnabled: [Boolean, String],\n filterValue: [Array, Function, String],\n focusedColumnIndex: Number,\n focusedRowEnabled: Boolean,\n focusedRowIndex: Number,\n focusedRowKey: {},\n focusStateEnabled: Boolean,\n grouping: Object,\n groupPanel: Object,\n headerFilter: Object,\n height: [Function, Number, String],\n highlightChanges: Boolean,\n hint: String,\n hoverStateEnabled: Boolean,\n keyboardNavigation: Object,\n keyExpr: [Array, String],\n loadPanel: Object,\n masterDetail: Object,\n noDataText: String,\n onAdaptiveDetailRowPreparing: Function,\n onCellClick: Function,\n onCellDblClick: Function,\n onCellHoverChanged: Function,\n onCellPrepared: Function,\n onContentReady: Function,\n onContextMenuPreparing: Function,\n onDataErrorOccurred: Function,\n onDisposing: Function,\n onEditCanceled: Function,\n onEditCanceling: Function,\n onEditingStart: Function,\n onEditorPrepared: Function,\n onEditorPreparing: Function,\n onExporting: Function,\n onFocusedCellChanged: Function,\n onFocusedCellChanging: Function,\n onFocusedRowChanged: Function,\n onFocusedRowChanging: Function,\n onInitialized: Function,\n onInitNewRow: Function,\n onKeyDown: Function,\n onOptionChanged: Function,\n onRowClick: Function,\n onRowCollapsed: Function,\n onRowCollapsing: Function,\n onRowDblClick: Function,\n onRowExpanded: Function,\n onRowExpanding: Function,\n onRowInserted: Function,\n onRowInserting: Function,\n onRowPrepared: Function,\n onRowRemoved: Function,\n onRowRemoving: Function,\n onRowUpdated: Function,\n onRowUpdating: Function,\n onRowValidating: Function,\n onSaved: Function,\n onSaving: Function,\n onSelectionChanged: Function,\n onToolbarPreparing: Function,\n pager: Object,\n paging: Object,\n remoteOperations: [Boolean, Object, String],\n renderAsync: Boolean,\n repaintChangesOnly: Boolean,\n rowAlternationEnabled: Boolean,\n rowDragging: Object,\n rowTemplate: {},\n rtlEnabled: Boolean,\n scrolling: Object,\n searchPanel: Object,\n selectedRowKeys: Array,\n selection: Object,\n selectionFilter: [Array, Function, String],\n showBorders: Boolean,\n showColumnHeaders: Boolean,\n showColumnLines: Boolean,\n showRowLines: Boolean,\n sortByGroupSummaryInfo: Array,\n sorting: Object,\n stateStoring: Object,\n summary: Object,\n tabIndex: Number,\n twoWayBindingEnabled: Boolean,\n visible: Boolean,\n width: [Function, Number, String],\n wordWrapEnabled: Boolean\n },\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:accessKey\": null,\n \"update:activeStateEnabled\": null,\n \"update:allowColumnReordering\": null,\n \"update:allowColumnResizing\": null,\n \"update:autoNavigateToFocusedRow\": null,\n \"update:cacheEnabled\": null,\n \"update:cellHintEnabled\": null,\n \"update:columnAutoWidth\": null,\n \"update:columnChooser\": null,\n \"update:columnFixing\": null,\n \"update:columnHidingEnabled\": null,\n \"update:columnMinWidth\": null,\n \"update:columnResizingMode\": null,\n \"update:columns\": null,\n \"update:columnWidth\": null,\n \"update:customizeColumns\": null,\n \"update:dataSource\": null,\n \"update:dateSerializationFormat\": null,\n \"update:disabled\": null,\n \"update:editing\": null,\n \"update:elementAttr\": null,\n \"update:errorRowEnabled\": null,\n \"update:export\": null,\n \"update:filterBuilder\": null,\n \"update:filterBuilderPopup\": null,\n \"update:filterPanel\": null,\n \"update:filterRow\": null,\n \"update:filterSyncEnabled\": null,\n \"update:filterValue\": null,\n \"update:focusedColumnIndex\": null,\n \"update:focusedRowEnabled\": null,\n \"update:focusedRowIndex\": null,\n \"update:focusedRowKey\": null,\n \"update:focusStateEnabled\": null,\n \"update:grouping\": null,\n \"update:groupPanel\": null,\n \"update:headerFilter\": null,\n \"update:height\": null,\n \"update:highlightChanges\": null,\n \"update:hint\": null,\n \"update:hoverStateEnabled\": null,\n \"update:keyboardNavigation\": null,\n \"update:keyExpr\": null,\n \"update:loadPanel\": null,\n \"update:masterDetail\": null,\n \"update:noDataText\": null,\n \"update:onAdaptiveDetailRowPreparing\": null,\n \"update:onCellClick\": null,\n \"update:onCellDblClick\": null,\n \"update:onCellHoverChanged\": null,\n \"update:onCellPrepared\": null,\n \"update:onContentReady\": null,\n \"update:onContextMenuPreparing\": null,\n \"update:onDataErrorOccurred\": null,\n \"update:onDisposing\": null,\n \"update:onEditCanceled\": null,\n \"update:onEditCanceling\": null,\n \"update:onEditingStart\": null,\n \"update:onEditorPrepared\": null,\n \"update:onEditorPreparing\": null,\n \"update:onExporting\": null,\n \"update:onFocusedCellChanged\": null,\n \"update:onFocusedCellChanging\": null,\n \"update:onFocusedRowChanged\": null,\n \"update:onFocusedRowChanging\": null,\n \"update:onInitialized\": null,\n \"update:onInitNewRow\": null,\n \"update:onKeyDown\": null,\n \"update:onOptionChanged\": null,\n \"update:onRowClick\": null,\n \"update:onRowCollapsed\": null,\n \"update:onRowCollapsing\": null,\n \"update:onRowDblClick\": null,\n \"update:onRowExpanded\": null,\n \"update:onRowExpanding\": null,\n \"update:onRowInserted\": null,\n \"update:onRowInserting\": null,\n \"update:onRowPrepared\": null,\n \"update:onRowRemoved\": null,\n \"update:onRowRemoving\": null,\n \"update:onRowUpdated\": null,\n \"update:onRowUpdating\": null,\n \"update:onRowValidating\": null,\n \"update:onSaved\": null,\n \"update:onSaving\": null,\n \"update:onSelectionChanged\": null,\n \"update:onToolbarPreparing\": null,\n \"update:pager\": null,\n \"update:paging\": null,\n \"update:remoteOperations\": null,\n \"update:renderAsync\": null,\n \"update:repaintChangesOnly\": null,\n \"update:rowAlternationEnabled\": null,\n \"update:rowDragging\": null,\n \"update:rowTemplate\": null,\n \"update:rtlEnabled\": null,\n \"update:scrolling\": null,\n \"update:searchPanel\": null,\n \"update:selectedRowKeys\": null,\n \"update:selection\": null,\n \"update:selectionFilter\": null,\n \"update:showBorders\": null,\n \"update:showColumnHeaders\": null,\n \"update:showColumnLines\": null,\n \"update:showRowLines\": null,\n \"update:sortByGroupSummaryInfo\": null,\n \"update:sorting\": null,\n \"update:stateStoring\": null,\n \"update:summary\": null,\n \"update:tabIndex\": null,\n \"update:twoWayBindingEnabled\": null,\n \"update:visible\": null,\n \"update:width\": null,\n \"update:wordWrapEnabled\": null,\n },\n computed: {\n instance: function () {\n return this.$_instance;\n }\n },\n beforeCreate: function () {\n this.$_WidgetClass = data_grid_1.default;\n this.$_expectedChildren = {\n column: { isCollectionItem: true, optionName: \"columns\" },\n columnChooser: { isCollectionItem: false, optionName: \"columnChooser\" },\n columnFixing: { isCollectionItem: false, optionName: \"columnFixing\" },\n dataGridHeaderFilter: { isCollectionItem: false, optionName: \"headerFilter\" },\n editing: { isCollectionItem: false, optionName: \"editing\" },\n export: { isCollectionItem: false, optionName: \"export\" },\n filterBuilder: { isCollectionItem: false, optionName: \"filterBuilder\" },\n filterBuilderPopup: { isCollectionItem: false, optionName: \"filterBuilderPopup\" },\n filterPanel: { isCollectionItem: false, optionName: \"filterPanel\" },\n filterRow: { isCollectionItem: false, optionName: \"filterRow\" },\n grouping: { isCollectionItem: false, optionName: \"grouping\" },\n groupPanel: { isCollectionItem: false, optionName: \"groupPanel\" },\n headerFilter: { isCollectionItem: false, optionName: \"headerFilter\" },\n keyboardNavigation: { isCollectionItem: false, optionName: \"keyboardNavigation\" },\n loadPanel: { isCollectionItem: false, optionName: \"loadPanel\" },\n masterDetail: { isCollectionItem: false, optionName: \"masterDetail\" },\n pager: { isCollectionItem: false, optionName: \"pager\" },\n paging: { isCollectionItem: false, optionName: \"paging\" },\n remoteOperations: { isCollectionItem: false, optionName: \"remoteOperations\" },\n rowDragging: { isCollectionItem: false, optionName: \"rowDragging\" },\n scrolling: { isCollectionItem: false, optionName: \"scrolling\" },\n searchPanel: { isCollectionItem: false, optionName: \"searchPanel\" },\n selection: { isCollectionItem: false, optionName: \"selection\" },\n sortByGroupSummaryInfo: { isCollectionItem: true, optionName: \"sortByGroupSummaryInfo\" },\n sorting: { isCollectionItem: false, optionName: \"sorting\" },\n stateStoring: { isCollectionItem: false, optionName: \"stateStoring\" },\n summary: { isCollectionItem: false, optionName: \"summary\" }\n };\n }\n});\nexports.DxDataGrid = DxDataGrid;\nvar DxAnimation = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:hide\": null,\n \"update:show\": null,\n },\n props: {\n hide: Object,\n show: Object\n }\n});\nexports.DxAnimation = DxAnimation;\nDxAnimation.$_optionName = \"animation\";\nDxAnimation.$_expectedChildren = {\n hide: { isCollectionItem: false, optionName: \"hide\" },\n show: { isCollectionItem: false, optionName: \"show\" }\n};\nvar DxAsyncRule = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:ignoreEmptyValue\": null,\n \"update:message\": null,\n \"update:reevaluate\": null,\n \"update:type\": null,\n \"update:validationCallback\": null,\n },\n props: {\n ignoreEmptyValue: Boolean,\n message: String,\n reevaluate: Boolean,\n type: String,\n validationCallback: Function\n }\n});\nexports.DxAsyncRule = DxAsyncRule;\nDxAsyncRule.$_optionName = \"validationRules\";\nDxAsyncRule.$_isCollectionItem = true;\nDxAsyncRule.$_predefinedProps = {\n type: \"async\"\n};\nvar DxAt = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:x\": null,\n \"update:y\": null,\n },\n props: {\n x: String,\n y: String\n }\n});\nexports.DxAt = DxAt;\nDxAt.$_optionName = \"at\";\nvar DxBoundaryOffset = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:x\": null,\n \"update:y\": null,\n },\n props: {\n x: Number,\n y: Number\n }\n});\nexports.DxBoundaryOffset = DxBoundaryOffset;\nDxBoundaryOffset.$_optionName = \"boundaryOffset\";\nvar DxButton = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:cssClass\": null,\n \"update:hint\": null,\n \"update:icon\": null,\n \"update:name\": null,\n \"update:onClick\": null,\n \"update:template\": null,\n \"update:text\": null,\n \"update:visible\": null,\n },\n props: {\n cssClass: String,\n hint: String,\n icon: String,\n name: String,\n onClick: Function,\n template: {},\n text: String,\n visible: [Boolean, Function]\n }\n});\nexports.DxButton = DxButton;\nDxButton.$_optionName = \"buttons\";\nDxButton.$_isCollectionItem = true;\nvar DxChange = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:data\": null,\n \"update:index\": null,\n \"update:pageIndex\": null,\n \"update:type\": null,\n },\n props: {\n data: Object,\n index: Number,\n pageIndex: Number,\n type: String\n }\n});\nexports.DxChange = DxChange;\nDxChange.$_optionName = \"changes\";\nDxChange.$_isCollectionItem = true;\nvar DxColCountByScreen = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:lg\": null,\n \"update:md\": null,\n \"update:sm\": null,\n \"update:xs\": null,\n },\n props: {\n lg: Number,\n md: Number,\n sm: Number,\n xs: Number\n }\n});\nexports.DxColCountByScreen = DxColCountByScreen;\nDxColCountByScreen.$_optionName = \"colCountByScreen\";\nvar DxCollision = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:x\": null,\n \"update:y\": null,\n },\n props: {\n x: String,\n y: String\n }\n});\nexports.DxCollision = DxCollision;\nDxCollision.$_optionName = \"collision\";\nvar DxColumn = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:alignment\": null,\n \"update:allowEditing\": null,\n \"update:allowExporting\": null,\n \"update:allowFiltering\": null,\n \"update:allowFixing\": null,\n \"update:allowGrouping\": null,\n \"update:allowHeaderFiltering\": null,\n \"update:allowHiding\": null,\n \"update:allowReordering\": null,\n \"update:allowResizing\": null,\n \"update:allowSearch\": null,\n \"update:allowSorting\": null,\n \"update:autoExpandGroup\": null,\n \"update:buttons\": null,\n \"update:calculateCellValue\": null,\n \"update:calculateDisplayValue\": null,\n \"update:calculateFilterExpression\": null,\n \"update:calculateGroupValue\": null,\n \"update:calculateSortValue\": null,\n \"update:caption\": null,\n \"update:cellTemplate\": null,\n \"update:columns\": null,\n \"update:cssClass\": null,\n \"update:customizeText\": null,\n \"update:dataField\": null,\n \"update:dataType\": null,\n \"update:editCellTemplate\": null,\n \"update:editorOptions\": null,\n \"update:encodeHtml\": null,\n \"update:falseText\": null,\n \"update:filterOperations\": null,\n \"update:filterType\": null,\n \"update:filterValue\": null,\n \"update:filterValues\": null,\n \"update:fixed\": null,\n \"update:fixedPosition\": null,\n \"update:format\": null,\n \"update:formItem\": null,\n \"update:groupCellTemplate\": null,\n \"update:grouped\": null,\n \"update:groupIndex\": null,\n \"update:headerCellTemplate\": null,\n \"update:headerFilter\": null,\n \"update:hidingPriority\": null,\n \"update:isBand\": null,\n \"update:lookup\": null,\n \"update:minWidth\": null,\n \"update:name\": null,\n \"update:ownerBand\": null,\n \"update:renderAsync\": null,\n \"update:resized\": null,\n \"update:selectedFilterOperation\": null,\n \"update:setCellValue\": null,\n \"update:showEditorAlways\": null,\n \"update:showInColumnChooser\": null,\n \"update:showWhenGrouped\": null,\n \"update:sortIndex\": null,\n \"update:sortingMethod\": null,\n \"update:sortOrder\": null,\n \"update:trueText\": null,\n \"update:type\": null,\n \"update:validationRules\": null,\n \"update:visible\": null,\n \"update:visibleIndex\": null,\n \"update:width\": null,\n },\n props: {\n alignment: String,\n allowEditing: Boolean,\n allowExporting: Boolean,\n allowFiltering: Boolean,\n allowFixing: Boolean,\n allowGrouping: Boolean,\n allowHeaderFiltering: Boolean,\n allowHiding: Boolean,\n allowReordering: Boolean,\n allowResizing: Boolean,\n allowSearch: Boolean,\n allowSorting: Boolean,\n autoExpandGroup: Boolean,\n buttons: Array,\n calculateCellValue: Function,\n calculateDisplayValue: [Function, String],\n calculateFilterExpression: Function,\n calculateGroupValue: [Function, String],\n calculateSortValue: [Function, String],\n caption: String,\n cellTemplate: {},\n columns: Array,\n cssClass: String,\n customizeText: Function,\n dataField: String,\n dataType: String,\n editCellTemplate: {},\n editorOptions: {},\n encodeHtml: Boolean,\n falseText: String,\n filterOperations: Array,\n filterType: String,\n filterValue: {},\n filterValues: Array,\n fixed: Boolean,\n fixedPosition: String,\n format: [Object, Function, String],\n formItem: Object,\n groupCellTemplate: {},\n grouped: Boolean,\n groupIndex: Number,\n headerCellTemplate: {},\n headerFilter: Object,\n hidingPriority: Number,\n isBand: Boolean,\n lookup: Object,\n minWidth: Number,\n name: String,\n ownerBand: Number,\n renderAsync: Boolean,\n resized: Function,\n selectedFilterOperation: String,\n setCellValue: Function,\n showEditorAlways: Boolean,\n showInColumnChooser: Boolean,\n showWhenGrouped: Boolean,\n sortIndex: Number,\n sortingMethod: Function,\n sortOrder: String,\n trueText: String,\n type: String,\n validationRules: Array,\n visible: Boolean,\n visibleIndex: Number,\n width: [Number, String]\n }\n});\nexports.DxColumn = DxColumn;\nDxColumn.$_optionName = \"columns\";\nDxColumn.$_isCollectionItem = true;\nDxColumn.$_expectedChildren = {\n AsyncRule: { isCollectionItem: true, optionName: \"validationRules\" },\n button: { isCollectionItem: true, optionName: \"buttons\" },\n columnHeaderFilter: { isCollectionItem: false, optionName: \"headerFilter\" },\n columnLookup: { isCollectionItem: false, optionName: \"lookup\" },\n CompareRule: { isCollectionItem: true, optionName: \"validationRules\" },\n CustomRule: { isCollectionItem: true, optionName: \"validationRules\" },\n EmailRule: { isCollectionItem: true, optionName: \"validationRules\" },\n format: { isCollectionItem: false, optionName: \"format\" },\n formItem: { isCollectionItem: false, optionName: \"formItem\" },\n headerFilter: { isCollectionItem: false, optionName: \"headerFilter\" },\n lookup: { isCollectionItem: false, optionName: \"lookup\" },\n NumericRule: { isCollectionItem: true, optionName: \"validationRules\" },\n PatternRule: { isCollectionItem: true, optionName: \"validationRules\" },\n RangeRule: { isCollectionItem: true, optionName: \"validationRules\" },\n RequiredRule: { isCollectionItem: true, optionName: \"validationRules\" },\n StringLengthRule: { isCollectionItem: true, optionName: \"validationRules\" },\n validationRule: { isCollectionItem: true, optionName: \"validationRules\" }\n};\nvar DxColumnChooser = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:allowSearch\": null,\n \"update:emptyPanelText\": null,\n \"update:enabled\": null,\n \"update:height\": null,\n \"update:mode\": null,\n \"update:searchTimeout\": null,\n \"update:title\": null,\n \"update:width\": null,\n },\n props: {\n allowSearch: Boolean,\n emptyPanelText: String,\n enabled: Boolean,\n height: Number,\n mode: String,\n searchTimeout: Number,\n title: String,\n width: Number\n }\n});\nexports.DxColumnChooser = DxColumnChooser;\nDxColumnChooser.$_optionName = \"columnChooser\";\nvar DxColumnFixing = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:enabled\": null,\n \"update:texts\": null,\n },\n props: {\n enabled: Boolean,\n texts: Object\n }\n});\nexports.DxColumnFixing = DxColumnFixing;\nDxColumnFixing.$_optionName = \"columnFixing\";\nDxColumnFixing.$_expectedChildren = {\n columnFixingTexts: { isCollectionItem: false, optionName: \"texts\" },\n texts: { isCollectionItem: false, optionName: \"texts\" }\n};\nvar DxColumnFixingTexts = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:fix\": null,\n \"update:leftPosition\": null,\n \"update:rightPosition\": null,\n \"update:unfix\": null,\n },\n props: {\n fix: String,\n leftPosition: String,\n rightPosition: String,\n unfix: String\n }\n});\nexports.DxColumnFixingTexts = DxColumnFixingTexts;\nDxColumnFixingTexts.$_optionName = \"texts\";\nvar DxColumnHeaderFilter = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:allowSearch\": null,\n \"update:dataSource\": null,\n \"update:groupInterval\": null,\n \"update:height\": null,\n \"update:searchMode\": null,\n \"update:width\": null,\n },\n props: {\n allowSearch: Boolean,\n dataSource: [Array, Object, Function],\n groupInterval: [Number, String],\n height: Number,\n searchMode: String,\n width: Number\n }\n});\nexports.DxColumnHeaderFilter = DxColumnHeaderFilter;\nDxColumnHeaderFilter.$_optionName = \"headerFilter\";\nvar DxColumnLookup = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:allowClearing\": null,\n \"update:calculateCellValue\": null,\n \"update:dataSource\": null,\n \"update:displayExpr\": null,\n \"update:valueExpr\": null,\n },\n props: {\n allowClearing: Boolean,\n calculateCellValue: Function,\n dataSource: [Array, Object, Function],\n displayExpr: [Function, String],\n valueExpr: String\n }\n});\nexports.DxColumnLookup = DxColumnLookup;\nDxColumnLookup.$_optionName = \"lookup\";\nvar DxCompareRule = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:comparisonTarget\": null,\n \"update:comparisonType\": null,\n \"update:ignoreEmptyValue\": null,\n \"update:message\": null,\n \"update:reevaluate\": null,\n \"update:type\": null,\n },\n props: {\n comparisonTarget: Function,\n comparisonType: String,\n ignoreEmptyValue: Boolean,\n message: String,\n reevaluate: Boolean,\n type: String\n }\n});\nexports.DxCompareRule = DxCompareRule;\nDxCompareRule.$_optionName = \"validationRules\";\nDxCompareRule.$_isCollectionItem = true;\nDxCompareRule.$_predefinedProps = {\n type: \"compare\"\n};\nvar DxCursorOffset = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:x\": null,\n \"update:y\": null,\n },\n props: {\n x: Number,\n y: Number\n }\n});\nexports.DxCursorOffset = DxCursorOffset;\nDxCursorOffset.$_optionName = \"cursorOffset\";\nvar DxCustomOperation = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:calculateFilterExpression\": null,\n \"update:caption\": null,\n \"update:customizeText\": null,\n \"update:dataTypes\": null,\n \"update:editorTemplate\": null,\n \"update:hasValue\": null,\n \"update:icon\": null,\n \"update:name\": null,\n },\n props: {\n calculateFilterExpression: Function,\n caption: String,\n customizeText: Function,\n dataTypes: Array,\n editorTemplate: {},\n hasValue: Boolean,\n icon: String,\n name: String\n }\n});\nexports.DxCustomOperation = DxCustomOperation;\nDxCustomOperation.$_optionName = \"customOperations\";\nDxCustomOperation.$_isCollectionItem = true;\nvar DxCustomRule = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:ignoreEmptyValue\": null,\n \"update:message\": null,\n \"update:reevaluate\": null,\n \"update:type\": null,\n \"update:validationCallback\": null,\n },\n props: {\n ignoreEmptyValue: Boolean,\n message: String,\n reevaluate: Boolean,\n type: String,\n validationCallback: Function\n }\n});\nexports.DxCustomRule = DxCustomRule;\nDxCustomRule.$_optionName = \"validationRules\";\nDxCustomRule.$_isCollectionItem = true;\nDxCustomRule.$_predefinedProps = {\n type: \"custom\"\n};\nvar DxDataGridHeaderFilter = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:allowSearch\": null,\n \"update:height\": null,\n \"update:searchTimeout\": null,\n \"update:texts\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n props: {\n allowSearch: Boolean,\n height: Number,\n searchTimeout: Number,\n texts: Object,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxDataGridHeaderFilter = DxDataGridHeaderFilter;\nDxDataGridHeaderFilter.$_optionName = \"headerFilter\";\nDxDataGridHeaderFilter.$_expectedChildren = {\n dataGridHeaderFilterTexts: { isCollectionItem: false, optionName: \"texts\" },\n texts: { isCollectionItem: false, optionName: \"texts\" }\n};\nvar DxDataGridHeaderFilterTexts = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:cancel\": null,\n \"update:emptyValue\": null,\n \"update:ok\": null,\n },\n props: {\n cancel: String,\n emptyValue: String,\n ok: String\n }\n});\nexports.DxDataGridHeaderFilterTexts = DxDataGridHeaderFilterTexts;\nDxDataGridHeaderFilterTexts.$_optionName = \"texts\";\nvar DxEditing = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:allowAdding\": null,\n \"update:allowDeleting\": null,\n \"update:allowUpdating\": null,\n \"update:changes\": null,\n \"update:confirmDelete\": null,\n \"update:editColumnName\": null,\n \"update:editRowKey\": null,\n \"update:form\": null,\n \"update:mode\": null,\n \"update:popup\": null,\n \"update:refreshMode\": null,\n \"update:selectTextOnEditStart\": null,\n \"update:startEditAction\": null,\n \"update:texts\": null,\n \"update:useIcons\": null,\n },\n props: {\n allowAdding: Boolean,\n allowDeleting: [Boolean, Function],\n allowUpdating: [Boolean, Function],\n changes: Array,\n confirmDelete: Boolean,\n editColumnName: String,\n editRowKey: {},\n form: Object,\n mode: String,\n popup: Object,\n refreshMode: String,\n selectTextOnEditStart: Boolean,\n startEditAction: String,\n texts: {},\n useIcons: Boolean\n }\n});\nexports.DxEditing = DxEditing;\nDxEditing.$_optionName = \"editing\";\nDxEditing.$_expectedChildren = {\n change: { isCollectionItem: true, optionName: \"changes\" },\n editingTexts: { isCollectionItem: false, optionName: \"texts\" },\n form: { isCollectionItem: false, optionName: \"form\" },\n popup: { isCollectionItem: false, optionName: \"popup\" },\n texts: { isCollectionItem: false, optionName: \"texts\" }\n};\nvar DxEditingTexts = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:addRow\": null,\n \"update:cancelAllChanges\": null,\n \"update:cancelRowChanges\": null,\n \"update:confirmDeleteMessage\": null,\n \"update:confirmDeleteTitle\": null,\n \"update:deleteRow\": null,\n \"update:editRow\": null,\n \"update:saveAllChanges\": null,\n \"update:saveRowChanges\": null,\n \"update:undeleteRow\": null,\n \"update:validationCancelChanges\": null,\n },\n props: {\n addRow: String,\n cancelAllChanges: String,\n cancelRowChanges: String,\n confirmDeleteMessage: String,\n confirmDeleteTitle: String,\n deleteRow: String,\n editRow: String,\n saveAllChanges: String,\n saveRowChanges: String,\n undeleteRow: String,\n validationCancelChanges: String\n }\n});\nexports.DxEditingTexts = DxEditingTexts;\nDxEditingTexts.$_optionName = \"texts\";\nvar DxEmailRule = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:ignoreEmptyValue\": null,\n \"update:message\": null,\n \"update:type\": null,\n },\n props: {\n ignoreEmptyValue: Boolean,\n message: String,\n type: String\n }\n});\nexports.DxEmailRule = DxEmailRule;\nDxEmailRule.$_optionName = \"validationRules\";\nDxEmailRule.$_isCollectionItem = true;\nDxEmailRule.$_predefinedProps = {\n type: \"email\"\n};\nvar DxExport = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:allowExportSelectedData\": null,\n \"update:customizeExcelCell\": null,\n \"update:enabled\": null,\n \"update:excelFilterEnabled\": null,\n \"update:excelWrapTextEnabled\": null,\n \"update:fileName\": null,\n \"update:ignoreExcelErrors\": null,\n \"update:proxyUrl\": null,\n \"update:texts\": null,\n },\n props: {\n allowExportSelectedData: Boolean,\n customizeExcelCell: Function,\n enabled: Boolean,\n excelFilterEnabled: Boolean,\n excelWrapTextEnabled: Boolean,\n fileName: String,\n ignoreExcelErrors: Boolean,\n proxyUrl: String,\n texts: Object\n }\n});\nexports.DxExport = DxExport;\nDxExport.$_optionName = \"export\";\nDxExport.$_expectedChildren = {\n exportTexts: { isCollectionItem: false, optionName: \"texts\" },\n texts: { isCollectionItem: false, optionName: \"texts\" }\n};\nvar DxExportTexts = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:exportAll\": null,\n \"update:exportSelectedRows\": null,\n \"update:exportTo\": null,\n },\n props: {\n exportAll: String,\n exportSelectedRows: String,\n exportTo: String\n }\n});\nexports.DxExportTexts = DxExportTexts;\nDxExportTexts.$_optionName = \"texts\";\nvar DxField = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:calculateFilterExpression\": null,\n \"update:caption\": null,\n \"update:customizeText\": null,\n \"update:dataField\": null,\n \"update:dataType\": null,\n \"update:defaultFilterOperation\": null,\n \"update:editorOptions\": null,\n \"update:editorTemplate\": null,\n \"update:falseText\": null,\n \"update:filterOperations\": null,\n \"update:format\": null,\n \"update:lookup\": null,\n \"update:name\": null,\n \"update:trueText\": null,\n },\n props: {\n calculateFilterExpression: Function,\n caption: String,\n customizeText: Function,\n dataField: String,\n dataType: String,\n defaultFilterOperation: String,\n editorOptions: {},\n editorTemplate: {},\n falseText: String,\n filterOperations: Array,\n format: [Object, Function, String],\n lookup: Object,\n name: String,\n trueText: String\n }\n});\nexports.DxField = DxField;\nDxField.$_optionName = \"fields\";\nDxField.$_isCollectionItem = true;\nDxField.$_expectedChildren = {\n fieldLookup: { isCollectionItem: false, optionName: \"lookup\" },\n format: { isCollectionItem: false, optionName: \"format\" },\n lookup: { isCollectionItem: false, optionName: \"lookup\" }\n};\nvar DxFieldLookup = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:allowClearing\": null,\n \"update:dataSource\": null,\n \"update:displayExpr\": null,\n \"update:valueExpr\": null,\n },\n props: {\n allowClearing: Boolean,\n dataSource: [Array, Object],\n displayExpr: [Function, String],\n valueExpr: [Function, String]\n }\n});\nexports.DxFieldLookup = DxFieldLookup;\nDxFieldLookup.$_optionName = \"lookup\";\nvar DxFilterBuilder = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:accessKey\": null,\n \"update:activeStateEnabled\": null,\n \"update:allowHierarchicalFields\": null,\n \"update:bindingOptions\": null,\n \"update:customOperations\": null,\n \"update:defaultGroupOperation\": null,\n \"update:disabled\": null,\n \"update:elementAttr\": null,\n \"update:fields\": null,\n \"update:filterOperationDescriptions\": null,\n \"update:focusStateEnabled\": null,\n \"update:groupOperationDescriptions\": null,\n \"update:groupOperations\": null,\n \"update:height\": null,\n \"update:hint\": null,\n \"update:hoverStateEnabled\": null,\n \"update:maxGroupLevel\": null,\n \"update:onContentReady\": null,\n \"update:onDisposing\": null,\n \"update:onEditorPrepared\": null,\n \"update:onEditorPreparing\": null,\n \"update:onFocusIn\": null,\n \"update:onFocusOut\": null,\n \"update:onInitialized\": null,\n \"update:onOptionChanged\": null,\n \"update:onValueChanged\": null,\n \"update:rtlEnabled\": null,\n \"update:tabIndex\": null,\n \"update:value\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n props: {\n accessKey: String,\n activeStateEnabled: Boolean,\n allowHierarchicalFields: Boolean,\n bindingOptions: {},\n customOperations: Array,\n defaultGroupOperation: String,\n disabled: Boolean,\n elementAttr: {},\n fields: Array,\n filterOperationDescriptions: Object,\n focusStateEnabled: Boolean,\n groupOperationDescriptions: Object,\n groupOperations: Array,\n height: [Function, Number, String],\n hint: String,\n hoverStateEnabled: Boolean,\n maxGroupLevel: Number,\n onContentReady: Function,\n onDisposing: Function,\n onEditorPrepared: Function,\n onEditorPreparing: Function,\n onFocusIn: Function,\n onFocusOut: Function,\n onInitialized: Function,\n onOptionChanged: Function,\n onValueChanged: Function,\n rtlEnabled: Boolean,\n tabIndex: Number,\n value: [Array, Function, String],\n visible: Boolean,\n width: [Function, Number, String]\n }\n});\nexports.DxFilterBuilder = DxFilterBuilder;\nDxFilterBuilder.$_optionName = \"filterBuilder\";\nDxFilterBuilder.$_expectedChildren = {\n customOperation: { isCollectionItem: true, optionName: \"customOperations\" },\n field: { isCollectionItem: true, optionName: \"fields\" },\n filterOperationDescriptions: { isCollectionItem: false, optionName: \"filterOperationDescriptions\" },\n groupOperationDescriptions: { isCollectionItem: false, optionName: \"groupOperationDescriptions\" }\n};\nvar DxFilterBuilderPopup = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:accessKey\": null,\n \"update:activeStateEnabled\": null,\n \"update:animation\": null,\n \"update:bindingOptions\": null,\n \"update:closeOnOutsideClick\": null,\n \"update:container\": null,\n \"update:contentTemplate\": null,\n \"update:deferRendering\": null,\n \"update:disabled\": null,\n \"update:dragEnabled\": null,\n \"update:elementAttr\": null,\n \"update:focusStateEnabled\": null,\n \"update:fullScreen\": null,\n \"update:height\": null,\n \"update:hint\": null,\n \"update:hoverStateEnabled\": null,\n \"update:maxHeight\": null,\n \"update:maxWidth\": null,\n \"update:minHeight\": null,\n \"update:minWidth\": null,\n \"update:onContentReady\": null,\n \"update:onDisposing\": null,\n \"update:onFocusIn\": null,\n \"update:onFocusOut\": null,\n \"update:onHidden\": null,\n \"update:onHiding\": null,\n \"update:onInitialized\": null,\n \"update:onOptionChanged\": null,\n \"update:onResize\": null,\n \"update:onResizeEnd\": null,\n \"update:onResizeStart\": null,\n \"update:onShowing\": null,\n \"update:onShown\": null,\n \"update:onTitleRendered\": null,\n \"update:position\": null,\n \"update:resizeEnabled\": null,\n \"update:rtlEnabled\": null,\n \"update:shading\": null,\n \"update:shadingColor\": null,\n \"update:showCloseButton\": null,\n \"update:showTitle\": null,\n \"update:tabIndex\": null,\n \"update:title\": null,\n \"update:titleTemplate\": null,\n \"update:toolbarItems\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n props: {\n accessKey: String,\n activeStateEnabled: Boolean,\n animation: Object,\n bindingOptions: {},\n closeOnOutsideClick: [Boolean, Function],\n container: {},\n contentTemplate: {},\n deferRendering: Boolean,\n disabled: Boolean,\n dragEnabled: Boolean,\n elementAttr: {},\n focusStateEnabled: Boolean,\n fullScreen: Boolean,\n height: [Function, Number, String],\n hint: String,\n hoverStateEnabled: Boolean,\n maxHeight: [Function, Number, String],\n maxWidth: [Function, Number, String],\n minHeight: [Function, Number, String],\n minWidth: [Function, Number, String],\n onContentReady: Function,\n onDisposing: Function,\n onFocusIn: Function,\n onFocusOut: Function,\n onHidden: Function,\n onHiding: Function,\n onInitialized: Function,\n onOptionChanged: Function,\n onResize: Function,\n onResizeEnd: Function,\n onResizeStart: Function,\n onShowing: Function,\n onShown: Function,\n onTitleRendered: Function,\n position: [Function, Object, String],\n resizeEnabled: Boolean,\n rtlEnabled: Boolean,\n shading: Boolean,\n shadingColor: String,\n showCloseButton: Boolean,\n showTitle: Boolean,\n tabIndex: Number,\n title: String,\n titleTemplate: {},\n toolbarItems: Array,\n visible: Boolean,\n width: [Function, Number, String]\n }\n});\nexports.DxFilterBuilderPopup = DxFilterBuilderPopup;\nDxFilterBuilderPopup.$_optionName = \"filterBuilderPopup\";\nvar DxFilterOperationDescriptions = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:between\": null,\n \"update:contains\": null,\n \"update:endsWith\": null,\n \"update:equal\": null,\n \"update:greaterThan\": null,\n \"update:greaterThanOrEqual\": null,\n \"update:isBlank\": null,\n \"update:isNotBlank\": null,\n \"update:lessThan\": null,\n \"update:lessThanOrEqual\": null,\n \"update:notContains\": null,\n \"update:notEqual\": null,\n \"update:startsWith\": null,\n },\n props: {\n between: String,\n contains: String,\n endsWith: String,\n equal: String,\n greaterThan: String,\n greaterThanOrEqual: String,\n isBlank: String,\n isNotBlank: String,\n lessThan: String,\n lessThanOrEqual: String,\n notContains: String,\n notEqual: String,\n startsWith: String\n }\n});\nexports.DxFilterOperationDescriptions = DxFilterOperationDescriptions;\nDxFilterOperationDescriptions.$_optionName = \"filterOperationDescriptions\";\nvar DxFilterPanel = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:customizeText\": null,\n \"update:filterEnabled\": null,\n \"update:texts\": null,\n \"update:visible\": null,\n },\n props: {\n customizeText: Function,\n filterEnabled: Boolean,\n texts: Object,\n visible: Boolean\n }\n});\nexports.DxFilterPanel = DxFilterPanel;\nDxFilterPanel.$_optionName = \"filterPanel\";\nDxFilterPanel.$_expectedChildren = {\n filterPanelTexts: { isCollectionItem: false, optionName: \"texts\" },\n texts: { isCollectionItem: false, optionName: \"texts\" }\n};\nvar DxFilterPanelTexts = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:clearFilter\": null,\n \"update:createFilter\": null,\n \"update:filterEnabledHint\": null,\n },\n props: {\n clearFilter: String,\n createFilter: String,\n filterEnabledHint: String\n }\n});\nexports.DxFilterPanelTexts = DxFilterPanelTexts;\nDxFilterPanelTexts.$_optionName = \"texts\";\nvar DxFilterRow = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:applyFilter\": null,\n \"update:applyFilterText\": null,\n \"update:betweenEndText\": null,\n \"update:betweenStartText\": null,\n \"update:operationDescriptions\": null,\n \"update:resetOperationText\": null,\n \"update:showAllText\": null,\n \"update:showOperationChooser\": null,\n \"update:visible\": null,\n },\n props: {\n applyFilter: String,\n applyFilterText: String,\n betweenEndText: String,\n betweenStartText: String,\n operationDescriptions: Object,\n resetOperationText: String,\n showAllText: String,\n showOperationChooser: Boolean,\n visible: Boolean\n }\n});\nexports.DxFilterRow = DxFilterRow;\nDxFilterRow.$_optionName = \"filterRow\";\nDxFilterRow.$_expectedChildren = {\n operationDescriptions: { isCollectionItem: false, optionName: \"operationDescriptions\" }\n};\nvar DxForm = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:accessKey\": null,\n \"update:activeStateEnabled\": null,\n \"update:alignItemLabels\": null,\n \"update:alignItemLabelsInAllGroups\": null,\n \"update:bindingOptions\": null,\n \"update:colCount\": null,\n \"update:colCountByScreen\": null,\n \"update:customizeItem\": null,\n \"update:disabled\": null,\n \"update:elementAttr\": null,\n \"update:focusStateEnabled\": null,\n \"update:formData\": null,\n \"update:height\": null,\n \"update:hint\": null,\n \"update:hoverStateEnabled\": null,\n \"update:items\": null,\n \"update:labelLocation\": null,\n \"update:minColWidth\": null,\n \"update:onContentReady\": null,\n \"update:onDisposing\": null,\n \"update:onEditorEnterKey\": null,\n \"update:onFieldDataChanged\": null,\n \"update:onFocusIn\": null,\n \"update:onFocusOut\": null,\n \"update:onInitialized\": null,\n \"update:onOptionChanged\": null,\n \"update:optionalMark\": null,\n \"update:readOnly\": null,\n \"update:requiredMark\": null,\n \"update:requiredMessage\": null,\n \"update:rtlEnabled\": null,\n \"update:screenByWidth\": null,\n \"update:scrollingEnabled\": null,\n \"update:showColonAfterLabel\": null,\n \"update:showOptionalMark\": null,\n \"update:showRequiredMark\": null,\n \"update:showValidationSummary\": null,\n \"update:tabIndex\": null,\n \"update:validationGroup\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n props: {\n accessKey: String,\n activeStateEnabled: Boolean,\n alignItemLabels: Boolean,\n alignItemLabelsInAllGroups: Boolean,\n bindingOptions: {},\n colCount: [Number, String],\n colCountByScreen: {},\n customizeItem: Function,\n disabled: Boolean,\n elementAttr: {},\n focusStateEnabled: Boolean,\n formData: {},\n height: [Function, Number, String],\n hint: String,\n hoverStateEnabled: Boolean,\n items: Array,\n labelLocation: String,\n minColWidth: Number,\n onContentReady: Function,\n onDisposing: Function,\n onEditorEnterKey: Function,\n onFieldDataChanged: Function,\n onFocusIn: Function,\n onFocusOut: Function,\n onInitialized: Function,\n onOptionChanged: Function,\n optionalMark: String,\n readOnly: Boolean,\n requiredMark: String,\n requiredMessage: String,\n rtlEnabled: Boolean,\n screenByWidth: Function,\n scrollingEnabled: Boolean,\n showColonAfterLabel: Boolean,\n showOptionalMark: Boolean,\n showRequiredMark: Boolean,\n showValidationSummary: Boolean,\n tabIndex: Number,\n validationGroup: String,\n visible: Boolean,\n width: [Function, Number, String]\n }\n});\nexports.DxForm = DxForm;\nDxForm.$_optionName = \"form\";\nDxForm.$_expectedChildren = {\n colCountByScreen: { isCollectionItem: false, optionName: \"colCountByScreen\" }\n};\nvar DxFormat = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:currency\": null,\n \"update:formatter\": null,\n \"update:parser\": null,\n \"update:precision\": null,\n \"update:type\": null,\n },\n props: {\n currency: String,\n formatter: Function,\n parser: Function,\n precision: Number,\n type: String\n }\n});\nexports.DxFormat = DxFormat;\nDxFormat.$_optionName = \"format\";\nvar DxFormItem = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:colSpan\": null,\n \"update:cssClass\": null,\n \"update:dataField\": null,\n \"update:editorOptions\": null,\n \"update:editorType\": null,\n \"update:helpText\": null,\n \"update:isRequired\": null,\n \"update:itemType\": null,\n \"update:label\": null,\n \"update:name\": null,\n \"update:template\": null,\n \"update:validationRules\": null,\n \"update:visible\": null,\n \"update:visibleIndex\": null,\n },\n props: {\n colSpan: Number,\n cssClass: String,\n dataField: String,\n editorOptions: {},\n editorType: String,\n helpText: String,\n isRequired: Boolean,\n itemType: String,\n label: Object,\n name: String,\n template: {},\n validationRules: Array,\n visible: Boolean,\n visibleIndex: Number\n }\n});\nexports.DxFormItem = DxFormItem;\nDxFormItem.$_optionName = \"formItem\";\nDxFormItem.$_expectedChildren = {\n AsyncRule: { isCollectionItem: true, optionName: \"validationRules\" },\n CompareRule: { isCollectionItem: true, optionName: \"validationRules\" },\n CustomRule: { isCollectionItem: true, optionName: \"validationRules\" },\n EmailRule: { isCollectionItem: true, optionName: \"validationRules\" },\n label: { isCollectionItem: false, optionName: \"label\" },\n NumericRule: { isCollectionItem: true, optionName: \"validationRules\" },\n PatternRule: { isCollectionItem: true, optionName: \"validationRules\" },\n RangeRule: { isCollectionItem: true, optionName: \"validationRules\" },\n RequiredRule: { isCollectionItem: true, optionName: \"validationRules\" },\n StringLengthRule: { isCollectionItem: true, optionName: \"validationRules\" },\n validationRule: { isCollectionItem: true, optionName: \"validationRules\" }\n};\nvar DxGrouping = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:allowCollapsing\": null,\n \"update:autoExpandAll\": null,\n \"update:contextMenuEnabled\": null,\n \"update:expandMode\": null,\n \"update:texts\": null,\n },\n props: {\n allowCollapsing: Boolean,\n autoExpandAll: Boolean,\n contextMenuEnabled: Boolean,\n expandMode: String,\n texts: Object\n }\n});\nexports.DxGrouping = DxGrouping;\nDxGrouping.$_optionName = \"grouping\";\nDxGrouping.$_expectedChildren = {\n groupingTexts: { isCollectionItem: false, optionName: \"texts\" },\n texts: { isCollectionItem: false, optionName: \"texts\" }\n};\nvar DxGroupingTexts = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:groupByThisColumn\": null,\n \"update:groupContinuedMessage\": null,\n \"update:groupContinuesMessage\": null,\n \"update:ungroup\": null,\n \"update:ungroupAll\": null,\n },\n props: {\n groupByThisColumn: String,\n groupContinuedMessage: String,\n groupContinuesMessage: String,\n ungroup: String,\n ungroupAll: String\n }\n});\nexports.DxGroupingTexts = DxGroupingTexts;\nDxGroupingTexts.$_optionName = \"texts\";\nvar DxGroupItem = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:alignByColumn\": null,\n \"update:column\": null,\n \"update:customizeText\": null,\n \"update:displayFormat\": null,\n \"update:name\": null,\n \"update:showInColumn\": null,\n \"update:showInGroupFooter\": null,\n \"update:skipEmptyValues\": null,\n \"update:summaryType\": null,\n \"update:valueFormat\": null,\n },\n props: {\n alignByColumn: Boolean,\n column: String,\n customizeText: Function,\n displayFormat: String,\n name: String,\n showInColumn: String,\n showInGroupFooter: Boolean,\n skipEmptyValues: Boolean,\n summaryType: String,\n valueFormat: [Object, Function, String]\n }\n});\nexports.DxGroupItem = DxGroupItem;\nDxGroupItem.$_optionName = \"groupItems\";\nDxGroupItem.$_isCollectionItem = true;\nDxGroupItem.$_expectedChildren = {\n valueFormat: { isCollectionItem: false, optionName: \"valueFormat\" }\n};\nvar DxGroupOperationDescriptions = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:and\": null,\n \"update:notAnd\": null,\n \"update:notOr\": null,\n \"update:or\": null,\n },\n props: {\n and: String,\n notAnd: String,\n notOr: String,\n or: String\n }\n});\nexports.DxGroupOperationDescriptions = DxGroupOperationDescriptions;\nDxGroupOperationDescriptions.$_optionName = \"groupOperationDescriptions\";\nvar DxGroupPanel = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:allowColumnDragging\": null,\n \"update:emptyPanelText\": null,\n \"update:visible\": null,\n },\n props: {\n allowColumnDragging: Boolean,\n emptyPanelText: String,\n visible: [Boolean, String]\n }\n});\nexports.DxGroupPanel = DxGroupPanel;\nDxGroupPanel.$_optionName = \"groupPanel\";\nvar DxHeaderFilter = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:allowSearch\": null,\n \"update:dataSource\": null,\n \"update:groupInterval\": null,\n \"update:height\": null,\n \"update:searchMode\": null,\n \"update:searchTimeout\": null,\n \"update:texts\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n props: {\n allowSearch: Boolean,\n dataSource: [Array, Object, Function],\n groupInterval: [Number, String],\n height: Number,\n searchMode: String,\n searchTimeout: Number,\n texts: Object,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxHeaderFilter = DxHeaderFilter;\nDxHeaderFilter.$_optionName = \"headerFilter\";\nvar DxHide = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:complete\": null,\n \"update:delay\": null,\n \"update:direction\": null,\n \"update:duration\": null,\n \"update:easing\": null,\n \"update:from\": null,\n \"update:staggerDelay\": null,\n \"update:start\": null,\n \"update:to\": null,\n \"update:type\": null,\n },\n props: {\n complete: Function,\n delay: Number,\n direction: String,\n duration: Number,\n easing: String,\n from: {},\n staggerDelay: Number,\n start: Function,\n to: {},\n type: String\n }\n});\nexports.DxHide = DxHide;\nDxHide.$_optionName = \"hide\";\nvar DxKeyboardNavigation = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:editOnKeyPress\": null,\n \"update:enabled\": null,\n \"update:enterKeyAction\": null,\n \"update:enterKeyDirection\": null,\n },\n props: {\n editOnKeyPress: Boolean,\n enabled: Boolean,\n enterKeyAction: String,\n enterKeyDirection: String\n }\n});\nexports.DxKeyboardNavigation = DxKeyboardNavigation;\nDxKeyboardNavigation.$_optionName = \"keyboardNavigation\";\nvar DxLabel = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:alignment\": null,\n \"update:location\": null,\n \"update:showColon\": null,\n \"update:text\": null,\n \"update:visible\": null,\n },\n props: {\n alignment: String,\n location: String,\n showColon: Boolean,\n text: String,\n visible: Boolean\n }\n});\nexports.DxLabel = DxLabel;\nDxLabel.$_optionName = \"label\";\nvar DxLoadPanel = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:enabled\": null,\n \"update:height\": null,\n \"update:indicatorSrc\": null,\n \"update:shading\": null,\n \"update:shadingColor\": null,\n \"update:showIndicator\": null,\n \"update:showPane\": null,\n \"update:text\": null,\n \"update:width\": null,\n },\n props: {\n enabled: [Boolean, String],\n height: Number,\n indicatorSrc: String,\n shading: Boolean,\n shadingColor: String,\n showIndicator: Boolean,\n showPane: Boolean,\n text: String,\n width: Number\n }\n});\nexports.DxLoadPanel = DxLoadPanel;\nDxLoadPanel.$_optionName = \"loadPanel\";\nvar DxLookup = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:allowClearing\": null,\n \"update:calculateCellValue\": null,\n \"update:dataSource\": null,\n \"update:displayExpr\": null,\n \"update:valueExpr\": null,\n },\n props: {\n allowClearing: Boolean,\n calculateCellValue: Function,\n dataSource: [Array, Object, Function],\n displayExpr: [Function, String],\n valueExpr: String\n }\n});\nexports.DxLookup = DxLookup;\nDxLookup.$_optionName = \"lookup\";\nvar DxMasterDetail = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:autoExpandAll\": null,\n \"update:enabled\": null,\n \"update:template\": null,\n },\n props: {\n autoExpandAll: Boolean,\n enabled: Boolean,\n template: {}\n }\n});\nexports.DxMasterDetail = DxMasterDetail;\nDxMasterDetail.$_optionName = \"masterDetail\";\nvar DxMy = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:x\": null,\n \"update:y\": null,\n },\n props: {\n x: String,\n y: String\n }\n});\nexports.DxMy = DxMy;\nDxMy.$_optionName = \"my\";\nvar DxNumericRule = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:ignoreEmptyValue\": null,\n \"update:message\": null,\n \"update:type\": null,\n },\n props: {\n ignoreEmptyValue: Boolean,\n message: String,\n type: String\n }\n});\nexports.DxNumericRule = DxNumericRule;\nDxNumericRule.$_optionName = \"validationRules\";\nDxNumericRule.$_isCollectionItem = true;\nDxNumericRule.$_predefinedProps = {\n type: \"numeric\"\n};\nvar DxOffset = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:x\": null,\n \"update:y\": null,\n },\n props: {\n x: Number,\n y: Number\n }\n});\nexports.DxOffset = DxOffset;\nDxOffset.$_optionName = \"offset\";\nvar DxOperationDescriptions = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:between\": null,\n \"update:contains\": null,\n \"update:endsWith\": null,\n \"update:equal\": null,\n \"update:greaterThan\": null,\n \"update:greaterThanOrEqual\": null,\n \"update:lessThan\": null,\n \"update:lessThanOrEqual\": null,\n \"update:notContains\": null,\n \"update:notEqual\": null,\n \"update:startsWith\": null,\n },\n props: {\n between: String,\n contains: String,\n endsWith: String,\n equal: String,\n greaterThan: String,\n greaterThanOrEqual: String,\n lessThan: String,\n lessThanOrEqual: String,\n notContains: String,\n notEqual: String,\n startsWith: String\n }\n});\nexports.DxOperationDescriptions = DxOperationDescriptions;\nDxOperationDescriptions.$_optionName = \"operationDescriptions\";\nvar DxPager = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:allowedPageSizes\": null,\n \"update:displayMode\": null,\n \"update:infoText\": null,\n \"update:showInfo\": null,\n \"update:showNavigationButtons\": null,\n \"update:showPageSizeSelector\": null,\n \"update:visible\": null,\n },\n props: {\n allowedPageSizes: [Array, String],\n displayMode: String,\n infoText: String,\n showInfo: Boolean,\n showNavigationButtons: Boolean,\n showPageSizeSelector: Boolean,\n visible: [Boolean, String]\n }\n});\nexports.DxPager = DxPager;\nDxPager.$_optionName = \"pager\";\nvar DxPaging = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:enabled\": null,\n \"update:pageIndex\": null,\n \"update:pageSize\": null,\n },\n props: {\n enabled: Boolean,\n pageIndex: Number,\n pageSize: Number\n }\n});\nexports.DxPaging = DxPaging;\nDxPaging.$_optionName = \"paging\";\nvar DxPatternRule = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:ignoreEmptyValue\": null,\n \"update:message\": null,\n \"update:pattern\": null,\n \"update:type\": null,\n },\n props: {\n ignoreEmptyValue: Boolean,\n message: String,\n pattern: {},\n type: String\n }\n});\nexports.DxPatternRule = DxPatternRule;\nDxPatternRule.$_optionName = \"validationRules\";\nDxPatternRule.$_isCollectionItem = true;\nDxPatternRule.$_predefinedProps = {\n type: \"pattern\"\n};\nvar DxPopup = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:accessKey\": null,\n \"update:activeStateEnabled\": null,\n \"update:animation\": null,\n \"update:bindingOptions\": null,\n \"update:closeOnOutsideClick\": null,\n \"update:container\": null,\n \"update:contentTemplate\": null,\n \"update:deferRendering\": null,\n \"update:disabled\": null,\n \"update:dragEnabled\": null,\n \"update:elementAttr\": null,\n \"update:focusStateEnabled\": null,\n \"update:fullScreen\": null,\n \"update:height\": null,\n \"update:hint\": null,\n \"update:hoverStateEnabled\": null,\n \"update:maxHeight\": null,\n \"update:maxWidth\": null,\n \"update:minHeight\": null,\n \"update:minWidth\": null,\n \"update:onContentReady\": null,\n \"update:onDisposing\": null,\n \"update:onFocusIn\": null,\n \"update:onFocusOut\": null,\n \"update:onHidden\": null,\n \"update:onHiding\": null,\n \"update:onInitialized\": null,\n \"update:onOptionChanged\": null,\n \"update:onResize\": null,\n \"update:onResizeEnd\": null,\n \"update:onResizeStart\": null,\n \"update:onShowing\": null,\n \"update:onShown\": null,\n \"update:onTitleRendered\": null,\n \"update:position\": null,\n \"update:resizeEnabled\": null,\n \"update:rtlEnabled\": null,\n \"update:shading\": null,\n \"update:shadingColor\": null,\n \"update:showCloseButton\": null,\n \"update:showTitle\": null,\n \"update:tabIndex\": null,\n \"update:title\": null,\n \"update:titleTemplate\": null,\n \"update:toolbarItems\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n props: {\n accessKey: String,\n activeStateEnabled: Boolean,\n animation: Object,\n bindingOptions: {},\n closeOnOutsideClick: [Boolean, Function],\n container: {},\n contentTemplate: {},\n deferRendering: Boolean,\n disabled: Boolean,\n dragEnabled: Boolean,\n elementAttr: {},\n focusStateEnabled: Boolean,\n fullScreen: Boolean,\n height: [Function, Number, String],\n hint: String,\n hoverStateEnabled: Boolean,\n maxHeight: [Function, Number, String],\n maxWidth: [Function, Number, String],\n minHeight: [Function, Number, String],\n minWidth: [Function, Number, String],\n onContentReady: Function,\n onDisposing: Function,\n onFocusIn: Function,\n onFocusOut: Function,\n onHidden: Function,\n onHiding: Function,\n onInitialized: Function,\n onOptionChanged: Function,\n onResize: Function,\n onResizeEnd: Function,\n onResizeStart: Function,\n onShowing: Function,\n onShown: Function,\n onTitleRendered: Function,\n position: [Function, Object, String],\n resizeEnabled: Boolean,\n rtlEnabled: Boolean,\n shading: Boolean,\n shadingColor: String,\n showCloseButton: Boolean,\n showTitle: Boolean,\n tabIndex: Number,\n title: String,\n titleTemplate: {},\n toolbarItems: Array,\n visible: Boolean,\n width: [Function, Number, String]\n }\n});\nexports.DxPopup = DxPopup;\nDxPopup.$_optionName = \"popup\";\nDxPopup.$_expectedChildren = {\n animation: { isCollectionItem: false, optionName: \"animation\" },\n position: { isCollectionItem: false, optionName: \"position\" },\n toolbarItem: { isCollectionItem: true, optionName: \"toolbarItems\" }\n};\nvar DxPosition = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:at\": null,\n \"update:boundary\": null,\n \"update:boundaryOffset\": null,\n \"update:collision\": null,\n \"update:my\": null,\n \"update:of\": null,\n \"update:offset\": null,\n },\n props: {\n at: [Object, String],\n boundary: {},\n boundaryOffset: [Object, String],\n collision: [Object, String],\n my: [Object, String],\n of: {},\n offset: [Object, String]\n }\n});\nexports.DxPosition = DxPosition;\nDxPosition.$_optionName = \"position\";\nDxPosition.$_expectedChildren = {\n at: { isCollectionItem: false, optionName: \"at\" },\n boundaryOffset: { isCollectionItem: false, optionName: \"boundaryOffset\" },\n collision: { isCollectionItem: false, optionName: \"collision\" },\n my: { isCollectionItem: false, optionName: \"my\" },\n offset: { isCollectionItem: false, optionName: \"offset\" }\n};\nvar DxRangeRule = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:ignoreEmptyValue\": null,\n \"update:max\": null,\n \"update:message\": null,\n \"update:min\": null,\n \"update:reevaluate\": null,\n \"update:type\": null,\n },\n props: {\n ignoreEmptyValue: Boolean,\n max: {},\n message: String,\n min: {},\n reevaluate: Boolean,\n type: String\n }\n});\nexports.DxRangeRule = DxRangeRule;\nDxRangeRule.$_optionName = \"validationRules\";\nDxRangeRule.$_isCollectionItem = true;\nDxRangeRule.$_predefinedProps = {\n type: \"range\"\n};\nvar DxRemoteOperations = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:filtering\": null,\n \"update:grouping\": null,\n \"update:groupPaging\": null,\n \"update:paging\": null,\n \"update:sorting\": null,\n \"update:summary\": null,\n },\n props: {\n filtering: Boolean,\n grouping: Boolean,\n groupPaging: Boolean,\n paging: Boolean,\n sorting: Boolean,\n summary: Boolean\n }\n});\nexports.DxRemoteOperations = DxRemoteOperations;\nDxRemoteOperations.$_optionName = \"remoteOperations\";\nvar DxRequiredRule = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:message\": null,\n \"update:trim\": null,\n \"update:type\": null,\n },\n props: {\n message: String,\n trim: Boolean,\n type: String\n }\n});\nexports.DxRequiredRule = DxRequiredRule;\nDxRequiredRule.$_optionName = \"validationRules\";\nDxRequiredRule.$_isCollectionItem = true;\nDxRequiredRule.$_predefinedProps = {\n type: \"required\"\n};\nvar DxRowDragging = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:allowDropInsideItem\": null,\n \"update:allowReordering\": null,\n \"update:autoScroll\": null,\n \"update:boundary\": null,\n \"update:container\": null,\n \"update:cursorOffset\": null,\n \"update:data\": null,\n \"update:dragDirection\": null,\n \"update:dragTemplate\": null,\n \"update:dropFeedbackMode\": null,\n \"update:filter\": null,\n \"update:group\": null,\n \"update:handle\": null,\n \"update:onAdd\": null,\n \"update:onDragChange\": null,\n \"update:onDragEnd\": null,\n \"update:onDragMove\": null,\n \"update:onDragStart\": null,\n \"update:onRemove\": null,\n \"update:onReorder\": null,\n \"update:scrollSensitivity\": null,\n \"update:scrollSpeed\": null,\n \"update:showDragIcons\": null,\n },\n props: {\n allowDropInsideItem: Boolean,\n allowReordering: Boolean,\n autoScroll: Boolean,\n boundary: {},\n container: {},\n cursorOffset: [Object, String],\n data: {},\n dragDirection: String,\n dragTemplate: {},\n dropFeedbackMode: String,\n filter: String,\n group: String,\n handle: String,\n onAdd: Function,\n onDragChange: Function,\n onDragEnd: Function,\n onDragMove: Function,\n onDragStart: Function,\n onRemove: Function,\n onReorder: Function,\n scrollSensitivity: Number,\n scrollSpeed: Number,\n showDragIcons: Boolean\n }\n});\nexports.DxRowDragging = DxRowDragging;\nDxRowDragging.$_optionName = \"rowDragging\";\nDxRowDragging.$_expectedChildren = {\n cursorOffset: { isCollectionItem: false, optionName: \"cursorOffset\" }\n};\nvar DxScrolling = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:columnRenderingMode\": null,\n \"update:mode\": null,\n \"update:preloadEnabled\": null,\n \"update:rowRenderingMode\": null,\n \"update:scrollByContent\": null,\n \"update:scrollByThumb\": null,\n \"update:showScrollbar\": null,\n \"update:useNative\": null,\n },\n props: {\n columnRenderingMode: String,\n mode: String,\n preloadEnabled: Boolean,\n rowRenderingMode: String,\n scrollByContent: Boolean,\n scrollByThumb: Boolean,\n showScrollbar: String,\n useNative: [Boolean, String]\n }\n});\nexports.DxScrolling = DxScrolling;\nDxScrolling.$_optionName = \"scrolling\";\nvar DxSearchPanel = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:highlightCaseSensitive\": null,\n \"update:highlightSearchText\": null,\n \"update:placeholder\": null,\n \"update:searchVisibleColumnsOnly\": null,\n \"update:text\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n props: {\n highlightCaseSensitive: Boolean,\n highlightSearchText: Boolean,\n placeholder: String,\n searchVisibleColumnsOnly: Boolean,\n text: String,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxSearchPanel = DxSearchPanel;\nDxSearchPanel.$_optionName = \"searchPanel\";\nvar DxSelection = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:allowSelectAll\": null,\n \"update:deferred\": null,\n \"update:maxFilterLengthInRequest\": null,\n \"update:mode\": null,\n \"update:selectAllMode\": null,\n \"update:showCheckBoxesMode\": null,\n },\n props: {\n allowSelectAll: Boolean,\n deferred: Boolean,\n maxFilterLengthInRequest: Number,\n mode: String,\n selectAllMode: String,\n showCheckBoxesMode: String\n }\n});\nexports.DxSelection = DxSelection;\nDxSelection.$_optionName = \"selection\";\nvar DxShow = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:complete\": null,\n \"update:delay\": null,\n \"update:direction\": null,\n \"update:duration\": null,\n \"update:easing\": null,\n \"update:from\": null,\n \"update:staggerDelay\": null,\n \"update:start\": null,\n \"update:to\": null,\n \"update:type\": null,\n },\n props: {\n complete: Function,\n delay: Number,\n direction: String,\n duration: Number,\n easing: String,\n from: {},\n staggerDelay: Number,\n start: Function,\n to: {},\n type: String\n }\n});\nexports.DxShow = DxShow;\nDxShow.$_optionName = \"show\";\nvar DxSortByGroupSummaryInfo = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:groupColumn\": null,\n \"update:sortOrder\": null,\n \"update:summaryItem\": null,\n },\n props: {\n groupColumn: String,\n sortOrder: String,\n summaryItem: [Number, String]\n }\n});\nexports.DxSortByGroupSummaryInfo = DxSortByGroupSummaryInfo;\nDxSortByGroupSummaryInfo.$_optionName = \"sortByGroupSummaryInfo\";\nDxSortByGroupSummaryInfo.$_isCollectionItem = true;\nvar DxSorting = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:ascendingText\": null,\n \"update:clearText\": null,\n \"update:descendingText\": null,\n \"update:mode\": null,\n \"update:showSortIndexes\": null,\n },\n props: {\n ascendingText: String,\n clearText: String,\n descendingText: String,\n mode: String,\n showSortIndexes: Boolean\n }\n});\nexports.DxSorting = DxSorting;\nDxSorting.$_optionName = \"sorting\";\nvar DxStateStoring = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:customLoad\": null,\n \"update:customSave\": null,\n \"update:enabled\": null,\n \"update:savingTimeout\": null,\n \"update:storageKey\": null,\n \"update:type\": null,\n },\n props: {\n customLoad: Function,\n customSave: Function,\n enabled: Boolean,\n savingTimeout: Number,\n storageKey: String,\n type: String\n }\n});\nexports.DxStateStoring = DxStateStoring;\nDxStateStoring.$_optionName = \"stateStoring\";\nvar DxStringLengthRule = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:ignoreEmptyValue\": null,\n \"update:max\": null,\n \"update:message\": null,\n \"update:min\": null,\n \"update:trim\": null,\n \"update:type\": null,\n },\n props: {\n ignoreEmptyValue: Boolean,\n max: Number,\n message: String,\n min: Number,\n trim: Boolean,\n type: String\n }\n});\nexports.DxStringLengthRule = DxStringLengthRule;\nDxStringLengthRule.$_optionName = \"validationRules\";\nDxStringLengthRule.$_isCollectionItem = true;\nDxStringLengthRule.$_predefinedProps = {\n type: \"stringLength\"\n};\nvar DxSummary = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:calculateCustomSummary\": null,\n \"update:groupItems\": null,\n \"update:recalculateWhileEditing\": null,\n \"update:skipEmptyValues\": null,\n \"update:texts\": null,\n \"update:totalItems\": null,\n },\n props: {\n calculateCustomSummary: Function,\n groupItems: Array,\n recalculateWhileEditing: Boolean,\n skipEmptyValues: Boolean,\n texts: Object,\n totalItems: Array\n }\n});\nexports.DxSummary = DxSummary;\nDxSummary.$_optionName = \"summary\";\nDxSummary.$_expectedChildren = {\n groupItem: { isCollectionItem: true, optionName: \"groupItems\" },\n summaryTexts: { isCollectionItem: false, optionName: \"texts\" },\n texts: { isCollectionItem: false, optionName: \"texts\" },\n totalItem: { isCollectionItem: true, optionName: \"totalItems\" }\n};\nvar DxSummaryTexts = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:avg\": null,\n \"update:avgOtherColumn\": null,\n \"update:count\": null,\n \"update:max\": null,\n \"update:maxOtherColumn\": null,\n \"update:min\": null,\n \"update:minOtherColumn\": null,\n \"update:sum\": null,\n \"update:sumOtherColumn\": null,\n },\n props: {\n avg: String,\n avgOtherColumn: String,\n count: String,\n max: String,\n maxOtherColumn: String,\n min: String,\n minOtherColumn: String,\n sum: String,\n sumOtherColumn: String\n }\n});\nexports.DxSummaryTexts = DxSummaryTexts;\nDxSummaryTexts.$_optionName = \"texts\";\nvar DxTexts = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:addRow\": null,\n \"update:avg\": null,\n \"update:avgOtherColumn\": null,\n \"update:cancel\": null,\n \"update:cancelAllChanges\": null,\n \"update:cancelRowChanges\": null,\n \"update:clearFilter\": null,\n \"update:confirmDeleteMessage\": null,\n \"update:confirmDeleteTitle\": null,\n \"update:count\": null,\n \"update:createFilter\": null,\n \"update:deleteRow\": null,\n \"update:editRow\": null,\n \"update:emptyValue\": null,\n \"update:exportAll\": null,\n \"update:exportSelectedRows\": null,\n \"update:exportTo\": null,\n \"update:filterEnabledHint\": null,\n \"update:fix\": null,\n \"update:groupByThisColumn\": null,\n \"update:groupContinuedMessage\": null,\n \"update:groupContinuesMessage\": null,\n \"update:leftPosition\": null,\n \"update:max\": null,\n \"update:maxOtherColumn\": null,\n \"update:min\": null,\n \"update:minOtherColumn\": null,\n \"update:ok\": null,\n \"update:rightPosition\": null,\n \"update:saveAllChanges\": null,\n \"update:saveRowChanges\": null,\n \"update:sum\": null,\n \"update:sumOtherColumn\": null,\n \"update:undeleteRow\": null,\n \"update:unfix\": null,\n \"update:ungroup\": null,\n \"update:ungroupAll\": null,\n \"update:validationCancelChanges\": null,\n },\n props: {\n addRow: String,\n avg: String,\n avgOtherColumn: String,\n cancel: String,\n cancelAllChanges: String,\n cancelRowChanges: String,\n clearFilter: String,\n confirmDeleteMessage: String,\n confirmDeleteTitle: String,\n count: String,\n createFilter: String,\n deleteRow: String,\n editRow: String,\n emptyValue: String,\n exportAll: String,\n exportSelectedRows: String,\n exportTo: String,\n filterEnabledHint: String,\n fix: String,\n groupByThisColumn: String,\n groupContinuedMessage: String,\n groupContinuesMessage: String,\n leftPosition: String,\n max: String,\n maxOtherColumn: String,\n min: String,\n minOtherColumn: String,\n ok: String,\n rightPosition: String,\n saveAllChanges: String,\n saveRowChanges: String,\n sum: String,\n sumOtherColumn: String,\n undeleteRow: String,\n unfix: String,\n ungroup: String,\n ungroupAll: String,\n validationCancelChanges: String\n }\n});\nexports.DxTexts = DxTexts;\nDxTexts.$_optionName = \"texts\";\nvar DxToolbarItem = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:disabled\": null,\n \"update:html\": null,\n \"update:location\": null,\n \"update:options\": null,\n \"update:template\": null,\n \"update:text\": null,\n \"update:toolbar\": null,\n \"update:visible\": null,\n \"update:widget\": null,\n },\n props: {\n disabled: Boolean,\n html: String,\n location: String,\n options: {},\n template: {},\n text: String,\n toolbar: String,\n visible: Boolean,\n widget: String\n }\n});\nexports.DxToolbarItem = DxToolbarItem;\nDxToolbarItem.$_optionName = \"toolbarItems\";\nDxToolbarItem.$_isCollectionItem = true;\nvar DxTotalItem = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:alignment\": null,\n \"update:column\": null,\n \"update:cssClass\": null,\n \"update:customizeText\": null,\n \"update:displayFormat\": null,\n \"update:name\": null,\n \"update:showInColumn\": null,\n \"update:skipEmptyValues\": null,\n \"update:summaryType\": null,\n \"update:valueFormat\": null,\n },\n props: {\n alignment: String,\n column: String,\n cssClass: String,\n customizeText: Function,\n displayFormat: String,\n name: String,\n showInColumn: String,\n skipEmptyValues: Boolean,\n summaryType: String,\n valueFormat: [Object, Function, String]\n }\n});\nexports.DxTotalItem = DxTotalItem;\nDxTotalItem.$_optionName = \"totalItems\";\nDxTotalItem.$_isCollectionItem = true;\nDxTotalItem.$_expectedChildren = {\n valueFormat: { isCollectionItem: false, optionName: \"valueFormat\" }\n};\nvar DxValidationRule = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:comparisonTarget\": null,\n \"update:comparisonType\": null,\n \"update:ignoreEmptyValue\": null,\n \"update:max\": null,\n \"update:message\": null,\n \"update:min\": null,\n \"update:pattern\": null,\n \"update:reevaluate\": null,\n \"update:trim\": null,\n \"update:type\": null,\n \"update:validationCallback\": null,\n },\n props: {\n comparisonTarget: Function,\n comparisonType: String,\n ignoreEmptyValue: Boolean,\n max: {},\n message: String,\n min: {},\n pattern: {},\n reevaluate: Boolean,\n trim: Boolean,\n type: String,\n validationCallback: Function\n }\n});\nexports.DxValidationRule = DxValidationRule;\nDxValidationRule.$_optionName = \"validationRules\";\nDxValidationRule.$_isCollectionItem = true;\nDxValidationRule.$_predefinedProps = {\n type: \"required\"\n};\nvar DxValueFormat = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:currency\": null,\n \"update:formatter\": null,\n \"update:parser\": null,\n \"update:precision\": null,\n \"update:type\": null,\n },\n props: {\n currency: String,\n formatter: Function,\n parser: Function,\n precision: Number,\n type: String\n }\n});\nexports.DxValueFormat = DxValueFormat;\nDxValueFormat.$_optionName = \"valueFormat\";\nexports.default = DxDataGrid;\n","var isArray = Array.isArray;\nfunction isStringOrNumber(o) {\n var type = typeof o;\n return type === 'string' || type === 'number';\n}\nfunction isNullOrUndef(o) {\n return o === void 0 || o === null;\n}\nfunction isInvalid(o) {\n return o === null || o === false || o === true || o === void 0;\n}\nfunction isFunction(o) {\n return typeof o === 'function';\n}\nfunction isString(o) {\n return typeof o === 'string';\n}\nfunction isNumber(o) {\n return typeof o === 'number';\n}\nfunction isNull(o) {\n return o === null;\n}\nfunction isUndefined(o) {\n return o === void 0;\n}\nfunction combineFrom(first, second) {\n var out = {};\n if (first) {\n for (var key in first) {\n out[key] = first[key];\n }\n }\n if (second) {\n for (var key$1 in second) {\n out[key$1] = second[key$1];\n }\n }\n return out;\n}\n\n/**\n * Links given data to event as first parameter\n * @param {*} data data to be linked, it will be available in function as first parameter\n * @param {Function} event Function to be called when event occurs\n * @returns {{data: *, event: Function}}\n */\nfunction linkEvent(data, event) {\n if (isFunction(event)) {\n return { data: data, event: event };\n }\n return null; // Return null when event is invalid, to avoid creating unnecessary event handlers\n}\n// object.event should always be function, otherwise its badly created object.\nfunction isLinkEventObject(o) {\n return !isNull(o) && typeof o === 'object';\n}\n\n// We need EMPTY_OBJ defined in one place.\n// Its used for comparison so we cant inline it into shared\nvar EMPTY_OBJ = {};\nvar Fragment = '$F';\nfunction normalizeEventName(name) {\n return name.substr(2).toLowerCase();\n}\nfunction appendChild(parentDOM, dom) {\n parentDOM.appendChild(dom);\n}\nfunction insertOrAppend(parentDOM, newNode, nextNode) {\n if (isNull(nextNode)) {\n appendChild(parentDOM, newNode);\n }\n else {\n parentDOM.insertBefore(newNode, nextNode);\n }\n}\nfunction documentCreateElement(tag, isSVG) {\n if (isSVG) {\n return document.createElementNS('http://www.w3.org/2000/svg', tag);\n }\n return document.createElement(tag);\n}\nfunction replaceChild(parentDOM, newDom, lastDom) {\n parentDOM.replaceChild(newDom, lastDom);\n}\nfunction removeChild(parentDOM, childNode) {\n parentDOM.removeChild(childNode);\n}\nfunction callAll(arrayFn) {\n for (var i = 0; i < arrayFn.length; i++) {\n arrayFn[i]();\n }\n}\nfunction findChildVNode(vNode, startEdge, flags) {\n var children = vNode.children;\n if (flags & 4 /* ComponentClass */) {\n return children.$LI;\n }\n if (flags & 8192 /* Fragment */) {\n return vNode.childFlags === 2 /* HasVNodeChildren */ ? children : children[startEdge ? 0 : children.length - 1];\n }\n return children;\n}\nfunction findDOMfromVNode(vNode, startEdge) {\n var flags;\n while (vNode) {\n flags = vNode.flags;\n if (flags & 2033 /* DOMRef */) {\n return vNode.dom;\n }\n vNode = findChildVNode(vNode, startEdge, flags);\n }\n return null;\n}\nfunction removeVNodeDOM(vNode, parentDOM) {\n do {\n var flags = vNode.flags;\n if (flags & 2033 /* DOMRef */) {\n removeChild(parentDOM, vNode.dom);\n return;\n }\n var children = vNode.children;\n if (flags & 4 /* ComponentClass */) {\n vNode = children.$LI;\n }\n if (flags & 8 /* ComponentFunction */) {\n vNode = children;\n }\n if (flags & 8192 /* Fragment */) {\n if (vNode.childFlags === 2 /* HasVNodeChildren */) {\n vNode = children;\n }\n else {\n for (var i = 0, len = children.length; i < len; ++i) {\n removeVNodeDOM(children[i], parentDOM);\n }\n return;\n }\n }\n } while (vNode);\n}\nfunction moveVNodeDOM(vNode, parentDOM, nextNode) {\n do {\n var flags = vNode.flags;\n if (flags & 2033 /* DOMRef */) {\n insertOrAppend(parentDOM, vNode.dom, nextNode);\n return;\n }\n var children = vNode.children;\n if (flags & 4 /* ComponentClass */) {\n vNode = children.$LI;\n }\n if (flags & 8 /* ComponentFunction */) {\n vNode = children;\n }\n if (flags & 8192 /* Fragment */) {\n if (vNode.childFlags === 2 /* HasVNodeChildren */) {\n vNode = children;\n }\n else {\n for (var i = 0, len = children.length; i < len; ++i) {\n moveVNodeDOM(children[i], parentDOM, nextNode);\n }\n return;\n }\n }\n } while (vNode);\n}\nfunction createDerivedState(instance, nextProps, state) {\n if (instance.constructor.getDerivedStateFromProps) {\n return combineFrom(state, instance.constructor.getDerivedStateFromProps(nextProps, state));\n }\n return state;\n}\nvar renderCheck = {\n v: false\n};\nvar options = {\n componentComparator: null,\n createVNode: null,\n renderComplete: null\n};\nfunction setTextContent(dom, children) {\n dom.textContent = children;\n}\n// Calling this function assumes, nextValue is linkEvent\nfunction isLastValueSameLinkEvent(lastValue, nextValue) {\n return (isLinkEventObject(lastValue) &&\n lastValue.event === nextValue.event &&\n lastValue.data === nextValue.data);\n}\nfunction mergeUnsetProperties(to, from) {\n for (var propName in from) {\n if (isUndefined(to[propName])) {\n to[propName] = from[propName];\n }\n }\n return to;\n}\nfunction safeCall1(method, arg1) {\n return !!isFunction(method) && (method(arg1), true);\n}\n\nvar keyPrefix = '$';\nfunction V(childFlags, children, className, flags, key, props, ref, type) {\n this.childFlags = childFlags;\n this.children = children;\n this.className = className;\n this.dom = null;\n this.flags = flags;\n this.key = key === void 0 ? null : key;\n this.props = props === void 0 ? null : props;\n this.ref = ref === void 0 ? null : ref;\n this.type = type;\n}\nfunction createVNode(flags, type, className, children, childFlags, props, key, ref) {\n var childFlag = childFlags === void 0 ? 1 /* HasInvalidChildren */ : childFlags;\n var vNode = new V(childFlag, children, className, flags, key, props, ref, type);\n if (options.createVNode) {\n options.createVNode(vNode);\n }\n if (childFlag === 0 /* UnknownChildren */) {\n normalizeChildren(vNode, vNode.children);\n }\n return vNode;\n}\nfunction mergeDefaultHooks(flags, type, ref) {\n if (flags & 4 /* ComponentClass */) {\n return ref;\n }\n var defaultHooks = (flags & 32768 /* ForwardRef */ ? type.render : type).defaultHooks;\n if (isNullOrUndef(defaultHooks)) {\n return ref;\n }\n if (isNullOrUndef(ref)) {\n return defaultHooks;\n }\n return mergeUnsetProperties(ref, defaultHooks);\n}\nfunction mergeDefaultProps(flags, type, props) {\n // set default props\n var defaultProps = (flags & 32768 /* ForwardRef */ ? type.render : type).defaultProps;\n if (isNullOrUndef(defaultProps)) {\n return props;\n }\n if (isNullOrUndef(props)) {\n return combineFrom(defaultProps, null);\n }\n return mergeUnsetProperties(props, defaultProps);\n}\nfunction resolveComponentFlags(flags, type) {\n if (flags & 12 /* ComponentKnown */) {\n return flags;\n }\n if (type.prototype && type.prototype.render) {\n return 4 /* ComponentClass */;\n }\n if (type.render) {\n return 32776 /* ForwardRefComponent */;\n }\n return 8 /* ComponentFunction */;\n}\nfunction createComponentVNode(flags, type, props, key, ref) {\n flags = resolveComponentFlags(flags, type);\n var vNode = new V(1 /* HasInvalidChildren */, null, null, flags, key, mergeDefaultProps(flags, type, props), mergeDefaultHooks(flags, type, ref), type);\n if (options.createVNode) {\n options.createVNode(vNode);\n }\n return vNode;\n}\nfunction createTextVNode(text, key) {\n return new V(1 /* HasInvalidChildren */, isNullOrUndef(text) || text === true || text === false ? '' : text, null, 16 /* Text */, key, null, null, null);\n}\nfunction createFragment(children, childFlags, key) {\n var fragment = createVNode(8192 /* Fragment */, 8192 /* Fragment */, null, children, childFlags, null, key, null);\n switch (fragment.childFlags) {\n case 1 /* HasInvalidChildren */:\n fragment.children = createVoidVNode();\n fragment.childFlags = 2 /* HasVNodeChildren */;\n break;\n case 16 /* HasTextChildren */:\n fragment.children = [createTextVNode(children)];\n fragment.childFlags = 4 /* HasNonKeyedChildren */;\n break;\n }\n return fragment;\n}\nfunction normalizeProps(vNode) {\n var props = vNode.props;\n if (props) {\n var flags = vNode.flags;\n if (flags & 481 /* Element */) {\n if (props.children !== void 0 && isNullOrUndef(vNode.children)) {\n normalizeChildren(vNode, props.children);\n }\n if (props.className !== void 0) {\n vNode.className = props.className || null;\n props.className = undefined;\n }\n }\n if (props.key !== void 0) {\n vNode.key = props.key;\n props.key = undefined;\n }\n if (props.ref !== void 0) {\n if (flags & 8 /* ComponentFunction */) {\n vNode.ref = combineFrom(vNode.ref, props.ref);\n }\n else {\n vNode.ref = props.ref;\n }\n props.ref = undefined;\n }\n }\n return vNode;\n}\n/*\n * Fragment is different than normal vNode,\n * because when it needs to be cloned we need to clone its children too\n * But not normalize, because otherwise those possibly get KEY and re-mount\n */\nfunction cloneFragment(vNodeToClone) {\n var oldChildren = vNodeToClone.children;\n var childFlags = vNodeToClone.childFlags;\n return createFragment(childFlags === 2 /* HasVNodeChildren */ ? directClone(oldChildren) : oldChildren.map(directClone), childFlags, vNodeToClone.key);\n}\nfunction directClone(vNodeToClone) {\n var flags = vNodeToClone.flags & -16385 /* ClearInUse */;\n var props = vNodeToClone.props;\n if (flags & 14 /* Component */) {\n if (!isNull(props)) {\n var propsToClone = props;\n props = {};\n for (var key in propsToClone) {\n props[key] = propsToClone[key];\n }\n }\n }\n if ((flags & 8192 /* Fragment */) === 0) {\n return new V(vNodeToClone.childFlags, vNodeToClone.children, vNodeToClone.className, flags, vNodeToClone.key, props, vNodeToClone.ref, vNodeToClone.type);\n }\n return cloneFragment(vNodeToClone);\n}\nfunction createVoidVNode() {\n return createTextVNode('', null);\n}\nfunction createPortal(children, container) {\n var normalizedRoot = normalizeRoot(children);\n return createVNode(1024 /* Portal */, 1024 /* Portal */, null, normalizedRoot, 0 /* UnknownChildren */, null, normalizedRoot.key, container);\n}\nfunction _normalizeVNodes(nodes, result, index, currentKey) {\n for (var len = nodes.length; index < len; index++) {\n var n = nodes[index];\n if (!isInvalid(n)) {\n var newKey = currentKey + keyPrefix + index;\n if (isArray(n)) {\n _normalizeVNodes(n, result, 0, newKey);\n }\n else {\n if (isStringOrNumber(n)) {\n n = createTextVNode(n, newKey);\n }\n else {\n var oldKey = n.key;\n var isPrefixedKey = isString(oldKey) && oldKey[0] === keyPrefix;\n if (n.flags & 81920 /* InUseOrNormalized */ || isPrefixedKey) {\n n = directClone(n);\n }\n n.flags |= 65536 /* Normalized */;\n if (!isPrefixedKey) {\n if (isNull(oldKey)) {\n n.key = newKey;\n }\n else {\n n.key = currentKey + oldKey;\n }\n }\n else if (oldKey.substring(0, currentKey.length) !== currentKey) {\n n.key = currentKey + oldKey;\n }\n }\n result.push(n);\n }\n }\n }\n}\nfunction getFlagsForElementVnode(type) {\n switch (type) {\n case 'svg':\n return 32 /* SvgElement */;\n case 'input':\n return 64 /* InputElement */;\n case 'select':\n return 256 /* SelectElement */;\n case 'textarea':\n return 128 /* TextareaElement */;\n case Fragment:\n return 8192 /* Fragment */;\n default:\n return 1 /* HtmlElement */;\n }\n}\nfunction normalizeChildren(vNode, children) {\n var newChildren;\n var newChildFlags = 1 /* HasInvalidChildren */;\n // Don't change children to match strict equal (===) true in patching\n if (isInvalid(children)) {\n newChildren = children;\n }\n else if (isStringOrNumber(children)) {\n newChildFlags = 16 /* HasTextChildren */;\n newChildren = children;\n }\n else if (isArray(children)) {\n var len = children.length;\n for (var i = 0; i < len; ++i) {\n var n = children[i];\n if (isInvalid(n) || isArray(n)) {\n newChildren = newChildren || children.slice(0, i);\n _normalizeVNodes(children, newChildren, i, '');\n break;\n }\n else if (isStringOrNumber(n)) {\n newChildren = newChildren || children.slice(0, i);\n newChildren.push(createTextVNode(n, keyPrefix + i));\n }\n else {\n var key = n.key;\n var needsCloning = (n.flags & 81920 /* InUseOrNormalized */) > 0;\n var isNullKey = isNull(key);\n var isPrefixed = isString(key) && key[0] === keyPrefix;\n if (needsCloning || isNullKey || isPrefixed) {\n newChildren = newChildren || children.slice(0, i);\n if (needsCloning || isPrefixed) {\n n = directClone(n);\n }\n if (isNullKey || isPrefixed) {\n n.key = keyPrefix + i;\n }\n newChildren.push(n);\n }\n else if (newChildren) {\n newChildren.push(n);\n }\n n.flags |= 65536 /* Normalized */;\n }\n }\n newChildren = newChildren || children;\n if (newChildren.length === 0) {\n newChildFlags = 1 /* HasInvalidChildren */;\n }\n else {\n newChildFlags = 8 /* HasKeyedChildren */;\n }\n }\n else {\n newChildren = children;\n newChildren.flags |= 65536 /* Normalized */;\n if (children.flags & 81920 /* InUseOrNormalized */) {\n newChildren = directClone(children);\n }\n newChildFlags = 2 /* HasVNodeChildren */;\n }\n vNode.children = newChildren;\n vNode.childFlags = newChildFlags;\n return vNode;\n}\nfunction normalizeRoot(input) {\n if (isInvalid(input) || isStringOrNumber(input)) {\n return createTextVNode(input, null);\n }\n if (isArray(input)) {\n return createFragment(input, 0 /* UnknownChildren */, null);\n }\n return input.flags & 16384 /* InUse */ ? directClone(input) : input;\n}\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\nvar xmlNS = 'http://www.w3.org/XML/1998/namespace';\nvar namespaces = {\n 'xlink:actuate': xlinkNS,\n 'xlink:arcrole': xlinkNS,\n 'xlink:href': xlinkNS,\n 'xlink:role': xlinkNS,\n 'xlink:show': xlinkNS,\n 'xlink:title': xlinkNS,\n 'xlink:type': xlinkNS,\n 'xml:base': xmlNS,\n 'xml:lang': xmlNS,\n 'xml:space': xmlNS\n};\n\nfunction getDelegatedEventObject(v) {\n return {\n onClick: v,\n onDblClick: v,\n onFocusIn: v,\n onFocusOut: v,\n onKeyDown: v,\n onKeyPress: v,\n onKeyUp: v,\n onMouseDown: v,\n onMouseMove: v,\n onMouseUp: v,\n onTouchEnd: v,\n onTouchMove: v,\n onTouchStart: v\n };\n}\nvar attachedEventCounts = getDelegatedEventObject(0);\nvar attachedEvents = getDelegatedEventObject(null);\nvar syntheticEvents = getDelegatedEventObject(true);\nfunction updateOrAddSyntheticEvent(name, dom) {\n var eventsObject = dom.$EV;\n if (!eventsObject) {\n eventsObject = dom.$EV = getDelegatedEventObject(null);\n }\n if (!eventsObject[name]) {\n if (++attachedEventCounts[name] === 1) {\n attachedEvents[name] = attachEventToDocument(name);\n }\n }\n return eventsObject;\n}\nfunction unmountSyntheticEvent(name, dom) {\n var eventsObject = dom.$EV;\n if (eventsObject && eventsObject[name]) {\n if (--attachedEventCounts[name] === 0) {\n document.removeEventListener(normalizeEventName(name), attachedEvents[name]);\n attachedEvents[name] = null;\n }\n eventsObject[name] = null;\n }\n}\nfunction handleSyntheticEvent(name, lastEvent, nextEvent, dom) {\n if (isFunction(nextEvent)) {\n updateOrAddSyntheticEvent(name, dom)[name] = nextEvent;\n }\n else if (isLinkEventObject(nextEvent)) {\n if (isLastValueSameLinkEvent(lastEvent, nextEvent)) {\n return;\n }\n updateOrAddSyntheticEvent(name, dom)[name] = nextEvent;\n }\n else {\n unmountSyntheticEvent(name, dom);\n }\n}\n// When browsers fully support event.composedPath we could loop it through instead of using parentNode property\nfunction getTargetNode(event) {\n return isFunction(event.composedPath) ? event.composedPath()[0] : event.target;\n}\nfunction dispatchEvents(event, isClick, name, eventData) {\n var dom = getTargetNode(event);\n do {\n // Html Nodes can be nested fe: span inside button in that scenario browser does not handle disabled attribute on parent,\n // because the event listener is on document.body\n // Don't process clicks on disabled elements\n if (isClick && dom.disabled) {\n return;\n }\n var eventsObject = dom.$EV;\n if (eventsObject) {\n var currentEvent = eventsObject[name];\n if (currentEvent) {\n // linkEvent object\n eventData.dom = dom;\n currentEvent.event ? currentEvent.event(currentEvent.data, event) : currentEvent(event);\n if (event.cancelBubble) {\n return;\n }\n }\n }\n dom = dom.parentNode;\n } while (!isNull(dom));\n}\nfunction stopPropagation() {\n this.cancelBubble = true;\n if (!this.immediatePropagationStopped) {\n this.stopImmediatePropagation();\n }\n}\nfunction isDefaultPrevented() {\n return this.defaultPrevented;\n}\nfunction isPropagationStopped() {\n return this.cancelBubble;\n}\nfunction extendEventProperties(event) {\n // Event data needs to be object to save reference to currentTarget getter\n var eventData = {\n dom: document\n };\n event.isDefaultPrevented = isDefaultPrevented;\n event.isPropagationStopped = isPropagationStopped;\n event.stopPropagation = stopPropagation;\n Object.defineProperty(event, 'currentTarget', {\n configurable: true,\n get: function get() {\n return eventData.dom;\n }\n });\n return eventData;\n}\nfunction rootClickEvent(name) {\n return function (event) {\n if (event.button !== 0) {\n // Firefox incorrectly triggers click event for mid/right mouse buttons.\n // This bug has been active for 17 years.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=184051\n event.stopPropagation();\n return;\n }\n dispatchEvents(event, true, name, extendEventProperties(event));\n };\n}\nfunction rootEvent(name) {\n return function (event) {\n dispatchEvents(event, false, name, extendEventProperties(event));\n };\n}\nfunction attachEventToDocument(name) {\n var attachedEvent = name === 'onClick' || name === 'onDblClick' ? rootClickEvent(name) : rootEvent(name);\n document.addEventListener(normalizeEventName(name), attachedEvent);\n return attachedEvent;\n}\n\nfunction isSameInnerHTML(dom, innerHTML) {\n var tempdom = document.createElement('i');\n tempdom.innerHTML = innerHTML;\n return tempdom.innerHTML === dom.innerHTML;\n}\n\nfunction triggerEventListener(props, methodName, e) {\n if (props[methodName]) {\n var listener = props[methodName];\n if (listener.event) {\n listener.event(listener.data, e);\n }\n else {\n listener(e);\n }\n }\n else {\n var nativeListenerName = methodName.toLowerCase();\n if (props[nativeListenerName]) {\n props[nativeListenerName](e);\n }\n }\n}\nfunction createWrappedFunction(methodName, applyValue) {\n var fnMethod = function (e) {\n var vNode = this.$V;\n // If vNode is gone by the time event fires, no-op\n if (!vNode) {\n return;\n }\n var props = vNode.props || EMPTY_OBJ;\n var dom = vNode.dom;\n if (isString(methodName)) {\n triggerEventListener(props, methodName, e);\n }\n else {\n for (var i = 0; i < methodName.length; ++i) {\n triggerEventListener(props, methodName[i], e);\n }\n }\n if (isFunction(applyValue)) {\n var newVNode = this.$V;\n var newProps = newVNode.props || EMPTY_OBJ;\n applyValue(newProps, dom, false, newVNode);\n }\n };\n Object.defineProperty(fnMethod, 'wrapped', {\n configurable: false,\n enumerable: false,\n value: true,\n writable: false\n });\n return fnMethod;\n}\n\nfunction attachEvent(dom, eventName, handler) {\n var previousKey = \"$\" + eventName;\n var previousArgs = dom[previousKey];\n if (previousArgs) {\n if (previousArgs[1].wrapped) {\n return;\n }\n dom.removeEventListener(previousArgs[0], previousArgs[1]);\n dom[previousKey] = null;\n }\n if (isFunction(handler)) {\n dom.addEventListener(eventName, handler);\n dom[previousKey] = [eventName, handler];\n }\n}\n\nfunction isCheckedType(type) {\n return type === 'checkbox' || type === 'radio';\n}\nvar onTextInputChange = createWrappedFunction('onInput', applyValueInput);\nvar wrappedOnChange = createWrappedFunction(['onClick', 'onChange'], applyValueInput);\n/* tslint:disable-next-line:no-empty */\nfunction emptywrapper(event) {\n event.stopPropagation();\n}\nemptywrapper.wrapped = true;\nfunction inputEvents(dom, nextPropsOrEmpty) {\n if (isCheckedType(nextPropsOrEmpty.type)) {\n attachEvent(dom, 'change', wrappedOnChange);\n attachEvent(dom, 'click', emptywrapper);\n }\n else {\n attachEvent(dom, 'input', onTextInputChange);\n }\n}\nfunction applyValueInput(nextPropsOrEmpty, dom) {\n var type = nextPropsOrEmpty.type;\n var value = nextPropsOrEmpty.value;\n var checked = nextPropsOrEmpty.checked;\n var multiple = nextPropsOrEmpty.multiple;\n var defaultValue = nextPropsOrEmpty.defaultValue;\n var hasValue = !isNullOrUndef(value);\n if (type && type !== dom.type) {\n dom.setAttribute('type', type);\n }\n if (!isNullOrUndef(multiple) && multiple !== dom.multiple) {\n dom.multiple = multiple;\n }\n if (!isNullOrUndef(defaultValue) && !hasValue) {\n dom.defaultValue = defaultValue + '';\n }\n if (isCheckedType(type)) {\n if (hasValue) {\n dom.value = value;\n }\n if (!isNullOrUndef(checked)) {\n dom.checked = checked;\n }\n }\n else {\n if (hasValue && dom.value !== value) {\n dom.defaultValue = value;\n dom.value = value;\n }\n else if (!isNullOrUndef(checked)) {\n dom.checked = checked;\n }\n }\n}\n\nfunction updateChildOptions(vNode, value) {\n if (vNode.type === 'option') {\n updateChildOption(vNode, value);\n }\n else {\n var children = vNode.children;\n var flags = vNode.flags;\n if (flags & 4 /* ComponentClass */) {\n updateChildOptions(children.$LI, value);\n }\n else if (flags & 8 /* ComponentFunction */) {\n updateChildOptions(children, value);\n }\n else if (vNode.childFlags === 2 /* HasVNodeChildren */) {\n updateChildOptions(children, value);\n }\n else if (vNode.childFlags & 12 /* MultipleChildren */) {\n for (var i = 0, len = children.length; i < len; ++i) {\n updateChildOptions(children[i], value);\n }\n }\n }\n}\nfunction updateChildOption(vNode, value) {\n var props = vNode.props || EMPTY_OBJ;\n var dom = vNode.dom;\n // we do this as multiple may have changed\n dom.value = props.value;\n if (props.value === value || (isArray(value) && value.indexOf(props.value) !== -1)) {\n dom.selected = true;\n }\n else if (!isNullOrUndef(value) || !isNullOrUndef(props.selected)) {\n dom.selected = props.selected || false;\n }\n}\nvar onSelectChange = createWrappedFunction('onChange', applyValueSelect);\nfunction selectEvents(dom) {\n attachEvent(dom, 'change', onSelectChange);\n}\nfunction applyValueSelect(nextPropsOrEmpty, dom, mounting, vNode) {\n var multiplePropInBoolean = Boolean(nextPropsOrEmpty.multiple);\n if (!isNullOrUndef(nextPropsOrEmpty.multiple) && multiplePropInBoolean !== dom.multiple) {\n dom.multiple = multiplePropInBoolean;\n }\n var index = nextPropsOrEmpty.selectedIndex;\n if (index === -1) {\n dom.selectedIndex = -1;\n }\n var childFlags = vNode.childFlags;\n if (childFlags !== 1 /* HasInvalidChildren */) {\n var value = nextPropsOrEmpty.value;\n if (isNumber(index) && index > -1 && dom.options[index]) {\n value = dom.options[index].value;\n }\n if (mounting && isNullOrUndef(value)) {\n value = nextPropsOrEmpty.defaultValue;\n }\n updateChildOptions(vNode, value);\n }\n}\n\nvar onTextareaInputChange = createWrappedFunction('onInput', applyValueTextArea);\nvar wrappedOnChange$1 = createWrappedFunction('onChange');\nfunction textAreaEvents(dom, nextPropsOrEmpty) {\n attachEvent(dom, 'input', onTextareaInputChange);\n if (nextPropsOrEmpty.onChange) {\n attachEvent(dom, 'change', wrappedOnChange$1);\n }\n}\nfunction applyValueTextArea(nextPropsOrEmpty, dom, mounting) {\n var value = nextPropsOrEmpty.value;\n var domValue = dom.value;\n if (isNullOrUndef(value)) {\n if (mounting) {\n var defaultValue = nextPropsOrEmpty.defaultValue;\n if (!isNullOrUndef(defaultValue) && defaultValue !== domValue) {\n dom.defaultValue = defaultValue;\n dom.value = defaultValue;\n }\n }\n }\n else if (domValue !== value) {\n /* There is value so keep it controlled */\n dom.defaultValue = value;\n dom.value = value;\n }\n}\n\nfunction processElement(flags, vNode, dom, nextPropsOrEmpty, mounting, isControlled) {\n if (flags & 64 /* InputElement */) {\n applyValueInput(nextPropsOrEmpty, dom);\n }\n else if (flags & 256 /* SelectElement */) {\n applyValueSelect(nextPropsOrEmpty, dom, mounting, vNode);\n }\n else if (flags & 128 /* TextareaElement */) {\n applyValueTextArea(nextPropsOrEmpty, dom, mounting);\n }\n if (isControlled) {\n dom.$V = vNode;\n }\n}\nfunction addFormElementEventHandlers(flags, dom, nextPropsOrEmpty) {\n if (flags & 64 /* InputElement */) {\n inputEvents(dom, nextPropsOrEmpty);\n }\n else if (flags & 256 /* SelectElement */) {\n selectEvents(dom);\n }\n else if (flags & 128 /* TextareaElement */) {\n textAreaEvents(dom, nextPropsOrEmpty);\n }\n}\nfunction isControlledFormElement(nextPropsOrEmpty) {\n return nextPropsOrEmpty.type && isCheckedType(nextPropsOrEmpty.type) ? !isNullOrUndef(nextPropsOrEmpty.checked) : !isNullOrUndef(nextPropsOrEmpty.value);\n}\n\nfunction createRef() {\n return {\n current: null\n };\n}\nfunction forwardRef(render) {\n // @ts-ignore\n return {\n render: render\n };\n}\nfunction unmountRef(ref) {\n if (ref) {\n if (!safeCall1(ref, null) && ref.current) {\n ref.current = null;\n }\n }\n}\nfunction mountRef(ref, value, lifecycle) {\n if (ref && (isFunction(ref) || ref.current !== void 0)) {\n lifecycle.push(function () {\n if (!safeCall1(ref, value) && ref.current !== void 0) {\n ref.current = value;\n }\n });\n }\n}\n\nfunction remove(vNode, parentDOM) {\n unmount(vNode);\n removeVNodeDOM(vNode, parentDOM);\n}\nfunction unmount(vNode) {\n var flags = vNode.flags;\n var children = vNode.children;\n var ref;\n if (flags & 481 /* Element */) {\n ref = vNode.ref;\n var props = vNode.props;\n unmountRef(ref);\n var childFlags = vNode.childFlags;\n if (!isNull(props)) {\n var keys = Object.keys(props);\n for (var i = 0, len = keys.length; i < len; i++) {\n var key = keys[i];\n if (syntheticEvents[key]) {\n unmountSyntheticEvent(key, vNode.dom);\n }\n }\n }\n if (childFlags & 12 /* MultipleChildren */) {\n unmountAllChildren(children);\n }\n else if (childFlags === 2 /* HasVNodeChildren */) {\n unmount(children);\n }\n }\n else if (children) {\n if (flags & 4 /* ComponentClass */) {\n if (isFunction(children.componentWillUnmount)) {\n children.componentWillUnmount();\n }\n unmountRef(vNode.ref);\n children.$UN = true;\n unmount(children.$LI);\n }\n else if (flags & 8 /* ComponentFunction */) {\n ref = vNode.ref;\n if (!isNullOrUndef(ref) && isFunction(ref.onComponentWillUnmount)) {\n ref.onComponentWillUnmount(findDOMfromVNode(vNode, true), vNode.props || EMPTY_OBJ);\n }\n unmount(children);\n }\n else if (flags & 1024 /* Portal */) {\n remove(children, vNode.ref);\n }\n else if (flags & 8192 /* Fragment */) {\n if (vNode.childFlags & 12 /* MultipleChildren */) {\n unmountAllChildren(children);\n }\n }\n }\n}\nfunction unmountAllChildren(children) {\n for (var i = 0, len = children.length; i < len; ++i) {\n unmount(children[i]);\n }\n}\nfunction clearDOM(dom) {\n // Optimization for clearing dom\n dom.textContent = '';\n}\nfunction removeAllChildren(dom, vNode, children) {\n unmountAllChildren(children);\n if (vNode.flags & 8192 /* Fragment */) {\n removeVNodeDOM(vNode, dom);\n }\n else {\n clearDOM(dom);\n }\n}\n\nfunction wrapLinkEvent(nextValue) {\n // This variable makes sure there is no \"this\" context in callback\n var ev = nextValue.event;\n return function (e) {\n ev(nextValue.data, e);\n };\n}\nfunction patchEvent(name, lastValue, nextValue, dom) {\n if (isLinkEventObject(nextValue)) {\n if (isLastValueSameLinkEvent(lastValue, nextValue)) {\n return;\n }\n nextValue = wrapLinkEvent(nextValue);\n }\n attachEvent(dom, normalizeEventName(name), nextValue);\n}\n// We are assuming here that we come from patchProp routine\n// -nextAttrValue cannot be null or undefined\nfunction patchStyle(lastAttrValue, nextAttrValue, dom) {\n if (isNullOrUndef(nextAttrValue)) {\n dom.removeAttribute('style');\n return;\n }\n var domStyle = dom.style;\n var style;\n var value;\n if (isString(nextAttrValue)) {\n domStyle.cssText = nextAttrValue;\n return;\n }\n if (!isNullOrUndef(lastAttrValue) && !isString(lastAttrValue)) {\n for (style in nextAttrValue) {\n // do not add a hasOwnProperty check here, it affects performance\n value = nextAttrValue[style];\n if (value !== lastAttrValue[style]) {\n domStyle.setProperty(style, value);\n }\n }\n for (style in lastAttrValue) {\n if (isNullOrUndef(nextAttrValue[style])) {\n domStyle.removeProperty(style);\n }\n }\n }\n else {\n for (style in nextAttrValue) {\n value = nextAttrValue[style];\n domStyle.setProperty(style, value);\n }\n }\n}\nfunction patchDangerInnerHTML(lastValue, nextValue, lastVNode, dom) {\n var lastHtml = (lastValue && lastValue.__html) || '';\n var nextHtml = (nextValue && nextValue.__html) || '';\n if (lastHtml !== nextHtml) {\n if (!isNullOrUndef(nextHtml) && !isSameInnerHTML(dom, nextHtml)) {\n if (!isNull(lastVNode)) {\n if (lastVNode.childFlags & 12 /* MultipleChildren */) {\n unmountAllChildren(lastVNode.children);\n }\n else if (lastVNode.childFlags === 2 /* HasVNodeChildren */) {\n unmount(lastVNode.children);\n }\n lastVNode.children = null;\n lastVNode.childFlags = 1 /* HasInvalidChildren */;\n }\n dom.innerHTML = nextHtml;\n }\n }\n}\nfunction patchProp(prop, lastValue, nextValue, dom, isSVG, hasControlledValue, lastVNode) {\n switch (prop) {\n case 'children':\n case 'childrenType':\n case 'className':\n case 'defaultValue':\n case 'key':\n case 'multiple':\n case 'ref':\n case 'selectedIndex':\n break;\n case 'autoFocus':\n dom.autofocus = !!nextValue;\n break;\n case 'allowfullscreen':\n case 'autoplay':\n case 'capture':\n case 'checked':\n case 'controls':\n case 'default':\n case 'disabled':\n case 'hidden':\n case 'indeterminate':\n case 'loop':\n case 'muted':\n case 'novalidate':\n case 'open':\n case 'readOnly':\n case 'required':\n case 'reversed':\n case 'scoped':\n case 'seamless':\n case 'selected':\n dom[prop] = !!nextValue;\n break;\n case 'defaultChecked':\n case 'value':\n case 'volume':\n if (hasControlledValue && prop === 'value') {\n break;\n }\n var value = isNullOrUndef(nextValue) ? '' : nextValue;\n if (dom[prop] !== value) {\n dom[prop] = value;\n }\n break;\n case 'style':\n patchStyle(lastValue, nextValue, dom);\n break;\n case 'dangerouslySetInnerHTML':\n patchDangerInnerHTML(lastValue, nextValue, lastVNode, dom);\n break;\n default:\n if (syntheticEvents[prop]) {\n handleSyntheticEvent(prop, lastValue, nextValue, dom);\n }\n else if (prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110) {\n patchEvent(prop, lastValue, nextValue, dom);\n }\n else if (isNullOrUndef(nextValue)) {\n dom.removeAttribute(prop);\n }\n else if (isSVG && namespaces[prop]) {\n // We optimize for isSVG being false\n // If we end up in this path we can read property again\n dom.setAttributeNS(namespaces[prop], prop, nextValue);\n }\n else {\n dom.setAttribute(prop, nextValue);\n }\n break;\n }\n}\nfunction mountProps(vNode, flags, props, dom, isSVG) {\n var hasControlledValue = false;\n var isFormElement = (flags & 448 /* FormElement */) > 0;\n if (isFormElement) {\n hasControlledValue = isControlledFormElement(props);\n if (hasControlledValue) {\n addFormElementEventHandlers(flags, dom, props);\n }\n }\n for (var prop in props) {\n // do not add a hasOwnProperty check here, it affects performance\n patchProp(prop, null, props[prop], dom, isSVG, hasControlledValue, null);\n }\n if (isFormElement) {\n processElement(flags, vNode, dom, props, true, hasControlledValue);\n }\n}\n\nfunction renderNewInput(instance, props, context) {\n var nextInput = normalizeRoot(instance.render(props, instance.state, context));\n var childContext = context;\n if (isFunction(instance.getChildContext)) {\n childContext = combineFrom(context, instance.getChildContext());\n }\n instance.$CX = childContext;\n return nextInput;\n}\nfunction createClassComponentInstance(vNode, Component, props, context, isSVG, lifecycle) {\n var instance = new Component(props, context);\n var usesNewAPI = (instance.$N = Boolean(Component.getDerivedStateFromProps || instance.getSnapshotBeforeUpdate));\n instance.$SVG = isSVG;\n instance.$L = lifecycle;\n vNode.children = instance;\n instance.$BS = false;\n instance.context = context;\n if (instance.props === EMPTY_OBJ) {\n instance.props = props;\n }\n if (!usesNewAPI) {\n if (isFunction(instance.componentWillMount)) {\n instance.$BR = true;\n instance.componentWillMount();\n var pending = instance.$PS;\n if (!isNull(pending)) {\n var state = instance.state;\n if (isNull(state)) {\n instance.state = pending;\n }\n else {\n for (var key in pending) {\n state[key] = pending[key];\n }\n }\n instance.$PS = null;\n }\n instance.$BR = false;\n }\n }\n else {\n instance.state = createDerivedState(instance, props, instance.state);\n }\n instance.$LI = renderNewInput(instance, props, context);\n return instance;\n}\nfunction renderFunctionalComponent(vNode, context) {\n var props = vNode.props || EMPTY_OBJ;\n return vNode.flags & 32768 /* ForwardRef */ ? vNode.type.render(props, vNode.ref, context) : vNode.type(props, context);\n}\n\nfunction mount(vNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var flags = (vNode.flags |= 16384 /* InUse */);\n if (flags & 481 /* Element */) {\n mountElement(vNode, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n else if (flags & 4 /* ComponentClass */) {\n mountClassComponent(vNode, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n else if (flags & 8 /* ComponentFunction */) {\n mountFunctionalComponent(vNode, parentDOM, context, isSVG, nextNode, lifecycle);\n mountFunctionalComponentCallbacks(vNode, lifecycle);\n }\n else if (flags & 512 /* Void */ || flags & 16 /* Text */) {\n mountText(vNode, parentDOM, nextNode);\n }\n else if (flags & 8192 /* Fragment */) {\n mountFragment(vNode, context, parentDOM, isSVG, nextNode, lifecycle);\n }\n else if (flags & 1024 /* Portal */) {\n mountPortal(vNode, context, parentDOM, nextNode, lifecycle);\n }\n else ;\n}\nfunction mountPortal(vNode, context, parentDOM, nextNode, lifecycle) {\n mount(vNode.children, vNode.ref, context, false, null, lifecycle);\n var placeHolderVNode = createVoidVNode();\n mountText(placeHolderVNode, parentDOM, nextNode);\n vNode.dom = placeHolderVNode.dom;\n}\nfunction mountFragment(vNode, context, parentDOM, isSVG, nextNode, lifecycle) {\n var children = vNode.children;\n var childFlags = vNode.childFlags;\n // When fragment is optimized for multiple children, check if there is no children and change flag to invalid\n // This is the only normalization always done, to keep optimization flags API same for fragments and regular elements\n if (childFlags & 12 /* MultipleChildren */ && children.length === 0) {\n childFlags = vNode.childFlags = 2 /* HasVNodeChildren */;\n children = vNode.children = createVoidVNode();\n }\n if (childFlags === 2 /* HasVNodeChildren */) {\n mount(children, parentDOM, nextNode, isSVG, nextNode, lifecycle);\n }\n else {\n mountArrayChildren(children, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n}\nfunction mountText(vNode, parentDOM, nextNode) {\n var dom = (vNode.dom = document.createTextNode(vNode.children));\n if (!isNull(parentDOM)) {\n insertOrAppend(parentDOM, dom, nextNode);\n }\n}\nfunction mountElement(vNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var flags = vNode.flags;\n var props = vNode.props;\n var className = vNode.className;\n var childFlags = vNode.childFlags;\n var dom = (vNode.dom = documentCreateElement(vNode.type, (isSVG = isSVG || (flags & 32 /* SvgElement */) > 0)));\n var children = vNode.children;\n if (!isNullOrUndef(className) && className !== '') {\n if (isSVG) {\n dom.setAttribute('class', className);\n }\n else {\n dom.className = className;\n }\n }\n if (childFlags === 16 /* HasTextChildren */) {\n setTextContent(dom, children);\n }\n else if (childFlags !== 1 /* HasInvalidChildren */) {\n var childrenIsSVG = isSVG && vNode.type !== 'foreignObject';\n if (childFlags === 2 /* HasVNodeChildren */) {\n if (children.flags & 16384 /* InUse */) {\n vNode.children = children = directClone(children);\n }\n mount(children, dom, context, childrenIsSVG, null, lifecycle);\n }\n else if (childFlags === 8 /* HasKeyedChildren */ || childFlags === 4 /* HasNonKeyedChildren */) {\n mountArrayChildren(children, dom, context, childrenIsSVG, null, lifecycle);\n }\n }\n if (!isNull(parentDOM)) {\n insertOrAppend(parentDOM, dom, nextNode);\n }\n if (!isNull(props)) {\n mountProps(vNode, flags, props, dom, isSVG);\n }\n mountRef(vNode.ref, dom, lifecycle);\n}\nfunction mountArrayChildren(children, dom, context, isSVG, nextNode, lifecycle) {\n for (var i = 0; i < children.length; ++i) {\n var child = children[i];\n if (child.flags & 16384 /* InUse */) {\n children[i] = child = directClone(child);\n }\n mount(child, dom, context, isSVG, nextNode, lifecycle);\n }\n}\nfunction mountClassComponent(vNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var instance = createClassComponentInstance(vNode, vNode.type, vNode.props || EMPTY_OBJ, context, isSVG, lifecycle);\n mount(instance.$LI, parentDOM, instance.$CX, isSVG, nextNode, lifecycle);\n mountClassComponentCallbacks(vNode.ref, instance, lifecycle);\n}\nfunction mountFunctionalComponent(vNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n mount((vNode.children = normalizeRoot(renderFunctionalComponent(vNode, context))), parentDOM, context, isSVG, nextNode, lifecycle);\n}\nfunction createClassMountCallback(instance) {\n return function () {\n instance.componentDidMount();\n };\n}\nfunction mountClassComponentCallbacks(ref, instance, lifecycle) {\n mountRef(ref, instance, lifecycle);\n if (isFunction(instance.componentDidMount)) {\n lifecycle.push(createClassMountCallback(instance));\n }\n}\nfunction createOnMountCallback(ref, vNode) {\n return function () {\n ref.onComponentDidMount(findDOMfromVNode(vNode, true), vNode.props || EMPTY_OBJ);\n };\n}\nfunction mountFunctionalComponentCallbacks(vNode, lifecycle) {\n var ref = vNode.ref;\n if (!isNullOrUndef(ref)) {\n safeCall1(ref.onComponentWillMount, vNode.props || EMPTY_OBJ);\n if (isFunction(ref.onComponentDidMount)) {\n lifecycle.push(createOnMountCallback(ref, vNode));\n }\n }\n}\n\nfunction replaceWithNewNode(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle) {\n unmount(lastVNode);\n if ((nextVNode.flags & lastVNode.flags & 2033 /* DOMRef */) !== 0) {\n mount(nextVNode, null, context, isSVG, null, lifecycle);\n // Single DOM operation, when we have dom references available\n replaceChild(parentDOM, nextVNode.dom, lastVNode.dom);\n }\n else {\n mount(nextVNode, parentDOM, context, isSVG, findDOMfromVNode(lastVNode, true), lifecycle);\n removeVNodeDOM(lastVNode, parentDOM);\n }\n}\nfunction patch(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var nextFlags = (nextVNode.flags |= 16384 /* InUse */);\n if (lastVNode.flags !== nextFlags || lastVNode.type !== nextVNode.type || lastVNode.key !== nextVNode.key || nextFlags & 2048 /* ReCreate */) {\n if (lastVNode.flags & 16384 /* InUse */) {\n replaceWithNewNode(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle);\n }\n else {\n // Last vNode is not in use, it has crashed at application level. Just mount nextVNode and ignore last one\n mount(nextVNode, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n }\n else if (nextFlags & 481 /* Element */) {\n patchElement(lastVNode, nextVNode, context, isSVG, nextFlags, lifecycle);\n }\n else if (nextFlags & 4 /* ComponentClass */) {\n patchClassComponent(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n else if (nextFlags & 8 /* ComponentFunction */) {\n patchFunctionalComponent(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n else if (nextFlags & 16 /* Text */) {\n patchText(lastVNode, nextVNode);\n }\n else if (nextFlags & 512 /* Void */) {\n nextVNode.dom = lastVNode.dom;\n }\n else if (nextFlags & 8192 /* Fragment */) {\n patchFragment(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle);\n }\n else {\n patchPortal(lastVNode, nextVNode, context, lifecycle);\n }\n}\nfunction patchSingleTextChild(lastChildren, nextChildren, parentDOM) {\n if (lastChildren !== nextChildren) {\n if (lastChildren !== '') {\n parentDOM.firstChild.nodeValue = nextChildren;\n }\n else {\n setTextContent(parentDOM, nextChildren);\n }\n }\n}\nfunction patchContentEditableChildren(dom, nextChildren) {\n if (dom.textContent !== nextChildren) {\n dom.textContent = nextChildren;\n }\n}\nfunction patchFragment(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle) {\n var lastChildren = lastVNode.children;\n var nextChildren = nextVNode.children;\n var lastChildFlags = lastVNode.childFlags;\n var nextChildFlags = nextVNode.childFlags;\n var nextNode = null;\n // When fragment is optimized for multiple children, check if there is no children and change flag to invalid\n // This is the only normalization always done, to keep optimization flags API same for fragments and regular elements\n if (nextChildFlags & 12 /* MultipleChildren */ && nextChildren.length === 0) {\n nextChildFlags = nextVNode.childFlags = 2 /* HasVNodeChildren */;\n nextChildren = nextVNode.children = createVoidVNode();\n }\n var nextIsSingle = (nextChildFlags & 2 /* HasVNodeChildren */) !== 0;\n if (lastChildFlags & 12 /* MultipleChildren */) {\n var lastLen = lastChildren.length;\n // We need to know Fragment's edge node when\n if (\n // It uses keyed algorithm\n (lastChildFlags & 8 /* HasKeyedChildren */ && nextChildFlags & 8 /* HasKeyedChildren */) ||\n // It transforms from many to single\n nextIsSingle ||\n // It will append more nodes\n (!nextIsSingle && nextChildren.length > lastLen)) {\n // When fragment has multiple children there is always at least one vNode\n nextNode = findDOMfromVNode(lastChildren[lastLen - 1], false).nextSibling;\n }\n }\n patchChildren(lastChildFlags, nextChildFlags, lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, lastVNode, lifecycle);\n}\nfunction patchPortal(lastVNode, nextVNode, context, lifecycle) {\n var lastContainer = lastVNode.ref;\n var nextContainer = nextVNode.ref;\n var nextChildren = nextVNode.children;\n patchChildren(lastVNode.childFlags, nextVNode.childFlags, lastVNode.children, nextChildren, lastContainer, context, false, null, lastVNode, lifecycle);\n nextVNode.dom = lastVNode.dom;\n if (lastContainer !== nextContainer && !isInvalid(nextChildren)) {\n var node = nextChildren.dom;\n removeChild(lastContainer, node);\n appendChild(nextContainer, node);\n }\n}\nfunction patchElement(lastVNode, nextVNode, context, isSVG, nextFlags, lifecycle) {\n var dom = (nextVNode.dom = lastVNode.dom);\n var lastProps = lastVNode.props;\n var nextProps = nextVNode.props;\n var isFormElement = false;\n var hasControlledValue = false;\n var nextPropsOrEmpty;\n isSVG = isSVG || (nextFlags & 32 /* SvgElement */) > 0;\n // inlined patchProps -- starts --\n if (lastProps !== nextProps) {\n var lastPropsOrEmpty = lastProps || EMPTY_OBJ;\n nextPropsOrEmpty = nextProps || EMPTY_OBJ;\n if (nextPropsOrEmpty !== EMPTY_OBJ) {\n isFormElement = (nextFlags & 448 /* FormElement */) > 0;\n if (isFormElement) {\n hasControlledValue = isControlledFormElement(nextPropsOrEmpty);\n }\n for (var prop in nextPropsOrEmpty) {\n var lastValue = lastPropsOrEmpty[prop];\n var nextValue = nextPropsOrEmpty[prop];\n if (lastValue !== nextValue) {\n patchProp(prop, lastValue, nextValue, dom, isSVG, hasControlledValue, lastVNode);\n }\n }\n }\n if (lastPropsOrEmpty !== EMPTY_OBJ) {\n for (var prop$1 in lastPropsOrEmpty) {\n if (isNullOrUndef(nextPropsOrEmpty[prop$1]) && !isNullOrUndef(lastPropsOrEmpty[prop$1])) {\n patchProp(prop$1, lastPropsOrEmpty[prop$1], null, dom, isSVG, hasControlledValue, lastVNode);\n }\n }\n }\n }\n var nextChildren = nextVNode.children;\n var nextClassName = nextVNode.className;\n // inlined patchProps -- ends --\n if (lastVNode.className !== nextClassName) {\n if (isNullOrUndef(nextClassName)) {\n dom.removeAttribute('class');\n }\n else if (isSVG) {\n dom.setAttribute('class', nextClassName);\n }\n else {\n dom.className = nextClassName;\n }\n }\n if (nextFlags & 4096 /* ContentEditable */) {\n patchContentEditableChildren(dom, nextChildren);\n }\n else {\n patchChildren(lastVNode.childFlags, nextVNode.childFlags, lastVNode.children, nextChildren, dom, context, isSVG && nextVNode.type !== 'foreignObject', null, lastVNode, lifecycle);\n }\n if (isFormElement) {\n processElement(nextFlags, nextVNode, dom, nextPropsOrEmpty, false, hasControlledValue);\n }\n var nextRef = nextVNode.ref;\n var lastRef = lastVNode.ref;\n if (lastRef !== nextRef) {\n unmountRef(lastRef);\n mountRef(nextRef, dom, lifecycle);\n }\n}\nfunction replaceOneVNodeWithMultipleVNodes(lastChildren, nextChildren, parentDOM, context, isSVG, lifecycle) {\n unmount(lastChildren);\n mountArrayChildren(nextChildren, parentDOM, context, isSVG, findDOMfromVNode(lastChildren, true), lifecycle);\n removeVNodeDOM(lastChildren, parentDOM);\n}\nfunction patchChildren(lastChildFlags, nextChildFlags, lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, parentVNode, lifecycle) {\n switch (lastChildFlags) {\n case 2 /* HasVNodeChildren */:\n switch (nextChildFlags) {\n case 2 /* HasVNodeChildren */:\n patch(lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n case 1 /* HasInvalidChildren */:\n remove(lastChildren, parentDOM);\n break;\n case 16 /* HasTextChildren */:\n unmount(lastChildren);\n setTextContent(parentDOM, nextChildren);\n break;\n default:\n replaceOneVNodeWithMultipleVNodes(lastChildren, nextChildren, parentDOM, context, isSVG, lifecycle);\n break;\n }\n break;\n case 1 /* HasInvalidChildren */:\n switch (nextChildFlags) {\n case 2 /* HasVNodeChildren */:\n mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n case 1 /* HasInvalidChildren */:\n break;\n case 16 /* HasTextChildren */:\n setTextContent(parentDOM, nextChildren);\n break;\n default:\n mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n }\n break;\n case 16 /* HasTextChildren */:\n switch (nextChildFlags) {\n case 16 /* HasTextChildren */:\n patchSingleTextChild(lastChildren, nextChildren, parentDOM);\n break;\n case 2 /* HasVNodeChildren */:\n clearDOM(parentDOM);\n mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n case 1 /* HasInvalidChildren */:\n clearDOM(parentDOM);\n break;\n default:\n clearDOM(parentDOM);\n mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n }\n break;\n default:\n switch (nextChildFlags) {\n case 16 /* HasTextChildren */:\n unmountAllChildren(lastChildren);\n setTextContent(parentDOM, nextChildren);\n break;\n case 2 /* HasVNodeChildren */:\n removeAllChildren(parentDOM, parentVNode, lastChildren);\n mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n case 1 /* HasInvalidChildren */:\n removeAllChildren(parentDOM, parentVNode, lastChildren);\n break;\n default:\n var lastLength = lastChildren.length | 0;\n var nextLength = nextChildren.length | 0;\n // Fast path's for both algorithms\n if (lastLength === 0) {\n if (nextLength > 0) {\n mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n }\n else if (nextLength === 0) {\n removeAllChildren(parentDOM, parentVNode, lastChildren);\n }\n else if (nextChildFlags === 8 /* HasKeyedChildren */ && lastChildFlags === 8 /* HasKeyedChildren */) {\n patchKeyedChildren(lastChildren, nextChildren, parentDOM, context, isSVG, lastLength, nextLength, nextNode, parentVNode, lifecycle);\n }\n else {\n patchNonKeyedChildren(lastChildren, nextChildren, parentDOM, context, isSVG, lastLength, nextLength, nextNode, lifecycle);\n }\n break;\n }\n break;\n }\n}\nfunction createDidUpdate(instance, lastProps, lastState, snapshot, lifecycle) {\n lifecycle.push(function () {\n instance.componentDidUpdate(lastProps, lastState, snapshot);\n });\n}\nfunction updateClassComponent(instance, nextState, nextProps, parentDOM, context, isSVG, force, nextNode, lifecycle) {\n var lastState = instance.state;\n var lastProps = instance.props;\n var usesNewAPI = Boolean(instance.$N);\n var hasSCU = isFunction(instance.shouldComponentUpdate);\n if (usesNewAPI) {\n nextState = createDerivedState(instance, nextProps, nextState !== lastState ? combineFrom(lastState, nextState) : nextState);\n }\n if (force || !hasSCU || (hasSCU && instance.shouldComponentUpdate(nextProps, nextState, context))) {\n if (!usesNewAPI && isFunction(instance.componentWillUpdate)) {\n instance.componentWillUpdate(nextProps, nextState, context);\n }\n instance.props = nextProps;\n instance.state = nextState;\n instance.context = context;\n var snapshot = null;\n var nextInput = renderNewInput(instance, nextProps, context);\n if (usesNewAPI && isFunction(instance.getSnapshotBeforeUpdate)) {\n snapshot = instance.getSnapshotBeforeUpdate(lastProps, lastState);\n }\n patch(instance.$LI, nextInput, parentDOM, instance.$CX, isSVG, nextNode, lifecycle);\n // Dont update Last input, until patch has been succesfully executed\n instance.$LI = nextInput;\n if (isFunction(instance.componentDidUpdate)) {\n createDidUpdate(instance, lastProps, lastState, snapshot, lifecycle);\n }\n }\n else {\n instance.props = nextProps;\n instance.state = nextState;\n instance.context = context;\n }\n}\nfunction patchClassComponent(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var instance = (nextVNode.children = lastVNode.children);\n // If Component has crashed, ignore it to stay functional\n if (isNull(instance)) {\n return;\n }\n instance.$L = lifecycle;\n var nextProps = nextVNode.props || EMPTY_OBJ;\n var nextRef = nextVNode.ref;\n var lastRef = lastVNode.ref;\n var nextState = instance.state;\n if (!instance.$N) {\n if (isFunction(instance.componentWillReceiveProps)) {\n instance.$BR = true;\n instance.componentWillReceiveProps(nextProps, context);\n // If instance component was removed during its own update do nothing.\n if (instance.$UN) {\n return;\n }\n instance.$BR = false;\n }\n if (!isNull(instance.$PS)) {\n nextState = combineFrom(nextState, instance.$PS);\n instance.$PS = null;\n }\n }\n updateClassComponent(instance, nextState, nextProps, parentDOM, context, isSVG, false, nextNode, lifecycle);\n if (lastRef !== nextRef) {\n unmountRef(lastRef);\n mountRef(nextRef, instance, lifecycle);\n }\n}\nfunction patchFunctionalComponent(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var shouldUpdate = true;\n var nextProps = nextVNode.props || EMPTY_OBJ;\n var nextRef = nextVNode.ref;\n var lastProps = lastVNode.props;\n var nextHooksDefined = !isNullOrUndef(nextRef);\n var lastInput = lastVNode.children;\n if (nextHooksDefined && isFunction(nextRef.onComponentShouldUpdate)) {\n shouldUpdate = nextRef.onComponentShouldUpdate(lastProps, nextProps);\n }\n if (shouldUpdate !== false) {\n if (nextHooksDefined && isFunction(nextRef.onComponentWillUpdate)) {\n nextRef.onComponentWillUpdate(lastProps, nextProps);\n }\n var nextInput = normalizeRoot(renderFunctionalComponent(nextVNode, context));\n patch(lastInput, nextInput, parentDOM, context, isSVG, nextNode, lifecycle);\n nextVNode.children = nextInput;\n if (nextHooksDefined && isFunction(nextRef.onComponentDidUpdate)) {\n nextRef.onComponentDidUpdate(lastProps, nextProps);\n }\n }\n else {\n nextVNode.children = lastInput;\n }\n}\nfunction patchText(lastVNode, nextVNode) {\n var nextText = nextVNode.children;\n var dom = (nextVNode.dom = lastVNode.dom);\n if (nextText !== lastVNode.children) {\n dom.nodeValue = nextText;\n }\n}\nfunction patchNonKeyedChildren(lastChildren, nextChildren, dom, context, isSVG, lastChildrenLength, nextChildrenLength, nextNode, lifecycle) {\n var commonLength = lastChildrenLength > nextChildrenLength ? nextChildrenLength : lastChildrenLength;\n var i = 0;\n var nextChild;\n var lastChild;\n for (; i < commonLength; ++i) {\n nextChild = nextChildren[i];\n lastChild = lastChildren[i];\n if (nextChild.flags & 16384 /* InUse */) {\n nextChild = nextChildren[i] = directClone(nextChild);\n }\n patch(lastChild, nextChild, dom, context, isSVG, nextNode, lifecycle);\n lastChildren[i] = nextChild;\n }\n if (lastChildrenLength < nextChildrenLength) {\n for (i = commonLength; i < nextChildrenLength; ++i) {\n nextChild = nextChildren[i];\n if (nextChild.flags & 16384 /* InUse */) {\n nextChild = nextChildren[i] = directClone(nextChild);\n }\n mount(nextChild, dom, context, isSVG, nextNode, lifecycle);\n }\n }\n else if (lastChildrenLength > nextChildrenLength) {\n for (i = commonLength; i < lastChildrenLength; ++i) {\n remove(lastChildren[i], dom);\n }\n }\n}\nfunction patchKeyedChildren(a, b, dom, context, isSVG, aLength, bLength, outerEdge, parentVNode, lifecycle) {\n var aEnd = aLength - 1;\n var bEnd = bLength - 1;\n var j = 0;\n var aNode = a[j];\n var bNode = b[j];\n var nextPos;\n var nextNode;\n // Step 1\n // tslint:disable-next-line\n outer: {\n // Sync nodes with the same key at the beginning.\n while (aNode.key === bNode.key) {\n if (bNode.flags & 16384 /* InUse */) {\n b[j] = bNode = directClone(bNode);\n }\n patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle);\n a[j] = bNode;\n ++j;\n if (j > aEnd || j > bEnd) {\n break outer;\n }\n aNode = a[j];\n bNode = b[j];\n }\n aNode = a[aEnd];\n bNode = b[bEnd];\n // Sync nodes with the same key at the end.\n while (aNode.key === bNode.key) {\n if (bNode.flags & 16384 /* InUse */) {\n b[bEnd] = bNode = directClone(bNode);\n }\n patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle);\n a[aEnd] = bNode;\n aEnd--;\n bEnd--;\n if (j > aEnd || j > bEnd) {\n break outer;\n }\n aNode = a[aEnd];\n bNode = b[bEnd];\n }\n }\n if (j > aEnd) {\n if (j <= bEnd) {\n nextPos = bEnd + 1;\n nextNode = nextPos < bLength ? findDOMfromVNode(b[nextPos], true) : outerEdge;\n while (j <= bEnd) {\n bNode = b[j];\n if (bNode.flags & 16384 /* InUse */) {\n b[j] = bNode = directClone(bNode);\n }\n ++j;\n mount(bNode, dom, context, isSVG, nextNode, lifecycle);\n }\n }\n }\n else if (j > bEnd) {\n while (j <= aEnd) {\n remove(a[j++], dom);\n }\n }\n else {\n patchKeyedChildrenComplex(a, b, context, aLength, bLength, aEnd, bEnd, j, dom, isSVG, outerEdge, parentVNode, lifecycle);\n }\n}\nfunction patchKeyedChildrenComplex(a, b, context, aLength, bLength, aEnd, bEnd, j, dom, isSVG, outerEdge, parentVNode, lifecycle) {\n var aNode;\n var bNode;\n var nextPos;\n var i = 0;\n var aStart = j;\n var bStart = j;\n var aLeft = aEnd - j + 1;\n var bLeft = bEnd - j + 1;\n var sources = new Int32Array(bLeft + 1);\n // Keep track if its possible to remove whole DOM using textContent = '';\n var canRemoveWholeContent = aLeft === aLength;\n var moved = false;\n var pos = 0;\n var patched = 0;\n // When sizes are small, just loop them through\n if (bLength < 4 || (aLeft | bLeft) < 32) {\n for (i = aStart; i <= aEnd; ++i) {\n aNode = a[i];\n if (patched < bLeft) {\n for (j = bStart; j <= bEnd; j++) {\n bNode = b[j];\n if (aNode.key === bNode.key) {\n sources[j - bStart] = i + 1;\n if (canRemoveWholeContent) {\n canRemoveWholeContent = false;\n while (aStart < i) {\n remove(a[aStart++], dom);\n }\n }\n if (pos > j) {\n moved = true;\n }\n else {\n pos = j;\n }\n if (bNode.flags & 16384 /* InUse */) {\n b[j] = bNode = directClone(bNode);\n }\n patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle);\n ++patched;\n break;\n }\n }\n if (!canRemoveWholeContent && j > bEnd) {\n remove(aNode, dom);\n }\n }\n else if (!canRemoveWholeContent) {\n remove(aNode, dom);\n }\n }\n }\n else {\n var keyIndex = {};\n // Map keys by their index\n for (i = bStart; i <= bEnd; ++i) {\n keyIndex[b[i].key] = i;\n }\n // Try to patch same keys\n for (i = aStart; i <= aEnd; ++i) {\n aNode = a[i];\n if (patched < bLeft) {\n j = keyIndex[aNode.key];\n if (j !== void 0) {\n if (canRemoveWholeContent) {\n canRemoveWholeContent = false;\n while (i > aStart) {\n remove(a[aStart++], dom);\n }\n }\n sources[j - bStart] = i + 1;\n if (pos > j) {\n moved = true;\n }\n else {\n pos = j;\n }\n bNode = b[j];\n if (bNode.flags & 16384 /* InUse */) {\n b[j] = bNode = directClone(bNode);\n }\n patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle);\n ++patched;\n }\n else if (!canRemoveWholeContent) {\n remove(aNode, dom);\n }\n }\n else if (!canRemoveWholeContent) {\n remove(aNode, dom);\n }\n }\n }\n // fast-path: if nothing patched remove all old and add all new\n if (canRemoveWholeContent) {\n removeAllChildren(dom, parentVNode, a);\n mountArrayChildren(b, dom, context, isSVG, outerEdge, lifecycle);\n }\n else if (moved) {\n var seq = lis_algorithm(sources);\n j = seq.length - 1;\n for (i = bLeft - 1; i >= 0; i--) {\n if (sources[i] === 0) {\n pos = i + bStart;\n bNode = b[pos];\n if (bNode.flags & 16384 /* InUse */) {\n b[pos] = bNode = directClone(bNode);\n }\n nextPos = pos + 1;\n mount(bNode, dom, context, isSVG, nextPos < bLength ? findDOMfromVNode(b[nextPos], true) : outerEdge, lifecycle);\n }\n else if (j < 0 || i !== seq[j]) {\n pos = i + bStart;\n bNode = b[pos];\n nextPos = pos + 1;\n moveVNodeDOM(bNode, dom, nextPos < bLength ? findDOMfromVNode(b[nextPos], true) : outerEdge);\n }\n else {\n j--;\n }\n }\n }\n else if (patched !== bLeft) {\n // when patched count doesn't match b length we need to insert those new ones\n // loop backwards so we can use insertBefore\n for (i = bLeft - 1; i >= 0; i--) {\n if (sources[i] === 0) {\n pos = i + bStart;\n bNode = b[pos];\n if (bNode.flags & 16384 /* InUse */) {\n b[pos] = bNode = directClone(bNode);\n }\n nextPos = pos + 1;\n mount(bNode, dom, context, isSVG, nextPos < bLength ? findDOMfromVNode(b[nextPos], true) : outerEdge, lifecycle);\n }\n }\n }\n}\nvar result;\nvar p;\nvar maxLen = 0;\n// https://en.wikipedia.org/wiki/Longest_increasing_subsequence\nfunction lis_algorithm(arr) {\n var arrI = 0;\n var i = 0;\n var j = 0;\n var k = 0;\n var u = 0;\n var v = 0;\n var c = 0;\n var len = arr.length;\n if (len > maxLen) {\n maxLen = len;\n result = new Int32Array(len);\n p = new Int32Array(len);\n }\n for (; i < len; ++i) {\n arrI = arr[i];\n if (arrI !== 0) {\n j = result[k];\n if (arr[j] < arrI) {\n p[i] = j;\n result[++k] = i;\n continue;\n }\n u = 0;\n v = k;\n while (u < v) {\n c = (u + v) >> 1;\n if (arr[result[c]] < arrI) {\n u = c + 1;\n }\n else {\n v = c;\n }\n }\n if (arrI < arr[result[u]]) {\n if (u > 0) {\n p[i] = result[u - 1];\n }\n result[u] = i;\n }\n }\n }\n u = k + 1;\n var seq = new Int32Array(u);\n v = result[u - 1];\n while (u-- > 0) {\n seq[u] = v;\n v = p[v];\n result[u] = 0;\n }\n return seq;\n}\n\nvar hasDocumentAvailable = typeof document !== 'undefined';\nif (hasDocumentAvailable) {\n /*\n * Defining $EV and $V properties on Node.prototype\n * fixes v8 \"wrong map\" de-optimization\n */\n if (window.Node) {\n Node.prototype.$EV = null;\n Node.prototype.$V = null;\n }\n}\nfunction __render(input, parentDOM, callback, context) {\n var lifecycle = [];\n var rootInput = parentDOM.$V;\n renderCheck.v = true;\n if (isNullOrUndef(rootInput)) {\n if (!isNullOrUndef(input)) {\n if (input.flags & 16384 /* InUse */) {\n input = directClone(input);\n }\n mount(input, parentDOM, context, false, null, lifecycle);\n parentDOM.$V = input;\n rootInput = input;\n }\n }\n else {\n if (isNullOrUndef(input)) {\n remove(rootInput, parentDOM);\n parentDOM.$V = null;\n }\n else {\n if (input.flags & 16384 /* InUse */) {\n input = directClone(input);\n }\n patch(rootInput, input, parentDOM, context, false, null, lifecycle);\n rootInput = parentDOM.$V = input;\n }\n }\n callAll(lifecycle);\n renderCheck.v = false;\n if (isFunction(callback)) {\n callback();\n }\n if (isFunction(options.renderComplete)) {\n options.renderComplete(rootInput, parentDOM);\n }\n}\nfunction render(input, parentDOM, callback, context) {\n if ( callback === void 0 ) callback = null;\n if ( context === void 0 ) context = EMPTY_OBJ;\n\n __render(input, parentDOM, callback, context);\n}\nfunction createRenderer(parentDOM) {\n return function renderer(lastInput, nextInput, callback, context) {\n if (!parentDOM) {\n parentDOM = lastInput;\n }\n render(nextInput, parentDOM, callback, context);\n };\n}\n\nvar QUEUE = [];\nvar nextTick = typeof Promise !== 'undefined'\n ? Promise.resolve().then.bind(Promise.resolve())\n : function (a) {\n window.setTimeout(a, 0);\n };\nvar microTaskPending = false;\nfunction queueStateChanges(component, newState, callback, force) {\n var pending = component.$PS;\n if (isFunction(newState)) {\n newState = newState(pending ? combineFrom(component.state, pending) : component.state, component.props, component.context);\n }\n if (isNullOrUndef(pending)) {\n component.$PS = newState;\n }\n else {\n for (var stateKey in newState) {\n pending[stateKey] = newState[stateKey];\n }\n }\n if (!component.$BR) {\n if (!renderCheck.v) {\n if (QUEUE.length === 0) {\n applyState(component, force);\n if (isFunction(callback)) {\n callback.call(component);\n }\n return;\n }\n }\n if (QUEUE.indexOf(component) === -1) {\n QUEUE.push(component);\n }\n if (force) {\n component.$F = true;\n }\n if (!microTaskPending) {\n microTaskPending = true;\n nextTick(rerender);\n }\n if (isFunction(callback)) {\n var QU = component.$QU;\n if (!QU) {\n QU = component.$QU = [];\n }\n QU.push(callback);\n }\n }\n else if (isFunction(callback)) {\n component.$L.push(callback.bind(component));\n }\n}\nfunction callSetStateCallbacks(component) {\n var queue = component.$QU;\n for (var i = 0; i < queue.length; ++i) {\n queue[i].call(component);\n }\n component.$QU = null;\n}\nfunction rerender() {\n var component;\n microTaskPending = false;\n while ((component = QUEUE.shift())) {\n if (!component.$UN) {\n var force = component.$F;\n component.$F = false;\n applyState(component, force);\n if (component.$QU) {\n callSetStateCallbacks(component);\n }\n }\n }\n}\nfunction applyState(component, force) {\n if (force || !component.$BR) {\n var pendingState = component.$PS;\n component.$PS = null;\n var lifecycle = [];\n renderCheck.v = true;\n updateClassComponent(component, combineFrom(component.state, pendingState), component.props, findDOMfromVNode(component.$LI, true).parentNode, component.context, component.$SVG, force, null, lifecycle);\n callAll(lifecycle);\n renderCheck.v = false;\n }\n else {\n component.state = component.$PS;\n component.$PS = null;\n }\n}\nvar Component = function Component(props, context) {\n // Public\n this.state = null;\n // Internal properties\n this.$BR = false; // BLOCK RENDER\n this.$BS = true; // BLOCK STATE\n this.$PS = null; // PENDING STATE (PARTIAL or FULL)\n this.$LI = null; // LAST INPUT\n this.$UN = false; // UNMOUNTED\n this.$CX = null; // CHILDCONTEXT\n this.$QU = null; // QUEUE\n this.$N = false; // Uses new lifecycle API Flag\n this.$L = null; // Current lifecycle of this component\n this.$SVG = false; // Flag to keep track if component is inside SVG tree\n this.$F = false; // Force update flag\n this.props = props || EMPTY_OBJ;\n this.context = context || EMPTY_OBJ; // context should not be mutable\n};\nComponent.prototype.forceUpdate = function forceUpdate (callback) {\n if (this.$UN) {\n return;\n }\n // Do not allow double render during force update\n queueStateChanges(this, {}, callback, true);\n};\nComponent.prototype.setState = function setState (newState, callback) {\n if (this.$UN) {\n return;\n }\n if (!this.$BS) {\n queueStateChanges(this, newState, callback, false);\n }\n};\nComponent.prototype.render = function render (_nextProps, _nextState, _nextContext) {\n return null;\n};\n\nvar version = \"7.4.8\";\n\nexport { Component, EMPTY_OBJ, Fragment, createClassComponentInstance as _CI, normalizeRoot as _HI, mount as _M, mountClassComponentCallbacks as _MCCC, mountElement as _ME, mountFunctionalComponentCallbacks as _MFCC, mountProps as _MP, mountRef as _MR, renderFunctionalComponent as _RFC, __render, createComponentVNode, createFragment, createPortal, createRef, createRenderer, createTextVNode, createVNode, directClone, findDOMfromVNode, forwardRef, getFlagsForElementVnode, linkEvent, normalizeProps, options, render, rerender, version };\n","/**\r\n * DevExtreme (esm/ui/data_grid.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport DataGrid from \"./data_grid/ui.data_grid\";\r\nexport default DataGrid;\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.editor_factory.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport positionUtils from \"../../animation/position\";\r\nimport {\r\n addNamespace,\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport EditorFactoryMixin from \"../shared/ui.editor_factory_mixin\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\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 = addNamespace([pointerEvents.down, \"focusin\", clickEventName].join(\" \"), MODULE_NAMESPACE);\r\nvar DX_HIDDEN = \"dx-hidden\";\r\nvar EditorFactory = modules.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 && $(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 = positionUtils.calculate($element, 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 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 refocus: function() {\r\n var $focus = this.focus();\r\n this.focus($focus)\r\n },\r\n renderFocusOverlay: function($element, hideBorder) {\r\n if (!gridCoreUtils.isElementInCurrentGrid(this, $element)) {\r\n return\r\n }\r\n if (!this._$focusOverlay) {\r\n this._$focusOverlay = $(\"
\").addClass(this.addWidgetPrefix(FOCUS_OVERLAY_CLASS))\r\n }\r\n if (hideBorder) {\r\n this._$focusOverlay.addClass(DX_HIDDEN)\r\n } else if ($element.length) {\r\n var align = browser.msie ? \"left bottom\" : browser.mozilla ? \"right bottom\" : \"left top\";\r\n var $content = $element.closest(\".\" + this.addWidgetPrefix(CONTENT_CLASS));\r\n var elemCoord = getBoundingRect($element.get(0));\r\n this._$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 this._updateFocusOverlaySize(this._$focusOverlay, focusOverlayPosition);\r\n positionUtils.setup(this._$focusOverlay, focusOverlayPosition);\r\n this._$focusOverlay.css(\"visibility\", \"visible\")\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 eventsEngine.on(domAdapter.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 eventsEngine.on($container, addNamespace(\"keydown\", MODULE_NAMESPACE), (function(e) {\r\n if (\"tab\" === 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 eventsEngine.off(domAdapter.getDocument(), UPDATE_FOCUS_EVENTS, this._updateFocusHandler)\r\n }\r\n}).include(EditorFactoryMixin);\r\nexport var editorFactoryModule = {\r\n defaultOptions: function() {\r\n return {}\r\n },\r\n controllers: {\r\n editorFactory: EditorFactory\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.validating.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport {\r\n createObjectWithChanges\r\n} from \"../../data/array_utils\";\r\nimport {\r\n deferUpdate,\r\n equalByValue\r\n} from \"../../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isDefined,\r\n isEmptyObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n focused\r\n} from \"../widget/selectors\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport Button from \"../button\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport ValidationEngine from \"../validation_engine\";\r\nimport Validator from \"../validator\";\r\nimport Overlay from \"../overlay/ui.overlay\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n Deferred,\r\n when,\r\n fromPromise\r\n} from \"../../core/utils/deferred\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nimport {\r\n encodeHtml\r\n} from \"../../core/utils/string\";\r\nimport browser from \"../../core/utils/browser\";\r\nvar INVALIDATE_CLASS = \"invalid\";\r\nvar REVERT_TOOLTIP_CLASS = \"revert-tooltip\";\r\nvar ROWS_VIEW_CLASS = \"rowsview\";\r\nvar INVALID_MESSAGE_CLASS = \"dx-invalid-message\";\r\nvar WIDGET_INVALID_MESSAGE_CLASS = \"invalid-message\";\r\nvar INVALID_MESSAGE_ALWAYS_CLASS = \"dx-invalid-message-always\";\r\nvar REVERT_BUTTON_CLASS = \"dx-revert-button\";\r\nvar VALIDATOR_CLASS = \"validator\";\r\nvar PENDING_INDICATOR_CLASS = \"dx-pending-indicator\";\r\nvar VALIDATION_PENDING_CLASS = \"dx-validation-pending\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar INSERT_INDEX = \"__DX_INSERT_INDEX__\";\r\nvar PADDING_BETWEEN_TOOLTIPS = 2;\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 EDIT_MODE_POPUP = \"popup\";\r\nvar GROUP_CELL_CLASS = \"dx-group-cell\";\r\nvar FORM_BASED_MODES = [EDIT_MODE_POPUP, EDIT_MODE_FORM];\r\nvar COMMAND_TRANSPARENT = \"transparent\";\r\nvar VALIDATION_STATUS = {\r\n valid: \"valid\",\r\n invalid: \"invalid\",\r\n pending: \"pending\"\r\n};\r\nvar EDIT_DATA_INSERT_TYPE = \"insert\";\r\nvar EDIT_DATA_REMOVE_TYPE = \"remove\";\r\nvar VALIDATION_CANCELLED = \"cancel\";\r\nvar NEW_SCROLLING_MODE = \"scrolling.newMode\";\r\nvar validationResultIsValid = function(result) {\r\n return isDefined(result) && result !== VALIDATION_CANCELLED\r\n};\r\nvar cellValueShouldBeValidated = function(value, rowOptions) {\r\n return void 0 !== value || void 0 === value && rowOptions && !rowOptions.isNewRow\r\n};\r\nvar ValidatingController = modules.Controller.inherit({\r\n init: function() {\r\n this._editingController = this.getController(\"editing\");\r\n this.createAction(\"onRowValidating\");\r\n if (!this._validationState) {\r\n this._validationState = []\r\n }\r\n },\r\n _rowIsValidated: function(change) {\r\n var validationData = this._getValidationData(null === change || void 0 === change ? void 0 : change.key);\r\n return !!validationData && !!validationData.validated\r\n },\r\n _getValidationData: function(key, create) {\r\n var validationData = this._validationState.filter(data => equalByValue(data.key, key))[0];\r\n if (!validationData && create) {\r\n validationData = {\r\n key: key,\r\n isValid: true\r\n };\r\n this._validationState.push(validationData)\r\n }\r\n return validationData\r\n },\r\n _getBrokenRules: function(validationData, validationResults) {\r\n var brokenRules;\r\n if (validationResults) {\r\n brokenRules = validationResults.brokenRules || validationResults.brokenRule && [validationResults.brokenRule]\r\n } else {\r\n brokenRules = validationData.brokenRules || []\r\n }\r\n return brokenRules\r\n },\r\n _rowValidating: function(validationData, validationResults) {\r\n var deferred = new Deferred;\r\n var change = this._editingController.getChangeByKey(null === validationData || void 0 === validationData ? void 0 : validationData.key);\r\n var brokenRules = this._getBrokenRules(validationData, validationResults);\r\n var isValid = validationResults ? validationResults.isValid : validationData.isValid;\r\n var parameters = {\r\n brokenRules: brokenRules,\r\n isValid: isValid,\r\n key: change.key,\r\n newData: change.data,\r\n oldData: this._editingController._getOldData(change.key),\r\n promise: null,\r\n errorText: this.getHiddenValidatorsErrorText(brokenRules)\r\n };\r\n this.executeAction(\"onRowValidating\", parameters);\r\n when(fromPromise(parameters.promise)).always((function() {\r\n validationData.isValid = parameters.isValid;\r\n validationData.errorText = parameters.errorText;\r\n deferred.resolve(parameters)\r\n }));\r\n return deferred.promise()\r\n },\r\n getHiddenValidatorsErrorText: function(brokenRules) {\r\n var brokenRulesMessages = [];\r\n each(brokenRules, (function(_, brokenRule) {\r\n var column = brokenRule.column;\r\n var isGroupExpandColumn = column && void 0 !== column.groupIndex && !column.showWhenGrouped;\r\n var isVisibleColumn = column && column.visible;\r\n if (!brokenRule.validator.$element().parent().length && (!isVisibleColumn || isGroupExpandColumn)) {\r\n brokenRulesMessages.push(brokenRule.message)\r\n }\r\n }));\r\n return brokenRulesMessages.join(\", \")\r\n },\r\n validate: function(isFull) {\r\n var isValid = true;\r\n var editingController = this._editingController;\r\n var deferred = new Deferred;\r\n var completeList = [];\r\n var editMode = editingController.getEditMode();\r\n isFull = isFull || editMode === EDIT_MODE_ROW;\r\n if (this._isValidationInProgress) {\r\n return deferred.resolve(false).promise()\r\n }\r\n this._isValidationInProgress = true;\r\n if (isFull) {\r\n editingController.addDeferred(deferred);\r\n var changes = editingController.getChanges();\r\n each(changes, (index, _ref) => {\r\n var {\r\n type: type,\r\n key: key\r\n } = _ref;\r\n if (\"remove\" !== type) {\r\n var validationData = this._getValidationData(key, true);\r\n var validationResult = this.validateGroup(validationData);\r\n completeList.push(validationResult);\r\n validationResult.done(validationResult => {\r\n validationData.validated = true;\r\n isValid = isValid && validationResult.isValid\r\n })\r\n }\r\n })\r\n } else if (this._currentCellValidator) {\r\n var validationResult = this.validateGroup(this._currentCellValidator._findGroup());\r\n completeList.push(validationResult);\r\n validationResult.done(validationResult => {\r\n isValid = validationResult.isValid\r\n })\r\n }\r\n when(...completeList).done(() => {\r\n this._isValidationInProgress = false;\r\n deferred.resolve(isValid)\r\n });\r\n return deferred.promise()\r\n },\r\n validateGroup: function(validationData) {\r\n var _validationResult;\r\n var result = new Deferred;\r\n var validateGroup = validationData && ValidationEngine.getGroupConfig(validationData);\r\n var validationResult;\r\n if (null !== validateGroup && void 0 !== validateGroup && validateGroup.validators.length) {\r\n this.resetRowValidationResults(validationData);\r\n validationResult = ValidationEngine.validateGroup(validationData)\r\n }\r\n when((null === (_validationResult = validationResult) || void 0 === _validationResult ? void 0 : _validationResult.complete) || validationResult).done(validationResult => {\r\n when(this._rowValidating(validationData, validationResult)).done(result.resolve)\r\n });\r\n return result.promise()\r\n },\r\n isRowDataModified: change => !isEmptyObject(change.data),\r\n updateValidationState: function(change) {\r\n var editMode = this._editingController.getEditMode();\r\n var key = change.key;\r\n var validationData = this._getValidationData(key, true);\r\n if (-1 === FORM_BASED_MODES.indexOf(editMode)) {\r\n if (change.type === EDIT_DATA_INSERT_TYPE && !this.isRowDataModified(change)) {\r\n validationData.isValid = true;\r\n return\r\n }\r\n this.setDisableApplyValidationResults(true);\r\n var groupConfig = ValidationEngine.getGroupConfig(validationData);\r\n if (groupConfig) {\r\n var validationResult = ValidationEngine.validateGroup(validationData);\r\n when(validationResult.complete || validationResult).done(validationResult => {\r\n validationData.isValid = validationResult.isValid;\r\n validationData.brokenRules = validationResult.brokenRules\r\n })\r\n } else if (!validationData.brokenRules || !validationData.brokenRules.length) {\r\n validationData.isValid = true\r\n }\r\n this.setDisableApplyValidationResults(false)\r\n } else {\r\n validationData.isValid = true\r\n }\r\n },\r\n setValidator: function(validator) {\r\n this._currentCellValidator = validator\r\n },\r\n renderCellPendingIndicator: function($container) {\r\n var $indicator = $container.find(\".\" + PENDING_INDICATOR_CLASS);\r\n if (!$indicator.length) {\r\n var $indicatorContainer = $container;\r\n $indicator = $(\"
\").appendTo($indicatorContainer).addClass(PENDING_INDICATOR_CLASS);\r\n this._createComponent($indicator, LoadIndicator);\r\n $container.addClass(VALIDATION_PENDING_CLASS)\r\n }\r\n },\r\n disposeCellPendingIndicator: function($container) {\r\n var $indicator = $container.find(\".\" + PENDING_INDICATOR_CLASS);\r\n if ($indicator.length) {\r\n var indicator = LoadIndicator.getInstance($indicator);\r\n if (indicator) {\r\n indicator.dispose();\r\n indicator.$element().remove()\r\n }\r\n $container.removeClass(VALIDATION_PENDING_CLASS)\r\n }\r\n },\r\n validationStatusChanged: function(result) {\r\n var validator = result.validator;\r\n var validationGroup = validator.option(\"validationGroup\");\r\n var column = validator.option(\"dataGetter\")().column;\r\n this.updateCellValidationResult({\r\n rowKey: validationGroup.key,\r\n columnIndex: column.index,\r\n validationResult: result\r\n })\r\n },\r\n validatorInitialized: function(arg) {\r\n arg.component.on(\"validating\", this.validationStatusChanged.bind(this));\r\n arg.component.on(\"validated\", this.validationStatusChanged.bind(this))\r\n },\r\n validatorDisposing: function(arg) {\r\n var validator = arg.component;\r\n var validationGroup = validator.option(\"validationGroup\");\r\n var column = validator.option(\"dataGetter\")().column;\r\n var result = this.getCellValidationResult({\r\n rowKey: null === validationGroup || void 0 === validationGroup ? void 0 : validationGroup.key,\r\n columnIndex: column.index\r\n });\r\n if (validationResultIsValid(result) && result.status === VALIDATION_STATUS.pending) {\r\n this.cancelCellValidationResult({\r\n change: validationGroup,\r\n columnIndex: column.index\r\n })\r\n }\r\n },\r\n applyValidationResult: function($container, result) {\r\n var validator = result.validator;\r\n var validationGroup = validator.option(\"validationGroup\");\r\n var column = validator.option(\"dataGetter\")().column;\r\n result.brokenRules && result.brokenRules.forEach(rule => {\r\n rule.columnIndex = column.index;\r\n rule.column = column\r\n });\r\n if ($container) {\r\n var validationResult = this.getCellValidationResult({\r\n rowKey: validationGroup.key,\r\n columnIndex: column.index\r\n });\r\n var requestIsDisabled = validationResultIsValid(validationResult) && validationResult.disabledPendingId === result.id;\r\n if (this._disableApplyValidationResults || requestIsDisabled) {\r\n return\r\n }\r\n if (result.status === VALIDATION_STATUS.invalid) {\r\n var $focus = $container.find(\":focus\");\r\n if (!focused($focus)) {\r\n eventsEngine.trigger($focus, \"focus\");\r\n eventsEngine.trigger($focus, pointerEvents.down)\r\n }\r\n }\r\n var editor = !column.editCellTemplate && this.getController(\"editorFactory\").getEditorInstance($container);\r\n if (result.status === VALIDATION_STATUS.pending) {\r\n if (editor) {\r\n editor.option(\"validationStatus\", VALIDATION_STATUS.pending)\r\n } else {\r\n this.renderCellPendingIndicator($container)\r\n }\r\n } else if (editor) {\r\n editor.option(\"validationStatus\", VALIDATION_STATUS.valid)\r\n } else {\r\n this.disposeCellPendingIndicator($container)\r\n }\r\n $container.toggleClass(this.addWidgetPrefix(INVALIDATE_CLASS), result.status === VALIDATION_STATUS.invalid)\r\n }\r\n },\r\n _syncInternalEditingData: function(parameters) {\r\n var _parameters$row;\r\n var editingController = this._editingController;\r\n var change = editingController.getChangeByKey(parameters.key);\r\n var oldDataFromState = editingController._getOldData(parameters.key);\r\n var oldData = null === (_parameters$row = parameters.row) || void 0 === _parameters$row ? void 0 : _parameters$row.oldData;\r\n if (change && oldData && !oldDataFromState) {\r\n editingController._addInternalData({\r\n key: parameters.key,\r\n oldData: oldData\r\n })\r\n }\r\n },\r\n createValidator: function(parameters, $container) {\r\n var editingController = this._editingController;\r\n var column = parameters.column;\r\n var showEditorAlways = column.showEditorAlways;\r\n if (isDefined(column.command) || !column.validationRules || !Array.isArray(column.validationRules) || !column.validationRules.length) {\r\n return\r\n }\r\n var editIndex = editingController.getIndexByKey(parameters.key, editingController.getChanges());\r\n var needCreateValidator = editIndex > -1;\r\n if (!needCreateValidator) {\r\n if (!showEditorAlways) {\r\n var columnsController = this.getController(\"columns\");\r\n var visibleColumns = (null === columnsController || void 0 === columnsController ? void 0 : columnsController.getVisibleColumns()) || [];\r\n showEditorAlways = visibleColumns.some((function(column) {\r\n return column.showEditorAlways\r\n }))\r\n }\r\n var isEditRow = equalByValue(this.option(\"editing.editRowKey\"), parameters.key);\r\n var isCellOrBatchEditingAllowed = editingController.isCellOrBatchEditMode() && editingController.allowUpdating({\r\n row: parameters.row\r\n });\r\n needCreateValidator = isEditRow || isCellOrBatchEditingAllowed && showEditorAlways;\r\n if (isCellOrBatchEditingAllowed && showEditorAlways) {\r\n var _parameters$row$oldDa, _parameters$row2;\r\n editingController._addInternalData({\r\n key: parameters.key,\r\n oldData: null !== (_parameters$row$oldDa = null === (_parameters$row2 = parameters.row) || void 0 === _parameters$row2 ? void 0 : _parameters$row2.oldData) && void 0 !== _parameters$row$oldDa ? _parameters$row$oldDa : parameters.data\r\n })\r\n }\r\n }\r\n if (needCreateValidator) {\r\n if ($container && !$container.length) {\r\n errors.log(\"E1050\");\r\n return\r\n }\r\n this._syncInternalEditingData(parameters);\r\n var validationData = this._getValidationData(parameters.key, true);\r\n var getValue = () => {\r\n var change = editingController.getChangeByKey(null === validationData || void 0 === validationData ? void 0 : validationData.key);\r\n var value = column.calculateCellValue((null === change || void 0 === change ? void 0 : change.data) || {});\r\n return void 0 !== value ? value : parameters.value\r\n };\r\n var useDefaultValidator = $container && $container.hasClass(\"dx-widget\");\r\n $container && $container.addClass(this.addWidgetPrefix(VALIDATOR_CLASS));\r\n var validator = new Validator($container || $(\"
\"), {\r\n name: column.caption,\r\n validationRules: extend(true, [], column.validationRules),\r\n validationGroup: validationData,\r\n adapter: useDefaultValidator ? null : {\r\n getValue: getValue,\r\n applyValidationResults: result => {\r\n this.applyValidationResult($container, result)\r\n }\r\n },\r\n dataGetter: function() {\r\n var key = null === validationData || void 0 === validationData ? void 0 : validationData.key;\r\n var change = editingController.getChangeByKey(key);\r\n var oldData = editingController._getOldData(key);\r\n return {\r\n data: createObjectWithChanges(oldData, null === change || void 0 === change ? void 0 : change.data),\r\n column: column\r\n }\r\n },\r\n onInitialized: this.validatorInitialized.bind(this),\r\n onDisposing: this.validatorDisposing.bind(this)\r\n });\r\n if (useDefaultValidator) {\r\n var adapter = validator.option(\"adapter\");\r\n if (adapter) {\r\n adapter.getValue = getValue;\r\n adapter.validationRequestsCallbacks = []\r\n }\r\n }\r\n return validator\r\n }\r\n },\r\n setDisableApplyValidationResults: function(flag) {\r\n this._disableApplyValidationResults = flag\r\n },\r\n getDisableApplyValidationResults: function() {\r\n return this._disableApplyValidationResults\r\n },\r\n isCurrentValidatorProcessing: function(_ref2) {\r\n var {\r\n rowKey: rowKey,\r\n columnIndex: columnIndex\r\n } = _ref2;\r\n return this._currentCellValidator && equalByValue(this._currentCellValidator.option(\"validationGroup\").key, rowKey) && this._currentCellValidator.option(\"dataGetter\")().column.index === columnIndex\r\n },\r\n validateCell: function(validator) {\r\n var cellParams = {\r\n rowKey: validator.option(\"validationGroup\").key,\r\n columnIndex: validator.option(\"dataGetter\")().column.index\r\n };\r\n var validationResult = this.getCellValidationResult(cellParams);\r\n var stateRestored = validationResultIsValid(validationResult);\r\n if (!stateRestored) {\r\n validationResult = validator.validate()\r\n }\r\n var deferred = new Deferred;\r\n var adapter = validator.option(\"adapter\");\r\n if (stateRestored && validationResult.status === VALIDATION_STATUS.pending) {\r\n this.updateCellValidationResult(cellParams);\r\n adapter.applyValidationResults(validationResult)\r\n }\r\n when(validationResult.complete || validationResult).done(validationResult => {\r\n stateRestored && adapter.applyValidationResults(validationResult);\r\n deferred.resolve(validationResult)\r\n });\r\n return deferred.promise()\r\n },\r\n updateCellValidationResult: function(_ref3) {\r\n var {\r\n rowKey: rowKey,\r\n columnIndex: columnIndex,\r\n validationResult: validationResult\r\n } = _ref3;\r\n var validationData = this._getValidationData(rowKey);\r\n if (!validationData) {\r\n return\r\n }\r\n if (!validationData.validationResults) {\r\n validationData.validationResults = {}\r\n }\r\n var result;\r\n if (validationResult) {\r\n result = extend({}, validationResult);\r\n validationData.validationResults[columnIndex] = result;\r\n if (validationResult.status === VALIDATION_STATUS.pending) {\r\n if (this._editingController.getEditMode() === EDIT_MODE_CELL) {\r\n result.deferred = new Deferred;\r\n result.complete.always(() => {\r\n result.deferred.resolve()\r\n });\r\n this._editingController.addDeferred(result.deferred)\r\n }\r\n if (this._disableApplyValidationResults) {\r\n result.disabledPendingId = validationResult.id;\r\n return\r\n }\r\n }\r\n } else {\r\n result = validationData.validationResults[columnIndex]\r\n }\r\n if (result && result.disabledPendingId) {\r\n delete result.disabledPendingId\r\n }\r\n },\r\n getCellValidationResult: function(_ref4) {\r\n var _validationData$valid;\r\n var {\r\n rowKey: rowKey,\r\n columnIndex: columnIndex\r\n } = _ref4;\r\n var validationData = this._getValidationData(rowKey, true);\r\n return null === validationData || void 0 === validationData ? void 0 : null === (_validationData$valid = validationData.validationResults) || void 0 === _validationData$valid ? void 0 : _validationData$valid[columnIndex]\r\n },\r\n removeCellValidationResult: function(_ref5) {\r\n var {\r\n change: change,\r\n columnIndex: columnIndex\r\n } = _ref5;\r\n var validationData = this._getValidationData(null === change || void 0 === change ? void 0 : change.key);\r\n if (validationData && validationData.validationResults) {\r\n this.cancelCellValidationResult({\r\n change: change,\r\n columnIndex: columnIndex\r\n });\r\n delete validationData.validationResults[columnIndex]\r\n }\r\n },\r\n cancelCellValidationResult: function(_ref6) {\r\n var {\r\n change: change,\r\n columnIndex: columnIndex\r\n } = _ref6;\r\n var validationData = this._getValidationData(change.key);\r\n if (change && validationData.validationResults) {\r\n var result = validationData.validationResults[columnIndex];\r\n if (result) {\r\n result.deferred && result.deferred.reject(VALIDATION_CANCELLED);\r\n validationData.validationResults[columnIndex] = VALIDATION_CANCELLED\r\n }\r\n }\r\n },\r\n resetRowValidationResults: function(validationData) {\r\n if (validationData) {\r\n validationData.validationResults && delete validationData.validationResults;\r\n delete validationData.validated\r\n }\r\n },\r\n isInvalidCell: function(_ref7) {\r\n var {\r\n rowKey: rowKey,\r\n columnIndex: columnIndex\r\n } = _ref7;\r\n var result = this.getCellValidationResult({\r\n rowKey: rowKey,\r\n columnIndex: columnIndex\r\n });\r\n return validationResultIsValid(result) && result.status === VALIDATION_STATUS.invalid\r\n },\r\n getCellValidator: function(_ref8) {\r\n var {\r\n rowKey: rowKey,\r\n columnIndex: columnIndex\r\n } = _ref8;\r\n var validationData = this._getValidationData(rowKey);\r\n var groupConfig = validationData && ValidationEngine.getGroupConfig(validationData);\r\n var validators = groupConfig && groupConfig.validators;\r\n return validators && validators.filter(v => {\r\n var column = v.option(\"dataGetter\")().column;\r\n return column ? column.index === columnIndex : false\r\n })[0]\r\n },\r\n setCellValidationStatus: function(cellOptions) {\r\n var validationResult = this.getCellValidationResult({\r\n rowKey: cellOptions.key,\r\n columnIndex: cellOptions.column.index\r\n });\r\n if (isDefined(validationResult)) {\r\n cellOptions.validationStatus = validationResult !== VALIDATION_CANCELLED ? validationResult.status : VALIDATION_CANCELLED\r\n } else {\r\n delete cellOptions.validationStatus\r\n }\r\n }\r\n});\r\nexport var validatingModule = {\r\n defaultOptions: function() {\r\n return {\r\n editing: {\r\n texts: {\r\n validationCancelChanges: messageLocalization.format(\"dxDataGrid-validationCancelChanges\")\r\n }\r\n }\r\n }\r\n },\r\n controllers: {\r\n validating: ValidatingController\r\n },\r\n extenders: {\r\n controllers: {\r\n editing: {\r\n _addChange: function(options, row) {\r\n var index = this.callBase(options, row);\r\n var validatingController = this.getController(\"validating\");\r\n if (index >= 0 && options.type !== EDIT_DATA_REMOVE_TYPE) {\r\n var change = this.getChanges()[index];\r\n change && validatingController.updateValidationState(change)\r\n }\r\n return index\r\n },\r\n _handleChangesChange: function(args) {\r\n this.callBase.apply(this, arguments);\r\n var validatingController = this.getController(\"validating\");\r\n args.value.forEach(change => {\r\n if (void 0 === validatingController._getValidationData(change.key)) {\r\n validatingController.updateValidationState(change)\r\n }\r\n })\r\n },\r\n _updateRowAndPageIndices: function() {\r\n var that = this;\r\n var startInsertIndex = that.getView(\"rowsView\").getTopVisibleItemIndex();\r\n var rowIndex = startInsertIndex;\r\n each(that.getChanges(), (_, _ref9) => {\r\n var {\r\n key: key,\r\n type: type\r\n } = _ref9;\r\n var validationData = this.getController(\"validating\")._getValidationData(key);\r\n if (validationData && !validationData.isValid && validationData.pageIndex !== that._pageIndex) {\r\n validationData.pageIndex = that._pageIndex;\r\n if (type === EDIT_DATA_INSERT_TYPE) {\r\n validationData.rowIndex = startInsertIndex\r\n } else {\r\n validationData.rowIndex = rowIndex\r\n }\r\n rowIndex++\r\n }\r\n })\r\n },\r\n _getValidationGroupsInForm: function(detailOptions) {\r\n var validatingController = this.getController(\"validating\");\r\n var validationData = validatingController._getValidationData(detailOptions.key, true);\r\n return {\r\n validationGroup: validationData\r\n }\r\n },\r\n _validateEditFormAfterUpdate: function(row, isCustomSetCellValue) {\r\n if (isCustomSetCellValue && this._editForm && !row.isNewRow) {\r\n this._editForm.validate()\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _needInsertItem: function(change) {\r\n var result = this.callBase.apply(this, arguments);\r\n var {\r\n key: key,\r\n pageIndex: pageIndex\r\n } = change;\r\n var validationData = this.getController(\"validating\")._getValidationData(key);\r\n var scrollingMode = this.option(\"scrolling.mode\");\r\n var virtualMode = \"virtual\" === scrollingMode;\r\n var appendMode = \"infinite\" === scrollingMode;\r\n if (result && !(null !== validationData && void 0 !== validationData && validationData.isValid) && !virtualMode && !(appendMode && this.option(NEW_SCROLLING_MODE))) {\r\n result = pageIndex === this._pageIndex\r\n }\r\n return result\r\n },\r\n _prepareEditCell: function(params) {\r\n var isNotCanceled = this.callBase.apply(this, arguments);\r\n var validatingController = this.getController(\"validating\");\r\n if (isNotCanceled && params.column.showEditorAlways) {\r\n validatingController.updateValidationState({\r\n key: params.key\r\n })\r\n }\r\n return isNotCanceled\r\n },\r\n processItems: function(items, changeType) {\r\n var changes = this.getChanges();\r\n var dataController = this.getController(\"data\");\r\n var validatingController = this.getController(\"validating\");\r\n items = this.callBase(items, changeType);\r\n var itemsCount = items.length;\r\n var addInValidItem = function(change, validationData) {\r\n var data = {\r\n key: change.key\r\n };\r\n var index = function(change, items) {\r\n var index = -1;\r\n var isInsert = change.type === EDIT_DATA_INSERT_TYPE;\r\n var key = change.key;\r\n each(items, (function(i, item) {\r\n if (equalByValue(key, isInsert ? item.key : dataController.keyOf(item))) {\r\n index = i;\r\n return false\r\n }\r\n }));\r\n return index\r\n }(change, items);\r\n if (index >= 0) {\r\n return\r\n }\r\n validationData.rowIndex = validationData.rowIndex > itemsCount ? validationData.rowIndex % itemsCount : validationData.rowIndex;\r\n var rowIndex = validationData.rowIndex;\r\n data[INSERT_INDEX] = 1;\r\n items.splice(rowIndex, 0, data)\r\n };\r\n if (this.getEditMode() === EDIT_MODE_BATCH && \"prepend\" !== changeType && \"append\" !== changeType) {\r\n changes.forEach(change => {\r\n var key = change.key;\r\n var validationData = validatingController._getValidationData(key);\r\n if (validationData && change.type && validationData.pageIndex === this._pageIndex && (null === change || void 0 === change ? void 0 : change.pageIndex) !== this._pageIndex) {\r\n addInValidItem(change, validationData)\r\n }\r\n })\r\n }\r\n return items\r\n },\r\n processDataItem: function(item) {\r\n var isInserted = item.data[INSERT_INDEX];\r\n var key = isInserted ? item.data.key : item.key;\r\n var editMode = this.getEditMode();\r\n if (editMode === EDIT_MODE_BATCH && isInserted && key) {\r\n var changes = this.getChanges();\r\n var editIndex = gridCoreUtils.getIndexByKey(key, changes);\r\n if (editIndex >= 0) {\r\n var change = changes[editIndex];\r\n if (change.type !== EDIT_DATA_INSERT_TYPE) {\r\n var oldData = this._getOldData(change.key);\r\n item.data = extend(true, {}, oldData, change.data);\r\n item.key = key\r\n }\r\n }\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _createInvisibleColumnValidators: function(changes) {\r\n var that = this;\r\n var validatingController = this.getController(\"validating\");\r\n var columnsController = this.getController(\"columns\");\r\n var columns = columnsController.getColumns();\r\n var invisibleColumns = columnsController.getInvisibleColumns().filter(column => !column.isBand);\r\n var groupColumns = columnsController.getGroupColumns().filter(column => !column.showWhenGrouped && -1 === invisibleColumns.indexOf(column));\r\n var invisibleColumnValidators = [];\r\n var isCellVisible = (column, rowKey) => this._dataController.getRowIndexByKey(rowKey) >= 0 && invisibleColumns.indexOf(column) < 0;\r\n invisibleColumns.push(...groupColumns);\r\n if (-1 === FORM_BASED_MODES.indexOf(this.getEditMode())) {\r\n each(columns, (function(_, column) {\r\n changes.forEach((function(change) {\r\n var data;\r\n if (isCellVisible(column, change.key)) {\r\n return\r\n }\r\n if (change.type === EDIT_DATA_INSERT_TYPE) {\r\n data = change.data\r\n } else if (\"update\" === change.type) {\r\n var oldData = that._getOldData(change.key);\r\n data = createObjectWithChanges(oldData, change.data)\r\n }\r\n if (data) {\r\n var validator = validatingController.createValidator({\r\n column: column,\r\n key: change.key,\r\n value: column.calculateCellValue(data)\r\n });\r\n if (validator) {\r\n invisibleColumnValidators.push(validator)\r\n }\r\n }\r\n }))\r\n }))\r\n }\r\n return function() {\r\n invisibleColumnValidators.forEach((function(validator) {\r\n validator.dispose()\r\n }))\r\n }\r\n },\r\n _beforeSaveEditData: function(change, editIndex) {\r\n var result = this.callBase.apply(this, arguments);\r\n var validatingController = this.getController(\"validating\");\r\n var validationData = validatingController._getValidationData(null === change || void 0 === change ? void 0 : change.key);\r\n if (change) {\r\n var isValid = \"remove\" === change.type || validationData.isValid;\r\n result = result || !isValid\r\n } else {\r\n var disposeValidators = this._createInvisibleColumnValidators(this.getChanges());\r\n result = new Deferred;\r\n this.executeOperation(result, () => {\r\n validatingController.validate(true).done(isFullValid => {\r\n disposeValidators();\r\n this._updateRowAndPageIndices();\r\n switch (this.getEditMode()) {\r\n case EDIT_MODE_CELL:\r\n if (!isFullValid) {\r\n this._focusEditingCell()\r\n }\r\n break;\r\n case EDIT_MODE_BATCH:\r\n if (!isFullValid) {\r\n this._resetEditRowKey();\r\n this._resetEditColumnName();\r\n this.getController(\"data\").updateItems()\r\n }\r\n }\r\n result.resolve(!isFullValid)\r\n })\r\n })\r\n }\r\n return result.promise ? result.promise() : result\r\n },\r\n _beforeEditCell: function(rowIndex, columnIndex, item) {\r\n var result = this.callBase(rowIndex, columnIndex, item);\r\n if (this.getEditMode() === EDIT_MODE_CELL) {\r\n var $cell = this._rowsView._getCellElement(rowIndex, columnIndex);\r\n var validator = $cell && $cell.data(\"dxValidator\");\r\n var rowOptions = $cell && $cell.closest(\".dx-row\").data(\"options\");\r\n var value = validator && validator.option(\"adapter\").getValue();\r\n if (validator && cellValueShouldBeValidated(value, rowOptions)) {\r\n var validatingController = this.getController(\"validating\");\r\n var deferred = new Deferred;\r\n when(validatingController.validateCell(validator), result).done((validationResult, result) => {\r\n deferred.resolve(validationResult.status === VALIDATION_STATUS.valid && result)\r\n });\r\n return deferred.promise()\r\n } else if (!validator) {\r\n return result\r\n }\r\n }\r\n },\r\n _afterSaveEditData: function(cancel) {\r\n var $firstErrorRow;\r\n var isCellEditMode = this.getEditMode() === EDIT_MODE_CELL;\r\n each(this.getChanges(), (_, change) => {\r\n var $errorRow = this._showErrorRow(change);\r\n $firstErrorRow = $firstErrorRow || $errorRow\r\n });\r\n if ($firstErrorRow) {\r\n var scrollable = this._rowsView.getScrollable();\r\n if (scrollable) {\r\n scrollable.update();\r\n scrollable.scrollToElement($firstErrorRow)\r\n }\r\n }\r\n if (cancel && isCellEditMode && this._needUpdateRow()) {\r\n var editRowIndex = this.getEditRowIndex();\r\n this._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [editRowIndex]\r\n });\r\n this._focusEditingCell()\r\n } else if (!cancel) {\r\n var shouldResetValidationState = true;\r\n if (isCellEditMode) {\r\n var columns = this.getController(\"columns\").getColumns();\r\n var columnsWithValidatingEditors = columns.filter(col => {\r\n var _col$validationRules;\r\n return col.showEditorAlways && (null === (_col$validationRules = col.validationRules) || void 0 === _col$validationRules ? void 0 : _col$validationRules.length) > 0\r\n }).length > 0;\r\n shouldResetValidationState = !columnsWithValidatingEditors\r\n }\r\n if (shouldResetValidationState) {\r\n this.getController(\"validating\")._validationState = []\r\n }\r\n }\r\n },\r\n _handleDataChanged: function(args) {\r\n var validationState = this.getController(\"validating\")._validationState;\r\n if (\"standard\" === this.option(\"scrolling.mode\")) {\r\n this.resetRowAndPageIndices()\r\n }\r\n if (\"prepend\" === args.changeType) {\r\n each(validationState, (function(_, validationData) {\r\n validationData.rowIndex += args.items.length\r\n }))\r\n }\r\n this.callBase(args)\r\n },\r\n resetRowAndPageIndices: function() {\r\n var validationState = this.getController(\"validating\")._validationState;\r\n each(validationState, (_, validationData) => {\r\n if (validationData.pageIndex !== this._pageIndex) {\r\n delete validationData.pageIndex;\r\n delete validationData.rowIndex\r\n }\r\n })\r\n },\r\n _beforeCancelEditData: function() {\r\n var validatingController = this.getController(\"validating\");\r\n validatingController._validationState = [];\r\n this.callBase()\r\n },\r\n _showErrorRow: function(change) {\r\n var $popupContent;\r\n var errorHandling = this.getController(\"errorHandling\");\r\n var items = this.getController(\"data\").items();\r\n var rowIndex = this.getIndexByKey(change.key, items);\r\n var validationData = this.getController(\"validating\")._getValidationData(change.key);\r\n if (!(null !== validationData && void 0 !== validationData && validationData.isValid) && null !== validationData && void 0 !== validationData && validationData.errorText && rowIndex >= 0) {\r\n $popupContent = this.getPopupContent();\r\n return errorHandling && errorHandling.renderErrorRow(null === validationData || void 0 === validationData ? void 0 : validationData.errorText, rowIndex, $popupContent)\r\n }\r\n },\r\n updateFieldValue: function(e) {\r\n var validatingController = this.getController(\"validating\");\r\n var deferred = new Deferred;\r\n validatingController.removeCellValidationResult({\r\n change: this.getChangeByKey(e.key),\r\n columnIndex: e.column.index\r\n });\r\n this.callBase.apply(this, arguments).done(() => {\r\n var currentValidator = validatingController.getCellValidator({\r\n rowKey: e.key,\r\n columnIndex: e.column.index\r\n });\r\n when(currentValidator && validatingController.validateCell(currentValidator)).done(validationResult => {\r\n this.getController(\"editorFactory\").refocus();\r\n deferred.resolve(validationResult)\r\n })\r\n });\r\n return deferred.promise()\r\n },\r\n highlightDataCell: function($cell, parameters) {\r\n this.callBase.apply(this, arguments);\r\n var validatingController = this.getController(\"validating\");\r\n validatingController.setCellValidationStatus(parameters);\r\n var isEditableCell = !!parameters.setValue;\r\n var cellModified = this.isCellModified(parameters);\r\n var isValidated = isDefined(parameters.validationStatus);\r\n var needValidation = cellModified && parameters.column.setCellValue || isEditableCell && !cellModified && !(parameters.row.isNewRow || !isValidated);\r\n if (needValidation) {\r\n var validator = $cell.data(\"dxValidator\");\r\n if (validator) {\r\n when(this.getController(\"validating\").validateCell(validator)).done(() => {\r\n validatingController.setCellValidationStatus(parameters)\r\n })\r\n }\r\n }\r\n },\r\n getChangeByKey: function(key) {\r\n var changes = this.getChanges();\r\n return changes[gridCoreUtils.getIndexByKey(key, changes)]\r\n },\r\n isCellModified: function(parameters) {\r\n var cellModified = this.callBase(parameters);\r\n var change = this.getChangeByKey(parameters.key);\r\n var isCellInvalid = !!parameters.row && this.getController(\"validating\").isInvalidCell({\r\n rowKey: parameters.key,\r\n columnIndex: parameters.column.index\r\n });\r\n return cellModified || this.getController(\"validating\")._rowIsValidated(change) && isCellInvalid\r\n }\r\n },\r\n editorFactory: {\r\n _showRevertButton: function($container) {\r\n if (!$container || !$container.length) {\r\n return\r\n }\r\n var $tooltipElement = $container.find(\".\" + this.addWidgetPrefix(REVERT_TOOLTIP_CLASS));\r\n var $overlayContainer = $container.closest(\".\".concat(this.addWidgetPrefix(CONTENT_CLASS)));\r\n $tooltipElement && $tooltipElement.remove();\r\n $tooltipElement = $(\"
\").addClass(this.addWidgetPrefix(REVERT_TOOLTIP_CLASS)).appendTo($container);\r\n var tooltipOptions = {\r\n animation: null,\r\n visible: true,\r\n width: \"auto\",\r\n height: \"auto\",\r\n target: $container,\r\n shading: false,\r\n container: $overlayContainer,\r\n propagateOutsideClick: true,\r\n closeOnOutsideClick: false,\r\n closeOnTargetScroll: false,\r\n contentTemplate: () => {\r\n var $buttonElement = $(\"
\").addClass(REVERT_BUTTON_CLASS);\r\n var buttonOptions = {\r\n icon: \"revert\",\r\n hint: this.option(\"editing.texts.validationCancelChanges\"),\r\n onClick: () => {\r\n this._editingController.cancelEditData()\r\n }\r\n };\r\n return new Button($buttonElement, buttonOptions).$element()\r\n },\r\n position: {\r\n my: \"left top\",\r\n at: \"right top\",\r\n offset: \"1 0\",\r\n collision: \"flip\",\r\n boundaryOffset: \"0 0\",\r\n boundary: this._rowsView.element()\r\n },\r\n onPositioned: this._positionedHandler.bind(this)\r\n };\r\n return new Overlay($tooltipElement, tooltipOptions)\r\n },\r\n _hideFixedGroupCell: function($cell, overlayOptions) {\r\n var $nextFixedRowElement;\r\n var $groupCellElement;\r\n var isFixedColumns = this._rowsView.isFixedColumns();\r\n var isFormOrPopupEditMode = this._editingController.isFormOrPopupEditMode();\r\n if (isFixedColumns && !isFormOrPopupEditMode) {\r\n var nextRowOptions = $cell.closest(\".dx-row\").next().data(\"options\");\r\n if (nextRowOptions && \"group\" === nextRowOptions.rowType) {\r\n $nextFixedRowElement = $(this._rowsView.getRowElement(nextRowOptions.rowIndex)).last();\r\n $groupCellElement = $nextFixedRowElement.find(\".\" + GROUP_CELL_CLASS);\r\n if ($groupCellElement.length && \"hidden\" !== $groupCellElement.get(0).style.visibility) {\r\n $groupCellElement.css(\"visibility\", \"hidden\");\r\n overlayOptions.onDisposing = function() {\r\n $groupCellElement.css(\"visibility\", \"\")\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _positionedHandler: function(e, isOverlayVisible) {\r\n if (!e.component.__skipPositionProcessing) {\r\n var isRevertButton = $(e.element).hasClass(this.addWidgetPrefix(REVERT_TOOLTIP_CLASS));\r\n var needRepaint = !isRevertButton && this._rowsView.updateFreeSpaceRowHeight();\r\n var normalizedPosition = this._normalizeValidationMessagePositionAndMaxWidth(e, isRevertButton, isOverlayVisible);\r\n e.component.__skipPositionProcessing = !!(needRepaint || normalizedPosition);\r\n if (normalizedPosition) {\r\n e.component.option(normalizedPosition)\r\n } else if (needRepaint) {\r\n e.component.repaint()\r\n }\r\n }\r\n },\r\n _showValidationMessage: function($cell, messages, alignment, revertTooltip) {\r\n var editorPopup = $cell.find(\".dx-dropdowneditor-overlay\").data(\"dxPopup\");\r\n var isOverlayVisible = editorPopup && editorPopup.option(\"visible\");\r\n var myPosition = isOverlayVisible ? \"top right\" : \"top \" + alignment;\r\n var atPosition = isOverlayVisible ? \"top left\" : \"bottom \" + alignment;\r\n var $overlayContainer = $cell.closest(\".\".concat(this.addWidgetPrefix(CONTENT_CLASS)));\r\n var errorMessageText = \"\";\r\n messages && messages.forEach((function(message) {\r\n errorMessageText += (errorMessageText.length ? \"
\" : \"\") + encodeHtml(message)\r\n }));\r\n var $overlayElement = $(\"
\").addClass(INVALID_MESSAGE_CLASS).addClass(INVALID_MESSAGE_ALWAYS_CLASS).addClass(this.addWidgetPrefix(WIDGET_INVALID_MESSAGE_CLASS)).html(errorMessageText).appendTo($cell);\r\n var overlayOptions = {\r\n target: $cell,\r\n container: $overlayContainer,\r\n shading: false,\r\n width: \"auto\",\r\n height: \"auto\",\r\n visible: true,\r\n animation: false,\r\n propagateOutsideClick: true,\r\n closeOnOutsideClick: false,\r\n closeOnTargetScroll: false,\r\n position: {\r\n collision: \"flip\",\r\n boundary: this._rowsView.element(),\r\n boundaryOffset: \"0 0\",\r\n offset: {\r\n x: 0,\r\n y: !isOverlayVisible && (browser.mozilla || browser.msie) ? -1 : 0\r\n },\r\n my: myPosition,\r\n at: atPosition\r\n },\r\n onPositioned: e => {\r\n this._positionedHandler(e, isOverlayVisible);\r\n this._shiftValidationMessageIfNeed(e.component.$content(), revertTooltip && revertTooltip.$content(), $cell)\r\n }\r\n };\r\n this._hideFixedGroupCell($cell, overlayOptions);\r\n new Overlay($overlayElement, overlayOptions)\r\n },\r\n _normalizeValidationMessagePositionAndMaxWidth: function(options, isRevertButton, isOverlayVisible) {\r\n var fixedColumns = this._columnsController.getFixedColumns();\r\n if (!fixedColumns || !fixedColumns.length) {\r\n return\r\n }\r\n var position;\r\n var visibleTableWidth = !isRevertButton && (that = this, element = options.element, rowIndex = $(element).closest(\"tr\").index(), $cellElements = $(that._rowsView.getRowElement(rowIndex)).first().children().filter(\":not(.dx-hidden-cell)\"), that._rowsView._getWidths($cellElements).reduce((w1, w2) => w1 + w2, 0));\r\n var that, element, rowIndex, $cellElements;\r\n var $overlayContentElement = options.component.$content();\r\n var validationMessageWidth = $overlayContentElement.outerWidth(true);\r\n var needMaxWidth = !isRevertButton && validationMessageWidth > visibleTableWidth;\r\n var columnIndex = this._rowsView.getCellIndex($(options.element).closest(\"td\"));\r\n var boundaryNonFixedColumnsInfo = function(fixedColumns) {\r\n var firstNonFixedColumnIndex;\r\n var lastNonFixedColumnIndex;\r\n fixedColumns.some((column, index) => {\r\n if (column.command === COMMAND_TRANSPARENT) {\r\n firstNonFixedColumnIndex = 0 === index ? -1 : index;\r\n lastNonFixedColumnIndex = index === fixedColumns.length - 1 ? -1 : index + column.colspan - 1;\r\n return true\r\n }\r\n });\r\n return {\r\n startColumnIndex: firstNonFixedColumnIndex,\r\n endColumnIndex: lastNonFixedColumnIndex\r\n }\r\n }(fixedColumns);\r\n if (!isRevertButton && (columnIndex === boundaryNonFixedColumnsInfo.startColumnIndex || needMaxWidth)) {\r\n position = {\r\n collision: \"none flip\",\r\n my: \"top left\",\r\n at: isOverlayVisible ? \"top right\" : \"bottom left\"\r\n }\r\n } else if (columnIndex === boundaryNonFixedColumnsInfo.endColumnIndex) {\r\n position = {\r\n collision: \"none flip\",\r\n my: \"top right\",\r\n at: isRevertButton || isOverlayVisible ? \"top left\" : \"bottom right\"\r\n };\r\n if (isRevertButton) {\r\n position.offset = \"-1 0\"\r\n }\r\n }\r\n return position && {\r\n position: position,\r\n maxWidth: needMaxWidth ? visibleTableWidth - 2 : void 0\r\n }\r\n },\r\n _shiftValidationMessageIfNeed: function($content, $revertContent, $cell) {\r\n if (!$revertContent) {\r\n return\r\n }\r\n var contentOffset = $content.offset();\r\n var revertContentOffset = $revertContent.offset();\r\n if (contentOffset.top === revertContentOffset.top && contentOffset.left + $content.width() > revertContentOffset.left) {\r\n var left = $revertContent.width() + PADDING_BETWEEN_TOOLTIPS;\r\n $content.css(\"left\", revertContentOffset.left < $cell.offset().left ? -left : left)\r\n }\r\n },\r\n _getTooltipsSelector: function() {\r\n var invalidMessageClass = this.addWidgetPrefix(WIDGET_INVALID_MESSAGE_CLASS);\r\n var revertTooltipClass = this.addWidgetPrefix(REVERT_TOOLTIP_CLASS);\r\n return \".dx-editor-cell .\" + revertTooltipClass + \", .dx-editor-cell .\" + invalidMessageClass + \", .dx-cell-modified .\" + invalidMessageClass\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._editingController = this.getController(\"editing\");\r\n this._columnsController = this.getController(\"columns\");\r\n this._rowsView = this.getView(\"rowsView\")\r\n },\r\n loseFocus: function(skipValidator) {\r\n if (!skipValidator) {\r\n this.getController(\"validating\").setValidator(null)\r\n }\r\n this.callBase()\r\n },\r\n updateCellState: function($element, validationResult, hideBorder) {\r\n var _change$data;\r\n var $focus = null === $element || void 0 === $element ? void 0 : $element.closest(this._getFocusCellSelector());\r\n var $cell = null !== $focus && void 0 !== $focus && $focus.is(\"td\") ? $focus : null;\r\n var rowOptions = null === $focus || void 0 === $focus ? void 0 : $focus.closest(\".dx-row\").data(\"options\");\r\n var change = rowOptions ? this.getController(\"editing\").getChangeByKey(rowOptions.key) : null;\r\n var column = $cell && this.getController(\"columns\").getVisibleColumns()[$cell.index()];\r\n var isCellModified = void 0 !== (null === change || void 0 === change ? void 0 : null === (_change$data = change.data) || void 0 === _change$data ? void 0 : _change$data[null === column || void 0 === column ? void 0 : column.name]) && !this._editingController.isSaving();\r\n var revertTooltip;\r\n if ((null === validationResult || void 0 === validationResult ? void 0 : validationResult.status) === VALIDATION_STATUS.invalid || isCellModified) {\r\n if (this._editingController.getEditMode() === EDIT_MODE_CELL) {\r\n revertTooltip = this._showRevertButton($focus)\r\n }\r\n }\r\n var showValidationMessage = validationResult && validationResult.status === VALIDATION_STATUS.invalid;\r\n if (showValidationMessage && $cell && column && validationResult && validationResult.brokenRules) {\r\n var errorMessages = [];\r\n validationResult.brokenRules.forEach((function(rule) {\r\n errorMessages.push(rule.message)\r\n }));\r\n this._showValidationMessage($focus, errorMessages, column.alignment || \"left\", revertTooltip)\r\n }!hideBorder && this._rowsView.element() && this._rowsView.updateFreeSpaceRowHeight()\r\n },\r\n focus: function($element, hideBorder) {\r\n if (!arguments.length) {\r\n return this.callBase()\r\n }\r\n var $tooltips = $element && $element.closest(\".\" + this.addWidgetPrefix(ROWS_VIEW_CLASS)).find(this._getTooltipsSelector());\r\n $tooltips && $tooltips.remove();\r\n if (null !== $element && void 0 !== $element && $element.hasClass(\"dx-row\")) {\r\n return this.callBase($element, hideBorder)\r\n }\r\n var $focus = null === $element || void 0 === $element ? void 0 : $element.closest(this._getFocusCellSelector());\r\n var callBase = this.callBase;\r\n var validator = $focus && ($focus.data(\"dxValidator\") || $element.find(\".\" + this.addWidgetPrefix(VALIDATOR_CLASS)).eq(0).data(\"dxValidator\"));\r\n var rowOptions = $focus && $focus.closest(\".dx-row\").data(\"options\");\r\n var editingController = this.getController(\"editing\");\r\n var change = rowOptions ? editingController.getChangeByKey(rowOptions.key) : null;\r\n var validationResult;\r\n var validatingController = this.getController(\"validating\");\r\n if (validator) {\r\n validatingController.setValidator(validator);\r\n var value = validator.option(\"adapter\").getValue();\r\n if (cellValueShouldBeValidated(value, rowOptions) || validatingController._rowIsValidated(change)) {\r\n editingController.waitForDeferredOperations().done(() => {\r\n when(validatingController.validateCell(validator)).done(result => {\r\n validationResult = result;\r\n var column = validationResult.validator.option(\"dataGetter\")().column;\r\n if (change && column && !validatingController.isCurrentValidatorProcessing({\r\n rowKey: change.key,\r\n columnIndex: column.index\r\n })) {\r\n return\r\n }\r\n if (validationResult.status === VALIDATION_STATUS.invalid) {\r\n hideBorder = true\r\n }\r\n this.updateCellState($element, validationResult, hideBorder);\r\n callBase.call(this, $element, hideBorder)\r\n })\r\n });\r\n return this.callBase($element, hideBorder)\r\n }\r\n }\r\n this.updateCellState($element, validationResult, hideBorder);\r\n return this.callBase($element, hideBorder)\r\n },\r\n getEditorInstance: function($container) {\r\n var $editor = $container.find(\".dx-texteditor\").eq(0);\r\n return gridCoreUtils.getWidgetInstance($editor)\r\n }\r\n },\r\n data: {\r\n _isCellChanged: function(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) {\r\n var cell = oldRow.cells[columnIndex];\r\n var oldValidationStatus = cell && cell.validationStatus;\r\n var validatingController = this.getController(\"validating\");\r\n var validationResult = validatingController.getCellValidationResult({\r\n rowKey: oldRow.key,\r\n columnIndex: columnIndex\r\n });\r\n var validationData = validatingController._getValidationData(oldRow.key);\r\n var newValidationStatus = validationResultIsValid(validationResult) ? validationResult.status : validationResult;\r\n var rowIsModified = JSON.stringify(newRow.modifiedValues) !== JSON.stringify(oldRow.modifiedValues);\r\n var cellIsMarkedAsInvalid = $(null === cell || void 0 === cell ? void 0 : cell.cellElement).hasClass(this.addWidgetPrefix(INVALIDATE_CLASS));\r\n if (oldValidationStatus !== newValidationStatus && rowIsModified || validationData.isValid && cellIsMarkedAsInvalid) {\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 updateFreeSpaceRowHeight: function($table) {\r\n var $rowElements;\r\n var $freeSpaceRowElement;\r\n var $freeSpaceRowElements;\r\n var $element = this.element();\r\n var $tooltipContent = $element && $element.find(\".\" + this.addWidgetPrefix(WIDGET_INVALID_MESSAGE_CLASS) + \" .dx-overlay-content\");\r\n this.callBase($table);\r\n if ($tooltipContent && $tooltipContent.length) {\r\n $rowElements = this._getRowElements();\r\n $freeSpaceRowElements = this._getFreeSpaceRowElements($table);\r\n $freeSpaceRowElement = $freeSpaceRowElements.first();\r\n if ($freeSpaceRowElement && 1 === $rowElements.length && (!$freeSpaceRowElement.is(\":visible\") || $tooltipContent.outerHeight() > $freeSpaceRowElement.outerHeight())) {\r\n $freeSpaceRowElements.show();\r\n $freeSpaceRowElements.height($tooltipContent.outerHeight());\r\n return true\r\n }\r\n }\r\n },\r\n _formItemPrepared: function(cellOptions, $container) {\r\n this.callBase.apply(this, arguments);\r\n deferUpdate(() => {\r\n var $editor = $container.find(\".dx-widget\").first();\r\n var isEditorDisposed = $editor.length && !$editor.children().length;\r\n if (!isEditorDisposed) {\r\n this.getController(\"validating\").createValidator(cellOptions, $editor)\r\n }\r\n })\r\n },\r\n _cellPrepared: function($cell, parameters) {\r\n if (!this.getController(\"editing\").isFormOrPopupEditMode()) {\r\n this.getController(\"validating\").createValidator(parameters, $cell)\r\n }\r\n this.callBase.apply(this, arguments)\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.adaptivity.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n isDefined,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport Guid from \"../../core/guid\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport Form from \"../form\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport {\r\n isMaterial\r\n} from \"../themes\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n equalByValue\r\n} from \"../../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport messageLocalization from \"../../localization/message\";\r\nvar COLUMN_HEADERS_VIEW = \"columnHeadersView\";\r\nvar ROWS_VIEW = \"rowsView\";\r\nvar FOOTER_VIEW = \"footerView\";\r\nvar COLUMN_VIEWS = [COLUMN_HEADERS_VIEW, ROWS_VIEW, FOOTER_VIEW];\r\nvar ADAPTIVE_NAMESPACE = \"dxDataGridAdaptivity\";\r\nvar HIDDEN_COLUMNS_WIDTH = \"adaptiveHidden\";\r\nvar ADAPTIVE_ROW_TYPE = \"detailAdaptive\";\r\nvar FORM_ITEM_CONTENT_CLASS = \"dx-field-item-content\";\r\nvar FORM_ITEM_MODIFIED = \"dx-item-modified\";\r\nvar HIDDEN_COLUMN_CLASS = \"hidden-column\";\r\nvar ADAPTIVE_COLUMN_BUTTON_CLASS = \"adaptive-more\";\r\nvar ADAPTIVE_COLUMN_NAME_CLASS = \"dx-command-adaptive\";\r\nvar COMMAND_ADAPTIVE_HIDDEN_CLASS = \"dx-command-adaptive-hidden\";\r\nvar ADAPTIVE_DETAIL_ROW_CLASS = \"dx-adaptive-detail-row\";\r\nvar ADAPTIVE_ITEM_TEXT_CLASS = \"dx-adaptive-item-text\";\r\nvar MASTER_DETAIL_CELL_CLASS = \"dx-master-detail-cell\";\r\nvar LAST_DATA_CELL_CLASS = \"dx-last-data-cell\";\r\nvar ADAPTIVE_COLUMN_NAME = \"adaptive\";\r\nvar EDIT_MODE_BATCH = \"batch\";\r\nvar EDIT_MODE_ROW = \"row\";\r\nvar EDIT_MODE_FORM = \"form\";\r\nvar EDIT_MODE_POPUP = \"popup\";\r\nvar REVERT_TOOLTIP_CLASS = \"revert-tooltip\";\r\nvar GROUP_CELL_CLASS = \"dx-group-cell\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar EXPAND_ARIA_NAME = \"dxDataGrid-ariaAdaptiveExpand\";\r\nvar COLLAPSE_ARIA_NAME = \"dxDataGrid-ariaAdaptiveCollapse\";\r\n\r\nfunction getColumnId(that, column) {\r\n return that._columnsController.getColumnId(column)\r\n}\r\n\r\nfunction getDataCellElements($row) {\r\n return $row.find(\"td:not(.dx-datagrid-hidden-column):not([class*='dx-command-'])\")\r\n}\r\n\r\nfunction adaptiveCellTemplate(container, options) {\r\n var $adaptiveColumnButton;\r\n var $container = $(container);\r\n var adaptiveColumnsController = options.component.getController(\"adaptiveColumns\");\r\n if (\"data\" === options.rowType) {\r\n $adaptiveColumnButton = $(\"\").addClass(adaptiveColumnsController.addWidgetPrefix(ADAPTIVE_COLUMN_BUTTON_CLASS));\r\n eventsEngine.on($adaptiveColumnButton, addNamespace(clickEventName, ADAPTIVE_NAMESPACE), adaptiveColumnsController.createAction((function() {\r\n adaptiveColumnsController.toggleExpandAdaptiveDetailRow(options.key)\r\n })));\r\n $adaptiveColumnButton.appendTo($container)\r\n } else {\r\n gridCoreUtils.setEmptyText($container)\r\n }\r\n}\r\nvar AdaptiveColumnsController = modules.ViewController.inherit({\r\n _isRowEditMode: function() {\r\n var editMode = this._getEditMode();\r\n return editMode === EDIT_MODE_ROW\r\n },\r\n _isItemModified: function(item, cellOptions) {\r\n var columnIndex = this._columnsController.getVisibleIndex(item.column.index);\r\n var rowIndex = this._dataController.getRowIndexByKey(cellOptions.key);\r\n var row = this._dataController.items()[rowIndex + 1];\r\n return row && row.modifiedValues && isDefined(row.modifiedValues[columnIndex])\r\n },\r\n _renderFormViewTemplate: function(item, cellOptions, $container) {\r\n var column = item.column;\r\n var focusAction = this.createAction((function() {\r\n eventsEngine.trigger($container, clickEventName)\r\n }));\r\n var value = column.calculateCellValue(cellOptions.data);\r\n var displayValue = gridCoreUtils.getDisplayValue(column, value, cellOptions.data, cellOptions.rowType);\r\n var text = gridCoreUtils.formatValue(displayValue, column);\r\n var isCellOrBatchEditMode = this._editingController.isCellOrBatchEditMode();\r\n var rowsView = this._rowsView;\r\n if (column.allowEditing && this.getController(\"keyboardNavigation\").isKeyboardEnabled()) {\r\n $container.attr(\"tabIndex\", this.option(\"tabIndex\"));\r\n if (isCellOrBatchEditMode) {\r\n eventsEngine.off($container, \"focus\", focusAction);\r\n eventsEngine.on($container, \"focus\", focusAction)\r\n }\r\n }\r\n if (column.cellTemplate) {\r\n var templateOptions = extend({}, cellOptions, {\r\n value: value,\r\n displayValue: displayValue,\r\n text: text,\r\n column: column\r\n });\r\n var isDomElement = !!$container.closest(getWindow().document).length;\r\n rowsView.renderTemplate($container, column.cellTemplate, templateOptions, isDomElement).done(() => {\r\n rowsView._cellPrepared($container, cellOptions)\r\n })\r\n } else {\r\n var container = $container.get(0);\r\n if (column.encodeHtml) {\r\n container.textContent = text\r\n } else {\r\n container.innerHTML = text\r\n }\r\n $container.addClass(ADAPTIVE_ITEM_TEXT_CLASS);\r\n if (!isDefined(text) || \"\" === text) {\r\n $container.html(\" \")\r\n }\r\n if (!this._isRowEditMode()) {\r\n if (this._isItemModified(item, cellOptions)) {\r\n $container.addClass(FORM_ITEM_MODIFIED)\r\n }\r\n }\r\n rowsView._cellPrepared($container, cellOptions)\r\n }\r\n },\r\n _getTemplate: function(item, cellOptions) {\r\n var that = this;\r\n var column = item.column;\r\n var editingController = this.getController(\"editing\");\r\n return function(options, container) {\r\n var $container = $(container);\r\n var columnIndex = that._columnsController.getVisibleIndex(column.index);\r\n var templateOptions = extend({}, cellOptions);\r\n var renderFormTemplate = function() {\r\n var isItemEdited = that._isItemEdited(item);\r\n templateOptions.value = cellOptions.row.values[columnIndex];\r\n if (isItemEdited || column.showEditorAlways) {\r\n editingController.renderFormEditTemplate(templateOptions, item, options.component, $container, !isItemEdited)\r\n } else {\r\n templateOptions.column = column;\r\n templateOptions.columnIndex = columnIndex;\r\n that._renderFormViewTemplate(item, templateOptions, $container)\r\n }\r\n };\r\n renderFormTemplate();\r\n templateOptions.watch && templateOptions.watch((function() {\r\n return {\r\n isItemEdited: that._isItemEdited(item),\r\n value: cellOptions.row.values[columnIndex]\r\n }\r\n }), (function() {\r\n $container.contents().remove();\r\n $container.removeClass(ADAPTIVE_ITEM_TEXT_CLASS);\r\n renderFormTemplate()\r\n }))\r\n }\r\n },\r\n _isVisibleColumnsValid: function(visibleColumns) {\r\n if (visibleColumns < 2) {\r\n return false\r\n }\r\n if (visibleColumns.length - function() {\r\n var result = 0;\r\n for (var j = 0; j < visibleColumns.length; j++) {\r\n var visibleColumn = visibleColumns[j];\r\n if (visibleColumn.command) {\r\n result++\r\n }\r\n }\r\n return result\r\n }() <= 1) {\r\n return false\r\n }\r\n return true\r\n },\r\n _calculatePercentWidths: function(widths, visibleColumns) {\r\n var that = this;\r\n var percentWidths = 0;\r\n visibleColumns.forEach((function(item, index) {\r\n if (widths[index] !== HIDDEN_COLUMNS_WIDTH) {\r\n percentWidths += that._getItemPercentWidth(item)\r\n }\r\n }));\r\n return percentWidths\r\n },\r\n _isPercentWidth: function(width) {\r\n return isString(width) && \"%\" === width.slice(-1)\r\n },\r\n _isColumnHidden: function(column) {\r\n return this._hiddenColumns.filter((function(hiddenColumn) {\r\n return hiddenColumn.index === column.index\r\n })).length > 0\r\n },\r\n _getAverageColumnsWidth: function(containerWidth, columns, columnsCanFit) {\r\n var that = this;\r\n var fixedColumnsWidth = 0;\r\n var columnsWithoutFixedWidthCount = 0;\r\n columns.forEach((function(column) {\r\n if (!that._isColumnHidden(column)) {\r\n var width = column.width;\r\n if (isDefined(width) && !isNaN(parseFloat(width))) {\r\n fixedColumnsWidth += that._isPercentWidth(width) ? that._calculatePercentWidth({\r\n visibleIndex: column.visibleIndex,\r\n columnsCount: columns.length,\r\n columnsCanFit: columnsCanFit,\r\n bestFitWidth: column.bestFitWidth,\r\n columnWidth: width,\r\n containerWidth: containerWidth\r\n }) : parseFloat(width)\r\n } else {\r\n columnsWithoutFixedWidthCount++\r\n }\r\n }\r\n }));\r\n return (containerWidth - fixedColumnsWidth) / columnsWithoutFixedWidthCount\r\n },\r\n _calculateColumnWidth: function(column, containerWidth, contentColumns, columnsCanFit) {\r\n var columnId = getColumnId(this, column);\r\n var widthOption = this._columnsController.columnOption(columnId, \"width\");\r\n var bestFitWidth = this._columnsController.columnOption(columnId, \"bestFitWidth\");\r\n var columnsCount = contentColumns.length;\r\n var colWidth;\r\n if (widthOption && \"auto\" !== widthOption) {\r\n if (this._isPercentWidth(widthOption)) {\r\n colWidth = this._calculatePercentWidth({\r\n visibleIndex: column.visibleIndex,\r\n columnsCount: columnsCount,\r\n columnsCanFit: columnsCanFit,\r\n bestFitWidth: bestFitWidth,\r\n columnWidth: widthOption,\r\n containerWidth: containerWidth\r\n })\r\n } else {\r\n return parseFloat(widthOption)\r\n }\r\n } else {\r\n var columnAutoWidth = this.option(\"columnAutoWidth\");\r\n colWidth = columnAutoWidth || !!column.command ? bestFitWidth : this._getAverageColumnsWidth(containerWidth, contentColumns, columnsCanFit)\r\n }\r\n return colWidth\r\n },\r\n _calculatePercentWidth: function(options) {\r\n var columnFitted = options.visibleIndex < options.columnsCount - 1 && options.columnsCanFit;\r\n var partialWidth = options.containerWidth * parseFloat(options.columnWidth) / 100;\r\n var resultWidth = options.columnsCanFit && partialWidth < options.bestFitWidth ? options.bestFitWidth : partialWidth;\r\n return columnFitted ? options.containerWidth * parseFloat(options.columnWidth) / 100 : resultWidth\r\n },\r\n _getNotTruncatedColumnWidth: function(column, containerWidth, contentColumns, columnsCanFit) {\r\n var columnId = getColumnId(this, column);\r\n var widthOption = this._columnsController.columnOption(columnId, \"width\");\r\n var bestFitWidth = this._columnsController.columnOption(columnId, \"bestFitWidth\");\r\n if (widthOption && \"auto\" !== widthOption && !this._isPercentWidth(widthOption)) {\r\n return parseFloat(widthOption)\r\n }\r\n var colWidth = this._calculateColumnWidth(column, containerWidth, contentColumns, columnsCanFit);\r\n return colWidth < bestFitWidth ? null : colWidth\r\n },\r\n _getItemPercentWidth: function(item) {\r\n var result = 0;\r\n if (item.width && this._isPercentWidth(item.width)) {\r\n result = parseFloat(item.width)\r\n }\r\n return result\r\n },\r\n _getCommandColumnsWidth: function() {\r\n var that = this;\r\n var columns = that._columnsController.getVisibleColumns();\r\n var colWidth = 0;\r\n each(columns, (function(index, column) {\r\n if (column.index < 0 || column.command) {\r\n colWidth += that._columnsController.columnOption(getColumnId(that, column), \"bestFitWidth\") || 0\r\n }\r\n }));\r\n return colWidth\r\n },\r\n _isItemEdited: function(item) {\r\n if (this.isFormOrPopupEditMode()) {\r\n return false\r\n }\r\n if (this._isRowEditMode()) {\r\n var editRowKey = this.option(\"editing.editRowKey\");\r\n if (equalByValue(editRowKey, this._dataController.adaptiveExpandedKey())) {\r\n return true\r\n }\r\n } else {\r\n var rowIndex = this._dataController.getRowIndexByKey(this._dataController.adaptiveExpandedKey()) + 1;\r\n var columnIndex = this._columnsController.getVisibleIndex(item.column.index);\r\n return this._editingController.isEditCell(rowIndex, columnIndex)\r\n }\r\n },\r\n _getFormItemsByHiddenColumns: function(hiddenColumns) {\r\n var items = [];\r\n each(hiddenColumns, (function(_, column) {\r\n items.push({\r\n column: column,\r\n name: column.name,\r\n dataField: column.dataField,\r\n visibleIndex: column.visibleIndex\r\n })\r\n }));\r\n return items\r\n },\r\n _getAdaptiveColumnVisibleIndex: function(visibleColumns) {\r\n for (var i = 0; i < visibleColumns.length; i++) {\r\n var column = visibleColumns[i];\r\n if (column.command === ADAPTIVE_COLUMN_NAME) {\r\n return i\r\n }\r\n }\r\n },\r\n _hideAdaptiveColumn: function(resultWidths, visibleColumns) {\r\n var visibleIndex = this._getAdaptiveColumnVisibleIndex(visibleColumns);\r\n if (isDefined(visibleIndex)) {\r\n resultWidths[visibleIndex] = HIDDEN_COLUMNS_WIDTH;\r\n this._hideVisibleColumn({\r\n isCommandColumn: true,\r\n visibleIndex: visibleIndex\r\n })\r\n }\r\n },\r\n _showHiddenCellsInView: function(_ref) {\r\n var {\r\n $cells: $cells,\r\n isCommandColumn: isCommandColumn\r\n } = _ref;\r\n var cssClassNameToRemove = isCommandColumn ? COMMAND_ADAPTIVE_HIDDEN_CLASS : this.addWidgetPrefix(HIDDEN_COLUMN_CLASS);\r\n $cells.removeClass(cssClassNameToRemove)\r\n },\r\n _showHiddenColumns: function() {\r\n for (var i = 0; i < COLUMN_VIEWS.length; i++) {\r\n var view = this.getView(COLUMN_VIEWS[i]);\r\n if (view && view.isVisible() && view.element()) {\r\n var viewName = view.name;\r\n var $hiddenCommandCells = view.element().find(\".\" + COMMAND_ADAPTIVE_HIDDEN_CLASS);\r\n this._showHiddenCellsInView({\r\n viewName: viewName,\r\n $cells: $hiddenCommandCells,\r\n isCommandColumn: true\r\n });\r\n var $hiddenCells = view.element().find(\".\" + this.addWidgetPrefix(HIDDEN_COLUMN_CLASS));\r\n this._showHiddenCellsInView({\r\n viewName: viewName,\r\n $cells: $hiddenCells\r\n })\r\n }\r\n }\r\n },\r\n _isCellValid: function($cell) {\r\n return $cell && $cell.length && !$cell.hasClass(MASTER_DETAIL_CELL_CLASS) && !$cell.hasClass(GROUP_CELL_CLASS)\r\n },\r\n _hideVisibleColumn: function(_ref2) {\r\n var {\r\n isCommandColumn: isCommandColumn,\r\n visibleIndex: visibleIndex\r\n } = _ref2;\r\n var that = this;\r\n COLUMN_VIEWS.forEach((function(viewName) {\r\n var view = that.getView(viewName);\r\n view && that._hideVisibleColumnInView({\r\n view: view,\r\n isCommandColumn: isCommandColumn,\r\n visibleIndex: visibleIndex\r\n })\r\n }))\r\n },\r\n _hideVisibleColumnInView: function(_ref3) {\r\n var {\r\n view: view,\r\n isCommandColumn: isCommandColumn,\r\n visibleIndex: visibleIndex\r\n } = _ref3;\r\n var viewName = view.name;\r\n var $cellElement;\r\n var column = this._columnsController.getVisibleColumns()[visibleIndex];\r\n var editFormRowIndex = this._editingController && this._editingController.getEditFormRowIndex();\r\n if (view && view.isVisible() && column) {\r\n var rowsCount = view.getRowsCount();\r\n var $rowElements = view._getRowElements();\r\n for (var rowIndex = 0; rowIndex < rowsCount; rowIndex++) {\r\n var cancelClassAdding = rowIndex === editFormRowIndex && viewName === ROWS_VIEW && \"popup\" !== this.option(\"editing.mode\");\r\n if (!cancelClassAdding) {\r\n var currentVisibleIndex = viewName === COLUMN_HEADERS_VIEW ? this._columnsController.getVisibleIndex(column.index, rowIndex) : visibleIndex;\r\n if (currentVisibleIndex >= 0) {\r\n var $rowElement = $rowElements.eq(rowIndex);\r\n $cellElement = this._findCellElementInRow($rowElement, currentVisibleIndex);\r\n this._isCellValid($cellElement) && this._hideVisibleCellInView({\r\n viewName: viewName,\r\n isCommandColumn: isCommandColumn,\r\n $cell: $cellElement\r\n })\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _findCellElementInRow($rowElement, visibleColumnIndex) {\r\n var $rowCells = $rowElement.children();\r\n var visibleIndex = visibleColumnIndex;\r\n var cellIsInsideGroup = false;\r\n if ($rowElement.hasClass(GROUP_ROW_CLASS)) {\r\n var $groupCell = $rowElement.find(\".\".concat(GROUP_CELL_CLASS));\r\n var colSpan = $groupCell.attr(\"colspan\");\r\n if ($groupCell.length && isDefined(colSpan)) {\r\n var groupCellLength = parseInt(colSpan);\r\n var endGroupIndex = $groupCell.index() + groupCellLength - 1;\r\n if (visibleColumnIndex > endGroupIndex) {\r\n visibleIndex = visibleColumnIndex - groupCellLength + 1\r\n } else {\r\n cellIsInsideGroup = true\r\n }\r\n }\r\n }\r\n var $cellElement = !cellIsInsideGroup ? $rowCells.eq(visibleIndex) : void 0;\r\n return $cellElement\r\n },\r\n _hideVisibleCellInView: function(_ref4) {\r\n var {\r\n $cell: $cell,\r\n isCommandColumn: isCommandColumn\r\n } = _ref4;\r\n var cssClassNameToAdd = isCommandColumn ? COMMAND_ADAPTIVE_HIDDEN_CLASS : this.addWidgetPrefix(HIDDEN_COLUMN_CLASS);\r\n $cell.addClass(cssClassNameToAdd)\r\n },\r\n _getEditMode: function() {\r\n return this._editingController.getEditMode()\r\n },\r\n isFormOrPopupEditMode: function() {\r\n var editMode = this._getEditMode();\r\n return editMode === EDIT_MODE_FORM || editMode === EDIT_MODE_POPUP\r\n },\r\n hideRedundantColumns: function(resultWidths, visibleColumns, hiddenQueue) {\r\n this._hiddenColumns = [];\r\n if (this._isVisibleColumnsValid(visibleColumns) && hiddenQueue.length) {\r\n var totalWidth = 0;\r\n var $rootElement = this.component.$element();\r\n var rootElementWidth = $rootElement.width() - this._getCommandColumnsWidth();\r\n var getVisibleContentColumns = function() {\r\n return visibleColumns.filter(item => !item.command && 0 === this._hiddenColumns.filter(i => i.index === item.index).length)\r\n }.bind(this);\r\n var visibleContentColumns = getVisibleContentColumns();\r\n var contentColumnsCount = visibleContentColumns.length;\r\n var i;\r\n var hasHiddenColumns;\r\n var needHideColumn;\r\n do {\r\n needHideColumn = false;\r\n totalWidth = 0;\r\n var percentWidths = this._calculatePercentWidths(resultWidths, visibleColumns);\r\n var columnsCanFit = percentWidths < 100 && 0 !== percentWidths;\r\n for (i = 0; i < visibleColumns.length; i++) {\r\n var visibleColumn = visibleColumns[i];\r\n var columnWidth = this._getNotTruncatedColumnWidth(visibleColumn, rootElementWidth, visibleContentColumns, columnsCanFit);\r\n var columnId = getColumnId(this, visibleColumn);\r\n var widthOption = this._columnsController.columnOption(columnId, \"width\");\r\n var minWidth = this._columnsController.columnOption(columnId, \"minWidth\");\r\n var columnBestFitWidth = this._columnsController.columnOption(columnId, \"bestFitWidth\");\r\n if (resultWidths[i] === HIDDEN_COLUMNS_WIDTH) {\r\n hasHiddenColumns = true;\r\n continue\r\n }\r\n if (!columnWidth && !visibleColumn.command && !visibleColumn.fixed) {\r\n needHideColumn = true;\r\n break\r\n }\r\n if (!widthOption || \"auto\" === widthOption) {\r\n columnWidth = Math.max(columnBestFitWidth || 0, minWidth || 0)\r\n }\r\n if (visibleColumn.command !== ADAPTIVE_COLUMN_NAME || hasHiddenColumns) {\r\n totalWidth += columnWidth\r\n }\r\n }\r\n needHideColumn = needHideColumn || totalWidth > $rootElement.width();\r\n if (needHideColumn) {\r\n var column = hiddenQueue.pop();\r\n var visibleIndex = this._columnsController.getVisibleIndex(column.index);\r\n rootElementWidth += this._calculateColumnWidth(column, rootElementWidth, visibleContentColumns, columnsCanFit);\r\n this._hideVisibleColumn({\r\n visibleIndex: visibleIndex\r\n });\r\n resultWidths[visibleIndex] = HIDDEN_COLUMNS_WIDTH;\r\n this._hiddenColumns.push(column);\r\n visibleContentColumns = getVisibleContentColumns()\r\n }\r\n } while (needHideColumn && visibleContentColumns.length > 1 && hiddenQueue.length);\r\n if (contentColumnsCount === visibleContentColumns.length) {\r\n this._hideAdaptiveColumn(resultWidths, visibleColumns)\r\n }\r\n } else {\r\n this._hideAdaptiveColumn(resultWidths, visibleColumns)\r\n }\r\n },\r\n getItemContentByColumnIndex: function(visibleColumnIndex) {\r\n var $itemContent;\r\n for (var i = 0; i < this._$itemContents.length; i++) {\r\n $itemContent = this._$itemContents.eq(i);\r\n var item = $itemContent.data(\"dx-form-item\");\r\n if (item && item.column && this._columnsController.getVisibleIndex(item.column.index) === visibleColumnIndex) {\r\n return $itemContent\r\n }\r\n }\r\n },\r\n toggleExpandAdaptiveDetailRow: function(key, alwaysExpanded) {\r\n if (!(this.isFormOrPopupEditMode() && this._editingController.isEditing())) {\r\n this.getController(\"data\").toggleExpandAdaptiveDetailRow(key, alwaysExpanded)\r\n }\r\n },\r\n createFormByHiddenColumns: function(container, options) {\r\n var that = this;\r\n var $container = $(container);\r\n var userFormOptions = {\r\n items: that._getFormItemsByHiddenColumns(that._hiddenColumns),\r\n formID: \"dx-\" + new Guid\r\n };\r\n var defaultFormOptions = isMaterial() ? {\r\n colCount: 2\r\n } : {};\r\n this.executeAction(\"onAdaptiveDetailRowPreparing\", {\r\n formOptions: userFormOptions\r\n });\r\n that._$itemContents = null;\r\n that._form = that._createComponent($(\"
\").appendTo($container), Form, extend(defaultFormOptions, userFormOptions, {\r\n customizeItem: function(item) {\r\n var column = item.column || that._columnsController.columnOption(item.name || item.dataField);\r\n if (column) {\r\n item.label = item.label || {};\r\n item.label.text = item.label.text || column.caption;\r\n item.column = column;\r\n item.template = that._getTemplate(item, options, that.updateForm.bind(that))\r\n }\r\n userFormOptions.customizeItem && userFormOptions.customizeItem.call(this, item)\r\n },\r\n onContentReady: function(e) {\r\n userFormOptions.onContentReady && userFormOptions.onContentReady.call(this, e);\r\n that._$itemContents = $container.find(\".\" + FORM_ITEM_CONTENT_CLASS)\r\n }\r\n }))\r\n },\r\n hasAdaptiveDetailRowExpanded: function() {\r\n return isDefined(this._dataController.adaptiveExpandedKey())\r\n },\r\n updateForm: function(hiddenColumns) {\r\n if (this.hasAdaptiveDetailRowExpanded()) {\r\n if (this._form && isDefined(this._form._contentReadyAction)) {\r\n if (hiddenColumns && hiddenColumns.length) {\r\n this._form.option(\"items\", this._getFormItemsByHiddenColumns(hiddenColumns))\r\n } else {\r\n this._form.repaint()\r\n }\r\n }\r\n }\r\n },\r\n updateHidingQueue: function(columns) {\r\n var hideableColumns = columns.filter((function(column) {\r\n return column.visible && !column.type && !column.fixed && !(isDefined(column.groupIndex) && column.groupIndex >= 0)\r\n }));\r\n var columnsHasHidingPriority;\r\n var i;\r\n this._hidingColumnsQueue = [];\r\n if (this.option(\"allowColumnResizing\") && \"widget\" === this.option(\"columnResizingMode\")) {\r\n return this._hidingColumnsQueue\r\n }\r\n for (i = 0; i < hideableColumns.length; i++) {\r\n if (isDefined(hideableColumns[i].hidingPriority) && hideableColumns[i].hidingPriority >= 0) {\r\n columnsHasHidingPriority = true;\r\n this._hidingColumnsQueue[hideableColumns[i].hidingPriority] = hideableColumns[i]\r\n }\r\n }\r\n if (columnsHasHidingPriority) {\r\n this._hidingColumnsQueue.reverse()\r\n } else if (this.option(\"columnHidingEnabled\")) {\r\n for (i = 0; i < hideableColumns.length; i++) {\r\n var visibleIndex = this._columnsController.getVisibleIndex(hideableColumns[i].index);\r\n this._hidingColumnsQueue[visibleIndex] = hideableColumns[i]\r\n }\r\n }\r\n this._hidingColumnsQueue = this._hidingColumnsQueue.filter(Object);\r\n return this._hidingColumnsQueue\r\n },\r\n getHiddenColumns: function() {\r\n return this._hiddenColumns\r\n },\r\n hasHiddenColumns: function() {\r\n return this._hiddenColumns.length > 0\r\n },\r\n getHidingColumnsQueue: function() {\r\n return this._hidingColumnsQueue\r\n },\r\n init: function() {\r\n var that = this;\r\n that._columnsController = that.getController(\"columns\");\r\n that._dataController = that.getController(\"data\");\r\n that._rowsView = that.getView(\"rowsView\");\r\n that._columnsController.addCommandColumn({\r\n type: ADAPTIVE_COLUMN_NAME,\r\n command: ADAPTIVE_COLUMN_NAME,\r\n visible: true,\r\n adaptiveHidden: true,\r\n cssClass: ADAPTIVE_COLUMN_NAME_CLASS,\r\n alignment: \"center\",\r\n width: \"auto\",\r\n cellTemplate: adaptiveCellTemplate,\r\n fixedPosition: \"right\"\r\n });\r\n that._columnsController.columnsChanged.add((function() {\r\n var isAdaptiveVisible = !!that.updateHidingQueue(that._columnsController.getColumns()).length;\r\n that._columnsController.columnOption(\"command:adaptive\", \"adaptiveHidden\", !isAdaptiveVisible, true)\r\n }));\r\n that._editingController = that.getController(\"editing\");\r\n that._hidingColumnsQueue = [];\r\n that._hiddenColumns = [];\r\n that.createAction(\"onAdaptiveDetailRowPreparing\");\r\n that.callBase()\r\n },\r\n optionChanged: function(args) {\r\n if (\"columnHidingEnabled\" === args.name) {\r\n this._columnsController.columnOption(\"command:adaptive\", \"adaptiveHidden\", !args.value)\r\n }\r\n this.callBase(args)\r\n },\r\n publicMethods: function() {\r\n return [\"isAdaptiveDetailRowExpanded\", \"expandAdaptiveDetailRow\", \"collapseAdaptiveDetailRow\"]\r\n },\r\n isAdaptiveDetailRowExpanded: function(key) {\r\n return this._dataController.adaptiveExpandedKey() && equalByValue(this._dataController.adaptiveExpandedKey(), key)\r\n },\r\n expandAdaptiveDetailRow: function(key) {\r\n if (!this.hasAdaptiveDetailRowExpanded()) {\r\n this.toggleExpandAdaptiveDetailRow(key)\r\n }\r\n },\r\n collapseAdaptiveDetailRow: function() {\r\n if (this.hasAdaptiveDetailRowExpanded()) {\r\n this.toggleExpandAdaptiveDetailRow()\r\n }\r\n },\r\n updateCommandAdaptiveAriaLabel: function(key, label) {\r\n var rowIndex = this._dataController.getRowIndexByKey(key);\r\n if (-1 === rowIndex) {\r\n return\r\n }\r\n var $row = $(this.component.getRowElement(rowIndex));\r\n this.setCommandAdaptiveAriaLabel($row, label)\r\n },\r\n setCommandAdaptiveAriaLabel: function($row, labelName) {\r\n var $adaptiveCommand = $row.find(\".dx-command-adaptive\");\r\n $adaptiveCommand.attr(\"aria-label\", messageLocalization.format(labelName))\r\n }\r\n});\r\nexport var adaptivityModule = {\r\n defaultOptions: function() {\r\n return {\r\n columnHidingEnabled: false,\r\n onAdaptiveDetailRowPreparing: null\r\n }\r\n },\r\n controllers: {\r\n adaptiveColumns: AdaptiveColumnsController\r\n },\r\n extenders: {\r\n views: {\r\n rowsView: {\r\n _getCellTemplate: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n if (options.rowType === ADAPTIVE_ROW_TYPE && \"detail\" === column.command) {\r\n return function(container, options) {\r\n that._adaptiveColumnsController.createFormByHiddenColumns($(container), options)\r\n }\r\n }\r\n return that.callBase(options)\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row);\r\n if (row && row.rowType === ADAPTIVE_ROW_TYPE && row.key === this._dataController.adaptiveExpandedKey()) {\r\n $row.addClass(ADAPTIVE_DETAIL_ROW_CLASS)\r\n }\r\n return $row\r\n },\r\n _renderCells: function($row, options) {\r\n this.callBase($row, options);\r\n var adaptiveColumnsController = this._adaptiveColumnsController;\r\n var hidingColumnsQueueLength = adaptiveColumnsController.getHidingColumnsQueue().length;\r\n var hiddenColumnsLength = adaptiveColumnsController.getHiddenColumns().length;\r\n if (hidingColumnsQueueLength && !hiddenColumnsLength) {\r\n getDataCellElements($row).last().addClass(LAST_DATA_CELL_CLASS)\r\n }\r\n if (\"data\" === options.row.rowType) {\r\n adaptiveColumnsController.setCommandAdaptiveAriaLabel($row, EXPAND_ARIA_NAME)\r\n }\r\n },\r\n _getColumnIndexByElementCore: function($element) {\r\n var $itemContent = $element.closest(\".\" + FORM_ITEM_CONTENT_CLASS);\r\n if ($itemContent.length && $itemContent.closest(this.component.$element()).length) {\r\n var formItem = $itemContent.length ? $itemContent.first().data(\"dx-form-item\") : null;\r\n return formItem && formItem.column && this._columnsController.getVisibleIndex(formItem.column.index)\r\n } else {\r\n return this.callBase($element)\r\n }\r\n },\r\n _cellPrepared: function($cell, options) {\r\n this.callBase.apply(this, arguments);\r\n if (options.row.rowType !== ADAPTIVE_ROW_TYPE && options.column.visibleWidth === HIDDEN_COLUMNS_WIDTH) {\r\n $cell.addClass(this.addWidgetPrefix(HIDDEN_COLUMN_CLASS))\r\n }\r\n },\r\n _getCellElement: function(rowIndex, columnIdentifier) {\r\n var item = this._dataController.items()[rowIndex];\r\n if (item && item.rowType === ADAPTIVE_ROW_TYPE) {\r\n return this._adaptiveColumnsController.getItemContentByColumnIndex(columnIdentifier)\r\n } else {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n },\r\n getContextMenuItems: function(options) {\r\n if (options.row && \"detailAdaptive\" === options.row.rowType) {\r\n var view = this.component.getView(\"columnHeadersView\");\r\n var formItem = $(options.targetElement).closest(\".dx-field-item-label\").next().data(\"dx-form-item\");\r\n options.column = formItem ? formItem.column : options.column;\r\n return view.getContextMenuItems && view.getContextMenuItems(options)\r\n }\r\n return this.callBase && this.callBase(options)\r\n },\r\n isClickableElement: function($target) {\r\n var isClickable = this.callBase ? this.callBase($target) : false;\r\n return isClickable || !!$target.closest(\".\" + ADAPTIVE_COLUMN_NAME_CLASS).length\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._adaptiveColumnsController = this.getController(\"adaptiveColumns\")\r\n }\r\n }\r\n },\r\n controllers: {\r\n export: {\r\n _updateColumnWidth: function(column, width) {\r\n this.callBase(column, column.visibleWidth === HIDDEN_COLUMNS_WIDTH ? column.bestFitWidth : width)\r\n }\r\n },\r\n columnsResizer: {\r\n _pointCreated: function(point, cellsLength, columns) {\r\n var result = this.callBase(point, cellsLength, columns);\r\n var currentColumn = columns[point.columnIndex] || {};\r\n var nextColumnIndex = this._getNextColumnIndex(point.columnIndex);\r\n var nextColumn = columns[nextColumnIndex] || {};\r\n var hasHiddenColumnsOnly = nextColumnIndex !== point.columnIndex + 1 && nextColumn.command;\r\n var hasAdaptiveHiddenWidth = currentColumn.visibleWidth === HIDDEN_COLUMNS_WIDTH || hasHiddenColumnsOnly;\r\n return result || hasAdaptiveHiddenWidth\r\n },\r\n _getNextColumnIndex: function(currentColumnIndex) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var index = this.callBase(currentColumnIndex);\r\n while (visibleColumns[index] && visibleColumns[index].visibleWidth === HIDDEN_COLUMNS_WIDTH) {\r\n index++\r\n }\r\n return index\r\n }\r\n },\r\n draggingHeader: {\r\n _pointCreated: function(point, columns, location, sourceColumn) {\r\n var result = this.callBase(point, columns, location, sourceColumn);\r\n var column = columns[point.columnIndex - 1] || {};\r\n var hasAdaptiveHiddenWidth = column.visibleWidth === HIDDEN_COLUMNS_WIDTH;\r\n return result || hasAdaptiveHiddenWidth\r\n }\r\n },\r\n editing: {\r\n _isRowEditMode: function() {\r\n return this.getEditMode() === EDIT_MODE_ROW\r\n },\r\n _getFormEditItemTemplate: function(cellOptions, column) {\r\n if (this.getEditMode() !== EDIT_MODE_ROW && \"detailAdaptive\" === cellOptions.rowType) {\r\n cellOptions.columnIndex = this._columnsController.getVisibleIndex(column.index);\r\n return this.getColumnTemplate(cellOptions)\r\n }\r\n return this.callBase(cellOptions, column)\r\n },\r\n _closeEditItem: function($targetElement) {\r\n var $itemContents = $targetElement.closest(\".\" + FORM_ITEM_CONTENT_CLASS);\r\n var rowIndex = this._dataController.getRowIndexByKey(this._dataController.adaptiveExpandedKey()) + 1;\r\n var formItem = $itemContents.length ? $itemContents.first().data(\"dx-form-item\") : null;\r\n var columnIndex = formItem && formItem.column && this._columnsController.getVisibleIndex(formItem.column.index);\r\n if (!this.isEditCell(rowIndex, columnIndex)) {\r\n this.callBase($targetElement)\r\n }\r\n },\r\n _beforeUpdateItems: function(rowIndices, rowIndex) {\r\n if (!this._adaptiveController.isFormOrPopupEditMode() && this._adaptiveController.hasHiddenColumns()) {\r\n var items = this._dataController.items();\r\n var item = items[rowIndex];\r\n var oldExpandRowIndex = gridCoreUtils.getIndexByKey(this._dataController.adaptiveExpandedKey(), items);\r\n this._isForceRowAdaptiveExpand = !this._adaptiveController.hasAdaptiveDetailRowExpanded();\r\n if (oldExpandRowIndex >= 0) {\r\n rowIndices.push(oldExpandRowIndex + 1)\r\n }\r\n rowIndices.push(rowIndex + 1);\r\n this._dataController.adaptiveExpandedKey(item.key)\r\n }\r\n },\r\n _afterInsertRow: function(options) {\r\n this.callBase(options);\r\n if (this._adaptiveController.hasHiddenColumns()) {\r\n this._adaptiveController.toggleExpandAdaptiveDetailRow(options.key, this.isRowEditMode());\r\n this._isForceRowAdaptiveExpand = true\r\n }\r\n },\r\n _collapseAdaptiveDetailRow: function() {\r\n if (this._isRowEditMode() && this._isForceRowAdaptiveExpand) {\r\n this._adaptiveController.collapseAdaptiveDetailRow();\r\n this._isForceRowAdaptiveExpand = false\r\n }\r\n },\r\n _cancelEditAdaptiveDetailRow: function() {\r\n if (this._adaptiveController.hasHiddenColumns()) {\r\n this._collapseAdaptiveDetailRow()\r\n }\r\n },\r\n _afterSaveEditData: function() {\r\n this.callBase.apply(this, arguments);\r\n var deferred = new Deferred;\r\n if (this._isRowEditMode() && this._adaptiveController.hasHiddenColumns()) {\r\n when(this.getController(\"validating\").validate(true)).done(isValid => {\r\n if (isValid) {\r\n this._cancelEditAdaptiveDetailRow()\r\n }\r\n deferred.resolve()\r\n })\r\n } else {\r\n deferred.resolve()\r\n }\r\n return deferred.promise()\r\n },\r\n _beforeCancelEditData: function() {\r\n this.callBase();\r\n this._cancelEditAdaptiveDetailRow()\r\n },\r\n _getRowIndicesForCascadeUpdating: function(row) {\r\n var rowIndices = this.callBase.apply(this, arguments);\r\n if (this._adaptiveController.isAdaptiveDetailRowExpanded(row.key)) {\r\n rowIndices.push(row.rowType === ADAPTIVE_ROW_TYPE ? row.rowIndex - 1 : row.rowIndex + 1)\r\n }\r\n return rowIndices\r\n },\r\n _beforeCloseEditCellInBatchMode: function(rowIndices) {\r\n var expandedKey = this._dataController._adaptiveExpandedKey;\r\n if (expandedKey) {\r\n var rowIndex = gridCoreUtils.getIndexByKey(expandedKey, this._dataController.items());\r\n if (rowIndex > -1) {\r\n rowIndices.unshift(rowIndex)\r\n }\r\n }\r\n },\r\n editRow: function(rowIndex) {\r\n if (this._adaptiveController.isFormOrPopupEditMode()) {\r\n this._adaptiveController.collapseAdaptiveDetailRow()\r\n }\r\n this.callBase(rowIndex)\r\n },\r\n deleteRow: function(rowIndex) {\r\n var rowKey = this._dataController.getKeyByRowIndex(rowIndex);\r\n if (this.getEditMode() === EDIT_MODE_BATCH && this._adaptiveController.isAdaptiveDetailRowExpanded(rowKey)) {\r\n this._adaptiveController.collapseAdaptiveDetailRow()\r\n }\r\n this.callBase(rowIndex)\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._adaptiveController = this.getController(\"adaptiveColumns\")\r\n }\r\n },\r\n resizing: {\r\n _needBestFit: function() {\r\n return this.callBase() || !!this._adaptiveColumnsController.getHidingColumnsQueue().length\r\n },\r\n _updateScrollableForIE: function() {\r\n var that = this;\r\n if (browser.msie && parseInt(browser.version) <= 11) {\r\n this._updateScrollableTimeoutID = setTimeout((function() {\r\n that.getView(\"rowsView\")._updateScrollable()\r\n }))\r\n }\r\n },\r\n _correctColumnWidths: function(resultWidths, visibleColumns) {\r\n var adaptiveController = this._adaptiveColumnsController;\r\n var columnAutoWidth = this.option(\"columnAutoWidth\");\r\n var oldHiddenColumns = adaptiveController.getHiddenColumns();\r\n var hidingColumnsQueue = adaptiveController.updateHidingQueue(this._columnsController.getColumns());\r\n adaptiveController.hideRedundantColumns(resultWidths, visibleColumns, hidingColumnsQueue);\r\n var hiddenColumns = adaptiveController.getHiddenColumns();\r\n if (adaptiveController.hasAdaptiveDetailRowExpanded()) {\r\n if (oldHiddenColumns.length !== hiddenColumns.length) {\r\n adaptiveController.updateForm(hiddenColumns)\r\n }\r\n }!hiddenColumns.length && adaptiveController.collapseAdaptiveDetailRow();\r\n if (columnAutoWidth && hidingColumnsQueue.length && !hiddenColumns.length) {\r\n this._updateScrollableForIE()\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _toggleBestFitMode: function(isBestFit) {\r\n isBestFit && this._adaptiveColumnsController._showHiddenColumns();\r\n this.callBase(isBestFit)\r\n },\r\n _needStretch: function() {\r\n var adaptiveColumnsController = this._adaptiveColumnsController;\r\n return this.callBase.apply(this, arguments) || adaptiveColumnsController.getHidingColumnsQueue().length || adaptiveColumnsController.hasHiddenColumns()\r\n },\r\n init: function() {\r\n this._adaptiveColumnsController = this.getController(\"adaptiveColumns\");\r\n this.callBase()\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n clearTimeout(this._updateScrollableTimeoutID)\r\n }\r\n },\r\n data: {\r\n _processItems: function(items, change) {\r\n var that = this;\r\n var changeType = change.changeType;\r\n items = that.callBase.apply(that, arguments);\r\n if (\"loadingAll\" === changeType || !isDefined(that._adaptiveExpandedKey)) {\r\n return items\r\n }\r\n var expandRowIndex = gridCoreUtils.getIndexByKey(that._adaptiveExpandedKey, items);\r\n if (expandRowIndex >= 0) {\r\n var item = items[expandRowIndex];\r\n items.splice(expandRowIndex + 1, 0, {\r\n visible: true,\r\n rowType: ADAPTIVE_ROW_TYPE,\r\n key: item.key,\r\n data: item.data,\r\n node: item.node,\r\n modifiedValues: item.modifiedValues,\r\n isNewRow: item.isNewRow,\r\n values: item.values\r\n })\r\n } else if (\"refresh\" === changeType) {\r\n that._adaptiveExpandedKey = void 0\r\n }\r\n return items\r\n },\r\n _getRowIndicesForExpand: function(key) {\r\n var rowIndices = this.callBase.apply(this, arguments);\r\n if (this.getController(\"adaptiveColumns\").isAdaptiveDetailRowExpanded(key)) {\r\n var lastRowIndex = rowIndices[rowIndices.length - 1];\r\n rowIndices.push(lastRowIndex + 1)\r\n }\r\n return rowIndices\r\n },\r\n adaptiveExpandedKey: function(value) {\r\n if (isDefined(value)) {\r\n this._adaptiveExpandedKey = value\r\n } else {\r\n return this._adaptiveExpandedKey\r\n }\r\n },\r\n toggleExpandAdaptiveDetailRow: function(key, alwaysExpanded) {\r\n var oldExpandLoadedRowIndex = gridCoreUtils.getIndexByKey(this._adaptiveExpandedKey, this._items);\r\n var newExpandLoadedRowIndex = gridCoreUtils.getIndexByKey(key, this._items);\r\n if (oldExpandLoadedRowIndex >= 0 && oldExpandLoadedRowIndex === newExpandLoadedRowIndex && !alwaysExpanded) {\r\n key = void 0;\r\n newExpandLoadedRowIndex = -1\r\n }\r\n var oldKey = this._adaptiveExpandedKey;\r\n this._adaptiveExpandedKey = key;\r\n if (oldExpandLoadedRowIndex >= 0) {\r\n oldExpandLoadedRowIndex++\r\n }\r\n if (newExpandLoadedRowIndex >= 0) {\r\n newExpandLoadedRowIndex++\r\n }\r\n var rowIndexDelta = this.getRowIndexDelta();\r\n this.updateItems({\r\n allowInvisibleRowIndices: true,\r\n changeType: \"update\",\r\n rowIndices: [oldExpandLoadedRowIndex - rowIndexDelta, newExpandLoadedRowIndex - rowIndexDelta]\r\n });\r\n var adaptiveColumnsController = this.getController(\"adaptiveColumns\");\r\n adaptiveColumnsController.updateCommandAdaptiveAriaLabel(key, COLLAPSE_ARIA_NAME);\r\n adaptiveColumnsController.updateCommandAdaptiveAriaLabel(oldKey, EXPAND_ARIA_NAME)\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._adaptiveExpandedKey = void 0\r\n }\r\n },\r\n editorFactory: {\r\n _getFocusCellSelector: function() {\r\n return this.callBase() + \", .dx-adaptive-detail-row .dx-field-item > .dx-field-item-content\"\r\n },\r\n _getTooltipsSelector: function() {\r\n return this.callBase() + \", .dx-field-item-content .\" + this.addWidgetPrefix(REVERT_TOOLTIP_CLASS)\r\n }\r\n },\r\n columns: {\r\n _isColumnVisible: function(column) {\r\n return this.callBase(column) && !column.adaptiveHidden\r\n }\r\n },\r\n keyboardNavigation: {\r\n _isCellValid: function($cell) {\r\n return this.callBase.apply(this, arguments) && !$cell.hasClass(this.addWidgetPrefix(HIDDEN_COLUMN_CLASS))\r\n },\r\n _processNextCellInMasterDetail: function($nextCell) {\r\n this.callBase($nextCell);\r\n var isCellOrBatchMode = this._editingController.isCellOrBatchEditMode();\r\n if (!this._isInsideEditForm($nextCell) && $nextCell && isCellOrBatchMode) {\r\n eventsEngine.on($nextCell, \"focus\", (function focusHandler() {\r\n eventsEngine.off($nextCell, \"focus\", focusHandler);\r\n eventsEngine.trigger($nextCell, \"dxclick\")\r\n }))\r\n }\r\n },\r\n _handleTabKeyOnMasterDetailCell: function(eventTarget, direction) {\r\n var result = this.callBase(eventTarget, direction);\r\n var $currentCell = this._getFocusedCell();\r\n var $row = $currentCell && $currentCell.parent();\r\n if (!result && $row && $row.length) {\r\n var $dataCells = getDataCellElements($row);\r\n var $targetCell = \"next\" === direction ? $dataCells.last() : $dataCells.first();\r\n var rowIndex = $row.get(0).rowIndex;\r\n var adaptiveController = this._adaptiveController;\r\n var key = this._dataController.getKeyByRowIndex(\"next\" === direction ? rowIndex : rowIndex - 1);\r\n var isCellElementsEquals = $currentCell && $targetCell && $currentCell.get(0) === $targetCell.get(0);\r\n return adaptiveController.isAdaptiveDetailRowExpanded(key) && isCellElementsEquals\r\n }\r\n return result\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._adaptiveController = this.getController(\"adaptiveColumns\")\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.editing_cell_based.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n isDefined,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport holdEvent from \"../../events/hold\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n deferRender\r\n} from \"../../core/utils/common\";\r\nimport {\r\n createObjectWithChanges\r\n} from \"../../data/array_utils\";\r\nimport {\r\n EDIT_MODE_BATCH,\r\n EDIT_MODE_CELL,\r\n TARGET_COMPONENT_NAME\r\n} from \"./ui.grid_core.editing_constants\";\r\nvar FOCUS_OVERLAY_CLASS = \"focus-overlay\";\r\nvar ADD_ROW_BUTTON_CLASS = \"addrow-button\";\r\nvar DROPDOWN_EDITOR_OVERLAY_CLASS = \"dx-dropdowneditor-overlay\";\r\nvar EDITOR_CELL_CLASS = \"dx-editor-cell\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar CELL_MODIFIED_CLASS = \"dx-cell-modified\";\r\nvar DATA_ROW_CLASS = \"dx-data-row\";\r\nvar ROW_REMOVED = \"dx-row-removed\";\r\nvar EDITING_EDITROWKEY_OPTION_NAME = \"editing.editRowKey\";\r\nvar EDITING_EDITCOLUMNNAME_OPTION_NAME = \"editing.editColumnName\";\r\nvar DATA_EDIT_DATA_REMOVE_TYPE = \"remove\";\r\nexport default {\r\n extenders: {\r\n controllers: {\r\n editing: {\r\n init: function() {\r\n var needCreateHandlers = !this._saveEditorHandler;\r\n this.callBase.apply(this, arguments);\r\n if (needCreateHandlers) {\r\n var $pointerDownTarget;\r\n var isResizing;\r\n this._pointerUpEditorHandler = () => {\r\n var _this$getController;\r\n isResizing = null === (_this$getController = this.getController(\"columnsResizer\")) || void 0 === _this$getController ? void 0 : _this$getController.isResizing()\r\n };\r\n this._pointerDownEditorHandler = e => $pointerDownTarget = $(e.target);\r\n this._saveEditorHandler = this.createAction((function(e) {\r\n var event = e.event;\r\n var $target = $(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 (this.isCellOrBatchEditMode() && !this._editCellInProgress) {\r\n var isEditorPopup = checkEditorPopup($target) || checkEditorPopup(null === targetComponent || void 0 === targetComponent ? void 0 : targetComponent.$element());\r\n var isDomElement = !!$target.closest(getWindow().document).length;\r\n var isAnotherComponent = targetComponent && !targetComponent._disposed && targetComponent !== this.component;\r\n var isAddRowButton = !!$target.closest(\".\".concat(this.addWidgetPrefix(ADD_ROW_BUTTON_CLASS))).length;\r\n var isFocusOverlay = $target.hasClass(this.addWidgetPrefix(FOCUS_OVERLAY_CLASS));\r\n var isCellEditMode = this.isCellEditMode();\r\n if (!isResizing && !isEditorPopup && !isFocusOverlay && !(isAddRowButton && isCellEditMode && this.isEditing()) && (isDomElement || isAnotherComponent)) {\r\n this._closeEditItem.bind(this)($target)\r\n }\r\n }\r\n }));\r\n eventsEngine.on(domAdapter.getDocument(), pointerEvents.up, this._pointerUpEditorHandler);\r\n eventsEngine.on(domAdapter.getDocument(), pointerEvents.down, this._pointerDownEditorHandler);\r\n eventsEngine.on(domAdapter.getDocument(), clickEventName, this._saveEditorHandler)\r\n }\r\n },\r\n isCellEditMode: function() {\r\n return this.option(\"editing.mode\") === EDIT_MODE_CELL\r\n },\r\n isBatchEditMode: function() {\r\n return this.option(\"editing.mode\") === EDIT_MODE_BATCH\r\n },\r\n isCellOrBatchEditMode: function() {\r\n return this.isCellEditMode() || this.isBatchEditMode()\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 || this.callBase.apply(this, arguments)\r\n },\r\n _closeEditItem: function($targetElement) {\r\n if (this._needToCloseEditableCell($targetElement)) {\r\n this.closeEditCell()\r\n }\r\n },\r\n _focusEditorIfNeed: function() {\r\n if (this._needFocusEditor && this.isCellOrBatchEditMode()) {\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(() => {\r\n this._editCellInProgress = false\r\n }, $cell, true)\r\n } else {\r\n this._editCellInProgress = false\r\n }\r\n this._needFocusEditor = false\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n isEditing: function() {\r\n if (this.isCellOrBatchEditMode()) {\r\n var isEditRowKeyDefined = isDefined(this.option(EDITING_EDITROWKEY_OPTION_NAME));\r\n var isEditColumnNameDefined = isDefined(this.option(EDITING_EDITCOLUMNNAME_OPTION_NAME));\r\n return isEditRowKeyDefined && isEditColumnNameDefined\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _handleEditColumnNameChange: function(args) {\r\n var oldRowIndex = this._getVisibleEditRowIndex(args.previousValue);\r\n if (this.isCellOrBatchEditMode() && -1 !== oldRowIndex && 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 _addRow: function(parentKey, deferred) {\r\n if (this.isCellEditMode() && this.hasChanges()) {\r\n var _deferred = new Deferred;\r\n this.saveEditData().done(() => {\r\n if (!this.hasChanges()) {\r\n this.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 return this.callBase.apply(this, arguments)\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 d = new Deferred;\r\n var coreResult;\r\n this.executeOperation(d, () => {\r\n coreResult = this._editCellCore(options);\r\n when(coreResult).done(d.resolve).fail(d.reject)\r\n });\r\n return void 0 !== coreResult ? coreResult : d.promise()\r\n },\r\n _editCellCore: function(options) {\r\n var dataController = this._dataController;\r\n var isEditByOptionChanged = isDefined(options.oldColumnIndex) || isDefined(options.oldRowIndex);\r\n var {\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex,\r\n column: column,\r\n item: item\r\n } = this._getNormalizedEditCellOptions(options);\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 && this.isCellOrBatchEditMode()) {\r\n if (!isEditByOptionChanged && this.isEditCell(rowIndex, columnIndex)) {\r\n return true\r\n }\r\n var editRowIndex = rowIndex + dataController.getRowIndexOffset();\r\n return when(this._beforeEditCell(rowIndex, columnIndex, item)).done(cancel => {\r\n if (cancel) {\r\n return\r\n }\r\n if (!this._prepareEditCell(params, item, columnIndex, editRowIndex)) {\r\n this._processCanceledEditingCell()\r\n }\r\n })\r\n }\r\n return false\r\n },\r\n _beforeEditCell: function(rowIndex, columnIndex, item) {\r\n if (this.isCellEditMode() && !item.isNewRow && this.hasChanges()) {\r\n var d = new Deferred;\r\n this.saveEditData().always(() => {\r\n d.resolve(this.hasChanges())\r\n });\r\n return d\r\n }\r\n },\r\n publicMethods: function() {\r\n var publicMethods = this.callBase.apply(this, arguments);\r\n return publicMethods.concat([\"editCell\", \"closeEditCell\"])\r\n },\r\n _getNormalizedEditCellOptions: function(_ref) {\r\n var {\r\n oldColumnIndex: oldColumnIndex,\r\n oldRowIndex: oldRowIndex,\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex\r\n } = _ref;\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 (isDefined(oldColumnIndex)) {\r\n oldColumn = visibleColumns[oldColumnIndex]\r\n } else {\r\n oldColumn = this._getEditColumn()\r\n }\r\n if (!isDefined(oldRowIndex)) {\r\n oldRowIndex = this._getVisibleEditRowIndex()\r\n }\r\n if (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 _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$oldData;\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 }\r\n return true\r\n },\r\n closeEditCell: function(isError, withoutSaveEditData) {\r\n var result = when();\r\n var oldEditRowIndex = this._getVisibleEditRowIndex();\r\n if (this.isCellOrBatchEditMode()) {\r\n var deferred = new Deferred;\r\n result = new Deferred;\r\n this.executeOperation(deferred, () => {\r\n this._closeEditCellCore(isError, oldEditRowIndex, withoutSaveEditData).always(result.resolve)\r\n })\r\n }\r\n return result.promise()\r\n },\r\n _closeEditCellCore(isError, oldEditRowIndex, withoutSaveEditData) {\r\n var dataController = this._dataController;\r\n var deferred = new Deferred;\r\n var promise = deferred.promise();\r\n if (this.isCellEditMode() && this.hasChanges()) {\r\n if (!withoutSaveEditData) {\r\n this.saveEditData().done(error => {\r\n if (!this.hasChanges()) {\r\n this.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 if (oldEditRowIndex >= 0) {\r\n var rowIndices = [oldEditRowIndex];\r\n this._resetEditRowKey();\r\n this._resetEditColumnName();\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 deferred.resolve();\r\n return promise\r\n },\r\n _resetModifiedClassCells: function(changes) {\r\n if (this.isBatchEditMode()) {\r\n var columnsCount = this._columnsController.getVisibleColumns().length;\r\n changes.forEach(_ref2 => {\r\n var {\r\n key: key\r\n } = _ref2;\r\n var rowIndex = this._dataController.getRowIndexByKey(key);\r\n if (-1 !== rowIndex) {\r\n for (var columnIndex = 0; columnIndex < columnsCount; columnIndex++) {\r\n this._rowsView._getCellElement(rowIndex, columnIndex).removeClass(CELL_MODIFIED_CLASS)\r\n }\r\n }\r\n })\r\n }\r\n },\r\n _prepareChange: function(options, value, text) {\r\n var $cellElement = $(options.cellElement);\r\n if (this.isBatchEditMode() && void 0 !== options.key) {\r\n this._applyModified($cellElement, options)\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _cancelSaving: function() {\r\n var dataController = this._dataController;\r\n if (this.isCellOrBatchEditMode()) {\r\n if (this.isBatchEditMode()) {\r\n this._resetEditIndices()\r\n }\r\n dataController.updateItems()\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n optionChanged: function(args) {\r\n var fullName = args.fullName;\r\n if (\"editing\" === args.name && fullName === EDITING_EDITCOLUMNNAME_OPTION_NAME) {\r\n this._handleEditColumnNameChange(args);\r\n args.handled = true\r\n } else {\r\n this.callBase(args)\r\n }\r\n },\r\n _editCellFromOptionChanged: function(columnIndex, oldColumnIndex, oldRowIndex) {\r\n var columns = this._columnsController.getVisibleColumns();\r\n if (columnIndex > -1) {\r\n deferRender(() => {\r\n this._repaintEditCell(columns[columnIndex], columns[oldColumnIndex], oldRowIndex)\r\n })\r\n }\r\n },\r\n _handleEditRowKeyChange: function(args) {\r\n if (this.isCellOrBatchEditMode()) {\r\n var columnIndex = this._getVisibleEditColumnIndex();\r\n var oldRowIndexCorrection = this._getEditRowIndexCorrection();\r\n var oldRowIndex = this._dataController.getRowIndexByKey(args.previousValue) + oldRowIndexCorrection;\r\n if (isDefined(args.value) && args.value !== args.previousValue) {\r\n var _this$_editCellFromOp;\r\n null === (_this$_editCellFromOp = this._editCellFromOptionChanged) || void 0 === _this$_editCellFromOp ? void 0 : _this$_editCellFromOp.call(this, columnIndex, columnIndex, oldRowIndex)\r\n }\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n deleteRow: function(rowIndex) {\r\n if (this.isCellEditMode() && 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(() => {\r\n rowIndex = this._dataController.getRowIndexByKey(rowKey);\r\n this._checkAndDeleteRow(rowIndex)\r\n })\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _checkAndDeleteRow: function(rowIndex) {\r\n if (this.isBatchEditMode()) {\r\n this._deleteRowCore(rowIndex)\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _refreshCore: function(isPageChanged) {\r\n var needResetIndexes = this.isBatchEditMode() || isPageChanged && \"virtual\" !== this.option(\"scrolling.mode\");\r\n if (this.isCellOrBatchEditMode()) {\r\n if (needResetIndexes) {\r\n this._resetEditColumnName();\r\n this._resetEditRowKey()\r\n }\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _allowRowAdding: function(params) {\r\n if (this.isBatchEditMode()) {\r\n return true\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _afterDeleteRow: function(rowIndex, oldEditRowIndex) {\r\n var dataController = this._dataController;\r\n if (this.isBatchEditMode()) {\r\n dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [oldEditRowIndex, rowIndex]\r\n });\r\n return (new Deferred).resolve()\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _updateEditRow: function(row, forceUpdateRow, isCustomSetCellValue) {\r\n if (this.isCellOrBatchEditMode()) {\r\n this._updateRowImmediately(row, forceUpdateRow, isCustomSetCellValue)\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _isDefaultButtonVisible: function(button, options) {\r\n if (this.isCellOrBatchEditMode()) {\r\n var isBatchMode = this.isBatchEditMode();\r\n switch (button.name) {\r\n case \"save\":\r\n case \"cancel\":\r\n case \"edit\":\r\n return false;\r\n case \"delete\":\r\n return this.callBase.apply(this, arguments) && (!isBatchMode || !options.row.removed);\r\n case \"undelete\":\r\n return isBatchMode && this.allowDeleting(options) && options.row.removed;\r\n default:\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _isRowDeleteAllowed: function() {\r\n var callBase = this.callBase.apply(this, arguments);\r\n return callBase || this.isBatchEditMode()\r\n },\r\n _beforeEndSaving: function(changes) {\r\n if (this.isCellEditMode()) {\r\n var _changes$;\r\n if (\"update\" !== (null === (_changes$ = changes[0]) || void 0 === _changes$ ? void 0 : _changes$.type)) {\r\n this.callBase.apply(this, arguments)\r\n }\r\n } else {\r\n if (this.isBatchEditMode()) {\r\n this._resetModifiedClassCells(changes)\r\n }\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n prepareEditButtons: function(headerPanel) {\r\n var editingOptions = this.option(\"editing\") || {};\r\n var buttonItems = this.callBase.apply(this, arguments);\r\n if ((editingOptions.allowUpdating || editingOptions.allowAdding || editingOptions.allowDeleting) && this.isBatchEditMode()) {\r\n buttonItems.push(this.prepareButtonItem(headerPanel, \"save\", \"saveEditData\", 21));\r\n buttonItems.push(this.prepareButtonItem(headerPanel, \"revert\", \"cancelEditData\", 22))\r\n }\r\n return buttonItems\r\n },\r\n _applyChange: function(options, params, forceUpdateRow) {\r\n var isUpdateInCellMode = this.isCellEditMode() && options.row && !options.row.isNewRow;\r\n var showEditorAlways = options.column.showEditorAlways;\r\n var isCustomSetCellValue = options.column.setCellValue !== options.column.defaultSetCellValue;\r\n var focusPreviousEditingCell = showEditorAlways && !forceUpdateRow && isUpdateInCellMode && this.hasEditData() && !this.isEditCell(options.rowIndex, options.columnIndex);\r\n if (focusPreviousEditingCell) {\r\n this._focusEditingCell();\r\n this._updateEditRow(options.row, true, isCustomSetCellValue);\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _applyChangeCore: function(options, forceUpdateRow) {\r\n var showEditorAlways = options.column.showEditorAlways;\r\n var isUpdateInCellMode = this.isCellEditMode() && options.row && !options.row.isNewRow;\r\n if (showEditorAlways && !forceUpdateRow) {\r\n if (isUpdateInCellMode) {\r\n this._setEditRowKey(options.row.key, true);\r\n this._setEditColumnNameByIndex(options.columnIndex, true);\r\n return this.saveEditData()\r\n } else if (this.isBatchEditMode()) {\r\n forceUpdateRow = this._needUpdateRow(options.column);\r\n return this.callBase(options, forceUpdateRow)\r\n }\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _processDataItemCore: function(item, _ref3) {\r\n var {\r\n data: data,\r\n type: type\r\n } = _ref3;\r\n if (this.isBatchEditMode() && type === DATA_EDIT_DATA_REMOVE_TYPE) {\r\n item.data = createObjectWithChanges(item.data, data)\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _processRemoveCore: function(changes, editIndex, processIfBatch) {\r\n if (this.isBatchEditMode() && !processIfBatch) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _processRemoveIfError: function() {\r\n if (this.isBatchEditMode()) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n },\r\n views: {\r\n rowsView: {\r\n _createTable: function() {\r\n var $table = this.callBase.apply(this, arguments);\r\n var editingController = this._editingController;\r\n if (editingController.isCellOrBatchEditMode() && this.option(\"editing.allowUpdating\")) {\r\n eventsEngine.on($table, addNamespace(holdEvent.name, \"dxDataGridRowsView\"), \"td:not(.\" + EDITOR_CELL_CLASS + \")\", this.createAction(() => {\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 isRowRemoved = !!row.removed;\r\n if (editingController.isBatchEditMode()) {\r\n isRowRemoved && $row.addClass(ROW_REMOVED)\r\n }\r\n }\r\n return $row\r\n }\r\n },\r\n headerPanel: {\r\n isVisible: function() {\r\n var editingOptions = this.getController(\"editing\").option(\"editing\");\r\n return this.callBase() || editingOptions && (editingOptions.allowUpdating || editingOptions.allowDeleting) && editingOptions.mode === EDIT_MODE_BATCH\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.sorting.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport sortingMixin from \"../grid_core/ui.grid_core.sorting_mixin\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n addNamespace,\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nvar COLUMN_HEADERS_VIEW_NAMESPACE = \"dxDataGridColumnHeadersView\";\r\nvar ColumnHeadersViewSortingExtender = extend({}, sortingMixin, {\r\n _createRow(row) {\r\n var $row = this.callBase(row);\r\n if (\"header\" === row.rowType) {\r\n eventsEngine.on($row, addNamespace(clickEventName, COLUMN_HEADERS_VIEW_NAMESPACE), \"td\", this.createAction(e => {\r\n this._processHeaderAction(e.event, $row)\r\n }))\r\n }\r\n return $row\r\n },\r\n _processHeaderAction: function(event, $row) {\r\n if ($(event.currentTarget).parent().get(0) !== $row.get(0)) {\r\n return\r\n }\r\n var that = this;\r\n var keyName = null;\r\n var $cellElementFromEvent = $(event.currentTarget);\r\n var rowIndex = $cellElementFromEvent.parent().index();\r\n var columnIndex = -1;\r\n [].slice.call(that.getCellElements(rowIndex)).some(($cellElement, index) => {\r\n if ($cellElement === $cellElementFromEvent.get(0)) {\r\n columnIndex = index;\r\n return true\r\n }\r\n });\r\n var visibleColumns = that._columnsController.getVisibleColumns(rowIndex);\r\n var column = visibleColumns[columnIndex];\r\n var editingController = that.getController(\"editing\");\r\n var editingMode = that.option(\"editing.mode\");\r\n var isCellEditing = editingController && editingController.isEditing() && (\"batch\" === editingMode || \"cell\" === editingMode);\r\n if (isCellEditing || !that._isSortableElement($(event.target))) {\r\n return\r\n }\r\n if (column && !isDefined(column.groupIndex) && !column.command) {\r\n if (event.shiftKey) {\r\n keyName = \"shift\"\r\n } else if (isCommandKeyPressed(event)) {\r\n keyName = \"ctrl\"\r\n }\r\n setTimeout(() => {\r\n that._columnsController.changeSortOrder(column.index, keyName)\r\n })\r\n }\r\n },\r\n _renderCellContent($cell, options) {\r\n var column = options.column;\r\n if (!column.command && \"header\" === options.rowType) {\r\n this._applyColumnState({\r\n name: \"sort\",\r\n rootElement: $cell,\r\n column: column,\r\n showColumnLines: this.option(\"showColumnLines\")\r\n })\r\n }\r\n this.callBase($cell, options)\r\n },\r\n _columnOptionChanged(e) {\r\n var changeTypes = e.changeTypes;\r\n if (1 === changeTypes.length && changeTypes.sorting) {\r\n this._updateIndicators(\"sort\");\r\n return\r\n }\r\n this.callBase(e)\r\n },\r\n optionChanged(args) {\r\n switch (args.name) {\r\n case \"sorting\":\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 HeaderPanelSortingExtender = extend({}, sortingMixin, {\r\n _createGroupPanelItem($rootElement, groupColumn) {\r\n var that = this;\r\n var $item = that.callBase(...arguments);\r\n eventsEngine.on($item, addNamespace(clickEventName, \"dxDataGridHeaderPanel\"), that.createAction(() => {\r\n that._processGroupItemAction(groupColumn.index)\r\n }));\r\n that._applyColumnState({\r\n name: \"sort\",\r\n rootElement: $item,\r\n column: {\r\n alignment: that.option(\"rtlEnabled\") ? \"right\" : \"left\",\r\n allowSorting: groupColumn.allowSorting,\r\n sortOrder: \"desc\" === groupColumn.sortOrder ? \"desc\" : \"asc\"\r\n },\r\n showColumnLines: true\r\n });\r\n return $item\r\n },\r\n _processGroupItemAction(groupColumnIndex) {\r\n setTimeout(() => this.getController(\"columns\").changeSortOrder(groupColumnIndex))\r\n },\r\n optionChanged(args) {\r\n switch (args.name) {\r\n case \"sorting\":\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\nexport var sortingModule = {\r\n defaultOptions: () => ({\r\n sorting: {\r\n mode: \"single\",\r\n ascendingText: messageLocalization.format(\"dxDataGrid-sortingAscendingText\"),\r\n descendingText: messageLocalization.format(\"dxDataGrid-sortingDescendingText\"),\r\n clearText: messageLocalization.format(\"dxDataGrid-sortingClearText\"),\r\n showSortIndexes: true\r\n }\r\n }),\r\n extenders: {\r\n views: {\r\n columnHeadersView: ColumnHeadersViewSortingExtender,\r\n headerPanel: HeaderPanelSortingExtender\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/grid_pager.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Component from \"./component\";\r\nexport class GridPagerWrapper extends Component {\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"pageIndex\":\r\n var pageIndexChanged = this.option(\"pageIndexChanged\");\r\n if (pageIndexChanged) {\r\n pageIndexChanged(args.value)\r\n }\r\n break;\r\n case \"pageSize\":\r\n var pageSizeChanged = this.option(\"pageSizeChanged\");\r\n if (pageSizeChanged) {\r\n pageSizeChanged(args.value)\r\n }\r\n }\r\n super._optionChanged(args)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/utils/get_computed_style.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport default function getElementComputedStyle(el) {\r\n var _window$getComputedSt, _window;\r\n return el ? null === (_window$getComputedSt = (_window = window).getComputedStyle) || void 0 === _window$getComputedSt ? void 0 : _window$getComputedSt.call(_window, el) : null\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/utils/type_conversion.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport function toNumber(attribute) {\r\n return attribute ? Number(attribute.replace(\"px\", \"\")) : 0\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/utils/get_element_width.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport getElementComputedStyle from \"../../../utils/get_computed_style\";\r\nimport {\r\n toNumber\r\n} from \"../../../utils/type_conversion\";\r\nexport function getElementStyle(name, element) {\r\n var computedStyle = getElementComputedStyle(element) || {};\r\n return toNumber(computedStyle[name])\r\n}\r\nexport function getElementWidth(element) {\r\n return getElementStyle(\"width\", element)\r\n}\r\nexport function getElementMinWidth(element) {\r\n return getElementStyle(\"minWidth\", element)\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/resizable_container.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"contentTemplate\", \"pagerProps\"];\r\nimport {\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoComponent\r\n} from \"@devextreme/vdom\";\r\nimport resizeCallbacks from \"../../../core/utils/resize_callbacks\";\r\nimport {\r\n getElementWidth,\r\n getElementStyle\r\n} from \"./utils/get_element_width\";\r\nimport {\r\n isDefined\r\n} from \"../../../core/utils/type\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n infoTextRef: infoTextRef,\r\n infoTextVisible: infoTextVisible,\r\n isLargeDisplayMode: isLargeDisplayMode,\r\n pageSizesRef: pageSizesRef,\r\n pagesRef: pagesRef,\r\n parentRef: parentRef,\r\n props: {\r\n contentTemplate: Content,\r\n pagerProps: pagerProps\r\n },\r\n restAttributes: restAttributes\r\n } = _ref;\r\n return Content(_extends({\r\n rootElementRef: parentRef,\r\n pageSizesRef: pageSizesRef,\r\n infoTextRef: infoTextRef,\r\n pagesRef: pagesRef,\r\n infoTextVisible: infoTextVisible,\r\n isLargeDisplayMode: isLargeDisplayMode\r\n }, _extends({}, pagerProps, restAttributes)))\r\n};\r\nexport function calculateAdaptivityProps(_ref2) {\r\n var {\r\n info: infoWidth,\r\n pageSizes: pageSizesWidth,\r\n pages: pagesWidth,\r\n parent: parentWidth\r\n } = _ref2;\r\n var minimalWidth = pageSizesWidth + pagesWidth + infoWidth;\r\n var infoTextVisible = parentWidth - minimalWidth > 0;\r\n var isLargeDisplayMode = parentWidth - (pageSizesWidth + pagesWidth) > 0;\r\n return {\r\n infoTextVisible: infoTextVisible,\r\n isLargeDisplayMode: isLargeDisplayMode\r\n }\r\n}\r\n\r\nfunction getElementsWidth(_ref3) {\r\n var {\r\n info: info,\r\n pageSizes: pageSizes,\r\n pages: pages,\r\n parent: parent\r\n } = _ref3;\r\n var parentWidth = getElementWidth(parent);\r\n var pageSizesWidth = getElementWidth(pageSizes);\r\n var infoWidth = getElementWidth(info);\r\n var pagesHtmlWidth = getElementWidth(pages);\r\n return {\r\n parent: parentWidth,\r\n pageSizes: pageSizesWidth,\r\n info: infoWidth + getElementStyle(\"marginLeft\", info) + getElementStyle(\"marginRight\", info),\r\n pages: pagesHtmlWidth\r\n }\r\n}\r\nexport var ResizableContainerProps = {};\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class ResizableContainer extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this._currentState = null;\r\n this.parentRef = infernoCreateRef();\r\n this.pageSizesRef = infernoCreateRef();\r\n this.infoTextRef = infernoCreateRef();\r\n this.pagesRef = infernoCreateRef();\r\n this.state = {\r\n infoTextVisible: true,\r\n isLargeDisplayMode: true\r\n };\r\n this.subscribeToResize = this.subscribeToResize.bind(this);\r\n this.effectUpdateChildProps = this.effectUpdateChildProps.bind(this);\r\n this.updateAdaptivityProps = this.updateAdaptivityProps.bind(this)\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.subscribeToResize, [this.infoTextVisible, this.isLargeDisplayMode]), new InfernoEffect(this.effectUpdateChildProps, [this.infoTextVisible, this.isLargeDisplayMode, this.props.pagerProps, this.props.contentTemplate])]\r\n }\r\n updateEffects() {\r\n var _this$_effects$, _this$_effects$2;\r\n null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.infoTextVisible, this.isLargeDisplayMode]);\r\n null === (_this$_effects$2 = this._effects[1]) || void 0 === _this$_effects$2 ? void 0 : _this$_effects$2.update([this.infoTextVisible, this.isLargeDisplayMode, this.props.pagerProps, this.props.contentTemplate])\r\n }\r\n get infoTextVisible() {\r\n var state = this._currentState || this.state;\r\n return state.infoTextVisible\r\n }\r\n set_infoTextVisible(value) {\r\n this.setState(state => {\r\n this._currentState = state;\r\n var newValue = value();\r\n this._currentState = null;\r\n return {\r\n infoTextVisible: newValue\r\n }\r\n })\r\n }\r\n get isLargeDisplayMode() {\r\n var state = this._currentState || this.state;\r\n return state.isLargeDisplayMode\r\n }\r\n set_isLargeDisplayMode(value) {\r\n this.setState(state => {\r\n this._currentState = state;\r\n var newValue = value();\r\n this._currentState = null;\r\n return {\r\n isLargeDisplayMode: newValue\r\n }\r\n })\r\n }\r\n subscribeToResize() {\r\n var callback = () => {\r\n this.updateAdaptivityProps()\r\n };\r\n resizeCallbacks.add(callback);\r\n return () => {\r\n resizeCallbacks.remove(callback)\r\n }\r\n }\r\n effectUpdateChildProps() {\r\n var parentWidth = this.parentRef.current ? getElementWidth(this.parentRef.current) : 0;\r\n if (parentWidth > 0) {\r\n this.updateAdaptivityProps()\r\n }\r\n }\r\n updateAdaptivityProps() {\r\n var currentElementsWidth = getElementsWidth({\r\n parent: this.parentRef.current,\r\n pageSizes: this.pageSizesRef.current,\r\n info: this.infoTextRef.current,\r\n pages: this.pagesRef.current\r\n });\r\n if (isDefined(this.actualAdaptivityProps) && (this.actualAdaptivityProps.infoTextVisible !== this.infoTextVisible || this.actualAdaptivityProps.isLargeDisplayMode !== this.isLargeDisplayMode)) {\r\n return\r\n }\r\n var isEmpty = !isDefined(this.elementsWidth);\r\n if (isEmpty) {\r\n this.elementsWidth = {}\r\n }\r\n if (isEmpty || this.isLargeDisplayMode) {\r\n this.elementsWidth.pageSizes = currentElementsWidth.pageSizes;\r\n this.elementsWidth.pages = currentElementsWidth.pages\r\n }\r\n if (isEmpty || this.infoTextVisible) {\r\n this.elementsWidth.info = currentElementsWidth.info\r\n }\r\n this.actualAdaptivityProps = calculateAdaptivityProps(_extends({\r\n parent: currentElementsWidth.parent\r\n }, this.elementsWidth));\r\n this.set_infoTextVisible(() => this.actualAdaptivityProps.infoTextVisible);\r\n this.set_isLargeDisplayMode(() => this.actualAdaptivityProps.isLargeDisplayMode)\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n contentTemplate: getTemplate(props.contentTemplate)\r\n }),\r\n infoTextVisible: this.infoTextVisible,\r\n isLargeDisplayMode: this.isLargeDisplayMode,\r\n parentRef: this.parentRef,\r\n pageSizesRef: this.pageSizesRef,\r\n infoTextRef: this.infoTextRef,\r\n pagesRef: this.pagesRef,\r\n updateAdaptivityProps: this.updateAdaptivityProps,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nResizableContainer.defaultProps = _extends({}, ResizableContainerProps);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/common/pager_props.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var PagerProps = {\r\n gridCompatibility: true,\r\n showInfo: false,\r\n displayMode: \"adaptive\",\r\n maxPagesCount: 10,\r\n pageCount: 10,\r\n visible: true,\r\n hasKnownLastPage: true,\r\n pagesNavigatorVisible: \"auto\",\r\n showPageSizes: true,\r\n pageSizes: [5, 10],\r\n showNavigationButtons: false,\r\n totalCount: 0,\r\n defaultPageIndex: 1,\r\n defaultPageSize: 5\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/info.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"defaultPageIndex\", \"infoText\", \"pageCount\", \"pageIndex\", \"pageIndexChange\", \"rootElementRef\", \"totalCount\"];\r\nimport {\r\n createVNode\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/vdom\";\r\nimport {\r\n format\r\n} from \"../../../core/utils/string\";\r\nimport messageLocalization from \"../../../localization/message\";\r\nimport {\r\n PagerProps\r\n} from \"./common/pager_props\";\r\nexport var PAGER_INFO_CLASS = \"dx-info\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n rootElementRef: rootElementRef\r\n },\r\n text: text\r\n } = _ref;\r\n return createVNode(1, \"div\", PAGER_INFO_CLASS, text, 0, null, null, rootElementRef)\r\n};\r\nexport var InfoTextProps = {};\r\nvar InfoTextPropsType = {\r\n pageCount: PagerProps.pageCount,\r\n totalCount: PagerProps.totalCount,\r\n defaultPageIndex: PagerProps.pageIndex,\r\n pageIndexChange: () => {}\r\n};\r\nexport class InfoText extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this._currentState = null;\r\n this.state = {\r\n pageIndex: void 0 !== this.props.pageIndex ? this.props.pageIndex : this.props.defaultPageIndex\r\n }\r\n }\r\n get __state_pageIndex() {\r\n var state = this._currentState || this.state;\r\n return void 0 !== this.props.pageIndex ? this.props.pageIndex : state.pageIndex\r\n }\r\n set_pageIndex(value) {\r\n this.setState(state => {\r\n this._currentState = state;\r\n var newValue = value();\r\n this.props.pageIndexChange(newValue);\r\n this._currentState = null;\r\n return {\r\n pageIndex: newValue\r\n }\r\n })\r\n }\r\n get infoText() {\r\n return this.props.infoText || messageLocalization.getFormatter(\"dxPager-infoText\")()\r\n }\r\n get text() {\r\n var {\r\n pageCount: pageCount,\r\n totalCount: totalCount\r\n } = this.props;\r\n return format(this.infoText, (this.__state_pageIndex + 1).toString(), pageCount.toString(), totalCount.toString())\r\n }\r\n get restAttributes() {\r\n var _this$props$pageIndex = _extends({}, this.props, {\r\n pageIndex: this.__state_pageIndex\r\n }),\r\n restProps = _objectWithoutPropertiesLoose(_this$props$pageIndex, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n pageIndex: this.__state_pageIndex\r\n }),\r\n infoText: this.infoText,\r\n text: this.text,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nInfoText.defaultProps = _extends({}, InfoTextPropsType);\r\n","/**\r\n * DevExtreme (esm/renovation/utils/subscribe_to_event.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport * as clickEvent from \"../../events/click\";\r\nexport function subscribeToEvent(eventName) {\r\n return (element, handler) => {\r\n if (handler && element) {\r\n eventsEngine.on(element, eventName, handler);\r\n return () => eventsEngine.off(element, eventName, handler)\r\n }\r\n return\r\n }\r\n}\r\nexport var subscribeToClickEvent = subscribeToEvent(clickEvent.name);\r\nexport var subscribeToScrollEvent = subscribeToEvent(\"scroll\");\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/common/keyboard_action_context.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n createContext\r\n} from \"@devextreme/vdom\";\r\nexport var KeyboardActionContext = createContext(void 0);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/common/light_button.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"children\", \"className\", \"label\", \"onClick\"];\r\nimport {\r\n createVNode\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoComponent\r\n} from \"@devextreme/vdom\";\r\nimport {\r\n subscribeToClickEvent\r\n} from \"../../../utils/subscribe_to_event\";\r\nimport {\r\n KeyboardActionContext\r\n} from \"./keyboard_action_context\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n children: children,\r\n className: className,\r\n label: label\r\n },\r\n widgetRef: widgetRef\r\n } = _ref;\r\n return createVNode(1, \"div\", className, children, 0, {\r\n tabIndex: 0,\r\n role: \"button\",\r\n \"aria-label\": label\r\n }, null, widgetRef)\r\n};\r\nexport var LightButtonProps = {\r\n className: \"\",\r\n label: \"\"\r\n};\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class LightButton extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.widgetRef = infernoCreateRef();\r\n this.keyboardEffect = this.keyboardEffect.bind(this);\r\n this.subscribeToClick = this.subscribeToClick.bind(this)\r\n }\r\n get keyboardContext() {\r\n if (\"KeyboardActionContext\" in this.context) {\r\n return this.context.KeyboardActionContext\r\n }\r\n return KeyboardActionContext\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.keyboardEffect, [this.keyboardContext, this.props.onClick]), new InfernoEffect(this.subscribeToClick, [this.props.onClick])]\r\n }\r\n updateEffects() {\r\n var _this$_effects$, _this$_effects$2;\r\n null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.keyboardContext, this.props.onClick]);\r\n null === (_this$_effects$2 = this._effects[1]) || void 0 === _this$_effects$2 ? void 0 : _this$_effects$2.update([this.props.onClick])\r\n }\r\n keyboardEffect() {\r\n return this.keyboardContext.registerKeyboardAction(this.widgetRef.current, this.props.onClick)\r\n }\r\n subscribeToClick() {\r\n return subscribeToClickEvent(this.widgetRef.current, this.props.onClick)\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n widgetRef: this.widgetRef,\r\n keyboardContext: this.keyboardContext,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nLightButton.defaultProps = _extends({}, LightButtonProps);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/common/consts.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var PAGER_CLASS = \"dx-pager\";\r\nexport var LIGHT_MODE_CLASS = \"dx-light-mode\";\r\nexport var PAGER_PAGES_CLASS = \"dx-pages\";\r\nexport var PAGER_PAGE_INDEXES_CLASS = \"dx-page-indexes\";\r\nexport var PAGER_PAGE_CLASS = \"dx-page\";\r\nexport var PAGER_SELECTION_CLASS = \"dx-selection\";\r\nexport var PAGER_PAGE_SIZE_CLASS = \"dx-page-size\";\r\nexport var PAGER_PAGE_SIZES_CLASS = \"dx-page-sizes\";\r\nexport var PAGER_SELECTED_PAGE_SIZE_CLASS = \"\".concat(PAGER_PAGE_SIZE_CLASS, \" \").concat(PAGER_SELECTION_CLASS);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/pages/page.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"className\", \"index\", \"onClick\", \"selected\"];\r\nimport {\r\n createComponentVNode\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/vdom\";\r\nimport {\r\n LightButton\r\n} from \"../common/light_button\";\r\nimport {\r\n PAGER_PAGE_CLASS,\r\n PAGER_SELECTION_CLASS\r\n} from \"../common/consts\";\r\nimport {\r\n combineClasses\r\n} from \"../../../utils/combine_classes\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n className: className,\r\n label: label,\r\n props: {\r\n onClick: onClick\r\n },\r\n value: value\r\n } = _ref;\r\n return createComponentVNode(2, LightButton, {\r\n className: className,\r\n label: label,\r\n onClick: onClick,\r\n children: value\r\n })\r\n};\r\nexport var PageProps = {\r\n index: 0,\r\n selected: false,\r\n className: PAGER_PAGE_CLASS\r\n};\r\nexport class Page extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get label() {\r\n return \"Page \".concat(this.value)\r\n }\r\n get value() {\r\n return this.props.index + 1\r\n }\r\n get className() {\r\n var {\r\n selected: selected\r\n } = this.props;\r\n return combineClasses({\r\n [\"\".concat(this.props.className)]: !!this.props.className,\r\n [PAGER_SELECTION_CLASS]: !!selected\r\n })\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n label: this.label,\r\n value: this.value,\r\n className: this.className,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nPage.defaultProps = _extends({}, PageProps);\r\n","/**\r\n * DevExtreme (esm/renovation/common/config_context.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n createContext\r\n} from \"@devextreme/vdom\";\r\nexport var ConfigContext = createContext(void 0);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/pages/large.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"pageIndexes\"],\r\n _excluded2 = [\"defaultPageIndex\", \"maxPagesCount\", \"pageCount\", \"pageIndex\", \"pageIndexChange\"];\r\nimport {\r\n createVNode,\r\n createFragment,\r\n createComponentVNode\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/vdom\";\r\nimport {\r\n Page\r\n} from \"./page\";\r\nimport {\r\n PagerProps\r\n} from \"../common/pager_props\";\r\nimport {\r\n ConfigContext\r\n} from \"../../../common/config_context\";\r\nvar PAGER_PAGE_SEPARATOR_CLASS = \"dx-separator\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n pages: pages\r\n } = _ref;\r\n var PagesMarkup = pages.map(_ref2 => {\r\n var {\r\n key: key,\r\n pageProps: pageProps\r\n } = _ref2;\r\n return pageProps ? createComponentVNode(2, Page, {\r\n index: pageProps.index,\r\n selected: pageProps.selected,\r\n onClick: pageProps.onClick\r\n }, key) : createVNode(1, \"div\", PAGER_PAGE_SEPARATOR_CLASS, \". . .\", 16, null, key)\r\n });\r\n return createFragment(PagesMarkup, 0)\r\n};\r\nvar PAGES_LIMITER = 4;\r\n\r\nfunction getDelimiterType(startIndex, slidingWindowSize, pageCount) {\r\n if (1 === startIndex) {\r\n return \"high\"\r\n }\r\n if (startIndex + slidingWindowSize === pageCount - 1) {\r\n return \"low\"\r\n }\r\n return \"both\"\r\n}\r\n\r\nfunction createPageIndexesBySlidingWindowIndexes(slidingWindowIndexes, pageCount, delimiter) {\r\n var pageIndexes = [];\r\n var indexesForReuse = [];\r\n switch (delimiter) {\r\n case \"none\":\r\n pageIndexes = [...slidingWindowIndexes];\r\n break;\r\n case \"both\":\r\n pageIndexes = [0, \"low\", ...slidingWindowIndexes, \"high\", pageCount - 1];\r\n indexesForReuse = slidingWindowIndexes.slice(1, -1);\r\n break;\r\n case \"high\":\r\n pageIndexes = [0, ...slidingWindowIndexes, \"high\", pageCount - 1];\r\n indexesForReuse = slidingWindowIndexes.slice(0, -1);\r\n break;\r\n case \"low\":\r\n pageIndexes = [0, \"low\", ...slidingWindowIndexes, pageCount - 1];\r\n indexesForReuse = slidingWindowIndexes.slice(1)\r\n }\r\n return {\r\n slidingWindowIndexes: slidingWindowIndexes,\r\n indexesForReuse: indexesForReuse,\r\n pageIndexes: pageIndexes\r\n }\r\n}\r\n\r\nfunction createPageIndexes(startIndex, slidingWindowSize, pageCount, delimiter) {\r\n var slidingWindowIndexes = [];\r\n for (var i = 0; i < slidingWindowSize; i += 1) {\r\n slidingWindowIndexes.push(i + startIndex)\r\n }\r\n return createPageIndexesBySlidingWindowIndexes(slidingWindowIndexes, pageCount, delimiter)\r\n}\r\nvar PagesLargePropsType = {\r\n maxPagesCount: PagerProps.maxPagesCount,\r\n pageCount: PagerProps.pageCount,\r\n defaultPageIndex: PagerProps.pageIndex\r\n};\r\nexport class PagesLarge extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this._currentState = null;\r\n this.state = {\r\n pageIndex: void 0 !== this.props.pageIndex ? this.props.pageIndex : this.props.defaultPageIndex\r\n };\r\n this.canReuseSlidingWindow = this.canReuseSlidingWindow.bind(this);\r\n this.generatePageIndexes = this.generatePageIndexes.bind(this);\r\n this.isSlidingWindowMode = this.isSlidingWindowMode.bind(this);\r\n this.onPageClick = this.onPageClick.bind(this)\r\n }\r\n get config() {\r\n if (\"ConfigContext\" in this.context) {\r\n return this.context.ConfigContext\r\n }\r\n return ConfigContext\r\n }\r\n get __state_pageIndex() {\r\n var state = this._currentState || this.state;\r\n return void 0 !== this.props.pageIndex ? this.props.pageIndex : state.pageIndex\r\n }\r\n set_pageIndex(value) {\r\n this.setState(state => {\r\n var _this$props$pageIndex, _this$props;\r\n this._currentState = state;\r\n var newValue = value();\r\n null === (_this$props$pageIndex = (_this$props = this.props).pageIndexChange) || void 0 === _this$props$pageIndex ? void 0 : _this$props$pageIndex.call(_this$props, newValue);\r\n this._currentState = null;\r\n return {\r\n pageIndex: newValue\r\n }\r\n })\r\n }\r\n get slidingWindowState() {\r\n var slidingWindowState = this.slidingWindowStateHolder;\r\n if (!slidingWindowState) {\r\n return {\r\n indexesForReuse: [],\r\n slidingWindowIndexes: []\r\n }\r\n }\r\n return slidingWindowState\r\n }\r\n canReuseSlidingWindow(currentPageCount, pageIndex) {\r\n var {\r\n indexesForReuse: indexesForReuse\r\n } = this.slidingWindowState;\r\n var currentPageNotExistInIndexes = -1 === indexesForReuse.indexOf(currentPageCount);\r\n var pageIndexExistInIndexes = -1 !== indexesForReuse.indexOf(pageIndex);\r\n return currentPageNotExistInIndexes && pageIndexExistInIndexes\r\n }\r\n generatePageIndexes() {\r\n var {\r\n pageCount: pageCount\r\n } = this.props;\r\n var startIndex = 0;\r\n var {\r\n slidingWindowIndexes: slidingWindowIndexes\r\n } = this.slidingWindowState;\r\n if (this.__state_pageIndex === slidingWindowIndexes[0]) {\r\n startIndex = this.__state_pageIndex - 1\r\n } else if (this.__state_pageIndex === slidingWindowIndexes[slidingWindowIndexes.length - 1]) {\r\n startIndex = this.__state_pageIndex + 2 - PAGES_LIMITER\r\n } else if (this.__state_pageIndex < PAGES_LIMITER) {\r\n startIndex = 1\r\n } else if (this.__state_pageIndex >= pageCount - PAGES_LIMITER) {\r\n startIndex = pageCount - PAGES_LIMITER - 1\r\n } else {\r\n startIndex = this.__state_pageIndex - 1\r\n }\r\n var slidingWindowSize = PAGES_LIMITER;\r\n var delimiter = getDelimiterType(startIndex, slidingWindowSize, pageCount);\r\n var _createPageIndexes = createPageIndexes(startIndex, slidingWindowSize, pageCount, delimiter),\r\n {\r\n pageIndexes: pageIndexes\r\n } = _createPageIndexes,\r\n slidingWindowState = _objectWithoutPropertiesLoose(_createPageIndexes, _excluded);\r\n this.slidingWindowStateHolder = slidingWindowState;\r\n return pageIndexes\r\n }\r\n isSlidingWindowMode() {\r\n var {\r\n maxPagesCount: maxPagesCount,\r\n pageCount: pageCount\r\n } = this.props;\r\n return pageCount <= PAGES_LIMITER || pageCount <= maxPagesCount\r\n }\r\n onPageClick(pageIndex) {\r\n var _this$props$pageIndex2, _this$props2;\r\n null === (_this$props$pageIndex2 = (_this$props2 = this.props).pageIndexChange) || void 0 === _this$props$pageIndex2 ? void 0 : _this$props$pageIndex2.call(_this$props2, pageIndex)\r\n }\r\n get pageIndexes() {\r\n var {\r\n pageCount: pageCount\r\n } = this.props;\r\n if (this.isSlidingWindowMode()) {\r\n return createPageIndexes(0, pageCount, pageCount, \"none\").pageIndexes\r\n }\r\n if (this.canReuseSlidingWindow(pageCount, this.__state_pageIndex)) {\r\n var {\r\n slidingWindowIndexes: slidingWindowIndexes\r\n } = this.slidingWindowState;\r\n var delimiter = getDelimiterType(slidingWindowIndexes[0], PAGES_LIMITER, pageCount);\r\n return createPageIndexesBySlidingWindowIndexes(slidingWindowIndexes, pageCount, delimiter).pageIndexes\r\n }\r\n return this.generatePageIndexes()\r\n }\r\n get pages() {\r\n var _this$config;\r\n var createPage = index => {\r\n var pagerProps = \"low\" === index || \"high\" === index ? null : {\r\n index: index,\r\n onClick: () => this.onPageClick(index),\r\n selected: this.__state_pageIndex === index\r\n };\r\n return {\r\n key: index.toString(),\r\n pageProps: pagerProps\r\n }\r\n };\r\n var rtlPageIndexes = null !== (_this$config = this.config) && void 0 !== _this$config && _this$config.rtlEnabled ? [...this.pageIndexes].reverse() : this.pageIndexes;\r\n return rtlPageIndexes.map(index => createPage(index))\r\n }\r\n get restAttributes() {\r\n var _this$props$pageIndex3 = _extends({}, this.props, {\r\n pageIndex: this.__state_pageIndex\r\n }),\r\n restProps = _objectWithoutPropertiesLoose(_this$props$pageIndex3, _excluded2);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n pageIndex: this.__state_pageIndex\r\n }),\r\n config: this.config,\r\n pageIndexes: this.pageIndexes,\r\n pages: this.pages,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nPagesLarge.defaultProps = _extends({}, PagesLargePropsType);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/base_props.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var BaseWidgetProps = {\r\n activeStateEnabled: false,\r\n disabled: false,\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false,\r\n tabIndex: 0,\r\n visible: true\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/common/config_provider.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"children\", \"rtlEnabled\"];\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/vdom\";\r\nexport var viewFunction = viewModel => viewModel.props.children;\r\nexport var ConfigProviderProps = {};\r\nexport class ConfigProvider extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n getChildContext() {\r\n return _extends({}, this.context, {\r\n ConfigContext: this.config\r\n })\r\n }\r\n get config() {\r\n return {\r\n rtlEnabled: this.props.rtlEnabled\r\n }\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n config: this.config,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nConfigProvider.defaultProps = _extends({}, ConfigProviderProps);\r\n","/**\r\n * DevExtreme (esm/renovation/utils/resolve_rtl.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport globalConfig from \"../../core/config\";\r\nexport function resolveRtlEnabled(rtlProp, config) {\r\n if (void 0 !== rtlProp) {\r\n return rtlProp\r\n }\r\n if (void 0 !== (null === config || void 0 === config ? void 0 : config.rtlEnabled)) {\r\n return config.rtlEnabled\r\n }\r\n return globalConfig().rtlEnabled\r\n}\r\nexport function resolveRtlEnabledDefinition(rtlProp, config) {\r\n var isPropDefined = isDefined(rtlProp);\r\n var onlyGlobalDefined = isDefined(globalConfig().rtlEnabled) && !isPropDefined && !isDefined(null === config || void 0 === config ? void 0 : config.rtlEnabled);\r\n return isPropDefined && rtlProp !== (null === config || void 0 === config ? void 0 : config.rtlEnabled) || onlyGlobalDefined\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/widget.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"_feedbackHideTimeout\", \"_feedbackShowTimeout\", \"accessKey\", \"activeStateEnabled\", \"activeStateUnit\", \"aria\", \"children\", \"className\", \"classes\", \"disabled\", \"focusStateEnabled\", \"height\", \"hint\", \"hoverStateEnabled\", \"name\", \"onActive\", \"onClick\", \"onContentReady\", \"onDimensionChanged\", \"onFocusIn\", \"onFocusOut\", \"onHoverEnd\", \"onHoverStart\", \"onInactive\", \"onKeyDown\", \"onKeyboardHandled\", \"onVisibilityChange\", \"rootElementRef\", \"rtlEnabled\", \"tabIndex\", \"visible\", \"width\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoWrapperComponent,\r\n normalizeStyles\r\n} from \"@devextreme/vdom\";\r\nimport \"../../../events/click\";\r\nimport \"../../../events/hover\";\r\nimport {\r\n active,\r\n dxClick,\r\n focus,\r\n hover,\r\n keyboard,\r\n resize,\r\n visibility\r\n} from \"../../../events/short\";\r\nimport {\r\n combineClasses\r\n} from \"../../utils/combine_classes\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n focusable\r\n} from \"../../../ui/widget/selectors\";\r\nimport {\r\n normalizeStyleProp\r\n} from \"../../../core/utils/style\";\r\nimport {\r\n BaseWidgetProps\r\n} from \"./base_props\";\r\nimport {\r\n ConfigContext\r\n} from \"../../common/config_context\";\r\nimport {\r\n ConfigProvider\r\n} from \"../../common/config_provider\";\r\nimport {\r\n resolveRtlEnabled,\r\n resolveRtlEnabledDefinition\r\n} from \"../../utils/resolve_rtl\";\r\nimport resizeCallbacks from \"../../../core/utils/resize_callbacks\";\r\nvar getAria = args => Object.keys(args).reduce((r, key) => {\r\n if (args[key]) {\r\n return _extends({}, r, {\r\n [\"role\" === key || \"id\" === key ? key : \"aria-\".concat(key)]: String(args[key])\r\n })\r\n }\r\n return r\r\n}, {});\r\nvar getCssClasses = model => {\r\n var isFocusable = !!model.focusStateEnabled && !model.disabled;\r\n var isHoverable = !!model.hoverStateEnabled && !model.disabled;\r\n var canBeActive = !!model.activeStateEnabled && !model.disabled;\r\n var classesMap = {\r\n \"dx-widget\": true,\r\n [String(model.classes)]: !!model.classes,\r\n [String(model.className)]: !!model.className,\r\n \"dx-state-disabled\": !!model.disabled,\r\n \"dx-state-invisible\": !model.visible,\r\n \"dx-state-focused\": !!model.focused && isFocusable,\r\n \"dx-state-active\": !!model.active && canBeActive,\r\n \"dx-state-hover\": !!model.hovered && isHoverable && !model.active,\r\n \"dx-rtl\": !!model.rtlEnabled,\r\n \"dx-visibility-change-handler\": !!model.onVisibilityChange\r\n };\r\n return combineClasses(classesMap)\r\n};\r\nexport var viewFunction = viewModel => {\r\n var widget = normalizeProps(createVNode(1, \"div\", viewModel.cssClasses, viewModel.props.children, 0, _extends({}, viewModel.attributes, {\r\n tabIndex: viewModel.tabIndex,\r\n title: viewModel.props.hint,\r\n hidden: !viewModel.props.visible,\r\n style: normalizeStyles(viewModel.styles)\r\n }), null, viewModel.widgetRef));\r\n return viewModel.shouldRenderConfigProvider ? createComponentVNode(2, ConfigProvider, {\r\n rtlEnabled: viewModel.rtlEnabled,\r\n children: widget\r\n }) : widget\r\n};\r\nexport var WidgetProps = _extends({}, BaseWidgetProps, {\r\n _feedbackHideTimeout: 400,\r\n _feedbackShowTimeout: 30,\r\n aria: {},\r\n classes: \"\",\r\n className: \"\",\r\n name: \"\"\r\n});\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class Widget extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this._currentState = null;\r\n this.widgetRef = infernoCreateRef();\r\n this.state = {\r\n active: false,\r\n focused: false,\r\n hovered: false\r\n };\r\n this.setRootElementRef = this.setRootElementRef.bind(this);\r\n this.activeEffect = this.activeEffect.bind(this);\r\n this.clickEffect = this.clickEffect.bind(this);\r\n this.focus = this.focus.bind(this);\r\n this.focusEffect = this.focusEffect.bind(this);\r\n this.hoverEffect = this.hoverEffect.bind(this);\r\n this.keyboardEffect = this.keyboardEffect.bind(this);\r\n this.resizeEffect = this.resizeEffect.bind(this);\r\n this.windowResizeEffect = this.windowResizeEffect.bind(this);\r\n this.visibilityEffect = this.visibilityEffect.bind(this)\r\n }\r\n get config() {\r\n if (\"ConfigContext\" in this.context) {\r\n return this.context.ConfigContext\r\n }\r\n return ConfigContext\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.setRootElementRef, []), new InfernoEffect(this.activeEffect, [this.props._feedbackHideTimeout, this.props._feedbackShowTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.disabled, this.props.onActive, this.props.onInactive]), new InfernoEffect(this.clickEffect, [this.props.disabled, this.props.name, this.props.onClick]), new InfernoEffect(this.focusEffect, [this.props.disabled, this.props.focusStateEnabled, this.props.name, this.props.onFocusIn, this.props.onFocusOut]), new InfernoEffect(this.hoverEffect, [this.props.activeStateUnit, this.props.disabled, this.props.hoverStateEnabled, this.props.onHoverEnd, this.props.onHoverStart, this.active]), new InfernoEffect(this.keyboardEffect, [this.props.onKeyDown]), new InfernoEffect(this.resizeEffect, [this.props.name, this.props.onDimensionChanged]), new InfernoEffect(this.windowResizeEffect, [this.props.onDimensionChanged]), new InfernoEffect(this.visibilityEffect, [this.props.name, this.props.onVisibilityChange])]\r\n }\r\n updateEffects() {\r\n var _this$_effects$, _this$_effects$2, _this$_effects$3, _this$_effects$4, _this$_effects$5, _this$_effects$6, _this$_effects$7, _this$_effects$8;\r\n null === (_this$_effects$ = this._effects[1]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props._feedbackHideTimeout, this.props._feedbackShowTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.disabled, this.props.onActive, this.props.onInactive]);\r\n null === (_this$_effects$2 = this._effects[2]) || void 0 === _this$_effects$2 ? void 0 : _this$_effects$2.update([this.props.disabled, this.props.name, this.props.onClick]);\r\n null === (_this$_effects$3 = this._effects[3]) || void 0 === _this$_effects$3 ? void 0 : _this$_effects$3.update([this.props.disabled, this.props.focusStateEnabled, this.props.name, this.props.onFocusIn, this.props.onFocusOut]);\r\n null === (_this$_effects$4 = this._effects[4]) || void 0 === _this$_effects$4 ? void 0 : _this$_effects$4.update([this.props.activeStateUnit, this.props.disabled, this.props.hoverStateEnabled, this.props.onHoverEnd, this.props.onHoverStart, this.active]);\r\n null === (_this$_effects$5 = this._effects[5]) || void 0 === _this$_effects$5 ? void 0 : _this$_effects$5.update([this.props.onKeyDown]);\r\n null === (_this$_effects$6 = this._effects[6]) || void 0 === _this$_effects$6 ? void 0 : _this$_effects$6.update([this.props.name, this.props.onDimensionChanged]);\r\n null === (_this$_effects$7 = this._effects[7]) || void 0 === _this$_effects$7 ? void 0 : _this$_effects$7.update([this.props.onDimensionChanged]);\r\n null === (_this$_effects$8 = this._effects[8]) || void 0 === _this$_effects$8 ? void 0 : _this$_effects$8.update([this.props.name, this.props.onVisibilityChange])\r\n }\r\n get active() {\r\n var state = this._currentState || this.state;\r\n return state.active\r\n }\r\n set_active(value) {\r\n this.setState(state => {\r\n this._currentState = state;\r\n var newValue = value();\r\n this._currentState = null;\r\n return {\r\n active: newValue\r\n }\r\n })\r\n }\r\n get focused() {\r\n var state = this._currentState || this.state;\r\n return state.focused\r\n }\r\n set_focused(value) {\r\n this.setState(state => {\r\n this._currentState = state;\r\n var newValue = value();\r\n this._currentState = null;\r\n return {\r\n focused: newValue\r\n }\r\n })\r\n }\r\n get hovered() {\r\n var state = this._currentState || this.state;\r\n return state.hovered\r\n }\r\n set_hovered(value) {\r\n this.setState(state => {\r\n this._currentState = state;\r\n var newValue = value();\r\n this._currentState = null;\r\n return {\r\n hovered: newValue\r\n }\r\n })\r\n }\r\n setRootElementRef() {\r\n var {\r\n rootElementRef: rootElementRef\r\n } = this.props;\r\n if (rootElementRef) {\r\n rootElementRef.current = this.widgetRef.current\r\n }\r\n }\r\n activeEffect() {\r\n var {\r\n _feedbackHideTimeout: _feedbackHideTimeout,\r\n _feedbackShowTimeout: _feedbackShowTimeout,\r\n activeStateEnabled: activeStateEnabled,\r\n activeStateUnit: activeStateUnit,\r\n disabled: disabled,\r\n onActive: onActive,\r\n onInactive: onInactive\r\n } = this.props;\r\n var selector = activeStateUnit;\r\n if (activeStateEnabled && !disabled) {\r\n active.on(this.widgetRef.current, _ref => {\r\n var {\r\n event: event\r\n } = _ref;\r\n this.set_active(() => true);\r\n null === onActive || void 0 === onActive ? void 0 : onActive(event)\r\n }, _ref2 => {\r\n var {\r\n event: event\r\n } = _ref2;\r\n this.set_active(() => false);\r\n null === onInactive || void 0 === onInactive ? void 0 : onInactive(event)\r\n }, {\r\n hideTimeout: _feedbackHideTimeout,\r\n namespace: \"UIFeedback\",\r\n selector: selector,\r\n showTimeout: _feedbackShowTimeout\r\n });\r\n return () => active.off(this.widgetRef.current, {\r\n selector: selector,\r\n namespace: \"UIFeedback\"\r\n })\r\n }\r\n return\r\n }\r\n clickEffect() {\r\n var {\r\n disabled: disabled,\r\n name: name,\r\n onClick: onClick\r\n } = this.props;\r\n var namespace = name;\r\n if (onClick && !disabled) {\r\n dxClick.on(this.widgetRef.current, onClick, {\r\n namespace: namespace\r\n });\r\n return () => dxClick.off(this.widgetRef.current, {\r\n namespace: namespace\r\n })\r\n }\r\n return\r\n }\r\n focusEffect() {\r\n var {\r\n disabled: disabled,\r\n focusStateEnabled: focusStateEnabled,\r\n name: name,\r\n onFocusIn: onFocusIn,\r\n onFocusOut: onFocusOut\r\n } = this.props;\r\n var namespace = \"\".concat(name, \"Focus\");\r\n var isFocusable = focusStateEnabled && !disabled;\r\n if (isFocusable) {\r\n focus.on(this.widgetRef.current, e => {\r\n if (!e.isDefaultPrevented()) {\r\n this.set_focused(() => true);\r\n null === onFocusIn || void 0 === onFocusIn ? void 0 : onFocusIn(e)\r\n }\r\n }, e => {\r\n if (!e.isDefaultPrevented()) {\r\n this.set_focused(() => false);\r\n null === onFocusOut || void 0 === onFocusOut ? void 0 : onFocusOut(e)\r\n }\r\n }, {\r\n isFocusable: focusable,\r\n namespace: namespace\r\n });\r\n return () => focus.off(this.widgetRef.current, {\r\n namespace: namespace\r\n })\r\n }\r\n return\r\n }\r\n hoverEffect() {\r\n var {\r\n activeStateUnit: activeStateUnit,\r\n disabled: disabled,\r\n hoverStateEnabled: hoverStateEnabled,\r\n onHoverEnd: onHoverEnd,\r\n onHoverStart: onHoverStart\r\n } = this.props;\r\n var selector = activeStateUnit;\r\n var isHoverable = hoverStateEnabled && !disabled;\r\n if (isHoverable) {\r\n hover.on(this.widgetRef.current, _ref3 => {\r\n var {\r\n event: event\r\n } = _ref3;\r\n !this.active && this.set_hovered(() => true);\r\n null === onHoverStart || void 0 === onHoverStart ? void 0 : onHoverStart(event)\r\n }, _ref4 => {\r\n var {\r\n event: event\r\n } = _ref4;\r\n this.set_hovered(() => false);\r\n null === onHoverEnd || void 0 === onHoverEnd ? void 0 : onHoverEnd(event)\r\n }, {\r\n selector: selector,\r\n namespace: \"UIFeedback\"\r\n });\r\n return () => hover.off(this.widgetRef.current, {\r\n selector: selector,\r\n namespace: \"UIFeedback\"\r\n })\r\n }\r\n return\r\n }\r\n keyboardEffect() {\r\n var {\r\n onKeyDown: onKeyDown\r\n } = this.props;\r\n if (onKeyDown) {\r\n var id = keyboard.on(this.widgetRef.current, this.widgetRef.current, e => onKeyDown(e));\r\n return () => keyboard.off(id)\r\n }\r\n return\r\n }\r\n resizeEffect() {\r\n var namespace = \"\".concat(this.props.name, \"VisibilityChange\");\r\n var {\r\n onDimensionChanged: onDimensionChanged\r\n } = this.props;\r\n if (onDimensionChanged) {\r\n resize.on(this.widgetRef.current, onDimensionChanged, {\r\n namespace: namespace\r\n });\r\n return () => resize.off(this.widgetRef.current, {\r\n namespace: namespace\r\n })\r\n }\r\n return\r\n }\r\n windowResizeEffect() {\r\n var {\r\n onDimensionChanged: onDimensionChanged\r\n } = this.props;\r\n if (onDimensionChanged) {\r\n resizeCallbacks.add(onDimensionChanged);\r\n return () => {\r\n resizeCallbacks.remove(onDimensionChanged)\r\n }\r\n }\r\n return\r\n }\r\n visibilityEffect() {\r\n var {\r\n name: name,\r\n onVisibilityChange: onVisibilityChange\r\n } = this.props;\r\n var namespace = \"\".concat(name, \"VisibilityChange\");\r\n if (onVisibilityChange) {\r\n visibility.on(this.widgetRef.current, () => onVisibilityChange(true), () => onVisibilityChange(false), {\r\n namespace: namespace\r\n });\r\n return () => visibility.off(this.widgetRef.current, {\r\n namespace: namespace\r\n })\r\n }\r\n return\r\n }\r\n get shouldRenderConfigProvider() {\r\n var {\r\n rtlEnabled: rtlEnabled\r\n } = this.props;\r\n return resolveRtlEnabledDefinition(rtlEnabled, this.config)\r\n }\r\n get rtlEnabled() {\r\n var {\r\n rtlEnabled: rtlEnabled\r\n } = this.props;\r\n return resolveRtlEnabled(rtlEnabled, this.config)\r\n }\r\n get attributes() {\r\n var {\r\n aria: aria,\r\n disabled: disabled,\r\n focusStateEnabled: focusStateEnabled,\r\n visible: visible\r\n } = this.props;\r\n var accessKey = focusStateEnabled && !disabled && this.props.accessKey;\r\n return _extends({}, extend({}, this.restAttributes, accessKey && {\r\n accessKey: accessKey\r\n }), getAria(_extends({}, aria, {\r\n disabled: disabled,\r\n hidden: !visible\r\n })))\r\n }\r\n get styles() {\r\n var {\r\n height: height,\r\n width: width\r\n } = this.props;\r\n var style = this.restAttributes.style || {};\r\n var computedWidth = normalizeStyleProp(\"width\", \"function\" === typeof width ? width() : width);\r\n var computedHeight = normalizeStyleProp(\"height\", \"function\" === typeof height ? height() : height);\r\n return _extends({}, style, {\r\n height: null !== computedHeight && void 0 !== computedHeight ? computedHeight : style.height,\r\n width: null !== computedWidth && void 0 !== computedWidth ? computedWidth : style.width\r\n })\r\n }\r\n get cssClasses() {\r\n var {\r\n activeStateEnabled: activeStateEnabled,\r\n className: className,\r\n classes: classes,\r\n disabled: disabled,\r\n focusStateEnabled: focusStateEnabled,\r\n hoverStateEnabled: hoverStateEnabled,\r\n onVisibilityChange: onVisibilityChange,\r\n visible: visible\r\n } = this.props;\r\n return getCssClasses({\r\n active: this.active,\r\n focused: this.focused,\r\n hovered: this.hovered,\r\n className: className,\r\n classes: classes,\r\n disabled: disabled,\r\n activeStateEnabled: activeStateEnabled,\r\n focusStateEnabled: focusStateEnabled,\r\n hoverStateEnabled: hoverStateEnabled,\r\n onVisibilityChange: onVisibilityChange,\r\n rtlEnabled: this.rtlEnabled,\r\n visible: visible\r\n })\r\n }\r\n get tabIndex() {\r\n var {\r\n disabled: disabled,\r\n focusStateEnabled: focusStateEnabled,\r\n tabIndex: tabIndex\r\n } = this.props;\r\n var isFocusable = focusStateEnabled && !disabled;\r\n return isFocusable ? tabIndex : void 0\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n focus() {\r\n focus.trigger(this.widgetRef.current)\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n active: this.active,\r\n focused: this.focused,\r\n hovered: this.hovered,\r\n widgetRef: this.widgetRef,\r\n config: this.config,\r\n shouldRenderConfigProvider: this.shouldRenderConfigProvider,\r\n rtlEnabled: this.rtlEnabled,\r\n attributes: this.attributes,\r\n styles: this.styles,\r\n cssClasses: this.cssClasses,\r\n tabIndex: this.tabIndex,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nWidget.defaultProps = _extends({}, WidgetProps);\r\n","/**\r\n * DevExtreme (esm/renovation/utils/render_template.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n render\r\n} from \"inferno\";\r\nimport {\r\n createElement\r\n} from \"inferno-create-element\";\r\nexport function renderTemplate(template, props, container) {\r\n setTimeout(() => {\r\n render(createElement(template, props), null === container || void 0 === container ? void 0 : container.get(0))\r\n }, 0)\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/dom_component_wrapper.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"itemTemplate\", \"valueChange\"],\r\n _excluded2 = [\"componentProps\", \"componentType\", \"rootElementRef\"];\r\nimport {\r\n createVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoComponent\r\n} from \"@devextreme/vdom\";\r\nimport {\r\n ConfigContext\r\n} from \"../../common/config_context\";\r\nimport {\r\n renderTemplate\r\n} from \"../../utils/render_template\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n componentProps: {\r\n className: className\r\n }\r\n },\r\n restAttributes: restAttributes,\r\n widgetRef: widgetRef\r\n } = _ref;\r\n return normalizeProps(createVNode(1, \"div\", className, null, 1, _extends({}, restAttributes), null, widgetRef))\r\n};\r\nexport var DomComponentWrapperProps = {};\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class DomComponentWrapper extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.widgetRef = infernoCreateRef();\r\n this.getInstance = this.getInstance.bind(this);\r\n this.setupWidget = this.setupWidget.bind(this);\r\n this.setRootElementRef = this.setRootElementRef.bind(this);\r\n this.updateWidget = this.updateWidget.bind(this)\r\n }\r\n get config() {\r\n if (\"ConfigContext\" in this.context) {\r\n return this.context.ConfigContext\r\n }\r\n return ConfigContext\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.setupWidget, []), new InfernoEffect(this.setRootElementRef, []), new InfernoEffect(this.updateWidget, [this.props.componentProps, this.config])]\r\n }\r\n updateEffects() {\r\n var _this$_effects$;\r\n null === (_this$_effects$ = this._effects[2]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.componentProps, this.config])\r\n }\r\n setupWidget() {\r\n var componentInstance = new this.props.componentType(this.widgetRef.current, this.properties);\r\n this.instance = componentInstance;\r\n return () => {\r\n componentInstance.dispose();\r\n this.instance = null\r\n }\r\n }\r\n setRootElementRef() {\r\n var {\r\n rootElementRef: rootElementRef\r\n } = this.props;\r\n if (rootElementRef) {\r\n rootElementRef.current = this.widgetRef.current\r\n }\r\n }\r\n updateWidget() {\r\n var _this$getInstance;\r\n null === (_this$getInstance = this.getInstance()) || void 0 === _this$getInstance ? void 0 : _this$getInstance.option(this.properties)\r\n }\r\n get properties() {\r\n var _this$config;\r\n var _this$props$component = this.props.componentProps,\r\n {\r\n itemTemplate: itemTemplate,\r\n valueChange: valueChange\r\n } = _this$props$component,\r\n restProps = _objectWithoutPropertiesLoose(_this$props$component, _excluded);\r\n var properties = _extends({\r\n rtlEnabled: (null === (_this$config = this.config) || void 0 === _this$config ? void 0 : _this$config.rtlEnabled) || false\r\n }, restProps);\r\n if (valueChange) {\r\n properties.onValueChanged = _ref2 => {\r\n var {\r\n value: value\r\n } = _ref2;\r\n return valueChange(value)\r\n }\r\n }\r\n if (itemTemplate) {\r\n properties.itemTemplate = (item, index, container) => {\r\n renderTemplate(itemTemplate, {\r\n item: item,\r\n index: index,\r\n container: container\r\n }, container)\r\n }\r\n }\r\n return properties\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded2);\r\n return restProps\r\n }\r\n getInstance() {\r\n return this.instance\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n widgetRef: this.widgetRef,\r\n config: this.config,\r\n properties: this.properties,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nDomComponentWrapper.defaultProps = _extends({}, DomComponentWrapperProps);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/number_box.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"rootElementRef\"],\r\n _excluded2 = [\"_feedbackHideTimeout\", \"_feedbackShowTimeout\", \"accessKey\", \"activeStateEnabled\", \"activeStateUnit\", \"aria\", \"children\", \"className\", \"classes\", \"defaultValue\", \"disabled\", \"focusStateEnabled\", \"height\", \"hint\", \"hoverStateEnabled\", \"invalidValueMessage\", \"max\", \"min\", \"mode\", \"name\", \"onActive\", \"onClick\", \"onContentReady\", \"onDimensionChanged\", \"onFocusIn\", \"onFocusOut\", \"onHoverEnd\", \"onHoverStart\", \"onInactive\", \"onKeyDown\", \"onKeyboardHandled\", \"onVisibilityChange\", \"rootElementRef\", \"rtlEnabled\", \"showSpinButtons\", \"step\", \"tabIndex\", \"useLargeSpinButtons\", \"value\", \"valueChange\", \"visible\", \"width\"];\r\nimport {\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/vdom\";\r\nimport LegacyNumberBox from \"../../ui/number_box\";\r\nimport {\r\n WidgetProps\r\n} from \"./common/widget\";\r\nimport {\r\n DomComponentWrapper\r\n} from \"./common/dom_component_wrapper\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n rootElementRef: rootElementRef\r\n },\r\n restAttributes: restAttributes\r\n } = _ref, componentProps = _objectWithoutPropertiesLoose(_ref.props, _excluded);\r\n return normalizeProps(createComponentVNode(2, DomComponentWrapper, _extends({\r\n rootElementRef: rootElementRef,\r\n componentType: LegacyNumberBox,\r\n componentProps: componentProps\r\n }, restAttributes)))\r\n};\r\nexport var NumberBoxProps = _extends({}, WidgetProps, {\r\n focusStateEnabled: true,\r\n hoverStateEnabled: true,\r\n defaultValue: 0\r\n});\r\nexport class NumberBox extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this._currentState = null;\r\n this.state = {\r\n value: void 0 !== this.props.value ? this.props.value : this.props.defaultValue\r\n }\r\n }\r\n get __state_value() {\r\n var state = this._currentState || this.state;\r\n return void 0 !== this.props.value ? this.props.value : state.value\r\n }\r\n set_value(value) {\r\n this.setState(state => {\r\n var _this$props$valueChan, _this$props;\r\n this._currentState = state;\r\n var newValue = value();\r\n null === (_this$props$valueChan = (_this$props = this.props).valueChange) || void 0 === _this$props$valueChan ? void 0 : _this$props$valueChan.call(_this$props, newValue);\r\n this._currentState = null;\r\n return {\r\n value: newValue\r\n }\r\n })\r\n }\r\n get restAttributes() {\r\n var _this$props$value = _extends({}, this.props, {\r\n value: this.__state_value\r\n }),\r\n restProps = _objectWithoutPropertiesLoose(_this$props$value, _excluded2);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n value: this.__state_value\r\n }),\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nNumberBox.defaultProps = _extends({}, NumberBoxProps);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/utils/calculate_values_fitted_width.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var oneDigitWidth = 10;\r\nexport function calculateValuesFittedWidth(minWidth, values) {\r\n return minWidth + oneDigitWidth * Math.max(...values).toString().length\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/pages/small.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"defaultPageIndex\", \"pageCount\", \"pageIndex\", \"pageIndexChange\", \"pagesCountText\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoComponent\r\n} from \"@devextreme/vdom\";\r\nimport {\r\n Page\r\n} from \"./page\";\r\nimport {\r\n PAGER_INFO_CLASS\r\n} from \"../info\";\r\nimport {\r\n NumberBox\r\n} from \"../../number_box\";\r\nimport messageLocalization from \"../../../../localization/message\";\r\nimport {\r\n calculateValuesFittedWidth\r\n} from \"../utils/calculate_values_fitted_width\";\r\nimport {\r\n getElementMinWidth\r\n} from \"../utils/get_element_width\";\r\nimport {\r\n PagerProps\r\n} from \"../common/pager_props\";\r\nvar PAGER_INFO_TEXT_CLASS = \"\".concat(PAGER_INFO_CLASS, \" dx-info-text\");\r\nvar PAGER_PAGE_INDEX_CLASS = \"dx-page-index\";\r\nvar LIGHT_PAGES_CLASS = \"dx-light-pages\";\r\nvar PAGER_PAGES_COUNT_CLASS = \"dx-pages-count\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n pageIndexRef: pageIndexRef,\r\n pagesCountText: pagesCountText,\r\n props: {\r\n pageCount: pageCount\r\n },\r\n selectLastPageIndex: selectLastPageIndex,\r\n value: value,\r\n valueChange: valueChange,\r\n width: width\r\n } = _ref;\r\n return createVNode(1, \"div\", LIGHT_PAGES_CLASS, [createComponentVNode(2, NumberBox, {\r\n rootElementRef: pageIndexRef,\r\n className: PAGER_PAGE_INDEX_CLASS,\r\n min: 1,\r\n max: pageCount,\r\n width: width,\r\n value: value,\r\n valueChange: valueChange\r\n }), createVNode(1, \"span\", PAGER_INFO_TEXT_CLASS, pagesCountText, 0), createComponentVNode(2, Page, {\r\n className: PAGER_PAGES_COUNT_CLASS,\r\n selected: false,\r\n index: pageCount - 1,\r\n onClick: selectLastPageIndex\r\n })], 4)\r\n};\r\nvar PagerSmallProps = {\r\n pageCount: PagerProps.pageCount,\r\n defaultPageIndex: PagerProps.pageIndex\r\n};\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class PagesSmall extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this._currentState = null;\r\n this.pageIndexRef = infernoCreateRef();\r\n this.state = {\r\n minWidth: 10,\r\n pageIndex: void 0 !== this.props.pageIndex ? this.props.pageIndex : this.props.defaultPageIndex\r\n };\r\n this.updateWidth = this.updateWidth.bind(this);\r\n this.selectLastPageIndex = this.selectLastPageIndex.bind(this);\r\n this.valueChange = this.valueChange.bind(this)\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.updateWidth, [this.minWidth])]\r\n }\r\n updateEffects() {\r\n var _this$_effects$;\r\n null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.minWidth])\r\n }\r\n get minWidth() {\r\n var state = this._currentState || this.state;\r\n return state.minWidth\r\n }\r\n set_minWidth(value) {\r\n this.setState(state => {\r\n this._currentState = state;\r\n var newValue = value();\r\n this._currentState = null;\r\n return {\r\n minWidth: newValue\r\n }\r\n })\r\n }\r\n get __state_pageIndex() {\r\n var state = this._currentState || this.state;\r\n return void 0 !== this.props.pageIndex ? this.props.pageIndex : state.pageIndex\r\n }\r\n set_pageIndex(value) {\r\n this.setState(state => {\r\n var _this$props$pageIndex, _this$props;\r\n this._currentState = state;\r\n var newValue = value();\r\n null === (_this$props$pageIndex = (_this$props = this.props).pageIndexChange) || void 0 === _this$props$pageIndex ? void 0 : _this$props$pageIndex.call(_this$props, newValue);\r\n this._currentState = null;\r\n return {\r\n pageIndex: newValue\r\n }\r\n })\r\n }\r\n updateWidth() {\r\n this.set_minWidth(() => this.pageIndexRef.current && getElementMinWidth(this.pageIndexRef.current) || this.minWidth)\r\n }\r\n get value() {\r\n return this.__state_pageIndex + 1\r\n }\r\n get width() {\r\n var pageCount = this.props.pageCount;\r\n return calculateValuesFittedWidth(this.minWidth, [pageCount])\r\n }\r\n get pagesCountText() {\r\n return this.props.pagesCountText || messageLocalization.getFormatter(\"dxPager-pagesCountText\")()\r\n }\r\n selectLastPageIndex() {\r\n var _this$props$pageIndex2, _this$props2;\r\n var {\r\n pageCount: pageCount\r\n } = this.props;\r\n null === (_this$props$pageIndex2 = (_this$props2 = this.props).pageIndexChange) || void 0 === _this$props$pageIndex2 ? void 0 : _this$props$pageIndex2.call(_this$props2, pageCount - 1)\r\n }\r\n valueChange(value) {\r\n this.set_pageIndex(() => value - 1)\r\n }\r\n get restAttributes() {\r\n var _this$props$pageIndex3 = _extends({}, this.props, {\r\n pageIndex: this.__state_pageIndex\r\n }),\r\n restProps = _objectWithoutPropertiesLoose(_this$props$pageIndex3, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n pageIndex: this.__state_pageIndex\r\n }),\r\n pageIndexRef: this.pageIndexRef,\r\n value: this.value,\r\n width: this.width,\r\n pagesCountText: this.pagesCountText,\r\n selectLastPageIndex: this.selectLastPageIndex,\r\n valueChange: this.valueChange,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nPagesSmall.defaultProps = _extends({}, PagerSmallProps);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/pages/page_index_selector.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"defaultPageIndex\", \"hasKnownLastPage\", \"isLargeDisplayMode\", \"maxPagesCount\", \"pageCount\", \"pageIndex\", \"pageIndexChange\", \"pagesCountText\", \"showNavigationButtons\", \"totalCount\"];\r\nimport {\r\n createFragment,\r\n createComponentVNode\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/vdom\";\r\nimport {\r\n LightButton\r\n} from \"../common/light_button\";\r\nimport {\r\n PagesLarge\r\n} from \"./large\";\r\nimport {\r\n PagesSmall\r\n} from \"./small\";\r\nimport {\r\n PagerProps\r\n} from \"../common/pager_props\";\r\nimport {\r\n ConfigContext\r\n} from \"../../../common/config_context\";\r\nvar PAGER_NAVIGATE_BUTTON = \"dx-navigate-button\";\r\nvar PAGER_PREV_BUTTON_CLASS = \"dx-prev-button\";\r\nvar PAGER_NEXT_BUTTON_CLASS = \"dx-next-button\";\r\nexport var PAGER_BUTTON_DISABLE_CLASS = \"dx-button-disable\";\r\nvar nextButtonClassName = \"\".concat(PAGER_NAVIGATE_BUTTON, \" \").concat(PAGER_NEXT_BUTTON_CLASS);\r\nvar prevButtonClassName = \"\".concat(PAGER_NAVIGATE_BUTTON, \" \").concat(PAGER_PREV_BUTTON_CLASS);\r\nvar nextButtonDisabledClassName = \"\".concat(PAGER_BUTTON_DISABLE_CLASS, \" \").concat(PAGER_NAVIGATE_BUTTON, \" \").concat(PAGER_NEXT_BUTTON_CLASS);\r\nvar prevButtonDisabledClassName = \"\".concat(PAGER_BUTTON_DISABLE_CLASS, \" \").concat(PAGER_NAVIGATE_BUTTON, \" \").concat(PAGER_PREV_BUTTON_CLASS);\r\nexport var viewFunction = _ref => {\r\n var {\r\n navigateToNextPage: navigateToNextPage,\r\n navigateToPrevPage: navigateToPrevPage,\r\n nextClassName: nextClassName,\r\n pageIndexChange: pageIndexChange,\r\n prevClassName: prevClassName,\r\n props: {\r\n isLargeDisplayMode: isLargeDisplayMode,\r\n maxPagesCount: maxPagesCount,\r\n pageCount: pageCount,\r\n pageIndex: pageIndex,\r\n pagesCountText: pagesCountText\r\n },\r\n renderNextButton: renderNextButton,\r\n renderPrevButton: renderPrevButton\r\n } = _ref;\r\n return createFragment([renderPrevButton && createComponentVNode(2, LightButton, {\r\n className: prevClassName,\r\n label: \"Previous page\",\r\n onClick: navigateToPrevPage\r\n }), isLargeDisplayMode && createComponentVNode(2, PagesLarge, {\r\n maxPagesCount: maxPagesCount,\r\n pageCount: pageCount,\r\n pageIndex: pageIndex,\r\n pageIndexChange: pageIndexChange\r\n }), !isLargeDisplayMode && createComponentVNode(2, PagesSmall, {\r\n pageCount: pageCount,\r\n pageIndex: pageIndex,\r\n pageIndexChange: pageIndexChange,\r\n pagesCountText: pagesCountText\r\n }), renderNextButton && createComponentVNode(2, LightButton, {\r\n className: nextClassName,\r\n label: \"Next page\",\r\n onClick: navigateToNextPage\r\n })], 0)\r\n};\r\n\r\nfunction getIncrement(direction) {\r\n return \"next\" === direction ? 1 : -1\r\n}\r\nexport var PageIndexSelectorProps = {\r\n isLargeDisplayMode: true\r\n};\r\nvar PageIndexSelectorPropsType = {\r\n maxPagesCount: PagerProps.maxPagesCount,\r\n pageCount: PagerProps.pageCount,\r\n hasKnownLastPage: PagerProps.hasKnownLastPage,\r\n showNavigationButtons: PagerProps.showNavigationButtons,\r\n totalCount: PagerProps.totalCount,\r\n isLargeDisplayMode: PageIndexSelectorProps.isLargeDisplayMode,\r\n defaultPageIndex: PagerProps.pageIndex\r\n};\r\nexport class PageIndexSelector extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this._currentState = null;\r\n this.state = {\r\n pageIndex: void 0 !== this.props.pageIndex ? this.props.pageIndex : this.props.defaultPageIndex\r\n };\r\n this.getNextDirection = this.getNextDirection.bind(this);\r\n this.getPrevDirection = this.getPrevDirection.bind(this);\r\n this.canNavigateToPage = this.canNavigateToPage.bind(this);\r\n this.getNextPageIndex = this.getNextPageIndex.bind(this);\r\n this.canNavigateTo = this.canNavigateTo.bind(this);\r\n this.navigateToPage = this.navigateToPage.bind(this);\r\n this.pageIndexChange = this.pageIndexChange.bind(this);\r\n this.navigateToNextPage = this.navigateToNextPage.bind(this);\r\n this.navigateToPrevPage = this.navigateToPrevPage.bind(this)\r\n }\r\n get config() {\r\n if (\"ConfigContext\" in this.context) {\r\n return this.context.ConfigContext\r\n }\r\n return ConfigContext\r\n }\r\n get __state_pageIndex() {\r\n var state = this._currentState || this.state;\r\n return void 0 !== this.props.pageIndex ? this.props.pageIndex : state.pageIndex\r\n }\r\n set_pageIndex(value) {\r\n this.setState(state => {\r\n var _this$props$pageIndex, _this$props;\r\n this._currentState = state;\r\n var newValue = value();\r\n null === (_this$props$pageIndex = (_this$props = this.props).pageIndexChange) || void 0 === _this$props$pageIndex ? void 0 : _this$props$pageIndex.call(_this$props, newValue);\r\n this._currentState = null;\r\n return {\r\n pageIndex: newValue\r\n }\r\n })\r\n }\r\n getNextDirection() {\r\n var _this$config;\r\n return !(null !== (_this$config = this.config) && void 0 !== _this$config && _this$config.rtlEnabled) ? \"next\" : \"prev\"\r\n }\r\n getPrevDirection() {\r\n var _this$config2;\r\n return !(null !== (_this$config2 = this.config) && void 0 !== _this$config2 && _this$config2.rtlEnabled) ? \"prev\" : \"next\"\r\n }\r\n canNavigateToPage(pageIndex) {\r\n if (!this.props.hasKnownLastPage) {\r\n return pageIndex >= 0\r\n }\r\n return pageIndex >= 0 && pageIndex <= this.props.pageCount - 1\r\n }\r\n getNextPageIndex(direction) {\r\n return this.__state_pageIndex + getIncrement(direction)\r\n }\r\n canNavigateTo(direction) {\r\n return this.canNavigateToPage(this.getNextPageIndex(direction))\r\n }\r\n navigateToPage(direction) {\r\n this.pageIndexChange(this.getNextPageIndex(direction))\r\n }\r\n get renderPrevButton() {\r\n var {\r\n isLargeDisplayMode: isLargeDisplayMode,\r\n showNavigationButtons: showNavigationButtons\r\n } = this.props;\r\n return !isLargeDisplayMode || showNavigationButtons\r\n }\r\n get renderNextButton() {\r\n return this.renderPrevButton || !this.props.hasKnownLastPage\r\n }\r\n get nextClassName() {\r\n var direction = this.getNextDirection();\r\n var canNavigate = this.canNavigateTo(direction);\r\n return canNavigate ? nextButtonClassName : nextButtonDisabledClassName\r\n }\r\n get prevClassName() {\r\n var direction = this.getPrevDirection();\r\n var canNavigate = this.canNavigateTo(direction);\r\n return canNavigate ? prevButtonClassName : prevButtonDisabledClassName\r\n }\r\n pageIndexChange(pageIndex) {\r\n if (this.canNavigateToPage(pageIndex)) {\r\n this.set_pageIndex(() => pageIndex)\r\n }\r\n }\r\n navigateToNextPage() {\r\n this.navigateToPage(this.getNextDirection())\r\n }\r\n navigateToPrevPage() {\r\n this.navigateToPage(this.getPrevDirection())\r\n }\r\n get restAttributes() {\r\n var _this$props$pageIndex2 = _extends({}, this.props, {\r\n pageIndex: this.__state_pageIndex\r\n }),\r\n restProps = _objectWithoutPropertiesLoose(_this$props$pageIndex2, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n pageIndex: this.__state_pageIndex\r\n }),\r\n config: this.config,\r\n renderPrevButton: this.renderPrevButton,\r\n renderNextButton: this.renderNextButton,\r\n nextClassName: this.nextClassName,\r\n prevClassName: this.prevClassName,\r\n pageIndexChange: this.pageIndexChange,\r\n navigateToNextPage: this.navigateToNextPage,\r\n navigateToPrevPage: this.navigateToPrevPage,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nPageIndexSelector.defaultProps = _extends({}, PageIndexSelectorPropsType);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/select_box.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"rootElementRef\"],\r\n _excluded2 = [\"_feedbackHideTimeout\", \"_feedbackShowTimeout\", \"accessKey\", \"activeStateEnabled\", \"activeStateUnit\", \"aria\", \"children\", \"className\", \"classes\", \"dataSource\", \"defaultValue\", \"disabled\", \"displayExpr\", \"focusStateEnabled\", \"height\", \"hint\", \"hoverStateEnabled\", \"name\", \"onActive\", \"onClick\", \"onContentReady\", \"onDimensionChanged\", \"onFocusIn\", \"onFocusOut\", \"onHoverEnd\", \"onHoverStart\", \"onInactive\", \"onKeyDown\", \"onKeyboardHandled\", \"onVisibilityChange\", \"rootElementRef\", \"rtlEnabled\", \"tabIndex\", \"value\", \"valueChange\", \"valueExpr\", \"visible\", \"width\"];\r\nimport {\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/vdom\";\r\nimport {\r\n WidgetProps\r\n} from \"./common/widget\";\r\nimport LegacySelectBox from \"../../ui/select_box\";\r\nimport {\r\n DomComponentWrapper\r\n} from \"./common/dom_component_wrapper\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n rootElementRef: rootElementRef\r\n },\r\n restAttributes: restAttributes\r\n } = _ref, componentProps = _objectWithoutPropertiesLoose(_ref.props, _excluded);\r\n return normalizeProps(createComponentVNode(2, DomComponentWrapper, _extends({\r\n rootElementRef: rootElementRef,\r\n componentType: LegacySelectBox,\r\n componentProps: componentProps\r\n }, restAttributes)))\r\n};\r\nexport var SelectBoxProps = _extends({}, WidgetProps, {\r\n focusStateEnabled: true,\r\n hoverStateEnabled: true,\r\n defaultValue: null\r\n});\r\nexport class SelectBox extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this._currentState = null;\r\n this.state = {\r\n value: void 0 !== this.props.value ? this.props.value : this.props.defaultValue\r\n }\r\n }\r\n get __state_value() {\r\n var state = this._currentState || this.state;\r\n return void 0 !== this.props.value ? this.props.value : state.value\r\n }\r\n set_value(value) {\r\n this.setState(state => {\r\n var _this$props$valueChan, _this$props;\r\n this._currentState = state;\r\n var newValue = value();\r\n null === (_this$props$valueChan = (_this$props = this.props).valueChange) || void 0 === _this$props$valueChan ? void 0 : _this$props$valueChan.call(_this$props, newValue);\r\n this._currentState = null;\r\n return {\r\n value: newValue\r\n }\r\n })\r\n }\r\n get restAttributes() {\r\n var _this$props$value = _extends({}, this.props, {\r\n value: this.__state_value\r\n }),\r\n restProps = _objectWithoutPropertiesLoose(_this$props$value, _excluded2);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n value: this.__state_value\r\n }),\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nSelectBox.defaultProps = _extends({}, SelectBoxProps);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/page_size/small.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"defaultPageSize\", \"pageSize\", \"pageSizeChange\", \"pageSizes\", \"parentRef\"];\r\nimport {\r\n createComponentVNode\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoComponent\r\n} from \"@devextreme/vdom\";\r\nimport {\r\n SelectBox\r\n} from \"../../select_box\";\r\nimport {\r\n calculateValuesFittedWidth\r\n} from \"../utils/calculate_values_fitted_width\";\r\nimport {\r\n getElementMinWidth\r\n} from \"../utils/get_element_width\";\r\nimport {\r\n PagerProps\r\n} from \"../common/pager_props\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n pageSize: pageSize,\r\n pageSizeChange: pageSizeChange,\r\n pageSizes: pageSizes\r\n },\r\n width: width\r\n } = _ref;\r\n return createComponentVNode(2, SelectBox, {\r\n displayExpr: \"text\",\r\n valueExpr: \"value\",\r\n dataSource: pageSizes,\r\n value: pageSize,\r\n valueChange: pageSizeChange,\r\n width: width\r\n })\r\n};\r\nexport var PageSizeSmallProps = {};\r\nvar PageSizeSmallPropsType = {\r\n defaultPageSize: PagerProps.pageSize\r\n};\r\nexport class PageSizeSmall extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this._currentState = null;\r\n this.state = {\r\n minWidth: 10,\r\n pageSize: void 0 !== this.props.pageSize ? this.props.pageSize : this.props.defaultPageSize\r\n };\r\n this.updateWidth = this.updateWidth.bind(this)\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.updateWidth, [this.minWidth, this.__state_pageSize, this.props.pageSizeChange, this.props.pageSizes, this.props.defaultPageSize])]\r\n }\r\n updateEffects() {\r\n var _this$_effects$;\r\n null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.minWidth, this.__state_pageSize, this.props.pageSizeChange, this.props.pageSizes, this.props.defaultPageSize])\r\n }\r\n get minWidth() {\r\n var state = this._currentState || this.state;\r\n return state.minWidth\r\n }\r\n set_minWidth(value) {\r\n this.setState(state => {\r\n this._currentState = state;\r\n var newValue = value();\r\n this._currentState = null;\r\n return {\r\n minWidth: newValue\r\n }\r\n })\r\n }\r\n get __state_pageSize() {\r\n var state = this._currentState || this.state;\r\n return void 0 !== this.props.pageSize ? this.props.pageSize : state.pageSize\r\n }\r\n set_pageSize(value) {\r\n this.setState(state => {\r\n var _this$props$pageSizeC, _this$props;\r\n this._currentState = state;\r\n var newValue = value();\r\n null === (_this$props$pageSizeC = (_this$props = this.props).pageSizeChange) || void 0 === _this$props$pageSizeC ? void 0 : _this$props$pageSizeC.call(_this$props, newValue);\r\n this._currentState = null;\r\n return {\r\n pageSize: newValue\r\n }\r\n })\r\n }\r\n updateWidth() {\r\n this.set_minWidth(() => getElementMinWidth(this.props.parentRef.current) || this.minWidth)\r\n }\r\n get width() {\r\n return calculateValuesFittedWidth(this.minWidth, this.props.pageSizes.map(p => p.value))\r\n }\r\n get restAttributes() {\r\n var _this$props$pageSize = _extends({}, this.props, {\r\n pageSize: this.__state_pageSize\r\n }),\r\n restProps = _objectWithoutPropertiesLoose(_this$props$pageSize, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n pageSize: this.__state_pageSize\r\n }),\r\n width: this.width,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nPageSizeSmall.defaultProps = _extends({}, PageSizeSmallPropsType);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/page_size/large.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"defaultPageSize\", \"pageSize\", \"pageSizeChange\", \"pageSizes\"];\r\nimport {\r\n createFragment,\r\n createComponentVNode\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/vdom\";\r\nimport {\r\n LightButton\r\n} from \"../common/light_button\";\r\nimport {\r\n PagerProps\r\n} from \"../common/pager_props\";\r\nimport {\r\n PAGER_SELECTED_PAGE_SIZE_CLASS,\r\n PAGER_PAGE_SIZE_CLASS\r\n} from \"../common/consts\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n pageSizesText: pageSizesText\r\n } = _ref;\r\n return createFragment(pageSizesText.map(_ref2 => {\r\n var {\r\n className: className,\r\n click: click,\r\n label: label,\r\n text: text\r\n } = _ref2;\r\n return createComponentVNode(2, LightButton, {\r\n className: className,\r\n label: label,\r\n onClick: click,\r\n children: text\r\n }, text)\r\n }), 0)\r\n};\r\nexport var PageSizeLargeProps = {};\r\nvar PageSizeLargePropsType = {\r\n defaultPageSize: PagerProps.pageSize\r\n};\r\nexport class PageSizeLarge extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this._currentState = null;\r\n this.state = {\r\n pageSize: void 0 !== this.props.pageSize ? this.props.pageSize : this.props.defaultPageSize\r\n };\r\n this.onPageSizeChange = this.onPageSizeChange.bind(this)\r\n }\r\n get __state_pageSize() {\r\n var state = this._currentState || this.state;\r\n return void 0 !== this.props.pageSize ? this.props.pageSize : state.pageSize\r\n }\r\n set_pageSize(value) {\r\n this.setState(state => {\r\n var _this$props$pageSizeC, _this$props;\r\n this._currentState = state;\r\n var newValue = value();\r\n null === (_this$props$pageSizeC = (_this$props = this.props).pageSizeChange) || void 0 === _this$props$pageSizeC ? void 0 : _this$props$pageSizeC.call(_this$props, newValue);\r\n this._currentState = null;\r\n return {\r\n pageSize: newValue\r\n }\r\n })\r\n }\r\n get pageSizesText() {\r\n var {\r\n pageSizes: pageSizes\r\n } = this.props;\r\n return pageSizes.map(_ref3 => {\r\n var {\r\n text: text,\r\n value: processedPageSize\r\n } = _ref3;\r\n var selected = processedPageSize === this.__state_pageSize;\r\n var className = selected ? PAGER_SELECTED_PAGE_SIZE_CLASS : PAGER_PAGE_SIZE_CLASS;\r\n return {\r\n className: className,\r\n click: this.onPageSizeChange(processedPageSize),\r\n label: \"Display \".concat(processedPageSize, \" items on page\"),\r\n text: text\r\n }\r\n })\r\n }\r\n onPageSizeChange(processedPageSize) {\r\n return () => {\r\n this.set_pageSize(() => processedPageSize)\r\n }\r\n }\r\n get restAttributes() {\r\n var _this$props$pageSize = _extends({}, this.props, {\r\n pageSize: this.__state_pageSize\r\n }),\r\n restProps = _objectWithoutPropertiesLoose(_this$props$pageSize, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n pageSize: this.__state_pageSize\r\n }),\r\n pageSizesText: this.pageSizesText,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nPageSizeLarge.defaultProps = _extends({}, PageSizeLargePropsType);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/page_size/selector.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"defaultPageSize\", \"isLargeDisplayMode\", \"pageSize\", \"pageSizeChange\", \"pageSizes\", \"rootElementRef\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoComponent\r\n} from \"@devextreme/vdom\";\r\nimport {\r\n PageSizeSmall\r\n} from \"./small\";\r\nimport {\r\n PageSizeLarge\r\n} from \"./large\";\r\nimport {\r\n PagerProps\r\n} from \"../common/pager_props\";\r\nimport messageLocalization from \"../../../../localization/message\";\r\nimport {\r\n PAGER_PAGE_SIZES_CLASS\r\n} from \"../common/consts\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n htmlRef: htmlRef,\r\n normalizedPageSizes: normalizedPageSizes,\r\n props: {\r\n isLargeDisplayMode: isLargeDisplayMode,\r\n pageSize: pageSize,\r\n pageSizeChange: pageSizeChange\r\n }\r\n } = _ref;\r\n return createVNode(1, \"div\", PAGER_PAGE_SIZES_CLASS, [isLargeDisplayMode && createComponentVNode(2, PageSizeLarge, {\r\n pageSizes: normalizedPageSizes,\r\n pageSize: pageSize,\r\n pageSizeChange: pageSizeChange\r\n }), !isLargeDisplayMode && createComponentVNode(2, PageSizeSmall, {\r\n parentRef: htmlRef,\r\n pageSizes: normalizedPageSizes,\r\n pageSize: pageSize,\r\n pageSizeChange: pageSizeChange\r\n })], 0, null, null, htmlRef)\r\n};\r\n\r\nfunction getAllText() {\r\n return messageLocalization.getFormatter(\"dxPager-pageSizesAllText\")()\r\n}\r\nvar PageSizeSelectorProps = {\r\n isLargeDisplayMode: true\r\n};\r\nvar PageSizeSelectorPropsType = {\r\n pageSizes: PagerProps.pageSizes,\r\n isLargeDisplayMode: PageSizeSelectorProps.isLargeDisplayMode,\r\n defaultPageSize: PagerProps.pageSize\r\n};\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class PageSizeSelector extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this._currentState = null;\r\n this.htmlRef = infernoCreateRef();\r\n this.state = {\r\n pageSize: void 0 !== this.props.pageSize ? this.props.pageSize : this.props.defaultPageSize\r\n };\r\n this.setRootElementRef = this.setRootElementRef.bind(this)\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.setRootElementRef, [])]\r\n }\r\n updateEffects() {}\r\n get __state_pageSize() {\r\n var state = this._currentState || this.state;\r\n return void 0 !== this.props.pageSize ? this.props.pageSize : state.pageSize\r\n }\r\n set_pageSize(value) {\r\n this.setState(state => {\r\n var _this$props$pageSizeC, _this$props;\r\n this._currentState = state;\r\n var newValue = value();\r\n null === (_this$props$pageSizeC = (_this$props = this.props).pageSizeChange) || void 0 === _this$props$pageSizeC ? void 0 : _this$props$pageSizeC.call(_this$props, newValue);\r\n this._currentState = null;\r\n return {\r\n pageSize: newValue\r\n }\r\n })\r\n }\r\n setRootElementRef() {\r\n var {\r\n rootElementRef: rootElementRef\r\n } = this.props;\r\n if (rootElementRef) {\r\n rootElementRef.current = this.htmlRef.current\r\n }\r\n }\r\n get normalizedPageSizes() {\r\n var {\r\n pageSizes: pageSizes\r\n } = this.props;\r\n return pageSizes.map(p => \"all\" === p || 0 === p ? {\r\n text: getAllText(),\r\n value: 0\r\n } : {\r\n text: String(p),\r\n value: p\r\n })\r\n }\r\n get restAttributes() {\r\n var _this$props$pageSize = _extends({}, this.props, {\r\n pageSize: this.__state_pageSize\r\n }),\r\n restProps = _objectWithoutPropertiesLoose(_this$props$pageSize, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n pageSize: this.__state_pageSize\r\n }),\r\n htmlRef: this.htmlRef,\r\n normalizedPageSizes: this.normalizedPageSizes,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nPageSizeSelector.defaultProps = _extends({}, PageSizeSelectorPropsType);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/content.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"className\", \"defaultPageIndex\", \"defaultPageSize\", \"displayMode\", \"gridCompatibility\", \"hasKnownLastPage\", \"infoText\", \"infoTextRef\", \"infoTextVisible\", \"isLargeDisplayMode\", \"lightModeEnabled\", \"maxPagesCount\", \"onKeyDown\", \"pageCount\", \"pageIndex\", \"pageIndexChange\", \"pageSize\", \"pageSizeChange\", \"pageSizes\", \"pageSizesRef\", \"pagesCountText\", \"pagesNavigatorVisible\", \"pagesRef\", \"rootElementRef\", \"rtlEnabled\", \"showInfo\", \"showNavigationButtons\", \"showPageSizes\", \"totalCount\", \"visible\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoComponent,\r\n normalizeStyles\r\n} from \"@devextreme/vdom\";\r\nimport {\r\n InfoText\r\n} from \"./info\";\r\nimport {\r\n PageIndexSelector\r\n} from \"./pages/page_index_selector\";\r\nimport {\r\n PageSizeSelector\r\n} from \"./page_size/selector\";\r\nimport {\r\n PAGER_PAGES_CLASS,\r\n PAGER_PAGE_INDEXES_CLASS,\r\n LIGHT_MODE_CLASS,\r\n PAGER_CLASS\r\n} from \"./common/consts\";\r\nimport {\r\n PagerProps\r\n} from \"./common/pager_props\";\r\nimport {\r\n combineClasses\r\n} from \"../../utils/combine_classes\";\r\nimport {\r\n Widget\r\n} from \"../common/widget\";\r\nimport {\r\n registerKeyboardAction as _registerKeyboardAction\r\n} from \"../../../ui/shared/accessibility\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n classes: classes,\r\n infoVisible: infoVisible,\r\n isLargeDisplayMode: isLargeDisplayMode,\r\n pageIndexSelectorVisible: pageIndexSelectorVisible,\r\n pagesContainerVisibility: pagesContainerVisibility,\r\n pagesContainerVisible: pagesContainerVisible,\r\n props: {\r\n hasKnownLastPage: hasKnownLastPage,\r\n infoText: infoText,\r\n infoTextRef: infoTextRef,\r\n maxPagesCount: maxPagesCount,\r\n pageCount: pageCount,\r\n pageIndex: pageIndex,\r\n pageIndexChange: pageIndexChange,\r\n pageSize: pageSize,\r\n pageSizeChange: pageSizeChange,\r\n pageSizes: pageSizes,\r\n pageSizesRef: pageSizesRef,\r\n pagesCountText: pagesCountText,\r\n pagesRef: pagesRef,\r\n rtlEnabled: rtlEnabled,\r\n showNavigationButtons: showNavigationButtons,\r\n showPageSizes: showPageSizes,\r\n totalCount: totalCount,\r\n visible: visible\r\n },\r\n restAttributes: restAttributes,\r\n widgetRootElementRef: widgetRootElementRef\r\n } = _ref;\r\n return normalizeProps(createComponentVNode(2, Widget, _extends({\r\n rootElementRef: widgetRootElementRef,\r\n rtlEnabled: rtlEnabled,\r\n classes: classes,\r\n visible: visible\r\n }, restAttributes, {\r\n children: [showPageSizes && createComponentVNode(2, PageSizeSelector, {\r\n rootElementRef: pageSizesRef,\r\n isLargeDisplayMode: isLargeDisplayMode,\r\n pageSize: pageSize,\r\n pageSizeChange: pageSizeChange,\r\n pageSizes: pageSizes\r\n }), pagesContainerVisible && createVNode(1, \"div\", PAGER_PAGES_CLASS, [infoVisible && createComponentVNode(2, InfoText, {\r\n rootElementRef: infoTextRef,\r\n infoText: infoText,\r\n pageCount: pageCount,\r\n pageIndex: pageIndex,\r\n totalCount: totalCount\r\n }), pageIndexSelectorVisible && createVNode(1, \"div\", PAGER_PAGE_INDEXES_CLASS, createComponentVNode(2, PageIndexSelector, {\r\n hasKnownLastPage: hasKnownLastPage,\r\n isLargeDisplayMode: isLargeDisplayMode,\r\n maxPagesCount: maxPagesCount,\r\n pageCount: pageCount,\r\n pageIndex: pageIndex,\r\n pageIndexChange: pageIndexChange,\r\n pagesCountText: pagesCountText,\r\n showNavigationButtons: showNavigationButtons,\r\n totalCount: totalCount\r\n }), 2, null, null, pagesRef)], 0, {\r\n style: normalizeStyles({\r\n visibility: pagesContainerVisibility\r\n })\r\n })]\r\n })))\r\n};\r\nexport var PagerContentProps = _extends({}, PagerProps, {\r\n infoTextVisible: true,\r\n isLargeDisplayMode: true\r\n});\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class PagerContent extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this._currentState = null;\r\n this.widgetRootElementRef = infernoCreateRef();\r\n this.state = {\r\n pageIndex: void 0 !== this.props.pageIndex ? this.props.pageIndex : this.props.defaultPageIndex,\r\n pageSize: void 0 !== this.props.pageSize ? this.props.pageSize : this.props.defaultPageSize\r\n };\r\n this.createFakeInstance = this.createFakeInstance.bind(this);\r\n this.setRootElementRef = this.setRootElementRef.bind(this)\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.setRootElementRef, [])]\r\n }\r\n updateEffects() {}\r\n get __state_pageIndex() {\r\n var state = this._currentState || this.state;\r\n return void 0 !== this.props.pageIndex ? this.props.pageIndex : state.pageIndex\r\n }\r\n set_pageIndex(value) {\r\n this.setState(state => {\r\n var _this$props$pageIndex, _this$props;\r\n this._currentState = state;\r\n var newValue = value();\r\n null === (_this$props$pageIndex = (_this$props = this.props).pageIndexChange) || void 0 === _this$props$pageIndex ? void 0 : _this$props$pageIndex.call(_this$props, newValue);\r\n this._currentState = null;\r\n return {\r\n pageIndex: newValue\r\n }\r\n })\r\n }\r\n get __state_pageSize() {\r\n var state = this._currentState || this.state;\r\n return void 0 !== this.props.pageSize ? this.props.pageSize : state.pageSize\r\n }\r\n set_pageSize(value) {\r\n this.setState(state => {\r\n var _this$props$pageSizeC, _this$props2;\r\n this._currentState = state;\r\n var newValue = value();\r\n null === (_this$props$pageSizeC = (_this$props2 = this.props).pageSizeChange) || void 0 === _this$props$pageSizeC ? void 0 : _this$props$pageSizeC.call(_this$props2, newValue);\r\n this._currentState = null;\r\n return {\r\n pageSize: newValue\r\n }\r\n })\r\n }\r\n getChildContext() {\r\n return _extends({}, this.context, {\r\n KeyboardActionContext: this.keyboardAction\r\n })\r\n }\r\n setRootElementRef() {\r\n var {\r\n rootElementRef: rootElementRef\r\n } = this.props;\r\n if (rootElementRef) {\r\n rootElementRef.current = this.widgetRootElementRef.current\r\n }\r\n }\r\n createFakeInstance() {\r\n return {\r\n option: () => false,\r\n element: () => this.widgetRootElementRef.current,\r\n _createActionByOption: () => e => {\r\n var _this$props$onKeyDown, _this$props3;\r\n null === (_this$props$onKeyDown = (_this$props3 = this.props).onKeyDown) || void 0 === _this$props$onKeyDown ? void 0 : _this$props$onKeyDown.call(_this$props3, e)\r\n }\r\n }\r\n }\r\n get keyboardAction() {\r\n return {\r\n registerKeyboardAction: (element, action) => {\r\n var fakePagerInstance = this.createFakeInstance();\r\n return _registerKeyboardAction(\"pager\", fakePagerInstance, element, void 0, action)\r\n }\r\n }\r\n }\r\n get infoVisible() {\r\n var {\r\n infoTextVisible: infoTextVisible,\r\n showInfo: showInfo\r\n } = this.props;\r\n return showInfo && infoTextVisible && this.isLargeDisplayMode\r\n }\r\n get pageIndexSelectorVisible() {\r\n return 0 !== this.__state_pageSize\r\n }\r\n get normalizedDisplayMode() {\r\n var {\r\n displayMode: displayMode,\r\n lightModeEnabled: lightModeEnabled\r\n } = this.props;\r\n if (\"adaptive\" === displayMode && void 0 !== lightModeEnabled) {\r\n return lightModeEnabled ? \"compact\" : \"full\"\r\n }\r\n return displayMode\r\n }\r\n get pagesContainerVisible() {\r\n return !!this.props.pagesNavigatorVisible && this.props.pageCount > 0\r\n }\r\n get pagesContainerVisibility() {\r\n if (\"auto\" === this.props.pagesNavigatorVisible && 1 === this.props.pageCount && this.props.hasKnownLastPage) {\r\n return \"hidden\"\r\n }\r\n return\r\n }\r\n get isLargeDisplayMode() {\r\n var displayMode = this.normalizedDisplayMode;\r\n var result = false;\r\n if (\"adaptive\" === displayMode) {\r\n result = this.props.isLargeDisplayMode\r\n } else {\r\n result = \"full\" === displayMode\r\n }\r\n return result\r\n }\r\n get classes() {\r\n var classesMap = {\r\n [\"\".concat(this.props.className)]: !!this.props.className,\r\n [PAGER_CLASS]: true,\r\n [LIGHT_MODE_CLASS]: !this.isLargeDisplayMode\r\n };\r\n return combineClasses(classesMap)\r\n }\r\n get restAttributes() {\r\n var _this$props$pageIndex2 = _extends({}, this.props, {\r\n pageIndex: this.__state_pageIndex,\r\n pageSize: this.__state_pageSize\r\n }),\r\n restProps = _objectWithoutPropertiesLoose(_this$props$pageIndex2, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n pageIndex: this.__state_pageIndex,\r\n pageSize: this.__state_pageSize\r\n }),\r\n widgetRootElementRef: this.widgetRootElementRef,\r\n keyboardAction: this.keyboardAction,\r\n infoVisible: this.infoVisible,\r\n pageIndexSelectorVisible: this.pageIndexSelectorVisible,\r\n pagesContainerVisible: this.pagesContainerVisible,\r\n pagesContainerVisibility: this.pagesContainerVisibility,\r\n isLargeDisplayMode: this.isLargeDisplayMode,\r\n classes: this.classes,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nPagerContent.defaultProps = _extends({}, PagerContentProps);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/pager.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"className\", \"defaultPageIndex\", \"defaultPageSize\", \"displayMode\", \"gridCompatibility\", \"hasKnownLastPage\", \"infoText\", \"lightModeEnabled\", \"maxPagesCount\", \"onKeyDown\", \"pageCount\", \"pageIndex\", \"pageIndexChange\", \"pageSize\", \"pageSizeChange\", \"pageSizes\", \"pagesCountText\", \"pagesNavigatorVisible\", \"rtlEnabled\", \"showInfo\", \"showNavigationButtons\", \"showPageSizes\", \"totalCount\", \"visible\"];\r\nimport {\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoWrapperComponent\r\n} from \"@devextreme/vdom\";\r\nimport {\r\n ResizableContainer\r\n} from \"./resizable_container\";\r\nimport {\r\n PagerProps\r\n} from \"./common/pager_props\";\r\nimport {\r\n PagerContent\r\n} from \"./content\";\r\nimport {\r\n combineClasses\r\n} from \"../../utils/combine_classes\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n pagerProps: pagerProps,\r\n restAttributes: restAttributes\r\n } = _ref;\r\n return normalizeProps(createComponentVNode(2, ResizableContainer, _extends({\r\n contentTemplate: PagerContent,\r\n pagerProps: pagerProps\r\n }, restAttributes)))\r\n};\r\nexport class Pager extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this._currentState = null;\r\n this.state = {\r\n pageIndex: void 0 !== this.props.pageIndex ? this.props.pageIndex : this.props.defaultPageIndex,\r\n pageSize: void 0 !== this.props.pageSize ? this.props.pageSize : this.props.defaultPageSize\r\n };\r\n this.pageIndexChange = this.pageIndexChange.bind(this);\r\n this.pageSizeChange = this.pageSizeChange.bind(this)\r\n }\r\n get __state_pageIndex() {\r\n var state = this._currentState || this.state;\r\n return void 0 !== this.props.pageIndex ? this.props.pageIndex : state.pageIndex\r\n }\r\n set_pageIndex(value) {\r\n this.setState(state => {\r\n var _this$props$pageIndex, _this$props;\r\n this._currentState = state;\r\n var newValue = value();\r\n null === (_this$props$pageIndex = (_this$props = this.props).pageIndexChange) || void 0 === _this$props$pageIndex ? void 0 : _this$props$pageIndex.call(_this$props, newValue);\r\n this._currentState = null;\r\n return {\r\n pageIndex: newValue\r\n }\r\n })\r\n }\r\n get __state_pageSize() {\r\n var state = this._currentState || this.state;\r\n return void 0 !== this.props.pageSize ? this.props.pageSize : state.pageSize\r\n }\r\n set_pageSize(value) {\r\n this.setState(state => {\r\n var _this$props$pageSizeC, _this$props2;\r\n this._currentState = state;\r\n var newValue = value();\r\n null === (_this$props$pageSizeC = (_this$props2 = this.props).pageSizeChange) || void 0 === _this$props$pageSizeC ? void 0 : _this$props$pageSizeC.call(_this$props2, newValue);\r\n this._currentState = null;\r\n return {\r\n pageSize: newValue\r\n }\r\n })\r\n }\r\n pageIndexChange(newPageIndex) {\r\n if (this.props.gridCompatibility) {\r\n this.set_pageIndex(() => newPageIndex + 1)\r\n } else {\r\n this.set_pageIndex(() => newPageIndex)\r\n }\r\n }\r\n get pageIndex() {\r\n if (this.props.gridCompatibility) {\r\n return this.__state_pageIndex - 1\r\n }\r\n return this.__state_pageIndex\r\n }\r\n pageSizeChange(newPageSize) {\r\n this.set_pageSize(() => newPageSize)\r\n }\r\n get className() {\r\n if (this.props.gridCompatibility) {\r\n return combineClasses({\r\n \"dx-datagrid-pager\": true,\r\n [\"\".concat(this.props.className)]: !!this.props.className\r\n })\r\n }\r\n return this.props.className\r\n }\r\n get pagerProps() {\r\n return _extends({}, _extends({}, this.props, {\r\n pageIndex: this.__state_pageIndex,\r\n pageSize: this.__state_pageSize\r\n }), {\r\n className: this.className,\r\n pageIndex: this.pageIndex,\r\n pageIndexChange: pageIndex => this.pageIndexChange(pageIndex),\r\n pageSizeChange: pageSize => this.pageSizeChange(pageSize)\r\n })\r\n }\r\n get restAttributes() {\r\n var _this$props$pageIndex2 = _extends({}, this.props, {\r\n pageIndex: this.__state_pageIndex,\r\n pageSize: this.__state_pageSize\r\n }),\r\n restProps = _objectWithoutPropertiesLoose(_this$props$pageIndex2, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n pageIndex: this.__state_pageIndex,\r\n pageSize: this.__state_pageSize\r\n }),\r\n pageIndexChange: this.pageIndexChange,\r\n pageIndex: this.pageIndex,\r\n pageSizeChange: this.pageSizeChange,\r\n className: this.className,\r\n pagerProps: this.pagerProps,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nPager.defaultProps = _extends({}, PagerProps);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/pager/pager.j.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../core/component_registrator\";\r\nimport {\r\n GridPagerWrapper\r\n} from \"../../component_wrapper/grid_pager\";\r\nimport {\r\n Pager as PagerComponent\r\n} from \"./pager\";\r\nexport default class Pager extends GridPagerWrapper {\r\n getProps() {\r\n var props = super.getProps();\r\n props.onKeyDown = this._wrapKeyDownHandler(props.onKeyDown);\r\n return props\r\n }\r\n get _propsInfo() {\r\n return {\r\n twoWay: [\r\n [\"pageIndex\", 1, \"pageIndexChange\"],\r\n [\"pageSize\", 5, \"pageSizeChange\"]\r\n ],\r\n allowNull: [],\r\n elements: [],\r\n templates: [],\r\n props: [\"gridCompatibility\", \"className\", \"showInfo\", \"infoText\", \"lightModeEnabled\", \"displayMode\", \"maxPagesCount\", \"pageCount\", \"pagesCountText\", \"visible\", \"hasKnownLastPage\", \"pagesNavigatorVisible\", \"pageIndexChange\", \"pageSizeChange\", \"showPageSizes\", \"pageSizes\", \"rtlEnabled\", \"showNavigationButtons\", \"totalCount\", \"onKeyDown\", \"defaultPageIndex\", \"defaultPageSize\", \"pageIndex\", \"pageSize\"]\r\n }\r\n }\r\n get _viewComponent() {\r\n return PagerComponent\r\n }\r\n}\r\nregisterComponent(\"dxPager\", Pager);\r\n","/**\r\n * DevExtreme (esm/ui/pager.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Widget from \"../renovation/ui/pager/pager.j\";\r\nexport default Widget;\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.pager.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport Pager from \"../pager\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\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 = modules.View.inherit({\r\n init: function() {\r\n var dataController = this.getController(\"data\");\r\n dataController.changed.add(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 if (!e || \"update\" !== e.changeType && \"updateSelection\" !== e.changeType) {\r\n this.render()\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 $element = this.element().addClass(this.addWidgetPrefix(PAGER_CLASS));\r\n var pagerOptions = this.option(\"pager\") || {};\r\n var dataController = this.getController(\"data\");\r\n var keyboardController = this.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: this.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: e => keyboardController && keyboardController.executeAction(\"onKeyDown\", e),\r\n useLegacyKeyboardNavigation: this.option(\"useLegacyKeyboardNavigation\"),\r\n useKeyboard: this.option(\"keyboardNavigation.enabled\")\r\n };\r\n if (isDefined(pagerOptions.infoText)) {\r\n options.infoText = pagerOptions.infoText\r\n }\r\n if (hasWindow()) {\r\n this._createComponent($element, Pager, options)\r\n } else {\r\n $element.addClass(\"dx-pager\").html('
')\r\n }\r\n },\r\n getPageSizes: function() {\r\n var dataController = this.getController(\"data\");\r\n var pagerOptions = this.option(\"pager\");\r\n var allowedPageSizes = pagerOptions && pagerOptions.allowedPageSizes;\r\n var pageSize = dataController.pageSize();\r\n if (!isDefined(this._pageSizes) || -1 === inArray(pageSize, this._pageSizes)) {\r\n this._pageSizes = [];\r\n if (pagerOptions) {\r\n if (Array.isArray(allowedPageSizes)) {\r\n this._pageSizes = allowedPageSizes\r\n } else if (allowedPageSizes && pageSize > 1) {\r\n this._pageSizes = [Math.floor(pageSize / 2), pageSize, 2 * pageSize]\r\n }\r\n }\r\n }\r\n return this._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 (hasWindow() && isPager && this.component) {\r\n this.component.resize()\r\n }\r\n }\r\n }\r\n }\r\n});\r\nexport var pagerModule = {\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\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.rows.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n deferRender,\r\n deferUpdate\r\n} from \"../../core/utils/common\";\r\nimport {\r\n setHeight\r\n} from \"../../core/utils/style\";\r\nimport {\r\n isDefined,\r\n isNumeric,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getBoundingRect,\r\n getDefaultAlignment\r\n} from \"../../core/utils/position\";\r\nimport {\r\n isEmpty\r\n} from \"../../core/utils/string\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport gridCoreUtils from \"./ui.grid_core.utils\";\r\nimport {\r\n ColumnsView\r\n} from \"./ui.grid_core.columns_view\";\r\nimport Scrollable from \"../scroll_view/ui.scrollable\";\r\nimport {\r\n removeEvent\r\n} from \"../../core/remove_event\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport getScrollRtlBehavior from \"../../core/utils/scroll_rtl_behavior\";\r\nvar ROWS_VIEW_CLASS = \"rowsview\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar NOWRAP_CLASS = \"nowrap\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar GROUP_CELL_CLASS = \"dx-group-cell\";\r\nvar DATA_ROW_CLASS = \"dx-data-row\";\r\nvar FREE_SPACE_CLASS = \"dx-freespace-row\";\r\nvar ROW_LINES_CLASS = \"dx-row-lines\";\r\nvar COLUMN_LINES_CLASS = \"dx-column-lines\";\r\nvar ROW_ALTERNATION_CLASS = \"dx-row-alt\";\r\nvar LAST_ROW_BORDER = \"dx-last-row-border\";\r\nvar EMPTY_CLASS = \"dx-empty\";\r\nvar ROW_INSERTED_ANIMATION_CLASS = \"row-inserted-animation\";\r\nvar LOADPANEL_HIDE_TIMEOUT = 200;\r\n\r\nfunction getMaxHorizontalScrollOffset(scrollable) {\r\n return scrollable ? Math.round(scrollable.scrollWidth() - scrollable.clientWidth()) : 0\r\n}\r\nexport var rowsModule = {\r\n defaultOptions: function() {\r\n return {\r\n hoverStateEnabled: false,\r\n scrolling: {\r\n useNative: \"auto\"\r\n },\r\n loadPanel: {\r\n enabled: \"auto\",\r\n text: messageLocalization.format(\"Loading\"),\r\n width: 200,\r\n height: 90,\r\n showIndicator: true,\r\n indicatorSrc: \"\",\r\n showPane: true\r\n },\r\n rowTemplate: null,\r\n columnAutoWidth: false,\r\n noDataText: messageLocalization.format(\"dxDataGrid-noDataText\"),\r\n wordWrapEnabled: false,\r\n showColumnLines: true,\r\n showRowLines: false,\r\n rowAlternationEnabled: false,\r\n activeStateEnabled: false,\r\n twoWayBindingEnabled: true\r\n }\r\n },\r\n views: {\r\n rowsView: ColumnsView.inherit(function() {\r\n var defaultCellTemplate = function($container, options) {\r\n var isDataTextEmpty = isEmpty(options.text) && \"data\" === options.rowType;\r\n var text = options.text;\r\n var container = $container.get(0);\r\n if (isDataTextEmpty) {\r\n gridCoreUtils.setEmptyText($container)\r\n } else if (options.column.encodeHtml) {\r\n container.textContent = text\r\n } else {\r\n container.innerHTML = text\r\n }\r\n };\r\n return {\r\n _getDefaultTemplate: function(column) {\r\n switch (column.command) {\r\n case \"empty\":\r\n return function(container) {\r\n container.html(\" \")\r\n };\r\n default:\r\n return defaultCellTemplate\r\n }\r\n },\r\n _getDefaultGroupTemplate: function(column) {\r\n var summaryTexts = this.option(\"summary.texts\");\r\n return function($container, options) {\r\n var data = options.data;\r\n var text = options.column.caption + \": \" + options.text;\r\n var container = $container.get(0);\r\n if (options.summaryItems && options.summaryItems.length) {\r\n text += \" \" + gridCoreUtils.getGroupRowSummaryText(options.summaryItems, summaryTexts)\r\n }\r\n if (data) {\r\n if (options.groupContinuedMessage && options.groupContinuesMessage) {\r\n text += \" (\" + options.groupContinuedMessage + \". \" + options.groupContinuesMessage + \")\"\r\n } else if (options.groupContinuesMessage) {\r\n text += \" (\" + options.groupContinuesMessage + \")\"\r\n } else if (options.groupContinuedMessage) {\r\n text += \" (\" + options.groupContinuedMessage + \")\"\r\n }\r\n }\r\n $container.addClass(GROUP_CELL_CLASS);\r\n if (column.encodeHtml) {\r\n container.textContent = text\r\n } else {\r\n container.innerHTML = text\r\n }\r\n }\r\n },\r\n _update: function() {},\r\n _getCellTemplate: function(options) {\r\n var column = options.column;\r\n var template;\r\n if (\"group\" === options.rowType && isDefined(column.groupIndex) && !column.showWhenGrouped && !column.command) {\r\n template = column.groupCellTemplate || {\r\n allowRenderToDetachedContainer: true,\r\n render: this._getDefaultGroupTemplate(column)\r\n }\r\n } else if ((\"data\" === options.rowType || column.command) && column.cellTemplate) {\r\n template = column.cellTemplate\r\n } else {\r\n template = {\r\n allowRenderToDetachedContainer: true,\r\n render: this._getDefaultTemplate(column)\r\n }\r\n }\r\n return template\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row);\r\n if (row) {\r\n var isGroup = \"group\" === row.rowType;\r\n var isDataRow = \"data\" === row.rowType;\r\n isDataRow && $row.addClass(DATA_ROW_CLASS);\r\n isDataRow && this.option(\"showRowLines\") && $row.addClass(ROW_LINES_CLASS);\r\n this.option(\"showColumnLines\") && $row.addClass(COLUMN_LINES_CLASS);\r\n if (false === row.visible) {\r\n $row.hide()\r\n }\r\n if (isGroup) {\r\n $row.addClass(GROUP_ROW_CLASS);\r\n var isRowExpanded = row.isExpanded;\r\n this.setAria(\"role\", \"row\", $row);\r\n this.setAria(\"expanded\", isDefined(isRowExpanded) && isRowExpanded.toString(), $row)\r\n }\r\n }\r\n return $row\r\n },\r\n _rowPrepared: function($row, rowOptions, row) {\r\n if (\"data\" === rowOptions.rowType) {\r\n if (this.option(\"rowAlternationEnabled\")) {\r\n this._isAltRow(row) && $row.addClass(ROW_ALTERNATION_CLASS);\r\n rowOptions.watch && rowOptions.watch(() => this._isAltRow(row), value => {\r\n $row.toggleClass(ROW_ALTERNATION_CLASS, value)\r\n })\r\n }\r\n this._setAriaRowIndex(rowOptions, $row);\r\n rowOptions.watch && rowOptions.watch(() => rowOptions.rowIndex, () => this._setAriaRowIndex(rowOptions, $row))\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _setAriaRowIndex: function(row, $row) {\r\n var component = this.component;\r\n var isPagerMode = \"standard\" === component.option(\"scrolling.mode\") && \"virtual\" !== component.option(\"scrolling.rowRenderingMode\");\r\n var rowIndex = row.rowIndex + 1;\r\n if (isPagerMode) {\r\n rowIndex = component.pageIndex() * component.pageSize() + rowIndex\r\n } else {\r\n rowIndex += this._dataController.getRowIndexOffset()\r\n }\r\n this.setAria(\"rowindex\", rowIndex, $row)\r\n },\r\n _afterRowPrepared: function(e) {\r\n var arg = e.args[0];\r\n var dataController = this._dataController;\r\n var row = dataController.getVisibleRows()[arg.rowIndex];\r\n var watch = this.option(\"integrationOptions.watchMethod\");\r\n if (!arg.data || \"data\" !== arg.rowType || arg.isNewRow || !this.option(\"twoWayBindingEnabled\") || !watch || !row) {\r\n return\r\n }\r\n var dispose = watch(() => dataController.generateDataValues(arg.data, arg.columns), () => {\r\n dataController.repaintRows([row.rowIndex], this.option(\"repaintChangesOnly\"))\r\n }, {\r\n deep: true,\r\n skipImmediate: true\r\n });\r\n eventsEngine.on(arg.rowElement, removeEvent, dispose)\r\n },\r\n _renderScrollable: function(force) {\r\n var $element = this.element();\r\n if (!$element.children().length) {\r\n $element.append(\"
\")\r\n }\r\n if (force || !this._loadPanel) {\r\n this._renderLoadPanel($element, $element.parent(), this._dataController.isLocalStore())\r\n }\r\n if ((force || !this.getScrollable()) && this._dataController.isLoaded()) {\r\n var columns = this.getColumns();\r\n var allColumnsHasWidth = true;\r\n for (var i = 0; i < columns.length; i++) {\r\n if (!columns[i].width && !columns[i].minWidth) {\r\n allColumnsHasWidth = false;\r\n break\r\n }\r\n }\r\n if (this.option(\"columnAutoWidth\") || this._hasHeight || allColumnsHasWidth || this._columnsController._isColumnFixing()) {\r\n this._renderScrollableCore($element)\r\n }\r\n }\r\n },\r\n _handleScroll: function(e) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var isNativeScrolling = e.component.option(\"useNative\");\r\n this._isScrollByEvent = !!e.event;\r\n this._scrollTop = e.scrollOffset.top;\r\n this._scrollLeft = e.scrollOffset.left;\r\n var scrollLeft = e.scrollOffset.left;\r\n if (rtlEnabled) {\r\n this._scrollRight = getMaxHorizontalScrollOffset(e.component) - this._scrollLeft;\r\n if (isNativeScrolling) {\r\n scrollLeft = getScrollRtlBehavior().positive ? this._scrollRight : -this._scrollRight\r\n }\r\n if (!this.isScrollbarVisible(true)) {\r\n this._scrollLeft = -1\r\n }\r\n }\r\n this.scrollChanged.fire(_extends({}, e.scrollOffset, {\r\n left: scrollLeft\r\n }), this.name)\r\n },\r\n _renderScrollableCore: function($element) {\r\n var dxScrollableOptions = this._createScrollableOptions();\r\n var scrollHandler = this._handleScroll.bind(this);\r\n dxScrollableOptions.onScroll = scrollHandler;\r\n this._scrollable = this._createComponent($element, Scrollable, dxScrollableOptions);\r\n this._scrollableContainer = this._scrollable && this._scrollable._$container\r\n },\r\n _renderLoadPanel: gridCoreUtils.renderLoadPanel,\r\n _renderContent: function(contentElement, tableElement) {\r\n contentElement.empty().append(tableElement);\r\n return this._findContentElement()\r\n },\r\n _updateContent: function(newTableElement, change) {\r\n var that = this;\r\n var tableElement = that.getTableElement();\r\n var contentElement = that._findContentElement();\r\n var changeType = change && change.changeType;\r\n var executors = [];\r\n var highlightChanges = this.option(\"highlightChanges\");\r\n var rowInsertedClass = this.addWidgetPrefix(ROW_INSERTED_ANIMATION_CLASS);\r\n switch (changeType) {\r\n case \"update\":\r\n each(change.rowIndices, (function(index, rowIndex) {\r\n var $newRowElement = that._getRowElements(newTableElement).eq(index);\r\n var changeType = change.changeTypes && change.changeTypes[index];\r\n var item = change.items && change.items[index];\r\n executors.push((function() {\r\n var $rowsElement = that._getRowElements();\r\n var $rowElement = $rowsElement.eq(rowIndex);\r\n switch (changeType) {\r\n case \"update\":\r\n if (item) {\r\n var columnIndices = change.columnIndices && change.columnIndices[index];\r\n if (isDefined(item.visible) && item.visible !== $rowElement.is(\":visible\")) {\r\n $rowElement.toggle(item.visible)\r\n } else if (columnIndices) {\r\n that._updateCells($rowElement, $newRowElement, columnIndices)\r\n } else {\r\n $rowElement.replaceWith($newRowElement)\r\n }\r\n }\r\n break;\r\n case \"insert\":\r\n if (!$rowsElement.length) {\r\n if (tableElement) {\r\n var target = $newRowElement.is(\"tbody\") ? tableElement : tableElement.children(\"tbody\");\r\n $newRowElement.prependTo(target)\r\n }\r\n } else if ($rowElement.length) {\r\n $newRowElement.insertBefore($rowElement)\r\n } else {\r\n $newRowElement.insertAfter($rowsElement.last())\r\n }\r\n if (highlightChanges && change.isLiveUpdate) {\r\n $newRowElement.addClass(rowInsertedClass)\r\n }\r\n break;\r\n case \"remove\":\r\n $rowElement.remove()\r\n }\r\n }))\r\n }));\r\n each(executors, (function() {\r\n this()\r\n }));\r\n newTableElement.remove();\r\n break;\r\n default:\r\n that.setTableElement(newTableElement);\r\n contentElement.addClass(that.addWidgetPrefix(CONTENT_CLASS));\r\n that._renderContent(contentElement, newTableElement)\r\n }\r\n },\r\n _createEmptyRow: function(className, isFixed, height) {\r\n var $cell;\r\n var $row = this._createRow();\r\n var columns = isFixed ? this.getFixedColumns() : this.getColumns();\r\n $row.addClass(className).toggleClass(COLUMN_LINES_CLASS, this.option(\"showColumnLines\"));\r\n for (var i = 0; i < columns.length; i++) {\r\n $cell = this._createCell({\r\n column: columns[i],\r\n rowType: \"freeSpace\",\r\n columnIndex: i,\r\n columns: columns\r\n });\r\n isNumeric(height) && $cell.css(\"height\", height);\r\n $row.append($cell)\r\n }\r\n this.setAria(\"role\", \"presentation\", $row);\r\n return $row\r\n },\r\n _appendEmptyRow: function($table, $emptyRow, location) {\r\n var $tBodies = this._getBodies($table);\r\n var isTableContainer = !$tBodies.length || $emptyRow.is(\"tbody\");\r\n var $container = isTableContainer ? $table : $tBodies;\r\n if (\"top\" === location) {\r\n $container.first().prepend($emptyRow);\r\n if (isTableContainer) {\r\n var $colgroup = $container.children(\"colgroup\");\r\n $container.prepend($colgroup)\r\n }\r\n } else {\r\n $container.last().append($emptyRow)\r\n }\r\n },\r\n _renderFreeSpaceRow: function($tableElement) {\r\n var $freeSpaceRowElement = this._createEmptyRow(FREE_SPACE_CLASS);\r\n $freeSpaceRowElement = this._wrapRowIfNeed($tableElement, $freeSpaceRowElement);\r\n this._appendEmptyRow($tableElement, $freeSpaceRowElement)\r\n },\r\n _checkRowKeys: function(options) {\r\n var that = this;\r\n var rows = that._getRows(options);\r\n var keyExpr = that._dataController.store() && that._dataController.store().key();\r\n keyExpr && rows.some((function(row) {\r\n if (\"data\" === row.rowType && void 0 === row.key) {\r\n that._dataController.fireError(\"E1046\", keyExpr);\r\n return true\r\n }\r\n }))\r\n },\r\n _needUpdateRowHeight: function(itemsCount) {\r\n return itemsCount > 0 && !this._rowHeight\r\n },\r\n _getRowsHeight: function($tableElement) {\r\n var $rowElements = $tableElement.children(\"tbody\").children().not(\".dx-virtual-row\").not(\".\" + FREE_SPACE_CLASS);\r\n return $rowElements.toArray().reduce((function(sum, row) {\r\n return sum + getBoundingRect(row).height\r\n }), 0)\r\n },\r\n _updateRowHeight: function() {\r\n var $tableElement = this.getTableElement();\r\n var itemsCount = this._dataController.items().length;\r\n if ($tableElement && this._needUpdateRowHeight(itemsCount)) {\r\n var rowsHeight = this._getRowsHeight($tableElement);\r\n this._rowHeight = rowsHeight / itemsCount\r\n }\r\n },\r\n _findContentElement: function() {\r\n var $content = this.element();\r\n var scrollable = this.getScrollable();\r\n if ($content) {\r\n if (scrollable) {\r\n $content = $(scrollable.content())\r\n }\r\n return $content.children().first()\r\n }\r\n },\r\n _getRowElements: function(tableElement) {\r\n var $rows = this.callBase(tableElement);\r\n return $rows && $rows.not(\".\" + FREE_SPACE_CLASS)\r\n },\r\n _getFreeSpaceRowElements: function($table) {\r\n var tableElements = $table || this.getTableElements();\r\n return tableElements && tableElements.children(\"tbody\").children(\".\" + FREE_SPACE_CLASS)\r\n },\r\n _getNoDataText: function() {\r\n return this.option(\"noDataText\")\r\n },\r\n _rowClick: function(e) {\r\n var item = this._dataController.items()[e.rowIndex] || {};\r\n this.executeAction(\"onRowClick\", extend({\r\n evaluate: function(expr) {\r\n var getter = compileGetter(expr);\r\n return getter(item.data)\r\n }\r\n }, e, item))\r\n },\r\n _rowDblClick: function(e) {\r\n var item = this._dataController.items()[e.rowIndex] || {};\r\n this.executeAction(\"onRowDblClick\", extend({}, e, item))\r\n },\r\n _getColumnsCountBeforeGroups: function(columns) {\r\n for (var i = 0; i < columns.length; i++) {\r\n if (\"groupExpand\" === columns[i].type) {\r\n return i\r\n }\r\n }\r\n return 0\r\n },\r\n _getGroupCellOptions: function(options) {\r\n var columnsCountBeforeGroups = this._getColumnsCountBeforeGroups(options.columns);\r\n var columnIndex = (options.row.groupIndex || 0) + columnsCountBeforeGroups;\r\n return {\r\n columnIndex: columnIndex,\r\n colspan: options.columns.length - columnIndex - 1\r\n }\r\n },\r\n _renderCells: function($row, options) {\r\n if (\"group\" === options.row.rowType) {\r\n this._renderGroupedCells($row, options)\r\n } else if (options.row.values) {\r\n this.callBase($row, options)\r\n }\r\n },\r\n _renderGroupedCells: function($row, options) {\r\n var row = options.row;\r\n var expandColumn;\r\n var columns = options.columns;\r\n var rowIndex = row.rowIndex;\r\n var isExpanded;\r\n var groupCellOptions = this._getGroupCellOptions(options);\r\n for (var i = 0; i <= groupCellOptions.columnIndex; i++) {\r\n if (i === groupCellOptions.columnIndex && columns[i].allowCollapsing && \"infinite\" !== options.scrollingMode) {\r\n isExpanded = !!row.isExpanded;\r\n expandColumn = columns[i]\r\n } else {\r\n isExpanded = null;\r\n expandColumn = {\r\n command: \"expand\",\r\n cssClass: columns[i].cssClass\r\n }\r\n }\r\n this._renderCell($row, {\r\n value: isExpanded,\r\n row: row,\r\n rowIndex: rowIndex,\r\n column: expandColumn,\r\n columnIndex: i\r\n })\r\n }\r\n var groupColumnAlignment = getDefaultAlignment(this.option(\"rtlEnabled\"));\r\n var groupColumn = extend({}, columns[groupCellOptions.columnIndex], {\r\n command: null,\r\n cssClass: null,\r\n width: null,\r\n showWhenGrouped: false,\r\n alignment: groupColumnAlignment\r\n });\r\n if (groupCellOptions.colspan > 1) {\r\n groupColumn.colspan = groupCellOptions.colspan\r\n }\r\n this._renderCell($row, {\r\n value: row.values[row.groupIndex],\r\n row: row,\r\n rowIndex: rowIndex,\r\n column: groupColumn,\r\n columnIndex: groupCellOptions.columnIndex\r\n })\r\n },\r\n _renderRows: function($table, options) {\r\n var scrollingMode = this.option(\"scrolling.mode\");\r\n this.callBase($table, extend({\r\n scrollingMode: scrollingMode\r\n }, options));\r\n this._checkRowKeys(options.change);\r\n this._renderFreeSpaceRow($table);\r\n if (!this._hasHeight) {\r\n this.updateFreeSpaceRowHeight($table)\r\n }\r\n },\r\n _renderRow: function($table, options) {\r\n var row = options.row;\r\n var rowTemplate = this.option(\"rowTemplate\");\r\n if ((\"data\" === row.rowType || \"group\" === row.rowType) && !isDefined(row.groupIndex) && rowTemplate) {\r\n this.renderTemplate($table, rowTemplate, extend({\r\n columns: options.columns\r\n }, row), true)\r\n } else {\r\n this.callBase($table, options)\r\n }\r\n },\r\n _renderTable: function(options) {\r\n var that = this;\r\n var $table = that.callBase(options);\r\n if (!isDefined(that.getTableElement())) {\r\n that.setTableElement($table);\r\n that._renderScrollable(true);\r\n that.resizeCompleted.add((function resizeCompletedHandler() {\r\n var scrollableInstance = that.getScrollable();\r\n if (scrollableInstance && that.element().closest(getWindow().document).length) {\r\n that.resizeCompleted.remove(resizeCompletedHandler);\r\n scrollableInstance._visibilityChanged(true)\r\n }\r\n }))\r\n } else {\r\n that._renderScrollable()\r\n }\r\n return $table\r\n },\r\n _createTable: function() {\r\n var $table = this.callBase.apply(this, arguments);\r\n if (this.option(\"rowTemplate\")) {\r\n $table.appendTo(this.component.$element())\r\n }\r\n return $table\r\n },\r\n _renderCore: function(change) {\r\n var $element = this.element();\r\n $element.addClass(this.addWidgetPrefix(ROWS_VIEW_CLASS)).toggleClass(this.addWidgetPrefix(NOWRAP_CLASS), !this.option(\"wordWrapEnabled\"));\r\n $element.toggleClass(EMPTY_CLASS, 0 === this._dataController.items().length);\r\n this.setAria(\"role\", \"presentation\", $element);\r\n var $table = this._renderTable({\r\n change: change\r\n });\r\n this._updateContent($table, change);\r\n this.callBase(change);\r\n this._lastColumnWidths = null\r\n },\r\n _getRows: function(change) {\r\n return change && change.items || this._dataController.items()\r\n },\r\n _getCellOptions: function(options) {\r\n var column = options.column;\r\n var row = options.row;\r\n var data = row.data;\r\n var summaryCells = row && row.summaryCells;\r\n var value = options.value;\r\n var displayValue = gridCoreUtils.getDisplayValue(column, value, data, row.rowType);\r\n var parameters = this.callBase(options);\r\n parameters.value = value;\r\n parameters.oldValue = options.oldValue;\r\n parameters.displayValue = displayValue;\r\n parameters.row = row;\r\n parameters.key = row.key;\r\n parameters.data = data;\r\n parameters.rowType = row.rowType;\r\n parameters.values = row.values;\r\n parameters.text = !column.command ? gridCoreUtils.formatValue(displayValue, column) : \"\";\r\n parameters.rowIndex = row.rowIndex;\r\n parameters.summaryItems = summaryCells && summaryCells[options.columnIndex];\r\n parameters.resized = column.resizedCallbacks;\r\n if (isDefined(column.groupIndex) && !column.command) {\r\n var groupingTextsOptions = this.option(\"grouping.texts\");\r\n var scrollingMode = this.option(\"scrolling.mode\");\r\n if (\"virtual\" !== scrollingMode && \"infinite\" !== scrollingMode) {\r\n parameters.groupContinuesMessage = data && data.isContinuationOnNextPage && groupingTextsOptions && groupingTextsOptions.groupContinuesMessage;\r\n parameters.groupContinuedMessage = data && data.isContinuation && groupingTextsOptions && groupingTextsOptions.groupContinuedMessage\r\n }\r\n }\r\n return parameters\r\n },\r\n _setRowsOpacityCore: function($rows, visibleColumns, columnIndex, value) {\r\n var columnsController = this._columnsController;\r\n var columns = columnsController.getColumns();\r\n var column = columns && columns[columnIndex];\r\n var columnID = column && column.isBand && column.index;\r\n each($rows, (function(rowIndex, row) {\r\n if (!$(row).hasClass(GROUP_ROW_CLASS)) {\r\n for (var i = 0; i < visibleColumns.length; i++) {\r\n if (isNumeric(columnID) && columnsController.isParentBandColumn(visibleColumns[i].index, columnID) || visibleColumns[i].index === columnIndex) {\r\n $rows.eq(rowIndex).children().eq(i).css({\r\n opacity: value\r\n });\r\n if (!isNumeric(columnID)) {\r\n break\r\n }\r\n }\r\n }\r\n }\r\n }))\r\n },\r\n _getDevicePixelRatio: function() {\r\n return getWindow().devicePixelRatio\r\n },\r\n renderNoDataText: gridCoreUtils.renderNoDataText,\r\n getCellOptions: function(rowIndex, columnIdentifier) {\r\n var rowOptions = this._dataController.items()[rowIndex];\r\n var cellOptions;\r\n var column;\r\n if (rowOptions) {\r\n if (isString(columnIdentifier)) {\r\n column = this._columnsController.columnOption(columnIdentifier)\r\n } else {\r\n column = this._columnsController.getVisibleColumns()[columnIdentifier]\r\n }\r\n if (column) {\r\n cellOptions = this._getCellOptions({\r\n value: column.calculateCellValue(rowOptions.data),\r\n rowIndex: rowOptions.rowIndex,\r\n row: rowOptions,\r\n column: column\r\n })\r\n }\r\n }\r\n return cellOptions\r\n },\r\n getRow: function(index) {\r\n if (index >= 0) {\r\n var rows = this._getRowElements();\r\n if (rows.length > index) {\r\n return $(rows[index])\r\n }\r\n }\r\n },\r\n updateFreeSpaceRowHeight: function($table) {\r\n var dataController = this._dataController;\r\n var itemCount = dataController.items(true).length;\r\n var contentElement = this._findContentElement();\r\n var freeSpaceRowElements = this._getFreeSpaceRowElements($table);\r\n if (freeSpaceRowElements && contentElement && dataController.totalCount() >= 0) {\r\n var isFreeSpaceRowVisible = false;\r\n if (itemCount > 0) {\r\n if (!this._hasHeight) {\r\n var freeSpaceRowCount = dataController.pageSize() - itemCount;\r\n var scrollingMode = this.option(\"scrolling.mode\");\r\n if (freeSpaceRowCount > 0 && dataController.pageCount() > 1 && \"virtual\" !== scrollingMode && \"infinite\" !== scrollingMode) {\r\n setHeight(freeSpaceRowElements, freeSpaceRowCount * this._rowHeight);\r\n isFreeSpaceRowVisible = true\r\n }\r\n if (!isFreeSpaceRowVisible && $table) {\r\n setHeight(freeSpaceRowElements, 0)\r\n } else {\r\n freeSpaceRowElements.toggle(isFreeSpaceRowVisible)\r\n }\r\n this._updateLastRowBorder(isFreeSpaceRowVisible)\r\n } else {\r\n freeSpaceRowElements.hide();\r\n deferUpdate(() => {\r\n var scrollbarWidth = this.getScrollbarWidth(true);\r\n var elementHeightWithoutScrollbar = this.element().height() - scrollbarWidth;\r\n var contentHeight = contentElement.outerHeight();\r\n var showFreeSpaceRow = elementHeightWithoutScrollbar - contentHeight > 0;\r\n var rowsHeight = this._getRowsHeight(contentElement.children().first());\r\n var $tableElement = $table || this.getTableElements();\r\n var borderTopWidth = Math.ceil(parseFloat($tableElement.css(\"borderTopWidth\")));\r\n var heightCorrection = this._getHeightCorrection();\r\n var resultHeight = elementHeightWithoutScrollbar - rowsHeight - borderTopWidth - heightCorrection;\r\n if (showFreeSpaceRow) {\r\n deferRender(() => {\r\n freeSpaceRowElements.css(\"height\", resultHeight);\r\n isFreeSpaceRowVisible = true;\r\n freeSpaceRowElements.show()\r\n })\r\n }\r\n deferRender(() => this._updateLastRowBorder(isFreeSpaceRowVisible))\r\n })\r\n }\r\n } else {\r\n freeSpaceRowElements.css(\"height\", 0);\r\n freeSpaceRowElements.show();\r\n this._updateLastRowBorder(true)\r\n }\r\n }\r\n },\r\n _getHeightCorrection: function() {\r\n var isZoomedWebkit = browser.webkit && this._getDevicePixelRatio() >= 2;\r\n var isChromeLatest = browser.chrome && browser.version >= 91;\r\n var hasExtraBorderTop = browser.mozilla && browser.version >= 70 && !this.option(\"showRowLines\");\r\n return isZoomedWebkit || hasExtraBorderTop || isChromeLatest ? 1 : 0\r\n },\r\n _columnOptionChanged: function(e) {\r\n var optionNames = e.optionNames;\r\n if (e.changeTypes.grouping) {\r\n return\r\n }\r\n if (optionNames.width || optionNames.visibleWidth) {\r\n this.callBase(e);\r\n this._fireColumnResizedCallbacks()\r\n }\r\n },\r\n getScrollable: function() {\r\n return this._scrollable\r\n },\r\n init: function() {\r\n var that = this;\r\n var dataController = that.getController(\"data\");\r\n that.callBase();\r\n that._editorFactoryController = that.getController(\"editorFactory\");\r\n that._rowHeight = 0;\r\n that._scrollTop = 0;\r\n that._scrollLeft = -1;\r\n that._scrollRight = 0;\r\n that._hasHeight = false;\r\n dataController.loadingChanged.add((function(isLoading, messageText) {\r\n that.setLoading(isLoading, messageText)\r\n }));\r\n dataController.dataSourceChanged.add((function() {\r\n if (that._scrollLeft >= 0) {\r\n that._handleScroll({\r\n component: that.getScrollable(),\r\n scrollOffset: {\r\n top: that._scrollTop,\r\n left: that._scrollLeft\r\n }\r\n })\r\n }\r\n }))\r\n },\r\n _handleDataChanged: function(change) {\r\n switch (change.changeType) {\r\n case \"refresh\":\r\n case \"prepend\":\r\n case \"append\":\r\n case \"update\":\r\n this.render(null, change);\r\n break;\r\n default:\r\n this._update(change)\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"isScrollbarVisible\", \"getTopVisibleRowData\", \"getScrollbarWidth\", \"getCellElement\", \"getRowElement\", \"getScrollable\"]\r\n },\r\n contentWidth: function() {\r\n return this.element().width() - this.getScrollbarWidth()\r\n },\r\n getScrollbarWidth: function(isHorizontal) {\r\n var scrollableContainer = this._scrollableContainer && this._scrollableContainer.get(0);\r\n var scrollbarWidth = 0;\r\n if (scrollableContainer) {\r\n if (!isHorizontal) {\r\n scrollbarWidth = scrollableContainer.clientWidth ? scrollableContainer.offsetWidth - scrollableContainer.clientWidth : 0\r\n } else {\r\n scrollbarWidth = scrollableContainer.clientHeight ? scrollableContainer.offsetHeight - scrollableContainer.clientHeight : 0;\r\n scrollbarWidth += (that = this, scrollable = that.getScrollable(), scrollable ? Math.ceil(parseFloat($(scrollable.content()).css(\"paddingBottom\"))) : 0)\r\n }\r\n }\r\n var that, scrollable;\r\n return scrollbarWidth > 0 ? scrollbarWidth : 0\r\n },\r\n _fireColumnResizedCallbacks: function() {\r\n var lastColumnWidths = this._lastColumnWidths || [];\r\n var columnWidths = [];\r\n var columns = this.getColumns();\r\n for (var i = 0; i < columns.length; i++) {\r\n columnWidths[i] = columns[i].visibleWidth;\r\n if (columns[i].resizedCallbacks && !isDefined(columns[i].groupIndex) && lastColumnWidths[i] !== columnWidths[i]) {\r\n columns[i].resizedCallbacks.fire(columnWidths[i])\r\n }\r\n }\r\n this._lastColumnWidths = columnWidths\r\n },\r\n _updateLastRowBorder: function(isFreeSpaceRowVisible) {\r\n if (this.option(\"showBorders\") && this.option(\"showRowLines\") && !isFreeSpaceRowVisible) {\r\n this.element().addClass(LAST_ROW_BORDER)\r\n } else {\r\n this.element().removeClass(LAST_ROW_BORDER)\r\n }\r\n },\r\n _updateScrollable: function() {\r\n var dxScrollable = Scrollable.getInstance(this.element());\r\n if (dxScrollable) {\r\n dxScrollable.update();\r\n this._updateHorizontalScrollPosition()\r\n }\r\n },\r\n _updateHorizontalScrollPosition: function() {\r\n var scrollable = this.getScrollable();\r\n var scrollLeft = scrollable && scrollable.scrollOffset().left;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n if (rtlEnabled) {\r\n var maxHorizontalScrollOffset = getMaxHorizontalScrollOffset(scrollable);\r\n var scrollRight = maxHorizontalScrollOffset - scrollLeft;\r\n if (scrollRight !== this._scrollRight) {\r\n this._scrollLeft = maxHorizontalScrollOffset - this._scrollRight\r\n }\r\n }\r\n if (this._scrollLeft >= 0 && scrollLeft !== this._scrollLeft) {\r\n scrollable.scrollTo({\r\n x: this._scrollLeft\r\n })\r\n }\r\n },\r\n _resizeCore: function() {\r\n var that = this;\r\n that._fireColumnResizedCallbacks();\r\n that._updateRowHeight();\r\n deferRender((function() {\r\n that._renderScrollable();\r\n that.renderNoDataText();\r\n that.updateFreeSpaceRowHeight();\r\n deferUpdate((function() {\r\n that._updateScrollable()\r\n }))\r\n }))\r\n },\r\n scrollTo: function(location) {\r\n var $element = this.element();\r\n var dxScrollable = $element && Scrollable.getInstance($element);\r\n if (dxScrollable) {\r\n dxScrollable.scrollTo(location)\r\n }\r\n },\r\n height: function(_height, hasHeight) {\r\n var that = this;\r\n var $element = this.element();\r\n if (0 === arguments.length) {\r\n return $element ? $element.outerHeight(true) : 0\r\n }\r\n that._hasHeight = void 0 === hasHeight ? \"auto\" !== _height : hasHeight;\r\n if (isDefined(_height) && $element) {\r\n setHeight($element, _height)\r\n }\r\n },\r\n setLoading: function(isLoading, messageText) {\r\n var loadPanel = this._loadPanel;\r\n var dataController = this._dataController;\r\n var loadPanelOptions = this.option(\"loadPanel\") || {};\r\n var animation = dataController.isLoaded() ? loadPanelOptions.animation : null;\r\n var $element = this.element();\r\n if (!hasWindow()) {\r\n return\r\n }\r\n if (!loadPanel && void 0 !== messageText && dataController.isLocalStore() && \"auto\" === loadPanelOptions.enabled && $element) {\r\n this._renderLoadPanel($element, $element.parent());\r\n loadPanel = this._loadPanel\r\n }\r\n if (loadPanel) {\r\n var visibilityOptions = {\r\n message: messageText || loadPanelOptions.text,\r\n animation: animation,\r\n visible: isLoading\r\n };\r\n clearTimeout(this._hideLoadingTimeoutID);\r\n if (loadPanel.option(\"visible\") && !isLoading) {\r\n this._hideLoadingTimeoutID = setTimeout((function() {\r\n loadPanel.option(visibilityOptions)\r\n }), LOADPANEL_HIDE_TIMEOUT)\r\n } else {\r\n loadPanel.option(visibilityOptions)\r\n }\r\n }\r\n },\r\n setRowsOpacity: function(columnIndex, value) {\r\n var $rows = this._getRowElements().not(\".\" + GROUP_ROW_CLASS) || [];\r\n this._setRowsOpacityCore($rows, this.getColumns(), columnIndex, value)\r\n },\r\n _getCellElementsCore: function(rowIndex) {\r\n var $cells = this.callBase.apply(this, arguments);\r\n if ($cells) {\r\n var groupCellIndex = $cells.filter(\".\" + GROUP_CELL_CLASS).index();\r\n if (groupCellIndex >= 0 && $cells.length > groupCellIndex + 1) {\r\n return $cells.slice(0, groupCellIndex + 1)\r\n }\r\n }\r\n return $cells\r\n },\r\n getTopVisibleItemIndex: function(isFloor) {\r\n var itemIndex = 0;\r\n var prevOffsetTop = 0;\r\n var offsetTop = 0;\r\n var scrollPosition = this._scrollTop;\r\n var $contentElement = this._findContentElement();\r\n var contentElementOffsetTop = $contentElement && $contentElement.offset().top;\r\n var items = this._dataController.items();\r\n var tableElement = this.getTableElement();\r\n if (items.length && tableElement) {\r\n var rowElements = this._getRowElements(tableElement).filter(\":visible\");\r\n for (itemIndex = 0; itemIndex < items.length; itemIndex++) {\r\n prevOffsetTop = offsetTop;\r\n var rowElement = rowElements.eq(itemIndex);\r\n if (rowElement.length) {\r\n offsetTop = rowElement.offset().top - contentElementOffsetTop;\r\n if (offsetTop > scrollPosition) {\r\n if (itemIndex) {\r\n if (isFloor || 2 * scrollPosition < Math.round(offsetTop + prevOffsetTop)) {\r\n itemIndex--\r\n }\r\n }\r\n break\r\n }\r\n }\r\n }\r\n if (itemIndex && itemIndex === items.length) {\r\n itemIndex--\r\n }\r\n }\r\n return itemIndex\r\n },\r\n getTopVisibleRowData: function() {\r\n var itemIndex = this.getTopVisibleItemIndex();\r\n var items = this._dataController.items();\r\n if (items[itemIndex]) {\r\n return items[itemIndex].data\r\n }\r\n },\r\n _scrollToElement: function($element, offset) {\r\n var scrollable = this.getScrollable();\r\n scrollable && scrollable.scrollToElement($element, offset)\r\n },\r\n optionChanged: function(args) {\r\n this.callBase(args);\r\n switch (args.name) {\r\n case \"wordWrapEnabled\":\r\n case \"showColumnLines\":\r\n case \"showRowLines\":\r\n case \"rowAlternationEnabled\":\r\n case \"rowTemplate\":\r\n case \"twoWayBindingEnabled\":\r\n this._invalidate(true, true);\r\n args.handled = true;\r\n break;\r\n case \"scrolling\":\r\n this._rowHeight = null;\r\n this._tableElement = null;\r\n args.handled = true;\r\n break;\r\n case \"rtlEnabled\":\r\n this._rowHeight = null;\r\n this._tableElement = null;\r\n break;\r\n case \"loadPanel\":\r\n this._tableElement = null;\r\n this._invalidate(true, \"loadPanel.enabled\" !== args.fullName);\r\n args.handled = true;\r\n break;\r\n case \"noDataText\":\r\n this.renderNoDataText();\r\n args.handled = true\r\n }\r\n },\r\n dispose: function() {\r\n clearTimeout(this._hideLoadingTimeoutID);\r\n this._scrollable && this._scrollable.dispose()\r\n },\r\n setScrollerSpacing: function() {}\r\n }\r\n }())\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/svg.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n getWindow\r\n} from \"./window\";\r\nimport $ from \"../../core/renderer\";\r\nvar window = getWindow();\r\n\r\nfunction getMarkup(element, backgroundColor) {\r\n var temp = domAdapter.createElement(\"div\");\r\n var clone = element.cloneNode(true);\r\n if (backgroundColor) {\r\n $(clone).css(\"backgroundColor\", backgroundColor)\r\n }\r\n temp.appendChild(clone);\r\n return temp.innerHTML\r\n}\r\n\r\nfunction fixNamespaces(markup) {\r\n var first = true;\r\n if (-1 === markup.indexOf(\"xmlns:xlink\")) {\r\n markup = markup.replace(\" 0\r\n}\r\n\r\nfunction isMobile() {\r\n return \"desktop\" !== devices.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 || isDefined(column.command) && !isDefined(column.fixedPosition))\r\n } else {\r\n result = !(!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 = core.ViewController.inherit({\r\n init: function() {\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 this._editorFactory.focused.add($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._initViewHandlers();\r\n this._initDocumentHandlers();\r\n this.createAction(\"onKeyDown\")\r\n }\r\n },\r\n _initViewHandlers: function() {\r\n var rowsView = this.getView(\"rowsView\");\r\n var rowsViewFocusHandler = event => {\r\n var $element = $(event.target);\r\n var isRelatedTargetInRowsView = $(event.relatedTarget).closest(rowsView.element()).length;\r\n var isCommandButton = $element.hasClass(\"dx-link\");\r\n if (isCommandButton && !isRelatedTargetInRowsView && this._isEventInCurrentGrid(event)) {\r\n var $focusedCell = this._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 eventsEngine.trigger($focusedCell, \"focus\")\r\n }\r\n }\r\n };\r\n rowsView.renderCompleted.add(e => {\r\n var $rowsView = rowsView.element();\r\n var isFullUpdate = !e || \"refresh\" === e.changeType;\r\n var isFocusedViewCorrect = this._focusedView && this._focusedView.name === rowsView.name;\r\n var needUpdateFocus = false;\r\n var isAppend = e && (\"append\" === e.changeType || \"prepend\" === e.changeType);\r\n var $focusedElement = $(\":focus\");\r\n var isFocusedElementCorrect = !$focusedElement.length || $focusedElement.closest($rowsView).length || browser.msie && $focusedElement.is(\"body\");\r\n eventsEngine.off($rowsView, \"focusin\", rowsViewFocusHandler);\r\n eventsEngine.on($rowsView, \"focusin\", rowsViewFocusHandler);\r\n this._initPointerEventHandler();\r\n this._initKeyDownHandler();\r\n this._setRowsViewAttributes();\r\n if (isFocusedViewCorrect && isFocusedElementCorrect) {\r\n needUpdateFocus = this._isNeedFocus ? !isAppend : this._isHiddenFocus && isFullUpdate;\r\n needUpdateFocus && this._updateFocus(true)\r\n }\r\n })\r\n },\r\n _initDocumentHandlers: function() {\r\n var document = domAdapter.getDocument();\r\n this._documentClickHandler = this.createAction(e => {\r\n var $target = $(e.event.target);\r\n var isCurrentRowsViewClick = this._isEventInCurrentGrid(e.event) && $target.closest(\".\".concat(this.addWidgetPrefix(ROWS_VIEW_CLASS))).length;\r\n var isEditorOverlay = $target.closest(\".\".concat(DROPDOWN_EDITOR_OVERLAY_CLASS)).length;\r\n var columnsResizerController = this.getController(\"columnsResizer\");\r\n var isColumnResizing = !!columnsResizerController && columnsResizerController.isResizing();\r\n if (!isCurrentRowsViewClick && !isEditorOverlay && !isColumnResizing) {\r\n var targetInsideFocusedView = this._focusedView ? $target.parents().filter(this._focusedView.element()).length > 0 : false;\r\n !targetInsideFocusedView && this._resetFocusedCell(true);\r\n this._resetFocusedView()\r\n }\r\n });\r\n eventsEngine.on(document, addNamespace(pointerEvents.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() ? pointerEvents.down : clickEventName;\r\n var clickSelector = \".\".concat(ROW_CLASS, \" > td, .\").concat(ROW_CLASS);\r\n var $rowsView = this._getRowsViewElement();\r\n if (!isDefined(this._pointerEventAction)) {\r\n this._pointerEventAction = this.createAction(this._pointerEventHandler)\r\n }\r\n eventsEngine.off($rowsView, addNamespace(pointerEventName, \"dxDataGridKeyboardNavigation\"), this._pointerEventAction);\r\n eventsEngine.on($rowsView, addNamespace(pointerEventName, \"dxDataGridKeyboardNavigation\"), clickSelector, this._pointerEventAction)\r\n },\r\n _initKeyDownHandler: function() {\r\n var $rowsView = this._getRowsViewElement();\r\n keyboard.off(this._keyDownListener);\r\n this._keyDownListener = keyboard.on($rowsView, null, e => this._keyDownHandler(e))\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n this._resetFocusedView();\r\n keyboard.off(this._keyDownListener);\r\n eventsEngine.off(domAdapter.getDocument(), addNamespace(pointerEvents.down, \"dxDataGridKeyboardNavigation\"), this._documentClickHandler);\r\n clearTimeout(this._updateFocusTimeout);\r\n accessibility.unsubscribeVisibilityChange()\r\n },\r\n optionChanged: function(args) {\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 this.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 (isCommandKeyPressed(e.originalEvent)) {\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 (isCommandKeyPressed(e.originalEvent)) {\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 setTimeout(() => {\r\n this._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 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 _spaceKeyHandler: function(eventArgs, isEditing) {\r\n var rowIndex = this.getVisibleRowIndex();\r\n var $target = $(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.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 = isDefined(this._focusedCellPosition) && !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 }\r\n $(focusedViewElement).addClass(FOCUS_STATE_CLASS);\r\n if (editingOptions && eventTarget && !isOriginalHandlerRequired) {\r\n if ($(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 if (this._targetCellTabHandler(eventArgs, direction)) {\r\n isOriginalHandlerRequired = true\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() - $(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 if (isDefined(nextColumnIndex) && 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 _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.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 && $(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($(eventTarget))) {\r\n eventTarget = this.getFirstValidCellInRow($(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 if (\"upArrow\" === direction || \"downArrow\" === direction) {\r\n this._navigateNextCell(eventArgs.originalEvent, direction)\r\n }\r\n } else if (allowEditingOnEnterKey) {\r\n this._startEditing(eventArgs)\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 eventsEngine.trigger($(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 = $(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 = $(event.target).is(INTERACTIVE_ELEMENTS_SELECTOR);\r\n var isRevertButton = !!$(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) ? $(event.target) : $target;\r\n this._focusView();\r\n $(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 if (!this._isMasterDetailCell($target)) {\r\n this._clickTargetCellHandler(event, $target)\r\n } else {\r\n this._updateFocusedCellPosition($target)\r\n }\r\n } else if ($target.is(\"td\")) {\r\n this._resetFocusedCell()\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 && $(event.target).closest(INTERACTIVE_ELEMENTS_SELECTOR + \", td\");\r\n var isInteractiveTarget = $target && $target.not($cell).is(INTERACTIVE_ELEMENTS_SELECTOR);\r\n var isEditor = !!column && !column.command && $cell.hasClass(EDITOR_CELL_CLASS);\r\n var isDisabled = !isEditor && (!args.isHighlighted || isInteractiveTarget);\r\n this._focus($cell, isDisabled, isInteractiveTarget)\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($(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($(element), isHighlighted)\r\n },\r\n getFocusedView: function() {\r\n return this._focusedView\r\n },\r\n setupFocusedView: function() {\r\n if (this.isKeyboardEnabled() && !isDefined(this._focusedView)) {\r\n this._focusView()\r\n }\r\n },\r\n _focusElement: function($element, isHighlighted) {\r\n var rowsViewElement = $(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 && $(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 gridCoreUtils.focusAndSelectElement(this, $focusedElement)\r\n },\r\n _focus: function($cell, disableFocus, isInteractiveElement) {\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 if (isGroupRow($row) || this.isRowFocusType()) {\r\n $focusElement = $row;\r\n if (focusedView) {\r\n this.setFocusedRowIndex(this._getRowIndex($row))\r\n }\r\n } else if (isCellElement($cell)) {\r\n $focusElement = $cell;\r\n this._updateFocusedCellPosition($cell)\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 eventsEngine.one($focusElement, \"blur\", e => {\r\n if (e.relatedTarget) {\r\n $focusElement.removeClass(CELL_FOCUS_DISABLED_CLASS)\r\n }\r\n });\r\n if (!isInteractiveElement) {\r\n this._applyTabIndexToElement($focusElement);\r\n eventsEngine.trigger($focusElement, \"focus\")\r\n }\r\n if (disableFocus) {\r\n $focusElement.addClass(CELL_FOCUS_DISABLED_CLASS)\r\n } else {\r\n this._editorFactory.focus($focusElement)\r\n }\r\n }\r\n },\r\n _updateFocus: function(isRenderView) {\r\n this._updateFocusTimeout = setTimeout(() => {\r\n var editingController = this._editingController;\r\n var isCellEditMode = editingController.getEditMode() === EDIT_MODE_CELL;\r\n if (isCellEditMode && editingController.hasChanges()) {\r\n editingController._focusEditingCell();\r\n return\r\n }\r\n var $cell = this._getFocusedCell();\r\n var isEditing = editingController.isEditing();\r\n if ($cell && !(this._isMasterDetailCell($cell) && !this._isRowEditMode())) {\r\n if (this._hasSkipRow($cell.parent())) {\r\n var direction = this._focusedCellPosition && this._focusedCellPosition.rowIndex > 0 ? \"upArrow\" : \"downArrow\";\r\n $cell = this._getNextCell(direction)\r\n }\r\n if (isElementDefined($cell)) {\r\n if (isRenderView && !isEditing && this._checkCellOverlapped($cell)) {\r\n return\r\n }\r\n if ($cell.is(\"td\") || $cell.hasClass(this.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) && this._editorFactory.focus()) {\r\n if (isCommandCell && isFocusedElementDefined) {\r\n gridCoreUtils.focusAndSelectElement(this, $focusedElementInsideCell);\r\n return\r\n }!isFocusedElementDefined && this._focus($cell)\r\n } else if (!isFocusedElementDefined && (this._isNeedFocus || this._isHiddenFocus)) {\r\n this._focus($cell, this._isHiddenFocus)\r\n }\r\n if (isEditing) {\r\n this._focusInteractiveElement.bind(this)($cell)\r\n }\r\n } else {\r\n eventsEngine.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 if (cellOffset.top < 0) {\r\n isOverlapped = $cell.height() + cellOffset.top <= 0\r\n }\r\n }\r\n return isOverlapped\r\n },\r\n _getFocusedCell: function() {\r\n return $(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 && isDefined(null === (_this$_focusedCellPos = this._focusedCellPosition) || void 0 === _this$_focusedCellPos ? void 0 : _this$_focusedCellPos.columnIndex)) {\r\n var $row = $(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 if (columnIndex >= 0) {\r\n offset = this._columnsController.getColumnIndexOffset()\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 args;\r\n var $rowElement;\r\n var isUpArrow = isDefined(rowIndex);\r\n var rowsView = this.getView(\"rowsView\");\r\n var $rowsViewElement = rowsView.element();\r\n var columnIndex = this._focusedCellPosition.columnIndex;\r\n var rowIndexOffset = this._dataController.getRowIndexOffset();\r\n rowIndex = isUpArrow ? rowIndex : rowsView.getTopVisibleItemIndex() + rowIndexOffset;\r\n if (!isUpArrow) {\r\n this._editorFactory.loseFocus();\r\n this._applyTabIndexToElement($rowsViewElement);\r\n eventsEngine.trigger($rowsViewElement, \"focus\")\r\n } else {\r\n $rowElement = rowsView.getRow(rowIndex - rowIndexOffset);\r\n args = this._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 this.setFocusedCellPosition(rowIndex, columnIndex)\r\n }\r\n isUpArrow && this._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 if (!this._isLastRow(rowIndex) && \"next\" === code) {\r\n columnIndex = 0;\r\n rowIndex++\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 if (rowIndex > 0 && \"previous\" === code) {\r\n rowIndex--;\r\n visibleColumnsCount = this._getVisibleColumnCount();\r\n columnIndex = visibleColumnsCount - 1\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 (!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 (!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 if (columnIndex >= visibleColumnsCount) {\r\n columnIndex = visibleColumnsCount - 1\r\n }\r\n return columnIndex\r\n },\r\n _isCellByPositionValid: function(cellPosition) {\r\n var $cell = $(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 if (this._isMasterDetailCell($cell)) {\r\n return true\r\n }\r\n if (visibleColumnCount > columnIndex && (!isMasterDetailRow && column && (!isDefined(column.groupIndex) || isShowWhenGrouped && isDataCell) || parseInt($cell.attr(\"colspan\")) > 1)) {\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 $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 (this._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 || 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 = $(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 if (focusedCellPosition) {\r\n this._startEditCell(eventArgs, fastEditingKey)\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 this._fastEditingStarted = 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 if (editResult && editResult.done) {\r\n var editorValue = fastEditingKey !== FAST_EDITING_DELETE_KEY ? fastEditingKey : \"\";\r\n editResult.done(() => this._editingCellHandler(eventArgs, editorValue))\r\n }\r\n }\r\n },\r\n _editingCellHandler: function(eventArgs, editorValue) {\r\n var $input = this._getFocusedCell().find(\".dx-texteditor-input\").eq(0);\r\n var keyDownEvent = createEvent(eventArgs, {\r\n type: \"keydown\",\r\n target: $input.get(0)\r\n });\r\n var keyPressEvent = createEvent(eventArgs, {\r\n type: \"keypress\",\r\n target: $input.get(0)\r\n });\r\n var inputEvent = createEvent(eventArgs, {\r\n type: \"input\",\r\n target: $input.get(0)\r\n });\r\n $input.get(0).select();\r\n eventsEngine.trigger($input, keyDownEvent);\r\n if (!keyDownEvent.isDefaultPrevented()) {\r\n eventsEngine.trigger($input, keyPressEvent);\r\n if (!keyPressEvent.isDefaultPrevented()) {\r\n var timeout = browser.mozilla ? 25 : 0;\r\n setTimeout(() => {\r\n $input.val(editorValue);\r\n if (browser.msie) {\r\n gridCoreUtils.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 eventsEngine.off($widgetContainer, \"focusout\");\r\n eventsEngine.one($widgetContainer, \"focusout\", (function() {\r\n eventsEngine.trigger($input, \"change\")\r\n }));\r\n eventsEngine.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 = $(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 = $(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 prevCellIndex = this.option(\"focusedColumnIndex\");\r\n var prevRowIndex = this.option(\"focusedRowIndex\");\r\n var cellPosition = this._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: this._dataController.getVisibleRows(),\r\n columns: this._columnsController.getVisibleColumns(),\r\n event: $event,\r\n isHighlighted: isHighlighted || false,\r\n cancel: false\r\n };\r\n this._canceledCellPosition = null;\r\n this.executeAction(\"onFocusedCellChanging\", args);\r\n if (args.newColumnIndex !== columnIndex || args.newRowIndex !== rowIndex) {\r\n args.$newCellElement = $(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 dataController = this._dataController;\r\n var columnIndex = this.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 = this._editingController.isEditCell(localRowIndex, columnIndex);\r\n var row = dataController.items()[localRowIndex];\r\n if (!isEditingCell && (prevCellIndex !== columnIndex || prevRowIndex !== rowIndex)) {\r\n this.executeAction(\"onFocusedCellChanged\", {\r\n cellElement: $cellElement,\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex,\r\n row: row,\r\n column: this._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 gridCoreUtils.isElementInCurrentGrid(this, $(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\", 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 scrollable.on(\"scroll\", (function scrollHandler() {\r\n scrollable.off(\"scroll\", scrollHandler);\r\n setTimeout(that.restoreFocusableElement.bind(that, rowIndex, $event))\r\n }))\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 $(element).closest(\".\" + this.addWidgetPrefix(EDIT_FORM_CLASS)).length > 0\r\n },\r\n _isMasterDetailCell: function(element) {\r\n var $masterDetailCell = $(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($(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 $(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 = $(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\nexport var keyboardNavigationModule = {\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 = $(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 = 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 && !focused($rowsViewElement)) {\r\n $rowsViewElement.attr(\"tabindex\", null)\r\n }\r\n var rowIndex = keyboardController.getVisibleRowIndex();\r\n if (!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 (!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($(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(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, 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\", noop);\r\n editorInstance.registerKeyHandler(\"rightArrow\", noop);\r\n var isDateBoxWithMask = editorInstance.NAME === DATEBOX_WIDGET_NAME && editorInstance.option(\"useMaskBehavior\");\r\n if (isDateBoxWithMask) {\r\n editorInstance.registerKeyHandler(\"enter\", noop)\r\n }\r\n },\r\n _getEditorInstance: function($cell) {\r\n var $editor = $cell.find(\".dx-texteditor\").eq(0);\r\n return gridCoreUtils.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 this.closeEditCell().done(() => {\r\n var keyboardNavigation = this.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 {\r\n viewName: viewName,\r\n $cells: $cells,\r\n isCommandColumn: isCommandColumn\r\n } = _ref;\r\n this.callBase.apply(this, arguments);\r\n viewName === COLUMN_HEADERS_VIEW && !isCommandColumn && $cells.each((_, cellElement) => {\r\n var $cell = $(cellElement);\r\n isCellInHeaderRow($cell) && $cell.attr(\"tabindex\", 0)\r\n })\r\n },\r\n _hideVisibleCellInView: function(_ref2) {\r\n var {\r\n viewName: viewName,\r\n $cell: $cell,\r\n isCommandColumn: isCommandColumn\r\n } = _ref2;\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\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.modules.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Class from \"../../core/class\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n grep\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nvar WIDGET_WITH_LEGACY_CONTAINER_NAME = \"dxDataGrid\";\r\nvar ModuleItem = Class.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 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] = Callbacks(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] = messageLocalization.format(name)\r\n }\r\n return optionCache[name]\r\n }\r\n return messageLocalization.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 (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 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 = hasWindow() && (this.component._requireResize || requireResize);\r\n this._requireReady = this._requireReady || requireReady\r\n },\r\n _renderCore: function() {},\r\n _resizeCore: 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 = Callbacks();\r\n this.resizeCompleted = Callbacks()\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 = $(\"
\").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.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 eventsEngine.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 = inArray(module1.name, modulesOrder);\r\n var orderIndex2 = 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 }\r\n each(modules, (function() {\r\n var controllers = this.controllers;\r\n var moduleName = this.name;\r\n var views = this.views;\r\n controllers && each(controllers, (function(name, type) {\r\n if (controllerTypes[name]) {\r\n throw errors.Error(\"E1001\", moduleName, name)\r\n } else if (!(type && type.subclassOf && type.subclassOf(Controller))) {\r\n type.subclassOf(Controller);\r\n throw errors.Error(\"E1002\", moduleName, name)\r\n }\r\n controllerTypes[name] = type\r\n }));\r\n views && each(views, (function(name, type) {\r\n if (viewTypes[name]) {\r\n throw errors.Error(\"E1003\", moduleName, name)\r\n } else if (!(type && type.subclassOf && type.subclassOf(View))) {\r\n throw errors.Error(\"E1004\", moduleName, name)\r\n }\r\n viewTypes[name] = type\r\n }))\r\n }));\r\n each(modules, (function() {\r\n var extenders = this.extenders;\r\n if (extenders) {\r\n extenders.controllers && 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 && 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 createModuleItems = function(moduleTypes) {\r\n var moduleItems = {};\r\n each(moduleTypes, (function(name, moduleType) {\r\n var moduleItem = new moduleType(that);\r\n moduleItem.name = name;\r\n ! function(that, name, moduleItem) {\r\n var publicMethods = moduleItem.publicMethods();\r\n if (publicMethods) {\r\n 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 errors.Error(\"E1005\", methodName)\r\n }\r\n } else {\r\n throw errors.Error(\"E1006\", name, methodName)\r\n }\r\n }))\r\n }\r\n }(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 each(that._controllers, (function() {\r\n this[methodName] && this[methodName].apply(this, args)\r\n }))\r\n }\r\n if (that._views) {\r\n each(that._views, (function() {\r\n this[methodName] && this[methodName].apply(this, args)\r\n }))\r\n }\r\n};\r\nexport 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 = 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\n","/**\r\n * DevExtreme (esm/ui/context_menu/ui.menu_base.edit.strategy.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n map\r\n} from \"../../core/utils/iterator\";\r\nimport PlainEditStrategy from \"../collection/ui.collection_widget.edit.strategy.plain\";\r\nclass MenuBaseEditStrategy extends PlainEditStrategy {\r\n _getPlainItems() {\r\n return map(this._collectionWidget.option(\"items\"), (function getMenuItems(item) {\r\n return item.items ? [item].concat(map(item.items, getMenuItems)) : item\r\n }))\r\n }\r\n _stringifyItem(item) {\r\n return JSON.stringify(item, (key, value) => {\r\n if (\"template\" === key) {\r\n return this._getTemplateString(value)\r\n }\r\n return value\r\n })\r\n }\r\n _getTemplateString(template) {\r\n var result;\r\n if (\"object\" === typeof template) {\r\n result = $(template).text()\r\n } else {\r\n result = template.toString()\r\n }\r\n return result\r\n }\r\n}\r\nexport default MenuBaseEditStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/context_menu/ui.menu_base.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n noop,\r\n asyncNoop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isPlainObject,\r\n isObject,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n render\r\n} from \"../widget/utils.ink_ripple\";\r\nimport HierarchicalCollectionWidget from \"../hierarchical_collection/ui.hierarchical_collection_widget\";\r\nimport MenuBaseEditStrategy from \"./ui.menu_base.edit.strategy\";\r\nimport devices from \"../../core/devices\";\r\nimport MenuItem from \"../collection/item\";\r\nvar DX_MENU_CLASS = \"dx-menu\";\r\nvar DX_MENU_NO_ICONS_CLASS = DX_MENU_CLASS + \"-no-icons\";\r\nvar DX_MENU_BASE_CLASS = \"dx-menu-base\";\r\nvar ITEM_CLASS = DX_MENU_CLASS + \"-item\";\r\nvar DX_ITEM_CONTENT_CLASS = ITEM_CLASS + \"-content\";\r\nvar DX_MENU_SELECTED_ITEM_CLASS = ITEM_CLASS + \"-selected\";\r\nvar DX_MENU_ITEM_WRAPPER_CLASS = ITEM_CLASS + \"-wrapper\";\r\nvar DX_MENU_ITEMS_CONTAINER_CLASS = DX_MENU_CLASS + \"-items-container\";\r\nvar DX_MENU_ITEM_EXPANDED_CLASS = ITEM_CLASS + \"-expanded\";\r\nvar DX_MENU_SEPARATOR_CLASS = DX_MENU_CLASS + \"-separator\";\r\nvar DX_MENU_ITEM_LAST_GROUP_ITEM = DX_MENU_CLASS + \"-last-group-item\";\r\nvar DX_ITEM_HAS_TEXT = ITEM_CLASS + \"-has-text\";\r\nvar DX_ITEM_HAS_ICON = ITEM_CLASS + \"-has-icon\";\r\nvar DX_ITEM_HAS_SUBMENU = ITEM_CLASS + \"-has-submenu\";\r\nvar DX_MENU_ITEM_POPOUT_CLASS = ITEM_CLASS + \"-popout\";\r\nvar DX_MENU_ITEM_POPOUT_CONTAINER_CLASS = DX_MENU_ITEM_POPOUT_CLASS + \"-container\";\r\nvar DX_MENU_ITEM_CAPTION_CLASS = ITEM_CLASS + \"-text\";\r\nvar SINGLE_SELECTION_MODE = \"single\";\r\nvar DEFAULT_DELAY = {\r\n show: 50,\r\n hide: 300\r\n};\r\nclass MenuBase extends HierarchicalCollectionWidget {\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n items: [],\r\n cssClass: \"\",\r\n activeStateEnabled: true,\r\n showSubmenuMode: {\r\n name: \"onHover\",\r\n delay: {\r\n show: 50,\r\n hide: 300\r\n }\r\n },\r\n animation: {\r\n show: {\r\n type: \"fade\",\r\n from: 0,\r\n to: 1,\r\n duration: 100\r\n },\r\n hide: {\r\n type: \"fade\",\r\n from: 1,\r\n to: 0,\r\n duration: 100\r\n }\r\n },\r\n selectByClick: false,\r\n focusOnSelectedItem: false,\r\n keyExpr: null,\r\n _itemAttributes: {\r\n role: \"menuitem\"\r\n },\r\n useInkRipple: false\r\n })\r\n }\r\n _itemDataKey() {\r\n return \"dxMenuItemDataKey\"\r\n }\r\n _itemClass() {\r\n return ITEM_CLASS\r\n }\r\n _setAriaSelected() {}\r\n _selectedItemClass() {\r\n return DX_MENU_SELECTED_ITEM_CLASS\r\n }\r\n _widgetClass() {\r\n return DX_MENU_BASE_CLASS\r\n }\r\n _focusTarget() {\r\n return this._itemContainer()\r\n }\r\n _clean() {\r\n this.option(\"focusedElement\", null);\r\n super._clean()\r\n }\r\n _supportedKeys() {\r\n return extend(super._supportedKeys(), {\r\n space: () => {\r\n var $item = $(this.option(\"focusedElement\"));\r\n if (!$item.length || !this._isSelectionEnabled()) {\r\n return\r\n }\r\n this.selectItem($item[0])\r\n },\r\n pageUp: noop,\r\n pageDown: noop\r\n })\r\n }\r\n _isSelectionEnabled() {\r\n return this.option(\"selectionMode\") === SINGLE_SELECTION_MODE\r\n }\r\n _init() {\r\n this._activeStateUnit = \".\".concat(ITEM_CLASS);\r\n super._init();\r\n this._renderSelectedItem();\r\n this._initActions()\r\n }\r\n _getTextContainer(itemData) {\r\n var itemText = itemData.text;\r\n var $itemContainer = $(\"\").addClass(DX_MENU_ITEM_CAPTION_CLASS);\r\n var itemContent = isPlainObject(itemData) ? itemText : String(itemData);\r\n return itemText && $itemContainer.text(itemContent)\r\n }\r\n _getPopoutContainer(itemData) {\r\n var items = itemData.items;\r\n var $popOutContainer;\r\n if (items && items.length) {\r\n var $popOutImage = $(\"
\").addClass(DX_MENU_ITEM_POPOUT_CLASS);\r\n $popOutContainer = $(\"\").addClass(DX_MENU_ITEM_POPOUT_CONTAINER_CLASS).append($popOutImage)\r\n }\r\n return $popOutContainer\r\n }\r\n _getDataAdapterOptions() {\r\n return {\r\n rootValue: 0,\r\n multipleSelection: false,\r\n recursiveSelection: false,\r\n recursiveExpansion: false,\r\n searchValue: \"\"\r\n }\r\n }\r\n _selectByItem(selectedItem) {\r\n if (!selectedItem) {\r\n return\r\n }\r\n var nodeToSelect = this._dataAdapter.getNodeByItem(selectedItem);\r\n this._dataAdapter.toggleSelection(nodeToSelect.internalFields.key, true)\r\n }\r\n _renderSelectedItem() {\r\n var selectedKeys = this._dataAdapter.getSelectedNodesKeys();\r\n var selectedKey = selectedKeys.length && selectedKeys[0];\r\n var selectedItem = this.option(\"selectedItem\");\r\n if (!selectedKey) {\r\n this._selectByItem(selectedItem);\r\n return\r\n }\r\n var node = this._dataAdapter.getNodeByKey(selectedKey);\r\n if (false === node.selectable) {\r\n return\r\n }\r\n if (!selectedItem) {\r\n this.option(\"selectedItem\", node.internalFields.item);\r\n return\r\n }\r\n if (selectedItem !== node.internalFields.item) {\r\n this._dataAdapter.toggleSelection(selectedKey, false);\r\n this._selectByItem(selectedItem)\r\n }\r\n }\r\n _initActions() {}\r\n _initMarkup() {\r\n super._initMarkup();\r\n this._addCustomCssClass(this.$element());\r\n this.option(\"useInkRipple\") && this._renderInkRipple()\r\n }\r\n _renderInkRipple() {\r\n this._inkRipple = render()\r\n }\r\n _toggleActiveState($element, value, e) {\r\n super._toggleActiveState.apply(this, arguments);\r\n if (!this._inkRipple) {\r\n return\r\n }\r\n var config = {\r\n element: $element,\r\n event: e\r\n };\r\n if (value) {\r\n this._inkRipple.showWave(config)\r\n } else {\r\n this._inkRipple.hideWave(config)\r\n }\r\n }\r\n _getShowSubmenuMode() {\r\n var optionValue = this.option(\"showSubmenuMode\");\r\n optionValue = isObject(optionValue) ? optionValue.name : optionValue;\r\n return this._isDesktopDevice() ? optionValue : \"onClick\"\r\n }\r\n _initSelectedItems() {}\r\n _isDesktopDevice() {\r\n return \"desktop\" === devices.real().deviceType\r\n }\r\n _initEditStrategy() {\r\n var Strategy = MenuBaseEditStrategy;\r\n this._editStrategy = new Strategy(this)\r\n }\r\n _addCustomCssClass($element) {\r\n $element.addClass(this.option(\"cssClass\"))\r\n }\r\n _itemWrapperSelector() {\r\n return \".\".concat(DX_MENU_ITEM_WRAPPER_CLASS)\r\n }\r\n _hoverStartHandler(e) {\r\n var $itemElement = this._getItemElementByEventArgs(e);\r\n if (!$itemElement || this._isItemDisabled($itemElement)) {\r\n return\r\n }\r\n e.stopPropagation();\r\n if (\"onHover\" === this._getShowSubmenuMode()) {\r\n clearTimeout(this._showSubmenusTimeout);\r\n this._showSubmenusTimeout = setTimeout(this._showSubmenu.bind(this, $itemElement), this._getSubmenuDelay(\"show\"))\r\n }\r\n }\r\n _getAvailableItems($itemElements) {\r\n return super._getAvailableItems($itemElements).filter((function() {\r\n return \"hidden\" !== $(this).css(\"visibility\")\r\n }))\r\n }\r\n _isItemDisabled($item) {\r\n return this._disabledGetter($item.data(this._itemDataKey()))\r\n }\r\n _showSubmenu($itemElement) {\r\n this._addExpandedClass($itemElement)\r\n }\r\n _addExpandedClass(itemElement) {\r\n $(itemElement).addClass(DX_MENU_ITEM_EXPANDED_CLASS)\r\n }\r\n _getSubmenuDelay(action) {\r\n var {\r\n delay: delay\r\n } = this.option(\"showSubmenuMode\");\r\n if (!isDefined(delay)) {\r\n return DEFAULT_DELAY[action]\r\n }\r\n return isObject(delay) ? delay[action] : delay\r\n }\r\n _getItemElementByEventArgs(eventArgs) {\r\n var $target = $(eventArgs.target);\r\n if ($target.hasClass(this._itemClass()) || $target.get(0) === eventArgs.currentTarget) {\r\n return $target\r\n }\r\n while (!$target.hasClass(this._itemClass())) {\r\n $target = $target.parent();\r\n if ($target.hasClass(\"dx-submenu\")) {\r\n return null\r\n }\r\n }\r\n return $target\r\n }\r\n _hoverEndHandler() {\r\n clearTimeout(this._showSubmenusTimeout)\r\n }\r\n _hasSubmenu(node) {\r\n return node && node.internalFields.childrenKeys.length\r\n }\r\n _renderContentImpl() {\r\n this._renderItems(this._dataAdapter.getRootNodes())\r\n }\r\n _renderItems(nodes, submenuContainer) {\r\n if (nodes.length) {\r\n this.hasIcons = false;\r\n var $nodeContainer = this._renderContainer(this.$element(), submenuContainer);\r\n var firstVisibleIndex = -1;\r\n var nextGroupFirstIndex = -1;\r\n each(nodes, (index, node) => {\r\n var isVisibleNode = false !== node.visible;\r\n if (isVisibleNode && firstVisibleIndex < 0) {\r\n firstVisibleIndex = index\r\n }\r\n var isBeginGroup = firstVisibleIndex < index && (node.beginGroup || index === nextGroupFirstIndex);\r\n if (isBeginGroup) {\r\n nextGroupFirstIndex = isVisibleNode ? index : index + 1\r\n }\r\n if (index === nextGroupFirstIndex && firstVisibleIndex < index) {\r\n this._renderSeparator($nodeContainer)\r\n }\r\n this._renderItem(index, node, $nodeContainer)\r\n });\r\n if (!this.hasIcons) {\r\n $nodeContainer.addClass(DX_MENU_NO_ICONS_CLASS)\r\n }\r\n }\r\n }\r\n _renderContainer($wrapper) {\r\n var $container = $(\"
    \");\r\n this.setAria(\"role\", \"none\", $container);\r\n return $container.appendTo($wrapper).addClass(DX_MENU_ITEMS_CONTAINER_CLASS)\r\n }\r\n _createDOMElement($nodeContainer) {\r\n var $node = $(\"
  • \");\r\n this.setAria(\"role\", \"none\", $node);\r\n return $node.appendTo($nodeContainer).addClass(DX_MENU_ITEM_WRAPPER_CLASS)\r\n }\r\n _renderItem(index, node, $nodeContainer, $nodeElement) {\r\n var items = this.option(\"items\");\r\n var $node = $nodeElement || this._createDOMElement($nodeContainer);\r\n if (items[index + 1] && items[index + 1].beginGroup) {\r\n $node.addClass(DX_MENU_ITEM_LAST_GROUP_ITEM)\r\n }\r\n var $itemFrame = super._renderItem(index, node.internalFields.item, $node);\r\n if (node.internalFields.item === this.option(\"selectedItem\")) {\r\n $itemFrame.addClass(DX_MENU_SELECTED_ITEM_CLASS)\r\n }\r\n $itemFrame.attr(\"tabIndex\", -1);\r\n if (this._hasSubmenu(node)) {\r\n this.setAria(\"haspopup\", \"true\", $itemFrame)\r\n }\r\n }\r\n _renderItemFrame(index, itemData, $itemContainer) {\r\n var $itemFrame = $itemContainer.children(\".\".concat(ITEM_CLASS));\r\n return $itemFrame.length ? $itemFrame : super._renderItemFrame.apply(this, arguments)\r\n }\r\n _refreshItem($item, item) {\r\n var node = this._dataAdapter.getNodeByItem(item);\r\n var index = $item.data(this._itemIndexKey());\r\n var $nodeContainer = $item.closest(\"ul\");\r\n var $nodeElement = $item.closest(\"li\");\r\n this._renderItem(index, node, $nodeContainer, $nodeElement)\r\n }\r\n _addContentClasses(itemData, $itemFrame) {\r\n var hasText = itemData.text ? !!itemData.text.length : false;\r\n var hasIcon = !!itemData.icon;\r\n var hasSubmenu = itemData.items ? !!itemData.items.length : false;\r\n $itemFrame.toggleClass(DX_ITEM_HAS_TEXT, hasText);\r\n $itemFrame.toggleClass(DX_ITEM_HAS_ICON, hasIcon);\r\n if (!this.hasIcons) {\r\n this.hasIcons = hasIcon\r\n }\r\n $itemFrame.toggleClass(DX_ITEM_HAS_SUBMENU, hasSubmenu)\r\n }\r\n _getItemContent($itemFrame) {\r\n var $itemContent = super._getItemContent($itemFrame);\r\n if (!$itemContent.length) {\r\n $itemContent = $itemFrame.children(\".\".concat(DX_ITEM_CONTENT_CLASS))\r\n }\r\n return $itemContent\r\n }\r\n _postprocessRenderItem(args) {\r\n var $itemElement = $(args.itemElement);\r\n var selectedIndex = this._dataAdapter.getSelectedNodesKeys();\r\n if (!selectedIndex.length || !this._selectedGetter(args.itemData) || !this._isItemSelectable(args.itemData)) {\r\n this._setAriaSelected($itemElement, \"false\");\r\n return\r\n }\r\n var node = this._dataAdapter.getNodeByItem(args.itemData);\r\n if (node.internalFields.key === selectedIndex[0]) {\r\n $itemElement.addClass(this._selectedItemClass());\r\n this._setAriaSelected($itemElement, \"true\")\r\n } else {\r\n this._setAriaSelected($itemElement, \"false\")\r\n }\r\n }\r\n _isItemSelectable(item) {\r\n return false !== item.selectable\r\n }\r\n _renderSeparator($itemsContainer) {\r\n $(\"
  • \").appendTo($itemsContainer).addClass(DX_MENU_SEPARATOR_CLASS)\r\n }\r\n _itemClickHandler(e) {\r\n if (e._skipHandling) {\r\n return\r\n }\r\n var itemClickActionHandler = this._createAction(this._updateSubmenuVisibilityOnClick.bind(this));\r\n this._itemDXEventHandler(e, \"onItemClick\", {}, {\r\n afterExecute: itemClickActionHandler.bind(this)\r\n });\r\n e._skipHandling = true\r\n }\r\n _updateSubmenuVisibilityOnClick(actionArgs) {\r\n this._updateSelectedItemOnClick(actionArgs);\r\n if (\"onClick\" === this._getShowSubmenuMode()) {\r\n this._addExpandedClass(actionArgs.args[0].itemElement)\r\n }\r\n }\r\n _updateSelectedItemOnClick(actionArgs) {\r\n var args = actionArgs.args ? actionArgs.args[0] : actionArgs;\r\n if (!this._isItemSelectionAllowed(args.itemData)) {\r\n return\r\n }\r\n var selectedItemKey = this._dataAdapter.getSelectedNodesKeys();\r\n var selectedNode = selectedItemKey.length && this._dataAdapter.getNodeByKey(selectedItemKey[0]);\r\n if (selectedNode) {\r\n this._toggleItemSelection(selectedNode, false)\r\n }\r\n if (!selectedNode || selectedNode.internalFields.item !== args.itemData) {\r\n this.selectItem(args.itemData)\r\n } else {\r\n this._fireSelectionChangeEvent(null, this.option(\"selectedItem\"));\r\n this._setOptionWithoutOptionChange(\"selectedItem\", null)\r\n }\r\n }\r\n _isItemSelectionAllowed(item) {\r\n var isSelectionByClickEnabled = this._isSelectionEnabled() && this.option(\"selectByClick\");\r\n return !this._isContainerEmpty() && isSelectionByClickEnabled && this._isItemSelectable(item) && !this._itemsGetter(item)\r\n }\r\n _isContainerEmpty() {\r\n return this._itemContainer().is(\":empty\")\r\n }\r\n _syncSelectionOptions() {\r\n return asyncNoop()\r\n }\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"showSubmenuMode\":\r\n break;\r\n case \"selectedItem\":\r\n var node = this._dataAdapter.getNodeByItem(args.value);\r\n var selectedKey = this._dataAdapter.getSelectedNodesKeys()[0];\r\n if (node && node.internalFields.key !== selectedKey) {\r\n if (false === node.selectable) {\r\n break\r\n }\r\n if (selectedKey) {\r\n this._toggleItemSelection(this._dataAdapter.getNodeByKey(selectedKey), false)\r\n }\r\n this._toggleItemSelection(node, true);\r\n this._updateSelectedItems()\r\n }\r\n break;\r\n case \"cssClass\":\r\n case \"position\":\r\n case \"selectByClick\":\r\n case \"animation\":\r\n case \"useInkRipple\":\r\n this._invalidate();\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n _toggleItemSelection(node, value) {\r\n var itemElement = this._getElementByItem(node.internalFields.item);\r\n itemElement && $(itemElement).toggleClass(DX_MENU_SELECTED_ITEM_CLASS);\r\n this._dataAdapter.toggleSelection(node.internalFields.key, value)\r\n }\r\n _getElementByItem(itemData) {\r\n var result;\r\n each(this._itemElements(), (_, itemElement) => {\r\n if ($(itemElement).data(this._itemDataKey()) !== itemData) {\r\n return true\r\n }\r\n result = itemElement;\r\n return false\r\n });\r\n return result\r\n }\r\n _updateSelectedItems(oldSelection, newSelection) {\r\n if (oldSelection || newSelection) {\r\n this._fireSelectionChangeEvent(newSelection, oldSelection)\r\n }\r\n }\r\n _fireSelectionChangeEvent(addedSelection, removedSelection) {\r\n this._createActionByOption(\"onSelectionChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })({\r\n addedItems: [addedSelection],\r\n removedItems: [removedSelection]\r\n })\r\n }\r\n selectItem(itemElement) {\r\n var itemData = itemElement.nodeType ? this._getItemData(itemElement) : itemElement;\r\n var selectedKey = this._dataAdapter.getSelectedNodesKeys()[0];\r\n var selectedItem = this.option(\"selectedItem\");\r\n var node = this._dataAdapter.getNodeByItem(itemData);\r\n if (node.internalFields.key !== selectedKey) {\r\n if (selectedKey) {\r\n this._toggleItemSelection(this._dataAdapter.getNodeByKey(selectedKey), false)\r\n }\r\n this._toggleItemSelection(node, true);\r\n this._updateSelectedItems(selectedItem, itemData);\r\n this._setOptionWithoutOptionChange(\"selectedItem\", itemData)\r\n }\r\n }\r\n unselectItem(itemElement) {\r\n var itemData = itemElement.nodeType ? this._getItemData(itemElement) : itemElement;\r\n var node = this._dataAdapter.getNodeByItem(itemData);\r\n var selectedItem = this.option(\"selectedItem\");\r\n if (node.internalFields.selected) {\r\n this._toggleItemSelection(node, false);\r\n this._updateSelectedItems(selectedItem, null);\r\n this._setOptionWithoutOptionChange(\"selectedItem\", null)\r\n }\r\n }\r\n}\r\nMenuBase.ItemClass = MenuItem;\r\nexport default MenuBase;\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.accessibility.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport * as accessibility from \"../../ui/shared/accessibility\";\r\nexport var registerKeyboardAction = function(viewName, instance, $element, selector, action) {\r\n var keyboardController = instance.getController(\"keyboardNavigation\");\r\n if (instance.option(\"useLegacyKeyboardNavigation\") || keyboardController && !keyboardController.isKeyboardEnabled()) {\r\n return\r\n }\r\n instance.createAction(\"onKeyDown\");\r\n accessibility.registerKeyboardAction(viewName, instance, $element, selector, action, args => {\r\n instance.executeAction(\"onKeyDown\", args)\r\n })\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.state_storing.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getKeyHash,\r\n equalByValue\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n StateStoringController\r\n} from \"./ui.grid_core.state_storing_core\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar getDataState = that => {\r\n var pagerView = that.getView(\"pagerView\");\r\n var dataController = that.getController(\"data\");\r\n var state = {\r\n allowedPageSizes: pagerView ? pagerView.getPageSizes() : void 0,\r\n filterPanel: {\r\n filterEnabled: that.option(\"filterPanel.filterEnabled\")\r\n },\r\n filterValue: that.option(\"filterValue\"),\r\n focusedRowKey: that.option(\"focusedRowEnabled\") ? that.option(\"focusedRowKey\") : void 0\r\n };\r\n return extend(state, dataController.getUserState())\r\n};\r\nvar processLoadState = that => {\r\n var columnsController = that.getController(\"columns\");\r\n var selectionController = that.getController(\"selection\");\r\n var exportController = that.getController(\"export\");\r\n var dataController = that.getController(\"data\");\r\n if (columnsController) {\r\n columnsController.columnsChanged.add((function() {\r\n that.updateState({\r\n columns: columnsController.getUserState()\r\n })\r\n }))\r\n }\r\n if (selectionController) {\r\n selectionController.selectionChanged.add((function(e) {\r\n that.updateState({\r\n selectedRowKeys: e.selectedRowKeys,\r\n selectionFilter: e.selectionFilter\r\n })\r\n }))\r\n }\r\n if (dataController) {\r\n that._initialPageSize = that.option(\"paging.pageSize\");\r\n that._initialFilterValue = that.option(\"filterValue\");\r\n dataController.changed.add((function() {\r\n var state = getDataState(that);\r\n that.updateState(state)\r\n }))\r\n }\r\n if (exportController) {\r\n exportController.selectionOnlyChanged.add((function() {\r\n that.updateState({\r\n exportSelectionOnly: exportController.selectionOnly()\r\n })\r\n }))\r\n }\r\n};\r\nvar DEFAULT_FILTER_VALUE = null;\r\nvar getFilterValue = (that, state) => {\r\n var filterSyncController = that.getController(\"filterSync\");\r\n var columnsController = that.getController(\"columns\");\r\n var hasFilterState = state.columns || void 0 !== state.filterValue;\r\n if (filterSyncController) {\r\n if (hasFilterState) {\r\n return state.filterValue || filterSyncController.getFilterValueFromColumns(state.columns)\r\n } else {\r\n return that._initialFilterValue || filterSyncController.getFilterValueFromColumns(columnsController.getColumns())\r\n }\r\n }\r\n return DEFAULT_FILTER_VALUE\r\n};\r\nexport var stateStoringModule = {\r\n defaultOptions: function() {\r\n return {\r\n stateStoring: {\r\n enabled: false,\r\n storageKey: null,\r\n type: \"localStorage\",\r\n customLoad: null,\r\n customSave: null,\r\n savingTimeout: 2e3\r\n }\r\n }\r\n },\r\n controllers: {\r\n stateStoring: StateStoringController\r\n },\r\n extenders: {\r\n views: {\r\n rowsView: {\r\n init: function() {\r\n var that = this;\r\n var dataController = that.getController(\"data\");\r\n that.callBase();\r\n dataController.stateLoaded.add((function() {\r\n if (dataController.isLoaded() && !dataController.getDataSource()) {\r\n that.setLoading(false);\r\n that.renderNoDataText();\r\n var columnHeadersView = that.component.getView(\"columnHeadersView\");\r\n columnHeadersView && columnHeadersView.render();\r\n that.component._fireContentReadyAction()\r\n }\r\n }))\r\n }\r\n }\r\n },\r\n controllers: {\r\n stateStoring: {\r\n init: function() {\r\n this.callBase.apply(this, arguments);\r\n processLoadState(this)\r\n },\r\n isLoading: function() {\r\n return this.callBase() || this.getController(\"data\").isStateLoading()\r\n },\r\n state: function(_state) {\r\n var result = this.callBase.apply(this, arguments);\r\n if (void 0 !== _state) {\r\n this.applyState(extend({}, _state))\r\n }\r\n return result\r\n },\r\n updateState: function(state) {\r\n if (this.isEnabled()) {\r\n var oldState = this.state();\r\n var newState = extend({}, oldState, state);\r\n var oldStateHash = getKeyHash(oldState);\r\n var newStateHash = getKeyHash(newState);\r\n if (!equalByValue(oldStateHash, newStateHash)) {\r\n extend(this._state, state);\r\n this.save()\r\n }\r\n } else {\r\n extend(this._state, state)\r\n }\r\n },\r\n applyState: function(state) {\r\n var allowedPageSizes = state.allowedPageSizes;\r\n var searchText = state.searchText;\r\n var selectedRowKeys = state.selectedRowKeys;\r\n var selectionFilter = state.selectionFilter;\r\n var exportController = this.getController(\"export\");\r\n var columnsController = this.getController(\"columns\");\r\n var dataController = this.getController(\"data\");\r\n var scrollingMode = this.option(\"scrolling.mode\");\r\n var isVirtualScrollingMode = \"virtual\" === scrollingMode || \"infinite\" === scrollingMode;\r\n var showPageSizeSelector = true === this.option(\"pager.visible\") && this.option(\"pager.showPageSizeSelector\");\r\n this.component.beginUpdate();\r\n if (columnsController) {\r\n columnsController.setUserState(state.columns)\r\n }\r\n if (exportController) {\r\n exportController.selectionOnly(state.exportSelectionOnly)\r\n }\r\n if (selectedRowKeys) {\r\n this.option(\"selectedRowKeys\", selectedRowKeys)\r\n }\r\n this.option(\"selectionFilter\", selectionFilter);\r\n if (allowedPageSizes && \"auto\" === this.option(\"pager.allowedPageSizes\")) {\r\n this.option(\"pager\").allowedPageSizes = allowedPageSizes\r\n }\r\n if (this.option(\"focusedRowEnabled\") && void 0 !== state.focusedRowKey) {\r\n this.option(\"focusedRowIndex\", -1);\r\n this.option(\"focusedRowKey\", state.focusedRowKey)\r\n }\r\n this.component.endUpdate();\r\n searchText && this.option(\"searchPanel.text\", searchText);\r\n this.option(\"filterValue\", getFilterValue(this, state));\r\n this.option(\"filterPanel.filterEnabled\", state.filterPanel ? state.filterPanel.filterEnabled : true);\r\n this.option(\"paging.pageSize\", (!isVirtualScrollingMode || showPageSizeSelector) && isDefined(state.pageSize) ? state.pageSize : this._initialPageSize);\r\n this.option(\"paging.pageIndex\", state.pageIndex || 0);\r\n dataController && dataController.reset()\r\n }\r\n },\r\n columns: {\r\n getVisibleColumns: function() {\r\n var visibleColumns = this.callBase.apply(this, arguments);\r\n var stateStoringController = this.getController(\"stateStoring\");\r\n return stateStoringController.isEnabled() && !stateStoringController.isLoaded() ? [] : visibleColumns\r\n }\r\n },\r\n data: {\r\n callbackNames: function() {\r\n return this.callBase().concat([\"stateLoaded\"])\r\n },\r\n _refreshDataSource: function() {\r\n var callBase = this.callBase;\r\n var stateStoringController = this.getController(\"stateStoring\");\r\n if (stateStoringController.isEnabled() && !stateStoringController.isLoaded()) {\r\n clearTimeout(this._restoreStateTimeoutID);\r\n var deferred = new Deferred;\r\n this._restoreStateTimeoutID = setTimeout(() => {\r\n stateStoringController.load().always(() => {\r\n this._restoreStateTimeoutID = null\r\n }).done(() => {\r\n callBase.call(this);\r\n this.stateLoaded.fire();\r\n deferred.resolve()\r\n }).fail(error => {\r\n this.stateLoaded.fire();\r\n this._handleLoadError(error || \"Unknown error\");\r\n deferred.reject()\r\n })\r\n });\r\n return deferred.promise()\r\n } else if (!this.isStateLoading()) {\r\n callBase.call(this)\r\n }\r\n },\r\n isLoading: function() {\r\n var stateStoringController = this.getController(\"stateStoring\");\r\n return this.callBase() || stateStoringController.isLoading()\r\n },\r\n isStateLoading: function() {\r\n return isDefined(this._restoreStateTimeoutID)\r\n },\r\n isLoaded: function() {\r\n return this.callBase() && !this.isStateLoading()\r\n },\r\n dispose: function() {\r\n clearTimeout(this._restoreStateTimeoutID);\r\n this.callBase()\r\n }\r\n },\r\n selection: {\r\n _fireSelectionChanged: function(options) {\r\n var stateStoringController = this.getController(\"stateStoring\");\r\n var isDeferredSelection = this.option(\"selection.deferred\");\r\n if (stateStoringController.isLoading() && isDeferredSelection) {\r\n return\r\n }\r\n this.callBase.apply(this, arguments)\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.export_mixin.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nexport 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 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((sum, item) => sum + that._defaultSetter(item.colspan), 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\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid.core.virtual_data_loader.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n isObject,\r\n isString\r\n} from \"../../core/utils/type\";\r\nvar NEW_SCROLLING_MODE = \"scrolling.newMode\";\r\nvar needTwoPagesLoading = that => that.option(\"scrolling.loadTwoPagesOnStart\") || that._controller.isVirtual() || that._controller.getViewportItemIndex() > 0;\r\nvar getBeginPageIndex = that => that._cache.length ? that._cache[0].pageIndex : -1;\r\nvar getEndPageIndex = that => that._cache.length ? that._cache[that._cache.length - 1].pageIndex : -1;\r\nvar fireChanged = (that, changed, args) => {\r\n that._isChangedFiring = true;\r\n changed(args);\r\n that._isChangedFiring = false\r\n};\r\nvar processDelayChanged = (that, changed, args) => {\r\n if (that._isDelayChanged) {\r\n that._isDelayChanged = false;\r\n fireChanged(that, changed, args);\r\n return true\r\n }\r\n};\r\nvar getViewportPageCount = that => {\r\n var pageSize = that._dataOptions.pageSize();\r\n var preventPreload = that.option(\"scrolling.preventPreload\");\r\n if (preventPreload) {\r\n return 0\r\n }\r\n var realViewportSize = that._controller.viewportSize();\r\n if (that._controller.isVirtualMode() && that.option(\"scrolling.removeInvisiblePages\")) {\r\n realViewportSize = 0;\r\n var viewportSize = that._controller.viewportSize() * that._controller.viewportItemSize();\r\n var offset = that._controller.getContentOffset();\r\n var position = that._controller.getViewportPosition();\r\n var virtualItemsCount = that._controller.virtualItemsCount();\r\n var totalItemsCount = that._dataOptions.totalItemsCount();\r\n for (var itemIndex = virtualItemsCount.begin; itemIndex < totalItemsCount; itemIndex++) {\r\n if (offset >= position + viewportSize) {\r\n break\r\n }\r\n var itemSize = that._controller.getItemSizes()[itemIndex] || that._controller.viewportItemSize();\r\n offset += itemSize;\r\n if (offset >= position) {\r\n realViewportSize++\r\n }\r\n }\r\n }\r\n return pageSize && realViewportSize > 0 ? Math.ceil(realViewportSize / pageSize) : 1\r\n};\r\nvar getPreloadPageCount = (that, previous) => {\r\n var preloadEnabled = that.option(\"scrolling.preloadEnabled\");\r\n var pageCount = getViewportPageCount(that);\r\n var isAppendMode = that._controller.isAppendMode();\r\n if (pageCount) {\r\n if (previous) {\r\n pageCount = preloadEnabled ? 1 : 0\r\n } else {\r\n if (preloadEnabled) {\r\n pageCount++\r\n }\r\n if (isAppendMode || !needTwoPagesLoading(that)) {\r\n pageCount--\r\n }\r\n }\r\n }\r\n return pageCount\r\n};\r\nvar getPageIndexForLoad = that => {\r\n var result = -1;\r\n var beginPageIndex = getBeginPageIndex(that);\r\n var dataOptions = that._dataOptions;\r\n if (beginPageIndex < 0) {\r\n result = that._pageIndex\r\n } else if (!that._cache[that._pageIndex - beginPageIndex]) {\r\n result = that._pageIndex\r\n } else if (beginPageIndex >= 0 && that._controller.viewportSize() >= 0) {\r\n if (beginPageIndex > 0) {\r\n var needToLoadPageBeforeLast = getEndPageIndex(that) + 1 === dataOptions.pageCount() && that._cache.length < getPreloadPageCount(that) + 1;\r\n var needToLoadPrevPage = needToLoadPageBeforeLast || that._pageIndex === beginPageIndex && getPreloadPageCount(that, true);\r\n if (needToLoadPrevPage) {\r\n result = beginPageIndex - 1\r\n }\r\n }\r\n if (result < 0) {\r\n var needToLoadNextPage = beginPageIndex + that._cache.length <= that._pageIndex + getPreloadPageCount(that);\r\n if (needToLoadNextPage) {\r\n result = beginPageIndex + that._cache.length\r\n }\r\n }\r\n }\r\n if (that._loadingPageIndexes[result]) {\r\n result = -1\r\n }\r\n return result\r\n};\r\nvar loadCore = (that, pageIndex) => {\r\n var dataOptions = that._dataOptions;\r\n if (pageIndex === that.pageIndex() || !dataOptions.isLoading() && pageIndex < dataOptions.pageCount() || !dataOptions.hasKnownLastPage() && pageIndex === dataOptions.pageCount()) {\r\n dataOptions.pageIndex(pageIndex);\r\n that._loadingPageIndexes[pageIndex] = true;\r\n return when(dataOptions.load()).always(() => {\r\n that._loadingPageIndexes[pageIndex] = false\r\n })\r\n }\r\n};\r\nvar processChanged = (that, changed, changeType, isDelayChanged, removeCacheItem) => {\r\n var dataOptions = that._dataOptions;\r\n var items = dataOptions.items().slice();\r\n var change = isObject(changeType) ? changeType : void 0;\r\n var isPrepend = \"prepend\" === changeType;\r\n var viewportItems = dataOptions.viewportItems();\r\n if (changeType && isString(changeType) && !that._isDelayChanged) {\r\n change = {\r\n changeType: changeType,\r\n items: items\r\n };\r\n if (removeCacheItem) {\r\n change.removeCount = removeCacheItem.itemsCount;\r\n if (change.removeCount && dataOptions.correctCount) {\r\n change.removeCount = dataOptions.correctCount(viewportItems, change.removeCount, isPrepend)\r\n }\r\n }\r\n }\r\n var removeItemCount = removeCacheItem ? removeCacheItem.itemsLength : 0;\r\n if (removeItemCount && dataOptions.correctCount) {\r\n removeItemCount = dataOptions.correctCount(viewportItems, removeItemCount, isPrepend)\r\n }\r\n if (\"append\" === changeType) {\r\n viewportItems.push.apply(viewportItems, items);\r\n if (removeCacheItem) {\r\n viewportItems.splice(0, removeItemCount)\r\n }\r\n } else if (isPrepend) {\r\n viewportItems.unshift.apply(viewportItems, items);\r\n if (removeCacheItem) {\r\n viewportItems.splice(-removeItemCount)\r\n }\r\n } else {\r\n that._dataOptions.viewportItems(items)\r\n }\r\n dataOptions.updateLoading();\r\n that._lastPageIndex = that.pageIndex();\r\n that._isDelayChanged = isDelayChanged;\r\n if (!isDelayChanged) {\r\n fireChanged(that, changed, change)\r\n }\r\n};\r\nexport class VirtualDataLoader {\r\n constructor(controller, dataOptions) {\r\n this._controller = controller;\r\n this._dataOptions = dataOptions;\r\n this._pageIndex = this._lastPageIndex = dataOptions.pageIndex();\r\n this._cache = [];\r\n this._loadingPageIndexes = {}\r\n }\r\n option() {\r\n return this._controller.option.apply(this._controller, arguments)\r\n }\r\n viewportItemIndexChanged(itemIndex) {\r\n var pageSize = this._dataOptions.pageSize();\r\n var pageCount = this._dataOptions.pageCount();\r\n var virtualMode = this._controller.isVirtualMode();\r\n var appendMode = this._controller.isAppendMode();\r\n var totalItemsCount = this._dataOptions.totalItemsCount();\r\n var newPageIndex;\r\n if (pageSize && (virtualMode || appendMode) && totalItemsCount >= 0) {\r\n var viewportSize = this._controller.viewportSize();\r\n if (viewportSize && itemIndex + viewportSize >= totalItemsCount && !this._controller.isVirtual()) {\r\n if (this._dataOptions.hasKnownLastPage()) {\r\n newPageIndex = pageCount - 1;\r\n var lastPageSize = totalItemsCount % pageSize;\r\n if (newPageIndex > 0 && lastPageSize > 0 && lastPageSize < viewportSize) {\r\n newPageIndex--\r\n }\r\n } else {\r\n newPageIndex = pageCount\r\n }\r\n } else {\r\n newPageIndex = Math.floor(itemIndex / pageSize);\r\n var maxPageIndex = pageCount - 1;\r\n newPageIndex = Math.max(newPageIndex, 0);\r\n newPageIndex = Math.min(newPageIndex, maxPageIndex)\r\n }\r\n this.pageIndex(newPageIndex);\r\n return this.load()\r\n }\r\n }\r\n pageIndex(pageIndex) {\r\n var isVirtualMode = this._controller.isVirtualMode();\r\n var isAppendMode = this._controller.isAppendMode();\r\n if (!this.option(NEW_SCROLLING_MODE) && (isVirtualMode || isAppendMode)) {\r\n if (void 0 !== pageIndex) {\r\n this._pageIndex = pageIndex\r\n }\r\n return this._pageIndex\r\n } else {\r\n return this._dataOptions.pageIndex(pageIndex)\r\n }\r\n }\r\n beginPageIndex(defaultPageIndex) {\r\n var beginPageIndex = getBeginPageIndex(this);\r\n if (beginPageIndex < 0) {\r\n beginPageIndex = void 0 !== defaultPageIndex ? defaultPageIndex : this.pageIndex()\r\n }\r\n return beginPageIndex\r\n }\r\n endPageIndex() {\r\n var endPageIndex = getEndPageIndex(this);\r\n return endPageIndex > 0 ? endPageIndex : this._lastPageIndex\r\n }\r\n pageSize() {\r\n return this._dataOptions.pageSize()\r\n }\r\n load() {\r\n var dataOptions = this._dataOptions;\r\n var result;\r\n var isVirtualMode = this._controller.isVirtualMode();\r\n var isAppendMode = this._controller.isAppendMode();\r\n if (!this.option(NEW_SCROLLING_MODE) && (isVirtualMode || isAppendMode)) {\r\n var pageIndexForLoad = getPageIndexForLoad(this);\r\n if (pageIndexForLoad >= 0) {\r\n var loadResult = loadCore(this, pageIndexForLoad);\r\n if (loadResult) {\r\n result = new Deferred;\r\n loadResult.done(() => {\r\n var delayDeferred = this._delayDeferred;\r\n if (delayDeferred) {\r\n delayDeferred.done(result.resolve).fail(result.reject)\r\n } else {\r\n result.resolve()\r\n }\r\n }).fail(result.reject);\r\n dataOptions.updateLoading()\r\n }\r\n }\r\n } else {\r\n result = dataOptions.load()\r\n }\r\n if (!result && this._lastPageIndex !== this.pageIndex()) {\r\n this._dataOptions.onChanged({\r\n changeType: \"pageIndex\"\r\n })\r\n }\r\n return result || (new Deferred).resolve()\r\n }\r\n loadIfNeed() {\r\n var isVirtualMode = this._controller.isVirtualMode();\r\n var isAppendMode = this._controller.isAppendMode();\r\n if ((isVirtualMode || isAppendMode) && !this._dataOptions.isLoading() && (!this._isChangedFiring || this._controller.isVirtual())) {\r\n var position = this._controller.getViewportPosition();\r\n if (position > 0) {\r\n this._controller._setViewportPositionCore(position)\r\n } else {\r\n this.load()\r\n }\r\n }\r\n }\r\n handleDataChanged(callBase, e) {\r\n var dataOptions = this._dataOptions;\r\n var lastCacheLength = this._cache.length;\r\n var changeType;\r\n var removeInvisiblePages;\r\n var isVirtualMode = this._controller.isVirtualMode();\r\n var isAppendMode = this._controller.isAppendMode();\r\n if (e && e.changes) {\r\n fireChanged(this, callBase, e)\r\n } else if (!this.option(NEW_SCROLLING_MODE) && (isVirtualMode || isAppendMode)) {\r\n var beginPageIndex = getBeginPageIndex(this);\r\n if (beginPageIndex >= 0) {\r\n if (isVirtualMode && beginPageIndex + this._cache.length !== dataOptions.pageIndex() && beginPageIndex - 1 !== dataOptions.pageIndex()) {\r\n lastCacheLength = 0;\r\n this._cache = []\r\n }\r\n if (isAppendMode) {\r\n if (0 === dataOptions.pageIndex()) {\r\n this._cache = []\r\n } else if (dataOptions.pageIndex() < getEndPageIndex(this)) {\r\n fireChanged(this, callBase, {\r\n changeType: \"append\",\r\n items: []\r\n });\r\n return\r\n }\r\n }\r\n }\r\n var cacheItem = {\r\n pageIndex: dataOptions.pageIndex(),\r\n itemsLength: dataOptions.items(true).length,\r\n itemsCount: this.itemsCount(true)\r\n };\r\n if (this.option(\"scrolling.removeInvisiblePages\") && isVirtualMode) {\r\n removeInvisiblePages = this._cache.length > Math.max(getPreloadPageCount(this) + (this.option(\"scrolling.preloadEnabled\") ? 1 : 0), 2)\r\n } else {\r\n processDelayChanged(this, callBase, {\r\n isDelayed: true\r\n })\r\n }\r\n var removeCacheItem;\r\n if (beginPageIndex === dataOptions.pageIndex() + 1) {\r\n if (removeInvisiblePages) {\r\n removeCacheItem = this._cache.pop()\r\n }\r\n changeType = \"prepend\";\r\n this._cache.unshift(cacheItem)\r\n } else {\r\n if (removeInvisiblePages) {\r\n removeCacheItem = this._cache.shift()\r\n }\r\n changeType = \"append\";\r\n this._cache.push(cacheItem)\r\n }\r\n var isDelayChanged = isVirtualMode && 0 === lastCacheLength && needTwoPagesLoading(this);\r\n processChanged(this, callBase, this._cache.length > 1 ? changeType : void 0, isDelayChanged, removeCacheItem);\r\n this._delayDeferred = this.load().done(() => {\r\n if (processDelayChanged(this, callBase)) {\r\n this.load()\r\n }\r\n })\r\n } else {\r\n processChanged(this, callBase, e)\r\n }\r\n }\r\n getDelayDeferred() {\r\n return this._delayDeferred\r\n }\r\n itemsCount(isBase) {\r\n var itemsCount = 0;\r\n var isVirtualMode = this._controller.isVirtualMode();\r\n if (!isBase && isVirtualMode) {\r\n this._cache.forEach(cacheItem => {\r\n itemsCount += cacheItem.itemsCount\r\n })\r\n } else {\r\n itemsCount = this._dataOptions.itemsCount()\r\n }\r\n return itemsCount\r\n }\r\n virtualItemsCount() {\r\n var pageIndex = getBeginPageIndex(this);\r\n if (pageIndex < 0) {\r\n pageIndex = this._dataOptions.pageIndex()\r\n }\r\n var beginItemsCount = pageIndex * this._dataOptions.pageSize();\r\n var itemsCount = this._cache.length * this._dataOptions.pageSize();\r\n var endItemsCount = Math.max(0, this._dataOptions.totalItemsCount() - itemsCount - beginItemsCount);\r\n return {\r\n begin: beginItemsCount,\r\n end: endItemsCount\r\n }\r\n }\r\n reset() {\r\n this._loadingPageIndexes = {};\r\n this._cache = []\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.virtual_scrolling_core.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport positionUtils from \"../../animation/position\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n VirtualDataLoader\r\n} from \"./ui.grid.core.virtual_data_loader\";\r\nvar SCROLLING_MODE_INFINITE = \"infinite\";\r\nvar SCROLLING_MODE_VIRTUAL = \"virtual\";\r\nvar NEW_SCROLLING_MODE = \"scrolling.newMode\";\r\nvar _isVirtualMode = that => that.option(\"scrolling.mode\") === SCROLLING_MODE_VIRTUAL || that._isVirtual;\r\nvar _isAppendMode = that => that.option(\"scrolling.mode\") === SCROLLING_MODE_INFINITE && !that._isVirtual;\r\nexport var getPixelRatio = window => window.devicePixelRatio || 1;\r\nexport function getContentHeightLimit(browser) {\r\n if (browser.msie) {\r\n return 4e6\r\n } else if (browser.mozilla) {\r\n return 8e6\r\n }\r\n return 15e6 / getPixelRatio(getWindow())\r\n}\r\nexport function subscribeToExternalScrollers($element, scrollChangedHandler, $targetElement) {\r\n var $scrollElement;\r\n var scrollableArray = [];\r\n var scrollToArray = [];\r\n var disposeArray = [];\r\n $targetElement = $targetElement || $element;\r\n\r\n function getElementOffset(scrollable) {\r\n var $scrollableElement = scrollable.element ? scrollable.$element() : scrollable;\r\n var scrollableOffset = positionUtils.offset($scrollableElement);\r\n if (!scrollableOffset) {\r\n return $element.offset().top\r\n }\r\n return scrollable.scrollTop() - (scrollableOffset.top - $element.offset().top)\r\n }\r\n var widgetScrollStrategy = {\r\n on: function(scrollable, eventName, handler) {\r\n scrollable.on(\"scroll\", handler)\r\n },\r\n off: function(scrollable, eventName, handler) {\r\n scrollable.off(\"scroll\", handler)\r\n }\r\n };\r\n\r\n function subscribeToScrollEvents($scrollElement) {\r\n var isDocument = \"#document\" === $scrollElement.get(0).nodeName;\r\n var scrollable = $scrollElement.data(\"dxScrollable\");\r\n var eventsStrategy = widgetScrollStrategy;\r\n if (!scrollable) {\r\n scrollable = isDocument && $(getWindow()) || \"auto\" === $scrollElement.css(\"overflowY\") && $scrollElement;\r\n eventsStrategy = eventsEngine;\r\n if (!scrollable) {\r\n return\r\n }\r\n }\r\n var handler = function(scrollable) {\r\n return function() {\r\n var scrollTop = scrollable.scrollTop() - getElementOffset(scrollable);\r\n scrollTop = scrollTop > 0 ? scrollTop : 0;\r\n scrollChangedHandler(scrollTop)\r\n }\r\n }(scrollable);\r\n eventsStrategy.on(scrollable, \"scroll\", handler);\r\n scrollToArray.push((function(pos) {\r\n var topOffset = getElementOffset(scrollable);\r\n var scrollMethod = scrollable.scrollTo ? \"scrollTo\" : \"scrollTop\";\r\n if (pos - topOffset >= 0) {\r\n scrollable[scrollMethod](pos + topOffset)\r\n }\r\n }));\r\n scrollableArray.push(scrollable);\r\n disposeArray.push((function() {\r\n eventsStrategy.off(scrollable, \"scroll\", handler)\r\n }))\r\n }\r\n for ($scrollElement = $targetElement.parent(); $scrollElement.length; $scrollElement = $scrollElement.parent()) {\r\n subscribeToScrollEvents($scrollElement)\r\n }\r\n return {\r\n scrollTo: function(pos) {\r\n each(scrollToArray, (function(_, scrollTo) {\r\n scrollTo(pos)\r\n }))\r\n },\r\n dispose: function() {\r\n each(disposeArray, (function(_, dispose) {\r\n dispose()\r\n }))\r\n }\r\n }\r\n}\r\nexport var VirtualScrollController = Class.inherit(function() {\r\n var members = {\r\n ctor: function(component, dataOptions, isVirtual) {\r\n this._dataOptions = dataOptions;\r\n this.component = component;\r\n this._viewportSize = 0;\r\n this._viewportItemSize = 20;\r\n this._viewportItemIndex = 0;\r\n this._contentSize = 0;\r\n this._itemSizes = {};\r\n this._sizeRatio = 1;\r\n this._isVirtual = isVirtual;\r\n this.positionChanged = Callbacks();\r\n this._dataLoader = new VirtualDataLoader(this, this._dataOptions)\r\n },\r\n getItemSizes: function() {\r\n return this._itemSizes\r\n },\r\n option: function() {\r\n return this.component.option.apply(this.component, arguments)\r\n },\r\n isVirtual: function() {\r\n return this._isVirtual\r\n },\r\n virtualItemsCount: function() {\r\n if (_isVirtualMode(this)) {\r\n var totalItemsCount = this._dataOptions.totalItemsCount();\r\n if (this.option(NEW_SCROLLING_MODE) && -1 !== totalItemsCount) {\r\n var viewportParams = this.getViewportParams();\r\n var endItemsCount = totalItemsCount - (viewportParams.skip + viewportParams.take);\r\n return {\r\n begin: viewportParams.skip,\r\n end: endItemsCount\r\n }\r\n }\r\n return this._dataLoader.virtualItemsCount.apply(this._dataLoader, arguments)\r\n }\r\n },\r\n setViewportPosition: function(position) {\r\n var result = new Deferred;\r\n var scrollingTimeout = Math.min(this.option(\"scrolling.timeout\") || 0, this._dataOptions.changingDuration());\r\n if (scrollingTimeout < this.option(\"scrolling.renderingThreshold\")) {\r\n scrollingTimeout = this.option(\"scrolling.minTimeout\") || 0\r\n }\r\n clearTimeout(this._scrollTimeoutID);\r\n if (scrollingTimeout > 0) {\r\n this._scrollTimeoutID = setTimeout(() => {\r\n this._setViewportPositionCore(position);\r\n result.resolve()\r\n }, scrollingTimeout)\r\n } else {\r\n this._setViewportPositionCore(position);\r\n result.resolve()\r\n }\r\n return result.promise()\r\n },\r\n getViewportPosition: function() {\r\n return this._position || 0\r\n },\r\n getItemIndexByPosition: function() {\r\n var position = this._position;\r\n var defaultItemSize = this.getItemSize();\r\n var offset = 0;\r\n var itemOffset = 0;\r\n var itemOffsetsWithSize = Object.keys(this._itemSizes).concat(-1);\r\n for (var i = 0; i < itemOffsetsWithSize.length && offset < position; i++) {\r\n var itemOffsetWithSize = parseInt(itemOffsetsWithSize[i]);\r\n var itemOffsetDiff = (position - offset) / defaultItemSize;\r\n if (itemOffsetWithSize < 0 || itemOffset + itemOffsetDiff < itemOffsetWithSize) {\r\n itemOffset += itemOffsetDiff;\r\n break\r\n } else {\r\n itemOffsetDiff = itemOffsetWithSize - itemOffset;\r\n offset += itemOffsetDiff * defaultItemSize;\r\n itemOffset += itemOffsetDiff\r\n }\r\n var itemSize = this._itemSizes[itemOffsetWithSize];\r\n offset += itemSize;\r\n itemOffset += offset < position ? 1 : (position - offset + itemSize) / itemSize\r\n }\r\n return Math.round(50 * itemOffset) / 50\r\n },\r\n _setViewportPositionCore: function(position) {\r\n this._position = position;\r\n var itemIndex = this.getItemIndexByPosition();\r\n var result = this.setViewportItemIndex(itemIndex);\r\n this.positionChanged.fire();\r\n return result\r\n },\r\n setContentItemSizes: function(sizes) {\r\n var virtualItemsCount = this.virtualItemsCount();\r\n this._contentSize = sizes.reduce((a, b) => a + b, 0);\r\n if (virtualItemsCount) {\r\n sizes.forEach((size, index) => {\r\n this._itemSizes[virtualItemsCount.begin + index] = size\r\n });\r\n var virtualContentSize = (virtualItemsCount.begin + virtualItemsCount.end + this.itemsCount()) * this._viewportItemSize;\r\n var contentHeightLimit = getContentHeightLimit(browser);\r\n if (virtualContentSize > contentHeightLimit) {\r\n this._sizeRatio = contentHeightLimit / virtualContentSize\r\n } else {\r\n this._sizeRatio = 1\r\n }\r\n }\r\n },\r\n getItemSize: function() {\r\n return this._viewportItemSize * this._sizeRatio\r\n },\r\n getItemOffset: function(itemIndex, isEnd) {\r\n var virtualItemsCount = this.virtualItemsCount();\r\n var itemCount = itemIndex;\r\n if (!virtualItemsCount) {\r\n return 0\r\n }\r\n var offset = 0;\r\n var totalItemsCount = this._dataOptions.totalItemsCount();\r\n Object.keys(this._itemSizes).forEach(currentItemIndex => {\r\n if (!itemCount) {\r\n return\r\n }\r\n if (isEnd ? currentItemIndex >= totalItemsCount - itemIndex : currentItemIndex < itemIndex) {\r\n offset += this._itemSizes[currentItemIndex];\r\n itemCount--\r\n }\r\n });\r\n return Math.floor(offset + itemCount * this._viewportItemSize * this._sizeRatio)\r\n },\r\n getContentOffset: function(type) {\r\n var isEnd = \"end\" === type;\r\n var virtualItemsCount = this.virtualItemsCount();\r\n if (!virtualItemsCount) {\r\n return 0\r\n }\r\n return this.getItemOffset(isEnd ? virtualItemsCount.end : virtualItemsCount.begin, isEnd)\r\n },\r\n getVirtualContentSize: function() {\r\n var virtualItemsCount = this.virtualItemsCount();\r\n return virtualItemsCount ? this.getContentOffset(\"begin\") + this.getContentOffset(\"end\") + this._contentSize : 0\r\n },\r\n getViewportItemIndex: function() {\r\n return this._viewportItemIndex\r\n },\r\n setViewportItemIndex: function(itemIndex) {\r\n this._viewportItemIndex = itemIndex;\r\n if (this.option(NEW_SCROLLING_MODE)) {\r\n return\r\n }\r\n return this._dataLoader.viewportItemIndexChanged.apply(this._dataLoader, arguments)\r\n },\r\n viewportItemSize: function(size) {\r\n if (void 0 !== size) {\r\n this._viewportItemSize = size\r\n }\r\n return this._viewportItemSize\r\n },\r\n viewportSize: function(size) {\r\n if (void 0 !== size) {\r\n this._viewportSize = size\r\n }\r\n return this._viewportSize\r\n },\r\n reset: function(isRefresh) {\r\n this._dataLoader.reset();\r\n if (!isRefresh) {\r\n this._itemSizes = {}\r\n }\r\n },\r\n subscribeToWindowScrollEvents: function($element) {\r\n this._windowScroll = this._windowScroll || subscribeToExternalScrollers($element, scrollTop => {\r\n if (this.viewportItemSize()) {\r\n this.setViewportPosition(scrollTop)\r\n }\r\n })\r\n },\r\n dispose: function() {\r\n clearTimeout(this._scrollTimeoutID);\r\n this._windowScroll && this._windowScroll.dispose();\r\n this._windowScroll = null\r\n },\r\n scrollTo: function(pos) {\r\n this._windowScroll && this._windowScroll.scrollTo(pos)\r\n },\r\n isVirtualMode: function() {\r\n return _isVirtualMode(this)\r\n },\r\n isAppendMode: function() {\r\n return _isAppendMode(this)\r\n },\r\n getViewportParams: function() {\r\n var topIndex = this._viewportItemIndex;\r\n var bottomIndex = this._viewportSize + topIndex;\r\n var maxGap = this.pageSize();\r\n var minGap = this.option(\"scrolling.minGap\");\r\n var virtualMode = this.option(\"scrolling.mode\") === SCROLLING_MODE_VIRTUAL;\r\n var skip = Math.floor(Math.max(0, topIndex - minGap) / maxGap) * maxGap;\r\n var take = Math.ceil((bottomIndex + minGap) / maxGap) * maxGap - skip;\r\n if (virtualMode) {\r\n var remainedItems = this._dataOptions.totalItemsCount() - skip;\r\n take = Math.min(take, remainedItems)\r\n }\r\n return {\r\n skip: skip,\r\n take: take\r\n }\r\n }\r\n };\r\n [\"pageIndex\", \"beginPageIndex\", \"endPageIndex\", \"pageSize\", \"load\", \"loadIfNeed\", \"handleDataChanged\", \"itemsCount\", \"getDelayDeferred\"].forEach((function(name) {\r\n members[name] = function() {\r\n return this._dataLoader[name].apply(this._dataLoader, arguments)\r\n }\r\n }));\r\n return members\r\n}());\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.column_chooser.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n deferUpdate,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport {\r\n ColumnsView\r\n} from \"./ui.grid_core.columns_view\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n isMaterial as isMaterialTheme,\r\n isGeneric,\r\n current\r\n} from \"../themes\";\r\nimport Button from \"../button\";\r\nimport TreeView from \"../tree_view\";\r\nimport devices from \"../../core/devices\";\r\nimport Popup from \"../popup\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nvar COLUMN_CHOOSER_CLASS = \"column-chooser\";\r\nvar COLUMN_CHOOSER_BUTTON_CLASS = \"column-chooser-button\";\r\nvar NOTOUCH_ACTION_CLASS = \"notouch-action\";\r\nvar COLUMN_CHOOSER_LIST_CLASS = \"column-chooser-list\";\r\nvar COLUMN_CHOOSER_PLAIN_CLASS = \"column-chooser-plain\";\r\nvar COLUMN_CHOOSER_DRAG_CLASS = \"column-chooser-mode-drag\";\r\nvar COLUMN_CHOOSER_SELECT_CLASS = \"column-chooser-mode-select\";\r\nvar COLUMN_CHOOSER_ICON_NAME = \"column-chooser\";\r\nvar COLUMN_CHOOSER_ITEM_CLASS = \"dx-column-chooser-item\";\r\nvar TREEVIEW_NODE_SELECTOR = \".dx-treeview-node\";\r\nvar CHECKBOX_SELECTOR = \".dx-checkbox\";\r\nvar CLICK_TIMEOUT = 300;\r\nvar processItems = function(that, chooserColumns) {\r\n var items = [];\r\n var isSelectMode = \"select\" === that.option(\"columnChooser.mode\");\r\n if (chooserColumns.length) {\r\n each(chooserColumns, (function(index, column) {\r\n var item = {\r\n text: column.caption,\r\n cssClass: column.cssClass,\r\n allowHiding: column.allowHiding,\r\n expanded: true,\r\n id: column.index,\r\n disabled: false,\r\n disableCheckBox: false === column.allowHiding,\r\n parentId: isDefined(column.ownerBand) ? column.ownerBand : null\r\n };\r\n if (isSelectMode) {\r\n item.selected = column.visible\r\n }\r\n items.push(item)\r\n }))\r\n }\r\n return items\r\n};\r\nvar ColumnChooserController = modules.ViewController.inherit({\r\n renderShowColumnChooserButton: function($element) {\r\n var that = this;\r\n var columnChooserButtonClass = that.addWidgetPrefix(COLUMN_CHOOSER_BUTTON_CLASS);\r\n var columnChooserEnabled = that.option(\"columnChooser.enabled\");\r\n var $showColumnChooserButton = $element.find(\".\" + columnChooserButtonClass);\r\n var $columnChooserButton;\r\n if (columnChooserEnabled) {\r\n if (!$showColumnChooserButton.length) {\r\n $columnChooserButton = $(\"
    \").addClass(columnChooserButtonClass).appendTo($element);\r\n that._createComponent($columnChooserButton, Button, {\r\n icon: COLUMN_CHOOSER_ICON_NAME,\r\n onClick: function() {\r\n that.getView(\"columnChooserView\").showColumnChooser()\r\n },\r\n hint: that.option(\"columnChooser.title\"),\r\n integrationOptions: {}\r\n })\r\n } else {\r\n $showColumnChooserButton.show()\r\n }\r\n } else {\r\n $showColumnChooserButton.hide()\r\n }\r\n },\r\n getPosition: function() {\r\n var rowsView = this.getView(\"rowsView\");\r\n return {\r\n my: \"right bottom\",\r\n at: \"right bottom\",\r\n of: rowsView && rowsView.element(),\r\n collision: \"fit\",\r\n offset: \"-2 -2\",\r\n boundaryOffset: \"2 2\"\r\n }\r\n }\r\n});\r\nvar ColumnChooserView = ColumnsView.inherit({\r\n _resizeCore: noop,\r\n _isWinDevice: function() {\r\n return !!devices.real().win\r\n },\r\n _updateList: function(change) {\r\n var items;\r\n var $popupContent = this._popupContainer.$content();\r\n var isSelectMode = \"select\" === this.option(\"columnChooser.mode\");\r\n var columnChooserList = this._columnChooserList;\r\n var chooserColumns = this._columnsController.getChooserColumns(isSelectMode);\r\n if (isSelectMode && columnChooserList && change && \"selection\" === change.changeType) {\r\n items = processItems(this, chooserColumns);\r\n for (var i = 0; i < items.length; i++) {\r\n var selected = items[i].selected;\r\n var id = items[i].id;\r\n if (id === change.columnIndex) {\r\n if (selected) {\r\n columnChooserList.selectItem(id, selected)\r\n } else {\r\n columnChooserList.unselectItem(id, selected)\r\n }\r\n }\r\n }\r\n } else if (!isSelectMode || !columnChooserList || \"full\" === change) {\r\n this._popupContainer.$wrapper().toggleClass(this.addWidgetPrefix(COLUMN_CHOOSER_DRAG_CLASS), !isSelectMode).toggleClass(this.addWidgetPrefix(COLUMN_CHOOSER_SELECT_CLASS), isSelectMode);\r\n items = processItems(this, chooserColumns);\r\n this._renderTreeView($popupContent, items)\r\n }\r\n },\r\n _initializePopupContainer: function() {\r\n var that = this;\r\n var $element = that.element().addClass(that.addWidgetPrefix(COLUMN_CHOOSER_CLASS));\r\n var columnChooserOptions = that.option(\"columnChooser\");\r\n var themeName = current();\r\n var isGenericTheme = isGeneric(themeName);\r\n var isMaterial = isMaterialTheme(themeName);\r\n var dxPopupOptions = {\r\n visible: false,\r\n shading: false,\r\n showCloseButton: false,\r\n dragEnabled: true,\r\n resizeEnabled: true,\r\n toolbarItems: [{\r\n text: columnChooserOptions.title,\r\n toolbar: \"top\",\r\n location: isGenericTheme || isMaterial ? \"before\" : \"center\"\r\n }],\r\n position: that.getController(\"columnChooser\").getPosition(),\r\n width: columnChooserOptions.width,\r\n height: columnChooserOptions.height,\r\n rtlEnabled: that.option(\"rtlEnabled\"),\r\n onHidden: function() {\r\n if (that._isWinDevice()) {\r\n $(\"body\").removeClass(that.addWidgetPrefix(NOTOUCH_ACTION_CLASS))\r\n }\r\n },\r\n container: columnChooserOptions.container\r\n };\r\n if (isGenericTheme || isMaterial) {\r\n extend(dxPopupOptions, {\r\n showCloseButton: true\r\n })\r\n } else {\r\n dxPopupOptions.toolbarItems[dxPopupOptions.toolbarItems.length] = {\r\n shortcut: \"cancel\"\r\n }\r\n }\r\n if (!isDefined(this._popupContainer)) {\r\n that._popupContainer = that._createComponent($element, Popup, dxPopupOptions);\r\n that._popupContainer.on(\"optionChanged\", (function(args) {\r\n if (\"visible\" === args.name) {\r\n that.renderCompleted.fire()\r\n }\r\n }))\r\n } else {\r\n this._popupContainer.option(dxPopupOptions)\r\n }\r\n },\r\n _renderCore: function(change) {\r\n if (this._popupContainer) {\r\n this._updateList(change)\r\n }\r\n },\r\n _renderTreeView: function($container, items) {\r\n var that = this;\r\n var columnChooser = this.option(\"columnChooser\");\r\n var isSelectMode = \"select\" === columnChooser.mode;\r\n var treeViewConfig = {\r\n items: items,\r\n dataStructure: \"plain\",\r\n activeStateEnabled: true,\r\n focusStateEnabled: true,\r\n hoverStateEnabled: true,\r\n itemTemplate: \"item\",\r\n showCheckBoxesMode: \"none\",\r\n rootValue: null,\r\n searchEnabled: columnChooser.allowSearch,\r\n searchTimeout: columnChooser.searchTimeout,\r\n onItemRendered: function(e) {\r\n if (e.itemData.disableCheckBox) {\r\n var $treeViewNode = $(e.itemElement).closest(TREEVIEW_NODE_SELECTOR);\r\n var $checkBox;\r\n if ($treeViewNode.length) {\r\n $checkBox = $treeViewNode.find(CHECKBOX_SELECTOR);\r\n if ($checkBox.length) {\r\n var checkBoxInstance = $checkBox.data(\"dxCheckBox\");\r\n checkBoxInstance && checkBoxInstance.option(\"disabled\", true)\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var scrollableInstance = $container.find(\".dx-scrollable\").data(\"dxScrollable\");\r\n var scrollTop = scrollableInstance && scrollableInstance.scrollTop();\r\n if (isSelectMode && !this._columnsController.isBandColumnsUsed()) {\r\n $container.addClass(this.addWidgetPrefix(COLUMN_CHOOSER_PLAIN_CLASS))\r\n }\r\n treeViewConfig.onContentReady = function(e) {\r\n deferUpdate((function() {\r\n if (scrollTop) {\r\n var scrollable = $(e.element).find(\".dx-scrollable\").data(\"dxScrollable\");\r\n scrollable && scrollable.scrollTo({\r\n y: scrollTop\r\n })\r\n }\r\n that.renderCompleted.fire()\r\n }))\r\n };\r\n if (this._isWinDevice()) {\r\n treeViewConfig.useNativeScrolling = false\r\n }\r\n extend(treeViewConfig, isSelectMode ? this._prepareSelectModeConfig() : this._prepareDragModeConfig());\r\n if (this._columnChooserList) {\r\n if (!treeViewConfig.searchEnabled) {\r\n treeViewConfig.searchValue = \"\"\r\n }\r\n this._columnChooserList.option(treeViewConfig)\r\n } else {\r\n this._columnChooserList = this._createComponent($container, TreeView, treeViewConfig);\r\n $container.addClass(this.addWidgetPrefix(COLUMN_CHOOSER_LIST_CLASS))\r\n }\r\n },\r\n _prepareDragModeConfig: function() {\r\n var columnChooserOptions = this.option(\"columnChooser\");\r\n return {\r\n noDataText: columnChooserOptions.emptyPanelText,\r\n activeStateEnabled: false,\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false,\r\n itemTemplate: function(data, index, item) {\r\n $(item).text(data.text).parent().addClass(data.cssClass).addClass(COLUMN_CHOOSER_ITEM_CLASS)\r\n }\r\n }\r\n },\r\n _prepareSelectModeConfig: function() {\r\n var that = this;\r\n return {\r\n selectNodesRecursive: false,\r\n showCheckBoxesMode: \"normal\",\r\n onItemSelectionChanged: function(e) {\r\n var visibleColumns = that._columnsController.getVisibleColumns().filter((function(item) {\r\n return !item.command\r\n }));\r\n var isLastColumnUnselected = 1 === visibleColumns.length && !e.itemData.selected;\r\n if (isLastColumnUnselected) {\r\n e.component.selectItem(e.itemElement)\r\n } else {\r\n setTimeout((function() {\r\n that._columnsController.columnOption(e.itemData.id, \"visible\", e.itemData.selected)\r\n }), CLICK_TIMEOUT)\r\n }\r\n }\r\n }\r\n },\r\n _columnOptionChanged: function(e) {\r\n var changeTypes = e.changeTypes;\r\n var optionNames = e.optionNames;\r\n var isSelectMode = \"select\" === this.option(\"columnChooser.mode\");\r\n this.callBase(e);\r\n if (isSelectMode) {\r\n var needPartialRender = optionNames.visible && 1 === optionNames.length && void 0 !== e.columnIndex;\r\n var needFullRender = optionNames.showInColumnChooser || optionNames.caption || optionNames.visible || changeTypes.columns && optionNames.all;\r\n if (needPartialRender) {\r\n this.render(null, {\r\n changeType: \"selection\",\r\n columnIndex: e.columnIndex\r\n })\r\n } else if (needFullRender) {\r\n this.render(null, \"full\")\r\n }\r\n }\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"columnChooser\":\r\n this._initializePopupContainer();\r\n this.render(null, \"full\");\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n getColumnElements: function() {\r\n var result = [];\r\n var $node;\r\n var isSelectMode = \"select\" === this.option(\"columnChooser.mode\");\r\n var chooserColumns = this._columnsController.getChooserColumns(isSelectMode);\r\n var $content = this._popupContainer && this._popupContainer.$content();\r\n var $nodes = $content && $content.find(\".dx-treeview-node\");\r\n if ($nodes) {\r\n chooserColumns.forEach((function(column) {\r\n $node = $nodes.filter(\"[data-item-id = '\" + column.index + \"']\");\r\n var item = $node.length ? $node.children(\".\" + COLUMN_CHOOSER_ITEM_CLASS).get(0) : null;\r\n result.push(item)\r\n }))\r\n }\r\n return $(result)\r\n },\r\n getName: function() {\r\n return \"columnChooser\"\r\n },\r\n getColumns: function() {\r\n return this._columnsController.getChooserColumns()\r\n },\r\n allowDragging: function(column, sourceLocation) {\r\n var columnVisible = column && column.allowHiding && (\"columnChooser\" !== sourceLocation || !column.visible && this._columnsController.isParentColumnVisible(column.index));\r\n return this.isColumnChooserVisible() && columnVisible\r\n },\r\n getBoundingRect: function() {\r\n var container = this._popupContainer && this._popupContainer.$overlayContent();\r\n if (container && container.is(\":visible\")) {\r\n var offset = container.offset();\r\n return {\r\n left: offset.left,\r\n top: offset.top,\r\n right: offset.left + container.outerWidth(),\r\n bottom: offset.top + container.outerHeight()\r\n }\r\n }\r\n return null\r\n },\r\n showColumnChooser: function() {\r\n if (!this._popupContainer) {\r\n this._initializePopupContainer();\r\n this.render()\r\n }\r\n this._popupContainer.show();\r\n if (this._isWinDevice()) {\r\n $(\"body\").addClass(this.addWidgetPrefix(NOTOUCH_ACTION_CLASS))\r\n }\r\n },\r\n hideColumnChooser: function() {\r\n if (this._popupContainer) {\r\n this._popupContainer.hide()\r\n }\r\n },\r\n isColumnChooserVisible: function() {\r\n var popupContainer = this._popupContainer;\r\n return popupContainer && popupContainer.option(\"visible\")\r\n },\r\n publicMethods: function() {\r\n return [\"showColumnChooser\", \"hideColumnChooser\"]\r\n }\r\n});\r\nexport var columnChooserModule = {\r\n defaultOptions: function() {\r\n return {\r\n columnChooser: {\r\n enabled: false,\r\n allowSearch: false,\r\n searchTimeout: 500,\r\n mode: \"dragAndDrop\",\r\n width: 250,\r\n height: 260,\r\n title: messageLocalization.format(\"dxDataGrid-columnChooserTitle\"),\r\n emptyPanelText: messageLocalization.format(\"dxDataGrid-columnChooserEmptyText\"),\r\n container: void 0\r\n }\r\n }\r\n },\r\n controllers: {\r\n columnChooser: ColumnChooserController\r\n },\r\n views: {\r\n columnChooserView: ColumnChooserView\r\n },\r\n extenders: {\r\n views: {\r\n headerPanel: {\r\n _getToolbarItems: function() {\r\n var items = this.callBase();\r\n return this._appendColumnChooserItem(items)\r\n },\r\n _appendColumnChooserItem: function(items) {\r\n var that = this;\r\n var columnChooserEnabled = that.option(\"columnChooser.enabled\");\r\n if (columnChooserEnabled) {\r\n var hintText = that.option(\"columnChooser.title\");\r\n var toolbarItem = {\r\n widget: \"dxButton\",\r\n options: {\r\n icon: COLUMN_CHOOSER_ICON_NAME,\r\n onClick: function() {\r\n that.component.getView(\"columnChooserView\").showColumnChooser()\r\n },\r\n hint: hintText,\r\n text: hintText,\r\n onInitialized: function(e) {\r\n $(e.element).addClass(that._getToolbarButtonClass(that.addWidgetPrefix(COLUMN_CHOOSER_BUTTON_CLASS)))\r\n }\r\n },\r\n showText: \"inMenu\",\r\n location: \"after\",\r\n name: \"columnChooserButton\",\r\n locateInMenu: \"auto\",\r\n sortIndex: 40\r\n };\r\n items.push(toolbarItem)\r\n }\r\n return items\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"columnChooser\":\r\n this._invalidate();\r\n args.handled = true;\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n isVisible: function() {\r\n var columnChooserEnabled = this.option(\"columnChooser.enabled\");\r\n return this.callBase() || columnChooserEnabled\r\n }\r\n }\r\n },\r\n controllers: {\r\n columns: {\r\n allowMoveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {\r\n var columnChooserMode = this.option(\"columnChooser.mode\");\r\n var isMoveColumnDisallowed = \"select\" === columnChooserMode && \"columnChooser\" === targetLocation;\r\n return isMoveColumnDisallowed ? false : this.callBase(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation)\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/grid_core/ui.grid_core.state_storing_core.js)\r\n * Version: 21.1.5\r\n * Build date: Mon Aug 02 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport modules from \"./ui.grid_core.modules\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport {\r\n sessionStorage\r\n} from \"../../core/utils/storage\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isDefined,\r\n isPlainObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n fromPromise\r\n} from \"../../core/utils/deferred\";\r\nvar DATE_REGEX = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/;\r\nvar parseDates = function parseDates(state) {\r\n if (!state) {\r\n return\r\n }\r\n each(state, (function(key, value) {\r\n if (isPlainObject(value) || Array.isArray(value)) {\r\n parseDates(value)\r\n } else if (\"string\" === typeof value) {\r\n var date = DATE_REGEX.exec(value);\r\n if (date) {\r\n state[key] = new Date(Date.UTC(+date[1], +date[2] - 1, +date[3], +date[4], +date[5], +date[6]))\r\n }\r\n }\r\n }))\r\n};\r\nexport var StateStoringController = modules.ViewController.inherit(function() {\r\n var getStorage = function(options) {\r\n var storage = \"sessionStorage\" === options.type ? sessionStorage() : getWindow().localStorage;\r\n if (!storage) {\r\n if (\"file:\" === getWindow().location.protocol && browser.msie) {\r\n throw new Error(\"E1038\")\r\n } else {\r\n throw new Error(\"E1007\")\r\n }\r\n }\r\n return storage\r\n };\r\n var getUniqueStorageKey = function(options) {\r\n return isDefined(options.storageKey) ? options.storageKey : \"storage\"\r\n };\r\n return {\r\n _loadState: function() {\r\n var options = this.option(\"stateStoring\");\r\n if (\"custom\" === options.type) {\r\n return options.customLoad && options.customLoad()\r\n }\r\n try {\r\n return JSON.parse(getStorage(options).getItem(getUniqueStorageKey(options)))\r\n } catch (e) {\r\n errors.log(e.message)\r\n }\r\n },\r\n _saveState: function(state) {\r\n var options = this.option(\"stateStoring\");\r\n if (\"custom\" === options.type) {\r\n options.customSave && options.customSave(state);\r\n return\r\n }\r\n try {\r\n getStorage(options).setItem(getUniqueStorageKey(options), JSON.stringify(state))\r\n } catch (e) {\r\n errors.log(e.message)\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"state\"]\r\n },\r\n isEnabled: function() {\r\n return this.option(\"stateStoring.enabled\")\r\n },\r\n init: function() {\r\n var that = this;\r\n that._state = {};\r\n that._isLoaded = false;\r\n that._isLoading = false;\r\n that._windowUnloadHandler = function() {\r\n if (void 0 !== that._savingTimeoutID) {\r\n that._saveState(that.state())\r\n }\r\n };\r\n eventsEngine.on(getWindow(), \"unload\", that._windowUnloadHandler);\r\n return that\r\n },\r\n isLoaded: function() {\r\n return this._isLoaded\r\n },\r\n isLoading: function() {\r\n return this._isLoading\r\n },\r\n load: function() {\r\n this._isLoading = true;\r\n var loadResult = fromPromise(this._loadState());\r\n loadResult.always(() => {\r\n this._isLoaded = true;\r\n this._isLoading = false\r\n }).done(state => {\r\n this.state(state)\r\n });\r\n return loadResult\r\n },\r\n state: function(_state) {\r\n var that = this;\r\n if (!arguments.length) {\r\n return extend(true, {}, that._state)\r\n } else {\r\n that._state = extend({}, _state);\r\n parseDates(that._state)\r\n }\r\n },\r\n save: function() {\r\n var that = this;\r\n clearTimeout(that._savingTimeoutID);\r\n that._savingTimeoutID = setTimeout((function() {\r\n that._saveState(that.state());\r\n that._savingTimeoutID = void 0\r\n }), that.option(\"stateStoring.savingTimeout\"))\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"stateStoring\":\r\n if (this.isEnabled() && !this.isLoading()) {\r\n this.load()\r\n }\r\n args.handled = true;\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n dispose: function() {\r\n clearTimeout(this._savingTimeoutID);\r\n eventsEngine.off(getWindow(), \"unload\", this._windowUnloadHandler)\r\n }\r\n }\r\n}());\r\n"],"sourceRoot":""}