{"version":3,"sources":["webpack:///./node_modules/devextreme/ui/shared/filtering.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.core.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.row_dragging.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.pager.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.summary.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.data_controller.js","webpack:///./node_modules/devextreme/ui/context_menu/ui.context_menu.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.rows.js","webpack:///./node_modules/devextreme/format_helper.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.grouping.core.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.context_menu.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.js","webpack:///./node_modules/devextreme/exporter/excel/excel.file.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.editor_factory.js","webpack:///./node_modules/devextreme/core/utils/svg.js","webpack:///./node_modules/devextreme/exporter/excel/excel.font_helper.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.modules.js","webpack:///./node_modules/devextreme/ui/data_grid.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.columns_view.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.sorting_mixin.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.focus.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.virtual_columns.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.keyboard_navigation.js","webpack:///./node_modules/devextreme/exporter.js","webpack:///./node_modules/devextreme/ui/tree_view/ui.tree_view.search.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.column_headers.js","webpack:///./node_modules/devextreme/ui/filter_builder/filter_builder.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.search.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.virtual_scrolling_core.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.data_source_adapter.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.header_filter.js","webpack:///./node_modules/devextreme/exporter/svg_creator.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.data_source_adapter.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.focus.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.columns_controller.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.master_detail.js","webpack:///./node_modules/devextreme/exporter/excel/excel.tag_helper.js","webpack:///./node_modules/devextreme/exporter/excel_creator.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.context_menu.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.master_detail.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.column_chooser.js","webpack:///./node_modules/devextreme/ui/overlay/utils.js","webpack:///./node_modules/devextreme/exporter/excel/excel.number_format_helper.js","webpack:///./node_modules/devextreme/ui/tree_view/ui.tree_view.base.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.accessibility.js","webpack:///./node_modules/devextreme/ui/hierarchical_collection/ui.hierarchical_collection_widget.js","webpack:///./node_modules/devextreme/ui/dialog.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.columns_resizing_reordering.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.grouping.expanded.js","webpack:///./node_modules/devextreme/ui/filter_builder/ui.filter_operations_dictionary.js","webpack:///./node_modules/devextreme/ui/context_menu/ui.menu_base.edit.strategy.js","webpack:///./node_modules/devextreme/exporter/pdf_creator.js","webpack:///./node_modules/devextreme/ui/shared/accessibility.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.error_handling.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.state_storing_core.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.editing.js","webpack:///./node_modules/devextreme/ui/menu/ui.submenu.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.grid_view.js","webpack:///./node_modules/devextreme/ui/filter_builder.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.export_mixin.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.state_storing.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.utils.js","webpack:///./node_modules/devextreme/ui/menu/ui.menu.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.row_dragging.js","webpack:///./node_modules/devextreme/ui/tooltip/tooltip.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.search.js","webpack:///./node_modules/devextreme/exporter/excel/excel.cell_alignment_helper.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.columns_controller.js","webpack:///./node_modules/devextreme/ui/context_menu/ui.menu_base.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.header_filter_core.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.editing.js","webpack:///./node_modules/devextreme/exporter/excel/excel.fill_helper.js","webpack:///./node_modules/devextreme/ui/shared/ui.editor_factory_mixin.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.validating.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.virtual_columns_core.js","webpack:///./node_modules/devextreme/ui/tooltip.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.state_storing.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.column_headers.js","webpack:///./node_modules/devextreme/ui/hierarchical_collection/ui.data_converter.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.column_state_mixin.js","webpack:///./node_modules/devextreme/ui/hierarchical_collection/ui.data_adapter.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.grid_view.js","webpack:///./node_modules/devextreme/localization/language_codes.js","webpack:///./node_modules/devextreme/ui/menu.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.virtual_scrolling.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.sorting.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.header_panel.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.filter_row.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.keyboard_navigation.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.adaptivity.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.editor_factory.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.error_handling.js","webpack:///./node_modules/devextreme/ui/filter_builder/utils.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.filter_panel.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.selection.js","webpack:///./node_modules/devextreme/exporter/excel/excel.color_helper.js","webpack:///./node_modules/devextreme/exporter/excel/excel.pattern_fill_helper.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.columns_resizing_reordering.js","webpack:///./node_modules/jszip/dist/jszip.min.js","webpack:///./node_modules/devextreme/exporter/file_saver.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.header_filter.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.grouping.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.data_controller.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.sorting.js","webpack:///./node_modules/devextreme/ui/context_menu.js","webpack:///./node_modules/devextreme-vue/data-grid.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.column_chooser.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.virtual_scrolling.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.filter_builder.js","webpack:///./node_modules/devextreme/exporter/image_creator.js","webpack:///./node_modules/devextreme/ui/tree_view.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.filter_sync.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.virtual_columns.js","webpack:///./node_modules/devextreme/exporter/excel_format_converter.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.filter_sync.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.grouping.collapsed.js","webpack:///./node_modules/devextreme/ui/pager.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.rows.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.header_panel.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.selection.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.filter_panel.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.export.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.base.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.filter_custom_operations.js","webpack:///./node_modules/devextreme/exporter/excel/excel.cell_format_helper.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.adaptivity.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.column_fixing.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.pager.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.validating.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.filter_row.js","webpack:///./node_modules/devextreme/events/double_click.js","webpack:///./node_modules/devextreme/ui/filter_builder/between.js","webpack:///./node_modules/devextreme/ui/grid_core/ui.grid_core.utils.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.filter_builder.js","webpack:///./node_modules/devextreme/ui/data_grid/aggregate_calculator.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.column_fixing.js"],"names":["exports","default","_type","_array","_iterator","DEFAULT_DATE_INTERVAL","DEFAULT_DATETIME_INTERVAL","isDateType","dataType","getGroupInterval","column","index","result","dateIntervals","groupInterval","headerFilter","interval","inArray","slice","push","isDefined","Array","isArray","_default","getFilterSelector","target","selector","dataField","displayField","calculateDisplayValue","isZeroTime","date","getHours","getMinutes","getSeconds","getMilliseconds","getDateValues","dateValue","isDate","getFullYear","getMonth","getDate","map","split","value","Number","getFilterExpressionByRange","filterValue","endFilterValue","startFilterExpression","endFilterExpression","this","Date","getTime","setDate","getFilterExpressionForDate","selectedFilterOperation","dateStart","dateEnd","dateInterval","values","length","getFilterExpressionForNumber","startFilterValue","condition","defaultCalculateFilterExpression","isSearchByDisplayValue","lookup","filter","apply","arguments","module","_uiGrid_core","_interopRequireDefault","_uiGrid_core2","obj","__esModule","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","_objectSpread","i","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","configurable","writable","modules","_renderer","_extend","_sortable","_browser","COMMAND_HANDLE_CLASS","CELL_FOCUS_DISABLED_CLASS","HANDLE_ICON_CLASS","ROWS_VIEW","SORTABLE_WITHOUT_HANDLE_CLASS","RowDraggingExtender","init","callBase","_updateHandleColumn","_allowReordering","rowDragging","option","allowReordering","allowDropInsideItem","group","columnsController","_columnsController","isHandleColumnVisible","showDragIcons","addCommandColumn","type","command","visibleIndex","alignment","cssClass","width","cellTemplate","_getHandleTemplate","visible","columnOption","_renderContent","_this","$content","isFixedTableRendering","_isFixedTableRendering","sortableName","sortableFixedName","currentSortableName","anotherSortableName","togglePointerEventsStyle","toggle","_this$sortableFixedNa","$element","css","_createComponent","extend","component","contentTemplate","dragTemplate","_getDraggableRowTemplate","handle","concat","dropFeedbackMode","onDragStart","e","_rowDragging$onDragSt","row","getVisibleRows","fromIndex","itemData","data","isDataRow","rowType","cancel","call","onDragEnter","onDragLeave","onDragEnd","_rowDragging$onDragEn","msie","onOptionChanged","hasFixedSortable","name","toggleClass","_resizeCore","offset","_dataController","getRowIndexOffset","_sortableFixed","sortable","update","_getDraggableGridOptions","options","gridOptions","columns","getColumns","$rowElement","getRowElement","rowIndex","dataSource","id","parentId","showBorders","showColumnHeaders","scrolling","useNative","showScrollbar","pager","loadingTimeout","columnFixing","columnAutoWidth","showColumnLines","visibleWidth","fixed","fixedPosition","onRowPrepared","rowsView","getView","rowElement","replaceWith","eq","clone","_this2","$rootElement","$dataGridContainer","items","NAME","find","children","addWidgetPrefix","hide","_this3","container","addClass","setEmptyText","optionChanged","args","_invalidate","handled","defaultOptions","extenders","views","_pager","_window","PAGER_CLASS","MAX_PAGES_COUNT","getPageIndex","dataController","parseInt","pageIndex","PagerView","View","inherit","that","getController","_isVisible","changed","add","repaintChangesOnly","_getPager","pageSize","pageCount","totalCount","hasKnownLastPage","render","changeType","element","_renderCore","pagerOptions","keyboardController","maxPagesCount","showPageSizes","showPageSizeSelector","showInfo","displayMode","pagesNavigatorVisible","showNavigationButtons","pageSizes","getPageSizes","pageIndexChanged","setTimeout","pageSizeChanged","onKeyDown","executeAction","useLegacyKeyboardNavigation","useKeyboard","infoText","allowedPageSizes","_pageSizes","Math","floor","isVisible","pagerVisible","mode","isLoaded","getHeight","getElementHeight","isPager","isPaging","isDataSource","isScrolling","skipProcessingPagingChange","fullName","hasWindow","resize","pagerView","FooterView","renderSummaryCell","_common","_data","_ui","_uiData_grid","_message","_uiData_grid2","_aggregate_calculator","_query","_store_helper","_utils","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","cell","$cell","summaryItems","$summaryItems","summaryItem","text","getSummaryText","summaryTexts","append","getSummaryCellOptions","totalItem","summaryCells","columnIndex","getGroupAggregates","summary","aggregates","recalculateWhileEditing","ColumnsView","_getRows","footerItems","_getCellOptions","_renderCellContent","change","columnIndices","empty","_updateContent","_renderTable","$newTable","$row","_getTableElement","$newRow","_updateCells","_rowClick","item","_columnOptionChanged","optionNames","changeTypes","grouping","_handleDataChanged","totalColumnIndices","SummaryDataSourceAdapterExtender","forEachGroup","groups","groupCount","callback","path","pop","_totalAggregates","_summaryGetter","noop","summaryGetter","isFunction","_summary","totalAggregates","isLastLevelGroupItemsPagingLocal","sortByGroupsInfo","sortByGroups","sortLastLevelGroupItems","paths","groupedItems","multiLevelGroup","toArray","itemsPath","toString","SummaryDataSourceAdapterClientExtender","applyAddedData","insertedData","groupLevel","applyRemovedData","removedData","updatedData","updatedItems","get","set","indexOf","calculateAggregates","calculator","editingController","getInsertedData","getRemovedData","groupAggregates","calculate","sortGroupsBySummaryCore","query","sorts","each","sortBy","desc","thenBy","enumerate","done","sortedItems","sortGroupsBySummary","_customizeRemoteOperations","remoteOperations","isCustomLoading","storeLoadOptions","isLoadingAll","groupSummary","paging","totalSummary","cachedExtra","cachedPagesData","extra","_handleDataLoadedCore","normalizeSortingInfo","loadOptions","isPlainObject","registerModule","groupItems","totalItems","calculateCustomSummary","skipEmptyValues","texts","sum","getFormatter","sumOtherColumn","min","minOtherColumn","max","maxOtherColumn","avg","avgOtherColumn","count","sortByGroupSummaryInfo","footerView","controllers","_isDataColumn","groupIndex","showWhenGrouped","_isGroupFooterVisible","groupItem","showInColumn","showInGroupFooter","_processGroupItems","isGroupFooterVisible","collectContinuationItems","isContinuationOnNextPage","_processGroupItem","summaryGroupItems","groupColumnIndex","afterGroupColumnIndex","visibleColumns","prevColumn","_calculateSummaryCells","alignByColumn","calculateTargetColumnIndex","summaryCellsByColumns","summaryIndex","valueFormat","aggregate","summaryType","getFormatByDataType","isString","deserializeValue","columnCaption","caption","isEmptyObject","_getSummaryCells","summaryTotalItems","getVisibleColumns","_updateItemsCore","_dataSource","_footerItems","oldSummaryCells","summaryCell","JSON","stringify","_prepareUnsavedDataSelector","getUpdatedData","_prepareAggregateSelector","aggregator","_getAggregates","commonSkipEmptyValues","calculateCellValue","bind","compileGetter","log","summaryProcess","seed","totalValue","step","finalize","_addSortInfo","groupColumn","sortOrder","_findSummaryItem","summaryItemIndex","getFullName","_getSummarySortByGroups","groupSummaryItems","groupColumns","getGroupColumns","_createDataSourceAdapterCore","dataSourceAdapter","currentRemoteOperations","_getSummaryOptions","totalSummaryItems","publicMethods","methods","getTotalSummaryValue","summaryItemName","editing","_refreshSummary","isSaving","refresh","load","changesOnly","_addChange","params","_removeChange","cancelEditData","_createRow","_renderCells","_renderGroupSummaryCells","_hasAlignByColumnSummaryItems","_getAlignByColumnCellCount","groupCellColSpan","alignByColumnCellCount","$groupCell","last","attr","_renderGroupSummaryCellsCore","_renderCell","parent","_getSummaryCellIndex","_getCellTemplate","parameters","DataController","_getDataSourceAdapter","_getSpecificDataSourceOption","_typeof","Symbol","iterator","constructor","prototype","_dom_adapter","_events_engine","_guid","_component_registrator","_dom","_element","_fx","_position","_devices","_index","_overlay","_deferred","_classCallCheck","instance","Constructor","TypeError","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_get","property","receiver","Reflect","base","_superPropBase","hasOwnProperty","_getPrototypeOf","_inherits","subClass","superClass","create","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","NewTarget","construct","_possibleConstructorReturn","self","_assertThisInitialized","ReferenceError","sham","Proxy","getPrototypeOf","DX_MENU_CLASS","DX_MENU_ITEM_CLASS","DX_MENU_ITEM_EXPANDED_CLASS","DX_MENU_PHONE_CLASS","DX_MENU_ITEMS_CONTAINER_CLASS","DX_MENU_ITEM_WRAPPER_CLASS","DX_SUBMENU_CLASS","DX_CONTEXT_MENU_CLASS","DX_HAS_CONTEXT_MENU_CLASS","DX_STATE_DISABLED_CLASS","DX_STATE_FOCUSED_CLASS","DX_STATE_HOVER_CLASS","FOCUS_UP","FOCUS_DOWN","FOCUS_LEFT","FOCUS_RIGHT","FOCUS_FIRST","FOCUS_LAST","ACTIONS","LOCAL_SUBMENU_DIRECTIONS","DEFAULT_SHOW_EVENT","ContextMenu","_MenuBase","_super","showEventOption","isObject","delay","showEvent","closeOnOutsideClick","position","at","my","onShowing","onShown","onSubmenuCreated","onHiding","onHidden","onPositioning","submenuDirection","onLeftFirstItem","onLeftLastItem","onCloseRootSubmenu","onExpandLastSubmenu","device","animation","_actions","action","_createActionByOption","_optionsByReference","selectedItem","_itemContainer","selectItem","$item","_isSelectionEnabled","space","escape","$availableItems","_getAvailableItems","$focusedItem","$hoveredItem","$hoveredItemContainer","closest","location","$newTarget","$items","_getItemsByLocation","$oldTarget","_getActiveItem","itemsContainer","$activeItemHighlighted","_prevItem","_setFocusedElement","is","first","_nextItem","_hideSubmenuHandler","_expandSubmenuHandler","getPublicElement","$activeItem","$target","$curItem","$parentItem","parents","_hideSubmenusOnSameLevel","_hideSubmenu","_getItemData","node","_dataAdapter","getNodeByItem","isItemHasSubmenu","_hasSubmenu","$submenu","hasClass","_showSubmenu","remove","_detachShowContextMenuEvents","_getTarget","_renderVisibility","_addWidgetClass","_attachShowContextMenuEvents","_keyboardListenerId","_focusTarget","overlayOptions","_getOverlayOptions","appendTo","_$element","$overlayContent","_addCustomCssClass","_addPlatformDependentClass","_attachContextMenuEvent","stopPropagation","current","phone","getShowEvent","eventName","addNamespace","_showContextMenuEventHandler","off","getDocument","contextMenuAction","_createAction","getShowDelay","_show","event","validatingTargetName","handler","currentTarget","isRenderer","nodeType","isWindow","on","$wrapper","submenuContainer","$holder","$itemsContainer","$itemFrame","_renderItems","_getChildNodes","itemElement","internalFields","submenuElement","focusStateEnabled","innerOverlay","_closeOnOutsideClickHandler","propagateOutsideClick","closeOnTargetScroll","deferRendering","of","collision","shading","showTitle","height","_overlayShownActionHandler","_overlayHidingActionHandler","_overlayHiddenActionHandler","arg","_hideAllShownSubmenus","_setOptionWithoutOptionChange","isDocument","$activeItemContainer","_getActiveItemsContainer","$itemContainers","_getItemsContainers","$clickedItem","_searchActiveItem","$rootItem","isRootItemClicked","isInnerOverlayClicked","_isIncludeOverlay","_getShowSubmenuMode","_hideAllShownChildSubmenus","_$content","$activeOverlay","$allOverlays","isSame","$overlay","_this4","$submenuElements","shownSubmenus","_shownSubmenus","$context","context","isSubmenuRendered","_renderSubmenuItems","_isSubmenuVisible","_drawSubmenu","$expandedItems","siblings","removeClass","_hideSubmenuCore","$itemElement","show","submenuPosition","_getSubmenuPosition","stop","setup","to","_animate","$container","animate","toLowerCase","$rootItemWrapper","h","v","actionArgs","shouldRenderSubmenu","notCloseMenuOnItemClick","closeMenuOnClick","disabled","_updateSelectedItemOnClick","$prevSubmenu","canceled","$curSubmenu","_this5","contains","splice","_stopAnimate","_this6","_","_renderContentImpl","_initActions","previousValue","showing","_hide","jQEvent","promise","Deferred","reject","_positionContextMenu","_renderContextMenuOverlay","_widgetClass","_renderFocusState","_attachHoverEvents","_attachClickEvent","getRootNodes","_setAriaAttributes","_overlayContentId","setAria","role","_getContextMenuPosition","isInitialPosition","_isInitialOptionValue","positioningAction","preventDefault","lastPosition","_cleanAriaAttributes","_style","_string","_remove_event","ROWS_VIEW_CLASS","CONTENT_CLASS","NOWRAP_CLASS","GROUP_ROW_CLASS","GROUP_CELL_CLASS","DATA_ROW_CLASS","FREE_SPACE_CLASS","ROW_LINES_CLASS","COLUMN_LINES_CLASS","ROW_ALTERNATION_CLASS","LAST_ROW_BORDER","EMPTY_CLASS","ROW_INSERTED_ANIMATION_CLASS","LOADPANEL_HIDE_TIMEOUT","getMaxHorizontalScrollOffset","scrollable","scrollWidth","clientWidth","hoverStateEnabled","loadPanel","enabled","format","showIndicator","indicatorSrc","showPane","rowTemplate","noDataText","wordWrapEnabled","showRowLines","rowAlternationEnabled","activeStateEnabled","twoWayBindingEnabled","defaultCellTemplate","isDataTextEmpty","isEmpty","encodeHtml","textContent","innerHTML","getScrollableBottomPadding","getScrollable","ceil","parseFloat","_getDefaultTemplate","html","_getDefaultGroupTemplate","getGroupRowSummaryText","groupContinuedMessage","groupContinuesMessage","_update","template","allowRenderToDetachedContainer","groupCellTemplate","isGroup","isRowExpanded","isExpanded","_rowPrepared","rowOptions","_isAltRow","watch","_setAriaRowIndex","isPagerMode","_afterRowPrepared","isNewRow","dispose","generateDataValues","repaintRows","deep","skipImmediate","_renderScrollable","force","_loadPanel","_renderLoadPanel","isLocalStore","allColumnsHasWidth","minWidth","_hasHeight","_isColumnFixing","_renderScrollableCore","_handleScroll","rtlEnabled","_isScrollByEvent","_scrollTop","scrollOffset","top","_scrollLeft","left","_scrollRight","scrollChanged","fire","dxScrollableOptions","_createScrollableOptions","scrollHandler","onScroll","onStop","_scrollable","_scrollableContainer","_$container","renderLoadPanel","contentElement","tableElement","_findContentElement","newTableElement","executors","highlightChanges","rowInsertedClass","rowIndices","$newRowElement","_getRowElements","$rowsElement","insertBefore","insertAfter","prependTo","isLiveUpdate","_setTableElement","_createEmptyRow","className","isFixed","getFixedColumns","_createCell","isNumeric","_appendEmptyRow","$table","$emptyRow","$tBodies","_getBodies","isTableContainer","prepend","$colgroup","_renderFreeSpaceRow","$tableElement","$freeSpaceRowElement","_wrapRowIfNeed","_checkRowKeys","rows","keyExpr","store","some","fireError","_needUpdateRowHeight","itemsCount","_rowHeight","_getRowsHeight","$rowElements","not","reduce","getBoundingRect","_updateRowHeight","rowsHeight","$rows","_getFreeSpaceRowElements","tableElements","getTableElements","_getNoDataText","evaluate","expr","getter","_rowDblClick","_getColumnsCountBeforeGroups","_getGroupCellOptions","columnsCountBeforeGroups","colspan","_renderGroupedCells","expandColumn","groupCellOptions","allowCollapsing","scrollingMode","groupColumnAlignment","getDefaultAlignment","_renderRows","updateFreeSpaceRowHeight","_renderRow","renderTemplate","resizeCompletedHandler","scrollableInstance","getWindow","document","resizeCompleted","_visibilityChanged","_createTable","_lastColumnWidths","displayValue","getDisplayValue","oldValue","formatValue","resized","resizedCallbacks","groupingTextsOptions","isContinuation","_setRowsOpacityCore","columnID","isBand","isParentBandColumn","opacity","_getDevicePixelRatio","devicePixelRatio","renderNoDataText","getCellOptions","columnIdentifier","cellOptions","getRow","itemCount","freeSpaceRowElements","isFreeSpaceRowVisible","deferUpdate","scrollbarWidth","getScrollbarWidth","elementHeightWithoutScrollbar","contentHeight","outerHeight","showFreeSpaceRow","borderTopWidth","heightCorrection","_getHeightCorrection","resultHeight","deferRender","_updateLastRowBorder","freeSpaceRowCount","setHeight","isZoomedWebkit","webkit","hasExtraBorderTop","mozilla","version","_fireColumnResizedCallbacks","_editorFactoryController","loadingChanged","isLoading","messageText","setLoading","dataSourceChanged","contentWidth","isHorizontal","scrollableContainer","clientHeight","offsetHeight","offsetWidth","lastColumnWidths","columnWidths","_updateScrollable","dxScrollable","getInstance","_updateHorizontalScrollPosition","scrollLeft","maxHorizontalScrollOffset","scrollRight","scrollTo","x","_height","hasHeight","loadPanelOptions","visibilityOptions","message","clearTimeout","_hideLoadingTimeoutID","setRowsOpacity","_getCellElementsCore","$cells","groupCellIndex","getTopVisibleItemIndex","isFloor","itemIndex","prevOffsetTop","offsetTop","scrollPosition","$contentElement","contentElementOffsetTop","rowElements","round","getTopVisibleRowData","_scrollToElement","scrollToElement","_tableElement","setScrollerSpacing","_date","_number","_date2","_dependency_injector","_format","formatIsValid","valueIsValid","getTimeFormat","showSecond","_normalizeFormat","formatPart","join","getDateFormatByDifferences","dateDifferences","intervalFormat","resultFormat","needSpecialSecondFormatter","millisecond","year","month","day","secondFormatter","hour","minute","second","unshift","quarter","monthDayFormatter","getMonthNames","dayFormatter","getDateFormatByTicks","ticks","maxDiff","currentDiff","getDatesDifferences","getDateFormatByTickInterval","startValue","endValue","tickInterval","dateUnitInterval","dateDifferencesConverter","week","correctDateDifferences","correctDifferencesByMaxDate","differences","minDate","maxDate","getDateUnitInterval","createOffsetFilter","GroupingHelper","_class","filterElement","j","currentFilter","combineFilters","findGroupInfoByKey","groupsInfo","hash","getGroupInfoIndexByOffset","leftIndex","rightIndex","middleIndex","cleanGroupsInfo","groupsCount","calculateItemsCount","isGroupItemCountable","ctor","reset","_groupsInfo","_totalCountCorrection","totalCountCorrection","updateTotalItemsCount","_isVirtualPaging","foreachGroups","childrenAtFirst","foreachCollapsedGroups","updateOffsets","updateParentOffsets","foreachGroupsCore","callbackResults","executeCallback","callbackResult","currentParents","when","always","_updateGroupInfoOffsets","groupInfo","parentIndex","sort","a","b","findGroupInfo","pathIndex","addGroupInfo","groupInfoData","allowCollapseAll","oldGroups","_group","handleDataLoading","handleDataLoaded","handleDataLoadedCore","_context_menu","CONTEXT_MENU","viewName","columnHeadersView","headerPanel","VIEW_NAMES","ContextMenuController","ViewController","createAction","getContextMenuItems","dxEvent","$targetRowElement","$targetCellElement","menuItems","$targetElement","view","getRowIndex","cellIndex","targetElement","cells","_contextMenuPrepared","ContextMenuView","contextMenuInstance","onItemClick","getWidgetContainerClass","onContextMenuPreparing","contextMenu","contextMenuView","_excel","_excel2","_excel3","_excel4","_excel5","ExcelFile","_cellFormatTags","_fillTags","_fontTags","_numberFormatTags","tryCreateTag","patternFill","patternType","cellFormat","cellFormatTag","registerFill","registerFont","registerNumberFormat","areEqual","cellFormatTagsAsXmlStringsArray","tag","toXml","fill","fillTag","tagsAsXmlStringsArray","font","fontTag","xmlStringsArray","CUSTOM_FORMAT_ID_START_VALUE","numberFormat","ID_PROPERTY_NAME","_convertNumberFormatIndexToId","copy","_click","_pointer","_position2","EDITOR_INLINE_BLOCK","FOCUS_OVERLAY_CLASS","FOCUSED_ELEMENT_CLASS","ROW_CLASS","MODULE_NAMESPACE","UPDATE_FOCUS_EVENTS","down","DX_HIDDEN","EditorFactory","_getFocusedElement","$dataGridElement","rowSelector","focusedElementSelector","_getFocusCellSelector","_updateFocusCore","$focusCell","hideBorders","$focus","_$focusedElement","focus","loseFocus","_updateFocus","isFocusOverlay","_isFocusOverlay","_updateFocusTimeoutID","_updateFocusOverlaySize","oversize","outerWidth","callbackNames","hideBorder","_focusTimeoutID","renderFocusOverlay","focused","refocus","isElementInCurrentGrid","_$focusOverlay","align","elemCoord","right","bottom","focusOverlayPosition","precise","boundary","$focusedElement","excludeValidators","category","_updateFocusHandler","_attachContainerEventHandlers","normalizeKeyName","include","editorFactory","getSvgMarkup","getSvgElement","window","getMarkup","backgroundColor","temp","createElement","cloneNode","appendChild","fixNamespaces","markup","replace","match","decodeHtmlEntities","isNode","DOMParser","parseFromString","childNodes","fontHelper","sourceObj","size","family","scheme","bold","italic","underline","color","leftTag","rightTag","content","val","_callbacks","WIDGET_WITH_LEGACY_CONTAINER_NAME","ModuleItem","_endUpdateCore","_updateLockCount","_actionConfigs","flags","callbackFlags","unique","syncStrategy","beginUpdate","endUpdate","optionCache","_optionCache","_silentOption","localize","getAction","actionName","prefix","setAttribute","_controllers","config","componentName","containerName","Controller","_views","getViews","_isReady","isReady","_requireReady","_requireRender","_requireResize","_$parent","requireResize","requireReady","_afterRender","_parentElement","renderCompleted","marginTop","marginBottom","getTemplate","_getTemplate","$parent","isResizing","trigger","MODULES_ORDER_MAX_INDEX","processModules","componentClass","modulesOrder","controllerTypes","viewTypes","module1","module2","orderIndex1","orderIndex2","moduleName","Error","subclassOf","extender","registerPublicMethods","moduleItem","methodName","createModuleItems","moduleTypes","moduleItems","moduleType","callModuleItemsMethod","registerModulesOrder","moduleNames","unregisterModule","grep","_element_data","_double_click","iteratorUtils","_interopRequireWildcard","_uiGrid_core3","_getRequireWildcardCache","WeakMap","cache","has","newObj","hasPropertyDescriptor","SCROLL_CONTAINER_CLASS","GROUP_SPACE_CLASS","TABLE_CLASS","TABLE_FIXED_CLASS","CONTENT_FIXED_CLASS","DETAIL_ROW_CLASS","FILTER_ROW_CLASS","CELL_UPDATED_ANIMATION_CLASS","HIDDEN_COLUMNS_WIDTH","CELL_HINT_VISIBLE","FORM_FIELD_ITEM_CONTENT_CLASS","appendElementTemplate","subscribeToRowEvents","touchTarget","touchCurrentTarget","timeoutId","clearTouchTargets","timeout","_isNativeClick","_rowPointerDown","getWidthStyle","setCellWidth","style","maxWidth","copyAttributes","newElement","oldAttributes","attributes","newAttributes","nodeName","hasAttribute","removeAttribute","nodeValue","scrollingOptions","useNativeScrolling","pushBackValue","direction","bounceEnabled","useSimulatedScrollbar","_updateCell","_cellPrepared","textAlign","headerId","rowObject","dataIndex","isAppend","_createColGroup","safari","ctrlKey","isHeaderRow","isGroupRow","isMasterDetailRow","isFilterRow","msieCorrection","headerCellTemplate","removeAttr","difference","getOptions","$fieldItemContent","delegateTarget","resultOptions","cellElement","eventType","formItemOptions","getVisibleIndex","colgroupElement","_createCol","col","setWidth","renderDelayedTemplates","delayedTemplates","_delayedTemplates","syncTemplates","async","asyncTemplates","_renderDelayedTemplatesCore","_renderDelayedTemplatesCoreAsync","templates","isAsync","templateParameters","shift","doc","_processTemplate","renderingTemplate","model","deferred","resolve","renderedTemplate","templateID","_templatesCache","templateDeferred","templateOptions","onRendered","renderAsync","showEditorAlways","$tbody","_appendRow","appendTemplate","$root","$wrappedRow","_addWatchMethod","_needRenderCell","oldValues","$newCells","cellUpdatedClass","$newCell","_setCellAriaAttributes","columnIndexOffset","getColumnIndexOffset","ariaColIndex","isAltRow","watchers","updateFunc","watcher","newValue","stopWatch","checkChanges","widths","setColumnWidths","getCellIndex","afterExecute","columnsChanged","pos","$scrollContainer","_wrapTableInScrollContainer","$newTableElement","_getWidths","$cellElements","legacyRendering","getBoundingClientRect","clientRect","getColumnWidths","isRowVisible","display","getVisibleColumnIndex","_ref","$cols","toFixed","getCellElements","_getCellElement","columnVisibleIndex","_getVisibleColumnIndex","_getRowElement","$tableElements","getCellElement","elements","getColumnElements","getCell","cellPosition","getRowsCount","_getRowElementsCore","tBodies","getName","paddingLeft","paddingRight","isScrollbarVisible","SORT_CLASS","SORT_NONE_CLASS","SORTUP_CLASS","SORTDOWN_CLASS","SORT_INDEX_CLASS","SORT_INDEX_ICON_CLASS","HEADERS_ACTION_CLASS","_applyColumnState","ariaSortState","$sortIndicator","sortingMode","rootElement","$indicatorsContainer","_getIndicatorContainer","isSortingAllowed","allowSorting","hasSeveralSortIndexes","sortIndex","_getIndicatorClassName","_renderIndicator","$indicator","indicator","columnAlignment","_updateIndicator","indicatorName","_getIndicatorElements","returnAll","$indicatorElements","ROW_FOCUSED_CLASS","FOCUSED_ROW_SELECTOR","TABLE_POSTFIX_CLASS","FocusController","_keyboardController","focusedRowKey","_focusRowByIndex","_triggerFocusedRowChangedIfNeed","focusedRowIndex","_focusRowByKey","focusedRowIndexByKey","getFocusedRowIndexByKey","getRowIndexByKey","_fireFocusedRowChanged","isAutoNavigateToFocusedRow","_resetFocusedRow","_focusRowByIndexCore","setKeyByIndex","_isValidFocusedRowIndex","lastItemIndex","_getLastItemIndex","getKeyByRowIndex","isRowFocused","_isLocalRowIndex","waitReady","isVirtualScrolling","_isVirtualScrolling","virtualItems","virtualItemsCount","virtualItemsBegin","begin","visibleRowsCount","visiblePagesCount","_setFocusedRowKeyByIndex","_navigateToRow","isFocusedRowKeyDefined","setFocusedRowIndex","updateItems","navigateToRow","needFocusRow","isAutoNavigate","d","rowIndexByKey","isPaginate","getDataSource","paginate","_navigateTo","getPageIndexByKey","reload","fail","visibleRowIndex","isVirtualRowRenderingMode","_navigateToVirtualRow","_navigateToVisibleRow","_triggerUpdateFocusedRow","scrollToRowElement","rowsScrollController","_rowsScrollController","getIndexByKey","getRowIndexDelta","getItemOffset","triggerUpdateFocusedRow","y","_focusRowByKeyOrIndex","currentFocusedRowIndex","equalByValue","updateFocusedRow","_change$items","isMainTable","_clearPreviousFocusedRow","_prepareFocusedRow","changedItem","isNotMasterDetailFocusedRow","focusedRow","$focusedRowTable","$prevRowFocusedElement","$firstRow","tabIndex","scrollToElementVertically","focusedRowEnabled","autoNavigateToFocusedRow","focusedColumnIndex","keyboardNavigation","setRowFocusType","_focusedCellPosition","visibleRow","setFocusedColumnIndex","_escapeKeyHandler","eventArgs","isEditing","isCellFocusType","_focus","_getCellElementFromTarget","originalEvent","_updateFocusedCellPosition","prevRowIndex","prevColumnIndex","_fireFocusedCellChanged","isRowElement","_getElementType","isRowFocusType","getFirstValidCellInRow","getSortDataSourceParameters","sortByKey","isLocalOperations","every","operationName","notSortedKeys","getDataIndexGetter","notSortedKey","_applyChange","_fireChanged","isPartialUpdate","isPartialUpdateWithDeleting","_updatePageIndexes","processUpdateFocusedRow","prevRenderingPageIndex","_lastRenderingPageIndex","renderingPageIndex","_isPagingByRendering","isPagingByRendering","operationTypes","focusController","fullReload","isValidRowIndexByKey","needFocusRowByIndex","getGlobalRowIndexByKey","globalIndex","_calculateGlobalRowIndexByGroupedData","_calculateGlobalRowIndexByFlatData","groupFilter","useGroup","_generateFilterByKey","_concatWithCombinedFilter","skip","take","_generateOperationFilterByKey","requireTotalCount","combinedFilter","getCombinedFilter","_generateBooleanFilter","sortInfo","rowData","filtering","getGroupDataSourceParameters","reverse","isBoolean","booleanFilter","filterOperation","sortFilter","operation","dataSourceKey","keyPart","updateFocusElementTabIndex","preventScroll","_setFocusedRowElementTabIndex","_findRowElementForTabIndex","_scrollToFocusOnResize","setFocusedCellPosition","getScrollElementPosition","DEFAULT_COLUMN_WIDTH","VirtualScrollingRowsViewExtender","setScrollPosition","HeaderFooterViewExtender","isVirtualMode","ColumnsControllerExtender","getWidths","members","_beginPageIndex","_endPageIndex","_virtualVisibleColumns","resetColumnsCache","getBeginPageIndex","currentPosition","getColumnPageSize","getTotalWidth","_lastWidth","getEndPageIndex","_fireColumnsChanged","all","_renderTime","renderingThreshold","_changedTimeout","_setScrollPositionCore","beginPageIndex","endPageIndex","needColumnsChanged","isBase","fixedColumns","transparentColumnIndex","c","visibleColumnsHash","rowCount","getRowCount","startIndex","endIndex","beginFixedColumnCount","beginFixedColumns","beginColumns","beginWidth","endFixedColumnCount","endFixedColumns","endColumns","endWidth","columnsInfo","createColumnsInfo","leftFixedColumnCount","columnRenderingMode","columnPageSize","columnRenderingThreshold","export","_export","_file_saver","fileSaver","svg","pdf","image","excel","_excel_creator","_image_creator","_svg_creator","_excel_format_converter","_pdf_creator","getData","exportingAction","exportedAction","fileSavingAction","fileName","then","blob","saveAs","proxyUrl","forceProxy","creator","ExcelCreator","formatConverter","imageCreator","testFormats","svgCreator","_uiTree_view","WIDGET_CLASS","NODE_CONTAINER_CLASS","TreeViewSearch","_addWidgetPrefix","_optionChanged","_showCheckboxes","_isRecursiveSelection","_removeSelection","_initDataAdapter","_updateSearch","_repaintContainer","repaint","_updateDataAdapter","_getDataAdapterOptions","searchValue","searchMode","searchExpr","_searchEditor","editorOptions","_getSearchEditorOptions","rootNodes","_renderEmptyMessage","_fireContentReadyAction","isSearchMode","_clean","_removeSearchBox","CELL_CONTENT_CLASS","HEADERS_CLASS","ROW_CLASS_SELECTOR","HEADER_ROW_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","cellHintEnabled","createCellContent","$cellContent","addCssClassesToCellContent","contentAlignment","getHeaderContentAlignment","$visibleIndicatorElements","indicatorCount","_getColumnAlignment","sortIndicatorClassName","sortIndexIndicatorClassName","$sortIndexIndicator","shiftKey","_isLegacyKeyboardNavigation","_getHeaderTemplate","resultTemplate","_isGroupingChanged","registerKeyboardAction","_handleActionKeyDown","_lastActionElement","headerFilterController","$column","getColumnIndexByElement","showHeaderFilterMenu","_processHeaderAction","_hasRowElements","_getRowVisibleColumns","$cellElement","rowspan","_isElementVisible","elementOptions","_alignCaptionByCenter","$indicatorElement","_isSortableElement","getHeadersRowHeight","$headerRows","headerRow","getHeaderElement","columnElements","bandColumnIndex","getChildrenByBandColumn","$columnElements","allowDragging","sourceLocation","draggingPanels","draggableColumnCount","canHideColumn","allowHiding","allowDrag","allowGrouping","isColumnOptionUsed","draggingPanel","getColumnCount","sortingOptions","changeSortOrder","ascendingText","icon","descendingText","clearText","setColumnOpacity","ownerBand","_tree_view","_popup","_ui2","_utils2","FILTER_BUILDER_CLASS","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_TEXT_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","OPERATORS","and","or","notAnd","notOr","FilterBuilder","_getDefaultOptions","onEditorPreparing","onEditorPrepared","onValueChanged","fields","defaultGroupOperation","groupOperations","maxGroupLevel","allowHierarchicalFields","groupOperationDescriptions","customOperations","closePopupOnTargetScroll","filterOperationDescriptions","between","equal","notEqual","lessThan","lessThanOrEqual","greaterThan","greaterThanOrEqual","startsWith","notContains","endsWith","isBlank","isNotBlank","_initCustomOperations","disableInvalidateForValue","_disableInvalidateForValue","_initModel","getFilterExpression","_getNormalizedFields","_model","getNormalizedFilter","_customOperations","getNormalizedFields","_updateFilter","normalizedValue","_getModel","_init","_initEditorFactory","_editorFactory","getMergedOperations","convertToInnerStructure","actionConfig","_initMarkup","_createGroupElementByCriteria","_createConditionElement","_createConditionItem","criteria","$group","_createGroupElement","$groupContent","groupCriteria","getGroupCriteria","innerCriteria","isCondition","$groupItem","_createRemoveButton","removeItem","_createGroupOperationButton","_createAddButton","newGroup","createEmptyGroup","addItem","field","newCondition","createCondition","_createButton","_getGroupOperations","groupMenuItem","getGroupMenuItem","$operationButton","_createButtonWithMenu","menu","displayExpr","setGroupValue","onContentReady","removeMenu","menuOnItemClickWrapper","$button","selectionMode","popup","info","treeViewElement","treeView","dxTreeView","keyName","_subscribeOnClickAndEnterKey","_createPopupWithTreeView","_hasValueButton","customOperation","getCustomOperation","hasValue","_createOperationButtonWithMenu","availableOperations","getAvailableOperations","currentOperation","getOperationFromAvailable","getOperationValue","onItemRendered","isCustom","updateConditionByOperation","$valueButton","_createValueButton","_createOperationAndValueButtons","_createFieldButtonWithMenu","getItems","getField","getFullCaption","getCaptionWithParents","$fieldButton","dataStructure","getDefaultOperation","isSingleChild","getGroupValue","$removeButton","addGroupHandler","addConditionHandler","click","_createValueText","$text","getCurrentLookupValueText","renderValueText","getCurrentValueText","_createValueEditorWithEvents","_updateConditionValue","areValuesDifferent","_addDocumentKeyUp","$editor","isComposing","hasCompositionJustEnded","documentKeyUpHandler","input","which","_documentKeyUpHandler","_addDocumentClick","closeEditorFunc","documentClickHandler","_isFocusOnEditorParts","_documentClickHandler","activeElement","getActiveElement","_removeEvents","_dispose","_this7","createValueText","closeEditor","setValue","_createValueEditor","prev","editorTemplate","createEditor","parentType","$popup","$menuContainer","maxHeight","getElementMaxHeightByWindow","getContentHeightLimit","subscribeToExternalScrollers","VirtualScrollController","getPixelRatio","SCROLLING_MODE_INFINITE","SCROLLING_MODE_VIRTUAL","_isVirtual","isAppendMode","needTwoPagesLoading","_viewportItemIndex","browser","scrollChangedHandler","$scrollElement","scrollableArray","scrollToArray","disposeArray","getElementOffset","$scrollableElement","scrollableOffset","scrollTop","createWindowScrollHandler","widgetScrollStrategy","subscribeToScrollEvents","eventsStrategy","topOffset","scrollMethod","getViewportPageCount","preventPreload","realViewportSize","_viewportSize","viewportSize","_viewportItemSize","getContentOffset","totalItemsCount","itemSize","_itemSizes","getPreloadPageCount","previous","preloadEnabled","getPageIndexForLoad","_pageIndex","_cache","needToLoadPageBeforeLast","needToLoadPrevPage","needToLoadNextPage","_loadingPageIndexes","fireChanged","_isChangedFiring","processDelayChanged","_isDelayChanged","processChanged","isDelayChanged","removeCacheItem","isPrepend","viewportItems","removeCount","correctCount","removeItemCount","itemsLength","updateLoading","_lastPageIndex","loadCore","isVirtual","_sizeRatio","_items","positionChanged","getItemSizes","beginItemsCount","endItemsCount","end","setViewportPosition","scrollingTimeout","changingDuration","_scrollTimeoutID","_setViewportPositionCore","getViewportPosition","getItemIndexByPosition","defaultItemSize","getItemSize","itemOffset","itemOffsetsWithSize","itemOffsetWithSize","itemOffsetDiff","setViewportItemIndex","setContentSize","sizes","_contentSize","virtualContentSize","contentHeightLimit","isEnd","currentItemIndex","getVirtualContentSize","getViewportItemIndex","newPageIndex","virtualMode","appendMode","lastPageSize","maxPageIndex","viewportItemSize","defaultPageIndex","pageIndexForLoad","loadResult","delayDeferred","_delayDeferred","onChanged","loadIfNeed","handleDataChanged","removeInvisiblePages","lastCacheLength","changes","cacheItem","isDelayed","isRefresh","subscribeToWindowScrollEvents","_windowScroll","dataSourceAdapterType","_filtering","_variable_wrapper","_accessibility","DATE_INTERVAL_FORMATS","HeaderFilterController","getFormatOptions","currentLevel","getFormatOptionsByColumn","getDisplayFormat","formatOptions","firstValueText","secondValue","secondValueText","_headerFilterView","_updateSelectedState","isExclude","filterType","updateHeaderFilterItemSelectionState","filterValues","_normalizeGroupItem","valueSelector","displaySelector","getHeaderItemText","headerFilterOptions","emptyValue","level","valueExpr","getHeaderFilterGroupParameters","headerFilterDataSource","isLookup","normalizeDataSourceOptions","lookupDataSourceOptions","isWrapped","cutoffLevel","_currentColumn","useDefaultSearch","origPostProcess","postProcess","getCurrentColumn","isGroupPanel","$columnElement","showHeaderFilterMenuBase","columnElement","applyFilter","remoteFiltering","dxResizableInstance","overlayContent","dxResizable","headerFilterByColumn","restoreFocus","isFilterBuilder","hideHeaderFilterMenu","ColumnHeadersViewHeaderFilterExtender","headerFilterMixin","$headerFilterIndicator","allowHeaderFiltering","_subscribeToIndicatorEvent","_updateHeaderFilterIndicators","_updateIndicators","_needUpdateFilterIndicators","HeaderPanelHeaderFilterExtender","_createGroupPanelItem","invertFilterExpression","DataControllerFilterRowExtender","skipCalculateColumnFilters","_calculateAdditionalFilter","filters","currentColumn","calculateFilterExpression","createFilterExpression","allowSearch","searchTimeout","ok","headerFilterView","HeaderFilterView","_ajax","_svg","_markup","_imageArray","_imageDeferreds","_getBinaryFile","src","sendRequest","url","method","responseType","_loadImages","response","binary","bytes","Uint8Array","byteLength","String","fromCharCode","btoa","_parseImages","href","tagName","_prepareImages","svgElem","xmlVersion","$svgObject","dataURI","regexpString","RegExp","Blob","_getBlob","_getBase64","_array_store","_array_utils","cloneItems","calculateOperationTypes","lastLoadOptions","isFullReload","sorting","equalSortParameters","groupExpanding","groupExpand","equalFilterParameters","executeTask","executeAsync","createEmptyPagesData","pages","getPageDataFromCache","setPageDataToCache","_remoteOperations","_isLastPage","isLastPage","_hasLastPage","_currentTotalCount","_cachedPagesData","_lastOperationTypes","_eventsStrategy","_skipCorrection","_isLoadingAll","loadError","customizeStoreLoadOptions","changing","_dataChangedHandler","_dataLoadingHandler","_handleDataLoading","_dataLoadedHandler","_handleDataLoaded","_loadingChangedHandler","_handleLoadingChanged","_loadErrorHandler","_handleLoadError","_pushHandler","_handlePush","_changingHandler","_handleChanging","memberName","member","isSharedDataSource","resetCurrentTotalCount","resetCache","_cachedStoreData","_cachedPagingData","resetPagesCache","_needClearStoreDataCache","_lastLoadOptions","fromStore","applyBatch","keyInfo","_applyBatch","_dataIndexGetter","indexByKey","storeData","isCacheUpdated","getKeyHash","keyOf","_getKeyInfo","getItemCount","oldItemCount","useInsertIndex","_needCleanCacheByOperation","operationType","operationTypesByOrder","operationTypeIndex","currentOperationTypes","cachedStoreData","cachedPagingData","originalStoreLoadOptions","_isRefreshing","isRefreshing","_loadingOperationTypes","_isRefreshed","_lastOperationId","operationId","_handleDataLoadingCore","localLoadOptionNames","optionName","optionValue","localPaging","needCache","needPageCache","needPagingCache","needStoreCache","mergeStoreLoadData","error","currentTotalCount","_operationTypes","_scheduleCustomLoadCallbacks","_isCustomLoading","loadingOperationTypes","loadFromStore","dataSourceLoadOptions","_customLoadOptions","_scheduleLoadCallbacks","fireEvent","full","getCachedStoreData","MAX_SAFE_INTEGER","changeRowExpand","isRowClick","isKeyboardEnabled","_isFocusedRowInsideGroup","_getGroupPath","groupPath","_expandGroupByPath","expandRow","isGroupKey","_grouping","_updatePagingOptions","_calculateExpandedRowGlobalIndex","groupOffset","createGroupFilter","totalOffset","dataOffset","groupContinuationCount","currentPageOffset","commonColumnSettings","allowExporting","MASTER_DETAIL_CELL_CLASS","MASTER_DETAIL_ROW_CLASS","masterDetail","autoExpandAll","_getExpandColumnsCore","expandColumns","getExpandCellTemplate","initMasterDetail","_expandedItems","_isExpandAll","expandAll","collapseAll","expandIndex","_getRowIndicesForExpand","_changeRowExpandCore","_processDataItem","dataItem","detailColumnIndex","_processItems","isEnabledChanged","isAutoExpandAllChanged","resizing","fireContentReadyAction","_updateParentDataGrids","$masterDetailRow","_updateMasterDataGrid","$detailElement","masterRowOptions","masterDataGrid","isFixedColumns","_updateFixedMasterDetailGrids","masterRowIndex","detailElementWidth","updateDimensions","isDetailHorizontalScrollCanBeShown","isDetailGridWidthChanged","_toggleBestFitMode","isBestFit","$rowsTable","_rowsView","isEditRow","_isDetailRow","$detailCell","tagHelper","attributeName","attributeValue","_jszip","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","number","string","EXCEL_START_TIME","UTC","DAYS_COUNT_BEFORE_29_FEB_1900","MAX_DIGIT_WIDTH_IN_PIXELS","UNSUPPORTED_FORMAT_MAPPING","quarterAndYear","_getXMLTag","_convertToExcelCellRef","zeroBasedRowIndex","zeroBasedCellIndex","charCode","isCellIndexFound","columnName","_convertToExcelCellRefAndTrackMaxIndex","_maxRowIndex","_maxColumnIndex","_getDataType","_tryGetExcelCellDataType","isFinite","boolean","_formatObjectConverter","precision","formatter","currency","_tryConvertToExcelNumberFormat","newFormat","convertFormat","_appendString","_stringHash","_stringArray","_tryGetExcelDateValue","days","totalTime","_prepareValue","sourceValue","dataProvider","_dataProvider","getCellData","cellSourceData","_ref2","getCellType","_callCustomizeExcelCell","_ref3","sourceData","styleCopy","copyCellFormat","clearStyle","horizontalAlignment","verticalAlignment","wrapTextEnabled","horizontal","vertical","wrapText","fillPatternType","fillPatternColor","customizeExcelCell","newStyle","_getDataArray","cellsArray","cellData","cellsLength","rowsLength","styleArrayIndex","getStyleId","cellStyleId","_styleArrayIndexToCellStyleIdMap","hasCustomizeExcelCell","modifiedExcelCell","_styleArray","cellDataType","excelDateValue","_excelFile","registerCellFormat","_needSheetPr","getGroupLevel","_calculateWidth","pixelsWidth","_prepareStyleData","styles","getStyles","_colsArray","fonts","theme","_prepareCellData","_cellsArray","_createXMLRelationships","xmlRelationships","_createXMLRelationship","_getWorkbookContent","_getContentTypesContent","_generateStylesXML","folder","_zip","XML","generateNumberFormatsXml","generateFontsXml","generateFillsXml","generateCellFormatsXml","file","_generateStringsXML","stringIndex","stringsLength","sharedStringXml","_getPaneXML","frozenArea","getFrozenArea","_getAutoFilterXML","maxCellIndex","_options","autoFilterEnabled","getHeaderRowCount","_getIgnoredErrorsXML","ignoreErrors","_generateWorksheetXML","colIndex","xmlCells","xmlRows","colsLength","rSpans","headerRowCount","xmlResult","_rtlEnabled","rightBottomCellRef","_generateMergingXML","k","l","mergeIndex","columnsLength","usedArea","mergeArray","mergeXML","cellMerge","getCellMerging","start","mergeArrayLength","_generateCommonXML","relsFileContent","relsXML","_generateContent","_generateWorkXML","JSZip","_checkZipState","ready","isBlob","compression","mimeType","MIME_TYPES","EXCEL","generateAsync","generate","excelCreator","ColumnChooserView","ColumnChooserController","columnChooser","columnChooserView","WINDOW_HEIGHT_PERCENT","startLocation","actualOffset","$window","_$element$offset","elementOffset","innerHeight","offsetBottom","numberFormatHelper","formatCode","numFmtId","_check_box","_load_indicator","_ui3","NODE_CLASS","NODE_LOAD_INDICATOR_CLASS","OPENED_NODE_CONTAINER_CLASS","IS_LEAF","ITEM_CLASS","ITEM_WITH_CHECKBOX_CLASS","ITEM_WITHOUT_CHECKBOX_CLASS","ITEM_DATA_KEY","TOGGLE_ITEM_VISIBILITY_CLASS","LOAD_INDICATOR_CLASS","LOAD_INDICATOR_WRAPPER_CLASS","TOGGLE_ITEM_VISIBILITY_OPENED_CLASS","SELECT_ALL_ITEM_CLASS","INVISIBLE_STATE_CLASS","SELECTED_ITEM_CLASS","EXPAND_EVENT_NAMESPACE","DATA_ITEM_ID","TreeViewBase","_supportedKeys","_itemClickHandler","expandEventName","_getEventNameByOption","expandByClick","_expandEventHandler","select","_changeCheckBoxState","toggleExpandedNestedItems","state","rootItem","_toggleExpandedNestedItems","enter","asterisk","minus","checkboxInstance","_getCheckBoxInstance","currentState","_updateItemSelection","len","_toggleExpandedState","_getNodeElement","_encodeString","$nodeByKey","$node","querySelector","_activeStateUnit","animationEnabled","expandAllEnabled","hasItemsExpr","selectNodesRecursive","expandNodesRecursive","showCheckBoxesMode","selectAllText","onItemSelectionChanged","onItemExpanded","onItemCollapsed","scrollDirection","virtualModeEnabled","rootValue","expandEvent","selectByClick","createChildren","onSelectAllValueChanged","integrationOptions","useDeferUpdateForTemplates","_initSelectedItems","_syncSelectionOptions","asyncNoop","_fireSelectionChanged","selectionChangePromise","_selectionChangePromise","_createSelectAllValueChangedAction","_selectAllValueChangedAction","_fireSelectAllValueChanged","_checkBoxModeChange","selectAllExists","_$selectAllItem","_renderSelectAllItem","getFullData","_hasChildren","toggleSelection","dxCheckBox","_filter","_initAccessors","_initExpandEvent","setOption","_initDataSource","_useCustomChildrenLoader","_loadChildrenByCustomLoader","newItems","_isVirtualMode","_initVirtualMode","custom","internal","_isDataStructurePlain","parentNode","invocationResult","fromPromise","_combineFilter","_dataSourceLoadErrorHandler","_initStoreChangeHandlers","_dataSourceChangedHandler","_initialized","_removeTreeViewLoadIndicator","_treeViewLoadIndicator","_createTreeViewLoadIndicator","_dataSourceLoadingChangedHandler","resultFilter","newItem","isFiltered","_updateLevel","_parentIdGetter","removedKey","getNodeByKey","_markChildrenItemsToRemove","_removeItems","childrenKeys","counter","_getContainerByParentKey","getChildrenNodes","_getOldContainer","_renderNodeContainer","_isRootLevel","_renderScrollableContainer","_getAccessors","accessors","multipleSelection","_isSingleSelection","recursiveSelection","recursiveExpansion","selectionRequired","$nodeContainer","_selectAllEnabled","skipContentReadyAction","_expandedGetter","_createDOMElement","label","_displayGetter","expanded","_getLevel","nodes","_renderItem","_renderedItemsCount","nodeIndex","nodeData","showCheckBox","_renderCheckBox","selected","_toggleSelectedClass","_renderChildren","_setAriaSelected","_renderToggleItemVisibilityIcon","_loadSublevel","_renderSublevel","_getActualNode","_addLeafClass","cachedNode","_hasItemsGetter","childrenNodes","_loadNestedItems","getNodesByItems","$nestedNodeContainer","childNodesByChildrenKeys","childNode","firstChild","_updateParentsState","_normalizeIconState","_executeItemRenderAction","_getNode","_getItemRenderAction","getPublicNode","$nodeElement","expandedEventName","itemSelector","_itemSelector","identifier","isPrimitive","isElementNode","_getNodeByElement","_decodeString","_createLoadIndicator","toggleExpansion","_updateExpandedItemsUI","$icon","_renderToggleItemVisibilityIconClick","isHiddenNode","parentKey","nodeContainerExists","completionCallback","_animateNodeContainer","_loadNestedItemsWithUpdate","_this8","actualNodeData","_this9","publicNode","_areNodesExists","_appendItems","keyOfRootItem","fullData","nodeHeight","duration","from","complete","_fireExpandedStateUpdatedEvent","_itemDXEventHandler","_itemEventHandler","hasNewItems","$loadIndicator","_emptyMessageContainer","_contentAlreadyRendered","isAllSelected","_toggleSelectAll","before","toggleSelectAll","_updateItemsUI","$checkbox","_changeCheckboxValue","_disabledGetter","_toggleNodeDisabledState","toggleNodeDisabledState","checkbox","_itemOptionChanged","_isLastSelectedBranch","selectedNodesKeys","keyIndex","_isLastRequired","isSingleMode","getSelectedNodeKeys","_this10","nodeKey","unselectItem","initiator","_findItemElementByItem","_this11","nodeSelection","$parentNode","parentValue","_itemEventHandlerImpl","_extendActionArgs","_itemContextMenuHandler","_createEventHandler","_itemHoldHandler","_itemClass","_itemDataKey","clickSelector","pointerDownSelector","pointerDownEvent","$itemContainer","_itemPointerDownHandler","isDefaultPrevented","_updateSelectionToFirstItem","_updateSelectionToLastItem","_focusInHandler","_this12","_updateFocusState","_setFocusedItemTimeout","_setFocusedItem","_findNonDisabledNodes","$nodes","_moveFocus","_nodeElements","$prevItem","prevItemElement","_getNodeItemElement","$nextItem","nextItemElement","$firstItem","$lastItem","_expandFocusedContainer","_collapseFocusedContainer","$focusedNode","_getClosestNonDisabledNode","nodeElement","collapsedNode","encodeURI","decodeURI","_this13","resolveWith","expandItem","collapseItem","getNodes","getTreeNodes","getSelectedNodes","_this14","getSelectedNodesKeys","selectAll","unselectAll","dataAdapter","getExpandedNodesKeys","scrollToItem","keyOrItemOrElement","_this15","nodeKeysToExpand","scrollCallback","_expandNodes","scrollToElementTopLeft","keysToExpand","_this16","resultCallback","callbacksByNodes","accessibility","executeKeyDown","_icon","_uiCollection_widget","_bindable_template","HierarchicalCollectionWidget","selectedExpr","disabledExpr","itemsExpr","parentIdExpr","expandedExpr","_defaultOptionsRules","real","deviceType","isSimulator","_initDynamicTemplates","_createDataAdapterAccessors","dataAccessors","getters","setters","_templateManager","addDefaultTemplates","BindableTemplate","_getIconContainer","_getTextContainer","_getPopoutContainer","_addContentClasses","_itemsGetter","getImageContainer","accessor","_compileAccessor","_compileDisplayGetter","arr","setter","optionExpr","compileSetter","getterName","setterName","newAccessor","_renderItemFrame","confirm","alert","title","FakeDialogComponent","_component","_action","_config","_view_port","DEFAULT_BUTTON","onClick","DX_DIALOG_CLASSNAME","DX_DIALOG_WRAPPER_CLASSNAME","DX_DIALOG_ROOT_CLASSNAME","DX_DIALOG_CONTENT_CLASSNAME","DX_DIALOG_MESSAGE_CLASSNAME","DX_DIALOG_BUTTONS_CLASSNAME","DX_DIALOG_BUTTON_CLASSNAME","DX_BUTTON_CLASSNAME","platform","lWidth","pWidth","isMessageDefined","isMessageHtmlDefined","messageHtml","$message","popupToolbarItems","buttons","popupInstance","toolbar","android","widget","execute","ensureDefined","dragEnabled","isPortrait","widthOption","showCloseButton","ignoreChildEvents","bottomToolbar","resetActiveElement","$firstButton","toolbarItems","scale","boundaryOffset","popupOptions","_wrapper","_drag","_swatch_container","COLUMNS_SEPARATOR_CLASS","COLUMNS_SEPARATOR_TRANSPARENT","DRAGGING_HEADER_CLASS","HEADERS_DRAG_ACTION_CLASS","TRACKER_CLASS","HEADERS_DROP_HIGHLIGHT_CLASS","BLOCK_SEPARATOR_CLASS","DRAGGING_COMMAND_CELL_CLASS","COLUMNS_SEPARATOR_TOUCH_TRACKER_WIDTH","DRAGGING_DELTA","COLUMN_OPACITY","allowResizing","TrackerView","_unsubscribeFromCallback","_positionChanged","_tablePositionController","_subscribeToCallback","SeparatorView","_renderSeparator","_isShown","ColumnsSeparatorView","_isTransparent","columnsSeparatorTransparent","moveByX","outerX","changeCursor","cursorName","BlockSeparatorView","groupPanelOptions","columnChooserOptions","targetLocation","startAnimate","toOptions","easing","DraggingHeaderView","_isDragging","isDragging","_getDraggingPanelByPos","_dragOptions","boundingRect","_resetTargetColumnOptions","_dropOptions","targetColumnIndex","targetColumnElement","isLast","posX","posY","_getVisibleIndexObject","getCommonSettings","_controller","_columnsResizerViewController","dragHeader","isCommandColumn","sourceColumn","sourceIndex","sourceColumnIndex","sourceColumnElement","_onSelectStart","onselectstart","drag","whiteSpace","getSwatchContainer","moveHeader","eventData","dragOptions","moveDeltaX","abs","deltaX","moveDeltaY","deltaY","newLeft","newTop","dockHeader","targetDraggingPanel","controller","isVerticalOrientation","axisName","pointsByTarget","pointsByColumns","_generatePointsByColumns","startColumnIndex","centerPosition","dock","dropHeader","drop","isNextColumnResizingMode","ColumnsResizerViewController","_isHeadersRowArea","_columnHeadersView","headersRowHeight","_isRtlParentStyle","_this$_$parentContain","_$parentContainer","_pointCreated","point","isNextColumnMode","isRtlParentStyle","firstPointColumnIndex","nextColumn","_getTargetPoint","currentX","_moveSeparator","columnsSeparatorWidth","_columnsSeparatorView","parentOffset","parentOffsetLeft","_isResizing","_resizingInfo","_updateColumnsWidthIfNeeded","currentColumnIndex","_targetPoint","_previousParentOffset","_isReadyResizing","_endResizing","_trackerView","_getNextColumnIndex","_setupResizingInfo","nextColumnIndex","currentHeader","nextHeader","startPosX","currentColumnWidth","nextColumnWidth","_startResizing","isTouchEvent","_container","getPointsByColumns","_pointsByColumns","_unsubscribeFromEvents","_moveSeparatorHandler","move","_startResizingHandler","_endResizingHandler","up","_subscribeToEvents","nextCellWidth","cellWidth","needUpdate","resizingInfo","adaptColumnWidthByRatio","isPercentWidth","setColumnWidth","columnWidth","oldColumnWidth","correctContentWidth","allColumnsHaveWidth","totalPercent","hasScroll","totalWidth","lastColumnIndex","getLastResizableColumnIndex","_subscribesToCallbacks","_unsubscribeFromCallbacks","subscribe","_unsubscribes","generatePointsByColumnsHandler","generatePointsByColumnsScrollHandler","previousScrollbarVisibility","previousTableHeight","scrollbarVisibility","TablePositionViewController","diffOffsetTop","columnsHeadersHeight","scrollBarWidth","columnsResizerController","draggingHeaderView","isDraggingOrResizing","_pagerView","targetPoint","DraggingHeaderViewController","targetColumn","draggingHeader","nameDraggingPanel","subscribeToEvents","_getSeparator","_blockSeparatorView","hideSeparators","blockSeparator","columnsSeparator","_animationColumnIndex","_draggingHeaderView","_headerPanelView","_columnChooserView","allowDrop","allowMoveColumn","headersView","separator","hasTargetVisibleIndex","showSeparator","moveColumn","columnsSeparatorView","blockSeparatorView","trackerView","tablePosition","columnsResizer","_uiData_gridGrouping","loadTotalCount","correctSkipLoadOption","skipCorrection","resultSkip","processGroupItems","skipFirstItem","removeLastItemsCount","needRemoveFirstItem","collapsedItems","offsetInfo","pathEquals","path1","path2","keysEqual","updateGroupOffsets","additionalGroupInfo","removeGroupLoadOption","arrangeSortingInfo","createNotGroupFilter","getGroupCount","collapsedGroups","collapsedItemsCount","appendCollapsedPath","collapsedGroup","keyValue","pathValue","toComparable","groupedData","itemsCountCorrection","groupCountQuery","dataSourceItems","groupOffsetQuery","OPERATION_ICONS","notcontains","startswith","endswith","isblank","isnotblank","OPERATION_NAME","getIconByFilterOperation","getNameByFilterOperation","_uiCollection_widgetEditStrategy","MenuBaseEditStrategy","_PlainEditStrategy","_collectionWidget","getMenuItems","_getTemplateString","_version","mainPageTemplate","infoTemplate","imageStartTemplate","imageEndTemplate","trailerTemplate","xrefTemplate","pad","str","composePdfString","imageString","curDate","margin","widthPt","heightPt","mainPage","xref","getXref","mainContent","trailer","mainPageLength","contentLength","infoLength","getCurDate","getBlob","binaryData","dataArray","charCodeAt","buffer","getBase64","getImageData","pdfData","subscribeVisibilityChange","unsubscribeVisibilityChange","hiddenFocus","selectView","setTabIndex","FOCUS_STATE_CLASS","FOCUS_DISABLED_CLASS","GRID_ROW_SELECTOR","GRID_CELL_SELECTOR","TREELIST_ROW_SELECTOR","TREELIST_CELL_SELECTOR","viewItemSelectorMap","groupPanel","columnHeaders","filterRow","footer","filterPanel","isMouseDown","isHiddenFocusing","focusedElementInfo","processKeyDown","$mainElement","isHandled","fireKeyDownEvent","saveFocusedElementInfo","ariaLabel","$activeElements","getActiveAccessibleElements","targetIndex","viewInstance","viewElement","$viewElement","findFocusedViewElement","viewSelectors","$focusViewElement","onDocumentVisibilityChange","visibilityState","keyDownHandler","mouseDownHandler","focusinHandler","needShowOverlay","viewNames","viewItemIndex","_viewName","ERROR_ROW_CLASS","ERROR_MESSAGE_CLASS","ERROR_CLOSEBUTTON_CLASS","ACTION_CLASS","ErrorHandlingController","_createErrorRow","$errorRow","$closeButton","$errorMessage","_renderErrorMessage","errorRowIndex","removeErrorRow","colSpan","renderErrorRow","$popupContent","$errorMessageElement","$firstErrorRow","next","resizingController","$columnHeaders","$rowsViewElement","errorRowEnabled","errorHandling","errorHandlingController","dataErrorOccurred","hasChanges","StateStoringController","_storage","DATE_REGEX","parseDates","exec","getStorage","storage","sessionStorage","localStorage","protocol","getUniqueStorageKey","storageKey","_loadState","customLoad","parse","getItem","_saveState","setItem","customSave","isEnabled","_state","_isLoaded","_isLoading","_windowUnloadHandler","_savingTimeoutID","save","_dialog","_button","_form","_hold","iconUtils","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","minLen","_arrayLikeToArray","n","test","iter","arr2","EDIT_FORM_CLASS","EDIT_FORM_ITEM_CLASS","READONLY_CLASS","EDIT_POPUP_CLASS","FORM_BUTTONS_CONTAINER_CLASS","ADD_ROW_BUTTON_CLASS","DROPDOWN_EDITOR_OVERLAY_CLASS","LINK_CLASS","EDITOR_CELL_CLASS","ROW_SELECTED","EDIT_ROW","EDIT_BUTTON_CLASS","COMMAND_EDIT_CLASS","COMMAND_EDIT_WITH_ICONS_CLASS","SCROLLABLE_CONTAINER_CLASS","BUTTON_CLASS","INSERT_INDEX","ROW_REMOVED","ROW_INSERTED","ROW_MODIFIED","CELL_MODIFIED","EDITING_NAMESPACE","EDITORS_INPUT_SELECTOR","FOCUSABLE_ELEMENT_SELECTOR","EDIT_MODE_BATCH","EDIT_MODE_ROW","EDIT_MODE_CELL","EDIT_MODE_FORM","EDIT_MODE_POPUP","DATA_EDIT_DATA_INSERT_TYPE","DATA_EDIT_DATA_UPDATE_TYPE","DATA_EDIT_DATA_REMOVE_TYPE","DEFAULT_START_EDIT_ACTION","EDIT_MODES","ROW_BASED_MODES","CELL_BASED_MODES","FORM_BASED_MODES","MODES_WITH_DELAYED_FOCUS","TARGET_COMPONENT_NAME","EDIT_LINK_CLASS","edit","undelete","EDIT_ICON_CLASS","METHOD_NAMES","ACTION_OPTION_NAMES","BUTTON_NAMES","EDITING_POPUP_OPTION_NAME","EDITING_CHANGES_OPTION_NAME","EDITING_EDITROWKEY_OPTION_NAME","EDITING_EDITCOLUMNNAME_OPTION_NAME","createFailureHandler","_getEditMode","editMode","_isRowEditMode","isEditingCell","allowEditing","isEditingOrShowEditorAlwaysDataCell","isCommandCell","isEditorCell","EditingController","getDefaultEditorTemplate","readOnly","isOnForm","getEditingTexts","editingTexts","saveRowChanges","cancelRowChanges","editRow","undeleteRow","deleteRow","addRowToNode","getButtonIndex","button","getButtonName","getEditorType","isCustomEditorType","editorType","formItem","forEachFormItems","callBack","tabs","$pointerDownTarget","_editForm","_updateEditFormDeferred","_lastOperation","_deferreds","_saveEditorHandler","_pointerUpEditorHandler","_that$getController","_pointerDownEditorHandler","targetComponent","_editCellInProgress","isEditorPopup","checkEditorPopup","isDomElement","isAnotherComponent","_disposed","isAddRowButton","isCellEditMode","_closeEditItem","_updateEditColumn","_updateEditButtons","_internalState","getChanges","resetChanges","needReset","_getInternalData","_addInternalData","internalData","_getOldData","_this$_getInternalDat","oldData","editIndex","createObjectWithChanges","_fireDataErrorOccurred","getPopupContent","_needToCloseEditableCell","isCurrentComponentElement","$targetCell","isEditCell","closeEditCell","editForm","_repaintEditPopup","_isDefaultButtonVisible","isRowMode","isBatchMode","_getVisibleEditRowIndex","allowUpdating","allowDeleting","removed","_isButtonVisible","_getButtonConfig","buttonName","editingOptions","allowAction","_getEditingButtons","buttonIndex","haveCustomButtons","_renderEditingButtons","_getEditCommandCellTemplate","isRowEditMode","isFormEditMode","isCellOrBatchEditMode","getEditMode","getFirstEditableColumnIndex","firstFormItem","_firstFormItem","editRowKey","editRowIndex","$editFormElements","_getEditFormEditorVisibleIndex","getFirstEditableCellInRow","getFocusedCellInRow","_inputFocusTimeoutID","editPopup","_editPopup","popupOptionName","_handleEditRowKeyChange","_handleEditColumnNameChange","_handleChangesChange","_resetEditColumnName","_resetEditRowKey","oldRowIndexCorrection","_getEditRowIndexCorrection","oldRowIndex","_getVisibleEditColumnIndex","_editCellFromOptionChanged","_editRowFromOptionChanged","oldColumnIndex","_repaintEditCell","isPageChanged","needResetIndexes","isEditRowKeyDefined","isEditColumnNameDefined","_setEditRowKey","silent","_setEditRowKeyByIndex","getEditRowIndex","getEditFormRowIndex","popupVisible","_$popupContent","getEditForm","_needInsertItem","dataRowIndex","_generateNewItem","_getLoadedRowIndexByInsertKey","loadedRowIndexOffset","loadedRowIndex","processItems","processDataItem","_changes$editIndex","modified","modifiedValues","_initNewRow","_getInsertKey","insertKey","_getInsertRowIndex","_getInsertIndex","parentRowIndex","maxInsertIndex","editItem","addRow","param","oldEditRowIndex","saveEditData","_allowRowAdding","__KEY__","_addRowCore","insertIndex","initialOldEditRowIndex","_showEditPopup","_focusFirstEditableCellInRow","_afterInsertRow","$firstCell","_delayedInputFocus","eventToTrigger","_isEditingStart","_beforeEditCell","_beforeUpdateItems","editColumnName","_setEditColumnNameByIndex","_visibleColumns$index","_setEditColumnName","_getEditColumn","_getColumnByName","editColumn","isColumnHidden","_resetEditIndices","_needFocusEditor","_focusEditorIfNeed","$editingCell","_this$_rowsView","editColumnIndex","_focusEditingCell","repaintForm","isMobileDevice","fullScreen","_getSaveButtonConfig","_getCancelButtonConfig","_getPopupEditFormTemplate","$popupContainer","_getEditPopupHiddenHandler","defaultAnimation","formTemplate","getEditFormTemplate","_removeInternalData","executeOperation","func","waitForDeferredOperations","editCell","_editCell","coreResult","_editCellCore","_getNormalizedEditCellOptions","oldColumn","isEditByOptionChanged","_this$_getNormalizedE","_prepareEditCell","_processCanceledEditingCell","beforeFocusCallback","callBeforeFocusCallbackAlways","inputFocus","$focusableElement","focusAndSelectElement","_beforeFocusCallback","ios","$editCell","_checkAndDeleteRow","confirmDelete","confirmDeleteMessage","confirmDeleteTitle","showDialogTitle","confirmResult","_deleteRowCore","_fireOnSaving","onSavingParams","_executeEditingAction","_processChanges","deferreds","results","dataChanges","changeCopy","_beforeSaveEditData","insert","newData","doneDeferred","_processSaveEditDataResult","hasSavedData","changesLength","isError","_fireSaveEditDataEvents","_resolveAfterSave","_saving","_saveEditDataInner","_afterSaveEditData","_this17","_ref4","beginLoading","_endSaving","endLoading","_cancelSaving","_resetModifiedClassCells","_this18","columnsCount","_ref5","_changes$","_refreshDataAfterSave","_cancelEditDataCore","_this19","refreshMode","isFullRefresh","selection","isEditColumnVisible","_isEditColumnVisible","useIcons","isVisibleWithCurrentEditMode","allowAdding","setToolbarItemDisabled","_applyModified","_beforeCloseEditCellInBatchMode","_beforeCancelEditData","_hideEditPopup","hasEditData","withoutSaveEditData","_this20","_closeEditCellCore","_getRowIndicesForCascadeUpdating","skipCurrentRow","addDeferred","_this21","_prepareChange","_options$row","rowKey","setCellValueResult","setCellValue","displayValueMap","_updateRowValues","updateFieldValue","forceUpdateRow","_this22","_focusPreviousEditingCellIfNeed","_updateEditRow","_needUpdateRow","isCustomSetCellValue","defaultSetCellValue","isCustomCalculateCellValue","visibleColumn","defaultCalculateCellValue","isUpdateInCellMode","focusPreviousEditingCell","_updateEditRowCore","focusedElement","selectionRange","getSelectionRange","selectionStart","setSelectionRange","_getFormEditItemTemplate","editCellTemplate","renderFormEditTemplate","detailCellOptions","form","isReadOnly","getItemID","getFormEditorTemplate","_validator","$editorElement","validator","validatorOptions","contents","dxValidator","validationRules","validationGroup","dataGetter","getEditFormOptions","detailOptions","userCustomizeItem","editFormItemClass","itemId","formID","customizeItem","isRequired","rule","itemVisible","renderFormOnly","editFormOptions","baseEditFormOptions","$buttonsContainer","getColumnTemplate","editingStartOptions","isRowEditing","isCellEditing","iconType","getImageSourceType","localizationName","getButtonLocalizationNames","hint","prepareEditButtons","titleButtonTextByClassNames","revert","cancelAllChanges","saveAllChanges","classNameButtonByNames","buttonItems","prepareButtonItem","onInitialized","_getToolbarButtonClass","hintText","isButtonDisabled","showText","locateInMenu","highlightDataCell","cellModified","isCellModified","_allowEditAction","allowEditAction","startEditAction","needCallback","selectTextOnEditStart","colCount","_editingController","_applyChangeUpdate","_applyChangesOnly","_processItem","_getChangedColumnIndices","oldItem","_isCellChanged","oldRow","newRow","editFormRowIndex","isRowRemoved","isRowInserted","isRowModified","_getColumnIndexByElement","_getColumnIndexByElementCore","_editCellByClick","_this23","_pointerDownTimeout","isEditForm","isEditableCell","_editCellPrepared","_formItemPrepared","_isFormItem","isDetailRow","isPopupEditing","cellValue","_getToolbarItems","editButtonItems","excludedOptions","shouldInvalidate","DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS","Submenu","_ContextMenu","orientation","onHoverStart","_renderDelimiter","$contentDelimiter","onPositioned","_overlayPositionedActionHandler","_showDelimiter","_toggleFocusClass","hoverStartAction","submenu","containerOffset","vLocation","hLocation","rootOffset","offsetLeft","rootWidth","rootHeight","submenuWidth","submenuHeight","_isMenuHorizontal","BORDERS_CLASS","IMPORTANT_MARGIN_CLASS","TEXT_CONTENT_CLASS","HIDDEN_CLASS","GRIDBASE_CONTAINER_CLASS","isPixelWidth","mergeArraysByMaxValue","values1","values2","getContainerHeight","paddingTop","paddingBottom","calculateFreeWidth","_getTotalWidth","calculateFreeWidthWithCurrentMinWidth","currentMinWidth","ResizingController","_initPostRenderHandlers","_refreshSizesHandler","resizeDeferred","needUpdateDimensions","_setAriaRowColCount","columnCount","_getBestFitWidths","rowsColumnWidths","headerColumnWidths","footerColumnWidths","_footerView","resultWidths","_setVisibleWidths","columnId","getColumnId","_toggleBestFitModeForView","$rowsTables","$viewTables","$tableBody","$viewTable","$rowsFixedTable","_needStretch","_synchronizeColumns","resetBestFitMode","needBestFit","_needBestFit","hasMinWidth","isColumnWidthsCorrected","normalizeWidthsByExpandColumns","expandColumnWidth","isFocusOutsideWindow","_correctColumnWidths","_processStretch","_getAverageColumnsWidth","freeWidth","columnCountWithoutWidth","hasPercentWidth","hasAutoWidth","hasWidth","_hasWidth","_loop","isHiddenColumn","averageColumnsWidth","realColumnWidth","_getRealColumnWidth","_maxWidth","resultSizes","groupSize","tableSize","unusedIndexes","diff","diffElement","onePixelElementsCount","groupWidth","ratio","percentTotalWidth","pixelTotalWidth","freeSpace","percentTotalWidthInPixel","updateSize","$groupElement","importantMarginClass","detach","checkSize","_checkSize","prevResult","_resizeDeferred","_resetGroupElementHeight","_updateDimensionsCore","groupElement","_lastHeight","_setScrollerSpacingCore","vScrollbarWidth","hScrollbarWidth","_setScrollerSpacing","$testDiv","rootElementHeight","maxHeightHappened","isMaxHeightApplied","scrollHeight","_updateLastSizes","_renderDimensions","SynchronizeScrollingController","_scrollChangedHandler","GridView","_resizingController","_getWidgetAriaLabel","_groupElement","_renderViews","_getTableRoleName","isFirstRender","_rootElement","synchronizeScrolling","gridView","_filter_builder","_getEmptyCell","_defaultSetter","_cloneItem","_prepareItems","resultItems","cols","r","_c","_hover","DX_MENU_VERTICAL_CLASS","DX_MENU_HORIZONTAL_CLASS","DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS","DX_STATE_ACTIVE_CLASS","DX_ADAPTIVE_MODE_CLASS","DX_ADAPTIVE_HAMBURGER_BUTTON_CLASS","DX_ADAPTIVE_MODE_OVERLAY_WRAPPER_CLASS","SHOW_SUBMENU_OPERATION","NEXTITEM_OPERATION","PREVITEM_OPERATION","DEFAULT_DELAY","Menu","showFirstSubmenuMode","hideSubmenuOnMouseLeave","onSubmenuShowing","onSubmenuShown","onSubmenuHiding","onSubmenuHidden","adaptivityEnabled","rootMenuElements","submenuElements","_submenuItemElements","currentSubmenu","_submenus","argument","navigationAction","isMenuHorizontal","_getItemsNavigationOperation","_getKeyboardNavigationAction","navOperation","_resizeEventTimer","_menuItemsWidth","_updateItemsWidthCache","_dimensionChanged","$menuItems","_getSummaryItemsWidth","_isAdaptivityEnabled","containerWidth","_toggleAdaptiveMode","_visibleSubmenu","_initAdaptivity","_hamburger","_toggleTreeView","_toggleHamburgerActiveState","$menuItemsContainer","$adaptiveElements","_hideVisibleSubmenu","_treeView","_$adaptiveContainer","rtl","menuOptions","optionsToTransfer","actionsToTransfer","_treeviewItemClickHandler","$hamburger","_renderHamburgerButton","_getTreeViewOptions","_getAdaptiveOverlayOptions","delayType","_createSubmenu","_renderBorderElement","$submenuContainer","_getSubmenuOptions","_parentKey","_clearTimeouts","getSubmenuPosition","_attachSubmenuHandlers","$submenuTarget","itemTemplate","showSubmenuMode","onFocusedItemChanged","onSelectionChanged","_nestedItemOnSelectionChangedHandler","_nestedItemOnItemClickHandler","_nestedItemOnItemRenderedHandler","_moveMainMenuFocus","_isDesktopDevice","$currentItem","$newItem","addedItems","_clearSelectionInSubmenus","_clearRootSelection","targetSubmenu","cleanAllSubmenus","isOtherItem","$selectedItem","_selectedItemClass","selectedItemData","_clearSelectedItems","$prevSelectedItem","prevSelectedItemData","$submenuOverlayContent","getOverlayContent","submenus","submenuMouseLeaveName","_submenuOnShowingHandler","_submenuOnShownHandler","_submenuOnHidingHandler","_submenuOnHiddenHandler","_submenuMouseLeaveHandler","$border","relatedTarget","_getSubmenuByRootElement","_hideSubmenuAfterTimeout","_getDelay","isRootItemHovered","isSubmenuItemHovered","hoveredElementFromSubMenu","isHorizontalMenu","$closestItem","_itemElements","mouseMoveEventName","_getItemElementByEventArgs","isSelectionActive","_isItemDisabled","_getShowFirstSubmenuMode","_getSubmenuByElement","isOverlayVisible","_itemMouseMoveHandler","_showSubmenuTimer","eventArg","_hideSubmenuTimer","_hoveredRootItem","pointers","_changeSubmenusOption","_removeAdaptivity","_popover","TOOLTIP_CLASS","TOOLTIP_WRAPPER_CLASS","Tooltip","titleTemplate","onTitleRendered","bottomTemplate","_render","_contentId","_toggleAriaDescription","SEARCH_PANEL_CLASS","SEARCH_TEXT_CLASS","HEADER_PANEL_CLASS","FILTERING_TIMEOUT","allowFiltering","parseValue","searchPanel","placeholder","highlightSearchText","highlightCaseSensitive","searchVisibleColumnsOnly","calculateSearchFilter","onQueryDone","valueGetter","_i","searchFilter","searchByText","_applyFilter","getSearchPanelOptions","_prepareSearchItem","searchPanelOptions","toolbarItem","$search","updateValueTimeout","inputAttr","getSearchTextEditor","$searchPanel","dxTextBox","editor","_searchParams","_getFormattedSearchText","searchText","_getStringNormalizer","isCaseSensitive","_findHighlightingTextNodes","stringNormalizer","normalizedSearchText","$contents","_highlightSearchTextCore","$textNode","$searchTextSpan","firstContentElement","substr","after","createTextNode","_highlightSearchText","isEquals","textNodes","textNode","_highlightTimer","cellAlignmentHelper","_object","_inflector","_date_serialization","_abstract_store","_data_source","USER_STATE_FIELD_NAMES_15_1","USER_STATE_FIELD_NAMES","IGNORE_COLUMN_OPTION_NAMES","bestFitWidth","bufferedFilterValue","COMMAND_EXPAND_CLASS","GROUP_COMMAND_COLUMN_NAME","regExp","globalColumnId","trueText","falseText","allowColumnReordering","allowColumnResizing","columnResizingMode","columnMinWidth","regenerateColumnsByVisibleItems","customizeColumns","dateSerializationFormat","DEFAULT_COLUMN_OPTIONS","showInColumnChooser","DATATYPE_OPERATIONS","datetime","COLUMN_INDEX_OPTIONS","grouped","GROUP_LOCATION","COLUMN_CHOOSER_LOCATION","setFilterOperationsAsDefaultValues","filterOperations","defaultFilterOperations","createColumn","columnOptions","userStateColumnOptions","bandColumn","commonColumnOptions","setName","deepExtendArraySafe","calculatedColumnOptions","_createCalculatedColumnOptions","createColumnsFromOptions","columnsOptions","_columnsUserState","checkUserStateColumn","hasColumns","getParentBandColumns","columnParentByIndex","_getChildrenByBandColumn","columnChildrenByIndex","recursive","getColumnByIndexes","columnIndexes","bandColumnsCache","getBandColumnsCache","callbackFilter","isPlain","_columns","getColumnFullPath","calculateColspan","processBandColumns","getValueDataType","getSerializationFormat","getDateSerializationFormat","updateSerializers","deserializeDate","serializeValue","serializeDate","serializationFormat","parsedValue","isNaN","getAlignmentByDataType","isRTL","customizeTextForBooleanDataType","valueText","getCustomizeTextByDataType","createColumnsFromDataSource","fieldName","firstItems","_getFirstItems","processedFields","updateColumnIndexes","_commandColumns","updateColumnGroupIndexes","normalizeIndexes","updateColumnSortIndexes","isSortOrderValid","updateColumnVisibleIndexes","bandColumns","parentBandColumns","getColumnIndexByVisibleIndex","getChooserColumns","moveColumnToGroup","userStateColumn","applyUserState","userStateColumnIndex","columnsUserState","ignoreColumnOptionNames","_ignoreColumnOptionNames","columnCountById","resultColumns","allColumnsHaveState","userStateColumnIndexes","applyFieldsState","defaultSelectedFilterOperation","findUserStateColumn","_hasUserState","initialIndex","hasAddedBands","columnUserState","added","assignColumns","updateIndexes","resetBandColumnsCache","updateColumnDataTypes","updateColumnChanges","columnChanges","_columnChanges","fireColumnsChanged","onColumnsChanging","reinitOptionNames","needReinit","isInitialized","reinit","updateSortOrderWhenGrouping","prevGroupIndex","columnWasGrouped","lastSortOrder","sortMode","sortedByAnotherColumn","fireOptionChanged","prevValue","fullOptionName","fullOptionPath","_skipProcessingColumnsChange","_notifyOptionChanged","columnOptionCore","notFireEvent","initialColumn","optionGetter","functionsAsIs","optionSetter","_checkColumns","getColumnByPath","addExpandColumn","_getExpandColumnOptions","dotCount","getDataColumns","bandColumnID","_getRowCount","invisibleParents","isCustomCommandColumn","commandColumn","getFixedPosition","processExpandColumns","customColumnIndex","expandColumnsByType","digitsCount","numberToString","mergeColumns","commandColumns","needToExtend","commandColumnIndex","isColumnFixing","defaultCommandColumns","getCommandColumnIndex","columnType","allowFixing","isColumnFixed","convertOwnerBandToColumnReference","_bandColumnsCache","findColumn","identifierOptionName","getFirstItemsCore","childItems","_isColumnsFromOptions","_dataSourceApplied","applyDataSource","needUpdateRequireResize","_updateRequireResize","_args$fullName","_args$fullName2","_args$fullName3","_args$fullName4","_args$fullName5","isEditingPopup","isEditingForm","isEditRowKey","isEditColumnName","isChanges","columnOptionValue","columnOptionName","forceApplying","isDataSourceLoaded","_dataSourceColumnsCount","columnsFromDataSource","updateColumns","isAllDataTypesDefined","_visibleColumns","_fixedColumns","_rowCount","getUserState","isDataSourceApplied","groupingOptions","autoExpandGroup","allowColumnDragging","contextMenuEnabled","checkSerializers","isBandColumnsUsed","_getVisibleColumnsCore","_getFixedColumnsCore","getFilteringColumns","notFixedColumnCount","lastFixedPosition","transparentColumn","transparentColspan","newColumn","getExpandColumns","firstGroupColumn","isFixedFirstGroupColumn","_isColumnVisible","isParentColumnVisible","isFixedToEnd","rowspanGroupColumns","rowspanExpandColumns","positiveIndexedColumns","negativeIndexedColumns","notGroupedColumnsCount","columnDigitsCount","indexedColumns","orderEach","firstPositiveIndexColumn","columnsByFixing","columnsByVisibleIndex","getInvisibleColumns","hiddenColumnsByBand","getAllColumns","fromVisibleIndex","toVisibleIndex","targetGroupIndex","toIndex","needResetSorting","nextSortOrder","useLocalSelector","sortColumns","sortItem","calculateSortValue","sortingMethod","compare","calculateGroupValue","updateNewLookupsOnly","valueMap","_updateColumnOptions","calculateCallbackName","calculateCallback","originalCallback","customizeText","defaultFilterOperation","isColumnDataTypesUpdated","lookupDataType","valueDataType","_customizeColumns","hasOwnerBand","updateSortingGrouping","sortParameters","groupParameters","filterParameters","_updateChanges","fromDataSource","isColumnsChanged","updateSortGroupParameterIndexes","indexParameterName","columnsGroupParameters","columnsSortParameters","updateFilter","forceIsoDateParsing","clearSorting","clearGrouping","addColumn","deleteColumn","childIndexes","handleStateField","setUserState","isFilterPanelHidden","usedNames","hasEditableColumnWithoutName","duplicatedNames","_column$columns","isEditable","captionize","skipDeserialization","userDataType","updateValueMap","calculateValue","dataSourceOptions","DataSource","defaultOptionName","charAt","toUpperCase","alwaysGetRowIndex","onlyVisibleDirectChildren","column1","column2","_uiMenu_baseEdit","_item","DX_MENU_NO_ICONS_CLASS","DX_MENU_BASE_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","MenuBase","_HierarchicalCollecti","focusOnSelectedItem","_itemAttributes","useInkRipple","pageUp","pageDown","_renderSelectedItem","itemText","itemContent","$popOutContainer","$popOutImage","nodeToSelect","selectedKeys","selectedKey","selectable","_selectByItem","_renderInkRipple","_inkRipple","showWave","hideWave","defaultValue","Strategy","_editStrategy","_showSubmenusTimeout","_getSubmenuDelay","$itemElements","_addExpandedClass","_this$option","hasIcons","_renderContainer","firstVisibleIndex","nextGroupFirstIndex","isVisibleNode","isBeginGroup","beginGroup","_itemIndexKey","hasText","hasIcon","hasSubmenu","$itemContent","selectedIndex","_selectedGetter","_isItemSelectable","_skipHandling","itemClickActionHandler","_updateSubmenuVisibilityOnClick","_isItemSelectionAllowed","selectedItemKey","selectedNode","_toggleItemSelection","_fireSelectionChangeEvent","isSelectionByClickEnabled","_isContainerEmpty","_updateSelectedItems","_getElementByItem","oldSelection","newSelection","addedSelection","removedSelection","removedItems","ItemClass","_list","HEADER_FILTER_CLASS","HEADER_FILTER_MENU_CLASS","DEFAULT_SEARCH_EXPRESSION","resetChildrenItemSelection","updateSelectAllState","selectAllCheckBox","isSearchEnabled","filterValuesMatch","isExcludeFilter","getPopupContainer","_popupContainer","getListContainer","_listContainer","applyHeaderFilter","list","isSelectAll","fillSelectedItemKeys","hasChildren","hasChildrenWithSelection","_initializePopupContainer","popupContainer","updatePopup","headerFilterMenu","_cleanPopupContent","_getSearchExpr","useDefaultSearchExpr","dxPopupOptions","resizeEnabled","_initializeListContainer","widgetOptions","searchEnabled","pageLoadMode","showSelectionControls","selectedItems","_selectedItemsUpdating","oldSelected","filterValueIndex","_isHeaderFilterEmpty","fillHelper","tryCreateFillFromSimpleFormat","foregroundColor","rgb","copySimpleFormat","CHECKBOX_SIZE_CLASS","EditorFactoryMixin","getResultConfig","checkEnterBug","getTextEditorConfig","isEnterBug","sharedData","needDelayedUpdate","isInputOrKeyUpEvent","updateValue","valueChangeTimeout","_input","valueChangeEvent","prepareDateBox","editorName","blur","displayFormat","prepareTextBox","isSearching","prepareNumberBox","prepareBooleanEditor","prepareSelectBox","prepareCheckBox","watchLookupDataSource","selectBox","displayGetter","allowClearing","Boolean","showClearButton","showAllText","elementAttr","createEditorCore","editorElement","registerKeyHandler","dxDateBox","dxTextArea","showValidationMark","_selectors","_validation_engine","_tooltip","INVALIDATE_CLASS","REVERT_TOOLTIP_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","COMMAND_TRANSPARENT","VALIDATION_STATUS","valid","invalid","pending","EDIT_DATA_INSERT_TYPE","EDIT_DATA_REMOVE_TYPE","VALIDATION_CANCELLED","validationResultIsValid","cellValueShouldBeValidated","ValidatingController","_validationState","_rowIsValidated","validationData","_getValidationData","validated","isValid","_getBrokenRules","validationResults","brokenRules","brokenRule","_rowValidating","getChangeByKey","errorText","getHiddenValidatorsErrorText","brokenRulesMessages","isGroupExpandColumn","isVisibleColumn","validate","isFull","completeList","_isValidationInProgress","validationResult","validateGroup","_currentCellValidator","_findGroup","_validationResult","getGroupConfig","validators","resetRowValidationResults","isRowDataModified","updateValidationState","setDisableApplyValidationResults","groupConfig","setValidator","renderCellPendingIndicator","$indicatorContainer","disposeCellPendingIndicator","validationStatusChanged","updateCellValidationResult","validatorInitialized","validatorDisposing","getCellValidationResult","status","cancelCellValidationResult","applyValidationResult","requestIsDisabled","disabledPendingId","_disableApplyValidationResults","getEditorInstance","createValidator","needCreateValidator","isCellOrBatchEditingAllowed","getValue","useDefaultValidator","adapter","applyValidationResults","onDisposing","validationRequestsCallbacks","flag","getDisableApplyValidationResults","isCurrentValidatorProcessing","validateCell","cellParams","stateRestored","_validationData$valid","removeCellValidationResult","_ref6","isInvalidCell","_ref7","getCellValidator","_ref8","setCellValidationStatus","validationStatus","validationCancelChanges","validating","validatingController","_updateRowAndPageIndices","startInsertIndex","_ref9","_ref10","isNotCanceled","getIndexByChange","isInsert","addInValidItem","isInserted","_createInvisibleColumnValidators","invisibleColumns","invisibleColumnValidators","isCellVisible","disposeValidators","isFullValid","_showErrorRow","validationState","resetRowAndPageIndices","currentValidator","isValidated","needValidation","isCellInvalid","getWidthOfVisibleCells","w1","w2","getBoundaryNonFixedColumnsInfo","firstNonFixedColumnIndex","lastNonFixedColumnIndex","endColumnIndex","_showRevertButton","$tooltipElement","tooltipOptions","$buttonElement","buttonOptions","_positionedHandler","_hideFixedGroupCell","$nextFixedRowElement","$groupCellElement","nextRowOptions","visibility","__skipPositionProcessing","isRevertButton","needRepaint","normalizedPosition","_normalizeValidationMessagePositionAndMaxWidth","_showValidationMessage","messages","revertTooltip","editorPopup","myPosition","atPosition","$overlayContainer","errorMessageText","$overlayElement","_shiftValidationMessageIfNeed","visibleTableWidth","$overlayContentElement","validationMessageWidth","needMaxWidth","boundaryNonFixedColumnsInfo","$revertContent","contentOffset","revertContentOffset","_getTooltipsSelector","invalidMessageClass","revertTooltipClass","skipValidator","updateCellState","showValidationMessage","errorMessages","$tooltips","getWidgetInstance","oldValidationStatus","newValidationStatus","rowIsModified","cellIsMarkedAsInvalid","$freeSpaceRowElements","$tooltipContent","isEditorDisposed","foreachColumnInfo","offsets","lastProcessedIndexes","processedColumnCount","newInfo","columnInfo","cellColspan","getDataState","filterEnabled","processLoadState","selectionController","exportController","updateState","selectionChanged","selectedRowKeys","selectionFilter","_initialPageSize","_initialFilterValue","selectionOnlyChanged","exportSelectionOnly","selectionOnly","DEFAULT_FILTER_VALUE","getFilterValue","filterSyncController","hasFilterState","getFilterValueFromColumns","stateStoring","savingTimeout","stateLoaded","isStateLoading","applyState","oldState","newState","oldStateHash","newStateHash","isVirtualScrollingMode","stateStoringController","_refreshDataSource","_restoreStateTimeoutID","isDeferredSelection","ColumnHeadersView","DataConverter","_dataStructure","_itemsCount","_visibleItemsCount","_indexByKey","_convertItemsToNodes","_getParentId","_convertItemToNode","_checkForDuplicateId","_itemHasChildren","_dataAccessors","_dataType","_getUniqueKey","keyGetter","itemKey","isCorrectKey","getItemsCount","_rootValue","_makeObjectFromPrimitive","setChildrenKeys","getParentNode","_convertToPublicNode","convertToPublicNodes","publicNodes","_getByKey","setDataAccessors","getByKey","currentElementKey","getVisibleItemsCount","updateIndexByKey","updateChildrenKeys","removeChildrenKeys","createPlainStructure","COLUMN_INDICATORS_CLASS","GROUP_PANEL_ITEM_CLASS","_that$component","isGroupPanelItem","_createIndicatorContainer","$span","indicatorAlignment","ignoreIndicatorAlignment","EXPANDED","SELECTED","DISABLED","DataAdapter","_defaultOptions","dataConverter","_selectedNodesKeys","_expandedNodesKeys","_createInternalDataStructure","_updateSelection","onNodeChanged","_initialDataStructure","search","_updateExpansion","_setChildrenSelection","_setParentSelection","_updateNodesKeysArray","_updateOneBranch","_setParentExpansion","array","_getDataBySelectionMode","_isNodeVisible","isSelected","_toggleChildrenSelection","_iterateParents","newParentState","_calculateSelectedState","_setFieldState","_iterateChildren","processedKeys","child","selectedItemsCount","invisibleItemsCount","isChildInvisible","childState","_markChildren","_removeNode","_addNode","_updateFields","selectRecursive","isSingleModeUnselect","_isSingleModeUnselect","selectionState","lastSelectedKey","_filterDataStructure","_createCriteria","getOperationBySearchMode","matches","lookForParents","queryByOptions","getLanguageId","_core","LANGUAGE_CODES","ar","bg","ca","cs","da","de","el","en","es","fi","fr","he","hu","it","ja","ko","nl","no","pl","pt","rm","ro","ru","hr","sk","sq","sv","th","tr","ur","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","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","locale","_toolbar","_visibility_change","TOOLBAR_BUTTON_CLASS","HeaderPanel","_getButtonContainer","specificClass","secondClass","_getToolbarOptions","toolbarOptions","itemRenderedCallback","_toolbarOptions","toolbarInstance","itemOptionPrefix","updateToolbarDimensions","triggerResizeEvent","getHeaderPanel","_short","GROUP_FOOTER_CLASS","FREESPACE_ROW_CLASS","VIRTUAL_ROW_CLASS","COMMAND_SELECT_CLASS","COMMAND_CELL_SELECTOR","DATEBOX_WIDGET_NAME","FAST_EDITING_DELETE_KEY","INTERACTIVE_ELEMENTS_SELECTOR","FOCUS_TYPE_ROW","FOCUS_TYPE_CELL","COLUMN_HEADERS_VIEW","isNotFocusedRow","isCellElement","isElementDefined","isMobile","isCellInHeaderRow","isFixedColumnIndexOffsetRequired","KeyboardNavigationController","_selectionController","_headerPanel","_updateFocusTimeout","_fastEditingStarted","_canceledCellPosition","elementFocused","setupFocusedView","_isNeedScroll","_focusedView","_initViewHandlers","_initDocumentHandlers","rowsViewFocusHandler","isRelatedTargetInRowsView","isCommandButton","$focusedCell","_getFocusedCell","$rowsView","isFullUpdate","isFocusedViewCorrect","needUpdateFocus","isFocusedElementCorrect","_initPointerEventHandler","_initKeyDownHandler","_setRowsViewAttributes","_isNeedFocus","_isHiddenFocus","isCurrentRowsViewClick","_isEventInCurrentGrid","isEditorOverlay","isColumnResizing","_resetFocusedView","_getRowsViewElement","isGridEmpty","_applyTabIndexToElement","pointerEventName","_pointerEventAction","_pointerEventHandler","keyboard","_keyDownListener","_keyDownHandler","focusType","setCellFocusType","needStopPropagation","_processOnKeyDown","_updateFocusedCellPositionByTarget","_leftRightKeysHandler","ctrl","_upDownKeysHandler","_pageUpDownKeyHandler","_spaceKeyHandler","_ctrlAKeyHandler","_beginFastEditing","_tabKeyHandler","_enterKeyHandler","_ctrlFKeyHandler","_f2KeyHandler","_isFastEditingAllowed","_isFastEditingStarted","alt","altKey","_closeEditCell","getVisibleRowIndex","$event","directionCode","_getDirectionCodeByKey","isEditingNavigationMode","allowNavigate","_isVirtualColumnRender","_processVirtualHorizontalPosition","_getNextCell","_arrowKeysHandlerFocusCell","isUpArrow","_navigateNextCell","_isVirtualRowRender","rowHeight","_scrollBy","pagingEnabled","isPageUp","pageStep","isFocusedRowElement","isFocusedSelectionCell","startSelectionWithCheckboxes","changeItemSelection","control","isCellPositionDefined","isOriginalHandlerRequired","_isLastValidCell","_isFirstValidCell","eventTarget","focusedViewElement","_handleTabKeyOnMasterDetailCell","_resetFocusedCell","_editingCellTabHandler","_targetCellTabHandler","_getMaxHorizontalOffset","_isColumnRendered","allVisibleColumns","renderedVisibleColumns","_isFixedColumn","_isColumnVirtual","localColumnIndex","getColumnIndex","horizontalScrollPosition","needToScroll","_getVisibleColumnCount","leftEdgePosition","_getHorizontalScrollPositionOffset","scrollBy","positionOffset","$currentCell","_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","enterKeyDirection","isShift","_focusEditFormCell","searchTextEditor","keyCode","isCellValid","_isCellValid","$nextCell","isVerticalDirection","_fireFocusChangingEvents","isDeleting","fastEditingKey","isInteractiveElement","isExpandCommandCell","_isInsideEditForm","_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","rowIndexOffset","newRowIndex","_getNewPositionByCode","code","visibleColumnsCount","_hasValidCellAfterPosition","_isLastRow","_hasValidCellBeforePosition","_isCellByPositionValid","isFirstValidCell","hasValidCells","checkingPosition","visibleColumnCount","visibleRows","isLastRow","isClick","isShowWhenGrouped","isDataCell","isValidGroupSpaceColumn","rowItems","isRowEditingInCurrentRow","_isLegacyNavigation","$result","focusedCellPosition","includeCommandCells","newFocusedCellPosition","isLastCellOnDirection","_isCellInRow","visibleColumnIndex","_isAllowEditing","_startEditCell","editResult","_editingCellHandler","editorValue","$input","keyDownEvent","createEvent","keyPressEvent","inputEvent","$widgetContainer","fireRowEvent","newColumnIndex","prevCellIndex","localRowIndex","$newFocusedRow","prevFocusedRowIndex","$masterDetailCell","$masterDetailGrid","_processNextCellInMasterDetail","_processCanceledEditCellPosition","isCanceled","enterKeyAction","editOnKeyPress","needTriggerPointerEventHandler","_triggerPointerDownEventHandler","cellElements","_updateFocusedCellTabIndex","cellElementsLength","updateCellTabIndex","isMasterDetailCell","isValidCell","editorInstance","_getEditorInstance","_handleEditingNavigationMode","originalKeyHandler","isDropDownOpened","isDateBoxWithMask","keyboardNavigationController","_keyboardNavigationController","_correctRowIndices","getRowIndexCorrection","focusedRowIndexCorrection","adaptiveColumns","_showHiddenCellsInView","_hideVisibleCellInView","_themes","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","getDataCellElements","adaptiveCellTemplate","$adaptiveColumnButton","adaptiveColumnsController","toggleExpandAdaptiveDetailRow","AdaptiveColumnsController","_isItemModified","_renderFormViewTemplate","focusAction","renderFormTemplate","isItemEdited","_isItemEdited","_isVisibleColumnsValid","getCommandColumnsCount","_calculatePercentWidths","percentWidths","_getItemPercentWidth","_isPercentWidth","_isColumnHidden","_hiddenColumns","hiddenColumn","columnsCanFit","fixedColumnsWidth","columnsWithoutFixedWidthCount","_calculatePercentWidth","_calculateColumnWidth","contentColumns","colWidth","columnFitted","partialWidth","resultWidth","_getNotTruncatedColumnWidth","_getCommandColumnsWidth","adaptiveExpandedKey","_getFormItemsByHiddenColumns","hiddenColumns","_getAdaptiveColumnVisibleIndex","_hideAdaptiveColumn","_hideVisibleColumn","cssClassNameToRemove","_showHiddenColumns","$hiddenCommandCells","$hiddenCells","_hideVisibleColumnInView","rowsCount","cancelClassAdding","currentVisibleIndex","_findCellElementInRow","$rowCells","cellIsInsideGroup","groupCellLength","endGroupIndex","cssClassNameToAdd","hideRedundantColumns","hiddenQueue","hasHiddenColumns","needHideColumn","rootElementWidth","getVisibleContentColumns","visibleContentColumns","contentColumnsCount","columnBestFitWidth","getItemContentByColumnIndex","_$itemContents","alwaysExpanded","createFormByHiddenColumns","userFormOptions","defaultFormOptions","isMaterial","formOptions","updateForm","hasAdaptiveDetailRowExpanded","_contentReadyAction","updateHidingQueue","columnsHasHidingPriority","hideableColumns","_hidingColumnsQueue","hidingPriority","getHiddenColumns","getHidingColumnsQueue","adaptiveHidden","isAdaptiveVisible","isAdaptiveDetailRowExpanded","expandAdaptiveDetailRow","collapseAdaptiveDetailRow","columnHidingEnabled","onAdaptiveDetailRowPreparing","_adaptiveColumnsController","hidingColumnsQueueLength","hiddenColumnsLength","isClickableElement","isClickable","_updateColumnWidth","hasHiddenColumnsOnly","hasAdaptiveHiddenWidth","$itemContents","_adaptiveController","oldExpandRowIndex","_isForceRowAdaptiveExpand","_collapseAdaptiveDetailRow","_cancelEditAdaptiveDetailRow","expandedKey","_adaptiveExpandedKey","_updateScrollableForIE","_updateScrollableTimeoutID","adaptiveController","oldHiddenColumns","hidingColumnsQueue","expandRowIndex","lastRowIndex","oldExpandLoadedRowIndex","newExpandLoadedRowIndex","rowIndexDelta","allowInvisibleRowIndices","isCellOrBatchMode","focusHandler","$dataCells","isCellElementsEquals","getFilterOperations","getCaptionByOperation","isEmptyGroup","isValidCondition","removeFieldConditionsFromFilter","syncFilters","getMatchedConditions","filterHasField","_errors","_format_helper","_between","DEFAULT_DATA_TYPE","EMPTY_MENU_ICON","AND_GROUP_OPERATION","EQUAL_OPERATION","NOT_EQUAL_OPERATION","DEFAULT_FORMAT","LOOKUP_OPERATIONS","AVAILABLE_FIELD_PROPERTIES","FILTER_BUILDER_ITEM_TEXT_PART_CLASS","FILTER_BUILDER_ITEM_TEXT_SEPARATOR_CLASS","FILTER_BUILDER_ITEM_TEXT_SEPARATOR_EMPTY_CLASS","getFormattedValueText","fieldFormat","isNegationGroup","setGroupCriteria","convertGroupToNewStructure","isNegationValue","convertGroupToNegationGroup","convertNegationGroupToGroup","getNormalizedGroupValue","substring","changeCriteriaValue","availableGroups","groupValue","getCriteriaOperation","errors","getDefaultFilterOperations","containItems","entity","filteredOperations","isLookupField","dataTypes","isOperationForbidden","notForLookup","hasConditions","extendedFields","convertToInnerGroup","groupOperation","innerGroup","convertToInnerCondition","conditionHasCustomOperation","normalizedField","getConditionFilterExpression","filterExpression","_filterExpression","itemsForRemove","normalizedGroupValue","lookupDataSource","loadSingle","getPrimitiveValueText","getArrayValueText","checkDefaultValue","_len","_key","itemExists","plainItems","pushItemAndCheckParent","originalItems","hasParent","getParentIdFromItemDataField","generateCaptionByDataField","lastIndexOf","betweenCaption","betweenIndex","getConfig","isMatchedCondition","addedFilterDataField","hasMatchedCondition","syncConditionIntoGroup","addedFilter","canPush","t","valueSeparator","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","getCustomFilterOperations","customText","clearFilterValue","tabindex","_getConditionText","fieldText","operationText","_getValueMaskedText","_getValueText","hasCustomOperation","getConditionText","getGroupText","isInnerGroup","textParts","groupText","createFilter","clearFilter","filterEnabledHint","filterPanelView","_support","_selection","ROW_SELECTION_CLASS","SELECT_CHECKBOX_CLASS","CHECKBOXES_HIDDEN_CLASS","SELECTION_DISABLED_CLASS","SHOW_CHECKBOXES_MODE","SELECTION_MODE","processLongTap","isSelectionWithCheckboxes","stopSelectionWithCheckboxes","SelectionController","isSeveralRowsSelected","isComplexKey","selectionCellTemplate","isRowSelected","renderSelectCheckBoxContainer","selectionHeaderTemplate","_renderSelectAllCheckBox","_attachSelectAllCheckBoxClickEvent","_selectionMode","_isSelectionWithCheckboxes","_createSelection","_updateSelectColumn","_getSelectionConfig","selectionOptions","maxFilterLengthInRequest","dataFields","isItemSelected","isSelectableItem","getItemData","isSelectColumnVisible","_updateCheckboxesState","isDeferredMode","selectedItemKeys","removedItemKeys","selectionChangedOptions","changedItemIndexes","getChangedItemIndexes","itemIndexes","addedItemKeys","_selectedItemsInternalChange","selectedRowsData","currentSelectedRowKeys","currentDeselectedRowKeys","isDataItem","oldSelectionMode","selectRows","_isOnePageSelectAll","getSelectAllState","deselectAll","clearSelection","preserve","isDeselect","getSelectedRowKeys","getSelectedItemKeys","deselectRows","selectRowsByIndexes","indexes","getSelectedRowsData","getSelectedItems","focusedItemIndex","_focusedItemIndex","allowSelectAll","selectAllMode","_loadDataSource","hasSelectColumn","_repaintChangesOnly","currentItem","_changes","isUpdateSelection","removedKeys","_updateSelectAllValue","isEmptyData","_attachCheckBoxClickEvent","_renderSelectCheckBox","_e$event","_updateCheckboxesClass","touch","isSelectionDisabled","isCommandKeyPressed","isCommandSelect","isCheckBoxesHidden","colorHelper","_tryConvertColor","colorCode","patternFillHelper","s","u","require","1","encode","f","getTypeOf","decode","uint8array","2","compressedSize","uncompressedSize","crc32","compressedContent","getContentWorker","Promise","pipe","uncompressWorker","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","3","STORE","magic","DEFLATE","4","5","base64","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","A","O","utf8encode","I","m","g","w","S","z","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","E","fileRecord","R","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","isPaused","pause","resume","registerPrevious","generatedError","lock","9","generateWorker","_compressWorker","10","files","root","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","isBuffer","15","generateInternalStream","checkSupport","generateNodeStream","toNodejsStream","16","stream","17","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","18","checkIndex","setIndex","readInt","readString","readDate","19","20","21","subarray","22","23","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","24","destType","25","26","propName","27","dataIsReady","_tickScheduled","_tickAndRepeat","isFinished","_tick","28","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","29","nodestream","_internalType","_outputType","_mimeType","newBlob","_worker","objectMode","30","arraybuffer","ArrayBuffer","nodebuffer","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","31","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","32","stringifyByChunk","stringifyByChar","applyCanBeUsed","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","removeChild","documentElement","port1","onmessage","port2","postMessage","global","37","queue","outcome","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","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","T","D","F","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","U","P","L","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","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","H","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","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","G","data_type","_tr_init","K","Y","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","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","X","V","q","J","53","54","_console","navigator","getNavigator","FILE_EXTESIONS","CSS","PNG","JPEG","GIF","SVG","PDF","_revokeObjectURLTimeout","_getDataUri","_getMimeType","_linkDownloader","exportLinkElement","download","_formDownloader","contentType","formAttributes","enctype","exportForm","setAttributes","_saveByProxy","_winJSBlobSave","savePicker","Windows","Storage","Pickers","FileSavePicker","suggestedStartLocation","PickerLocationId","documentsLibrary","fileExtension","fileTypeChoices","suggestedFileName","pickSaveFileAsync","openAsync","FileAccessMode","readWrite","outputStream","inputStream","msDetachStream","Streams","RandomAccessStream","copyAsync","flushAsync","close","link","dispatchEvent","MouseEvent","cancelable","initMouseEvent","_saveBlobAs","_blobSaved","msSaveOrOpenBlob","WinJS","URL","webkitURL","mozURL","msURL","oURL","objectURL","createObjectURL","downloadLink","revokeObjectURL","_objectUrlRevoked","logger","warn","proxyURL","userAgent","GroupingHeaderPanelExtender","_uiData_gridGrouping2","DATAGRID_GROUP_PANEL_CLASS","DATAGRID_GROUP_PANEL_MESSAGE_CLASS","DATAGRID_GROUP_PANEL_ITEM_CLASS","DATAGRID_GROUP_PANEL_LABEL_CLASS","DATAGRID_EXPAND_CLASS","DATAGRID_GROUP_ROW_CLASS","GroupingDataSourceAdapterExtender","_initGroupingHelper","isAutoExpandAll","isFocusedRowEnabled","isODataRemoteOperations","_collapseExpandAll","isExpand","_hasGroupLevelsExpandState","groupPaging","GroupingDataControllerExtender","_beforeProcessItems","groupedColumns","collapseRow","onGroupingMenuItemClick","_appendGroupingItem","_isGroupPanelVisible","isRendered","$groupPanel","_updateGroupPanelContent","_processGroupItemAction","_renderGroupPanelItems","$groupPanelItem","$toolbarElement","emptyPanelText","$groupedColumnElement","isGroupingAllowed","isColumnGrouped","groupingTexts","ungroup","ungroupAll","GroupingRowsViewExtender","expandMode","isGroupRowStateChanged","isExpandButtonClicked","_changeGroupRowState","columnHeadersViewExtender","groupByThisColumn","_custom_store","_data_helper","_array_compare","cacheEnabled","onDataErrorOccurred","changePaging","_skipProcessingPagingChange","pageChanged","_currentOperationTypes","_columnsChangedHandler","_handleColumnsChanged","_customizeStoreLoadOptionsHandler","_handleCustomizeStoreLoadOptions","stopOnFalse","_setPagingOptions","_useSortingGroupingFromColumns","returnDataField","additionalFilter","_readyDeferred","_columnsUpdating","filterApplied","updateItemsHandler","_needApplyFilter","isAsyncDataSourceApplying","_isDataSourceApplying","hasAdditionalFilter","needApplyFilter","_isAllDataTypesDefined","_fireLoadingChanged","isChanged","oldDataSource","setDataSource","visibleItems","lastVisibleItem","_generateDataItem","isModified","_applyChangeFull","_getRowIndices","correctedRowIndex","prevIndex","rowIndexCorrection","equalItems","item1","item2","strict","oldNextItem","newNextItem","_partialUpdateRow","changedColumnIndices","isCellChanged","_isItemEquals","compareFields","_item1$data","_item2$data","_item1$data2","_item2$data2","expandedMatch","summaryCellsMatch","continuationMatch","newIndexByKey","getRowKey","isItemEquals","oldItems","findChanges","isDataChanged","_loadingText","filterExpr","filterName","clearColumnOption","_fireDataSourceChanged","changedHandler","dataSourceAdapterProvider","isCustomStore","_createDataSourceAdapter","enabledRemoteOperations","cancelAll","_isSharedDataSource","loadAll","byKey","getDataByKeys","rowKeys","keyData","beginCustomLoading","endCustomLoading","customizeLoadResult","_disposeDataSource","rowIndexes","proxyMethod","COLUMN_HEADERS_VIEW_NAMESPACE","ColumnHeadersViewSortingExtender","$cellElementFromEvent","editingMode","HeaderPanelSortingExtender","showSortIndexes","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","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","DxButton","DxBoundaryOffset","DxAt","DxAsyncRule","DxAnimation","DxDataGrid","data_grid_1","index_1","index_2","createComponent","accessKey","Function","filterBuilder","filterBuilderPopup","filterSyncEnabled","onCellClick","onCellDblClick","onCellHoverChanged","onCellPrepared","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","emits","computed","$_instance","beforeCreate","$_WidgetClass","$_expectedChildren","isCollectionItem","dataGridHeaderFilter","createConfigurationComponent","$_optionName","ignoreEmptyValue","reevaluate","validationCallback","$_isCollectionItem","$_predefinedProps","lg","md","sm","xs","AsyncRule","columnHeaderFilter","columnLookup","CompareRule","CustomRule","EmailRule","NumericRule","PatternRule","RangeRule","RequiredRule","StringLengthRule","validationRule","columnFixingTexts","fix","leftPosition","rightPosition","unfix","comparisonTarget","comparisonType","dataGridHeaderFilterTexts","allowExportSelectedData","excelFilterEnabled","excelWrapTextEnabled","ignoreExcelErrors","exportTexts","exportAll","exportSelectedRows","exportTo","fieldLookup","bindingOptions","onFocusIn","onFocusOut","minHeight","onResize","onResizeEnd","onResizeStart","shadingColor","filterPanelTexts","applyFilterText","betweenEndText","betweenStartText","operationDescriptions","resetOperationText","showOperationChooser","alignItemLabels","alignItemLabelsInAllGroups","colCountByScreen","formData","labelLocation","minColWidth","onEditorEnterKey","onFieldDataChanged","optionalMark","requiredMark","requiredMessage","screenByWidth","scrollingEnabled","showColonAfterLabel","showOptionalMark","showRequiredMark","showValidationSummary","parser","helpText","itemType","staggerDelay","showColon","pattern","trim","autoScroll","cursorOffset","dragDirection","onAdd","onDragChange","onDragMove","onRemove","onReorder","scrollSensitivity","scrollSpeed","rowRenderingMode","scrollByContent","scrollByThumb","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","renderShowColumnChooserButton","$columnChooserButton","columnChooserButtonClass","columnChooserEnabled","$showColumnChooserButton","showColumnChooser","getPosition","_isWinDevice","win","_updateList","columnChooserList","_columnChooserList","_renderTreeView","themeName","isGenericTheme","isGeneric","shortcut","treeViewConfig","$checkBox","$treeViewNode","checkBoxInstance","_prepareSelectModeConfig","_prepareDragModeConfig","selectionChangedHandler","isLastColumnUnselected","needPartialRender","needFullRender","columnVisible","isColumnChooserVisible","hideColumnChooser","_appendColumnChooserItem","onClickHandler","columnChooserMode","isMoveColumnDisallowed","_translator","BOTTOM_LOAD_PANEL_CLASS","TABLE_CONTENT_CLASS","FREESPACE_CLASS","SCROLLING_MODE_STANDARD","PIXELS_LIMIT","LOAD_TIMEOUT","isVirtualRowRendering","_correctCount","fromEnd","isItemCountableFunc","isItemCountableByDataSource","VirtualScrollingDataSourceAdapterExtender","_updateLoading","_virtualScrollController","_startLoadTime","virtualScrollController","removeEmptyRows","$emptyRows","getRowParent","_dataController$state","scrollToPage","_scrollToCurrentPageOnResize","resizeHandler","itemSizes","_updateContentPosition","startRenderTime","_contentHeight","_removeRowsElements","contentTable","_restoreErrorRow","_updateBottomLoading","_addVirtualRow","$virtualRow","_getRowHeights","rowHeights","_correctRowHeights","correctedRowHeights","firstCountableItem","isRender","_updateContentPositionCore","$tables","$virtualRows","$contentTable","virtualTable","_contentTableHeight","isRenderVirtualTableContentRequired","_isTableLinesDisplaysCorrect","_isColumnElementsEqual","_renderVirtualTableContent","table","hasColumnLines","$columns","$virtualColumns","prop","freeSpaceCellsHtml","columnLinesClass","createFreeSpaceRowHtml","classes","_getCellClasses","classString","isExpandColumn","_findBottomLoadPanel","$bottomLoadPanel","showBottomLoading","bottomLoadPanelElement","viewportHeight","hasBottomLoadPanel","scrollPos","updateTimeout","minTimeout","rowPageSize","loadTwoPagesOnStart","baseResult","initVirtualRows","getRowPageSize","isSortingOperation","allowedTopOffset","virtualRowsRendering","_visibleItems","_rowPageIndex","isItemCountable","isNextAfterLast","countableOnly","_that$_dataSource","delta","allItems","byLoadedRows","_resizeTimeout","_lastTime","_scroll_view","FilterBuilderView","_updatePopupOptions","_initPopup","_filterBuilderPopup","_disposePopup","_filterBuilder","_getPopupContentTemplate","_getPopupToolbarItems","$filterBuilderContainer","filterBuilderView","_color","parseAttributes","_math","PI","_min","_abs","_sqrt","sqrt","_pow","pow","_atan2","atan2","_cos","cos","_sin","sin","IMAGE_QUALITY","TEXT_DECORATION_LINE_WIDTH_COEFF","DEFAULT_FONT_SIZE","DEFAULT_TEXT_COLOR","createCanvas","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","globalAlpha","transformElement","clipElement","drawPath","dAttr","prevParams","prevParamsLen","dArray","bezierCurveTo","closePath","camelize","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","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","clipPaths","clip","hex2rgba","hexColor","alpha","createGradient","stdDeviation","dx","asyncEach","isPromise","drawCanvasElements","onDone","patterns","setLineDash","stroke","lineJoin","lineWidth","strokeStyle","strokeText","getPattern","patternCanvas","patternContext","getContext","createPattern","drawBackground","fillRect","createInvisibleDiv","invisibleDiv","convertSvgToCanvas","getCanvasFromSvg","svgToCanvas","markupIsDomElement","getBody","__parseAttributesFn","formats","supported","unsupported","FILTER_ROW_OPERATIONS","FILTER_TYPES_INCLUDE","FILTER_TYPES_EXCLUDE","getColumnIdentifier","checkForErrors","FilterSyncController","getEmptyFilterValues","canSyncHeaderFilterWithFilterRow","getHeaderFilterFromCondition","headerFilterCondition","hasArrayValue","getConditionFromFilterRow","getConditionFromHeaderFilter","selectedOperation","updateHeaderFilterCondition","updateFilterRowCondition","filterRowOptions","syncFilterValue","_skipSyncColumnOptions","filterConditions","filterCondition","_initSync","filteringColumns","isFilterSyncActive","_getSyncFilterRow","_getSyncHeaderFilter","syncFilterRow","syncHeaderFilter","filterBuilderCustomOperations","anyOf","noneOf","DataControllerFilterSyncExtender","filterSyncEnabledValue","calculatedFilterValue","_parseColumnPropertyName","matched","propertyName","ColumnHeadersViewFilterSyncExtender","filterSync","_language_codes","ARABIC_ZERO_CODE","DEFINED_NUMBER_FORMTATS","thousands","millions","billions","trillions","decimal","fixedpoint","exponential","PERIOD_REGEXP","DAY_REGEXP","DO_REGEXP","STANDALONE_MONTH_REGEXP","HOUR_REGEXP","SLASH_REGEXP","SQUARE_OPEN_BRACKET_REGEXP","SQUARE_CLOSE_BRACKET_REGEXP","ANY_REGEXP","excelFormatConverter","_applyPrecision","_hasArabicDigits","_convertDateFormatToOpenXml","datePart","_convertDateFormat","formattedValue","getFormat","_getLanguageInfo","defaultPattern","languageID","languageIDStr","languageInfo","_convertNumberFormat","excelFormat","getOpenXmlCurrencyFormat","getContinuationGroupCount","pageOffset","foreachExpandedGroups","updateGroups","expandedInfo","isLastGroupExpanded","lastCount","updateGroupInfoItem","isLastGroupLevel","_isGroupExpanded","updateGroupInfos","loadedGroupCount","remotePaging","skips","isGroupExpanded","getTotalOffset","groupInfos","childrenTotalCount","applyContinuationToGroupItem","expandedItemIndex","takes","isLastExpandedItem","isFirstExpandedItem","lastExpandedItemSkip","isItemsTruncatedByTake","fillSkipTakeInExpandedInfo","currentGroupCount","currentGroupIndex","isDataDeferred","makeDataDeferred","loadGroupItems","loadExpandedGroups","loadLastLevelGroupItems","currentGroup","requireGroupCount","expandedFilters","expandedPath","isPagingLocal","expandedItems","loadGroupTotalCount","isGrouping","isVirtualPaging","skipChildrenTotalCount","takeCorrection","parentTakeCorrection","continuationGroupCount","skipContinuationGroupCount","groupInfoCount","childrenGroupInfoCount","remoteGroupPaging","isLastGroup","_processPaging","_processSkips","firstItem","_processTakes","lastItem","maxTakeCount","handleGroup","_select_box","_number_box","PAGES_LIMITER","PAGER_PAGE_CLASS","PAGER_PAGE_CLASS_SELECTOR","PAGER_PAGES_CLASS","LIGHT_MODE_CLASS","LIGHT_PAGES_CLASS","PAGER_PAGE_INDEX_CLASS","PAGER_PAGES_COUNT_CLASS","PAGER_SELECTION_CLASS","PAGER_PAGE_SEPARATOR_CLASS","PAGER_PAGE_SIZES_CLASS","PAGER_PAGE_SIZE_CLASS","PAGER_PAGE_SIZE_CLASS_SELECTOR","PAGER_NAVIGATE_BUTTON","PAGER_PREV_BUTTON_CLASS","PAGER_NEXT_BUTTON_CLASS","PAGER_INFO_CLASS","PAGER_INFO_TEXT_CLASS","PAGER_BUTTON_DISABLE_CLASS","Page","_$page","_value","Pager","pagesCountText","lightModeEnabled","_toggleVisibility","_getPages","currentPage","firstValue","showMoreButton","_getPageByValue","page","_pages","_processSelectedPage","selectedPageIndex","isPageIndexValid","selectedPage","_selectPageByValue","nextPage","morePage","pagesLength","prevPage","_updatePagesTabIndices","$selectedPage","updatePageIndices","_nextPage","_wrapClickAction","_pointerUpHappened","_renderPages","$separator","clickPagesIndexAction","pageNumber","_pageClickHandler","_$pagesChooser","Name","_calculateLightPagesWidth","$pageIndex","_renderLightPages","clickAction","_pageIndexEditor","$pageCount","_renderPagesChooser","_renderInfo","_renderNavigateButton","_updatePagesChooserWidth","_renderPageSizes","pageSizeValue","$pageSize","pagesSizesLength","currentPageSize","clickPagesSizeAction","_$pagesSizeChooser","_calculateLightPageSizesWidth","_renderLightPageSizes","_pageSizeEditor","_renderPagesSizeChooser","_pagesSizeChooserWidth","_$info","_isInfoHide","_infoWidth","_updatePageSizes","_updatePages","_updateLightMode","forceRender","_updateButtonsState","_isPageIndexInvalid","isNextDirection","nextButton","prevButton","_pageKeyDownHandler","_getMinPagerWidth","pagesChooserWidth","_pagesChooserWidth","pagesSizeChooserWidth","deferUpdater","lastPageWidth","infoWidth","_previousWidth","RowsView","ExportController","DataProvider","_exporter","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","DATA_STYLE_OFFSET","_getGroupValue","_correctCellIndex","_initOptions","_exportController","_getColumns","_initialColumnWidthsByColumnIndex","_selectedRowsOnly","_selectionOnly","_getSelectedItems","_getAllItems","isHeadersVisible","customizeExportData","gridCell","initialColumnWidthsByColumnIndex","selectedRowsOnly","_getTotalCellStyleId","isTotalCell","getColumnsByAllRows","getColumnsWidths","_convertFromGridGroupSummaryItems","gridGroupSummaryItems","isExcelJS","correctedCellIndex","columnsRow","gridColumn","itemValues","totalSummaryItemName","correctCellIndex","isSummaryAlignByColumn","exportColspan","currentHeaderRow","columnWidthsByColumnIndex","_getColumnWidths","_headersView","_needColumnExporting","currentColspan","_calculateExportColspan","childColumns","childColumn","_getFooterSummaryItems","isTotal","estimatedItemsCount","_hasSummaryGroupFooters","_getItemsWithSummaryGroupFooters","sourceItems","beforeGroupFooterItems","groupFooterItems","_updateGroupValuesWithSummaryByColumn","summaryValues","groupColumnCount","merge","_processUnExportedItems","isDetailExpandColumn","selectedRowData","getExportFormat","getDataProvider","columnsLastRowVisibleColumns","exportToExcel","_isSelectedRows","callbackList","editingChanged","_appendExportItems","exportOptions","exportItems","_renderButton","_renderExportMenu","menuItemTemplate","_renderList","allowExportSelected","_correctItemsPosition","withText","_getButtonOptions","$buttonContainer","wrapperNode","wrapInner","_renderFakeButton","exportSelected","iconName","$toolbarItem","itemA","itemB","_contextMenu","_isExportButtonVisible","DATAGRID_ROW_SELECTOR","DATAGRID_DEPRECATED_TEMPLATE_WARNING","DataGrid","_setDeprecatedOptions","_deprecatedOptions","since","alias","_device","templateName","baseOperation","grid","lastIndex","getFullText","parentText","getSelectedItemsTexts","selectedItemsTexts","fieldInfo","conditionInfo","div","baseOp","baseFilter","cellFormatHelper","sharedItemsContainer","numberFormatId","fontId","fillId","applyNumberFormat","isAlignmentEmpty","xfId","applyAlignment","_wheel","FIRST_CELL_CLASS","LAST_CELL_CLASS","HOVER_STATE_CLASS","FIXED_COL_CLASS","FIXED_COLUMNS_CLASS","POINTER_EVENTS_NONE_CLASS","getTransparentColumnIndex","normalizeColumnWidths","fixedWidths","fixedColumnIndex","baseFixedColumns","_isFixedColumns","_correctColumnIndicesForFixedColumns","$fixedTable","_fixedTableElement","fixedCorrection","fixedCells","prevFixedColumn","columnCommand","isRowAltStyle","isEmptyCell","isGroupCell","alignByFixedColumnCellCount","fixedCellElements","fixedColumn","getFixedColumnsOffset","$transparentColumn","getTransparentColumnElement","positionTransparentColumn","getFixedTableElement","synchronizeRows","isWidthsSynchronized","isColumnWidthChanged","useVisibleColumns","_getClientHeight","boundingClientRectElement","$fixedRowElements","fixedRowHeights","heightTable","heightFixedTable","fixedRowHeight","ColumnHeadersViewFixedColumnsExtender","columnFixingOptions","getFixedColumnElements","$transparentColumnElement","$fixedColumnElements","RowsViewFixedColumnsExtender","_detachHoverEvents","attachHoverEvent","isHover","contentClass","scrollDelay","_fixedScrollTimeout","$nearestScrollable","_updateFixedTablePosition","needFocus","vWidth","hWidth","$fixedContent","_getElasticScrollTop","elasticScrollTop","reachedBottom","scrollableContent","maxScrollTop","_applyElasticScrolling","FooterViewFixedColumnsExtender","normalizeColumnIndicesByPoints","correctIndex","pointsByFixedColumns","_pointsByFixedColumns","isWidgetResizingMode","_editor","_menu","OPERATION_DESCRIPTORS","CORRECT_FILTER_RANGE_OVERLAY_WIDTH","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","$editorContainer","componentNames","getRangeTextByFilterValue","rangeEnd","getColumnFilterValue","getColumnSelectedFilterOperation","bufferedSelectedFilterOperation","isValidFilterValue","isFilterRange","isRangeStart","normalizeFilterValue","columnFilterValue","updateFilterValue","_applyFilterViewController","setHighLight","_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","_getFilterOperationMenuItems","properties","columnSelectedFilterOperation","notFocusEditor","isOnClickMode","_isEditorFocused","availableFilterOperations","descriptionName","ApplyFilterViewController","_getHeaderPanel","enableApplyButton","removeHighLights","columnHeadersViewElement","filterItem","_prepareFilterItem","_isShowApplyFilterButton","_event_registrator","DBLCLICK_EVENT_NAME","DBLCLICK_NAMESPACE","NAMESPACED_CLICK_EVENT","DBLCLICK_TIMEOUT","DblClick","_handlerCount","_forgetLastClick","_firstClickTarget","_lastClickTimeStamp","_clickHandler","timeStamp","now","timeBetweenClicks","isSimulated","isDouble","closestCommonParent","FILTER_BUILDER_RANGE_CLASS","FILTER_BUILDER_RANGE_START_CLASS","FILTER_BUILDER_RANGE_END_CLASS","FILTER_BUILDER_RANGE_SEPARATOR_CLASS","SEPARATOR","$editorStart","$editorEnd","getStartValue","getEndValue","_load_panel","DATAGRID_SELECTION_DISABLED_CLASS","DATAGRID_GROUP_OPENED_CLASS","DATAGRID_GROUP_CLOSED_CLASS","NO_DATA_CLASS","DATE_INTERVAL_SELECTORS","getIntervalSelector","nameIntervalSelector","equalSelectors","selector1","selector2","formatObject","editorData","dxComponents","widgetName","filter1","filter2","noDataClass","noDataElement","changeNames","changesWithChangeNamesCount","defaultResult","remoteGrouping","sortParameters1","sortParameters2","ignoreIsExpanded","pointCreated","isVertical","notCreatePoint","prevItemOffset","selectionEnd","isSelectTextOnEditingStart","_loadItemDeferred","hasResizableColumns","$grid","depthFirstSearch","isCount","aggregators","normalizeAggregate","_groupLevel","_groupAggregates","_totals","_calculateTotals","_calculateGroups","_aggregate","_accumulate","_seed","_finalize","maxLevel","seedFn","stepFn","finalizeFn","innerNode","NaN","aggregateIndex","fin"],"mappings":"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ACT,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,K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","file":"js/chunk-532c3097.7c4c8ad0.js","sourcesContent":["/**\r\n * DevExtreme (ui/shared/filtering.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../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 = (0, _array.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 {\r\n if ((0, _type.isDefined)(groupInterval)) {\r\n return Array.isArray(groupInterval) ? groupInterval : [groupInterval]\r\n }\r\n }\r\n};\r\nvar _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 isZeroTime = function(date) {\r\n return date.getHours() + date.getMinutes() + date.getSeconds() + date.getMilliseconds() < 1\r\n };\r\n var getDateValues = function(dateValue) {\r\n if ((0, _type.isDate)(dateValue)) {\r\n return [dateValue.getFullYear(), dateValue.getMonth(), dateValue.getDate(), dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds()]\r\n }\r\n return (0, _iterator.map)((\"\" + dateValue).split(\"/\"), function(value, index) {\r\n return 1 === index ? Number(value) - 1 : Number(value)\r\n })\r\n };\r\n var getFilterExpressionByRange = function(filterValue, target) {\r\n var column = this;\r\n var endFilterValue;\r\n var startFilterExpression;\r\n var endFilterExpression;\r\n var selector = getFilterSelector(column, target);\r\n if (Array.isArray(filterValue) && (0, _type.isDefined)(filterValue[0]) && (0, _type.isDefined)(filterValue[1])) {\r\n startFilterExpression = [selector, \">=\", filterValue[0]];\r\n endFilterExpression = [selector, \"<=\", filterValue[1]];\r\n if (isDateType(column.dataType) && isZeroTime(filterValue[1])) {\r\n endFilterValue = new Date(filterValue[1].getTime());\r\n if (\"date\" === column.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 };\r\n var getFilterExpressionForDate = function(filterValue, selectedFilterOperation, target) {\r\n var column = this;\r\n var dateStart;\r\n var dateEnd;\r\n var dateInterval;\r\n var values = getDateValues(filterValue);\r\n var selector = getFilterSelector(column, target);\r\n if (\"headerFilter\" === target) {\r\n dateInterval = getGroupInterval(column)[values.length - 1]\r\n } else {\r\n if (\"datetime\" === column.dataType) {\r\n dateInterval = \"minute\"\r\n }\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 column = this;\r\n var selector = getFilterSelector(column, target);\r\n var groupInterval = getGroupInterval(column);\r\n if (\"headerFilter\" === target && groupInterval && (0, _type.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 {\r\n if (\"string\" === dataType && (!column.lookup || isSearchByDisplayValue)) {\r\n filter = [selector, selectedFilterOperation || \"contains\", filterValue]\r\n } else {\r\n if (\"between\" === selectedFilterOperation) {\r\n return getFilterExpressionByRange.apply(column, [filterValue, target])\r\n } else {\r\n if (isDateType(dataType) && (0, _type.isDefined)(filterValue)) {\r\n return getFilterExpressionForDate.apply(column, arguments)\r\n } else {\r\n if (\"number\" === dataType) {\r\n return getFilterExpressionForNumber.apply(column, arguments)\r\n } else {\r\n if (\"object\" !== dataType) {\r\n filter = [selector, selectedFilterOperation || \"=\", filterValue]\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return filter\r\n },\r\n getGroupInterval: getGroupInterval\r\n }\r\n}();\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.core.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.utils\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"../grid_core/ui.grid_core.modules\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n if (enumerableOnly) {\r\n symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })\r\n }\r\n keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n })\r\n } else {\r\n if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n } else {\r\n ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar _default = _objectSpread(_objectSpread(_objectSpread({}, _uiGrid_core2.default), _uiGrid_core.default), {}, {\r\n modules: []\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.row_dragging.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _sortable = _interopRequireDefault(require(\"../sortable\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\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 _this = this;\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 = function(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 && $content.length) {\r\n this[currentSortableName] = this._createComponent($content, _sortable.default, (0, _extend.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: function(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 = !isDataRow;\r\n null === (_rowDragging$onDragSt = rowDragging.onDragStart) || void 0 === _rowDragging$onDragSt ? void 0 : _rowDragging$onDragSt.call(rowDragging, e)\r\n },\r\n onDragEnter: function() {\r\n togglePointerEventsStyle(true)\r\n },\r\n onDragLeave: function() {\r\n togglePointerEventsStyle(false)\r\n },\r\n onDragEnd: function(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 dropFeedbackMode: _browser.default.msie ? \"indicate\" : rowDragging.dropFeedbackMode,\r\n onOptionChanged: function(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(SORTABLE_WITHOUT_HANDLE_CLASS, !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(function(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 = (0, _renderer.default)(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(function(column) {\r\n return {\r\n width: column.width || column.visibleWidth,\r\n fixed: column.fixed,\r\n fixedPosition: column.fixedPosition\r\n }\r\n }),\r\n onRowPrepared: function(e) {\r\n var rowsView = e.component.getView(\"rowsView\");\r\n (0, _renderer.default)(e.rowElement).replaceWith($rowElement.eq(rowsView._isFixedTableRendering ? 1 : 0).clone())\r\n }\r\n }\r\n },\r\n _getDraggableRowTemplate: function() {\r\n var _this2 = this;\r\n return function(options) {\r\n var $rootElement = _this2.component.$element();\r\n var $dataGridContainer = (0, _renderer.default)(\"
\").width($rootElement.width());\r\n var items = _this2._dataController.items();\r\n var row = items && items[options.fromIndex];\r\n var gridOptions = _this2._getDraggableGridOptions(row);\r\n _this2._createComponent($dataGridContainer, _this2.component.NAME, gridOptions);\r\n $dataGridContainer.find(\".dx-gridbase-container\").children(\":not(.\".concat(_this2.addWidgetPrefix(ROWS_VIEW), \")\")).hide();\r\n return $dataGridContainer\r\n }\r\n },\r\n _getHandleTemplate: function() {\r\n var _this3 = this;\r\n return function(container, options) {\r\n if (\"data\" === options.rowType) {\r\n (0, _renderer.default)(container).addClass(CELL_FOCUS_DISABLED_CLASS);\r\n return (0, _renderer.default)(\"\").addClass(_this3.addWidgetPrefix(HANDLE_ICON_CLASS))\r\n } else {\r\n _uiGrid_core.default.setEmptyText((0, _renderer.default)(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\nvar _default = {\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\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.pager.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _pager = _interopRequireDefault(require(\"../pager\"));\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _window = require(\"../../core/utils/window\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar PAGER_CLASS = \"pager\";\r\nvar MAX_PAGES_COUNT = 10;\r\nvar getPageIndex = function(dataController) {\r\n return 1 + (parseInt(dataController.pageIndex()) || 0)\r\n};\r\nvar PagerView = _uiGrid_core.default.View.inherit({\r\n init: function() {\r\n var that = this;\r\n var dataController = that.getController(\"data\");\r\n that._isVisible = false;\r\n dataController.changed.add(function(e) {\r\n if (e && e.repaintChangesOnly) {\r\n var pager = that._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 that.render()\r\n }\r\n } else {\r\n if (!e || \"update\" !== e.changeType && \"updateSelection\" !== e.changeType) {\r\n that.render()\r\n }\r\n }\r\n })\r\n },\r\n _getPager: function() {\r\n var $element = this.element();\r\n return $element && $element.data(\"dxPager\")\r\n },\r\n _renderCore: function() {\r\n var that = this;\r\n var $element = that.element().addClass(that.addWidgetPrefix(PAGER_CLASS));\r\n var pagerOptions = that.option(\"pager\") || {};\r\n var dataController = that.getController(\"data\");\r\n var keyboardController = that.getController(\"keyboardNavigation\");\r\n var options = {\r\n maxPagesCount: MAX_PAGES_COUNT,\r\n pageIndex: getPageIndex(dataController),\r\n pageCount: dataController.pageCount(),\r\n pageSize: dataController.pageSize(),\r\n showPageSizes: pagerOptions.showPageSizeSelector,\r\n showInfo: pagerOptions.showInfo,\r\n displayMode: pagerOptions.displayMode,\r\n pagesNavigatorVisible: pagerOptions.visible,\r\n showNavigationButtons: pagerOptions.showNavigationButtons,\r\n pageSizes: that.getPageSizes(),\r\n totalCount: dataController.totalCount(),\r\n hasKnownLastPage: dataController.hasKnownLastPage(),\r\n pageIndexChanged: function(pageIndex) {\r\n if (dataController.pageIndex() !== pageIndex - 1) {\r\n setTimeout(function() {\r\n dataController.pageIndex(pageIndex - 1)\r\n })\r\n }\r\n },\r\n pageSizeChanged: function(pageSize) {\r\n setTimeout(function() {\r\n dataController.pageSize(pageSize)\r\n })\r\n },\r\n onKeyDown: function(e) {\r\n return keyboardController && keyboardController.executeAction(\"onKeyDown\", e)\r\n },\r\n useLegacyKeyboardNavigation: this.option(\"useLegacyKeyboardNavigation\"),\r\n useKeyboard: this.option(\"keyboardNavigation.enabled\")\r\n };\r\n if ((0, _type.isDefined)(pagerOptions.infoText)) {\r\n options.infoText = pagerOptions.infoText\r\n }\r\n that._createComponent($element, _pager.default, options)\r\n },\r\n getPageSizes: function() {\r\n var that = this;\r\n var dataController = that.getController(\"data\");\r\n var pagerOptions = that.option(\"pager\");\r\n var allowedPageSizes = pagerOptions && pagerOptions.allowedPageSizes;\r\n var pageSize = dataController.pageSize();\r\n if (!(0, _type.isDefined)(that._pageSizes) || (0, _array.inArray)(pageSize, that._pageSizes) === -1) {\r\n that._pageSizes = [];\r\n if (pagerOptions) {\r\n if (Array.isArray(allowedPageSizes)) {\r\n that._pageSizes = allowedPageSizes\r\n } else {\r\n if (allowedPageSizes && pageSize > 1) {\r\n that._pageSizes = [Math.floor(pageSize / 2), pageSize, 2 * pageSize]\r\n }\r\n }\r\n }\r\n }\r\n return that._pageSizes\r\n },\r\n isVisible: function() {\r\n var that = this;\r\n var dataController = that.getController(\"data\");\r\n var pagerOptions = that.option(\"pager\");\r\n var pagerVisible = pagerOptions && pagerOptions.visible;\r\n var scrolling = that.option(\"scrolling\");\r\n if (that._isVisible) {\r\n return true\r\n }\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 that._isVisible = pagerVisible;\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 that = this;\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 = that.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 that._pageSizes = null\r\n }\r\n if (isPager || isPaging || isScrolling) {\r\n that._isVisible = false\r\n }\r\n if (!isDataSource) {\r\n that._invalidate();\r\n if ((0, _window.hasWindow)() && isPager && that.component) {\r\n that.component.resize()\r\n }\r\n }\r\n }\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n pager: {\r\n visible: \"auto\",\r\n showPageSizeSelector: false,\r\n allowedPageSizes: \"auto\"\r\n }\r\n }\r\n },\r\n views: {\r\n pagerView: PagerView\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.summary.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.FooterView = exports.renderSummaryCell = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiData_grid2 = _interopRequireDefault(require(\"./ui.data_grid.data_source_adapter\"));\r\nvar _uiGrid_core = require(\"../grid_core/ui.grid_core.columns_view\");\r\nvar _aggregate_calculator = _interopRequireDefault(require(\"./aggregate_calculator\"));\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _store_helper = _interopRequireDefault(require(\"../../data/store_helper\"));\r\nvar _utils = _interopRequireDefault(require(\"../../data/utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\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\nvar renderSummaryCell = function(cell, options) {\r\n var $cell = (0, _renderer.default)(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((0, _renderer.default)(\"
\").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(_uiData_grid.default.getSummaryText(summaryItem, options.summaryTexts)))\r\n }\r\n $cell.append($summaryItems)\r\n }\r\n};\r\nexports.renderSummaryCell = renderSummaryCell;\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\nvar FooterView = _uiGrid_core.ColumnsView.inherit(function() {\r\n return {\r\n _getRows: function() {\r\n return this._dataController.footerItems()\r\n },\r\n _getCellOptions: function(options) {\r\n return (0, _extend.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 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 }\r\n if (totalItem && totalItem.summaryCells && totalItem.summaryCells.length) {\r\n this._updateContent(this._renderTable({\r\n change: change\r\n }), change)\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\", (0, _extend.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 {\r\n if (e.totalColumnIndices.length) {\r\n this.render(null, {\r\n changeType: \"update\",\r\n columnIndices: [e.totalColumnIndices]\r\n })\r\n }\r\n }\r\n } else {\r\n if (\"refresh\" === changeType || \"append\" === changeType || \"prepend\" === changeType) {\r\n this.render()\r\n }\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\n}());\r\nexports.FooterView = FooterView;\r\nvar SummaryDataSourceAdapterExtender = function() {\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 }\r\n return {\r\n init: function() {\r\n this.callBase.apply(this, arguments);\r\n this._totalAggregates = [];\r\n this._summaryGetter = _common.noop\r\n },\r\n summaryGetter: function(_summaryGetter) {\r\n if (!arguments.length) {\r\n return this._summaryGetter\r\n }\r\n if ((0, _type.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 = _store_helper.default.multiLevelGroup((0, _query.default)(items), groups).toArray();\r\n var result = [];\r\n paths.forEach(function(path) {\r\n forEachGroup(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\n}();\r\nvar SummaryDataSourceAdapterClientExtender = function() {\r\n var applyAddedData = function applyAddedData(data, insertedData, groupLevel) {\r\n if (groupLevel) {\r\n return applyAddedData(data, insertedData.map(function(item) {\r\n return {\r\n items: [item]\r\n }\r\n }, groupLevel - 1))\r\n }\r\n return data.concat(insertedData)\r\n };\r\n var applyRemovedData = function applyRemovedData(data, removedData, groupLevel) {\r\n if (groupLevel) {\r\n return data.map(function(data) {\r\n var updatedData = {};\r\n var updatedItems = applyRemovedData(data.items || [], removedData, groupLevel - 1);\r\n Object.defineProperty(updatedData, \"aggregates\", {\r\n get: function() {\r\n return data.aggregates\r\n },\r\n set: function(value) {\r\n data.aggregates = value\r\n }\r\n });\r\n return (0, _extend.extend)(updatedData, data, {\r\n items: updatedItems\r\n })\r\n })\r\n }\r\n return data.filter(function(data) {\r\n return removedData.indexOf(data) < 0\r\n })\r\n };\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 = applyAddedData(data, insertedData, groupLevel)\r\n }\r\n var removedData = editingController.getRemovedData();\r\n if (removedData.length) {\r\n data = applyRemovedData(data, removedData, groupLevel)\r\n }\r\n }\r\n }\r\n if (summary) {\r\n calculator = new _aggregate_calculator.default({\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 sortGroupsBySummaryCore = 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 = (0, _query.default)(items);\r\n (0, _iterator.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 (0, _iterator.each)(items, function() {\r\n this.items = sortGroupsBySummaryCore(this.items, groups, sortByGroups)\r\n })\r\n }\r\n return items\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 sortGroupsBySummaryCore(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 {\r\n if (summary.groupAggregates.length) {\r\n options.remoteOperations.paging = false\r\n }\r\n }\r\n }\r\n options.storeLoadOptions.totalSummary = summary.totalAggregates\r\n }\r\n } else {\r\n if (summary.totalAggregates.length || summary.groupAggregates.length && options.storeLoadOptions.group) {\r\n options.remoteOperations.paging = false\r\n }\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 that = this;\r\n var groups = _utils.default.normalizeSortingInfo(options.storeLoadOptions.group || options.loadOptions.group || []);\r\n var remoteOperations = options.remoteOperations || {};\r\n var summary = that.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(that, {\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 {\r\n if (!remoteOperations.paging) {\r\n totalAggregates = calculateAggregates(that, summary, options.data, groups.length);\r\n options.data = sortGroupsBySummary(options.data, groups, summary);\r\n options.extra = (0, _type.isPlainObject)(options.extra) ? options.extra : {};\r\n options.extra.summary = totalAggregates\r\n }\r\n }\r\n }\r\n if (!options.isCustomLoading) {\r\n that._totalAggregates = options.extra && options.extra.summary || that._totalAggregates\r\n }\r\n that.callBase(options)\r\n }\r\n }\r\n}();\r\n_uiData_grid2.default.extend(SummaryDataSourceAdapterExtender);\r\n_uiData_grid2.default.extend(SummaryDataSourceAdapterClientExtender);\r\n_uiData_grid.default.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: _message.default.getFormatter(\"dxDataGrid-summarySum\"),\r\n sumOtherColumn: _message.default.getFormatter(\"dxDataGrid-summarySumOtherColumn\"),\r\n min: _message.default.getFormatter(\"dxDataGrid-summaryMin\"),\r\n minOtherColumn: _message.default.getFormatter(\"dxDataGrid-summaryMinOtherColumn\"),\r\n max: _message.default.getFormatter(\"dxDataGrid-summaryMax\"),\r\n maxOtherColumn: _message.default.getFormatter(\"dxDataGrid-summaryMaxOtherColumn\"),\r\n avg: _message.default.getFormatter(\"dxDataGrid-summaryAvg\"),\r\n avgOtherColumn: _message.default.getFormatter(\"dxDataGrid-summaryAvgOtherColumn\"),\r\n count: _message.default.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: function() {\r\n return {\r\n _isDataColumn: function(column) {\r\n return column && (!(0, _type.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 (0, _iterator.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 && !(0, _type.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 (0, _iterator.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 ((0, _type.isDefined)(summaryItem.valueFormat)) {\r\n valueFormat = summaryItem.valueFormat\r\n } else {\r\n if (\"count\" !== summaryItem.summaryType) {\r\n valueFormat = _uiData_grid.default.getFormatByDataType(column && column.dataType)\r\n }\r\n }\r\n summaryCellsByColumns[columnIndex].push((0, _extend.extend)({}, summaryItem, {\r\n value: (0, _type.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 (!(0, _type.isEmptyObject)(summaryCellsByColumns)) {\r\n (0, _iterator.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 that = this;\r\n var summaryCells;\r\n var dataSource = that._dataSource;\r\n var footerItems = that._footerItems;\r\n var oldSummaryCells = footerItems && footerItems[0] && footerItems[0].summaryCells;\r\n var summaryTotalItems = that.option(\"summary.totalItems\");\r\n that._footerItems = [];\r\n if (dataSource && summaryTotalItems && summaryTotalItems.length) {\r\n var totalAggregates = dataSource.totalAggregates();\r\n summaryCells = that._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(function(index) {\r\n return index >= 0\r\n })\r\n }\r\n if (summaryCells.length) {\r\n that._footerItems.push({\r\n rowType: \"totalFooter\",\r\n summaryCells: summaryCells\r\n })\r\n }\r\n }\r\n that.callBase(change)\r\n },\r\n _prepareUnsavedDataSelector: function(selector) {\r\n var that = this;\r\n if (recalculateWhileEditing(that)) {\r\n var editingController = that.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 (0, _type.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 (0, _iterator.map)(summaryItems || [], function(summaryItem) {\r\n var column = columnsController.columnOption(summaryItem.column);\r\n var calculateCellValue = column && column.calculateCellValue ? column.calculateCellValue.bind(column) : (0, _data.compileGetter)(column ? column.dataField : summaryItem.column);\r\n var aggregator = summaryItem.summaryType || \"count\";\r\n var selector = summaryItem.column;\r\n var skipEmptyValues = (0, _type.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 _ui.default.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 ((0, _type.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 var getFullName = function(summaryItem) {\r\n var summaryType = summaryItem.summaryType;\r\n var column = summaryItem.column;\r\n return summaryType && column && summaryType + \"_\" + column\r\n };\r\n if ((0, _type.isDefined)(name)) {\r\n (0, _iterator.each)(summaryItems || [], function(index) {\r\n if (this.name === name || index === name || this.summaryType === name || this.column === name || getFullName(this) === name) {\r\n summaryItemIndex = index;\r\n return false\r\n }\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 }(0, _iterator.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 ((0, _type.isDefined)(groupColumn)) {\r\n groupColumn = columnsController.columnOption(groupColumn);\r\n that._addSortInfo(sortByGroups, groupColumn, selector, sortOrder)\r\n } else {\r\n (0, _iterator.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 var sortByGroups = function() {\r\n return that._getSummarySortByGroups(sortByGroupSummaryInfo, groupSummaryItems)\r\n };\r\n if (groupAggregates.length || totalAggregates.length) {\r\n return {\r\n groupAggregates: groupAggregates,\r\n totalAggregates: totalAggregates,\r\n sortByGroups: sortByGroups\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 }(),\r\n editing: function() {\r\n return {\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 },\r\n views: {\r\n rowsView: function() {\r\n return {\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 !(0, _type.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(), (0, _extend.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 && !(0, _type.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 that = this;\r\n var parameters = that.callBase(options);\r\n if (options.row.summaryCells) {\r\n return (0, _extend.extend)(parameters, getSummaryCellOptions(that, options))\r\n } else {\r\n return parameters\r\n }\r\n }\r\n }\r\n }()\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.data_controller.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.DataController = void 0;\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _uiData_grid2 = _interopRequireDefault(require(\"./ui.data_grid.data_source_adapter\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.data_controller\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DataController = _uiGrid_core.default.controllers.data.inherit(function() {\r\n return {\r\n _getDataSourceAdapter: function() {\r\n return _uiData_grid2.default\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 _ui.default.log(\"W1011\")\r\n }\r\n return this.callBase()\r\n }\r\n }\r\n}());\r\nexports.DataController = DataController;\r\n_uiData_grid.default.registerModule(\"data\", {\r\n defaultOptions: _uiGrid_core.default.defaultOptions,\r\n controllers: {\r\n data: DataController\r\n }\r\n});\r\n","/**\r\n * DevExtreme (ui/context_menu/ui.context_menu.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _dom = require(\"../../core/utils/dom\");\r\nvar _element = require(\"../../core/element\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _overlay = _interopRequireDefault(require(\"../overlay\"));\r\nvar _ui = _interopRequireDefault(require(\"./ui.menu_base\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n if (!(instance instanceof Constructor)) {\r\n throw new TypeError(\"Cannot call a class as a function\")\r\n }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n _get = Reflect.get\r\n } else {\r\n _get = function(target, property, receiver) {\r\n var base = _superPropBase(target, property);\r\n if (!base) {\r\n return\r\n }\r\n var desc = Object.getOwnPropertyDescriptor(base, property);\r\n if (desc.get) {\r\n return desc.get.call(receiver)\r\n }\r\n return desc.value\r\n }\r\n }\r\n return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n object = _getPrototypeOf(object);\r\n if (null === object) {\r\n break\r\n }\r\n }\r\n return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n if (\"function\" !== typeof superClass && null !== superClass) {\r\n throw new TypeError(\"Super expression must either be null or a function\")\r\n }\r\n subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n constructor: {\r\n value: subClass,\r\n writable: true,\r\n configurable: true\r\n }\r\n });\r\n if (superClass) {\r\n _setPrototypeOf(subClass, superClass)\r\n }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n return function() {\r\n var result, Super = _getPrototypeOf(Derived);\r\n if (hasNativeReflectConstruct) {\r\n var NewTarget = _getPrototypeOf(this).constructor;\r\n result = Reflect.construct(Super, arguments, NewTarget)\r\n } else {\r\n result = Super.apply(this, arguments)\r\n }\r\n return _possibleConstructorReturn(this, result)\r\n }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n return call\r\n }\r\n return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n if (void 0 === self) {\r\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n }\r\n return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n return false\r\n }\r\n if (Reflect.construct.sham) {\r\n return false\r\n }\r\n if (\"function\" === typeof Proxy) {\r\n return true\r\n }\r\n try {\r\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n return true\r\n } catch (e) {\r\n return false\r\n }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n return o.__proto__ || Object.getPrototypeOf(o)\r\n };\r\n return _getPrototypeOf(o)\r\n}\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\nvar ContextMenu = function(_MenuBase) {\r\n _inherits(ContextMenu, _MenuBase);\r\n var _super = _createSuper(ContextMenu);\r\n\r\n function ContextMenu() {\r\n _classCallCheck(this, ContextMenu);\r\n return _super.apply(this, arguments)\r\n }\r\n _createClass(ContextMenu, [{\r\n key: \"getShowEvent\",\r\n value: function(showEventOption) {\r\n var result = null;\r\n if ((0, _type.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 }, {\r\n key: \"getShowDelay\",\r\n value: function(showEventOption) {\r\n return (0, _type.isObject)(showEventOption) && showEventOption.delay\r\n }\r\n }, {\r\n key: \"_getDefaultOptions\",\r\n value: function() {\r\n return (0, _extend.extend)(_get(_getPrototypeOf(ContextMenu.prototype), \"_getDefaultOptions\", this).call(this), {\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 }, {\r\n key: \"_defaultOptionsRules\",\r\n value: function() {\r\n return _get(_getPrototypeOf(ContextMenu.prototype), \"_defaultOptionsRules\", this).call(this).concat([{\r\n device: function() {\r\n return !(0, _window.hasWindow)()\r\n },\r\n options: {\r\n animation: null\r\n }\r\n }])\r\n }\r\n }, {\r\n key: \"_initActions\",\r\n value: function() {\r\n var _this = this;\r\n this._actions = {};\r\n (0, _iterator.each)(ACTIONS, function(index, action) {\r\n _this._actions[action] = _this._createActionByOption(action) || _common.noop\r\n })\r\n }\r\n }, {\r\n key: \"_setOptionsByReference\",\r\n value: function() {\r\n _get(_getPrototypeOf(ContextMenu.prototype), \"_setOptionsByReference\", this).call(this);\r\n (0, _extend.extend)(this._optionsByReference, {\r\n animation: true,\r\n selectedItem: true\r\n })\r\n }\r\n }, {\r\n key: \"_focusInHandler\",\r\n value: function() {}\r\n }, {\r\n key: \"_itemContainer\",\r\n value: function() {\r\n return this._overlay ? this._overlay.$content() : (0, _renderer.default)()\r\n }\r\n }, {\r\n key: \"_eventBindingTarget\",\r\n value: function() {\r\n return this._itemContainer()\r\n }\r\n }, {\r\n key: \"itemsContainer\",\r\n value: function() {\r\n return this._overlay ? this._overlay.$content() : void 0\r\n }\r\n }, {\r\n key: \"_supportedKeys\",\r\n value: function() {\r\n var _this2 = this;\r\n var selectItem = function() {\r\n var $item = (0, _renderer.default)(_this2.option(\"focusedElement\"));\r\n _this2.hide();\r\n if (!$item.length || !_this2._isSelectionEnabled()) {\r\n return\r\n }\r\n _this2.selectItem($item[0])\r\n };\r\n return (0, _extend.extend)(_get(_getPrototypeOf(ContextMenu.prototype), \"_supportedKeys\", this).call(this), {\r\n space: selectItem,\r\n escape: this.hide\r\n })\r\n }\r\n }, {\r\n key: \"_getActiveItem\",\r\n value: function() {\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 _get(_getPrototypeOf(ContextMenu.prototype), \"_getActiveItem\", this).call(this)\r\n }\r\n }, {\r\n key: \"_moveFocus\",\r\n value: function(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 = (0, _renderer.default)(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 _get(_getPrototypeOf(ContextMenu.prototype), \"_moveFocus\", this).call(this, location)\r\n }\r\n }\r\n }, {\r\n key: \"_setFocusedElement\",\r\n value: function($element) {\r\n if ($element && 0 !== $element.length) {\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($element))\r\n }\r\n }\r\n }, {\r\n key: \"_getItemsByLocation\",\r\n value: function(location) {\r\n var $activeItem = this._getActiveItem(true);\r\n var $items;\r\n if ((0, _array.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 }, {\r\n key: \"_getAriaTarget\",\r\n value: function() {\r\n return this.$element()\r\n }\r\n }, {\r\n key: \"_refreshActiveDescendant\",\r\n value: function() {\r\n if ((0, _type.isDefined)(this._overlay)) {\r\n var $target = this._overlay.$content();\r\n _get(_getPrototypeOf(ContextMenu.prototype), \"_refreshActiveDescendant\", this).call(this, $target)\r\n }\r\n }\r\n }, {\r\n key: \"_hideSubmenuHandler\",\r\n value: function() {\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 }, {\r\n key: \"_expandSubmenuHandler\",\r\n value: function($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 }, {\r\n key: \"_clean\",\r\n value: function() {\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 _get(_getPrototypeOf(ContextMenu.prototype), \"_clean\", this).call(this)\r\n }\r\n }, {\r\n key: \"_initMarkup\",\r\n value: function() {\r\n this.$element().addClass(DX_HAS_CONTEXT_MENU_CLASS);\r\n _get(_getPrototypeOf(ContextMenu.prototype), \"_initMarkup\", this).call(this)\r\n }\r\n }, {\r\n key: \"_render\",\r\n value: function() {\r\n _get(_getPrototypeOf(ContextMenu.prototype), \"_render\", this).call(this);\r\n this._renderVisibility(this.option(\"visible\"));\r\n this._addWidgetClass()\r\n }\r\n }, {\r\n key: \"_renderContentImpl\",\r\n value: function() {\r\n this._detachShowContextMenuEvents(this._getTarget());\r\n this._attachShowContextMenuEvents()\r\n }\r\n }, {\r\n key: \"_attachKeyboardEvents\",\r\n value: function() {\r\n !this._keyboardListenerId && this._focusTarget().length && _get(_getPrototypeOf(ContextMenu.prototype), \"_attachKeyboardEvents\", this).call(this)\r\n }\r\n }, {\r\n key: \"_renderContextMenuOverlay\",\r\n value: function() {\r\n if (this._overlay) {\r\n return\r\n }\r\n var overlayOptions = this._getOverlayOptions();\r\n this._overlay = this._createComponent((0, _renderer.default)(\"
\").appendTo(this._$element), _overlay.default, 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 }, {\r\n key: \"_itemContextMenuHandler\",\r\n value: function(e) {\r\n _get(_getPrototypeOf(ContextMenu.prototype), \"_itemContextMenuHandler\", this).call(this, e);\r\n e.stopPropagation()\r\n }\r\n }, {\r\n key: \"_addPlatformDependentClass\",\r\n value: function($element) {\r\n if (_devices.default.current().phone) {\r\n $element.addClass(DX_MENU_PHONE_CLASS)\r\n }\r\n }\r\n }, {\r\n key: \"_detachShowContextMenuEvents\",\r\n value: function(target) {\r\n var showEvent = this.getShowEvent(this.option(\"showEvent\"));\r\n if (!showEvent) {\r\n return\r\n }\r\n var eventName = (0, _index.addNamespace)(showEvent, this.NAME);\r\n if (this._showContextMenuEventHandler) {\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), eventName, target, this._showContextMenuEventHandler)\r\n } else {\r\n _events_engine.default.off((0, _renderer.default)(target), eventName)\r\n }\r\n }\r\n }, {\r\n key: \"_attachShowContextMenuEvents\",\r\n value: function() {\r\n var _this3 = this;\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 = (0, _index.addNamespace)(showEvent, this.NAME);\r\n var contextMenuAction = this._createAction(function(e) {\r\n var delay = _this3.getShowDelay(_this3.option(\"showEvent\"));\r\n if (delay) {\r\n setTimeout(function() {\r\n return _this3._show(e.event)\r\n }, delay)\r\n } else {\r\n _this3._show(e.event)\r\n }\r\n }, {\r\n validatingTargetName: \"target\"\r\n });\r\n var handler = function(e) {\r\n return contextMenuAction({\r\n event: e,\r\n target: (0, _renderer.default)(e.currentTarget)\r\n })\r\n };\r\n contextMenuAction = this._createAction(contextMenuAction);\r\n if ((0, _type.isRenderer)(target) || target.nodeType || (0, _type.isWindow)(target)) {\r\n this._showContextMenuEventHandler = void 0;\r\n _events_engine.default.on(target, eventName, handler)\r\n } else {\r\n this._showContextMenuEventHandler = handler;\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), eventName, target, this._showContextMenuEventHandler)\r\n }\r\n }\r\n }, {\r\n key: \"_hoverEndHandler\",\r\n value: function(e) {\r\n _get(_getPrototypeOf(ContextMenu.prototype), \"_hoverEndHandler\", this).call(this, e);\r\n e.stopPropagation()\r\n }\r\n }, {\r\n key: \"_renderDimensions\",\r\n value: function() {}\r\n }, {\r\n key: \"_renderContainer\",\r\n value: function($wrapper, submenuContainer) {\r\n var $holder = submenuContainer || this._itemContainer();\r\n $wrapper = (0, _renderer.default)(\"
\");\r\n $wrapper.appendTo($holder).addClass(DX_SUBMENU_CLASS).css(\"visibility\", submenuContainer ? \"hidden\" : \"visible\");\r\n var $itemsContainer = _get(_getPrototypeOf(ContextMenu.prototype), \"_renderContainer\", this).call(this, $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 }, {\r\n key: \"_renderSubmenuItems\",\r\n value: function(node, $itemFrame) {\r\n this._renderItems(this._getChildNodes(node), $itemFrame);\r\n this._actions.onSubmenuCreated({\r\n itemElement: (0, _element.getPublicElement)($itemFrame),\r\n itemData: node.internalFields.item,\r\n submenuElement: (0, _element.getPublicElement)($itemFrame.children(\".\".concat(DX_SUBMENU_CLASS)))\r\n })\r\n }\r\n }, {\r\n key: \"_getOverlayOptions\",\r\n value: function() {\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 }, {\r\n key: \"_overlayShownActionHandler\",\r\n value: function(arg) {\r\n this._actions.onShown(arg)\r\n }\r\n }, {\r\n key: \"_overlayHidingActionHandler\",\r\n value: function(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 }, {\r\n key: \"_overlayHiddenActionHandler\",\r\n value: function(arg) {\r\n this._actions.onHidden(arg)\r\n }\r\n }, {\r\n key: \"_closeOnOutsideClickHandler\",\r\n value: function(e) {\r\n var closeOnOutsideClick = this.option(\"closeOnOutsideClick\");\r\n if ((0, _type.isFunction)(closeOnOutsideClick)) {\r\n return closeOnOutsideClick(e)\r\n }\r\n if (!closeOnOutsideClick) {\r\n return false\r\n }\r\n if (_dom_adapter.default.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 }, {\r\n key: \"_getActiveItemsContainer\",\r\n value: function(target) {\r\n return (0, _renderer.default)(target).closest(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS))\r\n }\r\n }, {\r\n key: \"_getItemsContainers\",\r\n value: function() {\r\n return this._overlay._$content.find(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS))\r\n }\r\n }, {\r\n key: \"_searchActiveItem\",\r\n value: function(target) {\r\n return (0, _renderer.default)(target).closest(\".\".concat(DX_MENU_ITEM_CLASS)).eq(0)\r\n }\r\n }, {\r\n key: \"_isIncludeOverlay\",\r\n value: function($activeOverlay, $allOverlays) {\r\n var isSame = false;\r\n (0, _iterator.each)($allOverlays, function(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 }, {\r\n key: \"_hideAllShownChildSubmenus\",\r\n value: function($clickedItem) {\r\n var _this4 = this;\r\n var $submenuElements = $clickedItem.find(\".\".concat(DX_SUBMENU_CLASS));\r\n var shownSubmenus = (0, _extend.extend)([], this._shownSubmenus);\r\n if ($submenuElements.length > 0) {\r\n (0, _iterator.each)(shownSubmenus, function(index, $submenu) {\r\n var $context = _this4._searchActiveItem($submenu.context).parent();\r\n if ($context.parent().is($clickedItem.parent().parent()) && !$context.is($clickedItem.parent())) {\r\n _this4._hideSubmenu($submenu)\r\n }\r\n })\r\n }\r\n }\r\n }, {\r\n key: \"_showSubmenu\",\r\n value: function($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 _get(_getPrototypeOf(ContextMenu.prototype), \"_showSubmenu\", this).call(this, $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 }, {\r\n key: \"_hideSubmenusOnSameLevel\",\r\n value: function($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 }, {\r\n key: \"_hideSubmenuGroup\",\r\n value: function($submenu) {\r\n if (this._isSubmenuVisible($submenu)) {\r\n this._hideSubmenuCore($submenu)\r\n }\r\n }\r\n }, {\r\n key: \"_isSubmenuVisible\",\r\n value: function($submenu) {\r\n return \"visible\" === $submenu.css(\"visibility\")\r\n }\r\n }, {\r\n key: \"_drawSubmenu\",\r\n value: function($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 (!(0, _type.isDefined)(this._shownSubmenus)) {\r\n this._shownSubmenus = []\r\n }\r\n if ((0, _array.inArray)($submenu, this._shownSubmenus)) {\r\n this._shownSubmenus.push($submenu)\r\n }\r\n if (animation) {\r\n _fx.default.stop($submenu)\r\n }\r\n _position.default.setup($submenu, submenuPosition);\r\n if (animation) {\r\n if ((0, _type.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 }, {\r\n key: \"_animate\",\r\n value: function($container, options) {\r\n _fx.default.animate($container, options)\r\n }\r\n }, {\r\n key: \"_getSubmenuPosition\",\r\n value: function($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 }, {\r\n key: \"_updateSubmenuVisibilityOnClick\",\r\n value: function(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 = (0, _renderer.default)(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 = (0, _renderer.default)($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 }, {\r\n key: \"_hideSubmenu\",\r\n value: function($curSubmenu) {\r\n var _this5 = this;\r\n var shownSubmenus = (0, _extend.extend)([], this._shownSubmenus);\r\n (0, _iterator.each)(shownSubmenus, function(index, $submenu) {\r\n if ($curSubmenu.is($submenu) || (0, _dom.contains)($curSubmenu[0], $submenu[0])) {\r\n $submenu.parent().removeClass(DX_MENU_ITEM_EXPANDED_CLASS);\r\n _this5._hideSubmenuCore($submenu)\r\n }\r\n })\r\n }\r\n }, {\r\n key: \"_hideSubmenuCore\",\r\n value: function($submenu) {\r\n var index = (0, _array.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 }, {\r\n key: \"_stopAnimate\",\r\n value: function($container) {\r\n _fx.default.stop($container, true)\r\n }\r\n }, {\r\n key: \"_hideAllShownSubmenus\",\r\n value: function() {\r\n var _this6 = this;\r\n var shownSubmenus = (0, _extend.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 (0, _iterator.each)(shownSubmenus, function(_, $submenu) {\r\n _this6._hideSubmenu($submenu)\r\n })\r\n }\r\n }, {\r\n key: \"_visibilityChanged\",\r\n value: function(visible) {\r\n if (visible) {\r\n this._renderContentImpl()\r\n }\r\n }\r\n }, {\r\n key: \"_optionChanged\",\r\n value: function(args) {\r\n if ((0, _array.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 _get(_getPrototypeOf(ContextMenu.prototype), \"_optionChanged\", this).call(this, args)\r\n }\r\n }\r\n }, {\r\n key: \"_renderVisibility\",\r\n value: function(showing) {\r\n return showing ? this._show() : this._hide()\r\n }\r\n }, {\r\n key: \"_toggleVisibility\",\r\n value: function() {}\r\n }, {\r\n key: \"_show\",\r\n value: function(event) {\r\n var args = {\r\n jQEvent: event\r\n };\r\n var promise = (new _deferred.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 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 }\r\n return promise\r\n }\r\n }, {\r\n key: \"_setAriaAttributes\",\r\n value: function() {\r\n this._overlayContentId = \"dx-\".concat(new _guid.default);\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 }, {\r\n key: \"_cleanAriaAttributes\",\r\n value: function() {\r\n this._overlay && this.setAria(\"id\", null, this._overlay.$content());\r\n this.setAria(\"owns\", void 0)\r\n }\r\n }, {\r\n key: \"_getTarget\",\r\n value: function() {\r\n return this.option(\"target\") || this.option(\"position\").of || (0, _renderer.default)(_dom_adapter.default.getDocument())\r\n }\r\n }, {\r\n key: \"_getContextMenuPosition\",\r\n value: function() {\r\n return (0, _extend.extend)({}, this.option(\"position\"), {\r\n of: this._getTarget()\r\n })\r\n }\r\n }, {\r\n key: \"_positionContextMenu\",\r\n value: function(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 {\r\n if (actionArgs.event) {\r\n actionArgs.event.cancel = true;\r\n jQEvent.preventDefault()\r\n }\r\n }\r\n return position\r\n }\r\n }, {\r\n key: \"_refresh\",\r\n value: function() {\r\n if (!(0, _window.hasWindow)()) {\r\n _get(_getPrototypeOf(ContextMenu.prototype), \"_refresh\", this).call(this)\r\n } else {\r\n if (this._overlay) {\r\n var lastPosition = this._overlay.option(\"position\");\r\n _get(_getPrototypeOf(ContextMenu.prototype), \"_refresh\", this).call(this);\r\n this._overlay && this._overlay.option(\"position\", lastPosition)\r\n } else {\r\n _get(_getPrototypeOf(ContextMenu.prototype), \"_refresh\", this).call(this)\r\n }\r\n }\r\n }\r\n }, {\r\n key: \"_hide\",\r\n value: function() {\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.Deferred).reject().promise()\r\n }\r\n }, {\r\n key: \"toggle\",\r\n value: function(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 }, {\r\n key: \"show\",\r\n value: function() {\r\n return this.toggle(true)\r\n }\r\n }, {\r\n key: \"hide\",\r\n value: function() {\r\n return this.toggle(false)\r\n }\r\n }]);\r\n return ContextMenu\r\n}(_ui.default);\r\n(0, _component_registrator.default)(\"dxContextMenu\", ContextMenu);\r\nvar _default = ContextMenu;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.rows.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _style = require(\"../../core/utils/style\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _uiGrid_core2 = require(\"./ui.grid_core.columns_view\");\r\nvar _ui = _interopRequireDefault(require(\"../scroll_view/ui.scrollable\"));\r\nvar _remove_event = _interopRequireDefault(require(\"../../core/remove_event\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar ROWS_VIEW_CLASS = \"rowsview\";\r\nvar 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 ? scrollable.scrollWidth() - scrollable.clientWidth() : 0\r\n}\r\nvar _default = {\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: _message.default.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: _message.default.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: _uiGrid_core2.ColumnsView.inherit(function() {\r\n var defaultCellTemplate = function($container, options) {\r\n var isDataTextEmpty = (0, _string.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 _uiGrid_core.default.setEmptyText($container)\r\n } else {\r\n if (options.column.encodeHtml) {\r\n container.textContent = text\r\n } else {\r\n container.innerHTML = text\r\n }\r\n }\r\n };\r\n var getScrollableBottomPadding = function(that) {\r\n var scrollable = that.getScrollable();\r\n return scrollable ? Math.ceil(parseFloat(scrollable.$content().css(\"paddingBottom\"))) : 0\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 that = this;\r\n var summaryTexts = that.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 += \" \" + _uiGrid_core.default.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 {\r\n if (options.groupContinuesMessage) {\r\n text += \" (\" + options.groupContinuesMessage + \")\"\r\n } else {\r\n if (options.groupContinuedMessage) {\r\n text += \" (\" + options.groupContinuedMessage + \")\"\r\n }\r\n }\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 that = this;\r\n var column = options.column;\r\n var template;\r\n if (\"group\" === options.rowType && (0, _type.isDefined)(column.groupIndex) && !column.showWhenGrouped && !column.command) {\r\n template = column.groupCellTemplate || {\r\n allowRenderToDetachedContainer: true,\r\n render: that._getDefaultGroupTemplate(column)\r\n }\r\n } else {\r\n 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: that._getDefaultTemplate(column)\r\n }\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\", (0, _type.isDefined)(isRowExpanded) && isRowExpanded.toString(), $row)\r\n }\r\n }\r\n return $row\r\n },\r\n _rowPrepared: function($row, rowOptions, row) {\r\n var _this = this;\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(function() {\r\n return _this._isAltRow(row)\r\n }, function(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(function() {\r\n return rowOptions.rowIndex\r\n }, function() {\r\n return _this._setAriaRowIndex(rowOptions, $row)\r\n })\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 _this2 = this;\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(function() {\r\n return dataController.generateDataValues(arg.data, arg.columns)\r\n }, function() {\r\n dataController.repaintRows([row.rowIndex], _this2.option(\"repaintChangesOnly\"))\r\n }, {\r\n deep: true,\r\n skipImmediate: true\r\n });\r\n _events_engine.default.on(arg.rowElement, _remove_event.default, dispose)\r\n },\r\n _renderScrollable: function(force) {\r\n var that = this;\r\n var $element = that.element();\r\n if (!$element.children().length) {\r\n $element.append(\"
\")\r\n }\r\n if (force || !that._loadPanel) {\r\n that._renderLoadPanel($element, $element.parent(), that._dataController.isLocalStore())\r\n }\r\n if ((force || !that.getScrollable()) && that._dataController.isLoaded()) {\r\n var columns = that.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 (that.option(\"columnAutoWidth\") || that._hasHeight || allColumnsHasWidth || that._columnsController._isColumnFixing()) {\r\n that._renderScrollableCore($element)\r\n }\r\n }\r\n },\r\n _handleScroll: function(e) {\r\n var that = this;\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n that._isScrollByEvent = !!e.event;\r\n that._scrollTop = e.scrollOffset.top;\r\n that._scrollLeft = e.scrollOffset.left;\r\n if (rtlEnabled) {\r\n this._scrollRight = getMaxHorizontalScrollOffset(e.component) - this._scrollLeft\r\n }\r\n that.scrollChanged.fire(e.scrollOffset, that.name)\r\n },\r\n _renderScrollableCore: function($element) {\r\n var that = this;\r\n var dxScrollableOptions = that._createScrollableOptions();\r\n var scrollHandler = that._handleScroll.bind(that);\r\n dxScrollableOptions.onScroll = scrollHandler;\r\n dxScrollableOptions.onStop = scrollHandler;\r\n that._scrollable = that._createComponent($element, _ui.default, dxScrollableOptions);\r\n that._scrollableContainer = that._scrollable && that._scrollable._$container\r\n },\r\n _renderLoadPanel: _uiGrid_core.default.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 (0, _iterator.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 ((0, _type.isDefined)(item.visible) && item.visible !== $rowElement.is(\":visible\")) {\r\n $rowElement.toggle(item.visible)\r\n } else {\r\n if (columnIndices) {\r\n that._updateCells($rowElement, $newRowElement, columnIndices)\r\n } else {\r\n $rowElement.replaceWith($newRowElement)\r\n }\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 {\r\n if ($rowElement.length) {\r\n $newRowElement.insertBefore($rowElement)\r\n } else {\r\n $newRowElement.insertAfter($rowsElement.last())\r\n }\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 (0, _iterator.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 that = this;\r\n var $cell;\r\n var $row = that._createRow();\r\n var columns = isFixed ? this.getFixedColumns() : this.getColumns();\r\n $row.addClass(className).toggleClass(COLUMN_LINES_CLASS, that.option(\"showColumnLines\"));\r\n for (var i = 0; i < columns.length; i++) {\r\n $cell = that._createCell({\r\n column: columns[i],\r\n rowType: \"freeSpace\",\r\n columnIndex: i,\r\n columns: columns\r\n });\r\n (0, _type.isNumeric)(height) && $cell.css(\"height\", height);\r\n $row.append($cell)\r\n }\r\n that.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 + (0, _position.getBoundingRect)(row).height\r\n }, 0)\r\n },\r\n _updateRowHeight: function() {\r\n var that = this;\r\n var $tableElement = that._getTableElement();\r\n var itemsCount = that._dataController.items().length;\r\n if ($tableElement && that._needUpdateRowHeight(itemsCount)) {\r\n var rowsHeight = that._getRowsHeight($tableElement);\r\n that._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\", (0, _extend.extend)({\r\n evaluate: function(expr) {\r\n var getter = (0, _data.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\", (0, _extend.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 {\r\n if (options.row.values) {\r\n this.callBase($row, options)\r\n }\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 = (0, _position.getDefaultAlignment)(this.option(\"rtlEnabled\"));\r\n var groupColumn = (0, _extend.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 that = this;\r\n var scrollingMode = that.option(\"scrolling.mode\");\r\n that.callBase($table, (0, _extend.extend)({\r\n scrollingMode: scrollingMode\r\n }, options));\r\n that._checkRowKeys(options.change);\r\n that._renderFreeSpaceRow($table);\r\n if (!that._hasHeight) {\r\n that.updateFreeSpaceRowHeight($table)\r\n }\r\n },\r\n _renderRow: function($table, options) {\r\n var that = this;\r\n var row = options.row;\r\n var rowTemplate = that.option(\"rowTemplate\");\r\n if ((\"data\" === row.rowType || \"group\" === row.rowType) && !(0, _type.isDefined)(row.groupIndex) && rowTemplate) {\r\n that.renderTemplate($table, rowTemplate, (0, _extend.extend)({\r\n columns: options.columns\r\n }, row), true)\r\n } else {\r\n that.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 var resizeCompletedHandler = function resizeCompletedHandler() {\r\n var scrollableInstance = that.getScrollable();\r\n if (scrollableInstance && that.element().closest((0, _window.getWindow)().document).length) {\r\n that.resizeCompleted.remove(resizeCompletedHandler);\r\n scrollableInstance._visibilityChanged(true)\r\n }\r\n };\r\n if (!(0, _type.isDefined)(that._getTableElement())) {\r\n that._setTableElement($table);\r\n that._renderScrollable(true);\r\n that.resizeCompleted.add(resizeCompletedHandler)\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 that = this;\r\n var $element = that.element();\r\n $element.addClass(that.addWidgetPrefix(ROWS_VIEW_CLASS)).toggleClass(that.addWidgetPrefix(NOWRAP_CLASS), !that.option(\"wordWrapEnabled\"));\r\n $element.toggleClass(EMPTY_CLASS, 0 === that._dataController.items().length);\r\n that.setAria(\"role\", \"presentation\", $element);\r\n var $table = that._renderTable({\r\n change: change\r\n });\r\n that._updateContent($table, change);\r\n that.callBase(change);\r\n that._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 that = this;\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 = _uiGrid_core.default.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 ? _uiGrid_core.default.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 ((0, _type.isDefined)(column.groupIndex) && !column.command) {\r\n var groupingTextsOptions = that.option(\"grouping.texts\");\r\n var scrollingMode = that.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 (0, _iterator.each)($rows, function(rowIndex, row) {\r\n if (!(0, _renderer.default)(row).hasClass(GROUP_ROW_CLASS)) {\r\n for (var i = 0; i < visibleColumns.length; i++) {\r\n if ((0, _type.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 (!(0, _type.isNumeric)(columnID)) {\r\n break\r\n }\r\n }\r\n }\r\n }\r\n })\r\n },\r\n _getDevicePixelRatio: function() {\r\n return (0, _window.getWindow)().devicePixelRatio\r\n },\r\n renderNoDataText: _uiGrid_core.default.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 ((0, _type.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 (0, _renderer.default)(rows[index])\r\n }\r\n }\r\n },\r\n updateFreeSpaceRowHeight: function($table) {\r\n var _this3 = this;\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 (0, _style.setHeight)(freeSpaceRowElements, freeSpaceRowCount * this._rowHeight);\r\n isFreeSpaceRowVisible = true\r\n }\r\n if (!isFreeSpaceRowVisible && $table) {\r\n (0, _style.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 (0, _common.deferUpdate)(function() {\r\n var scrollbarWidth = _this3.getScrollbarWidth(true);\r\n var elementHeightWithoutScrollbar = _this3.element().height() - scrollbarWidth;\r\n var contentHeight = contentElement.outerHeight();\r\n var showFreeSpaceRow = elementHeightWithoutScrollbar - contentHeight > 0;\r\n var rowsHeight = _this3._getRowsHeight(contentElement.children().first());\r\n var $tableElement = $table || _this3.getTableElements();\r\n var borderTopWidth = Math.ceil(parseFloat($tableElement.css(\"borderTopWidth\")));\r\n var heightCorrection = _this3._getHeightCorrection();\r\n var resultHeight = elementHeightWithoutScrollbar - rowsHeight - borderTopWidth - heightCorrection;\r\n if (showFreeSpaceRow) {\r\n (0, _common.deferRender)(function() {\r\n freeSpaceRowElements.css(\"height\", resultHeight);\r\n isFreeSpaceRowVisible = true;\r\n freeSpaceRowElements.show()\r\n })\r\n }(0, _common.deferRender)(function() {\r\n return _this3._updateLastRowBorder(isFreeSpaceRowVisible)\r\n })\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.default.webkit && this._getDevicePixelRatio() >= 2;\r\n var hasExtraBorderTop = _browser.default.mozilla && _browser.default.version >= 70 && !this.option(\"showRowLines\");\r\n return isZoomedWebkit || hasExtraBorderTop ? 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 var that = this;\r\n switch (change.changeType) {\r\n case \"refresh\":\r\n case \"prepend\":\r\n case \"append\":\r\n case \"update\":\r\n that.render(null, change);\r\n break;\r\n default:\r\n that._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 += getScrollableBottomPadding(this)\r\n }\r\n }\r\n return scrollbarWidth > 0 ? scrollbarWidth : 0\r\n },\r\n _fireColumnResizedCallbacks: function() {\r\n var that = this;\r\n var lastColumnWidths = that._lastColumnWidths || [];\r\n var columnWidths = [];\r\n var columns = that.getColumns();\r\n for (var i = 0; i < columns.length; i++) {\r\n columnWidths[i] = columns[i].visibleWidth;\r\n if (columns[i].resizedCallbacks && !(0, _type.isDefined)(columns[i].groupIndex) && lastColumnWidths[i] !== columnWidths[i]) {\r\n columns[i].resizedCallbacks.fire(columnWidths[i])\r\n }\r\n }\r\n that._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 = _ui.default.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 (0, _common.deferRender)(function() {\r\n that._renderScrollable();\r\n that.renderNoDataText();\r\n that.updateFreeSpaceRowHeight();\r\n (0, _common.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 && _ui.default.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 ((0, _type.isDefined)(_height) && $element) {\r\n (0, _style.setHeight)($element, _height)\r\n }\r\n },\r\n setLoading: function(isLoading, messageText) {\r\n var that = this;\r\n var loadPanel = that._loadPanel;\r\n var dataController = that._dataController;\r\n var loadPanelOptions = that.option(\"loadPanel\") || {};\r\n var animation = dataController.isLoaded() ? loadPanelOptions.animation : null;\r\n var $element = that.element();\r\n if (!(0, _window.hasWindow)()) {\r\n return\r\n }\r\n if (!loadPanel && void 0 !== messageText && dataController.isLocalStore() && \"auto\" === loadPanelOptions.enabled && $element) {\r\n that._renderLoadPanel($element, $element.parent());\r\n loadPanel = that._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(that._hideLoadingTimeoutID);\r\n if (loadPanel.option(\"visible\") && !isLoading) {\r\n that._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(rowIndex);\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 that = this;\r\n var itemIndex = 0;\r\n var prevOffsetTop = 0;\r\n var offsetTop = 0;\r\n var scrollPosition = that._scrollTop;\r\n var $contentElement = that._findContentElement();\r\n var contentElementOffsetTop = $contentElement && $contentElement.offset().top;\r\n var items = that._dataController.items();\r\n var tableElement = that._getTableElement();\r\n if (items.length && tableElement) {\r\n var rowElements = that._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 var that = this;\r\n that.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 that._invalidate(true, true);\r\n args.handled = true;\r\n break;\r\n case \"scrolling\":\r\n that._rowHeight = null;\r\n that._tableElement = null;\r\n args.handled = true;\r\n break;\r\n case \"rtlEnabled\":\r\n that._rowHeight = null;\r\n that._tableElement = null;\r\n break;\r\n case \"loadPanel\":\r\n that._tableElement = null;\r\n that._invalidate(true, \"loadPanel.enabled\" !== args.fullName);\r\n args.handled = true;\r\n break;\r\n case \"noDataText\":\r\n that.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\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (format_helper.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"./core/utils/type\");\r\nvar _date = _interopRequireDefault(require(\"./core/utils/date\"));\r\nvar _number = _interopRequireDefault(require(\"./localization/number\"));\r\nvar _date2 = _interopRequireDefault(require(\"./localization/date\"));\r\nvar _dependency_injector = _interopRequireDefault(require(\"./core/utils/dependency_injector\"));\r\nrequire(\"./localization/currency\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = (0, _dependency_injector.default)({\r\n format: function(value, _format) {\r\n var formatIsValid = (0, _type.isString)(_format) && \"\" !== _format || (0, _type.isPlainObject)(_format) || (0, _type.isFunction)(_format);\r\n var valueIsValid = (0, _type.isNumeric)(value) || (0, _type.isDate)(value);\r\n if (!formatIsValid || !valueIsValid) {\r\n return (0, _type.isDefined)(value) ? value.toString() : \"\"\r\n }\r\n if ((0, _type.isFunction)(_format)) {\r\n return _format(value)\r\n }\r\n if ((0, _type.isString)(_format)) {\r\n _format = {\r\n type: _format\r\n }\r\n }\r\n if ((0, _type.isNumeric)(value)) {\r\n return _number.default.format(value, _format)\r\n }\r\n if ((0, _type.isDate)(value)) {\r\n return _date2.default.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 _date2.default.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 var secondFormatter = function(date) {\r\n return date.getSeconds() + date.getMilliseconds() / 1e3 + \"s\"\r\n };\r\n resultFormat.push(secondFormatter)\r\n } else {\r\n if (dateDifferences.millisecond) {\r\n resultFormat.push(\"millisecond\")\r\n }\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 var monthDayFormatter = function(date) {\r\n return _date2.default.getMonthNames(\"abbreviated\")[date.getMonth()] + \" \" + _date2.default.format(date, \"day\")\r\n };\r\n resultFormat.unshift(monthDayFormatter)\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 var dayFormatter = function(date) {\r\n return _date2.default.format(date, \"dayofweek\") + \", \" + _date2.default.format(date, \"day\")\r\n };\r\n resultFormat.unshift(dayFormatter)\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 = _date.default.getDatesDifferences(ticks[0], ticks[1]);\r\n for (i = 1; i < ticks.length - 1; i++) {\r\n currentDiff = _date.default.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 dateDifferencesConverter = {\r\n week: \"day\"\r\n };\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 var correctDifferencesByMaxDate = 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 {\r\n 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 {\r\n 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 {\r\n 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 {\r\n 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 {\r\n 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 }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n tickInterval = (0, _type.isString)(tickInterval) ? tickInterval.toLowerCase() : tickInterval;\r\n var dateDifferences = _date.default.getDatesDifferences(startValue, endValue);\r\n if (startValue !== endValue) {\r\n correctDifferencesByMaxDate(dateDifferences, startValue > endValue ? endValue : startValue, startValue > endValue ? startValue : endValue)\r\n }\r\n dateUnitInterval = _date.default.getDateUnitInterval(dateDifferences);\r\n correctDateDifferences(dateDifferences, dateUnitInterval, true);\r\n dateUnitInterval = _date.default.getDateUnitInterval(tickInterval || \"second\");\r\n correctDateDifferences(dateDifferences, dateUnitInterval, false);\r\n dateDifferences[dateDifferencesConverter[dateUnitInterval] || dateUnitInterval] = true;\r\n var resultFormat = this.getDateFormatByDifferences(dateDifferences);\r\n return resultFormat\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.grouping.core.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.createOffsetFilter = createOffsetFilter;\r\nexports.GroupingHelper = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _utils = _interopRequireDefault(require(\"../../data/utils\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction createOffsetFilter(path, storeLoadOptions) {\r\n var groups = _utils.default.normalizeSortingInfo(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 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 {\r\n 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 }\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(_uiData_grid.default.combineFilters(filterElement))\r\n }\r\n filter = _uiData_grid.default.combineFilters(filter, \"or\");\r\n return _uiData_grid.default.combineFilters([filter, storeLoadOptions.filter])\r\n}\r\nvar GroupingHelper = _class.default.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 var cleanGroupsInfo = 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 };\r\n var calculateItemsCount = 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 };\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 itemsCount() {\r\n var dataSourceAdapter = this._dataSource;\r\n var dataSource = dataSourceAdapter._dataSource;\r\n var groupCount = _uiData_grid.default.normalizeSortingInfo(dataSource.group() || []).length;\r\n var itemsCount = calculateItemsCount(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\r\n 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 && _deferred.when.apply(_renderer.default, callbackResults).always(function() {\r\n that._updateGroupInfoOffsets(groupsInfo, currentParents)\r\n })\r\n }\r\n return foreachGroupsCore(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 that = this;\r\n var groupInfo;\r\n var groupsInfo = that._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 that = this;\r\n var groupInfo;\r\n var path = groupInfoData.path;\r\n var groupsInfo = that._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 that._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 that = this;\r\n var storeLoadOptions = options.storeLoadOptions;\r\n var groups = _utils.default.normalizeSortingInfo(storeLoadOptions.group || []);\r\n var oldGroups = \"_group\" in that ? _utils.default.normalizeSortingInfo(that._group || []) : groups;\r\n var groupsCount = Math.min(oldGroups.length, groups.length);\r\n that._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 that.reset()\r\n } else {\r\n cleanGroupsInfo(that._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\nexports.GroupingHelper = GroupingHelper;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.context_menu.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _element = require(\"../../core/element\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _context_menu = _interopRequireDefault(require(\"../context_menu\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar CONTEXT_MENU = \"dx-context-menu\";\r\nvar viewName = {\r\n columnHeadersView: \"header\",\r\n rowsView: \"content\",\r\n footerView: \"footer\",\r\n headerPanel: \"headerPanel\"\r\n};\r\nvar VIEW_NAMES = [\"columnHeadersView\", \"rowsView\", \"footerView\", \"headerPanel\"];\r\nvar ContextMenuController = _uiGrid_core.default.ViewController.inherit({\r\n init: function() {\r\n this.createAction(\"onContextMenuPreparing\")\r\n },\r\n getContextMenuItems: function(dxEvent) {\r\n if (!dxEvent) {\r\n return false\r\n }\r\n var that = this;\r\n var $targetElement = (0, _renderer.default)(dxEvent.target);\r\n var $element;\r\n var $targetRowElement;\r\n var $targetCellElement;\r\n var menuItems;\r\n (0, _iterator.each)(VIEW_NAMES, function() {\r\n var view = that.getView(this);\r\n $element = view && view.element();\r\n if ($element && ($element.is($targetElement) || $element.find($targetElement).length)) {\r\n $targetCellElement = $targetElement.closest(\".dx-row > td, .dx-row > tr\");\r\n $targetRowElement = $targetCellElement.parent();\r\n var rowIndex = view.getRowIndex($targetRowElement);\r\n var columnIndex = $targetCellElement[0] && $targetCellElement[0].cellIndex;\r\n var rowOptions = $targetRowElement.data(\"options\");\r\n var options = {\r\n event: dxEvent,\r\n targetElement: (0, _element.getPublicElement)($targetElement),\r\n target: viewName[this],\r\n rowIndex: rowIndex,\r\n row: view._getRows()[rowIndex],\r\n columnIndex: columnIndex,\r\n column: rowOptions && rowOptions.cells[columnIndex].column\r\n };\r\n options.items = view.getContextMenuItems && view.getContextMenuItems(options);\r\n that.executeAction(\"onContextMenuPreparing\", options);\r\n that._contextMenuPrepared(options);\r\n menuItems = options.items;\r\n if (menuItems) {\r\n return false\r\n }\r\n }\r\n });\r\n return menuItems\r\n },\r\n _contextMenuPrepared: _common.noop\r\n});\r\nvar ContextMenuView = _uiGrid_core.default.View.inherit({\r\n _renderCore: function() {\r\n var that = this;\r\n var $element = that.element().addClass(CONTEXT_MENU);\r\n this.setAria(\"role\", \"presentation\", $element);\r\n this._createComponent($element, _context_menu.default, {\r\n onPositioning: function(actionArgs) {\r\n var event = actionArgs.event;\r\n var contextMenuInstance = actionArgs.component;\r\n var items = that.getController(\"contextMenu\").getContextMenuItems(event);\r\n if (items) {\r\n contextMenuInstance.option(\"items\", items);\r\n event.stopPropagation()\r\n } else {\r\n actionArgs.cancel = true\r\n }\r\n },\r\n onItemClick: function(params) {\r\n params.itemData.onItemClick && params.itemData.onItemClick(params)\r\n },\r\n cssClass: that.getWidgetContainerClass(),\r\n target: that.component.$element()\r\n })\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n onContextMenuPreparing: null\r\n }\r\n },\r\n controllers: {\r\n contextMenu: ContextMenuController\r\n },\r\n views: {\r\n contextMenuView: ContextMenuView\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.base\"));\r\nrequire(\"./ui.data_grid.state_storing\");\r\nrequire(\"./ui.data_grid.selection\");\r\nrequire(\"./ui.data_grid.column_chooser\");\r\nrequire(\"./ui.data_grid.grouping\");\r\nrequire(\"./ui.data_grid.master_detail\");\r\nrequire(\"./ui.data_grid.editing\");\r\nrequire(\"./ui.data_grid.validating\");\r\nrequire(\"./ui.data_grid.virtual_scrolling\");\r\nrequire(\"./ui.data_grid.filter_row\");\r\nrequire(\"./ui.data_grid.header_filter\");\r\nrequire(\"./ui.data_grid.filter_sync\");\r\nrequire(\"./ui.data_grid.filter_builder\");\r\nrequire(\"./ui.data_grid.filter_panel\");\r\nrequire(\"./ui.data_grid.search\");\r\nrequire(\"./ui.data_grid.pager\");\r\nrequire(\"./ui.data_grid.columns_resizing_reordering\");\r\nrequire(\"./ui.data_grid.keyboard_navigation\");\r\nrequire(\"./ui.data_grid.summary\");\r\nrequire(\"./ui.data_grid.column_fixing\");\r\nrequire(\"./ui.data_grid.adaptivity\");\r\nrequire(\"./ui.data_grid.virtual_columns\");\r\nrequire(\"./ui.data_grid.export\");\r\nrequire(\"./ui.data_grid.focus\");\r\nrequire(\"./ui.data_grid.row_dragging\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _uiData_grid.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/excel/excel.file.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _excel = _interopRequireDefault(require(\"./excel.tag_helper\"));\r\nvar _excel2 = _interopRequireDefault(require(\"./excel.cell_format_helper\"));\r\nvar _excel3 = _interopRequireDefault(require(\"./excel.fill_helper\"));\r\nvar _excel4 = _interopRequireDefault(require(\"./excel.font_helper\"));\r\nvar _excel5 = _interopRequireDefault(require(\"./excel.number_format_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n if (!(instance instanceof Constructor)) {\r\n throw new TypeError(\"Cannot call a class as a function\")\r\n }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n return Constructor\r\n}\r\nvar ExcelFile = function() {\r\n function ExcelFile() {\r\n _classCallCheck(this, ExcelFile);\r\n this._cellFormatTags = [];\r\n this._fillTags = [];\r\n this._fontTags = [];\r\n this._numberFormatTags = [];\r\n this._fillTags.push(_excel3.default.tryCreateTag({\r\n patternFill: {\r\n patternType: \"none\"\r\n }\r\n }))\r\n }\r\n _createClass(ExcelFile, [{\r\n key: \"registerCellFormat\",\r\n value: function(cellFormat) {\r\n var result;\r\n var cellFormatTag = _excel2.default.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 ((0, _type.isDefined)(cellFormatTag)) {\r\n for (var i = 0; i < this._cellFormatTags.length; i++) {\r\n if (_excel2.default.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 }, {\r\n key: \"generateCellFormatsXml\",\r\n value: function() {\r\n var cellFormatTagsAsXmlStringsArray = this._cellFormatTags.map(function(tag) {\r\n return _excel2.default.toXml(tag)\r\n });\r\n return _excel.default.toXml(\"cellXfs\", {\r\n count: cellFormatTagsAsXmlStringsArray.length\r\n }, cellFormatTagsAsXmlStringsArray.join(\"\"))\r\n }\r\n }, {\r\n key: \"registerFill\",\r\n value: function(fill) {\r\n var result;\r\n var fillTag = _excel3.default.tryCreateTag(fill);\r\n if ((0, _type.isDefined)(fillTag)) {\r\n for (var i = 0; i < this._fillTags.length; i++) {\r\n if (_excel3.default.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(_excel3.default.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 }, {\r\n key: \"generateFillsXml\",\r\n value: function() {\r\n var tagsAsXmlStringsArray = this._fillTags.map(function(tag) {\r\n return _excel3.default.toXml(tag)\r\n });\r\n return _excel.default.toXml(\"fills\", {\r\n count: tagsAsXmlStringsArray.length\r\n }, tagsAsXmlStringsArray.join(\"\"))\r\n }\r\n }, {\r\n key: \"registerFont\",\r\n value: function(font) {\r\n var result;\r\n var fontTag = _excel4.default.tryCreateTag(font);\r\n if ((0, _type.isDefined)(fontTag)) {\r\n for (var i = 0; i < this._fontTags.length; i++) {\r\n if (_excel4.default.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 }, {\r\n key: \"generateFontsXml\",\r\n value: function() {\r\n var xmlStringsArray = this._fontTags.map(function(tag) {\r\n return _excel4.default.toXml(tag)\r\n });\r\n return _excel.default.toXml(\"fonts\", {\r\n count: xmlStringsArray.length\r\n }, xmlStringsArray.join(\"\"))\r\n }\r\n }, {\r\n key: \"_convertNumberFormatIndexToId\",\r\n value: function(index) {\r\n var CUSTOM_FORMAT_ID_START_VALUE = 165;\r\n return CUSTOM_FORMAT_ID_START_VALUE + index\r\n }\r\n }, {\r\n key: \"registerNumberFormat\",\r\n value: function(numberFormat) {\r\n var result;\r\n var tag = _excel5.default.tryCreateTag(numberFormat);\r\n if ((0, _type.isDefined)(tag)) {\r\n for (var i = 0; i < this._numberFormatTags.length; i++) {\r\n if (_excel5.default.areEqual(this._numberFormatTags[i], tag)) {\r\n result = this._numberFormatTags[i][_excel5.default.ID_PROPERTY_NAME];\r\n break\r\n }\r\n }\r\n if (void 0 === result) {\r\n tag[_excel5.default.ID_PROPERTY_NAME] = this._convertNumberFormatIndexToId(this._numberFormatTags.length);\r\n result = tag[_excel5.default.ID_PROPERTY_NAME];\r\n this._numberFormatTags.push(tag)\r\n }\r\n }\r\n return result\r\n }\r\n }, {\r\n key: \"generateNumberFormatsXml\",\r\n value: function() {\r\n if (this._numberFormatTags.length > 0) {\r\n var xmlStringsArray = this._numberFormatTags.map(function(tag) {\r\n return _excel5.default.toXml(tag)\r\n });\r\n return _excel.default.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 key: \"copyCellFormat\",\r\n value: function(source) {\r\n return _excel2.default.copy(source)\r\n }\r\n }]);\r\n return ExcelFile\r\n}();\r\nexports.default = ExcelFile;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.editor_factory.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position2 = require(\"../../core/utils/position\");\r\nvar _ui = _interopRequireDefault(require(\"../shared/ui.editor_factory_mixin\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar EDITOR_INLINE_BLOCK = \"dx-editor-inline-block\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar FOCUS_OVERLAY_CLASS = \"focus-overlay\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar FOCUSED_ELEMENT_CLASS = \"dx-focused\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar MODULE_NAMESPACE = \"dxDataGridEditorFactory\";\r\nvar UPDATE_FOCUS_EVENTS = (0, _index.addNamespace)([_pointer.default.down, \"focusin\", _click.name].join(\" \"), MODULE_NAMESPACE);\r\nvar DX_HIDDEN = \"dx-hidden\";\r\nvar EditorFactory = _uiGrid_core.default.ViewController.inherit({\r\n _getFocusedElement: function($dataGridElement) {\r\n var rowSelector = this.option(\"focusedRowEnabled\") ? \"tr[tabindex]:focus\" : \"tr[tabindex]:not(.dx-data-row):focus\";\r\n var focusedElementSelector = \"td[tabindex]:focus, \".concat(rowSelector, \", input:focus, textarea:focus, .dx-lookup-field:focus, .dx-checkbox:focus, .dx-switch:focus, .dx-dropdownbutton:focus\");\r\n return $dataGridElement.find(focusedElementSelector)\r\n },\r\n _getFocusCellSelector: function() {\r\n return \".dx-row > td\"\r\n },\r\n _updateFocusCore: function() {\r\n var $focus = this._$focusedElement;\r\n var $dataGridElement = this.component && this.component.$element();\r\n var $focusCell;\r\n var hideBorders;\r\n if ($dataGridElement) {\r\n $focus = this._getFocusedElement($dataGridElement);\r\n if ($focus.length) {\r\n if (!$focus.hasClass(CELL_FOCUS_DISABLED_CLASS) && !$focus.hasClass(ROW_CLASS)) {\r\n $focusCell = $focus.closest(this._getFocusCellSelector() + \", .\" + CELL_FOCUS_DISABLED_CLASS);\r\n hideBorders = $focusCell.get(0) !== $focus.get(0) && $focusCell.hasClass(EDITOR_INLINE_BLOCK);\r\n $focus = $focusCell\r\n }\r\n if ($focus.length && !$focus.hasClass(CELL_FOCUS_DISABLED_CLASS)) {\r\n this.focus($focus, hideBorders);\r\n return\r\n }\r\n }\r\n }\r\n this.loseFocus()\r\n },\r\n _updateFocus: function(e) {\r\n var that = this;\r\n var isFocusOverlay = e && e.event && (0, _renderer.default)(e.event.target).hasClass(that.addWidgetPrefix(FOCUS_OVERLAY_CLASS));\r\n that._isFocusOverlay = that._isFocusOverlay || isFocusOverlay;\r\n clearTimeout(that._updateFocusTimeoutID);\r\n that._updateFocusTimeoutID = setTimeout(function() {\r\n delete that._updateFocusTimeoutID;\r\n if (!that._isFocusOverlay) {\r\n that._updateFocusCore()\r\n }\r\n that._isFocusOverlay = false\r\n })\r\n },\r\n _updateFocusOverlaySize: function($element, position) {\r\n $element.hide();\r\n var location = _position.default.calculate($element, (0, _extend.extend)({\r\n collision: \"fit\"\r\n }, position));\r\n if (location.h.oversize > 0) {\r\n $element.outerWidth($element.outerWidth() - location.h.oversize)\r\n }\r\n if (location.v.oversize > 0) {\r\n $element.outerHeight($element.outerHeight() - location.v.oversize)\r\n }\r\n $element.show()\r\n },\r\n callbackNames: function() {\r\n return [\"focused\"]\r\n },\r\n focus: function($element, hideBorder) {\r\n var that = this;\r\n if (void 0 === $element) {\r\n return that._$focusedElement\r\n } else {\r\n if ($element) {\r\n if (!$element.is(that._$focusedElement)) {\r\n that._$focusedElement && that._$focusedElement.removeClass(FOCUSED_ELEMENT_CLASS)\r\n }\r\n that._$focusedElement = $element;\r\n clearTimeout(that._focusTimeoutID);\r\n that._focusTimeoutID = setTimeout(function() {\r\n delete that._focusTimeoutID;\r\n that.renderFocusOverlay($element, hideBorder);\r\n $element.addClass(FOCUSED_ELEMENT_CLASS);\r\n that.focused.fire($element)\r\n })\r\n }\r\n }\r\n },\r\n refocus: function() {\r\n var $focus = this.focus();\r\n this.focus($focus)\r\n },\r\n renderFocusOverlay: function($element, hideBorder) {\r\n var that = this;\r\n if (!_uiGrid_core2.default.isElementInCurrentGrid(this, $element)) {\r\n return\r\n }\r\n if (!that._$focusOverlay) {\r\n that._$focusOverlay = (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(FOCUS_OVERLAY_CLASS))\r\n }\r\n if (hideBorder) {\r\n that._$focusOverlay.addClass(DX_HIDDEN)\r\n } else {\r\n if ($element.length) {\r\n var align = _browser.default.msie ? \"left bottom\" : _browser.default.mozilla ? \"right bottom\" : \"left top\";\r\n var $content = $element.closest(\".\" + that.addWidgetPrefix(CONTENT_CLASS));\r\n var elemCoord = (0, _position2.getBoundingRect)($element.get(0));\r\n that._$focusOverlay.removeClass(DX_HIDDEN).appendTo($content).outerWidth(elemCoord.right - elemCoord.left + 1).outerHeight(elemCoord.bottom - elemCoord.top + 1);\r\n var focusOverlayPosition = {\r\n precise: true,\r\n my: align,\r\n at: align,\r\n of: $element,\r\n boundary: $content.length && $content\r\n };\r\n that._updateFocusOverlaySize(that._$focusOverlay, focusOverlayPosition);\r\n _position.default.setup(that._$focusOverlay, focusOverlayPosition);\r\n that._$focusOverlay.css(\"visibility\", \"visible\")\r\n }\r\n }\r\n },\r\n resize: function() {\r\n var $focusedElement = this._$focusedElement;\r\n if ($focusedElement) {\r\n this.focus($focusedElement)\r\n }\r\n },\r\n loseFocus: function() {\r\n this._$focusedElement && this._$focusedElement.removeClass(FOCUSED_ELEMENT_CLASS);\r\n this._$focusedElement = null;\r\n this._$focusOverlay && this._$focusOverlay.addClass(DX_HIDDEN)\r\n },\r\n init: function() {\r\n this.createAction(\"onEditorPreparing\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\"\r\n });\r\n this.createAction(\"onEditorPrepared\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\"\r\n });\r\n this._updateFocusHandler = this._updateFocusHandler || this.createAction(this._updateFocus.bind(this));\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), UPDATE_FOCUS_EVENTS, this._updateFocusHandler);\r\n this._attachContainerEventHandlers()\r\n },\r\n _attachContainerEventHandlers: function() {\r\n var that = this;\r\n var $container = that.component && that.component.$element();\r\n if ($container) {\r\n _events_engine.default.on($container, (0, _index.addNamespace)(\"keydown\", MODULE_NAMESPACE), function(e) {\r\n if (\"tab\" === (0, _index.normalizeKeyName)(e)) {\r\n that._updateFocusHandler(e)\r\n }\r\n })\r\n }\r\n },\r\n dispose: function() {\r\n clearTimeout(this._focusTimeoutID);\r\n clearTimeout(this._updateFocusTimeoutID);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), UPDATE_FOCUS_EVENTS, this._updateFocusHandler)\r\n }\r\n}).include(_ui.default);\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {}\r\n },\r\n controllers: {\r\n editorFactory: EditorFactory\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/svg.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getSvgMarkup = getSvgMarkup;\r\nexports.getSvgElement = getSvgElement;\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _window = require(\"./window\");\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar window = (0, _window.getWindow)();\r\n\r\nfunction getMarkup(element, backgroundColor) {\r\n var temp = _dom_adapter.default.createElement(\"div\");\r\n var clone = element.cloneNode(true);\r\n if (backgroundColor) {\r\n (0, _renderer.default)(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 (markup.indexOf(\"xmlns:xlink\") === -1) {\r\n markup = markup.replace(\" 0) {\r\n this._updateLockCount--;\r\n if (!this._updateLockCount) {\r\n this._endUpdateCore()\r\n }\r\n }\r\n },\r\n option: function(name) {\r\n var component = this.component;\r\n var optionCache = component._optionCache;\r\n if (1 === arguments.length && optionCache) {\r\n if (!(name in optionCache)) {\r\n optionCache[name] = component.option(name)\r\n }\r\n return optionCache[name]\r\n }\r\n return component.option.apply(component, arguments)\r\n },\r\n _silentOption: function(name, value) {\r\n var component = this.component;\r\n var optionCache = component._optionCache;\r\n if (optionCache) {\r\n optionCache[name] = value\r\n }\r\n return component._setOptionWithoutOptionChange(name, value)\r\n },\r\n localize: function(name) {\r\n var optionCache = this.component._optionCache;\r\n if (optionCache) {\r\n if (!(name in optionCache)) {\r\n optionCache[name] = _message.default.format(name)\r\n }\r\n return optionCache[name]\r\n }\r\n return _message.default.format(name)\r\n },\r\n on: function() {\r\n return this.component.on.apply(this.component, arguments)\r\n },\r\n off: function() {\r\n return this.component.off.apply(this.component, arguments)\r\n },\r\n optionChanged: function(args) {\r\n if (args.name in this._actions) {\r\n this.createAction(args.name, this._actionConfigs[args.name]);\r\n args.handled = true\r\n }\r\n },\r\n getAction: function(actionName) {\r\n return this._actions[actionName]\r\n },\r\n setAria: function(name, value, $target) {\r\n var target = $target.get(0);\r\n var prefix = \"role\" !== name && \"id\" !== name ? \"aria-\" : \"\";\r\n if (target.setAttribute) {\r\n target.setAttribute(prefix + name, value)\r\n } else {\r\n $target.attr(prefix + name, value)\r\n }\r\n },\r\n _createComponent: function() {\r\n return this.component._createComponent.apply(this.component, arguments)\r\n },\r\n getController: function(name) {\r\n return this.component._controllers[name]\r\n },\r\n createAction: function(actionName, config) {\r\n if ((0, _type.isFunction)(actionName)) {\r\n var action = this.component._createAction(actionName.bind(this), config);\r\n return function(e) {\r\n action({\r\n event: e\r\n })\r\n }\r\n } else {\r\n this._actions[actionName] = this.component._createActionByOption(actionName, config);\r\n this._actionConfigs[actionName] = config\r\n }\r\n },\r\n executeAction: function(actionName, options) {\r\n var action = this._actions[actionName];\r\n return action && action(options)\r\n },\r\n dispose: function() {\r\n var that = this;\r\n (0, _iterator.each)(that.callbackNames() || [], function() {\r\n that[this].empty()\r\n })\r\n },\r\n addWidgetPrefix: function(className) {\r\n var componentName = this.component.NAME;\r\n return \"dx-\" + componentName.slice(2).toLowerCase() + (className ? \"-\" + className : \"\")\r\n },\r\n getWidgetContainerClass: function() {\r\n var containerName = this.component.NAME === WIDGET_WITH_LEGACY_CONTAINER_NAME ? null : \"container\";\r\n return this.addWidgetPrefix(containerName)\r\n }\r\n});\r\nvar Controller = ModuleItem;\r\nvar ViewController = Controller.inherit({\r\n getView: function(name) {\r\n return this.component._views[name]\r\n },\r\n getViews: function() {\r\n return this.component._views\r\n }\r\n});\r\nvar View = ModuleItem.inherit({\r\n _isReady: function() {\r\n return this.component.isReady()\r\n },\r\n _endUpdateCore: function() {\r\n this.callBase();\r\n if (!this._isReady() && this._requireReady) {\r\n this._requireRender = false;\r\n this.component._requireResize = false\r\n }\r\n if (this._requireRender) {\r\n this._requireRender = false;\r\n this.render(this._$parent)\r\n }\r\n },\r\n _invalidate: function(requireResize, requireReady) {\r\n this._requireRender = true;\r\n this.component._requireResize = (0, _window.hasWindow)() && (this.component._requireResize || requireResize);\r\n this._requireReady = this._requireReady || requireReady\r\n },\r\n _renderCore: function() {},\r\n _resizeCore: function() {},\r\n _afterRender: function() {},\r\n _parentElement: function() {\r\n return this._$parent\r\n },\r\n ctor: function(component) {\r\n this.callBase(component);\r\n this.renderCompleted = (0, _callbacks.default)();\r\n this.resizeCompleted = (0, _callbacks.default)()\r\n },\r\n element: function() {\r\n return this._$element\r\n },\r\n getElementHeight: function() {\r\n var $element = this.element();\r\n if (!$element) {\r\n return 0\r\n }\r\n var marginTop = parseFloat($element.css(\"marginTop\")) || 0;\r\n var marginBottom = parseFloat($element.css(\"marginBottom\")) || 0;\r\n var offsetHeight = $element.get(0).offsetHeight;\r\n return offsetHeight + marginTop + marginBottom\r\n },\r\n isVisible: function() {\r\n return true\r\n },\r\n getTemplate: function(name) {\r\n return this.component._getTemplate(name)\r\n },\r\n render: function($parent, options) {\r\n var $element = this._$element;\r\n var isVisible = this.isVisible();\r\n if (!$element && !$parent) {\r\n return\r\n }\r\n this._requireReady = false;\r\n if (!$element) {\r\n $element = this._$element = (0, _renderer.default)(\"
\").appendTo($parent);\r\n this._$parent = $parent\r\n }\r\n $element.toggleClass(\"dx-hidden\", !isVisible);\r\n if (isVisible) {\r\n this.component._optionCache = {};\r\n this._renderCore(options);\r\n this.component._optionCache = void 0;\r\n this._afterRender($parent);\r\n this.renderCompleted.fire(options)\r\n }\r\n },\r\n resize: function() {\r\n this.isResizing = true;\r\n this._resizeCore();\r\n this.resizeCompleted.fire();\r\n this.isResizing = false\r\n },\r\n focus: function() {\r\n _events_engine.default.trigger(this.element(), \"focus\")\r\n }\r\n});\r\nvar MODULES_ORDER_MAX_INDEX = 1e6;\r\nvar processModules = function(that, componentClass) {\r\n var modules = componentClass.modules;\r\n var modulesOrder = componentClass.modulesOrder;\r\n var controllerTypes = componentClass.controllerTypes || {};\r\n var viewTypes = componentClass.viewTypes || {};\r\n if (!componentClass.controllerTypes) {\r\n if (modulesOrder) {\r\n modules.sort(function(module1, module2) {\r\n var orderIndex1 = (0, _array.inArray)(module1.name, modulesOrder);\r\n var orderIndex2 = (0, _array.inArray)(module2.name, modulesOrder);\r\n if (orderIndex1 < 0) {\r\n orderIndex1 = MODULES_ORDER_MAX_INDEX\r\n }\r\n if (orderIndex2 < 0) {\r\n orderIndex2 = MODULES_ORDER_MAX_INDEX\r\n }\r\n return orderIndex1 - orderIndex2\r\n })\r\n }(0, _iterator.each)(modules, function() {\r\n var controllers = this.controllers;\r\n var moduleName = this.name;\r\n var views = this.views;\r\n controllers && (0, _iterator.each)(controllers, function(name, type) {\r\n if (controllerTypes[name]) {\r\n throw _ui.default.Error(\"E1001\", moduleName, name)\r\n } else {\r\n if (!(type && type.subclassOf && type.subclassOf(Controller))) {\r\n type.subclassOf(Controller);\r\n throw _ui.default.Error(\"E1002\", moduleName, name)\r\n }\r\n }\r\n controllerTypes[name] = type\r\n });\r\n views && (0, _iterator.each)(views, function(name, type) {\r\n if (viewTypes[name]) {\r\n throw _ui.default.Error(\"E1003\", moduleName, name)\r\n } else {\r\n if (!(type && type.subclassOf && type.subclassOf(View))) {\r\n throw _ui.default.Error(\"E1004\", moduleName, name)\r\n }\r\n }\r\n viewTypes[name] = type\r\n })\r\n });\r\n (0, _iterator.each)(modules, function() {\r\n var extenders = this.extenders;\r\n if (extenders) {\r\n extenders.controllers && (0, _iterator.each)(extenders.controllers, function(name, extender) {\r\n if (controllerTypes[name]) {\r\n controllerTypes[name] = controllerTypes[name].inherit(extender)\r\n }\r\n });\r\n extenders.views && (0, _iterator.each)(extenders.views, function(name, extender) {\r\n if (viewTypes[name]) {\r\n viewTypes[name] = viewTypes[name].inherit(extender)\r\n }\r\n })\r\n }\r\n });\r\n componentClass.controllerTypes = controllerTypes;\r\n componentClass.viewTypes = viewTypes\r\n }\r\n var registerPublicMethods = function(that, name, moduleItem) {\r\n var publicMethods = moduleItem.publicMethods();\r\n if (publicMethods) {\r\n (0, _iterator.each)(publicMethods, function(index, methodName) {\r\n if (moduleItem[methodName]) {\r\n if (!that[methodName]) {\r\n that[methodName] = function() {\r\n return moduleItem[methodName].apply(moduleItem, arguments)\r\n }\r\n } else {\r\n throw _ui.default.Error(\"E1005\", methodName)\r\n }\r\n } else {\r\n throw _ui.default.Error(\"E1006\", name, methodName)\r\n }\r\n })\r\n }\r\n };\r\n var createModuleItems = function(moduleTypes) {\r\n var moduleItems = {};\r\n (0, _iterator.each)(moduleTypes, function(name, moduleType) {\r\n var moduleItem = new moduleType(that);\r\n moduleItem.name = name;\r\n registerPublicMethods(that, name, moduleItem);\r\n moduleItems[name] = moduleItem\r\n });\r\n return moduleItems\r\n };\r\n that._controllers = createModuleItems(controllerTypes);\r\n that._views = createModuleItems(viewTypes)\r\n};\r\nvar callModuleItemsMethod = function(that, methodName, args) {\r\n args = args || [];\r\n if (that._controllers) {\r\n (0, _iterator.each)(that._controllers, function() {\r\n this[methodName] && this[methodName].apply(this, args)\r\n })\r\n }\r\n if (that._views) {\r\n (0, _iterator.each)(that._views, function() {\r\n this[methodName] && this[methodName].apply(this, args)\r\n })\r\n }\r\n};\r\nvar _default = {\r\n modules: [],\r\n View: View,\r\n ViewController: ViewController,\r\n Controller: Controller,\r\n registerModule: function(name, module) {\r\n var modules = this.modules;\r\n for (var i = 0; i < modules.length; i++) {\r\n if (modules[i].name === name) {\r\n return\r\n }\r\n }\r\n module.name = name;\r\n modules.push(module);\r\n delete this.controllerTypes;\r\n delete this.viewTypes\r\n },\r\n registerModulesOrder: function(moduleNames) {\r\n this.modulesOrder = moduleNames\r\n },\r\n unregisterModule: function(name) {\r\n this.modules = (0, _common.grep)(this.modules, function(module) {\r\n return module.name !== name\r\n });\r\n delete this.controllerTypes;\r\n delete this.viewTypes\r\n },\r\n processModules: processModules,\r\n callModuleItemsMethod: callModuleItemsMethod\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./data_grid/ui.data_grid\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.columns_view.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.ColumnsView = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _element_data = require(\"../../core/element_data\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _double_click = require(\"../../events/double_click\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _style = require(\"../../core/utils/style\");\r\nvar _element = require(\"../../core/element\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar iteratorUtils = _interopRequireWildcard(require(\"../../core/utils/iterator\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _uiGrid_core3 = _interopRequireDefault(require(\"./ui.grid_core.column_state_mixin\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SCROLL_CONTAINER_CLASS = \"scroll-container\";\r\nvar GROUP_SPACE_CLASS = \"group-space\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar TABLE_CLASS = \"table\";\r\nvar TABLE_FIXED_CLASS = \"table-fixed\";\r\nvar CONTENT_FIXED_CLASS = \"content-fixed\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar DETAIL_ROW_CLASS = \"dx-master-detail-row\";\r\nvar FILTER_ROW_CLASS = \"filter-row\";\r\nvar CELL_UPDATED_ANIMATION_CLASS = \"cell-updated-animation\";\r\nvar HIDDEN_COLUMNS_WIDTH = \"0.0001px\";\r\nvar CELL_HINT_VISIBLE = \"dxCellHintVisible\";\r\nvar FORM_FIELD_ITEM_CONTENT_CLASS = \"dx-field-item-content\";\r\nvar appendElementTemplate = {\r\n render: function(options) {\r\n options.container.append(options.content)\r\n }\r\n};\r\nvar subscribeToRowEvents = function(that, $table) {\r\n var touchTarget;\r\n var touchCurrentTarget;\r\n var timeoutId;\r\n\r\n function clearTouchTargets(timeout) {\r\n return setTimeout(function() {\r\n touchTarget = touchCurrentTarget = null\r\n }, timeout)\r\n }\r\n _events_engine.default.on($table, \"touchstart touchend\", \".dx-row\", function(e) {\r\n clearTimeout(timeoutId);\r\n if (\"touchstart\" === e.type) {\r\n touchTarget = e.target;\r\n touchCurrentTarget = e.currentTarget;\r\n timeoutId = clearTouchTargets(1e3)\r\n } else {\r\n timeoutId = clearTouchTargets()\r\n }\r\n });\r\n _events_engine.default.on($table, [_click.name, _double_click.name, _pointer.default.down].join(\" \"), \".dx-row\", {\r\n useNative: that._isNativeClick()\r\n }, that.createAction(function(e) {\r\n var event = e.event;\r\n if (touchTarget) {\r\n event.target = touchTarget;\r\n event.currentTarget = touchCurrentTarget\r\n }\r\n if (!(0, _renderer.default)(event.target).closest(\"a\").length) {\r\n e.rowIndex = that.getRowIndex(event.currentTarget);\r\n if (e.rowIndex >= 0) {\r\n e.rowElement = (0, _element.getPublicElement)((0, _renderer.default)(event.currentTarget));\r\n e.columns = that.getColumns();\r\n if (event.type === _pointer.default.down) {\r\n that._rowPointerDown(e)\r\n } else {\r\n if (event.type === _click.name) {\r\n that._rowClick(e)\r\n } else {\r\n that._rowDblClick(e)\r\n }\r\n }\r\n }\r\n }\r\n }))\r\n};\r\nvar getWidthStyle = function(width) {\r\n if (\"auto\" === width) {\r\n return \"\"\r\n }\r\n return (0, _type.isNumeric)(width) ? width + \"px\" : width\r\n};\r\nvar setCellWidth = function(cell, column, width) {\r\n cell.style.width = cell.style.maxWidth = \"auto\" === column.width ? \"\" : width\r\n};\r\nvar copyAttributes = function(element, newElement) {\r\n if (!element || !newElement) {\r\n return\r\n }\r\n var oldAttributes = element.attributes;\r\n var newAttributes = newElement.attributes;\r\n var i;\r\n for (i = 0; i < oldAttributes.length; i++) {\r\n var name = oldAttributes[i].nodeName;\r\n if (!newElement.hasAttribute(name)) {\r\n element.removeAttribute(name)\r\n }\r\n }\r\n for (i = 0; i < newAttributes.length; i++) {\r\n element.setAttribute(newAttributes[i].nodeName, newAttributes[i].nodeValue)\r\n }\r\n};\r\nvar ColumnsView = _uiGrid_core.default.View.inherit(_uiGrid_core3.default).inherit({\r\n _createScrollableOptions: function() {\r\n var that = this;\r\n var scrollingOptions = that.option(\"scrolling\");\r\n var useNativeScrolling = that.option(\"scrolling.useNative\");\r\n var options = (0, _extend.extend)({\r\n pushBackValue: 0\r\n }, scrollingOptions, {\r\n direction: \"both\",\r\n bounceEnabled: false,\r\n useKeyboard: false\r\n });\r\n if (void 0 === useNativeScrolling) {\r\n useNativeScrolling = true\r\n }\r\n if (\"auto\" === useNativeScrolling) {\r\n delete options.useNative;\r\n delete options.useSimulatedScrollbar\r\n } else {\r\n options.useNative = !!useNativeScrolling;\r\n options.useSimulatedScrollbar = !useNativeScrolling\r\n }\r\n return options\r\n },\r\n _updateCell: function($cell, parameters) {\r\n if (parameters.rowType) {\r\n this._cellPrepared($cell, parameters)\r\n }\r\n },\r\n _createCell: function(options) {\r\n var column = options.column;\r\n var alignment = column.alignment || (0, _position.getDefaultAlignment)(this.option(\"rtlEnabled\"));\r\n var cell = _dom_adapter.default.createElement(\"td\");\r\n cell.style.textAlign = alignment;\r\n var $cell = (0, _renderer.default)(cell);\r\n if (\"data\" === options.rowType && column.headerId && !column.type) {\r\n if (this.component.option(\"showColumnHeaders\")) {\r\n this.setAria(\"describedby\", column.headerId, $cell)\r\n }\r\n }\r\n if (column.cssClass) {\r\n $cell.addClass(column.cssClass)\r\n }\r\n if (\"expand\" === column.command) {\r\n $cell.addClass(column.cssClass);\r\n $cell.addClass(this.addWidgetPrefix(GROUP_SPACE_CLASS))\r\n }\r\n if (column.colspan > 1) {\r\n $cell.attr(\"colSpan\", column.colspan)\r\n } else {\r\n if (!column.isBand && \"auto\" !== column.visibleWidth && !this.option(\"legacyRendering\") && this.option(\"columnAutoWidth\")) {\r\n if (column.width || column.minWidth) {\r\n cell.style.minWidth = getWidthStyle(column.minWidth || column.width)\r\n }\r\n if (column.width) {\r\n setCellWidth(cell, column, getWidthStyle(column.width))\r\n }\r\n }\r\n }\r\n return $cell\r\n },\r\n _createRow: function(rowObject) {\r\n var $element = (0, _renderer.default)(\"\").addClass(ROW_CLASS);\r\n this.setAria(\"role\", \"row\", $element);\r\n return $element\r\n },\r\n _isAltRow: function(row) {\r\n return row && row.dataIndex % 2 === 1\r\n },\r\n _createTable: function(columns, isAppend) {\r\n var that = this;\r\n var $table = (0, _renderer.default)(\"\").addClass(that.addWidgetPrefix(TABLE_CLASS)).addClass(that.addWidgetPrefix(TABLE_FIXED_CLASS));\r\n if (columns && !isAppend) {\r\n $table.append(that._createColGroup(columns));\r\n if (_browser.default.safari) {\r\n $table.append((0, _renderer.default)(\"\").append(\"\"))\r\n }\r\n that.setAria(\"role\", \"presentation\", $table)\r\n } else {\r\n that.setAria(\"hidden\", true, $table)\r\n }\r\n this.setAria(\"role\", \"presentation\", (0, _renderer.default)(\"\").appendTo($table));\r\n if (isAppend) {\r\n return $table\r\n }\r\n if (_browser.default.mozilla) {\r\n _events_engine.default.on($table, \"mousedown\", \"td\", function(e) {\r\n if (e.ctrlKey) {\r\n e.preventDefault()\r\n }\r\n })\r\n }\r\n if (that.option(\"cellHintEnabled\")) {\r\n _events_engine.default.on($table, \"mousemove\", \".dx-row > td\", this.createAction(function(args) {\r\n var e = args.event;\r\n var $element = (0, _renderer.default)(e.target);\r\n var $cell = (0, _renderer.default)(e.currentTarget);\r\n var $row = $cell.parent();\r\n var isDataRow = $row.hasClass(\"dx-data-row\");\r\n var isHeaderRow = $row.hasClass(\"dx-header-row\");\r\n var isGroupRow = $row.hasClass(GROUP_ROW_CLASS);\r\n var isMasterDetailRow = $row.hasClass(DETAIL_ROW_CLASS);\r\n var isFilterRow = $row.hasClass(that.addWidgetPrefix(FILTER_ROW_CLASS));\r\n var visibleColumns = that._columnsController.getVisibleColumns();\r\n var rowOptions = $row.data(\"options\");\r\n var columnIndex = $cell.index();\r\n var cellOptions = rowOptions && rowOptions.cells && rowOptions.cells[columnIndex];\r\n var column = cellOptions ? cellOptions.column : visibleColumns[columnIndex];\r\n var msieCorrection = _browser.default.msie ? 1 : 0;\r\n if (!isMasterDetailRow && !isFilterRow && (!isDataRow || isDataRow && column && !column.cellTemplate) && (!isHeaderRow || isHeaderRow && column && !column.headerCellTemplate) && (!isGroupRow || isGroupRow && column && (void 0 === column.groupIndex || !column.groupCellTemplate))) {\r\n if ($element.data(CELL_HINT_VISIBLE)) {\r\n $element.removeAttr(\"title\");\r\n $element.data(CELL_HINT_VISIBLE, false)\r\n }\r\n var difference = $element[0].scrollWidth - $element[0].clientWidth - msieCorrection;\r\n if (difference > 0 && !(0, _type.isDefined)($element.attr(\"title\"))) {\r\n $element.attr(\"title\", $element.text());\r\n $element.data(CELL_HINT_VISIBLE, true)\r\n }\r\n }\r\n }))\r\n }\r\n var getOptions = function(event) {\r\n var $cell = (0, _renderer.default)(event.currentTarget);\r\n var $fieldItemContent = (0, _renderer.default)(event.target).closest(\".\" + FORM_FIELD_ITEM_CONTENT_CLASS);\r\n var rowOptions = $cell.parent().data(\"options\");\r\n var options = rowOptions && rowOptions.cells && rowOptions.cells[$cell.index()];\r\n if (!$cell.closest(\"table\").is(event.delegateTarget)) {\r\n return\r\n }\r\n var resultOptions = (0, _extend.extend)({}, options, {\r\n cellElement: (0, _element.getPublicElement)($cell),\r\n event: event,\r\n eventType: event.type\r\n });\r\n if ($fieldItemContent.length) {\r\n var formItemOptions = $fieldItemContent.data(\"dx-form-item\");\r\n if (formItemOptions.column) {\r\n resultOptions.column = formItemOptions.column;\r\n resultOptions.columnIndex = that._columnsController.getVisibleIndex(resultOptions.column.index)\r\n }\r\n }\r\n return resultOptions\r\n };\r\n _events_engine.default.on($table, \"mouseover\", \".dx-row > td\", function(e) {\r\n var options = getOptions(e);\r\n options && that.executeAction(\"onCellHoverChanged\", options)\r\n });\r\n _events_engine.default.on($table, \"mouseout\", \".dx-row > td\", function(e) {\r\n var options = getOptions(e);\r\n options && that.executeAction(\"onCellHoverChanged\", options)\r\n });\r\n _events_engine.default.on($table, _click.name, \".dx-row > td\", function(e) {\r\n var options = getOptions(e);\r\n options && that.executeAction(\"onCellClick\", options)\r\n });\r\n _events_engine.default.on($table, _double_click.name, \".dx-row > td\", function(e) {\r\n var options = getOptions(e);\r\n options && that.executeAction(\"onCellDblClick\", options)\r\n });\r\n subscribeToRowEvents(that, $table);\r\n return $table\r\n },\r\n _isNativeClick: _common.noop,\r\n _rowPointerDown: _common.noop,\r\n _rowClick: _common.noop,\r\n _rowDblClick: _common.noop,\r\n _createColGroup: function(columns) {\r\n var colgroupElement = (0, _renderer.default)(\"\");\r\n for (var i = 0; i < columns.length; i++) {\r\n var colspan = columns[i].colspan || 1;\r\n for (var j = 0; j < colspan; j++) {\r\n colgroupElement.append(this._createCol(columns[i]))\r\n }\r\n }\r\n return colgroupElement\r\n },\r\n _createCol: function(column) {\r\n var width = column.visibleWidth || column.width;\r\n if (\"adaptiveHidden\" === width) {\r\n width = HIDDEN_COLUMNS_WIDTH\r\n }\r\n var col = (0, _renderer.default)(\"\");\r\n (0, _style.setWidth)(col, width);\r\n return col\r\n },\r\n renderDelayedTemplates: function() {\r\n var delayedTemplates = this._delayedTemplates;\r\n var syncTemplates = delayedTemplates.filter(function(template) {\r\n return !template.async\r\n });\r\n var asyncTemplates = delayedTemplates.filter(function(template) {\r\n return template.async\r\n });\r\n this._delayedTemplates = [];\r\n this._renderDelayedTemplatesCore(syncTemplates);\r\n this._renderDelayedTemplatesCoreAsync(asyncTemplates)\r\n },\r\n _renderDelayedTemplatesCoreAsync: function(templates) {\r\n var that = this;\r\n if (templates.length) {\r\n (0, _window.getWindow)().setTimeout(function() {\r\n that._renderDelayedTemplatesCore(templates, true)\r\n })\r\n }\r\n },\r\n _renderDelayedTemplatesCore: function(templates, isAsync) {\r\n var date = new Date;\r\n while (templates.length) {\r\n var templateParameters = templates.shift();\r\n var options = templateParameters.options;\r\n var doc = _dom_adapter.default.getDocument();\r\n if (!isAsync || (0, _renderer.default)(options.container).closest(doc).length) {\r\n templateParameters.template.render(options)\r\n }\r\n if (isAsync && new Date - date > 30) {\r\n this._renderDelayedTemplatesCoreAsync(templates);\r\n break\r\n }\r\n }\r\n if (!templates.length && this._delayedTemplates.length) {\r\n this.renderDelayedTemplates()\r\n }\r\n },\r\n _processTemplate: function(template) {\r\n var that = this;\r\n var renderingTemplate;\r\n if (template && template.render && !(0, _type.isRenderer)(template)) {\r\n renderingTemplate = {\r\n allowRenderToDetachedContainer: template.allowRenderToDetachedContainer,\r\n render: function(options) {\r\n template.render(options.container, options.model);\r\n options.deferred && options.deferred.resolve()\r\n }\r\n }\r\n } else {\r\n if ((0, _type.isFunction)(template)) {\r\n renderingTemplate = {\r\n render: function(options) {\r\n var renderedTemplate = template((0, _element.getPublicElement)(options.container), options.model);\r\n if (renderedTemplate && (renderedTemplate.nodeType || (0, _type.isRenderer)(renderedTemplate))) {\r\n options.container.append(renderedTemplate)\r\n }\r\n options.deferred && options.deferred.resolve()\r\n }\r\n }\r\n } else {\r\n var templateID = (0, _type.isString)(template) ? template : (0, _renderer.default)(template).attr(\"id\");\r\n if (!templateID) {\r\n renderingTemplate = that.getTemplate(template)\r\n } else {\r\n if (!that._templatesCache[templateID]) {\r\n that._templatesCache[templateID] = that.getTemplate(template)\r\n }\r\n renderingTemplate = that._templatesCache[templateID]\r\n }\r\n }\r\n }\r\n return renderingTemplate\r\n },\r\n renderTemplate: function(container, template, options, allowRenderToDetachedContainer) {\r\n var that = this;\r\n var renderingTemplate = that._processTemplate(template, options);\r\n var column = options.column;\r\n var isDataRow = \"data\" === options.rowType;\r\n var templateDeferred = new _deferred.Deferred;\r\n var templateOptions = {\r\n container: container,\r\n model: options,\r\n deferred: templateDeferred,\r\n onRendered: function() {\r\n templateDeferred.resolve()\r\n }\r\n };\r\n if (renderingTemplate) {\r\n options.component = that.component;\r\n var async = column && (column.renderAsync && isDataRow || that.option(\"renderAsync\") && (false !== column.renderAsync && (column.command || column.showEditorAlways) && isDataRow || \"filter\" === options.rowType));\r\n if ((renderingTemplate.allowRenderToDetachedContainer || allowRenderToDetachedContainer) && !async) {\r\n renderingTemplate.render(templateOptions)\r\n } else {\r\n that._delayedTemplates.push({\r\n template: renderingTemplate,\r\n options: templateOptions,\r\n async: async\r\n })\r\n }\r\n } else {\r\n templateDeferred.reject()\r\n }\r\n return templateDeferred.promise()\r\n },\r\n _getBodies: function(tableElement) {\r\n return (0, _renderer.default)(tableElement).children(\"tbody\").not(\".dx-header\").not(\".dx-footer\")\r\n },\r\n _wrapRowIfNeed: function($table, $row) {\r\n var $tBodies = this.option(\"rowTemplate\") && this._getBodies(this._tableElement || $table);\r\n if ($tBodies && $tBodies.filter(\".\" + ROW_CLASS).length) {\r\n var $tbody = (0, _renderer.default)(\"\").addClass($row.attr(\"class\"));\r\n this.setAria(\"role\", \"presentation\", $tbody);\r\n return $tbody.append($row)\r\n }\r\n return $row\r\n },\r\n _appendRow: function($table, $row, appendTemplate) {\r\n appendTemplate = appendTemplate || appendElementTemplate;\r\n appendTemplate.render({\r\n content: $row,\r\n container: $table\r\n })\r\n },\r\n _resizeCore: function() {\r\n var scrollLeft = this._scrollLeft;\r\n if (scrollLeft >= 0) {\r\n this._scrollLeft = 0;\r\n this.scrollTo({\r\n left: scrollLeft\r\n })\r\n }\r\n },\r\n _renderCore: function(e) {\r\n var $root = this.element().parent();\r\n if (!$root || $root.parent().length) {\r\n this.renderDelayedTemplates(e)\r\n }\r\n },\r\n _renderTable: function(options) {\r\n options = options || {};\r\n options.columns = this._columnsController.getVisibleColumns();\r\n var changeType = options.change && options.change.changeType;\r\n var $table = this._createTable(options.columns, \"append\" === changeType || \"prepend\" === changeType || \"update\" === changeType);\r\n this._renderRows($table, options);\r\n return $table\r\n },\r\n _renderRows: function($table, options) {\r\n var that = this;\r\n var rows = that._getRows(options.change);\r\n var columnIndices = options.change && options.change.columnIndices || [];\r\n var changeTypes = options.change && options.change.changeTypes || [];\r\n for (var i = 0; i < rows.length; i++) {\r\n that._renderRow($table, (0, _extend.extend)({\r\n row: rows[i],\r\n columnIndices: columnIndices[i],\r\n changeType: changeTypes[i]\r\n }, options))\r\n }\r\n },\r\n _renderRow: function($table, options) {\r\n if (!options.columnIndices) {\r\n options.row.cells = []\r\n }\r\n var $row = this._createRow(options.row);\r\n var $wrappedRow = this._wrapRowIfNeed($table, $row);\r\n if (\"remove\" !== options.changeType) {\r\n this._renderCells($row, options)\r\n }\r\n this._appendRow($table, $wrappedRow);\r\n var rowOptions = (0, _extend.extend)({\r\n columns: options.columns\r\n }, options.row);\r\n this._addWatchMethod(rowOptions, options.row);\r\n this._rowPrepared($wrappedRow, rowOptions, options.row)\r\n },\r\n _needRenderCell: function(columnIndex, columnIndices) {\r\n return !columnIndices || columnIndices.indexOf(columnIndex) >= 0\r\n },\r\n _renderCells: function($row, options) {\r\n var that = this;\r\n var columnIndex = 0;\r\n var row = options.row;\r\n var columns = options.columns;\r\n for (var i = 0; i < columns.length; i++) {\r\n if (this._needRenderCell(i, options.columnIndices)) {\r\n that._renderCell($row, (0, _extend.extend)({\r\n column: columns[i],\r\n columnIndex: columnIndex,\r\n value: row.values && row.values[columnIndex],\r\n oldValue: row.oldValues && row.oldValues[columnIndex]\r\n }, options))\r\n }\r\n if (columns[i].colspan > 1) {\r\n columnIndex += columns[i].colspan\r\n } else {\r\n columnIndex++\r\n }\r\n }\r\n },\r\n _updateCells: function($rowElement, $newRowElement, columnIndices) {\r\n var $cells = $rowElement.children();\r\n var $newCells = $newRowElement.children();\r\n var highlightChanges = this.option(\"highlightChanges\");\r\n var cellUpdatedClass = this.addWidgetPrefix(CELL_UPDATED_ANIMATION_CLASS);\r\n columnIndices.forEach(function(columnIndex, index) {\r\n var $cell = $cells.eq(columnIndex);\r\n var $newCell = $newCells.eq(index);\r\n $cell.replaceWith($newCell);\r\n if (highlightChanges && !$newCell.hasClass(\"dx-command-expand\")) {\r\n $newCell.addClass(cellUpdatedClass)\r\n }\r\n });\r\n copyAttributes($rowElement.get(0), $newRowElement.get(0))\r\n },\r\n _setCellAriaAttributes: function($cell, cellOptions) {\r\n if (\"freeSpace\" !== cellOptions.rowType) {\r\n this.setAria(\"selected\", false, $cell);\r\n this.setAria(\"role\", \"gridcell\", $cell);\r\n var columnIndexOffset = this._columnsController.getColumnIndexOffset();\r\n var ariaColIndex = cellOptions.columnIndex + columnIndexOffset + 1;\r\n this.setAria(\"colindex\", ariaColIndex, $cell)\r\n }\r\n },\r\n _renderCell: function($row, options) {\r\n var cellOptions = this._getCellOptions(options);\r\n if (options.columnIndices) {\r\n if (options.row.cells) {\r\n options.row.cells[cellOptions.columnIndex] = cellOptions\r\n }\r\n } else {\r\n options.row.cells.push(cellOptions)\r\n }\r\n var $cell = this._createCell(cellOptions);\r\n this._setCellAriaAttributes($cell, cellOptions);\r\n this._renderCellContent($cell, cellOptions);\r\n $row.get(0).appendChild($cell.get(0));\r\n return $cell\r\n },\r\n _renderCellContent: function($cell, options) {\r\n var _this = this;\r\n var template = this._getCellTemplate(options);\r\n (0, _deferred.when)(!template || this.renderTemplate($cell, template, options)).done(function() {\r\n _this._updateCell($cell, options)\r\n })\r\n },\r\n _getCellTemplate: function() {},\r\n _getRows: function() {\r\n return []\r\n },\r\n _getCellOptions: function(options) {\r\n var cellOptions = {\r\n column: options.column,\r\n columnIndex: options.columnIndex,\r\n rowType: options.row.rowType,\r\n isAltRow: this._isAltRow(options.row)\r\n };\r\n this._addWatchMethod(cellOptions);\r\n return cellOptions\r\n },\r\n _addWatchMethod: function(options, source) {\r\n if (!this.option(\"repaintChangesOnly\")) {\r\n return\r\n }\r\n var watchers = [];\r\n source = source || options;\r\n source.watch = source.watch || function(getter, updateFunc) {\r\n var oldValue = getter(source.data);\r\n var watcher = function(row) {\r\n var newValue = getter(source.data);\r\n if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) {\r\n if (row) {\r\n updateFunc(newValue, oldValue)\r\n }\r\n oldValue = newValue\r\n }\r\n };\r\n watchers.push(watcher);\r\n var stopWatch = function() {\r\n var index = watchers.indexOf(watcher);\r\n if (index >= 0) {\r\n watchers.splice(index, 1)\r\n }\r\n };\r\n return stopWatch\r\n };\r\n source.update = source.update || function(row) {\r\n if (row) {\r\n this.data = options.data = row.data;\r\n this.rowIndex = options.rowIndex = row.rowIndex;\r\n this.dataIndex = options.dataIndex = row.dataIndex;\r\n this.isExpanded = options.isExpanded = row.isExpanded;\r\n if (options.row) {\r\n options.row = row\r\n }\r\n }\r\n watchers.forEach(function(watcher) {\r\n watcher(row)\r\n })\r\n };\r\n if (source !== options) {\r\n options.watch = source.watch.bind(source)\r\n }\r\n return options\r\n },\r\n _cellPrepared: function(cell, options) {\r\n options.cellElement = (0, _element.getPublicElement)((0, _renderer.default)(cell));\r\n this.executeAction(\"onCellPrepared\", options)\r\n },\r\n _rowPrepared: function($row, options) {\r\n (0, _element_data.data)($row.get(0), \"options\", options);\r\n options.rowElement = (0, _element.getPublicElement)($row);\r\n this.executeAction(\"onRowPrepared\", options)\r\n },\r\n _columnOptionChanged: function(e) {\r\n var optionNames = e.optionNames;\r\n if (_uiGrid_core2.default.checkChanges(optionNames, [\"width\", \"visibleWidth\"])) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var widths = iteratorUtils.map(visibleColumns, function(column) {\r\n var width = column.visibleWidth || column.width;\r\n return (0, _type.isDefined)(width) ? width : \"auto\"\r\n });\r\n this.setColumnWidths({\r\n widths: widths,\r\n optionNames: optionNames\r\n });\r\n return\r\n }\r\n if (!this._requireReady) {\r\n this.render()\r\n }\r\n },\r\n getCellIndex: function($cell) {\r\n var cellIndex = $cell.length ? $cell[0].cellIndex : -1;\r\n return cellIndex\r\n },\r\n getTableElements: function() {\r\n return this._tableElement || (0, _renderer.default)()\r\n },\r\n _getTableElement: function() {\r\n return this._tableElement\r\n },\r\n _setTableElement: function(tableElement) {\r\n this._tableElement = tableElement\r\n },\r\n optionChanged: function(args) {\r\n this.callBase(args);\r\n switch (args.name) {\r\n case \"cellHintEnabled\":\r\n case \"onCellPrepared\":\r\n case \"onRowPrepared\":\r\n case \"onCellHoverChanged\":\r\n this._invalidate(true, true);\r\n args.handled = true\r\n }\r\n },\r\n init: function() {\r\n var that = this;\r\n that._scrollLeft = -1;\r\n that._columnsController = that.getController(\"columns\");\r\n that._dataController = that.getController(\"data\");\r\n that._delayedTemplates = [];\r\n that._templatesCache = {};\r\n that.createAction(\"onCellClick\");\r\n that.createAction(\"onRowClick\");\r\n that.createAction(\"onCellDblClick\");\r\n that.createAction(\"onRowDblClick\");\r\n that.createAction(\"onCellHoverChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onCellPrepared\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\"\r\n });\r\n that.createAction(\"onRowPrepared\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\",\r\n afterExecute: function(e) {\r\n that._afterRowPrepared(e)\r\n }\r\n });\r\n that._columnsController.columnsChanged.add(that._columnOptionChanged.bind(that));\r\n that._dataController && that._dataController.changed.add(that._handleDataChanged.bind(that))\r\n },\r\n _afterRowPrepared: _common.noop,\r\n _handleDataChanged: function() {},\r\n callbackNames: function() {\r\n return [\"scrollChanged\"]\r\n },\r\n scrollTo: function(pos) {\r\n var $element = this.element();\r\n var $scrollContainer = $element && $element.children(\".\" + this.addWidgetPrefix(SCROLL_CONTAINER_CLASS)).not(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS));\r\n if ((0, _type.isDefined)(pos) && (0, _type.isDefined)(pos.left) && this._scrollLeft !== pos.left) {\r\n this._scrollLeft = pos.left;\r\n $scrollContainer && $scrollContainer.scrollLeft(pos.left)\r\n }\r\n },\r\n _wrapTableInScrollContainer: function($table) {\r\n var _this2 = this;\r\n var $scrollContainer = (0, _renderer.default)(\"
\");\r\n _events_engine.default.on($scrollContainer, \"scroll\", function() {\r\n var scrollLeft = $scrollContainer.scrollLeft();\r\n if (scrollLeft !== _this2._scrollLeft) {\r\n _this2.scrollChanged.fire({\r\n left: scrollLeft\r\n }, _this2.name)\r\n }\r\n });\r\n $scrollContainer.addClass(this.addWidgetPrefix(CONTENT_CLASS)).addClass(this.addWidgetPrefix(SCROLL_CONTAINER_CLASS)).append($table).appendTo(this.element());\r\n this.setAria(\"role\", \"presentation\", $scrollContainer);\r\n return $scrollContainer\r\n },\r\n _updateContent: function($newTableElement) {\r\n this._setTableElement($newTableElement);\r\n this._wrapTableInScrollContainer($newTableElement)\r\n },\r\n _findContentElement: _common.noop,\r\n _getWidths: function($cellElements) {\r\n var result = [];\r\n var legacyRendering = this.option(\"legacyRendering\");\r\n var width;\r\n if ($cellElements) {\r\n iteratorUtils.each($cellElements, function(index, item) {\r\n width = item.offsetWidth;\r\n if (item.getBoundingClientRect) {\r\n var clientRect = (0, _position.getBoundingRect)(item);\r\n if (clientRect.width > width - 1) {\r\n width = legacyRendering ? Math.ceil(clientRect.width) : clientRect.width\r\n }\r\n }\r\n result.push(width)\r\n })\r\n }\r\n return result\r\n },\r\n getColumnWidths: function($tableElement) {\r\n var that = this;\r\n var result = [];\r\n var $rows;\r\n var $cells;\r\n (this.option(\"forceApplyBindings\") || _common.noop)();\r\n $tableElement = $tableElement || that._getTableElement();\r\n if ($tableElement) {\r\n $rows = $tableElement.children(\"tbody\").children();\r\n for (var i = 0; i < $rows.length; i++) {\r\n var $row = $rows.eq(i);\r\n var isRowVisible = \"none\" !== $row.get(0).style.display && !$row.hasClass(\"dx-state-invisible\");\r\n if (!$row.is(\".\" + GROUP_ROW_CLASS) && !$row.is(\".\" + DETAIL_ROW_CLASS) && isRowVisible) {\r\n $cells = $row.children(\"td\");\r\n break\r\n }\r\n }\r\n result = that._getWidths($cells)\r\n }\r\n return result\r\n },\r\n getVisibleColumnIndex: function(columnIndex, rowIndex) {\r\n return columnIndex\r\n },\r\n setColumnWidths: function(_ref) {\r\n var widths = _ref.widths,\r\n $tableElement = _ref.$tableElement,\r\n columns = _ref.columns,\r\n fixed = _ref.fixed;\r\n var $cols;\r\n var width;\r\n var minWidth;\r\n var columnIndex;\r\n var columnAutoWidth = this.option(\"columnAutoWidth\");\r\n var legacyRendering = this.option(\"legacyRendering\");\r\n $tableElement = $tableElement || this._getTableElement();\r\n if ($tableElement && $tableElement.length && widths) {\r\n columnIndex = 0;\r\n $cols = $tableElement.children(\"colgroup\").children(\"col\");\r\n (0, _style.setWidth)($cols, \"auto\");\r\n columns = columns || this.getColumns(null, $tableElement);\r\n for (var i = 0; i < columns.length; i++) {\r\n if (!legacyRendering && columnAutoWidth && !fixed) {\r\n width = columns[i].width;\r\n if (width && !columns[i].command) {\r\n width = columns[i].visibleWidth || width;\r\n width = getWidthStyle(width);\r\n minWidth = getWidthStyle(columns[i].minWidth || width);\r\n var $rows = $rows || $tableElement.children().children(\".dx-row\").not(\".\" + GROUP_ROW_CLASS).not(\".\" + DETAIL_ROW_CLASS);\r\n for (var rowIndex = 0; rowIndex < $rows.length; rowIndex++) {\r\n var visibleIndex = this.getVisibleColumnIndex(i, rowIndex);\r\n var cell = $rows[rowIndex].cells[visibleIndex];\r\n if (cell) {\r\n setCellWidth(cell, columns[i], width);\r\n cell.style.minWidth = minWidth\r\n }\r\n }\r\n }\r\n }\r\n if (columns[i].colspan) {\r\n columnIndex += columns[i].colspan;\r\n continue\r\n }\r\n width = widths[columnIndex];\r\n if (\"adaptiveHidden\" === width) {\r\n width = HIDDEN_COLUMNS_WIDTH\r\n }\r\n if (\"number\" === typeof width) {\r\n width = width.toFixed(3) + \"px\"\r\n }(0, _style.setWidth)($cols.eq(columnIndex), (0, _type.isDefined)(width) ? width : \"auto\");\r\n columnIndex++\r\n }\r\n }\r\n },\r\n getCellElements: function(rowIndex) {\r\n return this._getCellElementsCore(rowIndex)\r\n },\r\n _getCellElementsCore: function(rowIndex) {\r\n var $row = this._getRowElements().eq(rowIndex);\r\n return $row.children()\r\n },\r\n _getCellElement: function(rowIndex, columnIdentifier) {\r\n var that = this;\r\n var $cell;\r\n var $cells = that.getCellElements(rowIndex);\r\n var columnVisibleIndex = that._getVisibleColumnIndex($cells, rowIndex, columnIdentifier);\r\n if ($cells.length && columnVisibleIndex >= 0) {\r\n $cell = $cells.eq(columnVisibleIndex)\r\n }\r\n if ($cell && $cell.length) {\r\n return $cell\r\n }\r\n },\r\n _getRowElement: function(rowIndex) {\r\n var that = this;\r\n var $rowElement = (0, _renderer.default)();\r\n var $tableElements = that.getTableElements();\r\n iteratorUtils.each($tableElements, function(_, tableElement) {\r\n $rowElement = $rowElement.add(that._getRowElements((0, _renderer.default)(tableElement)).eq(rowIndex))\r\n });\r\n if ($rowElement.length) {\r\n return $rowElement\r\n }\r\n },\r\n getCellElement: function(rowIndex, columnIdentifier) {\r\n return (0, _element.getPublicElement)(this._getCellElement(rowIndex, columnIdentifier))\r\n },\r\n getRowElement: function(rowIndex) {\r\n var $rows = this._getRowElement(rowIndex);\r\n var elements = [];\r\n if ($rows && !(0, _element.getPublicElement)($rows).get) {\r\n for (var i = 0; i < $rows.length; i++) {\r\n elements.push($rows[i])\r\n }\r\n } else {\r\n elements = $rows\r\n }\r\n return elements\r\n },\r\n _getVisibleColumnIndex: function($cells, rowIndex, columnIdentifier) {\r\n if ((0, _type.isString)(columnIdentifier)) {\r\n var columnIndex = this._columnsController.columnOption(columnIdentifier, \"index\");\r\n return this._columnsController.getVisibleIndex(columnIndex)\r\n }\r\n return columnIdentifier\r\n },\r\n getColumnElements: function() {},\r\n getColumns: function(rowIndex) {\r\n return this._columnsController.getVisibleColumns(rowIndex)\r\n },\r\n getCell: function(cellPosition, rows) {\r\n var $rows = rows || this._getRowElements();\r\n var $cells;\r\n if ($rows.length > 0 && cellPosition.rowIndex >= 0) {\r\n if (\"virtual\" !== this.option(\"scrolling.mode\")) {\r\n cellPosition.rowIndex = cellPosition.rowIndex < $rows.length ? cellPosition.rowIndex : $rows.length - 1\r\n }\r\n $cells = this.getCellElements(cellPosition.rowIndex);\r\n if ($cells && $cells.length > 0) {\r\n return $cells.eq($cells.length > cellPosition.columnIndex ? cellPosition.columnIndex : $cells.length - 1)\r\n }\r\n }\r\n },\r\n getRowsCount: function() {\r\n var tableElement = this._getTableElement();\r\n if (tableElement && 1 === tableElement.length) {\r\n return tableElement[0].rows.length\r\n }\r\n return 0\r\n },\r\n _getRowElementsCore: function(tableElement) {\r\n tableElement = tableElement || this._getTableElement();\r\n if (tableElement) {\r\n var tBodies = this.option(\"rowTemplate\") && tableElement.find(\"> tbody.\" + ROW_CLASS);\r\n return tBodies && tBodies.length ? tBodies : tableElement.find(\"> tbody > .\" + ROW_CLASS + \", > .\" + ROW_CLASS)\r\n }\r\n return (0, _renderer.default)()\r\n },\r\n _getRowElements: function(tableElement) {\r\n return this._getRowElementsCore(tableElement)\r\n },\r\n getRowIndex: function($row) {\r\n return this._getRowElements().index($row)\r\n },\r\n getBoundingRect: function() {},\r\n getName: function() {},\r\n setScrollerSpacing: function(width) {\r\n var that = this;\r\n var $element = that.element();\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n $element && $element.css({\r\n paddingLeft: rtlEnabled ? width : \"\",\r\n paddingRight: !rtlEnabled ? width : \"\"\r\n })\r\n },\r\n isScrollbarVisible: function(isHorizontal) {\r\n var $element = this.element();\r\n var $tableElement = this._tableElement;\r\n if ($element && $tableElement) {\r\n return isHorizontal ? $tableElement.outerWidth() - $element.width() > 0 : $tableElement.outerHeight() - $element.height() > 0\r\n }\r\n return false\r\n }\r\n});\r\nexports.ColumnsView = ColumnsView;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.sorting_mixin.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\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\nvar _default = {\r\n _applyColumnState: function(options) {\r\n var that = this;\r\n var ariaSortState;\r\n var $sortIndicator;\r\n var sortingMode = that.option(\"sorting.mode\");\r\n var rootElement = options.rootElement;\r\n var column = options.column;\r\n var $indicatorsContainer = that._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 (!(0, _type.isDefined)(column.groupIndex) && (isSortingAllowed || (0, _type.isDefined)(column.sortOrder))) {\r\n ariaSortState = \"asc\" === column.sortOrder ? \"ascending\" : \"descending\";\r\n $sortIndicator = that.callBase(options).toggleClass(SORTUP_CLASS, \"asc\" === column.sortOrder).toggleClass(SORTDOWN_CLASS, \"desc\" === column.sortOrder);\r\n var hasSeveralSortIndexes = that.getController && !!that.getController(\"columns\").columnOption(\"sortIndex:1\");\r\n if (hasSeveralSortIndexes && that.option(\"sorting.showSortIndexes\") && column.sortIndex >= 0) {\r\n (0, _renderer.default)(\"\").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(that.addWidgetPrefix(HEADERS_ACTION_CLASS))\r\n }\r\n if (!(0, _type.isDefined)(column.sortOrder)) {\r\n that.setAria(\"sort\", \"none\", rootElement)\r\n } else {\r\n that.setAria(\"sort\", ariaSortState, rootElement)\r\n }\r\n return $sortIndicator\r\n } else {\r\n return that.callBase(options)\r\n }\r\n },\r\n _getIndicatorClassName: function(name) {\r\n if (\"sort\" === name) {\r\n return SORT_CLASS\r\n } else {\r\n if (\"sortIndex\" === name) {\r\n return SORT_INDEX_ICON_CLASS\r\n }\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 (!(0, _type.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 && (0, _type.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\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.focus.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar ROW_FOCUSED_CLASS = \"dx-row-focused\";\r\nvar FOCUSED_ROW_SELECTOR = \".dx-row.\" + ROW_FOCUSED_CLASS;\r\nvar TABLE_POSTFIX_CLASS = \"table\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar FocusController = _uiGrid_core.default.ViewController.inherit(function() {\r\n return {\r\n init: function() {\r\n this._dataController = this.getController(\"data\");\r\n this._keyboardController = this.getController(\"keyboardNavigation\");\r\n this.component._optionsByReference.focusedRowKey = true\r\n },\r\n optionChanged: function(args) {\r\n if (\"focusedRowIndex\" === args.name) {\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n this._focusRowByIndex(args.value);\r\n this._triggerFocusedRowChangedIfNeed(focusedRowKey, args.value);\r\n args.handled = true\r\n } else {\r\n if (\"focusedRowKey\" === args.name) {\r\n var focusedRowIndex = this.option(\"focusedRowIndex\");\r\n this._focusRowByKey(args.value);\r\n this._triggerFocusedRowChangedIfNeed(args.value, focusedRowIndex);\r\n args.handled = true\r\n } else {\r\n if (\"focusedColumnIndex\" === args.name) {\r\n args.handled = true\r\n } else {\r\n if (\"focusedRowEnabled\" === args.name) {\r\n args.handled = true\r\n } else {\r\n if (\"autoNavigateToFocusedRow\" === args.name) {\r\n args.handled = true\r\n } else {\r\n this.callBase(args)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _triggerFocusedRowChangedIfNeed: function(focusedRowKey, focusedRowIndex) {\r\n var focusedRowIndexByKey = this.getFocusedRowIndexByKey(focusedRowKey);\r\n if (focusedRowIndex === focusedRowIndexByKey) {\r\n var rowIndex = this._dataController.getRowIndexByKey(focusedRowKey);\r\n if (rowIndex >= 0) {\r\n var $rowElement = (0, _renderer.default)(this.getView(\"rowsView\").getRowElement(rowIndex));\r\n this.getController(\"keyboardNavigation\")._fireFocusedRowChanged($rowElement, focusedRowIndex)\r\n }\r\n }\r\n },\r\n isAutoNavigateToFocusedRow: function() {\r\n return \"infinite\" !== this.option(\"scrolling.mode\") && this.option(\"autoNavigateToFocusedRow\")\r\n },\r\n _focusRowByIndex: function(index) {\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)\r\n }\r\n },\r\n _focusRowByIndexCore: function(index) {\r\n var _this = this;\r\n var dataController = this.getController(\"data\");\r\n var pageSize = dataController.pageSize();\r\n var setKeyByIndex = function() {\r\n if (_this._isValidFocusedRowIndex(index)) {\r\n var visibleIndex = index - dataController.getRowIndexOffset();\r\n var lastItemIndex = dataController._getLastItemIndex();\r\n var rowIndex = Math.min(visibleIndex, lastItemIndex);\r\n var focusedRowKey = dataController.getKeyByRowIndex(rowIndex);\r\n if ((0, _type.isDefined)(focusedRowKey) && !_this.isRowFocused(focusedRowKey)) {\r\n _this.option(\"focusedRowKey\", focusedRowKey)\r\n }\r\n }\r\n };\r\n if (pageSize >= 0) {\r\n if (!this._isLocalRowIndex(index)) {\r\n var pageIndex = Math.floor(index / dataController.pageSize());\r\n (0, _deferred.when)(dataController.pageIndex(pageIndex), dataController.waitReady()).done(function() {\r\n setKeyByIndex()\r\n })\r\n } else {\r\n setKeyByIndex()\r\n }\r\n }\r\n },\r\n _isLocalRowIndex: function(index) {\r\n var dataController = this.getController(\"data\");\r\n var isVirtualScrolling = this.getController(\"keyboardNavigation\")._isVirtualScrolling();\r\n if (isVirtualScrolling) {\r\n var pageIndex = Math.floor(index / dataController.pageSize());\r\n var virtualItems = dataController.virtualItemsCount();\r\n var virtualItemsBegin = virtualItems ? virtualItems.begin : -1;\r\n var visibleRowsCount = dataController.getVisibleRows().length + dataController.getRowIndexOffset();\r\n var visiblePagesCount = Math.ceil(visibleRowsCount / dataController.pageSize());\r\n return virtualItemsBegin <= index && visiblePagesCount > pageIndex\r\n }\r\n return true\r\n },\r\n _setFocusedRowKeyByIndex: function(index) {\r\n var dataController = this.getController(\"data\");\r\n if (this._isValidFocusedRowIndex(index)) {\r\n var rowIndex = Math.min(index - dataController.getRowIndexOffset(), dataController.items().length - 1);\r\n var focusedRowKey = dataController.getKeyByRowIndex(rowIndex);\r\n if ((0, _type.isDefined)(focusedRowKey) && !this.isRowFocused(focusedRowKey)) {\r\n this.option(\"focusedRowKey\", focusedRowKey)\r\n }\r\n }\r\n },\r\n _focusRowByKey: function(key) {\r\n if (!(0, _type.isDefined)(key)) {\r\n this._resetFocusedRow()\r\n } else {\r\n this._navigateToRow(key, true)\r\n }\r\n },\r\n _resetFocusedRow: function() {\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var isFocusedRowKeyDefined = (0, _type.isDefined)(focusedRowKey);\r\n if (!isFocusedRowKeyDefined && this.option(\"focusedRowIndex\") < 0) {\r\n return\r\n }\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n if (isFocusedRowKeyDefined) {\r\n this.option(\"focusedRowKey\", void 0)\r\n }\r\n keyboardController.setFocusedRowIndex(-1);\r\n this.option(\"focusedRowIndex\", -1);\r\n this.getController(\"data\").updateItems({\r\n changeType: \"updateFocusedRow\",\r\n focusedRowKey: void 0\r\n });\r\n keyboardController._fireFocusedRowChanged(void 0, -1)\r\n },\r\n _isValidFocusedRowIndex: function(rowIndex) {\r\n var dataController = this.getController(\"data\");\r\n var row = dataController.getVisibleRows()[rowIndex];\r\n return !row || \"data\" === row.rowType || \"group\" === row.rowType\r\n },\r\n publicMethods: function() {\r\n return [\"navigateToRow\", \"isRowFocused\"]\r\n },\r\n navigateToRow: function(key) {\r\n if (!this.isAutoNavigateToFocusedRow()) {\r\n this.option(\"focusedRowIndex\", -1)\r\n }\r\n this._navigateToRow(key)\r\n },\r\n _navigateToRow: function(key, needFocusRow) {\r\n var that = this;\r\n var dataController = that.getController(\"data\");\r\n var isAutoNavigate = that.isAutoNavigateToFocusedRow();\r\n var d = new _deferred.Deferred;\r\n if (void 0 === key || !dataController.dataSource()) {\r\n return d.reject().promise()\r\n }\r\n var rowIndexByKey = that.getFocusedRowIndexByKey(key);\r\n var isPaginate = dataController.getDataSource().paginate();\r\n if (!isAutoNavigate && needFocusRow || !isPaginate || rowIndexByKey >= 0) {\r\n that._navigateTo(key, d, needFocusRow)\r\n } else {\r\n dataController.getPageIndexByKey(key).done(function(pageIndex) {\r\n if (pageIndex < 0) {\r\n d.resolve(-1);\r\n return\r\n }\r\n if (pageIndex === dataController.pageIndex()) {\r\n dataController.reload().done(function() {\r\n if (that.isRowFocused(key)) {\r\n d.resolve(that.getFocusedRowIndexByKey(key))\r\n } else {\r\n that._navigateTo(key, d, needFocusRow)\r\n }\r\n }).fail(d.reject)\r\n } else {\r\n dataController.pageIndex(pageIndex).done(function() {\r\n that._navigateTo(key, d, needFocusRow)\r\n }).fail(d.reject)\r\n }\r\n }).fail(d.reject)\r\n }\r\n return d.promise()\r\n },\r\n _navigateTo: function(key, deferred, needFocusRow) {\r\n var visibleRowIndex = this.getController(\"data\").getRowIndexByKey(key);\r\n var isVirtualRowRenderingMode = \"virtual\" === this.option(\"scrolling.rowRenderingMode\");\r\n var isAutoNavigate = this.isAutoNavigateToFocusedRow();\r\n if (isAutoNavigate && isVirtualRowRenderingMode && visibleRowIndex < 0) {\r\n this._navigateToVirtualRow(key, deferred, needFocusRow)\r\n } else {\r\n this._navigateToVisibleRow(key, deferred, needFocusRow)\r\n }\r\n },\r\n _navigateToVisibleRow: function(key, deferred, needFocusRow) {\r\n if (needFocusRow) {\r\n this._triggerUpdateFocusedRow(key, deferred)\r\n } else {\r\n this.getView(\"rowsView\").scrollToRowElement(key)\r\n }\r\n },\r\n _navigateToVirtualRow: function(key, deferred, needFocusRow) {\r\n var that = this;\r\n var dataController = this.getController(\"data\");\r\n var rowsScrollController = dataController._rowsScrollController;\r\n var rowIndex = _uiGrid_core2.default.getIndexByKey(key, dataController.items(true));\r\n var scrollable = that.getView(\"rowsView\").getScrollable();\r\n if (rowsScrollController && scrollable && rowIndex >= 0) {\r\n var focusedRowIndex = rowIndex + dataController.getRowIndexOffset() - dataController.getRowIndexDelta();\r\n var offset = rowsScrollController.getItemOffset(focusedRowIndex);\r\n if (needFocusRow) {\r\n var triggerUpdateFocusedRow = function triggerUpdateFocusedRow() {\r\n that.component.off(\"contentReady\", triggerUpdateFocusedRow);\r\n that._triggerUpdateFocusedRow(key, deferred)\r\n };\r\n that.component.on(\"contentReady\", triggerUpdateFocusedRow)\r\n }\r\n scrollable.scrollTo({\r\n y: offset\r\n })\r\n }\r\n },\r\n _triggerUpdateFocusedRow: function(key, deferred) {\r\n var dataController = this.getController(\"data\");\r\n var focusedRowIndex = this.getFocusedRowIndexByKey(key);\r\n if (this._isValidFocusedRowIndex(focusedRowIndex)) {\r\n if (this.option(\"focusedRowEnabled\")) {\r\n dataController.updateItems({\r\n changeType: \"updateFocusedRow\",\r\n focusedRowKey: key\r\n })\r\n } else {\r\n this.getView(\"rowsView\").scrollToRowElement(key)\r\n }\r\n this.getController(\"keyboardNavigation\").setFocusedRowIndex(focusedRowIndex);\r\n deferred && deferred.resolve(focusedRowIndex)\r\n } else {\r\n deferred && deferred.resolve(-1)\r\n }\r\n },\r\n getFocusedRowIndexByKey: function(key) {\r\n var dataController = this.getController(\"data\");\r\n var rowIndex = dataController.getRowIndexByKey(key);\r\n return rowIndex >= 0 ? rowIndex + dataController.getRowIndexOffset() : -1\r\n },\r\n _focusRowByKeyOrIndex: function() {\r\n var _this2 = this;\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var currentFocusedRowIndex = this.option(\"focusedRowIndex\");\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var dataController = this.getController(\"data\");\r\n if ((0, _type.isDefined)(focusedRowKey)) {\r\n var visibleRowIndex = dataController.getRowIndexByKey(focusedRowKey);\r\n if (visibleRowIndex >= 0) {\r\n if (keyboardController._isVirtualScrolling()) {\r\n currentFocusedRowIndex = visibleRowIndex + dataController.getRowIndexOffset()\r\n }\r\n keyboardController.setFocusedRowIndex(currentFocusedRowIndex);\r\n this._triggerUpdateFocusedRow(focusedRowKey)\r\n } else {\r\n this._navigateToRow(focusedRowKey, true).done(function(focusedRowIndex) {\r\n if (currentFocusedRowIndex >= 0 && focusedRowIndex < 0) {\r\n _this2._focusRowByIndex()\r\n }\r\n })\r\n }\r\n } else {\r\n if (currentFocusedRowIndex >= 0) {\r\n this.getController(\"focus\")._focusRowByIndex(currentFocusedRowIndex)\r\n }\r\n }\r\n },\r\n isRowFocused: function(key) {\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n if ((0, _type.isDefined)(focusedRowKey)) {\r\n return (0, _common.equalByValue)(key, this.option(\"focusedRowKey\"))\r\n }\r\n },\r\n updateFocusedRow: function(change) {\r\n var that = this;\r\n var focusedRowIndex = that._dataController.getRowIndexByKey(change.focusedRowKey);\r\n var rowsView = that.getView(\"rowsView\");\r\n var $tableElement;\r\n (0, _iterator.each)(rowsView.getTableElements(), function(index, element) {\r\n var _change$items;\r\n var isMainTable = 0 === index;\r\n $tableElement = (0, _renderer.default)(element);\r\n that._clearPreviousFocusedRow($tableElement, focusedRowIndex);\r\n that._prepareFocusedRow({\r\n changedItem: null === change || void 0 === change ? void 0 : null === (_change$items = change.items) || void 0 === _change$items ? void 0 : _change$items[focusedRowIndex],\r\n $tableElement: $tableElement,\r\n focusedRowIndex: focusedRowIndex,\r\n isMainTable: isMainTable\r\n })\r\n })\r\n },\r\n _clearPreviousFocusedRow: function($tableElement, focusedRowIndex) {\r\n var _this3 = this;\r\n var isNotMasterDetailFocusedRow = function(_, focusedRow) {\r\n var $focusedRowTable = (0, _renderer.default)(focusedRow).closest(\".\".concat(_this3.addWidgetPrefix(TABLE_POSTFIX_CLASS)));\r\n return $tableElement.is($focusedRowTable)\r\n };\r\n var $prevRowFocusedElement = $tableElement.find(FOCUSED_ROW_SELECTOR).filter(isNotMasterDetailFocusedRow);\r\n $prevRowFocusedElement.removeClass(ROW_FOCUSED_CLASS).removeClass(CELL_FOCUS_DISABLED_CLASS).removeAttr(\"tabindex\");\r\n $prevRowFocusedElement.children(\"td\").removeAttr(\"tabindex\");\r\n if (0 !== focusedRowIndex) {\r\n var $firstRow = (0, _renderer.default)(this.getView(\"rowsView\").getRowElement(0));\r\n $firstRow.removeClass(CELL_FOCUS_DISABLED_CLASS).removeAttr(\"tabIndex\")\r\n }\r\n },\r\n _prepareFocusedRow: function(options) {\r\n var $row;\r\n var changedItem = options.changedItem;\r\n if (changedItem && (\"data\" === changedItem.rowType || \"group\" === changedItem.rowType)) {\r\n var focusedRowIndex = options.focusedRowIndex;\r\n var $tableElement = options.$tableElement;\r\n var isMainTable = options.isMainTable;\r\n var tabIndex = this.option(\"tabindex\") || 0;\r\n var rowsView = this.getView(\"rowsView\");\r\n $row = (0, _renderer.default)(rowsView._getRowElements($tableElement).eq(focusedRowIndex));\r\n $row.addClass(ROW_FOCUSED_CLASS).attr(\"tabindex\", tabIndex);\r\n if (isMainTable) {\r\n rowsView.scrollToElementVertically($row)\r\n }\r\n }\r\n return $row\r\n }\r\n }\r\n}());\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n focusedRowEnabled: false,\r\n autoNavigateToFocusedRow: true,\r\n focusedRowKey: void 0,\r\n focusedRowIndex: -1,\r\n focusedColumnIndex: -1\r\n }\r\n },\r\n controllers: {\r\n focus: FocusController\r\n },\r\n extenders: {\r\n controllers: {\r\n keyboardNavigation: {\r\n init: function() {\r\n var rowIndex = this.option(\"focusedRowIndex\");\r\n var columnIndex = this.option(\"focusedColumnIndex\");\r\n this.createAction(\"onFocusedRowChanging\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onFocusedRowChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onFocusedCellChanging\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.createAction(\"onFocusedCellChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this.callBase();\r\n this.setRowFocusType();\r\n this._focusedCellPosition = {};\r\n if ((0, _type.isDefined)(rowIndex)) {\r\n this._focusedCellPosition.rowIndex = this.option(\"focusedRowIndex\")\r\n }\r\n if ((0, _type.isDefined)(columnIndex)) {\r\n this._focusedCellPosition.columnIndex = this.option(\"focusedColumnIndex\")\r\n }\r\n },\r\n setFocusedRowIndex: function(rowIndex) {\r\n var dataController = this.getController(\"data\");\r\n this.callBase(rowIndex);\r\n var visibleRowIndex = rowIndex - dataController.getRowIndexOffset();\r\n var visibleRow = dataController.getVisibleRows()[visibleRowIndex];\r\n if (!visibleRow || !visibleRow.isNewRow) {\r\n this.option(\"focusedRowIndex\", rowIndex)\r\n }\r\n },\r\n setFocusedColumnIndex: function(columnIndex) {\r\n this.callBase(columnIndex);\r\n this.option(\"focusedColumnIndex\", columnIndex)\r\n },\r\n _escapeKeyHandler: function(eventArgs, isEditing) {\r\n if (isEditing || !this.option(\"focusedRowEnabled\")) {\r\n this.callBase(eventArgs, isEditing);\r\n return\r\n }\r\n if (this.isCellFocusType()) {\r\n this.setRowFocusType();\r\n this._focus(this._getCellElementFromTarget(eventArgs.originalEvent.target), true)\r\n }\r\n },\r\n _updateFocusedCellPosition: function($cell, direction) {\r\n var prevRowIndex = this.option(\"focusedRowIndex\");\r\n var prevColumnIndex = this.option(\"focusedColumnIndex\");\r\n var position = this.callBase($cell, direction);\r\n if (position && position.columnIndex >= 0) {\r\n this._fireFocusedCellChanged($cell, prevColumnIndex, prevRowIndex)\r\n }\r\n }\r\n },\r\n editorFactory: {\r\n renderFocusOverlay: function($element, hideBorder) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var focusedRowEnabled = this.option(\"focusedRowEnabled\");\r\n var editingController = this.getController(\"editing\");\r\n var isRowElement = \"row\" === keyboardController._getElementType($element);\r\n var $cell;\r\n if (!focusedRowEnabled || !keyboardController.isRowFocusType() || editingController.isEditing()) {\r\n this.callBase($element, hideBorder)\r\n } else {\r\n if (focusedRowEnabled) {\r\n if (isRowElement && !$element.hasClass(ROW_FOCUSED_CLASS)) {\r\n $cell = keyboardController.getFirstValidCellInRow($element);\r\n keyboardController.focus($cell)\r\n }\r\n }\r\n }\r\n }\r\n },\r\n columns: {\r\n getSortDataSourceParameters: function(_, sortByKey) {\r\n var _this4 = this;\r\n var result = this.callBase.apply(this, arguments);\r\n var dataController = this.getController(\"data\");\r\n var dataSource = dataController._dataSource;\r\n var store = dataController.store();\r\n var key = store && store.key();\r\n var remoteOperations = dataSource && dataSource.remoteOperations() || {};\r\n var isLocalOperations = Object.keys(remoteOperations).every(function(operationName) {\r\n return !remoteOperations[operationName]\r\n });\r\n if (key && (this.option(\"focusedRowEnabled\") && false !== this.getController(\"focus\").isAutoNavigateToFocusedRow() || sortByKey)) {\r\n key = Array.isArray(key) ? key : [key];\r\n var notSortedKeys = key.filter(function(key) {\r\n return !_this4.columnOption(key, \"sortOrder\")\r\n });\r\n if (notSortedKeys.length) {\r\n result = result || [];\r\n if (isLocalOperations) {\r\n result.push({\r\n selector: dataSource.getDataIndexGetter(),\r\n desc: false\r\n })\r\n } else {\r\n notSortedKeys.forEach(function(notSortedKey) {\r\n return result.push({\r\n selector: notSortedKey,\r\n desc: false\r\n })\r\n })\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n },\r\n data: {\r\n _applyChange: function(change) {\r\n if (change && \"updateFocusedRow\" === change.changeType) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _fireChanged: function(e) {\r\n this.callBase(e);\r\n if (this.option(\"focusedRowEnabled\") && this._dataSource) {\r\n var isPartialUpdate = \"update\" === e.changeType && e.repaintChangesOnly;\r\n var isPartialUpdateWithDeleting = isPartialUpdate && e.changeTypes && e.changeTypes.indexOf(\"remove\") >= 0;\r\n if (\"refresh\" === e.changeType && e.items.length || isPartialUpdateWithDeleting) {\r\n this._updatePageIndexes();\r\n this.processUpdateFocusedRow(e)\r\n } else {\r\n if (\"append\" === e.changeType || \"prepend\" === e.changeType) {\r\n this._updatePageIndexes()\r\n }\r\n }\r\n }\r\n },\r\n _updatePageIndexes: function() {\r\n var prevRenderingPageIndex = this._lastRenderingPageIndex || 0;\r\n var renderingPageIndex = this._rowsScrollController ? this._rowsScrollController.pageIndex() : 0;\r\n this._lastRenderingPageIndex = renderingPageIndex;\r\n this._isPagingByRendering = renderingPageIndex !== prevRenderingPageIndex\r\n },\r\n isPagingByRendering: function() {\r\n return this._isPagingByRendering\r\n },\r\n processUpdateFocusedRow: function(e) {\r\n var operationTypes = e.operationTypes || {};\r\n var focusController = this.getController(\"focus\");\r\n var reload = operationTypes.reload,\r\n fullReload = operationTypes.fullReload;\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var isVirtualScrolling = keyboardController._isVirtualScrolling();\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var isAutoNavigate = focusController.isAutoNavigateToFocusedRow();\r\n if (reload && !fullReload && (0, _type.isDefined)(focusedRowKey)) {\r\n focusController._navigateToRow(focusedRowKey, true).done(function(focusedRowIndex) {\r\n if (focusedRowIndex < 0) {\r\n focusController._focusRowByIndex()\r\n }\r\n })\r\n } else {\r\n if (operationTypes.paging && !isVirtualScrolling) {\r\n if (isAutoNavigate) {\r\n var rowIndexByKey = this.getRowIndexByKey(focusedRowKey);\r\n var isValidRowIndexByKey = rowIndexByKey >= 0;\r\n var focusedRowIndex = this.option(\"focusedRowIndex\");\r\n var needFocusRowByIndex = focusedRowIndex >= 0 && (focusedRowIndex === rowIndexByKey || !isValidRowIndexByKey);\r\n if (needFocusRowByIndex) {\r\n focusController._focusRowByIndex()\r\n }\r\n } else {\r\n if (this.getRowIndexByKey(focusedRowKey) < 0) {\r\n this.option(\"focusedRowIndex\", -1)\r\n }\r\n }\r\n } else {\r\n if (operationTypes.fullReload) {\r\n focusController._focusRowByKeyOrIndex()\r\n }\r\n }\r\n }\r\n },\r\n getPageIndexByKey: function(key) {\r\n var that = this;\r\n var d = new _deferred.Deferred;\r\n that.getGlobalRowIndexByKey(key).done(function(globalIndex) {\r\n d.resolve(globalIndex >= 0 ? Math.floor(globalIndex / that.pageSize()) : -1)\r\n }).fail(d.reject);\r\n return d.promise()\r\n },\r\n getGlobalRowIndexByKey: function(key) {\r\n if (this._dataSource.group()) {\r\n return this._calculateGlobalRowIndexByGroupedData(key)\r\n }\r\n return this._calculateGlobalRowIndexByFlatData(key)\r\n },\r\n _calculateGlobalRowIndexByFlatData: function(key, groupFilter, useGroup) {\r\n var that = this;\r\n var deferred = new _deferred.Deferred;\r\n var dataSource = that._dataSource;\r\n var filter = that._generateFilterByKey(key);\r\n dataSource.load({\r\n filter: that._concatWithCombinedFilter(filter),\r\n skip: 0,\r\n take: 1\r\n }).done(function(data) {\r\n if (data.length > 0) {\r\n filter = that._generateOperationFilterByKey(key, data[0], useGroup);\r\n dataSource.load({\r\n filter: that._concatWithCombinedFilter(filter, groupFilter),\r\n skip: 0,\r\n take: 1,\r\n requireTotalCount: true\r\n }).done(function(_, extra) {\r\n deferred.resolve(extra.totalCount)\r\n })\r\n } else {\r\n deferred.resolve(-1)\r\n }\r\n });\r\n return deferred.promise()\r\n },\r\n _concatWithCombinedFilter: function(filter, groupFilter) {\r\n var combinedFilter = this.getCombinedFilter();\r\n return _uiGrid_core2.default.combineFilters([filter, combinedFilter, groupFilter])\r\n },\r\n _generateBooleanFilter: function(selector, value, sortInfo) {\r\n var result;\r\n if (false === value) {\r\n result = [selector, \"=\", sortInfo.desc ? true : null]\r\n } else {\r\n if (true === value ? !sortInfo.desc : sortInfo.desc) {\r\n result = [selector, \"<>\", value]\r\n }\r\n }\r\n return result\r\n },\r\n _generateOperationFilterByKey: function(key, rowData, useGroup) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var filter = that._generateFilterByKey(key, \"<\");\r\n var sort = that._columnsController.getSortDataSourceParameters(!dataSource.remoteOperations().filtering, true);\r\n if (useGroup) {\r\n var group = that._columnsController.getGroupDataSourceParameters(!dataSource.remoteOperations().filtering);\r\n if (group) {\r\n sort = sort ? group.concat(sort) : group\r\n }\r\n }\r\n if (sort) {\r\n sort.slice().reverse().forEach(function(sortInfo) {\r\n var selector = sortInfo.selector;\r\n var getter;\r\n if (\"function\" === typeof selector) {\r\n getter = selector\r\n } else {\r\n getter = that._columnsController.columnOption(selector, \"selector\")\r\n }\r\n var value = getter ? getter(rowData) : rowData[selector];\r\n filter = [\r\n [selector, \"=\", value], \"and\", filter\r\n ];\r\n if (null === value || (0, _type.isBoolean)(value)) {\r\n var booleanFilter = that._generateBooleanFilter(selector, value, sortInfo);\r\n if (booleanFilter) {\r\n filter = [booleanFilter, \"or\", filter]\r\n }\r\n } else {\r\n var filterOperation = sortInfo.desc ? \">\" : \"<\";\r\n var sortFilter = [selector, filterOperation, value];\r\n if (!sortInfo.desc) {\r\n sortFilter = [sortFilter, \"or\", [selector, \"=\", null]]\r\n }\r\n filter = [sortFilter, \"or\", filter]\r\n }\r\n })\r\n }\r\n return filter\r\n },\r\n _generateFilterByKey: function(key, operation) {\r\n var dataSourceKey = this._dataSource.key();\r\n var filter = [];\r\n if (!operation) {\r\n operation = \"=\"\r\n }\r\n if (Array.isArray(dataSourceKey)) {\r\n for (var i = 0; i < dataSourceKey.length; ++i) {\r\n var keyPart = key[dataSourceKey[i]];\r\n if (keyPart) {\r\n if (filter.length > 0) {\r\n filter.push(\"and\")\r\n }\r\n filter.push([dataSourceKey[i], operation, keyPart])\r\n }\r\n }\r\n } else {\r\n filter = [dataSourceKey, operation, key]\r\n }\r\n return filter\r\n },\r\n _getLastItemIndex: function() {\r\n return this.items(true).length - 1\r\n }\r\n }\r\n },\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 _this5 = this;\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var tabIndex = this.option(\"tabIndex\") || 0;\r\n var dataController = this._dataController;\r\n var columnsController = this._columnsController;\r\n var rowIndex = dataController.getRowIndexByKey(focusedRowKey);\r\n var columnIndex = this.option(\"focusedColumnIndex\");\r\n var $row = this._findRowElementForTabIndex();\r\n if (!(0, _type.isDefined)(this._scrollToFocusOnResize)) {\r\n this._scrollToFocusOnResize = function() {\r\n _this5.scrollToElementVertically(_this5._findRowElementForTabIndex());\r\n _this5.resizeCompleted.remove(_this5._scrollToFocusOnResize)\r\n }\r\n }\r\n $row.attr(\"tabIndex\", tabIndex);\r\n if (rowIndex >= 0 && !preventScroll) {\r\n if (columnIndex < 0) {\r\n columnIndex = 0\r\n }\r\n rowIndex += dataController.getRowIndexOffset();\r\n columnIndex += columnsController.getColumnIndexOffset();\r\n this.getController(\"keyboardNavigation\").setFocusedCellPosition(rowIndex, columnIndex);\r\n if (this.getController(\"focus\").isAutoNavigateToFocusedRow()) {\r\n var dataSource = dataController.dataSource();\r\n var operationTypes = dataSource && dataSource.operationTypes();\r\n if (operationTypes && !operationTypes.paging && !dataController.isPagingByRendering()) {\r\n this.resizeCompleted.remove(this._scrollToFocusOnResize);\r\n this.resizeCompleted.add(this._scrollToFocusOnResize)\r\n }\r\n }\r\n }\r\n },\r\n _findRowElementForTabIndex: function() {\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var rowIndex = this._dataController.getRowIndexByKey(focusedRowKey);\r\n return (0, _renderer.default)(this.getRowElement(rowIndex >= 0 ? rowIndex : 0))\r\n },\r\n scrollToRowElement: function(key) {\r\n var rowIndex = this.getController(\"data\").getRowIndexByKey(key);\r\n var $row = (0, _renderer.default)(this.getRow(rowIndex));\r\n this.scrollToElementVertically($row)\r\n },\r\n scrollToElementVertically: function($row) {\r\n var scrollable = this.getScrollable();\r\n if (scrollable) {\r\n var position = scrollable.getScrollElementPosition($row, \"vertical\");\r\n scrollable.scrollTo({\r\n top: position\r\n })\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.virtual_columns.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _uiGrid_core = require(\"./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 HeaderFooterViewExtender = {\r\n _renderCore: function() {\r\n var that = this;\r\n var scrollLeft = that._scrollLeft;\r\n that.callBase.apply(that, arguments);\r\n if (that._columnsController.isVirtualMode() && scrollLeft >= 0) {\r\n that._scrollLeft = 0;\r\n that.scrollTo({\r\n left: scrollLeft\r\n })\r\n }\r\n }\r\n};\r\nvar ColumnsControllerExtender = function() {\r\n var getWidths = function(columns) {\r\n return columns.map(function(column) {\r\n return column.visibleWidth || parseFloat(column.width) || DEFAULT_COLUMN_WIDTH\r\n })\r\n };\r\n var members = {\r\n init: function() {\r\n var that = this;\r\n that.callBase();\r\n that._beginPageIndex = 0;\r\n that._endPageIndex = 0;\r\n that._position = 0;\r\n that._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 (0, _window.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 var that = this;\r\n if (that.isVirtualMode()) {\r\n var beginPageIndex = that.getBeginPageIndex(position);\r\n var endPageIndex = that.getEndPageIndex(position);\r\n var needColumnsChanged = position < that._position ? that._beginPageIndex > beginPageIndex : that._endPageIndex < endPageIndex;\r\n that._position = position;\r\n if (needColumnsChanged) {\r\n that._beginPageIndex = beginPageIndex;\r\n that._endPageIndex = endPageIndex;\r\n that._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(function(c) {\r\n return c.command\r\n }).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(function(c) {\r\n return c.command\r\n }).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(function(a, b) {\r\n return a + b\r\n }, 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(function(a, b) {\r\n return a + b\r\n }, 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 = (0, _uiGrid_core.createColumnsInfo)(columnsInfo, 0, beginFixedColumns.length)[rowIndex] || [];\r\n endFixedColumns = (0, _uiGrid_core.createColumnsInfo)(columnsInfo, visibleColumns.length - endFixedColumns.length, visibleColumns.length)[rowIndex] || [];\r\n visibleColumns = (0, _uiGrid_core.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(function(c) {\r\n return c.command\r\n }).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\nvar _default = {\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: HeaderFooterViewExtender,\r\n footerView: HeaderFooterViewExtender,\r\n rowsView: VirtualScrollingRowsViewExtender\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.keyboard_navigation.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.keyboard_navigation\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"keyboardNavigation\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (exporter.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.export = _export;\r\nObject.defineProperty(exports, \"fileSaver\", {\r\n enumerable: true,\r\n get: function() {\r\n return _file_saver.fileSaver\r\n }\r\n});\r\nexports.svg = exports.pdf = exports.image = exports.excel = void 0;\r\nvar _file_saver = require(\"./exporter/file_saver\");\r\nvar _excel_creator = require(\"./exporter/excel_creator\");\r\nvar _image_creator = require(\"./exporter/image_creator\");\r\nvar _svg_creator = require(\"./exporter/svg_creator\");\r\nvar _type = require(\"./core/utils/type\");\r\nvar _deferred = require(\"./core/utils/deferred\");\r\nvar _excel_format_converter = _interopRequireDefault(require(\"./exporter/excel_format_converter\"));\r\nvar _pdf_creator = require(\"./exporter/pdf_creator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _export(data, options, getData) {\r\n if (!data) {\r\n return (new _deferred.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 (0, _type.isFunction)(exportingAction) && exportingAction(eventArgs);\r\n if (!eventArgs.cancel) {\r\n return getData(data, options).then(function(blob) {\r\n (0, _type.isFunction)(exportedAction) && exportedAction();\r\n if ((0, _type.isFunction)(fileSavingAction)) {\r\n eventArgs.data = blob;\r\n fileSavingAction(eventArgs)\r\n }\r\n if (!eventArgs.cancel) {\r\n _file_saver.fileSaver.saveAs(eventArgs.fileName, options.format, blob, options.proxyUrl, options.forceProxy)\r\n }\r\n })\r\n }\r\n return (new _deferred.Deferred).resolve()\r\n}\r\nvar excel = {\r\n creator: _excel_creator.ExcelCreator,\r\n getData: _excel_creator.getData,\r\n formatConverter: _excel_format_converter.default\r\n};\r\nexports.excel = excel;\r\nvar image = {\r\n creator: _image_creator.imageCreator,\r\n getData: _image_creator.getData,\r\n testFormats: _image_creator.testFormats\r\n};\r\nexports.image = image;\r\nvar pdf = {\r\n getData: _pdf_creator.getData\r\n};\r\nexports.pdf = pdf;\r\nvar svg = {\r\n creator: _svg_creator.svgCreator,\r\n getData: _svg_creator.getData\r\n};\r\nexports.svg = svg;\r\n","/**\r\n * DevExtreme (ui/tree_view/ui.tree_view.search.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.search_box_mixin\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiTree_view = _interopRequireDefault(require(\"./ui.tree_view.base\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar WIDGET_CLASS = \"dx-treeview\";\r\nvar NODE_CONTAINER_CLASS = \"\".concat(WIDGET_CLASS, \"-node-container\");\r\nvar TreeViewSearch = _uiTree_view.default.inherit(_ui.default).inherit({\r\n _addWidgetPrefix: function(className) {\r\n return \"\".concat(WIDGET_CLASS, \"-\").concat(className)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"searchValue\":\r\n if (this._showCheckboxes() && this._isRecursiveSelection()) {\r\n this._removeSelection()\r\n }\r\n this._initDataAdapter();\r\n this._updateSearch();\r\n this._repaintContainer();\r\n break;\r\n case \"searchExpr\":\r\n this._initDataAdapter();\r\n this.repaint();\r\n break;\r\n case \"searchMode\":\r\n this.option(\"expandNodesRecursive\") ? this._updateDataAdapter() : this._initDataAdapter();\r\n this.repaint();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _updateDataAdapter: function() {\r\n this._setOptionWithoutOptionChange(\"expandNodesRecursive\", false);\r\n this._initDataAdapter();\r\n this._setOptionWithoutOptionChange(\"expandNodesRecursive\", true)\r\n },\r\n _getDataAdapterOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n searchValue: this.option(\"searchValue\"),\r\n searchMode: this.option(\"searchMode\") || \"contains\",\r\n searchExpr: this.option(\"searchExpr\")\r\n })\r\n },\r\n _updateSearch: function() {\r\n if (this._searchEditor) {\r\n var editorOptions = this._getSearchEditorOptions();\r\n this._searchEditor.option(editorOptions)\r\n }\r\n },\r\n _repaintContainer: function() {\r\n var $container = this.$element().find(\".\".concat(NODE_CONTAINER_CLASS)).first();\r\n var rootNodes;\r\n if ($container.length) {\r\n $container.empty();\r\n rootNodes = this._dataAdapter.getRootNodes();\r\n this._renderEmptyMessage(rootNodes);\r\n this._renderItems($container, rootNodes);\r\n this._fireContentReadyAction()\r\n }\r\n },\r\n _itemContainer: function(isSearchMode) {\r\n if (this._scrollableContainer && isSearchMode) {\r\n return (0, _renderer.default)(this._scrollableContainer.content())\r\n }\r\n return this.callBase()\r\n },\r\n _addWidgetClass: function() {\r\n this.$element().addClass(this._widgetClass())\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n this._removeSearchBox()\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxTreeView\", TreeViewSearch);\r\nvar _default = TreeViewSearch;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.column_headers.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiGrid_core = require(\"./ui.grid_core.columns_view\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core2 = require(\"./ui.grid_core.accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar CELL_CONTENT_CLASS = \"text-content\";\r\nvar HEADERS_CLASS = \"headers\";\r\nvar NOWRAP_CLASS = \"nowrap\";\r\nvar ROW_CLASS_SELECTOR = \".dx-row\";\r\nvar HEADER_ROW_CLASS = \"dx-header-row\";\r\nvar COLUMN_LINES_CLASS = \"dx-column-lines\";\r\nvar CONTEXT_MENU_SORT_ASC_ICON = \"context-menu-sort-asc\";\r\nvar CONTEXT_MENU_SORT_DESC_ICON = \"context-menu-sort-desc\";\r\nvar CONTEXT_MENU_SORT_NONE_ICON = \"context-menu-sort-none\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar VISIBILITY_HIDDEN_CLASS = \"dx-visibility-hidden\";\r\nvar TEXT_CONTENT_ALIGNMENT_CLASS_PREFIX = \"dx-text-content-alignment-\";\r\nvar SORT_INDICATOR_CLASS = \"dx-sort-indicator\";\r\nvar SORT_INDEX_INDICATOR_CLASS = \"dx-sort-index-indicator\";\r\nvar HEADER_FILTER_CLASS_SELECTOR = \".dx-header-filter\";\r\nvar HEADER_FILTER_INDICATOR_CLASS = \"dx-header-filter-indicator\";\r\nvar MULTI_ROW_HEADER_CLASS = \"dx-header-multi-row\";\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n showColumnHeaders: true,\r\n cellHintEnabled: true\r\n }\r\n },\r\n views: {\r\n columnHeadersView: _uiGrid_core.ColumnsView.inherit(function() {\r\n var createCellContent = function(that, $cell, options) {\r\n var $cellContent = (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(CELL_CONTENT_CLASS));\r\n that.setAria(\"role\", \"presentation\", $cellContent);\r\n addCssClassesToCellContent(that, $cell, options.column, $cellContent);\r\n var showColumnLines = that.option(\"showColumnLines\");\r\n var contentAlignment = that.getController(\"columns\").getHeaderContentAlignment(options.column.alignment);\r\n return $cellContent[showColumnLines || \"right\" === contentAlignment ? \"appendTo\" : \"prependTo\"]($cell)\r\n };\r\n\r\n function addCssClassesToCellContent(that, $cell, column, $cellContent) {\r\n var $indicatorElements = that._getIndicatorElements($cell, true);\r\n var $visibleIndicatorElements = that._getIndicatorElements($cell);\r\n var indicatorCount = $indicatorElements && $indicatorElements.length;\r\n var columnAlignment = that._getColumnAlignment(column.alignment);\r\n var sortIndicatorClassName = \".\".concat(that._getIndicatorClassName(\"sort\"));\r\n var sortIndexIndicatorClassName = \".\".concat(that._getIndicatorClassName(\"sortIndex\"));\r\n var $sortIndicator = $visibleIndicatorElements.filter(sortIndicatorClassName);\r\n var $sortIndexIndicator = $visibleIndicatorElements.children().filter(sortIndexIndicatorClassName);\r\n $cellContent = $cellContent || $cell.children(\".\" + that.addWidgetPrefix(CELL_CONTENT_CLASS));\r\n $cellContent.toggleClass(TEXT_CONTENT_ALIGNMENT_CLASS_PREFIX + columnAlignment, indicatorCount > 0).toggleClass(TEXT_CONTENT_ALIGNMENT_CLASS_PREFIX + (\"left\" === columnAlignment ? \"right\" : \"left\"), indicatorCount > 0 && \"center\" === column.alignment).toggleClass(SORT_INDICATOR_CLASS, !!$sortIndicator.length).toggleClass(SORT_INDEX_INDICATOR_CLASS, !!$sortIndexIndicator.length).toggleClass(HEADER_FILTER_INDICATOR_CLASS, !!$visibleIndicatorElements.filter(\".\" + that._getIndicatorClassName(\"headerFilter\")).length)\r\n }\r\n return {\r\n _createTable: function() {\r\n var $table = this.callBase.apply(this, arguments);\r\n _events_engine.default.on($table, \"mousedown selectstart\", this.createAction(function(e) {\r\n var event = e.event;\r\n if (event.shiftKey) {\r\n event.preventDefault()\r\n }\r\n }));\r\n return $table\r\n },\r\n _isLegacyKeyboardNavigation: function() {\r\n return this.option(\"useLegacyKeyboardNavigation\")\r\n },\r\n _getDefaultTemplate: function(column) {\r\n var that = this;\r\n return function($container, options) {\r\n var $content = column.command ? $container : createCellContent(that, $container, options);\r\n var caption = \"expand\" !== column.command && column.caption;\r\n if (caption) {\r\n $content.text(caption)\r\n } else {\r\n if (column.command) {\r\n $container.html(\" \")\r\n }\r\n }\r\n }\r\n },\r\n _getHeaderTemplate: function(column) {\r\n return column.headerCellTemplate || {\r\n allowRenderToDetachedContainer: true,\r\n render: this._getDefaultTemplate(column)\r\n }\r\n },\r\n _processTemplate: function(template, options) {\r\n var that = this;\r\n var resultTemplate;\r\n var column = options.column;\r\n var renderingTemplate = that.callBase(template);\r\n if (\"header\" === options.rowType && renderingTemplate && column.headerCellTemplate && !column.command) {\r\n resultTemplate = {\r\n render: function(options) {\r\n var $content = createCellContent(that, options.container, options.model);\r\n renderingTemplate.render((0, _extend.extend)({}, options, {\r\n container: $content\r\n }))\r\n }\r\n }\r\n } else {\r\n resultTemplate = renderingTemplate\r\n }\r\n return resultTemplate\r\n },\r\n _handleDataChanged: function(e) {\r\n if (\"refresh\" !== e.changeType) {\r\n return\r\n }\r\n if (this._isGroupingChanged || this._requireReady) {\r\n this._isGroupingChanged = false;\r\n this.render()\r\n }\r\n },\r\n _renderCell: function($row, options) {\r\n var $cell = this.callBase($row, options);\r\n if (\"header\" === options.row.rowType) {\r\n $cell.addClass(CELL_FOCUS_DISABLED_CLASS);\r\n if (!this._isLegacyKeyboardNavigation()) {\r\n if (options.column && !options.column.type) {\r\n $cell.attr(\"tabindex\", this.option(\"tabindex\") || 0)\r\n }\r\n }\r\n }\r\n return $cell\r\n },\r\n _setCellAriaAttributes: function($cell, cellOptions) {\r\n this.callBase($cell, cellOptions);\r\n if (\"header\" === cellOptions.rowType) {\r\n this.setAria(\"role\", \"columnheader\", $cell);\r\n if (cellOptions.column && !cellOptions.column.command && !cellOptions.column.isBand) {\r\n $cell.attr(\"id\", cellOptions.column.headerId);\r\n this.setAria(\"label\", _message.default.format(\"dxDataGrid-ariaColumn\") + \" \" + cellOptions.column.caption, $cell)\r\n }\r\n }\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row).toggleClass(COLUMN_LINES_CLASS, this.option(\"showColumnLines\"));\r\n if (\"header\" === row.rowType) {\r\n $row.addClass(HEADER_ROW_CLASS);\r\n if (!this._isLegacyKeyboardNavigation()) {\r\n (0, _uiGrid_core2.registerKeyboardAction)(\"columnHeaders\", this, $row, \"td\", this._handleActionKeyDown.bind(this))\r\n }\r\n }\r\n return $row\r\n },\r\n _handleActionKeyDown: function(args) {\r\n var event = args.event;\r\n var $target = (0, _renderer.default)(event.target);\r\n this._lastActionElement = event.target;\r\n if ($target.is(HEADER_FILTER_CLASS_SELECTOR)) {\r\n var headerFilterController = this.getController(\"headerFilter\");\r\n var $column = $target.closest(\"td\");\r\n var columnIndex = this.getColumnIndexByElement($column);\r\n if (columnIndex >= 0) {\r\n headerFilterController.showHeaderFilterMenu(columnIndex, false)\r\n }\r\n } else {\r\n var $row = $target.closest(ROW_CLASS_SELECTOR);\r\n this._processHeaderAction(event, $row)\r\n }\r\n event.preventDefault()\r\n },\r\n _renderCore: function() {\r\n var that = this;\r\n var $container = that.element();\r\n if (that._tableElement && !that._dataController.isLoaded() && !that._hasRowElements) {\r\n return\r\n }\r\n $container.addClass(that.addWidgetPrefix(HEADERS_CLASS)).toggleClass(that.addWidgetPrefix(NOWRAP_CLASS), !that.option(\"wordWrapEnabled\")).empty();\r\n that.setAria(\"role\", \"presentation\", $container);\r\n that._updateContent(that._renderTable());\r\n if (that.getRowCount() > 1) {\r\n $container.addClass(MULTI_ROW_HEADER_CLASS)\r\n }\r\n that.callBase.apply(that, arguments)\r\n },\r\n _renderRows: function() {\r\n var that = this;\r\n if (that._dataController.isLoaded() || that._hasRowElements) {\r\n that.callBase.apply(that, arguments);\r\n that._hasRowElements = true\r\n }\r\n },\r\n _getRowVisibleColumns: function(rowIndex) {\r\n return this._columnsController.getVisibleColumns(rowIndex)\r\n },\r\n _renderRow: function($table, options) {\r\n options.columns = this._getRowVisibleColumns(options.row.rowIndex);\r\n this.callBase($table, options)\r\n },\r\n _createCell: function(options) {\r\n var column = options.column;\r\n var $cellElement = this.callBase.apply(this, arguments);\r\n column.rowspan > 1 && \"header\" === options.rowType && $cellElement.attr(\"rowSpan\", column.rowspan);\r\n return $cellElement\r\n },\r\n _getRows: function() {\r\n var result = [];\r\n var rowCount = this.getRowCount();\r\n if (this.option(\"showColumnHeaders\")) {\r\n for (var i = 0; i < rowCount; i++) {\r\n result.push({\r\n rowType: \"header\",\r\n rowIndex: i\r\n })\r\n }\r\n }\r\n return result\r\n },\r\n _getCellTemplate: function(options) {\r\n if (\"header\" === options.rowType) {\r\n return this._getHeaderTemplate(options.column)\r\n }\r\n },\r\n _columnOptionChanged: function(e) {\r\n var changeTypes = e.changeTypes;\r\n var optionNames = e.optionNames;\r\n if (changeTypes.grouping) {\r\n this._isGroupingChanged = true;\r\n return\r\n }\r\n this.callBase(e);\r\n if (optionNames.width || optionNames.visible) {\r\n this.resizeCompleted.fire()\r\n }\r\n },\r\n _isElementVisible: function(elementOptions) {\r\n return elementOptions && elementOptions.visible\r\n },\r\n _alignCaptionByCenter: function($cell) {\r\n var $indicatorsContainer = this._getIndicatorContainer($cell, true);\r\n if ($indicatorsContainer && $indicatorsContainer.length) {\r\n $indicatorsContainer.filter(\".\" + VISIBILITY_HIDDEN_CLASS).remove();\r\n $indicatorsContainer = this._getIndicatorContainer($cell);\r\n $indicatorsContainer.clone().addClass(VISIBILITY_HIDDEN_CLASS).css(\"float\", \"\").insertBefore($cell.children(\".\" + this.addWidgetPrefix(CELL_CONTENT_CLASS)))\r\n }\r\n },\r\n _updateCell: function($cell, options) {\r\n if (\"header\" === options.rowType && \"center\" === options.column.alignment) {\r\n this._alignCaptionByCenter($cell)\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _updateIndicator: function($cell, column, indicatorName) {\r\n var $indicatorElement = this.callBase.apply(this, arguments);\r\n if (\"center\" === column.alignment) {\r\n this._alignCaptionByCenter($cell)\r\n }\r\n addCssClassesToCellContent(this, $cell, column);\r\n return $indicatorElement\r\n },\r\n _getIndicatorContainer: function($cell, returnAll) {\r\n var $indicatorsContainer = this.callBase($cell);\r\n return returnAll ? $indicatorsContainer : $indicatorsContainer.filter(\":not(.\" + VISIBILITY_HIDDEN_CLASS + \")\")\r\n },\r\n _isSortableElement: function() {\r\n return true\r\n },\r\n getHeadersRowHeight: function() {\r\n var $tableElement = this._getTableElement();\r\n var $headerRows = $tableElement && $tableElement.find(\".\" + HEADER_ROW_CLASS);\r\n return $headerRows && $headerRows.toArray().reduce(function(sum, headerRow) {\r\n return sum + (0, _renderer.default)(headerRow).height()\r\n }, 0) || 0\r\n },\r\n getHeaderElement: function(index) {\r\n var columnElements = this.getColumnElements();\r\n return columnElements && columnElements.eq(index)\r\n },\r\n getColumnElements: function(index, bandColumnIndex) {\r\n var that = this;\r\n var $cellElement;\r\n var columnsController = that._columnsController;\r\n var rowCount = that.getRowCount();\r\n if (that.option(\"showColumnHeaders\")) {\r\n if (rowCount > 1 && (!(0, _type.isDefined)(index) || (0, _type.isDefined)(bandColumnIndex))) {\r\n var result = [];\r\n var visibleColumns = (0, _type.isDefined)(bandColumnIndex) ? columnsController.getChildrenByBandColumn(bandColumnIndex, true) : columnsController.getVisibleColumns();\r\n (0, _iterator.each)(visibleColumns, function(_, column) {\r\n var rowIndex = (0, _type.isDefined)(index) ? index : columnsController.getRowIndex(column.index);\r\n $cellElement = that._getCellElement(rowIndex, columnsController.getVisibleIndex(column.index, rowIndex));\r\n $cellElement && result.push($cellElement.get(0))\r\n });\r\n return (0, _renderer.default)(result)\r\n } else {\r\n if (!index || index < rowCount) {\r\n return that.getCellElements(index || 0)\r\n }\r\n }\r\n }\r\n },\r\n getColumnIndexByElement: function($cell) {\r\n var cellIndex = this.getCellIndex($cell);\r\n var $row = $cell.closest(\".dx-row\");\r\n var rowIndex = $row[0].rowIndex;\r\n var column = this.getColumns(rowIndex)[cellIndex];\r\n return column ? column.index : -1\r\n },\r\n getVisibleColumnIndex: function(columnIndex, rowIndex) {\r\n var column = this.getColumns()[columnIndex];\r\n return column ? this._columnsController.getVisibleIndex(column.index, rowIndex) : -1\r\n },\r\n getColumnWidths: function() {\r\n var $columnElements = this.getColumnElements();\r\n if ($columnElements && $columnElements.length) {\r\n return this._getWidths($columnElements)\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n allowDragging: function(column, sourceLocation, draggingPanels) {\r\n var i;\r\n var draggableColumnCount = 0;\r\n var rowIndex = column && this._columnsController.getRowIndex(column.index);\r\n var columns = this.getColumns(0 === rowIndex ? 0 : null);\r\n var canHideColumn = (null === column || void 0 === column ? void 0 : column.allowHiding) && columns.length > 1;\r\n var allowDrag = function(column) {\r\n return column.allowReordering || column.allowGrouping || column.allowHiding\r\n };\r\n for (i = 0; i < columns.length; i++) {\r\n if (allowDrag(columns[i])) {\r\n draggableColumnCount++\r\n }\r\n }\r\n if (draggableColumnCount <= 1 && !canHideColumn) {\r\n return false\r\n } else {\r\n if (!draggingPanels) {\r\n return (this.option(\"allowColumnReordering\") || this._columnsController.isColumnOptionUsed(\"allowReordering\")) && column && column.allowReordering\r\n }\r\n }\r\n for (i = 0; i < draggingPanels.length; i++) {\r\n var draggingPanel = draggingPanels[i];\r\n if (draggingPanel && draggingPanel.allowDragging(column, sourceLocation)) {\r\n return true\r\n }\r\n }\r\n return false\r\n },\r\n getBoundingRect: function() {\r\n var that = this;\r\n var $columnElements = that.getColumnElements();\r\n if ($columnElements && $columnElements.length) {\r\n var offset = that._getTableElement().offset();\r\n return {\r\n top: offset.top\r\n }\r\n }\r\n return null\r\n },\r\n getName: function() {\r\n return \"headers\"\r\n },\r\n getColumnCount: function() {\r\n var $columnElements = this.getColumnElements();\r\n return $columnElements ? $columnElements.length : 0\r\n },\r\n isVisible: function() {\r\n return this.option(\"showColumnHeaders\")\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"showColumnHeaders\":\r\n case \"wordWrapEnabled\":\r\n case \"showColumnLines\":\r\n that._invalidate(true, true);\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n },\r\n getHeight: function() {\r\n return this.getElementHeight()\r\n },\r\n getContextMenuItems: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n if (options.row && (\"header\" === options.row.rowType || \"detailAdaptive\" === options.row.rowType)) {\r\n var sortingOptions = that.option(\"sorting\");\r\n if (sortingOptions && \"none\" !== sortingOptions.mode && column && column.allowSorting) {\r\n var onItemClick = function(params) {\r\n setTimeout(function() {\r\n that._columnsController.changeSortOrder(column.index, params.itemData.value)\r\n })\r\n };\r\n return [{\r\n text: sortingOptions.ascendingText,\r\n value: \"asc\",\r\n disabled: \"asc\" === column.sortOrder,\r\n icon: CONTEXT_MENU_SORT_ASC_ICON,\r\n onItemClick: onItemClick\r\n }, {\r\n text: sortingOptions.descendingText,\r\n value: \"desc\",\r\n disabled: \"desc\" === column.sortOrder,\r\n icon: CONTEXT_MENU_SORT_DESC_ICON,\r\n onItemClick: onItemClick\r\n }, {\r\n text: sortingOptions.clearText,\r\n value: \"none\",\r\n disabled: !column.sortOrder,\r\n icon: CONTEXT_MENU_SORT_NONE_ICON,\r\n onItemClick: onItemClick\r\n }]\r\n }\r\n }\r\n },\r\n getRowCount: function() {\r\n return this._columnsController && this._columnsController.getRowCount()\r\n },\r\n setRowsOpacity: function(columnIndex, value, rowIndex) {\r\n var that = this;\r\n var i;\r\n var columnElements;\r\n var rowCount = that.getRowCount();\r\n var columns = that._columnsController.getColumns();\r\n var column = columns && columns[columnIndex];\r\n var columnID = column && column.isBand && column.index;\r\n var setColumnOpacity = function(index, column) {\r\n if (column.ownerBand === columnID) {\r\n columnElements.eq(index).css({\r\n opacity: value\r\n });\r\n if (column.isBand) {\r\n that.setRowsOpacity(column.index, value, i + 1)\r\n }\r\n }\r\n };\r\n if ((0, _type.isDefined)(columnID)) {\r\n rowIndex = rowIndex || 0;\r\n for (i = rowIndex; i < rowCount; i++) {\r\n columnElements = that.getCellElements(i);\r\n (0, _iterator.each)(that.getColumns(i), setColumnOpacity)\r\n }\r\n }\r\n }\r\n }\r\n }())\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/filter_builder/filter_builder.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _tree_view = _interopRequireDefault(require(\"../tree_view\"));\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _utils = require(\"../overlay/utils\");\r\nvar _ui2 = _interopRequireDefault(require(\"../shared/ui.editor_factory_mixin\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _utils2 = require(\"./utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\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.default.inherit(_ui2.default);\r\nvar FilterBuilder = _ui.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.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: _message.default.format(\"dxFilterBuilder-and\"),\r\n or: _message.default.format(\"dxFilterBuilder-or\"),\r\n notAnd: _message.default.format(\"dxFilterBuilder-notAnd\"),\r\n notOr: _message.default.format(\"dxFilterBuilder-notOr\")\r\n },\r\n customOperations: [],\r\n closePopupOnTargetScroll: true,\r\n filterOperationDescriptions: {\r\n between: _message.default.format(\"dxFilterBuilder-filterOperationBetween\"),\r\n equal: _message.default.format(\"dxFilterBuilder-filterOperationEquals\"),\r\n notEqual: _message.default.format(\"dxFilterBuilder-filterOperationNotEquals\"),\r\n lessThan: _message.default.format(\"dxFilterBuilder-filterOperationLess\"),\r\n lessThanOrEqual: _message.default.format(\"dxFilterBuilder-filterOperationLessOrEquals\"),\r\n greaterThan: _message.default.format(\"dxFilterBuilder-filterOperationGreater\"),\r\n greaterThanOrEqual: _message.default.format(\"dxFilterBuilder-filterOperationGreaterOrEquals\"),\r\n startsWith: _message.default.format(\"dxFilterBuilder-filterOperationStartsWith\"),\r\n contains: _message.default.format(\"dxFilterBuilder-filterOperationContains\"),\r\n notContains: _message.default.format(\"dxFilterBuilder-filterOperationNotContains\"),\r\n endsWith: _message.default.format(\"dxFilterBuilder-filterOperationEndsWith\"),\r\n isBlank: _message.default.format(\"dxFilterBuilder-filterOperationIsBlank\"),\r\n isNotBlank: _message.default.format(\"dxFilterBuilder-filterOperationIsNotBlank\")\r\n }\r\n })\r\n },\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 = (0, _extend.extend)(true, [], this._model);\r\n return (0, _utils2.getFilterExpression)((0, _utils2.getNormalizedFilter)(value), fields, this._customOperations, SOURCE)\r\n },\r\n _getNormalizedFields: function() {\r\n return (0, _utils2.getNormalizedFields)(this.option(\"fields\"))\r\n },\r\n _updateFilter: function() {\r\n this._disableInvalidateForValue = true;\r\n var value = (0, _extend.extend)(true, [], this._model);\r\n var normalizedValue = (0, _utils2.getNormalizedFilter)(value);\r\n var oldValue = (0, _utils2.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 = (0, _utils2.getMergedOperations)(this.option(\"customOperations\"), this.option(\"filterOperationDescriptions.between\"), this)\r\n },\r\n _getModel: function(value) {\r\n return (0, _utils2.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 = (0, _extend.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 (0, _renderer.default)(\"
\").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 = (0, _utils2.getGroupCriteria)(criteria);\r\n for (var i = 0; i < groupCriteria.length; i++) {\r\n var innerCriteria = groupCriteria[i];\r\n if ((0, _utils2.isGroup)(innerCriteria)) {\r\n this._createGroupElementByCriteria(innerCriteria, groupCriteria, groupLevel + 1).appendTo($groupContent)\r\n } else {\r\n if ((0, _utils2.isCondition)(innerCriteria)) {\r\n this._createConditionElement(innerCriteria, groupCriteria).appendTo($groupContent)\r\n }\r\n }\r\n }\r\n return $group\r\n },\r\n _createGroupElement: function(criteria, parent, groupLevel) {\r\n var _this = this;\r\n var $groupItem = (0, _renderer.default)(\"
\").addClass(FILTER_BUILDER_GROUP_ITEM_CLASS);\r\n var $groupContent = (0, _renderer.default)(\"
\").addClass(FILTER_BUILDER_GROUP_CONTENT_CLASS);\r\n var $group = (0, _renderer.default)(\"
\").addClass(FILTER_BUILDER_GROUP_CLASS).append($groupItem).append($groupContent);\r\n if (null != parent) {\r\n this._createRemoveButton(function() {\r\n (0, _utils2.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(function() {\r\n var newGroup = (0, _utils2.createEmptyGroup)(_this.option(\"defaultGroupOperation\"));\r\n (0, _utils2.addItem)(newGroup, criteria);\r\n _this._createGroupElement(newGroup, criteria, groupLevel + 1).appendTo($groupContent);\r\n _this._updateFilter()\r\n }, function() {\r\n var field = _this.option(\"fields\")[0];\r\n var newCondition = (0, _utils2.createCondition)(field, _this._customOperations);\r\n (0, _utils2.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 (0, _renderer.default)(\"
\").text(caption)\r\n },\r\n _createGroupOperationButton: function(criteria) {\r\n var _this2 = this;\r\n var groupOperations = this._getGroupOperations(criteria);\r\n var groupMenuItem = (0, _utils2.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: function(e) {\r\n if (groupMenuItem !== e.itemData) {\r\n (0, _utils2.setGroupValue)(criteria, e.itemData.value);\r\n $operationButton.html(e.itemData.text);\r\n groupMenuItem = e.itemData;\r\n _this2._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 menuOnItemClickWrapper = function(handler) {\r\n return function(e) {\r\n handler(e);\r\n if (\"dxclick\" === e.event.type) {\r\n removeMenu()\r\n }\r\n }\r\n };\r\n var position = rtlEnabled ? \"right\" : \"left\";\r\n var $button = this._createButton(options.caption);\r\n (0, _extend.extend)(options.menu, {\r\n focusStateEnabled: true,\r\n selectionMode: \"single\",\r\n onItemClick: menuOnItemClickWrapper(options.menu.onItemClick),\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 options.popup = {\r\n onShown: function(info) {\r\n var treeViewElement = (0, _renderer.default)(info.component.content()).find(\".dx-treeview\");\r\n var treeView = treeViewElement.dxTreeView(\"instance\");\r\n _events_engine.default.on(treeViewElement, \"keyup keydown\", function(e) {\r\n var keyName = (0, _index.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 _events_engine.default.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 = (0, _utils2.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 _this3 = this;\r\n var that = this;\r\n var availableOperations = (0, _utils2.getAvailableOperations)(field, this.option(\"filterOperationDescriptions\"), this._customOperations);\r\n var currentOperation = (0, _utils2.getOperationFromAvailable)((0, _utils2.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 && (0, _renderer.default)(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: function(e) {\r\n if (currentOperation !== e.itemData) {\r\n currentOperation = e.itemData;\r\n (0, _utils2.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 _this3._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 _this4 = this;\r\n var that = this;\r\n var allowHierarchicalFields = this.option(\"allowHierarchicalFields\");\r\n var items = (0, _utils2.getItems)(fields, allowHierarchicalFields);\r\n var item = (0, _utils2.getField)(field.name || field.dataField, items);\r\n var getFullCaption = function(item, items) {\r\n return allowHierarchicalFields ? (0, _utils2.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: function(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 (0, _utils2.updateConditionByOperation)(condition, (0, _utils2.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 _this4._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 _this5 = this;\r\n var $item = (0, _renderer.default)(\"
\").addClass(FILTER_BUILDER_GROUP_ITEM_CLASS);\r\n var fields = this._getNormalizedFields();\r\n var field = (0, _utils2.getField)(condition[0], fields);\r\n this._createRemoveButton(function() {\r\n (0, _utils2.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 _this5._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 = [(0, _utils2.getGroupValue)(criteria).replace(\"!\", \"not\")]\r\n }\r\n return groupOperations.map(function(operation) {\r\n return {\r\n text: groupOperationDescriptions[operation],\r\n value: OPERATORS[operation]\r\n }\r\n })\r\n },\r\n _createRemoveButton: function(handler) {\r\n var $removeButton = (0, _renderer.default)(\"
\").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 ((0, _type.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: _message.default.format(\"dxFilterBuilder-addCondition\"),\r\n click: addConditionHandler\r\n }, {\r\n caption: _message.default.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 = (0, _renderer.default)(\"
\").html(\" \").addClass(FILTER_BUILDER_ITEM_VALUE_TEXT_CLASS).attr(\"tabindex\", 0).appendTo($container);\r\n var value = item[2];\r\n var customOperation = (0, _utils2.getCustomOperation)(that._customOperations, item[1]);\r\n if (!customOperation && field.lookup) {\r\n (0, _utils2.getCurrentLookupValueText)(field, value, function(result) {\r\n (0, _utils2.renderValueText)($text, result)\r\n })\r\n } else {\r\n (0, _deferred.when)((0, _utils2.getCurrentValueText)(field, value, customOperation)).done(function(result) {\r\n (0, _utils2.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 = _dom_adapter.default.getDocument();\r\n var documentKeyUpHandler = function(e) {\r\n if (isComposing || hasCompositionJustEnded) {\r\n hasCompositionJustEnded = false;\r\n return\r\n }\r\n handler(e)\r\n };\r\n _events_engine.default.on(document, \"keyup\", documentKeyUpHandler);\r\n var input = $editor.find(\"input\");\r\n _events_engine.default.on(input, \"compositionstart\", function() {\r\n isComposing = true\r\n });\r\n _events_engine.default.on(input, \"compositionend\", function() {\r\n isComposing = false;\r\n hasCompositionJustEnded = true\r\n });\r\n _events_engine.default.on(input, \"keydown\", function(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 _this6 = this;\r\n var document = _dom_adapter.default.getDocument();\r\n var documentClickHandler = function(e) {\r\n if (!_this6._isFocusOnEditorParts($editor, e.target)) {\r\n _events_engine.default.trigger($editor.find(\"input\"), \"change\");\r\n closeEditorFunc()\r\n }\r\n };\r\n _events_engine.default.on(document, \"dxpointerdown\", documentClickHandler);\r\n this._documentClickHandler = documentClickHandler\r\n },\r\n _isFocusOnEditorParts: function($editor, target) {\r\n var activeElement = target || _dom_adapter.default.getActiveElement();\r\n return (0, _renderer.default)(activeElement).closest($editor.children()).length || (0, _renderer.default)(activeElement).closest(\".dx-dropdowneditor-overlay\").length\r\n },\r\n _removeEvents: function() {\r\n var document = _dom_adapter.default.getDocument();\r\n (0, _type.isDefined)(this._documentKeyUpHandler) && _events_engine.default.off(document, \"keyup\", this._documentKeyUpHandler);\r\n (0, _type.isDefined)(this._documentClickHandler) && _events_engine.default.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 _this7 = this;\r\n var value = item[2];\r\n var createValueText = function() {\r\n $container.empty();\r\n _this7._removeEvents();\r\n return _this7._createValueText(item, field, $container)\r\n };\r\n var closeEditor = function() {\r\n _this7._updateConditionValue(item, value, function() {\r\n createValueText()\r\n })\r\n };\r\n var options = {\r\n value: \"\" === value ? null : value,\r\n filterOperation: (0, _utils2.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 _events_engine.default.trigger($editor.find(\"input\").not(\":hidden\").eq(0), \"focus\");\r\n this._removeEvents();\r\n this._addDocumentClick($editor, closeEditor);\r\n this._addDocumentKeyUp($editor, function(e) {\r\n var keyName = (0, _index.normalizeKeyName)(e);\r\n if (keyName === TAB_KEY) {\r\n if (_this7._isFocusOnEditorParts($editor)) {\r\n return\r\n }\r\n _this7._updateConditionValue(item, value, function() {\r\n createValueText();\r\n if (e.shiftKey) {\r\n _events_engine.default.trigger($container.prev(), \"focus\")\r\n }\r\n })\r\n }\r\n if (keyName === ESCAPE_KEY) {\r\n _events_engine.default.trigger(createValueText(), \"focus\")\r\n }\r\n if (keyName === ENTER_KEY) {\r\n _this7._updateConditionValue(item, value, function() {\r\n _events_engine.default.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 = (0, _renderer.default)(\"
\").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 = (0, _renderer.default)(\"
\").attr(\"tabindex\", 0).appendTo($container);\r\n var customOperation = (0, _utils2.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: (0, _extend.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, (0, _extend.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 = (0, _renderer.default)(\"
\").addClass(options.menu.cssClass).appendTo($container);\r\n this._createComponent($popup, _popup.default, {\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 = (0, _renderer.default)(\"
\").appendTo(contentElement);\r\n that._createComponent($menuContainer, _tree_view.default, options.menu);\r\n this.repaint()\r\n },\r\n maxHeight: function() {\r\n return (0, _utils.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 _events_engine.default.on($button, \"dxclick\", handler);\r\n _events_engine.default.on($button, \"keyup\", function(e) {\r\n if ((0, _index.normalizeKeyName)(e) === ENTER_KEY) {\r\n handler(e)\r\n }\r\n })\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxFilterBuilder\", FilterBuilder);\r\nvar _default = FilterBuilder;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.search.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.search\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"search\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.virtual_scrolling_core.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getContentHeightLimit = getContentHeightLimit;\r\nexports.subscribeToExternalScrollers = subscribeToExternalScrollers;\r\nexports.VirtualScrollController = exports.getPixelRatio = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SCROLLING_MODE_INFINITE = \"infinite\";\r\nvar SCROLLING_MODE_VIRTUAL = \"virtual\";\r\nvar isVirtualMode = function(that) {\r\n return that.option(\"scrolling.mode\") === SCROLLING_MODE_VIRTUAL || that._isVirtual\r\n};\r\nvar isAppendMode = function(that) {\r\n return that.option(\"scrolling.mode\") === SCROLLING_MODE_INFINITE && !that._isVirtual\r\n};\r\nvar needTwoPagesLoading = function(that) {\r\n return that.option(\"scrolling.loadTwoPagesOnStart\") || that._isVirtual || that._viewportItemIndex > 0\r\n};\r\nvar getPixelRatio = function(window) {\r\n return window.devicePixelRatio || 1\r\n};\r\nexports.getPixelRatio = getPixelRatio;\r\n\r\nfunction getContentHeightLimit(browser) {\r\n if (browser.msie) {\r\n return 4e6\r\n } else {\r\n if (browser.mozilla) {\r\n return 8e6\r\n }\r\n }\r\n return 15e6 / getPixelRatio((0, _window.getWindow)())\r\n}\r\n\r\nfunction 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 = _position.default.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\r\n function createWindowScrollHandler(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 }\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 && (0, _renderer.default)((0, _window.getWindow)()) || \"auto\" === $scrollElement.css(\"overflowY\") && $scrollElement;\r\n eventsStrategy = _events_engine.default;\r\n if (!scrollable) {\r\n return\r\n }\r\n }\r\n var handler = createWindowScrollHandler(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 (0, _iterator.each)(scrollToArray, function(_, scrollTo) {\r\n scrollTo(pos)\r\n })\r\n },\r\n dispose: function() {\r\n (0, _iterator.each)(disposeArray, function(_, dispose) {\r\n dispose()\r\n })\r\n }\r\n }\r\n}\r\nvar VirtualScrollController = _class.default.inherit(function() {\r\n var getViewportPageCount = function(that) {\r\n var pageSize = that._dataSource.pageSize();\r\n var preventPreload = that.option(\"scrolling.preventPreload\");\r\n if (preventPreload) {\r\n return 0\r\n }\r\n var realViewportSize = that._viewportSize;\r\n if (isVirtualMode(that) && !that.option(\"legacyRendering\") && that.option(\"scrolling.removeInvisiblePages\")) {\r\n realViewportSize = 0;\r\n var viewportSize = that._viewportSize * that._viewportItemSize;\r\n var offset = that.getContentOffset();\r\n var position = that._position || 0;\r\n var virtualItemsCount = that.virtualItemsCount();\r\n var totalItemsCount = that._dataSource.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._itemSizes[itemIndex] || that._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\n var getPreloadPageCount = function(that, previous) {\r\n var preloadEnabled = that.option(\"scrolling.preloadEnabled\");\r\n var pageCount = getViewportPageCount(that);\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(that) || !needTwoPagesLoading(that)) {\r\n pageCount--\r\n }\r\n }\r\n }\r\n return pageCount\r\n };\r\n var getPageIndexForLoad = function(that) {\r\n var result = -1;\r\n var beginPageIndex = getBeginPageIndex(that);\r\n var dataSource = that._dataSource;\r\n if (beginPageIndex < 0) {\r\n result = that._pageIndex\r\n } else {\r\n if (!that._cache[that._pageIndex - beginPageIndex]) {\r\n result = that._pageIndex\r\n } else {\r\n if (beginPageIndex >= 0 && that._viewportSize >= 0) {\r\n if (beginPageIndex > 0) {\r\n var needToLoadPageBeforeLast = getEndPageIndex(that) + 1 === dataSource.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 }\r\n }\r\n if (that._loadingPageIndexes[result]) {\r\n result = -1\r\n }\r\n return result\r\n };\r\n\r\n function getBeginPageIndex(that) {\r\n return that._cache.length ? that._cache[0].pageIndex : -1\r\n }\r\n\r\n function getEndPageIndex(that) {\r\n return that._cache.length ? that._cache[that._cache.length - 1].pageIndex : -1\r\n }\r\n var fireChanged = function(that, changed, args) {\r\n that._isChangedFiring = true;\r\n changed(args);\r\n that._isChangedFiring = false\r\n };\r\n var processDelayChanged = function(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\n var processChanged = function(that, changed, changeType, isDelayChanged, removeCacheItem) {\r\n var dataSource = that._dataSource;\r\n var items = dataSource.items().slice();\r\n var change = (0, _type.isObject)(changeType) ? changeType : void 0;\r\n var isPrepend = \"prepend\" === changeType;\r\n var viewportItems = dataSource.viewportItems();\r\n if (changeType && (0, _type.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 && dataSource.correctCount) {\r\n change.removeCount = dataSource.correctCount(viewportItems, change.removeCount, isPrepend)\r\n }\r\n }\r\n }\r\n var removeItemCount = removeCacheItem ? removeCacheItem.itemsLength : 0;\r\n if (removeItemCount && dataSource.correctCount) {\r\n removeItemCount = dataSource.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 {\r\n 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._dataSource.viewportItems(items)\r\n }\r\n }\r\n dataSource.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\n var loadCore = function(that, pageIndex) {\r\n var dataSource = that._dataSource;\r\n if (pageIndex === that.pageIndex() || !dataSource.isLoading() && pageIndex < dataSource.pageCount() || !dataSource.hasKnownLastPage() && pageIndex === dataSource.pageCount()) {\r\n dataSource.pageIndex(pageIndex);\r\n that._loadingPageIndexes[pageIndex] = true;\r\n return (0, _deferred.when)(dataSource.load()).always(function() {\r\n that._loadingPageIndexes[pageIndex] = false\r\n })\r\n }\r\n };\r\n return {\r\n ctor: function(component, dataSource, isVirtual) {\r\n var that = this;\r\n that._dataSource = dataSource;\r\n that.component = component;\r\n that._pageIndex = that._lastPageIndex = dataSource.pageIndex();\r\n that._viewportSize = 0;\r\n that._viewportItemSize = 20;\r\n that._viewportItemIndex = -1;\r\n that._itemSizes = {};\r\n that._sizeRatio = 1;\r\n that._items = [];\r\n that._cache = [];\r\n that._isVirtual = isVirtual;\r\n that._loadingPageIndexes = {};\r\n that.positionChanged = (0, _callbacks.default)()\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 virtualItemsCount: function() {\r\n var that = this;\r\n var pageIndex;\r\n var itemsCount = 0;\r\n if (isVirtualMode(that)) {\r\n pageIndex = getBeginPageIndex(that);\r\n if (pageIndex < 0) {\r\n pageIndex = that._dataSource.pageIndex()\r\n }\r\n var beginItemsCount = pageIndex * that._dataSource.pageSize();\r\n itemsCount = that._cache.length * that._dataSource.pageSize();\r\n var endItemsCount = Math.max(0, that._dataSource.totalItemsCount() - itemsCount - beginItemsCount);\r\n return {\r\n begin: beginItemsCount,\r\n end: endItemsCount\r\n }\r\n }\r\n },\r\n setViewportPosition: function(position) {\r\n var that = this;\r\n var result = new _deferred.Deferred;\r\n var scrollingTimeout = Math.min(that.option(\"scrolling.timeout\") || 0, that._dataSource.changingDuration());\r\n if (scrollingTimeout < that.option(\"scrolling.renderingThreshold\")) {\r\n scrollingTimeout = that.option(\"scrolling.minTimeout\") || 0\r\n }\r\n clearTimeout(that._scrollTimeoutID);\r\n if (scrollingTimeout > 0) {\r\n that._scrollTimeoutID = setTimeout(function() {\r\n that._setViewportPositionCore(position);\r\n result.resolve()\r\n }, scrollingTimeout)\r\n } else {\r\n that._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 that = this;\r\n var position = that._position;\r\n var defaultItemSize = that.getItemSize();\r\n var offset = 0;\r\n var itemOffset = 0;\r\n var itemOffsetsWithSize = Object.keys(that._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 = that._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 setContentSize: function(size) {\r\n var that = this;\r\n var sizes = Array.isArray(size) && size;\r\n var virtualItemsCount = that.virtualItemsCount();\r\n if (sizes) {\r\n size = sizes.reduce(function(a, b) {\r\n return a + b\r\n }, 0)\r\n }\r\n that._contentSize = size;\r\n if (virtualItemsCount) {\r\n if (sizes) {\r\n sizes.forEach(function(size, index) {\r\n that._itemSizes[virtualItemsCount.begin + index] = size\r\n })\r\n }\r\n var virtualContentSize = (virtualItemsCount.begin + virtualItemsCount.end + that.itemsCount()) * that._viewportItemSize;\r\n var contentHeightLimit = getContentHeightLimit(_browser.default);\r\n if (virtualContentSize > contentHeightLimit) {\r\n that._sizeRatio = contentHeightLimit / virtualContentSize\r\n } else {\r\n that._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 that = this;\r\n var virtualItemsCount = that.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 = that._dataSource.totalItemsCount();\r\n Object.keys(that._itemSizes).forEach(function(currentItemIndex) {\r\n if (!itemCount) {\r\n return\r\n }\r\n if (isEnd ? currentItemIndex >= totalItemsCount - itemIndex : currentItemIndex < itemIndex) {\r\n offset += that._itemSizes[currentItemIndex];\r\n itemCount--\r\n }\r\n });\r\n return Math.floor(offset + itemCount * that._viewportItemSize * that._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 that = this;\r\n var virtualItemsCount = that.virtualItemsCount();\r\n return virtualItemsCount ? that.getContentOffset(\"begin\") + that.getContentOffset(\"end\") + that._contentSize : 0\r\n },\r\n getViewportItemIndex: function() {\r\n return this._viewportItemIndex\r\n },\r\n setViewportItemIndex: function(itemIndex) {\r\n var that = this;\r\n var pageSize = that._dataSource.pageSize();\r\n var pageCount = that._dataSource.pageCount();\r\n var virtualMode = isVirtualMode(that);\r\n var appendMode = isAppendMode(that);\r\n var totalItemsCount = that._dataSource.totalItemsCount();\r\n var newPageIndex;\r\n that._viewportItemIndex = itemIndex;\r\n if (pageSize && (virtualMode || appendMode) && totalItemsCount >= 0) {\r\n if (that._viewportSize && itemIndex + that._viewportSize >= totalItemsCount && !that._isVirtual) {\r\n if (that._dataSource.hasKnownLastPage()) {\r\n newPageIndex = pageCount - 1;\r\n var lastPageSize = totalItemsCount % pageSize;\r\n if (newPageIndex > 0 && lastPageSize > 0 && lastPageSize < that._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 that.pageIndex(newPageIndex);\r\n return that.load()\r\n }\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 pageIndex: function(_pageIndex) {\r\n if (isVirtualMode(this) || isAppendMode(this)) {\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._dataSource.pageIndex(_pageIndex)\r\n }\r\n },\r\n beginPageIndex: function 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: function endPageIndex() {\r\n var endPageIndex = getEndPageIndex(this);\r\n return endPageIndex > 0 ? endPageIndex : this._lastPageIndex\r\n },\r\n pageSize: function() {\r\n return this._dataSource.pageSize()\r\n },\r\n load: function() {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var result;\r\n if (isVirtualMode(that) || isAppendMode(that)) {\r\n var pageIndexForLoad = getPageIndexForLoad(that);\r\n if (pageIndexForLoad >= 0) {\r\n var loadResult = loadCore(that, pageIndexForLoad);\r\n if (loadResult) {\r\n result = new _deferred.Deferred;\r\n loadResult.done(function() {\r\n var delayDeferred = that._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 dataSource.updateLoading()\r\n }\r\n }\r\n } else {\r\n result = dataSource.load()\r\n }\r\n if (!result && that._lastPageIndex !== that.pageIndex()) {\r\n that._dataSource.onChanged({\r\n changeType: \"pageIndex\"\r\n })\r\n }\r\n return result || (new _deferred.Deferred).resolve()\r\n },\r\n loadIfNeed: function() {\r\n var that = this;\r\n if ((isVirtualMode(that) || isAppendMode(that)) && !that._dataSource.isLoading() && (!that._isChangedFiring || that._isVirtual)) {\r\n var position = that.getViewportPosition();\r\n if (position > 0) {\r\n that._setViewportPositionCore(position)\r\n } else {\r\n that.load()\r\n }\r\n }\r\n },\r\n handleDataChanged: function(callBase, e) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var lastCacheLength = that._cache.length;\r\n var changeType;\r\n var removeInvisiblePages;\r\n if (e && e.changes) {\r\n fireChanged(that, callBase, e)\r\n } else {\r\n if (isVirtualMode(that) || isAppendMode(that)) {\r\n var beginPageIndex = getBeginPageIndex(that);\r\n if (beginPageIndex >= 0) {\r\n if (isVirtualMode(that) && beginPageIndex + that._cache.length !== dataSource.pageIndex() && beginPageIndex - 1 !== dataSource.pageIndex()) {\r\n lastCacheLength = 0;\r\n that._cache = []\r\n }\r\n if (isAppendMode(that)) {\r\n if (0 === dataSource.pageIndex()) {\r\n that._cache = []\r\n } else {\r\n if (dataSource.pageIndex() < getEndPageIndex(that)) {\r\n fireChanged(that, callBase, {\r\n changeType: \"append\",\r\n items: []\r\n });\r\n return\r\n }\r\n }\r\n }\r\n }\r\n var cacheItem = {\r\n pageIndex: dataSource.pageIndex(),\r\n itemsLength: dataSource.items(true).length,\r\n itemsCount: that.itemsCount(true)\r\n };\r\n if (!that.option(\"legacyRendering\") && that.option(\"scrolling.removeInvisiblePages\") && isVirtualMode(that)) {\r\n removeInvisiblePages = that._cache.length > Math.max(getPreloadPageCount(this) + (that.option(\"scrolling.preloadEnabled\") ? 1 : 0), 2)\r\n } else {\r\n processDelayChanged(that, callBase, {\r\n isDelayed: true\r\n })\r\n }\r\n var removeCacheItem;\r\n if (beginPageIndex === dataSource.pageIndex() + 1) {\r\n if (removeInvisiblePages) {\r\n removeCacheItem = that._cache.pop()\r\n }\r\n changeType = \"prepend\";\r\n that._cache.unshift(cacheItem)\r\n } else {\r\n if (removeInvisiblePages) {\r\n removeCacheItem = that._cache.shift()\r\n }\r\n changeType = \"append\";\r\n that._cache.push(cacheItem)\r\n }\r\n var isDelayChanged = isVirtualMode(that) && 0 === lastCacheLength && needTwoPagesLoading(that);\r\n processChanged(that, callBase, that._cache.length > 1 ? changeType : void 0, isDelayChanged, removeCacheItem);\r\n that._delayDeferred = that.load().done(function() {\r\n if (processDelayChanged(that, callBase)) {\r\n that.load()\r\n }\r\n })\r\n } else {\r\n processChanged(that, callBase, e)\r\n }\r\n }\r\n },\r\n itemsCount: function itemsCount(isBase) {\r\n var itemsCount = 0;\r\n if (!isBase && isVirtualMode(this)) {\r\n (0, _iterator.each)(this._cache, function() {\r\n itemsCount += this.itemsCount\r\n })\r\n } else {\r\n itemsCount = this._dataSource.itemsCount()\r\n }\r\n return itemsCount\r\n },\r\n reset: function(isRefresh) {\r\n this._loadingPageIndexes = {};\r\n this._cache = [];\r\n if (!isRefresh) {\r\n this._itemSizes = {}\r\n }\r\n },\r\n subscribeToWindowScrollEvents: function($element) {\r\n var that = this;\r\n that._windowScroll = that._windowScroll || subscribeToExternalScrollers($element, function(scrollTop) {\r\n if (that.viewportItemSize()) {\r\n that.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 }\r\n}());\r\nexports.VirtualScrollController = VirtualScrollController;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.data_source_adapter.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.data_source_adapter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar dataSourceAdapterType = _uiGrid_core.default;\r\nvar _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\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.header_filter.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _filtering = _interopRequireDefault(require(\"../shared/filtering\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _uiGrid_core3 = require(\"./ui.grid_core.header_filter_core\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"../../data/data_source/utils\");\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _variable_wrapper = _interopRequireDefault(require(\"../../core/utils/variable_wrapper\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _accessibility = require(\"../shared/accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DATE_INTERVAL_FORMATS = {\r\n month: function(value) {\r\n return _date.default.getMonthNames()[value - 1]\r\n },\r\n quarter: function(value) {\r\n return _date.default.format(new Date(2e3, 3 * value - 1), \"quarter\")\r\n }\r\n};\r\nvar HeaderFilterController = _uiGrid_core.default.ViewController.inherit(function() {\r\n var getFormatOptions = function(value, column, currentLevel) {\r\n var groupInterval = _filtering.default.getGroupInterval(column);\r\n var result = _uiGrid_core2.default.getFormatOptionsByColumn(column, \"headerFilter\");\r\n if (groupInterval) {\r\n result.groupInterval = groupInterval[currentLevel];\r\n if (_uiGrid_core2.default.isDateType(column.dataType)) {\r\n result.format = DATE_INTERVAL_FORMATS[groupInterval[currentLevel]]\r\n } else {\r\n if (\"number\" === column.dataType) {\r\n result.getDisplayFormat = function() {\r\n var formatOptions = {\r\n format: column.format,\r\n target: \"headerFilter\"\r\n };\r\n var firstValueText = _uiGrid_core2.default.formatValue(value, formatOptions);\r\n var secondValue = value + groupInterval[currentLevel];\r\n var secondValueText = _uiGrid_core2.default.formatValue(secondValue, formatOptions);\r\n return firstValueText && secondValueText ? firstValueText + \" - \" + secondValueText : \"\"\r\n }\r\n }\r\n }\r\n }\r\n return result\r\n };\r\n return {\r\n init: function() {\r\n this._columnsController = this.getController(\"columns\");\r\n this._dataController = this.getController(\"data\");\r\n this._headerFilterView = this.getView(\"headerFilterView\")\r\n },\r\n _updateSelectedState: function(items, column) {\r\n var i = items.length;\r\n var isExclude = \"exclude\" === column.filterType;\r\n while (i--) {\r\n var item = items[i];\r\n if (\"items\" in items[i]) {\r\n this._updateSelectedState(items[i].items, column)\r\n }(0, _uiGrid_core3.updateHeaderFilterItemSelectionState)(item, _uiGrid_core2.default.getIndexByKey(items[i].value, column.filterValues, null) > -1, isExclude)\r\n }\r\n },\r\n _normalizeGroupItem: function(item, currentLevel, options) {\r\n var value;\r\n var displayValue;\r\n var path = options.path;\r\n var valueSelector = options.valueSelector;\r\n var displaySelector = options.displaySelector;\r\n var column = options.column;\r\n if (valueSelector && displaySelector) {\r\n value = valueSelector(item);\r\n displayValue = displaySelector(item)\r\n } else {\r\n value = item.key;\r\n displayValue = value\r\n }\r\n if (!(0, _type.isObject)(item)) {\r\n item = {}\r\n } else {\r\n item = (0, _extend.extend)({}, item)\r\n }\r\n path.push(value);\r\n if (1 === path.length) {\r\n item.value = path[0]\r\n } else {\r\n item.value = path.join(\"/\")\r\n }\r\n item.text = this.getHeaderItemText(displayValue, column, currentLevel, options.headerFilterOptions);\r\n return item\r\n },\r\n getHeaderItemText: function(displayValue, column, currentLevel, headerFilterOptions) {\r\n var text = _uiGrid_core2.default.formatValue(displayValue, getFormatOptions(displayValue, column, currentLevel));\r\n if (!text) {\r\n text = headerFilterOptions.texts.emptyValue\r\n }\r\n return text\r\n },\r\n _processGroupItems: function(groupItems, currentLevel, path, options) {\r\n var that = this;\r\n var displaySelector;\r\n var valueSelector;\r\n var column = options.column;\r\n var lookup = column.lookup;\r\n var level = options.level;\r\n path = path || [];\r\n currentLevel = currentLevel || 0;\r\n if (lookup) {\r\n displaySelector = (0, _data.compileGetter)(lookup.displayExpr);\r\n valueSelector = (0, _data.compileGetter)(lookup.valueExpr)\r\n }\r\n for (var i = 0; i < groupItems.length; i++) {\r\n groupItems[i] = that._normalizeGroupItem(groupItems[i], currentLevel, {\r\n column: options.column,\r\n headerFilterOptions: options.headerFilterOptions,\r\n displaySelector: displaySelector,\r\n valueSelector: valueSelector,\r\n path: path\r\n });\r\n if (\"items\" in groupItems[i]) {\r\n if (currentLevel === level || !(0, _type.isDefined)(groupItems[i].value)) {\r\n delete groupItems[i].items\r\n } else {\r\n that._processGroupItems(groupItems[i].items, currentLevel + 1, path, options)\r\n }\r\n }\r\n path.pop()\r\n }\r\n },\r\n getDataSource: function(column) {\r\n var that = this;\r\n var dataSource = that._dataController.dataSource();\r\n var group = _uiGrid_core2.default.getHeaderFilterGroupParameters(column, dataSource && dataSource.remoteOperations().grouping);\r\n var headerFilterDataSource = column.headerFilter && column.headerFilter.dataSource;\r\n var headerFilterOptions = that.option(\"headerFilter\");\r\n var isLookup = false;\r\n var options = {\r\n component: that.component\r\n };\r\n if (!dataSource) {\r\n return\r\n }\r\n if ((0, _type.isDefined)(headerFilterDataSource) && !(0, _type.isFunction)(headerFilterDataSource)) {\r\n options.dataSource = (0, _utils.normalizeDataSourceOptions)(headerFilterDataSource)\r\n } else {\r\n if (column.lookup) {\r\n isLookup = true;\r\n var lookupDataSourceOptions;\r\n if (column.lookup.items) {\r\n lookupDataSourceOptions = column.lookup.items\r\n } else {\r\n lookupDataSourceOptions = column.lookup.dataSource;\r\n if ((0, _type.isFunction)(lookupDataSourceOptions) && !_variable_wrapper.default.isWrapped(lookupDataSourceOptions)) {\r\n lookupDataSourceOptions = lookupDataSourceOptions({})\r\n }\r\n }\r\n options.dataSource = (0, _utils.normalizeDataSourceOptions)(lookupDataSourceOptions)\r\n } else {\r\n var cutoffLevel = Array.isArray(group) ? group.length - 1 : 0;\r\n that._currentColumn = column;\r\n var filter = that._dataController.getCombinedFilter();\r\n that._currentColumn = null;\r\n options.dataSource = {\r\n filter: filter,\r\n group: group,\r\n useDefaultSearch: true,\r\n load: function(options) {\r\n var d = new _deferred.Deferred;\r\n options.dataField = column.dataField || column.name;\r\n dataSource.load(options).done(function(data) {\r\n that._processGroupItems(data, null, null, {\r\n level: cutoffLevel,\r\n column: column,\r\n headerFilterOptions: headerFilterOptions\r\n });\r\n d.resolve(data)\r\n }).fail(d.reject);\r\n return d\r\n }\r\n }\r\n }\r\n }\r\n if ((0, _type.isFunction)(headerFilterDataSource)) {\r\n headerFilterDataSource.call(column, options)\r\n }\r\n var origPostProcess = options.dataSource.postProcess;\r\n options.dataSource.postProcess = function(data) {\r\n var items = data;\r\n if (isLookup) {\r\n if (0 === this.pageIndex() && !this.searchValue()) {\r\n items = items.slice(0);\r\n items.unshift(null)\r\n }\r\n that._processGroupItems(items, null, null, {\r\n level: 0,\r\n column: column,\r\n headerFilterOptions: headerFilterOptions\r\n })\r\n }\r\n items = origPostProcess && origPostProcess.call(this, items) || items;\r\n that._updateSelectedState(items, column);\r\n return items\r\n };\r\n return options.dataSource\r\n },\r\n getCurrentColumn: function() {\r\n return this._currentColumn\r\n },\r\n showHeaderFilterMenu: function(columnIndex, isGroupPanel) {\r\n var columnsController = this._columnsController;\r\n var column = (0, _extend.extend)(true, {}, this._columnsController.getColumns()[columnIndex]);\r\n if (column) {\r\n var visibleIndex = columnsController.getVisibleIndex(columnIndex);\r\n var view = isGroupPanel ? this.getView(\"headerPanel\") : this.getView(\"columnHeadersView\");\r\n var $columnElement = $columnElement || view.getColumnElements().eq(isGroupPanel ? column.groupIndex : visibleIndex);\r\n this.showHeaderFilterMenuBase({\r\n columnElement: $columnElement,\r\n column: column,\r\n applyFilter: true,\r\n apply: function() {\r\n columnsController.columnOption(columnIndex, {\r\n filterValues: this.filterValues,\r\n filterType: this.filterType\r\n })\r\n }\r\n })\r\n }\r\n },\r\n showHeaderFilterMenuBase: function(options) {\r\n var _this = this;\r\n var that = this;\r\n var column = options.column;\r\n if (column) {\r\n var groupInterval = _filtering.default.getGroupInterval(column);\r\n var dataSource = that._dataController.dataSource();\r\n var remoteFiltering = dataSource && dataSource.remoteOperations().filtering;\r\n (0, _extend.extend)(options, column, {\r\n type: groupInterval && groupInterval.length > 1 ? \"tree\" : \"list\",\r\n remoteFiltering: remoteFiltering,\r\n onShowing: function(e) {\r\n var dxResizableInstance = e.component.overlayContent().dxResizable(\"instance\");\r\n dxResizableInstance && dxResizableInstance.option(\"onResizeEnd\", function(e) {\r\n var columnsController = that.getController(\"columns\");\r\n var headerFilterByColumn = columnsController.columnOption(options.dataField, \"headerFilter\");\r\n headerFilterByColumn = headerFilterByColumn || {};\r\n headerFilterByColumn.width = e.width;\r\n headerFilterByColumn.height = e.height;\r\n columnsController.columnOption(options.dataField, \"headerFilter\", headerFilterByColumn, true)\r\n })\r\n },\r\n onHidden: function() {\r\n return (0, _accessibility.restoreFocus)(_this)\r\n }\r\n });\r\n options.dataSource = that.getDataSource(options);\r\n if (options.isFilterBuilder) {\r\n options.dataSource.filter = null;\r\n options.alignment = \"right\"\r\n }\r\n that._headerFilterView.showHeaderFilterMenu(options.columnElement, options)\r\n }\r\n },\r\n hideHeaderFilterMenu: function() {\r\n this._headerFilterView.hideHeaderFilterMenu()\r\n }\r\n }\r\n}());\r\nvar ColumnHeadersViewHeaderFilterExtender = (0, _extend.extend)({}, _uiGrid_core3.headerFilterMixin, {\r\n _renderCellContent: function($cell, options) {\r\n var that = this;\r\n var $headerFilterIndicator;\r\n var column = options.column;\r\n if (!column.command && (0, _uiGrid_core3.allowHeaderFiltering)(column) && that.option(\"headerFilter.visible\") && \"header\" === options.rowType) {\r\n $headerFilterIndicator = that._applyColumnState({\r\n name: \"headerFilter\",\r\n rootElement: $cell,\r\n column: column,\r\n showColumnLines: that.option(\"showColumnLines\")\r\n });\r\n $headerFilterIndicator && that._subscribeToIndicatorEvent($headerFilterIndicator, column, \"headerFilter\")\r\n }\r\n that.callBase($cell, options)\r\n },\r\n _subscribeToIndicatorEvent: function($indicator, column, indicatorName) {\r\n var that = this;\r\n if (\"headerFilter\" === indicatorName) {\r\n _events_engine.default.on($indicator, _click.name, that.createAction(function(e) {\r\n e.event.stopPropagation();\r\n that.getController(\"headerFilter\").showHeaderFilterMenu(column.index, false)\r\n }))\r\n }\r\n },\r\n _updateIndicator: function($cell, column, indicatorName) {\r\n var $indicator = this.callBase($cell, column, indicatorName);\r\n $indicator && this._subscribeToIndicatorEvent($indicator, column, indicatorName)\r\n },\r\n _updateHeaderFilterIndicators: function() {\r\n if (this.option(\"headerFilter.visible\")) {\r\n this._updateIndicators(\"headerFilter\")\r\n }\r\n },\r\n _needUpdateFilterIndicators: function() {\r\n return true\r\n },\r\n _columnOptionChanged: function(e) {\r\n var optionNames = e.optionNames;\r\n if (_uiGrid_core2.default.checkChanges(optionNames, [\"filterValues\", \"filterType\"])) {\r\n if (this._needUpdateFilterIndicators()) {\r\n this._updateHeaderFilterIndicators()\r\n }\r\n return\r\n }\r\n this.callBase(e)\r\n }\r\n});\r\nvar HeaderPanelHeaderFilterExtender = (0, _extend.extend)({}, _uiGrid_core3.headerFilterMixin, {\r\n _createGroupPanelItem: function($rootElement, groupColumn) {\r\n var that = this;\r\n var $item = that.callBase.apply(that, arguments);\r\n var $headerFilterIndicator;\r\n if (!groupColumn.command && (0, _uiGrid_core3.allowHeaderFiltering)(groupColumn) && that.option(\"headerFilter.visible\")) {\r\n $headerFilterIndicator = that._applyColumnState({\r\n name: \"headerFilter\",\r\n rootElement: $item,\r\n column: {\r\n alignment: (0, _position.getDefaultAlignment)(that.option(\"rtlEnabled\")),\r\n filterValues: groupColumn.filterValues,\r\n allowHeaderFiltering: true\r\n },\r\n showColumnLines: true\r\n });\r\n $headerFilterIndicator && _events_engine.default.on($headerFilterIndicator, _click.name, that.createAction(function(e) {\r\n var event = e.event;\r\n event.stopPropagation();\r\n that.getController(\"headerFilter\").showHeaderFilterMenu(groupColumn.index, true)\r\n }))\r\n }\r\n return $item\r\n }\r\n});\r\n\r\nfunction invertFilterExpression(filter) {\r\n return [\"!\", filter]\r\n}\r\nvar DataControllerFilterRowExtender = {\r\n skipCalculateColumnFilters: function() {\r\n return false\r\n },\r\n _calculateAdditionalFilter: function() {\r\n if (this.skipCalculateColumnFilters()) {\r\n return this.callBase()\r\n }\r\n var that = this;\r\n var filters = [that.callBase()];\r\n var columns = that._columnsController.getVisibleColumns(null, true);\r\n var headerFilterController = that.getController(\"headerFilter\");\r\n var currentColumn = headerFilterController.getCurrentColumn();\r\n (0, _iterator.each)(columns, function(_, column) {\r\n var filter;\r\n if (currentColumn && currentColumn.index === column.index) {\r\n return\r\n }\r\n if ((0, _uiGrid_core3.allowHeaderFiltering)(column) && column.calculateFilterExpression && Array.isArray(column.filterValues) && column.filterValues.length) {\r\n var filterValues = [];\r\n (0, _iterator.each)(column.filterValues, function(_, filterValue) {\r\n if (Array.isArray(filterValue)) {\r\n filter = filterValue\r\n } else {\r\n if (column.deserializeValue && !_uiGrid_core2.default.isDateType(column.dataType) && \"number\" !== column.dataType) {\r\n filterValue = column.deserializeValue(filterValue)\r\n }\r\n filter = column.createFilterExpression(filterValue, \"=\", \"headerFilter\")\r\n }\r\n if (filter) {\r\n filter.columnIndex = column.index\r\n }\r\n filterValues.push(filter)\r\n });\r\n filterValues = _uiGrid_core2.default.combineFilters(filterValues, \"or\");\r\n filters.push(\"exclude\" === column.filterType ? [\"!\", filterValues] : filterValues)\r\n }\r\n });\r\n return _uiGrid_core2.default.combineFilters(filters)\r\n }\r\n};\r\nvar _default = {\r\n invertFilterExpression: invertFilterExpression,\r\n defaultOptions: function() {\r\n return {\r\n headerFilter: {\r\n visible: false,\r\n width: 252,\r\n height: 325,\r\n allowSearch: false,\r\n searchTimeout: 500,\r\n texts: {\r\n emptyValue: _message.default.format(\"dxDataGrid-headerFilterEmptyValue\"),\r\n ok: _message.default.format(\"dxDataGrid-headerFilterOK\"),\r\n cancel: _message.default.format(\"dxDataGrid-headerFilterCancel\")\r\n }\r\n }\r\n }\r\n },\r\n controllers: {\r\n headerFilter: HeaderFilterController\r\n },\r\n views: {\r\n headerFilterView: _uiGrid_core3.HeaderFilterView\r\n },\r\n extenders: {\r\n controllers: {\r\n data: DataControllerFilterRowExtender\r\n },\r\n views: {\r\n columnHeadersView: ColumnHeadersViewHeaderFilterExtender,\r\n headerPanel: HeaderPanelHeaderFilterExtender\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/svg_creator.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getData = getData;\r\nexports.svgCreator = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _ajax = _interopRequireDefault(require(\"../core/utils/ajax\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _svg = require(\"../core/utils/svg\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar svgCreator = {\r\n _markup: \"\",\r\n _imageArray: {},\r\n _imageDeferreds: [],\r\n _getBinaryFile: function(src, callback) {\r\n _ajax.default.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 (0, _iterator.each)(that._imageArray, function(src) {\r\n var deferred = new _deferred.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 = (0, _renderer.default)(element).attr(\"href\") || (0, _renderer.default)(element).attr(\"xlink:href\");\r\n if (!that._imageArray[href]) {\r\n that._imageArray[href] = \"\"\r\n }\r\n }(0, _iterator.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 _deferred.when.apply(_renderer.default, this._imageDeferreds)\r\n },\r\n getData: function(data, options) {\r\n var markup;\r\n var that = this;\r\n var xmlVersion = '';\r\n var svgElem = (0, _svg.getSvgElement)(data);\r\n var $svgObject = (0, _renderer.default)(svgElem);\r\n markup = xmlVersion + (0, _svg.getSvgMarkup)($svgObject.get(0), options.backgroundColor);\r\n return that._prepareImages(svgElem).then(function() {\r\n (0, _iterator.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 (0, _type.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\nexports.svgCreator = svgCreator;\r\n\r\nfunction getData(data, options) {\r\n return svgCreator.getData(data, options)\r\n}\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.data_source_adapter.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"../data_grid/ui.data_grid.core\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\r\nvar _array_utils = require(\"../../data/array_utils\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _uiData_grid.default.Controller.inherit(function() {\r\n function cloneItems(items, groupCount) {\r\n if (items) {\r\n items = items.slice(0);\r\n if (groupCount) {\r\n for (var i = 0; i < items.length; i++) {\r\n items[i] = (0, _extend.extend)({\r\n key: items[i].key\r\n }, items[i]);\r\n items[i].items = cloneItems(items[i].items, groupCount - 1)\r\n }\r\n }\r\n }\r\n return items\r\n }\r\n\r\n function calculateOperationTypes(loadOptions, lastLoadOptions, isFullReload) {\r\n var operationTypes = {\r\n reload: true,\r\n fullReload: true\r\n };\r\n if (lastLoadOptions) {\r\n operationTypes = {\r\n sorting: !_uiData_grid.default.equalSortParameters(loadOptions.sort, lastLoadOptions.sort),\r\n grouping: !_uiData_grid.default.equalSortParameters(loadOptions.group, lastLoadOptions.group, true),\r\n groupExpanding: !_uiData_grid.default.equalSortParameters(loadOptions.group, lastLoadOptions.group) || lastLoadOptions.groupExpand,\r\n filtering: !_uiData_grid.default.equalFilterParameters(loadOptions.filter, lastLoadOptions.filter),\r\n pageIndex: loadOptions.pageIndex !== lastLoadOptions.pageIndex,\r\n skip: loadOptions.skip !== lastLoadOptions.skip,\r\n take: loadOptions.take !== lastLoadOptions.take,\r\n fullReload: isFullReload\r\n };\r\n operationTypes.reload = isFullReload || operationTypes.sorting || operationTypes.grouping || operationTypes.filtering;\r\n operationTypes.paging = operationTypes.pageIndex || operationTypes.take\r\n }\r\n return operationTypes\r\n }\r\n\r\n function executeTask(action, timeout) {\r\n if ((0, _type.isDefined)(timeout)) {\r\n (0, _common.executeAsync)(action, timeout)\r\n } else {\r\n action()\r\n }\r\n }\r\n\r\n function createEmptyPagesData() {\r\n return {\r\n pages: {}\r\n }\r\n }\r\n\r\n function getPageDataFromCache(options) {\r\n return options.cachedPagesData.pages[options.pageIndex]\r\n }\r\n\r\n function setPageDataToCache(options, data) {\r\n var pageIndex = options.pageIndex;\r\n if (void 0 !== pageIndex) {\r\n options.cachedPagesData.pages[pageIndex] = data\r\n }\r\n }\r\n return {\r\n init: function(dataSource, remoteOperations) {\r\n var that = this;\r\n that._dataSource = dataSource;\r\n that._remoteOperations = remoteOperations || {};\r\n that._isLastPage = !dataSource.isLastPage();\r\n that._hasLastPage = false;\r\n that._currentTotalCount = 0;\r\n that._cachedPagesData = createEmptyPagesData();\r\n that._lastOperationTypes = {};\r\n that._eventsStrategy = dataSource._eventsStrategy;\r\n that._skipCorrection = 0;\r\n that._isLoadingAll = false;\r\n that.changed = (0, _callbacks.default)();\r\n that.loadingChanged = (0, _callbacks.default)();\r\n that.loadError = (0, _callbacks.default)();\r\n that.customizeStoreLoadOptions = (0, _callbacks.default)();\r\n that.changing = (0, _callbacks.default)();\r\n that._dataChangedHandler = that._handleDataChanged.bind(that);\r\n that._dataLoadingHandler = that._handleDataLoading.bind(that);\r\n that._dataLoadedHandler = that._handleDataLoaded.bind(that);\r\n that._loadingChangedHandler = that._handleLoadingChanged.bind(that);\r\n that._loadErrorHandler = that._handleLoadError.bind(that);\r\n that._pushHandler = that._handlePush.bind(that);\r\n that._changingHandler = that._handleChanging.bind(that);\r\n dataSource.on(\"changed\", that._dataChangedHandler);\r\n dataSource.on(\"customizeStoreLoadOptions\", that._dataLoadingHandler);\r\n dataSource.on(\"customizeLoadResult\", that._dataLoadedHandler);\r\n dataSource.on(\"loadingChanged\", that._loadingChangedHandler);\r\n dataSource.on(\"loadError\", that._loadErrorHandler);\r\n dataSource.on(\"changing\", that._changingHandler);\r\n dataSource.store().on(\"push\", that._pushHandler);\r\n (0, _iterator.each)(dataSource, function(memberName, member) {\r\n if (!that[memberName] && (0, _type.isFunction)(member)) {\r\n that[memberName] = function() {\r\n return this._dataSource[memberName].apply(this._dataSource, arguments)\r\n }\r\n }\r\n })\r\n },\r\n remoteOperations: function() {\r\n return this._remoteOperations\r\n },\r\n dispose: function(isSharedDataSource) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var store = dataSource.store();\r\n dataSource.off(\"changed\", that._dataChangedHandler);\r\n dataSource.off(\"customizeStoreLoadOptions\", that._dataLoadingHandler);\r\n dataSource.off(\"customizeLoadResult\", that._dataLoadedHandler);\r\n dataSource.off(\"loadingChanged\", that._loadingChangedHandler);\r\n dataSource.off(\"loadError\", that._loadErrorHandler);\r\n dataSource.off(\"changing\", that._changingHandler);\r\n store && store.off(\"push\", that._pushHandler);\r\n if (!isSharedDataSource) {\r\n dataSource.dispose()\r\n }\r\n },\r\n refresh: function(options, operationTypes) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n if (operationTypes.reload) {\r\n that.resetCurrentTotalCount();\r\n that._isLastPage = !dataSource.paginate();\r\n that._hasLastPage = that._isLastPage\r\n }\r\n },\r\n resetCurrentTotalCount: function() {\r\n this._currentTotalCount = 0;\r\n this._skipCorrection = 0\r\n },\r\n resetCache: function() {\r\n this._cachedStoreData = void 0;\r\n this._cachedPagingData = void 0\r\n },\r\n resetPagesCache: function() {\r\n this._cachedPagesData = createEmptyPagesData()\r\n },\r\n _needClearStoreDataCache: function() {\r\n var remoteOperations = this.remoteOperations();\r\n var operationTypes = calculateOperationTypes(this._lastLoadOptions || {}, {});\r\n var isLocalOperations = Object.keys(remoteOperations).every(function(operationName) {\r\n return !operationTypes[operationName] || !remoteOperations[operationName]\r\n });\r\n return !isLocalOperations\r\n },\r\n push: function(changes, fromStore) {\r\n var store = this.store();\r\n if (this._needClearStoreDataCache()) {\r\n this._cachedStoreData = void 0\r\n }\r\n this._cachedPagingData = void 0;\r\n this.resetPagesCache(true);\r\n if (this._cachedStoreData) {\r\n (0, _array_utils.applyBatch)({\r\n keyInfo: store,\r\n data: this._cachedStoreData,\r\n changes: changes\r\n })\r\n }\r\n if (!fromStore) {\r\n this._applyBatch(changes)\r\n }\r\n },\r\n getDataIndexGetter: function() {\r\n var _this = this;\r\n if (!this._dataIndexGetter) {\r\n var indexByKey;\r\n var storeData;\r\n var store = this.store();\r\n this._dataIndexGetter = function(data) {\r\n var isCacheUpdated = storeData && storeData !== _this._cachedStoreData;\r\n if (!indexByKey || isCacheUpdated) {\r\n storeData = _this._cachedStoreData || [];\r\n indexByKey = {};\r\n for (var i = 0; i < storeData.length; i++) {\r\n indexByKey[(0, _common.getKeyHash)(store.keyOf(storeData[i]))] = i\r\n }\r\n }\r\n return indexByKey[(0, _common.getKeyHash)(store.keyOf(data))]\r\n }\r\n }\r\n return this._dataIndexGetter\r\n },\r\n _getKeyInfo: function() {\r\n return this.store()\r\n },\r\n _applyBatch: function(changes) {\r\n var _this2 = this;\r\n var keyInfo = this._getKeyInfo();\r\n var dataSource = this._dataSource;\r\n var groupCount = _uiData_grid.default.normalizeSortingInfo(this.group()).length;\r\n var totalCount = this.totalCount();\r\n var isVirtualMode = \"virtual\" === this.option(\"scrolling.mode\");\r\n changes = changes.filter(function(change) {\r\n return !dataSource.paginate() || \"insert\" !== change.type || void 0 !== change.index\r\n });\r\n var getItemCount = function() {\r\n return groupCount ? _this2.itemsCount() : _this2._items.length\r\n };\r\n var oldItemCount = getItemCount();\r\n (0, _array_utils.applyBatch)({\r\n keyInfo: keyInfo,\r\n data: this._items,\r\n changes: changes,\r\n groupCount: groupCount,\r\n useInsertIndex: true\r\n });\r\n (0, _array_utils.applyBatch)({\r\n keyInfo: keyInfo,\r\n data: dataSource.items(),\r\n changes: changes,\r\n groupCount: groupCount,\r\n useInsertIndex: true\r\n });\r\n if (this._currentTotalCount > 0 || isVirtualMode && totalCount === oldItemCount) {\r\n this._skipCorrection += getItemCount() - oldItemCount\r\n }\r\n changes.splice(0, changes.length)\r\n },\r\n _handlePush: function(changes) {\r\n this.push(changes, true)\r\n },\r\n _handleChanging: function(e) {\r\n this.changing.fire(e);\r\n this._applyBatch(e.changes)\r\n },\r\n _needCleanCacheByOperation: function(operationType, remoteOperations) {\r\n var operationTypesByOrder = [\"filtering\", \"sorting\", \"paging\"];\r\n var operationTypeIndex = operationTypesByOrder.indexOf(operationType);\r\n var currentOperationTypes = operationTypeIndex >= 0 ? operationTypesByOrder.slice(operationTypeIndex) : [operationType];\r\n return currentOperationTypes.some(function(operationType) {\r\n return remoteOperations[operationType]\r\n })\r\n },\r\n _customizeRemoteOperations: function(options, operationTypes) {\r\n var that = this;\r\n var cachedStoreData = that._cachedStoreData;\r\n var cachedPagingData = that._cachedPagingData;\r\n var cachedPagesData = that._cachedPagesData;\r\n if (options.storeLoadOptions.filter && !options.remoteOperations.filtering || options.storeLoadOptions.sort && !options.remoteOperations.sorting) {\r\n options.remoteOperations = {\r\n filtering: options.remoteOperations.filtering\r\n }\r\n }\r\n if (operationTypes.fullReload) {\r\n cachedStoreData = void 0;\r\n cachedPagingData = void 0;\r\n cachedPagesData = createEmptyPagesData()\r\n } else {\r\n if (operationTypes.reload) {\r\n cachedPagingData = void 0;\r\n cachedPagesData = createEmptyPagesData()\r\n } else {\r\n if (operationTypes.take || operationTypes.groupExpanding) {\r\n cachedPagesData = createEmptyPagesData()\r\n }\r\n }(0, _iterator.each)(operationTypes, function(operationType, value) {\r\n if (value && that._needCleanCacheByOperation(operationType, options.remoteOperations)) {\r\n cachedStoreData = void 0;\r\n cachedPagingData = void 0\r\n }\r\n })\r\n }\r\n if (cachedPagingData) {\r\n options.remoteOperations.paging = false\r\n }\r\n options.cachedStoreData = cachedStoreData;\r\n options.cachedPagingData = cachedPagingData;\r\n options.cachedPagesData = cachedPagesData;\r\n if (!options.isCustomLoading) {\r\n that._cachedStoreData = cachedStoreData;\r\n that._cachedPagingData = cachedPagingData;\r\n that._cachedPagesData = cachedPagesData\r\n }\r\n },\r\n _handleDataLoading: function(options) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var lastLoadOptions = that._lastLoadOptions;\r\n that.customizeStoreLoadOptions.fire(options);\r\n options.delay = this.option(\"loadingTimeout\");\r\n options.originalStoreLoadOptions = options.storeLoadOptions;\r\n options.remoteOperations = (0, _extend.extend)({}, this.remoteOperations());\r\n var isFullReload = !that.isLoaded() && !that._isRefreshing;\r\n if (that.option(\"integrationOptions.renderedOnServer\") && !that.isLoaded()) {\r\n options.delay = void 0\r\n }\r\n var loadOptions = (0, _extend.extend)({\r\n pageIndex: that.pageIndex()\r\n }, options.storeLoadOptions);\r\n var operationTypes = calculateOperationTypes(loadOptions, lastLoadOptions, isFullReload);\r\n that._customizeRemoteOperations(options, operationTypes);\r\n if (!options.isCustomLoading) {\r\n var isRefreshing = that._isRefreshing;\r\n options.pageIndex = dataSource.pageIndex();\r\n options.lastLoadOptions = loadOptions;\r\n options.operationTypes = operationTypes;\r\n that._loadingOperationTypes = operationTypes;\r\n that._isRefreshing = true;\r\n (0, _deferred.when)(isRefreshing || that._isRefreshed || that.refresh(options, operationTypes)).done(function() {\r\n if (that._lastOperationId === options.operationId) {\r\n that._isRefreshed = true;\r\n that.load().always(function() {\r\n that._isRefreshed = false\r\n })\r\n }\r\n }).fail(function() {\r\n dataSource.cancel(options.operationId)\r\n }).always(function() {\r\n that._isRefreshing = false\r\n });\r\n dataSource.cancel(that._lastOperationId);\r\n that._lastOperationId = options.operationId;\r\n if (that._isRefreshing) {\r\n dataSource.cancel(that._lastOperationId)\r\n }\r\n }\r\n this._handleDataLoadingCore(options)\r\n },\r\n _handleDataLoadingCore: function(options) {\r\n var remoteOperations = options.remoteOperations;\r\n options.loadOptions = {};\r\n var cachedExtra = options.cachedPagesData.extra;\r\n var localLoadOptionNames = {\r\n filter: !remoteOperations.filtering,\r\n sort: !remoteOperations.sorting,\r\n group: !remoteOperations.grouping,\r\n summary: !remoteOperations.summary,\r\n skip: !remoteOperations.paging,\r\n take: !remoteOperations.paging,\r\n requireTotalCount: cachedExtra && \"totalCount\" in cachedExtra || !remoteOperations.paging\r\n };\r\n (0, _iterator.each)(options.storeLoadOptions, function(optionName, optionValue) {\r\n if (localLoadOptionNames[optionName]) {\r\n options.loadOptions[optionName] = optionValue;\r\n delete options.storeLoadOptions[optionName]\r\n }\r\n });\r\n if (cachedExtra) {\r\n options.extra = cachedExtra\r\n }\r\n options.data = getPageDataFromCache(options) || options.cachedStoreData\r\n },\r\n _handleDataLoaded: function(options) {\r\n var _this3 = this;\r\n var loadOptions = options.loadOptions;\r\n var localPaging = options.remoteOperations && !options.remoteOperations.paging;\r\n var cachedPagesData = options.cachedPagesData;\r\n var storeLoadOptions = options.storeLoadOptions;\r\n var needCache = false !== this.option(\"cacheEnabled\") && storeLoadOptions;\r\n var needPageCache = needCache && !options.isCustomLoading && cachedPagesData && (!localPaging || storeLoadOptions.group) && !this.option(\"legacyRendering\");\r\n var needPagingCache = needCache && localPaging;\r\n var needStoreCache = needPagingCache && !options.isCustomLoading;\r\n if (!loadOptions) {\r\n this._dataSource.cancel(options.operationId);\r\n return\r\n }\r\n if (options.lastLoadOptions) {\r\n this._lastLoadOptions = options.lastLoadOptions;\r\n Object.keys(options.operationTypes).forEach(function(operationType) {\r\n _this3._lastOperationTypes[operationType] = _this3._lastOperationTypes[operationType] || options.operationTypes[operationType]\r\n })\r\n }\r\n if (localPaging) {\r\n options.skip = loadOptions.skip;\r\n options.take = loadOptions.take;\r\n delete loadOptions.skip;\r\n delete loadOptions.take\r\n }\r\n if (loadOptions.group) {\r\n loadOptions.group = options.group || loadOptions.group\r\n }\r\n var groupCount = _uiData_grid.default.normalizeSortingInfo(storeLoadOptions.group || loadOptions.group).length;\r\n if (!needPageCache || !getPageDataFromCache(options)) {\r\n if (needPagingCache && options.cachedPagingData) {\r\n options.data = cloneItems(options.cachedPagingData, groupCount)\r\n } else {\r\n if (needStoreCache) {\r\n if (!this._cachedStoreData) {\r\n this._cachedStoreData = cloneItems(options.data, _uiData_grid.default.normalizeSortingInfo(storeLoadOptions.group).length)\r\n } else {\r\n if (options.mergeStoreLoadData) {\r\n options.data = this._cachedStoreData = this._cachedStoreData.concat(options.data)\r\n }\r\n }\r\n }\r\n new _array_store.default(options.data).load(loadOptions).done(function(data) {\r\n options.data = data;\r\n if (needStoreCache) {\r\n _this3._cachedPagingData = cloneItems(options.data, groupCount)\r\n }\r\n }).fail(function(error) {\r\n options.data = (new _deferred.Deferred).reject(error)\r\n })\r\n }\r\n if (loadOptions.requireTotalCount && localPaging) {\r\n options.extra = (0, _type.isPlainObject)(options.extra) ? options.extra : {};\r\n options.extra.totalCount = options.data.length\r\n }\r\n if (options.extra && options.extra.totalCount >= 0 && (false === storeLoadOptions.requireTotalCount || false === loadOptions.requireTotalCount)) {\r\n options.extra.totalCount = -1\r\n }\r\n this._handleDataLoadedCore(options);\r\n if (needPageCache) {\r\n cachedPagesData.extra = cachedPagesData.extra || (0, _extend.extend)({}, options.extra);\r\n (0, _deferred.when)(options.data).done(function(data) {\r\n setPageDataToCache(options, cloneItems(data, groupCount))\r\n })\r\n }\r\n }\r\n options.storeLoadOptions = options.originalStoreLoadOptions\r\n },\r\n _handleDataLoadedCore: function(options) {\r\n if (options.remoteOperations && !options.remoteOperations.paging && Array.isArray(options.data)) {\r\n if (void 0 !== options.skip) {\r\n options.data = options.data.slice(options.skip)\r\n }\r\n if (void 0 !== options.take) {\r\n options.data = options.data.slice(0, options.take)\r\n }\r\n }\r\n },\r\n _handleLoadingChanged: function(isLoading) {\r\n this.loadingChanged.fire(isLoading)\r\n },\r\n _handleLoadError: function(error) {\r\n this.loadError.fire(error);\r\n this.changed.fire({\r\n changeType: \"loadError\",\r\n error: error\r\n })\r\n },\r\n _handleDataChanged: function(args) {\r\n var that = this;\r\n var currentTotalCount;\r\n var dataSource = that._dataSource;\r\n var isLoading = false;\r\n var itemsCount = that.itemsCount();\r\n that._isLastPage = !itemsCount || !that.pageSize() || itemsCount < that.pageSize();\r\n if (that._isLastPage) {\r\n that._hasLastPage = true\r\n }\r\n if (dataSource.totalCount() >= 0) {\r\n if (dataSource.pageIndex() >= that.pageCount()) {\r\n dataSource.pageIndex(that.pageCount() - 1);\r\n that.pageIndex(dataSource.pageIndex());\r\n that.resetPagesCache();\r\n dataSource.load();\r\n isLoading = true\r\n }\r\n } else {\r\n if (!args || (0, _type.isDefined)(args.changeType)) {\r\n currentTotalCount = dataSource.pageIndex() * that.pageSize() + itemsCount;\r\n that._currentTotalCount = Math.max(that._currentTotalCount, currentTotalCount);\r\n if (0 === itemsCount && dataSource.pageIndex() >= that.pageCount()) {\r\n dataSource.pageIndex(that.pageCount() - 1);\r\n if (\"infinite\" !== that.option(\"scrolling.mode\")) {\r\n dataSource.load();\r\n isLoading = true\r\n }\r\n }\r\n }\r\n }\r\n if (!isLoading) {\r\n that._operationTypes = that._lastOperationTypes;\r\n that._lastOperationTypes = {};\r\n that.component._optionCache = {};\r\n that.changed.fire(args);\r\n that.component._optionCache = void 0\r\n }\r\n },\r\n _scheduleCustomLoadCallbacks: function(deferred) {\r\n var that = this;\r\n that._isCustomLoading = true;\r\n deferred.always(function() {\r\n that._isCustomLoading = false\r\n })\r\n },\r\n loadingOperationTypes: function() {\r\n return this._loadingOperationTypes\r\n },\r\n operationTypes: function() {\r\n return this._operationTypes\r\n },\r\n lastLoadOptions: function() {\r\n return this._lastLoadOptions || {}\r\n },\r\n isLastPage: function() {\r\n return this._isLastPage\r\n },\r\n totalCount: function() {\r\n return parseInt((this._currentTotalCount || this._dataSource.totalCount()) + this._skipCorrection)\r\n },\r\n itemsCount: function() {\r\n return this._dataSource.items().length\r\n },\r\n totalItemsCount: function() {\r\n return this.totalCount()\r\n },\r\n pageSize: function() {\r\n var dataSource = this._dataSource;\r\n if (!arguments.length && !dataSource.paginate()) {\r\n return 0\r\n }\r\n return dataSource.pageSize.apply(dataSource, arguments)\r\n },\r\n pageCount: function() {\r\n var that = this;\r\n var count = that.totalItemsCount() - that._skipCorrection;\r\n var pageSize = that.pageSize();\r\n if (pageSize && count > 0) {\r\n return Math.max(1, Math.ceil(count / pageSize))\r\n }\r\n return 1\r\n },\r\n hasKnownLastPage: function() {\r\n return this._hasLastPage || this._dataSource.totalCount() >= 0\r\n },\r\n loadFromStore: function(loadOptions, store) {\r\n var dataSource = this._dataSource;\r\n var d = new _deferred.Deferred;\r\n if (!dataSource) {\r\n return\r\n }\r\n store = store || dataSource.store();\r\n store.load(loadOptions).done(function(data, extra) {\r\n if (data && !Array.isArray(data) && Array.isArray(data.data)) {\r\n extra = data;\r\n data = data.data\r\n }\r\n d.resolve(data, extra)\r\n }).fail(d.reject);\r\n return d\r\n },\r\n isCustomLoading: function() {\r\n return !!this._isCustomLoading\r\n },\r\n load: function(options) {\r\n var _this4 = this;\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var d = new _deferred.Deferred;\r\n if (options) {\r\n var store = dataSource.store();\r\n var dataSourceLoadOptions = dataSource.loadOptions();\r\n var loadResult = {\r\n storeLoadOptions: options,\r\n isCustomLoading: true\r\n };\r\n (0, _iterator.each)(store._customLoadOptions() || [], function(_, optionName) {\r\n if (!(optionName in loadResult.storeLoadOptions)) {\r\n loadResult.storeLoadOptions[optionName] = dataSourceLoadOptions[optionName]\r\n }\r\n });\r\n this._isLoadingAll = options.isLoadingAll;\r\n that._scheduleCustomLoadCallbacks(d);\r\n dataSource._scheduleLoadCallbacks(d);\r\n that._handleDataLoading(loadResult);\r\n executeTask(function() {\r\n if (!dataSource.store()) {\r\n return d.reject(\"canceled\")\r\n }(0, _deferred.when)(loadResult.data || that.loadFromStore(loadResult.storeLoadOptions)).done(function(data, extra) {\r\n loadResult.data = data;\r\n loadResult.extra = extra || {};\r\n that._handleDataLoaded(loadResult);\r\n if (options.requireTotalCount && void 0 === loadResult.extra.totalCount) {\r\n loadResult.extra.totalCount = store.totalCount(loadResult.storeLoadOptions)\r\n }(0, _deferred.when)(loadResult.data, loadResult.extra.totalCount).done(function(data, totalCount) {\r\n loadResult.extra.totalCount = totalCount;\r\n d.resolve(data, loadResult.extra)\r\n }).fail(d.reject)\r\n }).fail(d.reject)\r\n }, that.option(\"loadingTimeout\"));\r\n return d.fail(function() {\r\n that._eventsStrategy.fireEvent(\"loadError\", arguments)\r\n }).always(function() {\r\n _this4._isLoadingAll = false\r\n }).promise()\r\n } else {\r\n return dataSource.load()\r\n }\r\n },\r\n reload: function(full) {\r\n return full ? this._dataSource.reload() : this._dataSource.load()\r\n },\r\n getCachedStoreData: function() {\r\n return this._cachedStoreData\r\n }\r\n }\r\n}());\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.focus.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.focus\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiData_grid2 = require(\"./ui.data_grid.utils\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\r\n_uiData_grid.default.registerModule(\"focus\", (0, _extend.extend)(true, {}, _uiGrid_core.default, {\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 = (0, _data.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.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.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 || !(0, _type.isDefined)(data[0].key) || data[0].key === -1) {\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 = (0, _uiData_grid2.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 ((0, _common.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 (ui/data_grid/ui.data_grid.columns_controller.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.columns_controller\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"columns\", {\r\n defaultOptions: function() {\r\n return (0, _extend.extend)(true, {}, _uiGrid_core.default.defaultOptions(), {\r\n commonColumnSettings: {\r\n allowExporting: true\r\n }\r\n })\r\n },\r\n controllers: _uiGrid_core.default.controllers\r\n});\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.master_detail.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar MASTER_DETAIL_CELL_CLASS = \"dx-master-detail-cell\";\r\nvar MASTER_DETAIL_ROW_CLASS = \"dx-master-detail-row\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar ROW_LINES_CLASS = \"dx-row-lines\";\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n masterDetail: {\r\n enabled: false,\r\n autoExpandAll: false,\r\n template: null\r\n }\r\n }\r\n },\r\n extenders: {\r\n controllers: {\r\n columns: {\r\n _getExpandColumnsCore: function() {\r\n var expandColumns = this.callBase();\r\n if (this.option(\"masterDetail.enabled\")) {\r\n expandColumns.push({\r\n type: \"detailExpand\",\r\n cellTemplate: _uiGrid_core.default.getExpandCellTemplate()\r\n })\r\n }\r\n return expandColumns\r\n }\r\n },\r\n data: function() {\r\n var initMasterDetail = function(that) {\r\n that._expandedItems = [];\r\n that._isExpandAll = that.option(\"masterDetail.autoExpandAll\")\r\n };\r\n return {\r\n init: function() {\r\n var that = this;\r\n initMasterDetail(that);\r\n that.callBase()\r\n },\r\n expandAll: function(groupIndex) {\r\n var that = this;\r\n if (groupIndex < 0) {\r\n that._isExpandAll = true;\r\n that._expandedItems = [];\r\n that.updateItems()\r\n } else {\r\n that.callBase.apply(that, arguments)\r\n }\r\n },\r\n collapseAll: function(groupIndex) {\r\n var that = this;\r\n if (groupIndex < 0) {\r\n that._isExpandAll = false;\r\n that._expandedItems = [];\r\n that.updateItems()\r\n } else {\r\n that.callBase.apply(that, arguments)\r\n }\r\n },\r\n isRowExpanded: function(key) {\r\n var that = this;\r\n var expandIndex = _uiGrid_core.default.getIndexByKey(key, that._expandedItems);\r\n if (Array.isArray(key)) {\r\n return that.callBase.apply(that, arguments)\r\n } else {\r\n return !!(that._isExpandAll ^ (expandIndex >= 0 && that._expandedItems[expandIndex].visible))\r\n }\r\n },\r\n _getRowIndicesForExpand: function(key) {\r\n var rowIndex = this.getRowIndexByKey(key);\r\n return [rowIndex, rowIndex + 1]\r\n },\r\n _changeRowExpandCore: function(key) {\r\n var that = this;\r\n var result;\r\n if (Array.isArray(key)) {\r\n result = that.callBase.apply(that, arguments)\r\n } else {\r\n var expandIndex = _uiGrid_core.default.getIndexByKey(key, that._expandedItems);\r\n if (expandIndex >= 0) {\r\n var visible = that._expandedItems[expandIndex].visible;\r\n that._expandedItems[expandIndex].visible = !visible\r\n } else {\r\n that._expandedItems.push({\r\n key: key,\r\n visible: true\r\n })\r\n }\r\n that.updateItems({\r\n changeType: \"update\",\r\n rowIndices: that._getRowIndicesForExpand(key)\r\n });\r\n result = (new _deferred.Deferred).resolve()\r\n }\r\n return result\r\n },\r\n _processDataItem: function(data, options) {\r\n var that = this;\r\n var dataItem = that.callBase.apply(that, arguments);\r\n dataItem.isExpanded = that.isRowExpanded(dataItem.key);\r\n if (void 0 === options.detailColumnIndex) {\r\n options.detailColumnIndex = -1;\r\n (0, _iterator.each)(options.visibleColumns, function(index, column) {\r\n if (\"expand\" === column.command && !(0, _type.isDefined)(column.groupIndex)) {\r\n options.detailColumnIndex = index;\r\n return false\r\n }\r\n })\r\n }\r\n if (options.detailColumnIndex >= 0) {\r\n dataItem.values[options.detailColumnIndex] = dataItem.isExpanded\r\n }\r\n return dataItem\r\n },\r\n _processItems: function(items, change) {\r\n var that = this;\r\n var changeType = change.changeType;\r\n var result = [];\r\n items = that.callBase.apply(that, arguments);\r\n if (\"loadingAll\" === changeType) {\r\n return items\r\n }\r\n if (\"refresh\" === changeType) {\r\n that._expandedItems = (0, _common.grep)(that._expandedItems, function(item) {\r\n return item.visible\r\n })\r\n }(0, _iterator.each)(items, function(index, item) {\r\n result.push(item);\r\n var expandIndex = _uiGrid_core.default.getIndexByKey(item.key, that._expandedItems);\r\n if (\"data\" === item.rowType && (item.isExpanded || expandIndex >= 0) && !item.isNewRow) {\r\n result.push({\r\n visible: item.isExpanded,\r\n rowType: \"detail\",\r\n key: item.key,\r\n data: item.data,\r\n values: []\r\n })\r\n }\r\n });\r\n return result\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n var isEnabledChanged;\r\n var isAutoExpandAllChanged;\r\n if (\"masterDetail\" === args.name) {\r\n args.name = \"dataSource\";\r\n switch (args.fullName) {\r\n case \"masterDetail\":\r\n var value = args.value || {};\r\n var previousValue = args.previousValue || {};\r\n isEnabledChanged = value.enabled !== previousValue.enabled;\r\n isAutoExpandAllChanged = value.autoExpandAll !== previousValue.autoExpandAll;\r\n break;\r\n case \"masterDetail.enabled\":\r\n isEnabledChanged = true;\r\n break;\r\n case \"masterDetail.autoExpandAll\":\r\n isAutoExpandAllChanged = true\r\n }\r\n if (isEnabledChanged || isAutoExpandAllChanged) {\r\n initMasterDetail(that)\r\n }\r\n }\r\n that.callBase(args)\r\n }\r\n }\r\n }(),\r\n resizing: {\r\n fireContentReadyAction: function() {\r\n this.callBase.apply(this, arguments);\r\n this._updateParentDataGrids(this.component.$element())\r\n },\r\n _updateParentDataGrids: function($element) {\r\n var _this = this;\r\n var $masterDetailRow = $element.closest(\".\" + MASTER_DETAIL_ROW_CLASS);\r\n if ($masterDetailRow.length) {\r\n (0, _deferred.when)(this._updateMasterDataGrid($masterDetailRow, $element)).done(function() {\r\n _this._updateParentDataGrids($masterDetailRow.parent())\r\n })\r\n }\r\n },\r\n _updateMasterDataGrid: function($masterDetailRow, $detailElement) {\r\n var masterRowOptions = (0, _renderer.default)($masterDetailRow).data(\"options\");\r\n var masterDataGrid = (0, _renderer.default)($masterDetailRow).closest(\".\" + this.getWidgetContainerClass()).parent().data(\"dxDataGrid\");\r\n if (masterRowOptions && masterDataGrid) {\r\n if (masterDataGrid.getView(\"rowsView\").isFixedColumns()) {\r\n this._updateFixedMasterDetailGrids(masterDataGrid, masterRowOptions.rowIndex, $detailElement)\r\n } else {\r\n var scrollable = masterDataGrid.getScrollable();\r\n return scrollable && scrollable.update()\r\n }\r\n }\r\n },\r\n _updateFixedMasterDetailGrids: function(masterDataGrid, masterRowIndex, $detailElement) {\r\n var _this2 = this;\r\n var $rows = (0, _renderer.default)(masterDataGrid.getRowElement(masterRowIndex));\r\n if ($rows && 2 === $rows.length && $rows.eq(0).height() !== $rows.eq(1).height()) {\r\n var detailElementWidth = $detailElement.width();\r\n return masterDataGrid.updateDimensions().done(function() {\r\n var isDetailHorizontalScrollCanBeShown = _this2.option(\"columnAutoWidth\") && true === masterDataGrid.option(\"scrolling.useNative\");\r\n var isDetailGridWidthChanged = isDetailHorizontalScrollCanBeShown && detailElementWidth !== $detailElement.width();\r\n if (isDetailHorizontalScrollCanBeShown && isDetailGridWidthChanged) {\r\n _this2.updateDimensions()\r\n }\r\n })\r\n }\r\n },\r\n _toggleBestFitMode: function(isBestFit) {\r\n this.callBase.apply(this, arguments);\r\n if (this.option(\"masterDetail.template\")) {\r\n var $rowsTable = this._rowsView._getTableElement();\r\n if ($rowsTable) {\r\n $rowsTable.find(\".dx-master-detail-cell\").toggleClass(\"dx-hidden\", isBestFit)\r\n }\r\n }\r\n }\r\n }\r\n },\r\n views: {\r\n rowsView: function() {\r\n return {\r\n _getCellTemplate: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n var editingController = that.getController(\"editing\");\r\n var isEditRow = editingController && editingController.isEditRow(options.rowIndex);\r\n var template;\r\n if (\"detail\" === column.command && !isEditRow) {\r\n template = that.option(\"masterDetail.template\") || {\r\n allowRenderToDetachedContainer: false,\r\n render: that._getDefaultTemplate(column)\r\n }\r\n } else {\r\n template = that.callBase.apply(that, arguments)\r\n }\r\n return template\r\n },\r\n _isDetailRow: function(row) {\r\n return row && row.rowType && 0 === row.rowType.indexOf(\"detail\")\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row);\r\n if (row && this._isDetailRow(row)) {\r\n this.option(\"showRowLines\") && $row.addClass(ROW_LINES_CLASS);\r\n $row.addClass(MASTER_DETAIL_ROW_CLASS);\r\n if ((0, _type.isDefined)(row.visible)) {\r\n $row.toggle(row.visible)\r\n }\r\n }\r\n return $row\r\n },\r\n _renderCells: function($row, options) {\r\n var row = options.row;\r\n var $detailCell;\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n if (row.rowType && this._isDetailRow(row)) {\r\n if (this._needRenderCell(0, options.columnIndices)) {\r\n $detailCell = this._renderCell($row, {\r\n value: null,\r\n row: row,\r\n rowIndex: row.rowIndex,\r\n column: {\r\n command: \"detail\"\r\n },\r\n columnIndex: 0\r\n });\r\n $detailCell.addClass(CELL_FOCUS_DISABLED_CLASS).addClass(MASTER_DETAIL_CELL_CLASS).attr(\"colSpan\", visibleColumns.length)\r\n }\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n }\r\n }\r\n }()\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/excel/excel.tag_helper.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../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 ((0, _type.isDefined)(attributeValue)) {\r\n result.push(\" \", attributeName, '=\"', attributeValue, '\"')\r\n }\r\n }\r\n if ((0, _type.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\nvar _default = tagHelper;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/excel_creator.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getData = getData;\r\nexports.ExcelCreator = void 0;\r\nvar _class = _interopRequireDefault(require(\"../core/class\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../ui/widget/ui.errors\"));\r\nvar _string = require(\"../core/utils/string\");\r\nvar _jszip = _interopRequireDefault(require(\"jszip\"));\r\nvar _file_saver = require(\"./file_saver\");\r\nvar _excel_format_converter = _interopRequireDefault(require(\"./excel_format_converter\"));\r\nvar _excel = _interopRequireDefault(require(\"./excel/excel.file\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\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\nvar ExcelCreator = _class.default.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 (0, _type.isDefined)(content) ? result + \">\" + content + \"\" : result + \" />\"\r\n },\r\n _convertToExcelCellRef: function(zeroBasedRowIndex, zeroBasedCellIndex) {\r\n var columnName = \"\";\r\n var max = 26;\r\n var charCode;\r\n var isCellIndexFound;\r\n while (!isCellIndexFound) {\r\n charCode = 65 + (zeroBasedCellIndex >= max ? zeroBasedCellIndex % max : Math.ceil(zeroBasedCellIndex));\r\n columnName = String.fromCharCode(charCode) + columnName;\r\n if (zeroBasedCellIndex >= max) {\r\n zeroBasedCellIndex = Math.floor(zeroBasedCellIndex / max) - 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 ((0, _type.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 {\r\n if ((0, _type.isString)(object)) {\r\n return VALID_TYPES.string\r\n } else {\r\n if ((0, _type.isDate)(object)) {\r\n return VALID_TYPES.number\r\n } else {\r\n if ((0, _type.isBoolean)(object)) {\r\n return VALID_TYPES.boolean\r\n }\r\n }\r\n }\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 ((0, _type.isObject)(format)) {\r\n return (0, _extend.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 ((0, _type.isDefined)(format) && \"date\" === dataType) {\r\n format = UNSUPPORTED_FORMAT_MAPPING[format && format.type || format] || format\r\n }\r\n return _excel_format_converter.default.convertFormat(format, newFormat.precision, dataType, currency)\r\n },\r\n _appendString: function(value) {\r\n if ((0, _type.isDefined)(value)) {\r\n value = String(value);\r\n if (value.length) {\r\n value = (0, _string.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 ((0, _type.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 _ref = dataProvider.getCellData(rowIndex, cellIndex) || {},\r\n cellSourceData = _ref.cellSourceData;\r\n var _ref2 = dataProvider.getCellData(rowIndex, cellIndex) || {},\r\n value = _ref2.value;\r\n var sourceValue;\r\n var type = this._getDataType(dataProvider.getCellType(rowIndex, cellIndex));\r\n if (type === VALID_TYPES.date && !(0, _type.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(_ref3) {\r\n var dataProvider = _ref3.dataProvider,\r\n value = _ref3.value,\r\n style = _ref3.style,\r\n sourceData = _ref3.sourceData;\r\n var styleCopy = _excel.default.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 ((0, _type.isDefined)(styleCopy)) {\r\n if ((0, _type.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 that = this;\r\n var rowIndex;\r\n var cellIndex;\r\n var cellsArray;\r\n var cellData;\r\n var result = [];\r\n var dataProvider = that._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 = that._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: that._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 ((0, _type.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 ((0, _type.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 (!that._needSheetPr && dataProvider.getGroupLevel(rowIndex) > 0) {\r\n that._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 _this = this;\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 (!(0, _type.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(function(item) {\r\n return _this._excelFile.registerCellFormat(item)\r\n })\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 var content = 'Sheet!$1:$1';\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 }], content)\r\n },\r\n _getContentTypesContent: function() {\r\n return XML_TAG + ''\r\n },\r\n _generateStylesXML: function() {\r\n var that = this;\r\n var folder = that._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 += that._getXMLTag(\"cellStyles\", [{\r\n name: \"count\",\r\n value: 1\r\n }], that._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 + that._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 that._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 }], (0, _type.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 = (0, _type.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 (!(0, _type.isDefined)(usedArea[rowIndex]) || !(0, _type.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 (!(0, _type.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 _excel.default;\r\n if ((0, _type.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 _ui.default.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: _file_saver.MIME_TYPES.EXCEL\r\n };\r\n var deferred = new _deferred.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\nexports.ExcelCreator = ExcelCreator;\r\nExcelCreator.JSZip = _jszip.default;\r\n\r\nfunction getData(data, options) {\r\n var excelCreator = new ExcelCreator(data, options);\r\n excelCreator._checkZipState();\r\n return excelCreator.ready().then(function() {\r\n return excelCreator.getData((0, _type.isFunction)((0, _window.getWindow)().Blob))\r\n })\r\n}\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.context_menu.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.context_menu\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"contextMenu\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.master_detail.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.master_detail\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"masterDetail\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.column_chooser.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.ColumnChooserView = exports.ColumnChooserController = void 0;\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.column_chooser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar ColumnChooserController = _uiGrid_core.default.controllers.columnChooser;\r\nexports.ColumnChooserController = ColumnChooserController;\r\nvar ColumnChooserView = _uiGrid_core.default.views.columnChooserView;\r\nexports.ColumnChooserView = ColumnChooserView;\r\n_uiData_grid.default.registerModule(\"columnChooser\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/overlay/utils.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getElementMaxHeightByWindow = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar WINDOW_HEIGHT_PERCENT = .9;\r\nvar getElementMaxHeightByWindow = function($element, startLocation) {\r\n var $window = (0, _renderer.default)((0, _window.getWindow)());\r\n var _$element$offset = $element.offset(),\r\n elementOffset = _$element$offset.top;\r\n var actualOffset;\r\n if ((0, _type.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\nexports.getElementMaxHeightByWindow = getElementMaxHeightByWindow;\r\n","/**\r\n * DevExtreme (exporter/excel/excel.number_format_helper.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _excel = _interopRequireDefault(require(\"./excel.tag_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\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) || (0, _type.isDefined)(leftTag) && (0, _type.isDefined)(rightTag) && leftTag.formatCode === rightTag.formatCode\r\n },\r\n isEmpty: function(tag) {\r\n return !(0, _type.isDefined)(tag) || !(0, _type.isDefined)(tag.formatCode) || \"\" === tag.formatCode\r\n },\r\n toXml: function(tag) {\r\n return _excel.default.toXml(\"numFmt\", {\r\n numFmtId: tag[numberFormatHelper.ID_PROPERTY_NAME],\r\n formatCode: tag.formatCode\r\n })\r\n }\r\n};\r\nvar _default = numberFormatHelper;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_view/ui.tree_view.base.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _element = require(\"../../core/element\");\r\nvar _check_box = _interopRequireDefault(require(\"../check_box\"));\r\nvar _ui = _interopRequireDefault(require(\"../hierarchical_collection/ui.hierarchical_collection_widget\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _double_click = require(\"../../events/double_click\");\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _ui2 = _interopRequireDefault(require(\"../scroll_view/ui.scrollable\"));\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _ui3 = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar WIDGET_CLASS = \"dx-treeview\";\r\nvar NODE_CLASS = \"\".concat(WIDGET_CLASS, \"-node\");\r\nvar NODE_CONTAINER_CLASS = \"\".concat(NODE_CLASS, \"-container\");\r\nvar NODE_LOAD_INDICATOR_CLASS = \"\".concat(NODE_CLASS, \"-loadindicator\");\r\nvar OPENED_NODE_CONTAINER_CLASS = \"\".concat(NODE_CLASS, \"-container-opened\");\r\nvar IS_LEAF = \"\".concat(NODE_CLASS, \"-is-leaf\");\r\nvar ITEM_CLASS = \"\".concat(WIDGET_CLASS, \"-item\");\r\nvar ITEM_WITH_CHECKBOX_CLASS = \"\".concat(ITEM_CLASS, \"-with-checkbox\");\r\nvar ITEM_WITHOUT_CHECKBOX_CLASS = \"\".concat(ITEM_CLASS, \"-without-checkbox\");\r\nvar ITEM_DATA_KEY = \"\".concat(ITEM_CLASS, \"-data\");\r\nvar TOGGLE_ITEM_VISIBILITY_CLASS = \"\".concat(WIDGET_CLASS, \"-toggle-item-visibility\");\r\nvar LOAD_INDICATOR_CLASS = \"\".concat(WIDGET_CLASS, \"-loadindicator\");\r\nvar LOAD_INDICATOR_WRAPPER_CLASS = \"\".concat(WIDGET_CLASS, \"-loadindicator-wrapper\");\r\nvar TOGGLE_ITEM_VISIBILITY_OPENED_CLASS = \"\".concat(WIDGET_CLASS, \"-toggle-item-visibility-opened\");\r\nvar SELECT_ALL_ITEM_CLASS = \"\".concat(WIDGET_CLASS, \"-select-all-item\");\r\nvar INVISIBLE_STATE_CLASS = \"dx-state-invisible\";\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar SELECTED_ITEM_CLASS = \"dx-state-selected\";\r\nvar EXPAND_EVENT_NAMESPACE = \"dxTreeView_expand\";\r\nvar DATA_ITEM_ID = \"data-item-id\";\r\nvar TreeViewBase = _ui.default.inherit({\r\n _supportedKeys: function(e) {\r\n var _this = this;\r\n var click = function(e) {\r\n var $itemElement = (0, _renderer.default)(_this.option(\"focusedElement\"));\r\n if (!$itemElement.length) {\r\n return\r\n }\r\n e.target = $itemElement;\r\n e.currentTarget = $itemElement;\r\n _this._itemClickHandler(e, $itemElement.children(\".\" + ITEM_CLASS));\r\n var expandEventName = _this._getEventNameByOption(_this.option(\"expandEvent\"));\r\n var expandByClick = expandEventName === (0, _index.addNamespace)(_click.name, EXPAND_EVENT_NAMESPACE);\r\n if (expandByClick) {\r\n _this._expandEventHandler(e)\r\n }\r\n };\r\n var select = function(e) {\r\n e.preventDefault();\r\n _this._changeCheckBoxState((0, _renderer.default)(_this.option(\"focusedElement\")))\r\n };\r\n var toggleExpandedNestedItems = function(state, e) {\r\n if (!this.option(\"expandAllEnabled\")) {\r\n return\r\n }\r\n e.preventDefault();\r\n var $rootElement = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n if (!$rootElement.length) {\r\n return\r\n }\r\n var rootItem = this._getItemData($rootElement.find(\".\".concat(ITEM_CLASS)));\r\n this._toggleExpandedNestedItems([rootItem], state)\r\n };\r\n return (0, _extend.extend)(this.callBase(), {\r\n enter: this._showCheckboxes() ? select : click,\r\n space: this._showCheckboxes() ? select : click,\r\n asterisk: toggleExpandedNestedItems.bind(this, true),\r\n minus: toggleExpandedNestedItems.bind(this, false)\r\n })\r\n },\r\n _changeCheckBoxState: function($element) {\r\n var checkboxInstance = this._getCheckBoxInstance($element);\r\n var currentState = checkboxInstance.option(\"value\");\r\n if (!checkboxInstance.option(\"disabled\")) {\r\n this._updateItemSelection(!currentState, $element.find(\".\" + ITEM_CLASS).get(0), true, $element)\r\n }\r\n },\r\n _toggleExpandedNestedItems: function(items, state) {\r\n if (!items) {\r\n return\r\n }\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n var item = items[i];\r\n var node = this._dataAdapter.getNodeByItem(item);\r\n this._toggleExpandedState(node, state);\r\n this._toggleExpandedNestedItems(item.items, state)\r\n }\r\n },\r\n _getNodeElement: function(node, cache) {\r\n var key = this._encodeString(node.internalFields.key);\r\n if (cache) {\r\n if (!cache.$nodeByKey) {\r\n cache.$nodeByKey = {};\r\n this.$element().find(\".\".concat(NODE_CLASS)).each(function() {\r\n var $node = (0, _renderer.default)(this);\r\n var key = $node.attr(DATA_ITEM_ID);\r\n cache.$nodeByKey[key] = $node\r\n })\r\n }\r\n return cache.$nodeByKey[key] || (0, _renderer.default)()\r\n }\r\n var element = this.$element().get(0).querySelector(\"[\".concat(DATA_ITEM_ID, '=\"').concat(key, '\"]'));\r\n return (0, _renderer.default)(element)\r\n },\r\n _activeStateUnit: \".\" + ITEM_CLASS,\r\n _widgetClass: function() {\r\n return WIDGET_CLASS\r\n },\r\n _getDefaultOptions: function() {\r\n var defaultOptions = (0, _extend.extend)(this.callBase(), {\r\n animationEnabled: true,\r\n dataStructure: \"tree\",\r\n deferRendering: true,\r\n expandAllEnabled: false,\r\n hasItemsExpr: \"hasItems\",\r\n selectNodesRecursive: true,\r\n expandNodesRecursive: true,\r\n showCheckBoxesMode: \"none\",\r\n selectAllText: _message.default.format(\"dxList-selectAll\"),\r\n onItemSelectionChanged: null,\r\n onItemExpanded: null,\r\n onItemCollapsed: null,\r\n scrollDirection: \"vertical\",\r\n virtualModeEnabled: false,\r\n rootValue: 0,\r\n focusStateEnabled: false,\r\n selectionMode: \"multiple\",\r\n expandEvent: \"dblclick\",\r\n selectByClick: false,\r\n createChildren: null,\r\n onSelectAllValueChanged: null\r\n });\r\n return (0, _extend.extend)(true, defaultOptions, {\r\n integrationOptions: {\r\n useDeferUpdateForTemplates: false\r\n }\r\n })\r\n },\r\n _initSelectedItems: _common.noop,\r\n _syncSelectionOptions: _common.asyncNoop,\r\n _fireSelectionChanged: function() {\r\n var selectionChangePromise = this._selectionChangePromise;\r\n (0, _deferred.when)(selectionChangePromise).done(function() {\r\n this._createActionByOption(\"onSelectionChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })()\r\n }.bind(this))\r\n },\r\n _createSelectAllValueChangedAction: function() {\r\n this._selectAllValueChangedAction = this._createActionByOption(\"onSelectAllValueChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _fireSelectAllValueChanged: function(value) {\r\n this._selectAllValueChangedAction({\r\n value: value\r\n })\r\n },\r\n _checkBoxModeChange: function(value, previousValue) {\r\n if (\"none\" === previousValue || \"none\" === value) {\r\n this.repaint();\r\n return\r\n }\r\n var selectAllExists = this._$selectAllItem && this._$selectAllItem.length;\r\n switch (value) {\r\n case \"selectAll\":\r\n !selectAllExists && this._renderSelectAllItem();\r\n break;\r\n case \"normal\":\r\n if (selectAllExists) {\r\n this._$selectAllItem.remove();\r\n delete this._$selectAllItem\r\n }\r\n }\r\n },\r\n _removeSelection: function() {\r\n var that = this;\r\n (0, _iterator.each)(this._dataAdapter.getFullData(), function(_, node) {\r\n if (!that._hasChildren(node)) {\r\n return\r\n }\r\n that._dataAdapter.toggleSelection(node.internalFields.key, false, true)\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name,\r\n value = args.value,\r\n previousValue = args.previousValue;\r\n switch (name) {\r\n case \"selectAllText\":\r\n if (this._$selectAllItem) {\r\n this._$selectAllItem.dxCheckBox(\"instance\").option(\"text\", value)\r\n }\r\n break;\r\n case \"showCheckBoxesMode\":\r\n this._checkBoxModeChange(value, previousValue);\r\n break;\r\n case \"scrollDirection\":\r\n this._scrollableContainer.option(\"direction\", value);\r\n break;\r\n case \"items\":\r\n delete this._$selectAllItem;\r\n this.callBase(args);\r\n break;\r\n case \"dataSource\":\r\n this.callBase(args);\r\n this._initDataAdapter();\r\n this._filter = {};\r\n break;\r\n case \"hasItemsExpr\":\r\n this._initAccessors();\r\n this.repaint();\r\n break;\r\n case \"expandEvent\":\r\n this._initExpandEvent();\r\n break;\r\n case \"deferRendering\":\r\n case \"dataStructure\":\r\n case \"rootValue\":\r\n case \"createChildren\":\r\n case \"expandNodesRecursive\":\r\n case \"onItemSelectionChanged\":\r\n case \"onItemExpanded\":\r\n case \"onItemCollapsed\":\r\n case \"expandAllEnabled\":\r\n case \"animationEnabled\":\r\n case \"virtualModeEnabled\":\r\n case \"selectByClick\":\r\n break;\r\n case \"selectionMode\":\r\n this._initDataAdapter();\r\n this.callBase(args);\r\n break;\r\n case \"onSelectAllValueChanged\":\r\n this._createSelectAllValueChangedAction();\r\n break;\r\n case \"selectNodesRecursive\":\r\n this._dataAdapter.setOption(\"recursiveSelection\", args.value);\r\n this.repaint();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _initDataSource: function() {\r\n if (this._useCustomChildrenLoader()) {\r\n this._loadChildrenByCustomLoader(null).done(function(newItems) {\r\n if (newItems && newItems.length) {\r\n this.option(\"items\", newItems)\r\n }\r\n }.bind(this))\r\n } else {\r\n this.callBase();\r\n this._isVirtualMode() && this._initVirtualMode()\r\n }\r\n },\r\n _initVirtualMode: function() {\r\n var filter = this._filter;\r\n if (!filter.custom) {\r\n filter.custom = this._dataSource.filter()\r\n }\r\n if (!filter.internal) {\r\n filter.internal = [this.option(\"parentIdExpr\"), this.option(\"rootValue\")]\r\n }\r\n },\r\n _useCustomChildrenLoader: function() {\r\n return (0, _type.isFunction)(this.option(\"createChildren\")) && this._isDataStructurePlain()\r\n },\r\n _loadChildrenByCustomLoader: function(parentNode) {\r\n var invocationResult = this.option(\"createChildren\").call(this, parentNode);\r\n if (Array.isArray(invocationResult)) {\r\n return (new _deferred.Deferred).resolve(invocationResult).promise()\r\n }\r\n if (invocationResult && (0, _type.isFunction)(invocationResult.then)) {\r\n return (0, _deferred.fromPromise)(invocationResult)\r\n }\r\n return (new _deferred.Deferred).resolve([]).promise()\r\n },\r\n _combineFilter: function() {\r\n if (!this._filter.custom || !this._filter.custom.length) {\r\n return this._filter.internal\r\n }\r\n return [this._filter.custom, this._filter.internal]\r\n },\r\n _dataSourceLoadErrorHandler: function() {\r\n this._renderEmptyMessage()\r\n },\r\n _init: function() {\r\n this._filter = {};\r\n this.callBase();\r\n this._initStoreChangeHandlers()\r\n },\r\n _dataSourceChangedHandler: function(newItems) {\r\n var items = this.option(\"items\");\r\n if (this._initialized && this._isVirtualMode() && items.length) {\r\n return\r\n }\r\n this.option(\"items\", newItems)\r\n },\r\n _removeTreeViewLoadIndicator: function() {\r\n if (!this._treeViewLoadIndicator) {\r\n return\r\n }\r\n this._treeViewLoadIndicator.remove();\r\n this._treeViewLoadIndicator = null\r\n },\r\n _createTreeViewLoadIndicator: function() {\r\n this._treeViewLoadIndicator = (0, _renderer.default)(\"
\").addClass(LOAD_INDICATOR_CLASS);\r\n this._createComponent(this._treeViewLoadIndicator, _load_indicator.default, {});\r\n return this._treeViewLoadIndicator\r\n },\r\n _dataSourceLoadingChangedHandler: function(isLoading) {\r\n var resultFilter;\r\n if (this._isVirtualMode()) {\r\n resultFilter = this._combineFilter();\r\n this._dataSource.filter(resultFilter)\r\n }\r\n if (isLoading && !this._dataSource.isLoaded()) {\r\n this.option(\"items\", []);\r\n var $wrapper = (0, _renderer.default)(\"
\").addClass(LOAD_INDICATOR_WRAPPER_CLASS);\r\n this._createTreeViewLoadIndicator().appendTo($wrapper);\r\n this.itemsContainer().append($wrapper);\r\n if (this._isVirtualMode() && this._dataSource.filter() !== resultFilter) {\r\n this._dataSource.filter([])\r\n }\r\n } else {\r\n this._removeTreeViewLoadIndicator()\r\n }\r\n },\r\n _initStoreChangeHandlers: function() {\r\n var _this2 = this;\r\n if (\"plain\" !== this.option(\"dataStructure\")) {\r\n return\r\n }\r\n this._dataSource && this._dataSource.store().on(\"inserted\", function(newItem) {\r\n _this2.option().items = _this2.option(\"items\").concat(newItem);\r\n _this2._dataAdapter.addItem(newItem);\r\n if (!_this2._dataAdapter.isFiltered(newItem)) {\r\n return\r\n }\r\n _this2._updateLevel(_this2._parentIdGetter(newItem))\r\n }).on(\"removed\", function(removedKey) {\r\n var node = _this2._dataAdapter.getNodeByKey(removedKey);\r\n if ((0, _type.isDefined)(node)) {\r\n _this2.option(\"items\")[_this2._dataAdapter.getIndexByKey(node.internalFields.key)] = 0;\r\n _this2._markChildrenItemsToRemove(node);\r\n _this2._removeItems();\r\n _this2._dataAdapter.removeItem(removedKey);\r\n _this2._updateLevel(_this2._parentIdGetter(node))\r\n }\r\n })\r\n },\r\n _markChildrenItemsToRemove: function(node) {\r\n var _this3 = this;\r\n var keys = node.internalFields.childrenKeys;\r\n (0, _iterator.each)(keys, function(_, key) {\r\n _this3.option(\"items\")[_this3._dataAdapter.getIndexByKey(key)] = 0;\r\n _this3._markChildrenItemsToRemove(_this3._dataAdapter.getNodeByKey(key))\r\n })\r\n },\r\n _removeItems: function() {\r\n var _this4 = this;\r\n var items = (0, _extend.extend)(true, [], this.option(\"items\"));\r\n var counter = 0;\r\n (0, _iterator.each)(items, function(index, item) {\r\n if (!item) {\r\n _this4.option(\"items\").splice(index - counter, 1);\r\n counter++\r\n }\r\n })\r\n },\r\n _updateLevel: function(parentId) {\r\n var $container = this._getContainerByParentKey(parentId);\r\n this._renderItems($container, this._dataAdapter.getChildrenNodes(parentId))\r\n },\r\n _getOldContainer: function($itemElement) {\r\n if ($itemElement.length) {\r\n return $itemElement.children(\".\".concat(NODE_CONTAINER_CLASS))\r\n }\r\n if (this._scrollableContainer) {\r\n return this._scrollableContainer.$content().children()\r\n }\r\n return (0, _renderer.default)()\r\n },\r\n _getContainerByParentKey: function(parentId) {\r\n var node = this._dataAdapter.getNodeByKey(parentId);\r\n var $itemElement = node ? this._getNodeElement(node) : [];\r\n this._getOldContainer($itemElement).remove();\r\n var $container = this._renderNodeContainer($itemElement);\r\n if (this._isRootLevel(parentId)) {\r\n if (!this._scrollableContainer) {\r\n this._renderScrollableContainer()\r\n }\r\n this._scrollableContainer.$content().append($container)\r\n }\r\n return $container\r\n },\r\n _isRootLevel: function(parentId) {\r\n return parentId === this.option(\"rootValue\")\r\n },\r\n _getAccessors: function() {\r\n var accessors = this.callBase();\r\n accessors.push(\"hasItems\");\r\n return accessors\r\n },\r\n _getDataAdapterOptions: function() {\r\n return {\r\n rootValue: this.option(\"rootValue\"),\r\n multipleSelection: !this._isSingleSelection(),\r\n recursiveSelection: this._isRecursiveSelection(),\r\n recursiveExpansion: this.option(\"expandNodesRecursive\"),\r\n selectionRequired: this.option(\"selectionRequired\"),\r\n dataType: this.option(\"dataStructure\"),\r\n sort: this._dataSource && this._dataSource.sort()\r\n }\r\n },\r\n _initMarkup: function() {\r\n this._renderScrollableContainer();\r\n this._renderEmptyMessage(this._dataAdapter.getRootNodes());\r\n this.callBase();\r\n this.setAria(\"role\", \"tree\")\r\n },\r\n _renderContentImpl: function() {\r\n var $nodeContainer = this._renderNodeContainer();\r\n this._scrollableContainer.$content().append($nodeContainer);\r\n if (!this.option(\"items\") || !this.option(\"items\").length) {\r\n return\r\n }\r\n this._renderItems($nodeContainer, this._dataAdapter.getRootNodes());\r\n this._initExpandEvent();\r\n if (this._selectAllEnabled()) {\r\n this._createSelectAllValueChangedAction();\r\n this._renderSelectAllItem($nodeContainer)\r\n }\r\n },\r\n _isVirtualMode: function() {\r\n return this.option(\"virtualModeEnabled\") && this._isDataStructurePlain() && !!this.option(\"dataSource\")\r\n },\r\n _isDataStructurePlain: function() {\r\n return \"plain\" === this.option(\"dataStructure\")\r\n },\r\n _fireContentReadyAction: function() {\r\n var dataSource = this.getDataSource();\r\n var skipContentReadyAction = dataSource && !dataSource.isLoaded();\r\n if (this._scrollableContainer && (0, _window.hasWindow)()) {\r\n this._scrollableContainer.update()\r\n }\r\n if (!skipContentReadyAction) {\r\n this.callBase()\r\n }\r\n if (this._scrollableContainer && (0, _window.hasWindow)()) {\r\n this._scrollableContainer.update()\r\n }\r\n },\r\n _renderScrollableContainer: function() {\r\n this._scrollableContainer = this._createComponent((0, _renderer.default)(\"
\").appendTo(this.$element()), _ui2.default, {\r\n direction: this.option(\"scrollDirection\"),\r\n useKeyboard: false\r\n })\r\n },\r\n _renderNodeContainer: function($parent) {\r\n var $container = (0, _renderer.default)(\"
    \").addClass(NODE_CONTAINER_CLASS);\r\n this.setAria(\"role\", \"group\", $container);\r\n if ($parent && $parent.length) {\r\n var itemData = this._getItemData($parent.children(\".\" + ITEM_CLASS));\r\n if (this._expandedGetter(itemData)) {\r\n $container.addClass(OPENED_NODE_CONTAINER_CLASS)\r\n }\r\n $container.appendTo($parent)\r\n }\r\n return $container\r\n },\r\n _createDOMElement: function($nodeContainer, node) {\r\n var $node = (0, _renderer.default)(\"
  • \").addClass(NODE_CLASS).attr(DATA_ITEM_ID, this._encodeString(node.internalFields.key)).prependTo($nodeContainer);\r\n this.setAria({\r\n role: \"treeitem\",\r\n label: this._displayGetter(node.internalFields.item) || \"\",\r\n expanded: node.internalFields.expanded || false,\r\n level: this._getLevel($nodeContainer)\r\n }, $node);\r\n return $node\r\n },\r\n _getLevel: function($nodeContainer) {\r\n var parent = $nodeContainer.parent();\r\n return parent.hasClass(\"dx-scrollable-content\") ? 1 : parseInt(parent.attr(\"aria-level\")) + 1\r\n },\r\n _showCheckboxes: function() {\r\n return \"none\" !== this.option(\"showCheckBoxesMode\")\r\n },\r\n _selectAllEnabled: function() {\r\n return \"selectAll\" === this.option(\"showCheckBoxesMode\") && !this._isSingleSelection()\r\n },\r\n _renderItems: function($nodeContainer, nodes) {\r\n var length = nodes.length - 1;\r\n for (var i = length; i >= 0; i--) {\r\n this._renderItem(i, nodes[i], $nodeContainer)\r\n }\r\n this._renderedItemsCount += nodes.length\r\n },\r\n _renderItem: function(nodeIndex, node, $nodeContainer) {\r\n var $node = this._createDOMElement($nodeContainer, node);\r\n var nodeData = node.internalFields;\r\n var showCheckBox = this._showCheckboxes();\r\n $node.addClass(showCheckBox ? ITEM_WITH_CHECKBOX_CLASS : ITEM_WITHOUT_CHECKBOX_CLASS);\r\n $node.toggleClass(INVISIBLE_STATE_CLASS, false === nodeData.item.visible);\r\n showCheckBox && this._renderCheckBox($node, node);\r\n this.setAria(\"selected\", nodeData.selected, $node);\r\n this._toggleSelectedClass($node, nodeData.selected);\r\n this.callBase(this._renderedItemsCount + nodeIndex, nodeData.item, $node);\r\n if (false !== nodeData.item.visible) {\r\n this._renderChildren($node, node)\r\n }\r\n },\r\n _setAriaSelected: function() {},\r\n _renderChildren: function($node, node) {\r\n var _this5 = this;\r\n if (!this._hasChildren(node)) {\r\n this._addLeafClass($node);\r\n return\r\n }\r\n this._renderToggleItemVisibilityIcon($node, node);\r\n if (this.option(\"deferRendering\") && !node.internalFields.expanded) {\r\n return\r\n }\r\n this._loadSublevel(node).done(function(childNodes) {\r\n _this5._renderSublevel($node, _this5._getActualNode(node), childNodes)\r\n })\r\n },\r\n _getActualNode: function(cachedNode) {\r\n return this._dataAdapter.getNodeByKey(cachedNode.internalFields.key)\r\n },\r\n _hasChildren: function(node) {\r\n if (this._isVirtualMode() || this._useCustomChildrenLoader()) {\r\n return false !== this._hasItemsGetter(node.internalFields.item)\r\n }\r\n return this.callBase(node)\r\n },\r\n _loadSublevel: function(node) {\r\n var _this6 = this;\r\n var deferred = new _deferred.Deferred;\r\n var childrenNodes = this._getChildNodes(node);\r\n if (childrenNodes.length) {\r\n deferred.resolve(childrenNodes)\r\n } else {\r\n this._loadNestedItems(node).done(function(items) {\r\n deferred.resolve(_this6._dataAdapter.getNodesByItems(items))\r\n })\r\n }\r\n return deferred.promise()\r\n },\r\n _renderSublevel: function($node, node, childNodes) {\r\n var $nestedNodeContainer = this._renderNodeContainer($node, node);\r\n var childNodesByChildrenKeys = childNodes.filter(function(childNode) {\r\n return node.internalFields.childrenKeys.indexOf(childNode.internalFields.key) !== -1\r\n });\r\n this._renderItems($nestedNodeContainer, childNodesByChildrenKeys);\r\n if (childNodesByChildrenKeys.length && !node.internalFields.selected) {\r\n var firstChild = childNodesByChildrenKeys[0];\r\n this._updateParentsState(firstChild, this._getNodeElement(firstChild))\r\n }\r\n this._normalizeIconState($node, childNodesByChildrenKeys.length);\r\n if (node.internalFields.expanded) {\r\n $nestedNodeContainer.addClass(OPENED_NODE_CONTAINER_CLASS)\r\n }\r\n },\r\n _executeItemRenderAction: function(itemIndex, itemData, itemElement) {\r\n var node = this._getNode(itemElement);\r\n this._getItemRenderAction()({\r\n itemElement: itemElement,\r\n itemIndex: itemIndex,\r\n itemData: itemData,\r\n node: this._dataAdapter.getPublicNode(node)\r\n })\r\n },\r\n _addLeafClass: function($node) {\r\n $node.addClass(IS_LEAF)\r\n },\r\n _expandEventHandler: function(e) {\r\n var $nodeElement = (0, _renderer.default)(e.currentTarget.parentNode);\r\n if (!$nodeElement.hasClass(IS_LEAF)) {\r\n this._toggleExpandedState(e.currentTarget, void 0, e)\r\n }\r\n },\r\n _initExpandEvent: function() {\r\n var expandedEventName = this._getEventNameByOption(this.option(\"expandEvent\"));\r\n var $itemsContainer = this._itemContainer();\r\n var itemSelector = this._itemSelector();\r\n _events_engine.default.off($itemsContainer, \".\" + EXPAND_EVENT_NAMESPACE, itemSelector);\r\n _events_engine.default.on($itemsContainer, expandedEventName, itemSelector, this._expandEventHandler.bind(this))\r\n },\r\n _getEventNameByOption: function(name) {\r\n var event = \"click\" === name ? _click.name : _double_click.name;\r\n return (0, _index.addNamespace)(event, EXPAND_EVENT_NAMESPACE)\r\n },\r\n _getNode: function(identifier) {\r\n if (!(0, _type.isDefined)(identifier)) {\r\n return null\r\n }\r\n if (identifier.internalFields) {\r\n return identifier\r\n }\r\n if ((0, _type.isPrimitive)(identifier)) {\r\n return this._dataAdapter.getNodeByKey(identifier)\r\n }\r\n var itemElement = (0, _renderer.default)(identifier).get(0);\r\n if (!itemElement) {\r\n return null\r\n }\r\n if (_dom_adapter.default.isElementNode(itemElement)) {\r\n return this._getNodeByElement(itemElement)\r\n }\r\n return this._dataAdapter.getNodeByItem(itemElement)\r\n },\r\n _getNodeByElement: function(itemElement) {\r\n var $node = (0, _renderer.default)(itemElement).closest(\".\" + NODE_CLASS);\r\n var key = this._decodeString($node.attr(DATA_ITEM_ID));\r\n return this._dataAdapter.getNodeByKey(key)\r\n },\r\n _toggleExpandedState: function(itemElement, state, e) {\r\n var node = this._getNode(itemElement);\r\n if (!node) {\r\n return (new _deferred.Deferred).reject().promise()\r\n }\r\n if (node.internalFields.disabled) {\r\n return (new _deferred.Deferred).reject().promise()\r\n }\r\n var currentState = node.internalFields.expanded;\r\n if (currentState === state) {\r\n return (new _deferred.Deferred).resolve().promise()\r\n }\r\n if (this._hasChildren(node)) {\r\n var $node = this._getNodeElement(node);\r\n if ($node.find(\".\".concat(NODE_LOAD_INDICATOR_CLASS, \":not(.\").concat(INVISIBLE_STATE_CLASS, \")\")).length) {\r\n return (new _deferred.Deferred).reject().promise()\r\n }\r\n this._createLoadIndicator($node)\r\n }\r\n if (!(0, _type.isDefined)(state)) {\r\n state = !currentState\r\n }\r\n this._dataAdapter.toggleExpansion(node.internalFields.key, state);\r\n return this._updateExpandedItemsUI(node, state, e)\r\n },\r\n _createLoadIndicator: function($node) {\r\n var $icon = $node.children(\".\" + TOGGLE_ITEM_VISIBILITY_CLASS);\r\n var $nodeContainer = $node.children(\".\".concat(NODE_CONTAINER_CLASS));\r\n if ($icon.hasClass(TOGGLE_ITEM_VISIBILITY_OPENED_CLASS) || $nodeContainer.not(\":empty\").length) {\r\n return\r\n }\r\n this._createComponent((0, _renderer.default)(\"
    \").addClass(NODE_LOAD_INDICATOR_CLASS), _load_indicator.default, {}).$element().appendTo($node);\r\n $icon.hide()\r\n },\r\n _renderToggleItemVisibilityIcon: function($node, node) {\r\n var $icon = (0, _renderer.default)(\"
    \").addClass(TOGGLE_ITEM_VISIBILITY_CLASS).appendTo($node);\r\n if (node.internalFields.expanded) {\r\n $icon.addClass(TOGGLE_ITEM_VISIBILITY_OPENED_CLASS);\r\n $node.parent().addClass(OPENED_NODE_CONTAINER_CLASS)\r\n }\r\n if (node.internalFields.disabled) {\r\n $icon.addClass(DISABLED_STATE_CLASS)\r\n }\r\n this._renderToggleItemVisibilityIconClick($icon, node)\r\n },\r\n _renderToggleItemVisibilityIconClick: function($icon, node) {\r\n var _this7 = this;\r\n var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n _events_engine.default.off($icon, eventName);\r\n _events_engine.default.on($icon, eventName, function(e) {\r\n _this7._toggleExpandedState(node.internalFields.key, void 0, e)\r\n })\r\n },\r\n _updateExpandedItemsUI: function(node, state, e) {\r\n var $node = this._getNodeElement(node);\r\n var isHiddenNode = !$node.length || state && $node.is(\":hidden\");\r\n if (this.option(\"expandNodesRecursive\") && isHiddenNode) {\r\n var parentNode = this._getNode(node.internalFields.parentKey);\r\n if (parentNode) {\r\n this._updateExpandedItemsUI(parentNode, state, e)\r\n }\r\n }\r\n var $icon = $node.children(\".\" + TOGGLE_ITEM_VISIBILITY_CLASS);\r\n var $nodeContainer = $node.children(\".\".concat(NODE_CONTAINER_CLASS));\r\n $icon.toggleClass(TOGGLE_ITEM_VISIBILITY_OPENED_CLASS, state);\r\n var nodeContainerExists = $nodeContainer.length > 0;\r\n var completionCallback = new _deferred.Deferred;\r\n if (!state || nodeContainerExists && !$nodeContainer.is(\":empty\")) {\r\n this._animateNodeContainer(node, state, e, completionCallback);\r\n return completionCallback.promise()\r\n }\r\n if (0 === node.internalFields.childrenKeys.length && (this._isVirtualMode() || this._useCustomChildrenLoader())) {\r\n this._loadNestedItemsWithUpdate(node, state, e, completionCallback);\r\n return completionCallback.promise()\r\n }\r\n this._renderSublevel($node, node, this._getChildNodes(node));\r\n this._fireContentReadyAction();\r\n this._animateNodeContainer(node, state, e, completionCallback);\r\n return completionCallback.promise()\r\n },\r\n _loadNestedItemsWithUpdate: function(node, state, e, completionCallback) {\r\n var _this8 = this;\r\n var $node = this._getNodeElement(node);\r\n this._loadNestedItems(node).done(function(items) {\r\n var actualNodeData = _this8._getActualNode(node);\r\n _this8._renderSublevel($node, actualNodeData, _this8._dataAdapter.getNodesByItems(items));\r\n if (!items || !items.length) {\r\n return\r\n }\r\n _this8._fireContentReadyAction();\r\n _this8._animateNodeContainer(actualNodeData, state, e, completionCallback)\r\n })\r\n },\r\n _loadNestedItems: function(node) {\r\n var _this9 = this;\r\n if (this._useCustomChildrenLoader()) {\r\n var publicNode = this._dataAdapter.getPublicNode(node);\r\n return this._loadChildrenByCustomLoader(publicNode).done(function(newItems) {\r\n if (!_this9._areNodesExists(newItems)) {\r\n _this9._appendItems(newItems)\r\n }\r\n })\r\n }\r\n if (!this._isVirtualMode()) {\r\n return (new _deferred.Deferred).resolve([]).promise()\r\n }\r\n this._filter.internal = [this.option(\"parentIdExpr\"), node.internalFields.key];\r\n this._dataSource.filter(this._combineFilter());\r\n return this._dataSource.load().done(function(newItems) {\r\n if (!_this9._areNodesExists(newItems)) {\r\n _this9._appendItems(newItems)\r\n }\r\n })\r\n },\r\n _areNodesExists: function(newItems, items) {\r\n var keyOfRootItem = this.keyOf(newItems[0]);\r\n var fullData = this._dataAdapter.getFullData();\r\n return !!this._dataAdapter.getNodeByKey(keyOfRootItem, fullData)\r\n },\r\n _appendItems: function(newItems) {\r\n this.option().items = this.option(\"items\").concat(newItems);\r\n this._initDataAdapter()\r\n },\r\n _animateNodeContainer: function(node, state, e, completionCallback) {\r\n var $node = this._getNodeElement(node);\r\n var $nodeContainer = $node.children(\".\".concat(NODE_CONTAINER_CLASS));\r\n if (node && completionCallback && 0 === $nodeContainer.length) {\r\n completionCallback.resolve()\r\n }\r\n $nodeContainer.addClass(OPENED_NODE_CONTAINER_CLASS);\r\n var nodeHeight = $nodeContainer.height();\r\n _fx.default.stop($nodeContainer, true);\r\n _fx.default.animate($nodeContainer, {\r\n type: \"custom\",\r\n duration: this.option(\"animationEnabled\") ? 400 : 0,\r\n from: {\r\n maxHeight: state ? 0 : nodeHeight\r\n },\r\n to: {\r\n maxHeight: state ? nodeHeight : 0\r\n },\r\n complete: function() {\r\n $nodeContainer.css(\"maxHeight\", \"none\");\r\n $nodeContainer.toggleClass(OPENED_NODE_CONTAINER_CLASS, state);\r\n this.setAria(\"expanded\", state, $node);\r\n this._scrollableContainer.update();\r\n this._fireExpandedStateUpdatedEvent(state, node, e);\r\n if (completionCallback) {\r\n completionCallback.resolve()\r\n }\r\n }.bind(this)\r\n })\r\n },\r\n _fireExpandedStateUpdatedEvent: function(isExpanded, node, e) {\r\n if (!this._hasChildren(node)) {\r\n return\r\n }\r\n var optionName = isExpanded ? \"onItemExpanded\" : \"onItemCollapsed\";\r\n if ((0, _type.isDefined)(e)) {\r\n this._itemDXEventHandler(e, optionName, {\r\n node: this._dataAdapter.getPublicNode(node)\r\n })\r\n } else {\r\n var target = this._getNodeElement(node);\r\n this._itemEventHandler(target, optionName, {\r\n event: e,\r\n node: this._dataAdapter.getPublicNode(node)\r\n })\r\n }\r\n },\r\n _normalizeIconState: function($node, hasNewItems) {\r\n var $loadIndicator = $node.find(\".\".concat(NODE_LOAD_INDICATOR_CLASS));\r\n $loadIndicator.length && _load_indicator.default.getInstance($loadIndicator).option(\"visible\", false);\r\n if (hasNewItems) {\r\n var $icon = $node.find(\".\" + TOGGLE_ITEM_VISIBILITY_CLASS);\r\n $icon.show();\r\n return\r\n }\r\n $node.find(\".\" + TOGGLE_ITEM_VISIBILITY_CLASS).removeClass(TOGGLE_ITEM_VISIBILITY_CLASS);\r\n $node.addClass(IS_LEAF)\r\n },\r\n _emptyMessageContainer: function() {\r\n return this._scrollableContainer ? this._scrollableContainer.content() : this.callBase()\r\n },\r\n _renderContent: function() {\r\n var items = this.option(\"items\");\r\n if (items && items.length) {\r\n this._contentAlreadyRendered = true\r\n }\r\n this.callBase()\r\n },\r\n _renderSelectAllItem: function($container) {\r\n $container = $container || this.$element().find(\".\".concat(NODE_CONTAINER_CLASS)).first();\r\n this._$selectAllItem = (0, _renderer.default)(\"
    \").addClass(SELECT_ALL_ITEM_CLASS);\r\n var value = this._dataAdapter.isAllSelected();\r\n this._createComponent(this._$selectAllItem, _check_box.default, {\r\n value: value,\r\n text: this.option(\"selectAllText\"),\r\n onValueChanged: function(args) {\r\n this._toggleSelectAll(args);\r\n this._fireSelectAllValueChanged(args.value)\r\n }.bind(this)\r\n });\r\n this._toggleSelectedClass(this._$selectAllItem, value);\r\n $container.before(this._$selectAllItem)\r\n },\r\n _toggleSelectAll: function(args) {\r\n this._dataAdapter.toggleSelectAll(args.value);\r\n this._updateItemsUI();\r\n this._fireSelectionChanged()\r\n },\r\n _renderCheckBox: function($node, node) {\r\n var $checkbox = (0, _renderer.default)(\"
    \").appendTo($node);\r\n this._createComponent($checkbox, _check_box.default, {\r\n value: node.internalFields.selected,\r\n onValueChanged: this._changeCheckboxValue.bind(this),\r\n focusStateEnabled: false,\r\n disabled: this._disabledGetter(node)\r\n })\r\n },\r\n _toggleSelectedClass: function($node, value) {\r\n $node.toggleClass(SELECTED_ITEM_CLASS, !!value)\r\n },\r\n _toggleNodeDisabledState: function(node, state) {\r\n var $node = this._getNodeElement(node);\r\n var $item = $node.find(\".\" + ITEM_CLASS).eq(0);\r\n this._dataAdapter.toggleNodeDisabledState(node.internalFields.key, state);\r\n $item.toggleClass(DISABLED_STATE_CLASS, !!state);\r\n if (this._showCheckboxes()) {\r\n var checkbox = this._getCheckBoxInstance($node);\r\n checkbox.option(\"disabled\", !!state)\r\n }\r\n },\r\n _itemOptionChanged: function(item, property, value) {\r\n var node = this._dataAdapter.getNodeByItem(item);\r\n if (property === this.option(\"disabledExpr\")) {\r\n this._toggleNodeDisabledState(node, value)\r\n }\r\n },\r\n _changeCheckboxValue: function(e) {\r\n var $node = (0, _renderer.default)(e.element).parent(\".\" + NODE_CLASS);\r\n var $item = $node.children(\".\" + ITEM_CLASS);\r\n var item = this._getItemData($item);\r\n var node = this._getNodeByElement($item);\r\n var value = e.value;\r\n if (node && node.internalFields.selected === value) {\r\n return\r\n }\r\n this._updateItemSelection(value, item, e.event)\r\n },\r\n _isSingleSelection: function() {\r\n return \"single\" === this.option(\"selectionMode\")\r\n },\r\n _isRecursiveSelection: function() {\r\n return this.option(\"selectNodesRecursive\") && \"single\" !== this.option(\"selectionMode\")\r\n },\r\n _isLastSelectedBranch: function(publicNode, selectedNodesKeys, deep) {\r\n var keyIndex = selectedNodesKeys.indexOf(publicNode.key);\r\n if (keyIndex >= 0) {\r\n selectedNodesKeys.splice(keyIndex, 1)\r\n }\r\n if (deep) {\r\n (0, _iterator.each)(publicNode.children, function(_, childNode) {\r\n this._isLastSelectedBranch(childNode, selectedNodesKeys, true)\r\n }.bind(this))\r\n }\r\n if (publicNode.parent) {\r\n this._isLastSelectedBranch(publicNode.parent, selectedNodesKeys)\r\n }\r\n return 0 === selectedNodesKeys.length\r\n },\r\n _isLastRequired: function(node) {\r\n var selectionRequired = this.option(\"selectionRequired\");\r\n var isSingleMode = this._isSingleSelection();\r\n var selectedNodesKeys = this.getSelectedNodeKeys();\r\n if (!selectionRequired) {\r\n return\r\n }\r\n if (isSingleMode) {\r\n return 1 === selectedNodesKeys.length\r\n } else {\r\n return this._isLastSelectedBranch(node.internalFields.publicNode, selectedNodesKeys.slice(), true)\r\n }\r\n },\r\n _updateItemSelection: function(value, itemElement, dxEvent) {\r\n var _this10 = this;\r\n var node = this._getNode(itemElement);\r\n if (!node) {\r\n return false\r\n }\r\n if (node.internalFields.selected === value) {\r\n return true\r\n }\r\n if (!value && this._isLastRequired(node)) {\r\n if (this._showCheckboxes()) {\r\n var $node = this._getNodeElement(node);\r\n var checkbox = this._getCheckBoxInstance($node);\r\n checkbox && checkbox.option(\"value\", true)\r\n }\r\n return false\r\n }\r\n var selectedNodesKeys = this.getSelectedNodeKeys();\r\n if (this._isSingleSelection() && value) {\r\n (0, _iterator.each)(selectedNodesKeys, function(index, nodeKey) {\r\n _this10.unselectItem(nodeKey)\r\n })\r\n }\r\n this._dataAdapter.toggleSelection(node.internalFields.key, value);\r\n this._updateItemsUI();\r\n var initiator = dxEvent || this._findItemElementByItem(node.internalFields.item);\r\n var handler = dxEvent ? this._itemDXEventHandler : this._itemEventHandler;\r\n handler.call(this, initiator, \"onItemSelectionChanged\", {\r\n node: this._dataAdapter.getPublicNode(node),\r\n itemData: node.internalFields.item\r\n });\r\n this._fireSelectionChanged();\r\n return true\r\n },\r\n _getCheckBoxInstance: function($node) {\r\n return $node.children(\".dx-checkbox\").dxCheckBox(\"instance\")\r\n },\r\n _updateItemsUI: function() {\r\n var _this11 = this;\r\n var cache = {};\r\n (0, _iterator.each)(this._dataAdapter.getData(), function(_, node) {\r\n var $node = _this11._getNodeElement(node, cache);\r\n var nodeSelection = node.internalFields.selected;\r\n if (!$node.length) {\r\n return\r\n }\r\n _this11._toggleSelectedClass($node, nodeSelection);\r\n _this11.setAria(\"selected\", nodeSelection, $node);\r\n if (_this11._showCheckboxes()) {\r\n var checkbox = _this11._getCheckBoxInstance($node);\r\n checkbox.option(\"value\", nodeSelection)\r\n }\r\n });\r\n if (this._selectAllEnabled()) {\r\n this._$selectAllItem.dxCheckBox(\"instance\").option(\"value\", this._dataAdapter.isAllSelected())\r\n }\r\n },\r\n _updateParentsState: function(node, $node) {\r\n if (!$node) {\r\n return\r\n }\r\n var parentNode = this._dataAdapter.getNodeByKey(node.internalFields.parentKey);\r\n var $parentNode = (0, _renderer.default)($node.parents(\".\" + NODE_CLASS)[0]);\r\n if (this._showCheckboxes()) {\r\n var parentValue = parentNode.internalFields.selected;\r\n this._getCheckBoxInstance($parentNode).option(\"value\", parentValue);\r\n this._toggleSelectedClass($parentNode, parentValue)\r\n }\r\n if (parentNode.internalFields.parentKey !== this.option(\"rootValue\")) {\r\n this._updateParentsState(parentNode, $parentNode)\r\n }\r\n },\r\n _itemEventHandlerImpl: function(initiator, action, actionArgs) {\r\n var $itemElement = (0, _renderer.default)(initiator).closest(\".\" + NODE_CLASS).children(\".\" + ITEM_CLASS);\r\n return action((0, _extend.extend)(this._extendActionArgs($itemElement), actionArgs))\r\n },\r\n _itemContextMenuHandler: function(e) {\r\n this._createEventHandler(\"onItemContextMenu\", e)\r\n },\r\n _itemHoldHandler: function(e) {\r\n this._createEventHandler(\"onItemHold\", e)\r\n },\r\n _createEventHandler: function(eventName, e) {\r\n var node = this._getNodeByElement(e.currentTarget);\r\n this._itemDXEventHandler(e, eventName, {\r\n node: this._dataAdapter.getPublicNode(node)\r\n })\r\n },\r\n _itemClass: function() {\r\n return ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return ITEM_DATA_KEY\r\n },\r\n _attachClickEvent: function() {\r\n var clickSelector = \".\" + this._itemClass();\r\n var pointerDownSelector = \".\" + NODE_CLASS + \", .\" + SELECT_ALL_ITEM_CLASS;\r\n var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n var pointerDownEvent = (0, _index.addNamespace)(_pointer.default.down, this.NAME);\r\n var $itemContainer = this._itemContainer();\r\n var that = this;\r\n _events_engine.default.off($itemContainer, eventName, clickSelector);\r\n _events_engine.default.off($itemContainer, pointerDownEvent, pointerDownSelector);\r\n _events_engine.default.on($itemContainer, eventName, clickSelector, function(e) {\r\n that._itemClickHandler(e, (0, _renderer.default)(this))\r\n });\r\n _events_engine.default.on($itemContainer, pointerDownEvent, pointerDownSelector, function(e) {\r\n that._itemPointerDownHandler(e)\r\n })\r\n },\r\n _itemClickHandler: function(e, $item) {\r\n var itemData = this._getItemData($item);\r\n var node = this._getNodeByElement($item);\r\n this._itemDXEventHandler(e, \"onItemClick\", {\r\n node: this._dataAdapter.getPublicNode(node)\r\n });\r\n if (this.option(\"selectByClick\") && !e.isDefaultPrevented()) {\r\n this._updateItemSelection(!node.internalFields.selected, itemData, e)\r\n }\r\n },\r\n _updateSelectionToFirstItem: function($items, startIndex) {\r\n var itemIndex = startIndex;\r\n while (itemIndex >= 0) {\r\n var $item = (0, _renderer.default)($items[itemIndex]);\r\n this._updateItemSelection(true, $item.find(\".\" + ITEM_CLASS).get(0));\r\n itemIndex--\r\n }\r\n },\r\n _updateSelectionToLastItem: function($items, startIndex) {\r\n var length = $items.length;\r\n var itemIndex = startIndex;\r\n while (itemIndex < length) {\r\n var $item = (0, _renderer.default)($items[itemIndex]);\r\n this._updateItemSelection(true, $item.find(\".\" + ITEM_CLASS).get(0));\r\n itemIndex++\r\n }\r\n },\r\n _focusInHandler: function(e) {\r\n var _this12 = this;\r\n this._updateFocusState(e, true);\r\n if (this.option(\"focusedElement\")) {\r\n clearTimeout(this._setFocusedItemTimeout);\r\n this._setFocusedItemTimeout = setTimeout(function() {\r\n _this12._setFocusedItem((0, _renderer.default)(_this12.option(\"focusedElement\")))\r\n });\r\n return\r\n }\r\n var $activeItem = this._getActiveItem();\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($activeItem.closest(\".\" + NODE_CLASS)))\r\n },\r\n _setFocusedItem: function($target) {\r\n if (!$target || !$target.length) {\r\n return\r\n }\r\n if (!$target.children().hasClass(DISABLED_STATE_CLASS)) {\r\n this.callBase($target)\r\n }\r\n },\r\n _itemPointerDownHandler: function(e) {\r\n if (!this.option(\"focusStateEnabled\")) {\r\n return\r\n }\r\n var $target = (0, _renderer.default)(e.target).closest(\".\" + NODE_CLASS + \", .\" + SELECT_ALL_ITEM_CLASS);\r\n if (!$target.length) {\r\n return\r\n }\r\n var itemElement = $target.hasClass(DISABLED_STATE_CLASS) ? null : $target;\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)(itemElement))\r\n },\r\n _findNonDisabledNodes: function($nodes) {\r\n return $nodes.not(function() {\r\n return (0, _renderer.default)(this).children(\".\" + ITEM_CLASS).hasClass(DISABLED_STATE_CLASS)\r\n })\r\n },\r\n _moveFocus: function(location, e) {\r\n var FOCUS_UP = \"up\";\r\n var FOCUS_DOWN = \"down\";\r\n var FOCUS_FIRST = \"first\";\r\n var FOCUS_LAST = \"last\";\r\n var FOCUS_LEFT = this.option(\"rtlEnabled\") ? \"right\" : \"left\";\r\n var FOCUS_RIGHT = this.option(\"rtlEnabled\") ? \"left\" : \"right\";\r\n this.$element().find(\".\".concat(NODE_CONTAINER_CLASS)).each(function() {\r\n _fx.default.stop(this, true)\r\n });\r\n var $items = this._findNonDisabledNodes(this._nodeElements());\r\n if (!$items || !$items.length) {\r\n return\r\n }\r\n switch (location) {\r\n case FOCUS_UP:\r\n var $prevItem = this._prevItem($items);\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($prevItem));\r\n var prevItemElement = this._getNodeItemElement($prevItem);\r\n this._scrollableContainer.scrollToElement(prevItemElement);\r\n if (e.shiftKey && this._showCheckboxes()) {\r\n this._updateItemSelection(true, prevItemElement)\r\n }\r\n break;\r\n case FOCUS_DOWN:\r\n var $nextItem = this._nextItem($items);\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($nextItem));\r\n var nextItemElement = this._getNodeItemElement($nextItem);\r\n this._scrollableContainer.scrollToElement(nextItemElement);\r\n if (e.shiftKey && this._showCheckboxes()) {\r\n this._updateItemSelection(true, nextItemElement)\r\n }\r\n break;\r\n case FOCUS_FIRST:\r\n var $firstItem = $items.first();\r\n if (e.shiftKey && this._showCheckboxes()) {\r\n this._updateSelectionToFirstItem($items, $items.index(this._prevItem($items)))\r\n }\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($firstItem));\r\n this._scrollableContainer.scrollToElement(this._getNodeItemElement($firstItem));\r\n break;\r\n case FOCUS_LAST:\r\n var $lastItem = $items.last();\r\n if (e.shiftKey && this._showCheckboxes()) {\r\n this._updateSelectionToLastItem($items, $items.index(this._nextItem($items)))\r\n }\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($lastItem));\r\n this._scrollableContainer.scrollToElement(this._getNodeItemElement($lastItem));\r\n break;\r\n case FOCUS_RIGHT:\r\n this._expandFocusedContainer();\r\n break;\r\n case FOCUS_LEFT:\r\n this._collapseFocusedContainer();\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments);\r\n return\r\n }\r\n },\r\n _getNodeItemElement: function($node) {\r\n return $node.find(\".\" + ITEM_CLASS).get(0)\r\n },\r\n _nodeElements: function() {\r\n return this.$element().find(\".\" + NODE_CLASS).not(\":hidden\")\r\n },\r\n _expandFocusedContainer: function() {\r\n var $focusedNode = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n if (!$focusedNode.length || $focusedNode.hasClass(IS_LEAF)) {\r\n return\r\n }\r\n var $node = $focusedNode.find(\".\".concat(NODE_CONTAINER_CLASS)).eq(0);\r\n if ($node.hasClass(OPENED_NODE_CONTAINER_CLASS)) {\r\n var $nextItem = this._nextItem(this._findNonDisabledNodes(this._nodeElements()));\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($nextItem));\r\n this._scrollableContainer.scrollToElement(this._getNodeItemElement($nextItem));\r\n return\r\n }\r\n var node = this._getNodeByElement($focusedNode.children(\".\" + ITEM_CLASS));\r\n this._toggleExpandedState(node, true)\r\n },\r\n _getClosestNonDisabledNode: function($node) {\r\n do {\r\n $node = $node.parent().closest(\".\" + NODE_CLASS)\r\n } while ($node.children(\".dx-treeview-item.dx-state-disabled\").length);\r\n return $node\r\n },\r\n _collapseFocusedContainer: function() {\r\n var $focusedNode = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n if (!$focusedNode.length) {\r\n return\r\n }\r\n var nodeElement = $focusedNode.find(\".\".concat(NODE_CONTAINER_CLASS)).eq(0);\r\n if (!$focusedNode.hasClass(IS_LEAF) && nodeElement.hasClass(OPENED_NODE_CONTAINER_CLASS)) {\r\n var node = this._getNodeByElement($focusedNode.children(\".\" + ITEM_CLASS));\r\n this._toggleExpandedState(node, false)\r\n } else {\r\n var collapsedNode = this._getClosestNonDisabledNode($focusedNode);\r\n collapsedNode.length && this.option(\"focusedElement\", (0, _element.getPublicElement)(collapsedNode));\r\n this._scrollableContainer.scrollToElement(this._getNodeItemElement(collapsedNode))\r\n }\r\n },\r\n _encodeString: function(value) {\r\n return (0, _type.isString)(value) ? encodeURI(value) : value\r\n },\r\n _decodeString: function(value) {\r\n return (0, _type.isString)(value) ? decodeURI(value) : value\r\n },\r\n updateDimensions: function() {\r\n var _this13 = this;\r\n var deferred = new _deferred.Deferred;\r\n if (this._scrollableContainer) {\r\n this._scrollableContainer.update().done(function() {\r\n deferred.resolveWith(_this13)\r\n })\r\n } else {\r\n deferred.resolveWith(this)\r\n }\r\n return deferred.promise()\r\n },\r\n selectItem: function(itemElement) {\r\n return this._updateItemSelection(true, itemElement)\r\n },\r\n unselectItem: function(itemElement) {\r\n return this._updateItemSelection(false, itemElement)\r\n },\r\n expandItem: function(itemElement) {\r\n return this._toggleExpandedState(itemElement, true)\r\n },\r\n collapseItem: function(itemElement) {\r\n return this._toggleExpandedState(itemElement, false)\r\n },\r\n getNodes: function() {\r\n return this._dataAdapter.getTreeNodes()\r\n },\r\n getSelectedNodes: function() {\r\n var _this14 = this;\r\n return this.getSelectedNodeKeys().map(function(key) {\r\n var node = _this14._dataAdapter.getNodeByKey(key);\r\n return _this14._dataAdapter.getPublicNode(node)\r\n })\r\n },\r\n getSelectedNodesKeys: function() {\r\n _ui3.default.log(\"W0002\", \"dxTreeView\", \"getSelectedNodesKeys\", \"20.1\", \"Use the 'getSelectedNodeKeys' method instead\");\r\n return this.getSelectedNodeKeys()\r\n },\r\n getSelectedNodeKeys: function() {\r\n return this._dataAdapter.getSelectedNodesKeys()\r\n },\r\n selectAll: function() {\r\n if (this._selectAllEnabled()) {\r\n this._$selectAllItem.dxCheckBox(\"instance\").option(\"value\", true)\r\n } else {\r\n this._toggleSelectAll({\r\n value: true\r\n })\r\n }\r\n },\r\n unselectAll: function() {\r\n if (this._selectAllEnabled()) {\r\n this._$selectAllItem.dxCheckBox(\"instance\").option(\"value\", false)\r\n } else {\r\n this._toggleSelectAll({\r\n value: false\r\n })\r\n }\r\n },\r\n expandAll: function() {\r\n var dataAdapter = this._dataAdapter;\r\n (0, _iterator.each)(dataAdapter.getData(), function(_, node) {\r\n return dataAdapter.toggleExpansion(node.internalFields.key, true)\r\n });\r\n this.repaint()\r\n },\r\n collapseAll: function() {\r\n (0, _iterator.each)(this._dataAdapter.getExpandedNodesKeys(), function(_, key) {\r\n this._toggleExpandedState(key, false)\r\n }.bind(this))\r\n },\r\n scrollToItem: function(keyOrItemOrElement) {\r\n var _this15 = this;\r\n var node = this._getNode(keyOrItemOrElement);\r\n if (!node) {\r\n return (new _deferred.Deferred).reject().promise()\r\n }\r\n var nodeKeysToExpand = [];\r\n var parentNode = node.internalFields.publicNode.parent;\r\n while (null != parentNode) {\r\n if (!parentNode.expanded) {\r\n nodeKeysToExpand.push(parentNode.key)\r\n }\r\n parentNode = parentNode.parent\r\n }\r\n var scrollCallback = new _deferred.Deferred;\r\n this._expandNodes(nodeKeysToExpand.reverse()).always(function() {\r\n var $element = _this15._getNodeElement(node);\r\n if ($element && $element.length) {\r\n _this15._scrollableContainer.scrollToElementTopLeft($element);\r\n scrollCallback.resolve()\r\n } else {\r\n scrollCallback.reject()\r\n }\r\n });\r\n return scrollCallback.promise()\r\n },\r\n _expandNodes: function(keysToExpand) {\r\n var _this16 = this;\r\n if (!keysToExpand || 0 === keysToExpand.length) {\r\n return (new _deferred.Deferred).resolve().promise()\r\n }\r\n var resultCallback = new _deferred.Deferred;\r\n var callbacksByNodes = keysToExpand.map(function(key) {\r\n return _this16.expandItem(key)\r\n });\r\n _deferred.when.apply(_renderer.default, callbacksByNodes).done(function() {\r\n return resultCallback.resolve()\r\n }).fail(function() {\r\n return resultCallback.reject()\r\n });\r\n return resultCallback.promise()\r\n },\r\n _dispose: function() {\r\n this.callBase();\r\n clearTimeout(this._setFocusedItemTimeout)\r\n }\r\n});\r\nvar _default = TreeViewBase;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.accessibility.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.registerKeyboardAction = void 0;\r\nvar accessibility = _interopRequireWildcard(require(\"../../ui/shared/accessibility\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\nvar registerKeyboardAction = function(viewName, instance, $element, selector, action) {\r\n var keyboardController = instance.getController(\"keyboardNavigation\");\r\n if (instance.option(\"useLegacyKeyboardNavigation\") || keyboardController && !keyboardController.isKeyboardEnabled()) {\r\n return\r\n }\r\n var executeKeyDown = function(args) {\r\n instance.executeAction(\"onKeyDown\", args)\r\n };\r\n instance.createAction(\"onKeyDown\");\r\n accessibility.registerKeyboardAction(viewName, instance, $element, selector, action, executeKeyDown)\r\n};\r\nexports.registerKeyboardAction = registerKeyboardAction;\r\n","/**\r\n * DevExtreme (ui/hierarchical_collection/ui.hierarchical_collection_widget.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _icon = require(\"../../core/utils/icon\");\r\nvar _ui = _interopRequireDefault(require(\"./ui.data_adapter\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"../collection/ui.collection_widget.edit\"));\r\nvar _bindable_template = require(\"../../core/templates/bindable_template\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar HierarchicalCollectionWidget = _uiCollection_widget.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n keyExpr: \"id\",\r\n displayExpr: \"text\",\r\n selectedExpr: \"selected\",\r\n disabledExpr: \"disabled\",\r\n itemsExpr: \"items\",\r\n hoverStateEnabled: true,\r\n parentIdExpr: \"parentId\",\r\n expandedExpr: \"expanded\"\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initAccessors();\r\n this._initDataAdapter();\r\n this._initDynamicTemplates()\r\n },\r\n _initDataSource: function() {\r\n this.callBase();\r\n this._dataSource && this._dataSource.paginate(false)\r\n },\r\n _initDataAdapter: function() {\r\n var accessors = this._createDataAdapterAccessors();\r\n this._dataAdapter = new _ui.default((0, _extend.extend)({\r\n dataAccessors: {\r\n getters: accessors.getters,\r\n setters: accessors.setters\r\n },\r\n items: this.option(\"items\")\r\n }, this._getDataAdapterOptions()))\r\n },\r\n _getDataAdapterOptions: _common.noop,\r\n _initDynamicTemplates: function() {\r\n var that = this;\r\n this._templateManager.addDefaultTemplates({\r\n item: new _bindable_template.BindableTemplate(function($container, itemData) {\r\n $container.html(itemData.html).append(this._getIconContainer(itemData)).append(this._getTextContainer(itemData)).append(this._getPopoutContainer(itemData));\r\n that._addContentClasses(itemData, $container.parent())\r\n }.bind(this), [\"text\", \"html\", \"items\", \"icon\"], this.option(\"integrationOptions.watchMethod\"), {\r\n text: this._displayGetter,\r\n items: this._itemsGetter\r\n })\r\n })\r\n },\r\n _getIconContainer: function(itemData) {\r\n return itemData.icon ? (0, _icon.getImageContainer)(itemData.icon) : void 0\r\n },\r\n _getTextContainer: function(itemData) {\r\n return (0, _renderer.default)(\"\").text(itemData.text)\r\n },\r\n _getPopoutContainer: _common.noop,\r\n _addContentClasses: _common.noop,\r\n _initAccessors: function() {\r\n var that = this;\r\n (0, _iterator.each)(this._getAccessors(), function(_, accessor) {\r\n that._compileAccessor(accessor)\r\n });\r\n this._compileDisplayGetter()\r\n },\r\n _getAccessors: function() {\r\n return [\"key\", \"selected\", \"items\", \"disabled\", \"parentId\", \"expanded\"]\r\n },\r\n _getChildNodes: function(node) {\r\n var that = this;\r\n var arr = [];\r\n (0, _iterator.each)(node.internalFields.childrenKeys, function(_, key) {\r\n var childNode = that._dataAdapter.getNodeByKey(key);\r\n arr.push(childNode)\r\n });\r\n return arr\r\n },\r\n _hasChildren: function(node) {\r\n return node && node.internalFields.childrenKeys.length\r\n },\r\n _compileAccessor: function(optionName) {\r\n var getter = \"_\" + optionName + \"Getter\";\r\n var setter = \"_\" + optionName + \"Setter\";\r\n var optionExpr = this.option(optionName + \"Expr\");\r\n if (!optionExpr) {\r\n this[getter] = _common.noop;\r\n this[setter] = _common.noop;\r\n return\r\n } else {\r\n if ((0, _type.isFunction)(optionExpr)) {\r\n this[setter] = function(obj, value) {\r\n obj[optionExpr()] = value\r\n };\r\n this[getter] = function(obj) {\r\n return obj[optionExpr()]\r\n };\r\n return\r\n }\r\n }\r\n this[getter] = (0, _data.compileGetter)(optionExpr);\r\n this[setter] = (0, _data.compileSetter)(optionExpr)\r\n },\r\n _createDataAdapterAccessors: function() {\r\n var that = this;\r\n var accessors = {\r\n getters: {},\r\n setters: {}\r\n };\r\n (0, _iterator.each)(this._getAccessors(), function(_, accessor) {\r\n var getterName = \"_\" + accessor + \"Getter\";\r\n var setterName = \"_\" + accessor + \"Setter\";\r\n var newAccessor = \"parentId\" === accessor ? \"parentKey\" : accessor;\r\n accessors.getters[newAccessor] = that[getterName];\r\n accessors.setters[newAccessor] = that[setterName]\r\n });\r\n accessors.getters.display = !this._displayGetter ? function(itemData) {\r\n return itemData.text\r\n } : this._displayGetter;\r\n return accessors\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._addWidgetClass()\r\n },\r\n _addWidgetClass: function() {\r\n this._focusTarget().addClass(this._widgetClass())\r\n },\r\n _widgetClass: _common.noop,\r\n _renderItemFrame: function(index, itemData) {\r\n var $itemFrame = this.callBase.apply(this, arguments);\r\n $itemFrame.toggleClass(DISABLED_STATE_CLASS, !!this._disabledGetter(itemData));\r\n return $itemFrame\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"displayExpr\":\r\n case \"keyExpr\":\r\n this._initAccessors();\r\n this._initDynamicTemplates();\r\n this.repaint();\r\n break;\r\n case \"itemsExpr\":\r\n case \"selectedExpr\":\r\n case \"disabledExpr\":\r\n case \"expandedExpr\":\r\n case \"parentIdExpr\":\r\n this._initAccessors();\r\n this._initDataAdapter();\r\n this.repaint();\r\n break;\r\n case \"items\":\r\n this._initDataAdapter();\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nvar _default = HierarchicalCollectionWidget;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/dialog.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.confirm = exports.alert = exports.custom = exports.title = exports.FakeDialogComponent = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _component = _interopRequireDefault(require(\"../core/component\"));\r\nvar _action = _interopRequireDefault(require(\"../core/action\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _config = _interopRequireDefault(require(\"../core/config\"));\r\nvar _dom = require(\"../core/utils/dom\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _view_port = require(\"../core/utils/view_port\");\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.errors\"));\r\nvar _popup = _interopRequireDefault(require(\"./popup\"));\r\nvar _common = require(\"../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar DEFAULT_BUTTON = {\r\n text: \"OK\",\r\n onClick: function() {\r\n return true\r\n }\r\n};\r\nvar DX_DIALOG_CLASSNAME = \"dx-dialog\";\r\nvar DX_DIALOG_WRAPPER_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-wrapper\");\r\nvar DX_DIALOG_ROOT_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-root\");\r\nvar DX_DIALOG_CONTENT_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-content\");\r\nvar DX_DIALOG_MESSAGE_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-message\");\r\nvar DX_DIALOG_BUTTONS_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-buttons\");\r\nvar DX_DIALOG_BUTTON_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-button\");\r\nvar DX_BUTTON_CLASSNAME = \"dx-button\";\r\nvar FakeDialogComponent = _component.default.inherit({\r\n ctor: function(element, options) {\r\n this.callBase(options)\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 width: 276\r\n }\r\n }, {\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n lWidth: \"60%\",\r\n pWidth: \"80%\"\r\n }\r\n }])\r\n }\r\n});\r\nexports.FakeDialogComponent = FakeDialogComponent;\r\nvar title = \"\";\r\nexports.title = title;\r\nvar custom = function(options) {\r\n var deferred = new _deferred.Deferred;\r\n var defaultOptions = (new FakeDialogComponent).option();\r\n options = (0, _extend.extend)(defaultOptions, options);\r\n var $element = (0, _renderer.default)(\"
    \").addClass(DX_DIALOG_CLASSNAME).appendTo((0, _view_port.value)());\r\n var isMessageDefined = \"message\" in options;\r\n var isMessageHtmlDefined = \"messageHtml\" in options;\r\n if (isMessageDefined) {\r\n _ui.default.log(\"W1013\")\r\n }\r\n var messageHtml = String(isMessageHtmlDefined ? options.messageHtml : options.message);\r\n var $message = (0, _renderer.default)(\"
    \").addClass(DX_DIALOG_MESSAGE_CLASSNAME).html(messageHtml);\r\n var popupToolbarItems = [];\r\n (0, _iterator.each)(options.buttons || [DEFAULT_BUTTON], function() {\r\n var action = new _action.default(this.onClick, {\r\n context: popupInstance\r\n });\r\n popupToolbarItems.push({\r\n toolbar: \"bottom\",\r\n location: _devices.default.current().android ? \"after\" : \"center\",\r\n widget: \"dxButton\",\r\n options: (0, _extend.extend)({}, this, {\r\n onClick: function() {\r\n var result = action.execute.apply(action, arguments);\r\n hide(result)\r\n }\r\n })\r\n })\r\n });\r\n var popupInstance = new _popup.default($element, (0, _extend.extend)({\r\n title: options.title || title,\r\n showTitle: (0, _common.ensureDefined)(options.showTitle, true),\r\n dragEnabled: (0, _common.ensureDefined)(options.dragEnabled, true),\r\n height: \"auto\",\r\n width: function() {\r\n var isPortrait = (0, _renderer.default)(window).height() > (0, _renderer.default)(window).width();\r\n var key = (isPortrait ? \"p\" : \"l\") + \"Width\";\r\n var widthOption = Object.prototype.hasOwnProperty.call(options, key) ? options[key] : options.width;\r\n return (0, _type.isFunction)(widthOption) ? widthOption() : widthOption\r\n },\r\n showCloseButton: options.showCloseButton || false,\r\n ignoreChildEvents: false,\r\n onContentReady: function(args) {\r\n args.component.$content().addClass(DX_DIALOG_CONTENT_CLASSNAME).append($message)\r\n },\r\n onShowing: function(e) {\r\n e.component.bottomToolbar().addClass(DX_DIALOG_BUTTONS_CLASSNAME).find(\".\".concat(DX_BUTTON_CLASSNAME)).addClass(DX_DIALOG_BUTTON_CLASSNAME);\r\n (0, _dom.resetActiveElement)()\r\n },\r\n onShown: function(e) {\r\n var $firstButton = e.component.bottomToolbar().find(\".\".concat(DX_BUTTON_CLASSNAME)).first();\r\n _events_engine.default.trigger($firstButton, \"focus\")\r\n },\r\n onHiding: function() {\r\n deferred.reject()\r\n },\r\n toolbarItems: popupToolbarItems,\r\n animation: {\r\n show: {\r\n type: \"pop\",\r\n duration: 400\r\n },\r\n hide: {\r\n type: \"pop\",\r\n duration: 400,\r\n to: {\r\n opacity: 0,\r\n scale: 0\r\n },\r\n from: {\r\n opacity: 1,\r\n scale: 1\r\n }\r\n }\r\n },\r\n rtlEnabled: (0, _config.default)().rtlEnabled,\r\n boundaryOffset: {\r\n h: 10,\r\n v: 0\r\n }\r\n }, options.popupOptions));\r\n popupInstance._wrapper().addClass(DX_DIALOG_WRAPPER_CLASSNAME);\r\n if (options.position) {\r\n popupInstance.option(\"position\", options.position)\r\n }\r\n popupInstance._wrapper().addClass(DX_DIALOG_ROOT_CLASSNAME);\r\n\r\n function show() {\r\n popupInstance.show();\r\n return deferred.promise()\r\n }\r\n\r\n function hide(value) {\r\n deferred.resolve(value);\r\n popupInstance.hide().done(function() {\r\n popupInstance.$element().remove()\r\n })\r\n }\r\n return {\r\n show: show,\r\n hide: hide\r\n }\r\n};\r\nexports.custom = custom;\r\nvar alert = function(messageHtml, title, showTitle) {\r\n var options = (0, _type.isPlainObject)(messageHtml) ? messageHtml : {\r\n title: title,\r\n messageHtml: messageHtml,\r\n showTitle: showTitle,\r\n dragEnabled: showTitle\r\n };\r\n return custom(options).show()\r\n};\r\nexports.alert = alert;\r\nvar confirm = function(messageHtml, title, showTitle) {\r\n var options = (0, _type.isPlainObject)(messageHtml) ? messageHtml : {\r\n title: title,\r\n messageHtml: messageHtml,\r\n showTitle: showTitle,\r\n buttons: [{\r\n text: _message.default.format(\"Yes\"),\r\n onClick: function() {\r\n return true\r\n }\r\n }, {\r\n text: _message.default.format(\"No\"),\r\n onClick: function() {\r\n return false\r\n }\r\n }],\r\n dragEnabled: showTitle\r\n };\r\n return custom(options).show()\r\n};\r\nexports.confirm = confirm;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.columns_resizing_reordering.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _drag = require(\"../../events/drag\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _swatch_container = _interopRequireDefault(require(\"../widget/swatch_container\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COLUMNS_SEPARATOR_CLASS = \"columns-separator\";\r\nvar COLUMNS_SEPARATOR_TRANSPARENT = \"columns-separator-transparent\";\r\nvar DRAGGING_HEADER_CLASS = \"drag-header\";\r\nvar CELL_CONTENT_CLASS = \"text-content\";\r\nvar HEADERS_DRAG_ACTION_CLASS = \"drag-action\";\r\nvar TRACKER_CLASS = \"tracker\";\r\nvar HEADERS_DROP_HIGHLIGHT_CLASS = \"drop-highlight\";\r\nvar BLOCK_SEPARATOR_CLASS = \"dx-block-separator\";\r\nvar HEADER_ROW_CLASS = \"dx-header-row\";\r\nvar WIDGET_CLASS = \"dx-widget\";\r\nvar DRAGGING_COMMAND_CELL_CLASS = \"dx-drag-command-cell\";\r\nvar MODULE_NAMESPACE = \"dxDataGridResizingReordering\";\r\nvar COLUMNS_SEPARATOR_TOUCH_TRACKER_WIDTH = 10;\r\nvar DRAGGING_DELTA = 5;\r\nvar COLUMN_OPACITY = .5;\r\nvar allowResizing = function(that) {\r\n return that.option(\"allowColumnResizing\") || that.getController(\"columns\").isColumnOptionUsed(\"allowResizing\")\r\n};\r\nvar allowReordering = function(that) {\r\n return that.option(\"allowColumnReordering\") || that.getController(\"columns\").isColumnOptionUsed(\"allowReordering\")\r\n};\r\nvar TrackerView = _uiGrid_core.default.View.inherit({\r\n _renderCore: function() {\r\n this.callBase();\r\n this.element().addClass(this.addWidgetPrefix(TRACKER_CLASS));\r\n this.hide()\r\n },\r\n _unsubscribeFromCallback: function() {\r\n if (this._positionChanged) {\r\n this._tablePositionController.positionChanged.remove(this._positionChanged)\r\n }\r\n },\r\n _subscribeToCallback: function() {\r\n var that = this;\r\n that._positionChanged = function(position) {\r\n var $element = that.element();\r\n if ($element && $element.hasClass(that.addWidgetPrefix(TRACKER_CLASS))) {\r\n $element.css({\r\n top: position.top\r\n });\r\n $element.height(position.height)\r\n }\r\n };\r\n this._tablePositionController.positionChanged.add(that._positionChanged)\r\n },\r\n optionChanged: function(args) {\r\n if (\"allowColumnResizing\" === args.name) {\r\n this._unsubscribeFromCallback();\r\n if (args.value) {\r\n this._subscribeToCallback();\r\n this._invalidate()\r\n }\r\n }\r\n this.callBase(args)\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._tablePositionController = this.getController(\"tablePosition\");\r\n this._subscribeToCallback()\r\n },\r\n isVisible: function() {\r\n return allowResizing(this)\r\n },\r\n show: function() {\r\n this.element().show()\r\n },\r\n hide: function() {\r\n this.element() && this.element().hide()\r\n },\r\n setHeight: function(value) {\r\n this.element().height(value)\r\n },\r\n dispose: function() {\r\n this._unsubscribeFromCallback();\r\n this.callBase()\r\n }\r\n});\r\nvar SeparatorView = _uiGrid_core.default.View.inherit({\r\n _renderSeparator: function() {},\r\n _renderCore: function(options) {\r\n this.callBase(options);\r\n this._isShown = true;\r\n this._renderSeparator();\r\n this.hide()\r\n },\r\n show: function() {\r\n this._isShown = true\r\n },\r\n hide: function() {\r\n this._isShown = false\r\n },\r\n height: function(value) {\r\n var $element = this.element();\r\n if ($element) {\r\n if ((0, _type.isDefined)(value)) {\r\n $element.height(value)\r\n } else {\r\n return $element.height()\r\n }\r\n }\r\n },\r\n width: function(value) {\r\n var $element = this.element();\r\n if ($element) {\r\n if ((0, _type.isDefined)(value)) {\r\n $element.width(value)\r\n } else {\r\n return $element.width()\r\n }\r\n }\r\n }\r\n});\r\nvar ColumnsSeparatorView = SeparatorView.inherit({\r\n _renderSeparator: function() {\r\n this.callBase();\r\n var $element = this.element();\r\n $element.addClass(this.addWidgetPrefix(COLUMNS_SEPARATOR_CLASS))\r\n },\r\n _subscribeToCallback: function() {\r\n var that = this;\r\n var $element;\r\n that._positionChanged = function(position) {\r\n $element = that.element();\r\n if ($element) {\r\n $element.css({\r\n top: position.top\r\n });\r\n $element.height(position.height)\r\n }\r\n };\r\n that._tablePositionController.positionChanged.add(that._positionChanged)\r\n },\r\n _unsubscribeFromCallback: function() {\r\n this._positionChanged && this._tablePositionController.positionChanged.remove(this._positionChanged)\r\n },\r\n _init: function() {\r\n this._isTransparent = allowResizing(this);\r\n if (this.isVisible()) {\r\n this._subscribeToCallback()\r\n }\r\n },\r\n isVisible: function() {\r\n return this.option(\"showColumnHeaders\") && (allowReordering(this) || allowResizing(this))\r\n },\r\n optionChanged: function(args) {\r\n if (\"allowColumnResizing\" === args.name) {\r\n if (args.value) {\r\n this._init();\r\n this._invalidate();\r\n this.hide(true)\r\n } else {\r\n this._unsubscribeFromCallback();\r\n this._isTransparent = allowResizing(this);\r\n this.hide(true)\r\n }\r\n }\r\n this.callBase(args)\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._tablePositionController = this.getController(\"tablePosition\");\r\n this._init()\r\n },\r\n show: function() {\r\n var that = this;\r\n var $element = this.element();\r\n if ($element && !that._isShown) {\r\n if (that._isTransparent) {\r\n $element.removeClass(that.addWidgetPrefix(COLUMNS_SEPARATOR_TRANSPARENT))\r\n } else {\r\n $element.show()\r\n }\r\n }\r\n this.callBase()\r\n },\r\n hide: function(force) {\r\n var $element = this.element();\r\n var columnsSeparatorTransparent = this.addWidgetPrefix(COLUMNS_SEPARATOR_TRANSPARENT);\r\n if ($element && (this._isShown || force)) {\r\n if (this._isTransparent) {\r\n $element.addClass(columnsSeparatorTransparent);\r\n $element.css(\"left\", \"\");\r\n $element.show()\r\n } else {\r\n if ($element.hasClass(columnsSeparatorTransparent)) {\r\n $element.removeClass(columnsSeparatorTransparent)\r\n }\r\n $element.hide()\r\n }\r\n }\r\n this.callBase()\r\n },\r\n moveByX: function(outerX) {\r\n var $element = this.element();\r\n if ($element) {\r\n $element.css(\"left\", outerX - this._parentElement().offset().left)\r\n }\r\n },\r\n changeCursor: function(cursorName) {\r\n cursorName = (0, _type.isDefined)(cursorName) ? cursorName : \"\";\r\n var $element = this.element();\r\n if ($element) {\r\n $element.css(\"cursor\", cursorName)\r\n }\r\n },\r\n dispose: function() {\r\n this._unsubscribeFromCallback();\r\n this.callBase()\r\n }\r\n});\r\nvar BlockSeparatorView = SeparatorView.inherit({\r\n init: function() {\r\n var that = this;\r\n this.callBase();\r\n this.getController(\"data\").loadingChanged.add(function(isLoading) {\r\n if (!isLoading) {\r\n that.hide()\r\n }\r\n })\r\n },\r\n _renderSeparator: function() {\r\n this.callBase();\r\n this.element().addClass(BLOCK_SEPARATOR_CLASS).html(\" \")\r\n },\r\n hide: function() {\r\n var that = this;\r\n var $parent = this._parentElement();\r\n var $element = this.element();\r\n if ($element && this._isShown) {\r\n $element.css(\"display\", \"none\")\r\n }\r\n if ($parent && !$parent.children(\".\" + BLOCK_SEPARATOR_CLASS).length) {\r\n $parent.prepend(that.element())\r\n }\r\n that.callBase()\r\n },\r\n isVisible: function() {\r\n var groupPanelOptions = this.option(\"groupPanel\");\r\n var columnChooserOptions = this.option(\"columnChooser\");\r\n return groupPanelOptions && groupPanelOptions.visible || columnChooserOptions && columnChooserOptions.enabled\r\n },\r\n show: function(targetLocation) {\r\n var that = this;\r\n var $element = this.element();\r\n var startAnimate = function(toOptions) {\r\n _fx.default.stop($element, true);\r\n _fx.default.animate($element, {\r\n type: \"slide\",\r\n from: {\r\n width: 0,\r\n display: toOptions.display\r\n },\r\n to: toOptions,\r\n duration: 300,\r\n easing: \"swing\"\r\n })\r\n };\r\n if ($element && !that._isShown) {\r\n switch (targetLocation) {\r\n case \"group\":\r\n startAnimate({\r\n width: \"50px\",\r\n display: \"inline-block\"\r\n });\r\n break;\r\n case \"columnChooser\":\r\n startAnimate({\r\n width: \"100%\",\r\n display: \"block\"\r\n });\r\n break;\r\n default:\r\n $element.css(\"display\", \"\")\r\n }\r\n }\r\n that.callBase()\r\n }\r\n});\r\nvar DraggingHeaderView = _uiGrid_core.default.View.inherit({\r\n _isDragging: false,\r\n isDragging: function() {\r\n return this._isDragging\r\n },\r\n _getDraggingPanelByPos: function(pos) {\r\n var that = this;\r\n var result;\r\n (0, _iterator.each)(that._dragOptions.draggingPanels, function(index, draggingPanel) {\r\n if (draggingPanel) {\r\n var boundingRect = draggingPanel.getBoundingRect();\r\n if (boundingRect && (void 0 === boundingRect.bottom || pos.y < boundingRect.bottom) && (void 0 === boundingRect.top || pos.y > boundingRect.top) && (void 0 === boundingRect.left || pos.x > boundingRect.left) && (void 0 === boundingRect.right || pos.x < boundingRect.right)) {\r\n result = draggingPanel;\r\n return false\r\n }\r\n }\r\n });\r\n return result\r\n },\r\n _renderCore: function() {\r\n this.element().addClass(this.addWidgetPrefix(DRAGGING_HEADER_CLASS) + \" \" + this.addWidgetPrefix(CELL_CONTENT_CLASS) + \" \" + WIDGET_CLASS).hide()\r\n },\r\n _resetTargetColumnOptions: function() {\r\n var params = this._dropOptions;\r\n params.targetColumnIndex = -1;\r\n delete params.targetColumnElement;\r\n delete params.isLast;\r\n delete params.posX;\r\n delete params.posY\r\n },\r\n _getVisibleIndexObject: function(rowIndex, visibleIndex) {\r\n if ((0, _type.isDefined)(rowIndex)) {\r\n return {\r\n columnIndex: visibleIndex,\r\n rowIndex: rowIndex\r\n }\r\n }\r\n return visibleIndex\r\n },\r\n dispose: function() {\r\n var element = this.element();\r\n this._dragOptions = null;\r\n element && element.parent().find(\".\" + this.addWidgetPrefix(DRAGGING_HEADER_CLASS)).remove()\r\n },\r\n isVisible: function() {\r\n var columnsController = this.getController(\"columns\");\r\n var commonColumnSettings = columnsController.getCommonSettings();\r\n return this.option(\"showColumnHeaders\") && (allowReordering(this) || commonColumnSettings.allowGrouping || commonColumnSettings.allowHiding)\r\n },\r\n init: function() {\r\n var that = this;\r\n this.callBase();\r\n this._controller = this.getController(\"draggingHeader\");\r\n this._columnsResizerViewController = this.getController(\"columnsResizer\");\r\n this.getController(\"data\").loadingChanged.add(function(isLoading) {\r\n var element = that.element();\r\n if (!isLoading && element) {\r\n element.hide()\r\n }\r\n })\r\n },\r\n dragHeader: function(options) {\r\n var that = this;\r\n var columnElement = options.columnElement;\r\n var isCommandColumn = !!options.sourceColumn.type;\r\n that._isDragging = true;\r\n that._dragOptions = options;\r\n that._dropOptions = {\r\n sourceIndex: options.index,\r\n sourceColumnIndex: that._getVisibleIndexObject(options.rowIndex, options.columnIndex),\r\n sourceColumnElement: options.columnElement,\r\n sourceLocation: options.sourceLocation\r\n };\r\n var document = _dom_adapter.default.getDocument();\r\n that._onSelectStart = document.onselectstart;\r\n document.onselectstart = function() {\r\n return false\r\n };\r\n that._controller.drag(that._dropOptions);\r\n that.element().css({\r\n textAlign: columnElement && columnElement.css(\"textAlign\"),\r\n height: columnElement && (isCommandColumn && columnElement.get(0).clientHeight || columnElement.height()),\r\n width: columnElement && (isCommandColumn && columnElement.get(0).clientWidth || columnElement.width()),\r\n whiteSpace: columnElement && columnElement.css(\"whiteSpace\")\r\n }).addClass(that.addWidgetPrefix(HEADERS_DRAG_ACTION_CLASS)).toggleClass(DRAGGING_COMMAND_CELL_CLASS, isCommandColumn).text(isCommandColumn ? \"\" : options.sourceColumn.caption);\r\n that.element().appendTo(_swatch_container.default.getSwatchContainer(columnElement))\r\n },\r\n moveHeader: function(args) {\r\n var e = args.event;\r\n var that = e.data.that;\r\n var eventData = (0, _index.eventData)(e);\r\n var isResizing = that._columnsResizerViewController ? that._columnsResizerViewController.isResizing() : false;\r\n var dragOptions = that._dragOptions;\r\n if (that._isDragging && !isResizing) {\r\n var $element = that.element();\r\n var moveDeltaX = Math.abs(eventData.x - dragOptions.columnElement.offset().left - dragOptions.deltaX);\r\n var moveDeltaY = Math.abs(eventData.y - dragOptions.columnElement.offset().top - dragOptions.deltaY);\r\n if ($element.is(\":visible\") || moveDeltaX > DRAGGING_DELTA || moveDeltaY > DRAGGING_DELTA) {\r\n $element.show();\r\n var newLeft = eventData.x - dragOptions.deltaX;\r\n var newTop = eventData.y - dragOptions.deltaY;\r\n $element.css({\r\n left: newLeft,\r\n top: newTop\r\n });\r\n that.dockHeader(eventData)\r\n }\r\n e.preventDefault()\r\n }\r\n },\r\n dockHeader: function(eventData) {\r\n var that = this;\r\n var targetDraggingPanel = that._getDraggingPanelByPos(eventData);\r\n var controller = that._controller;\r\n var params = that._dropOptions;\r\n var dragOptions = that._dragOptions;\r\n if (targetDraggingPanel) {\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n var isVerticalOrientation = \"columnChooser\" === targetDraggingPanel.getName();\r\n var axisName = isVerticalOrientation ? \"y\" : \"x\";\r\n var targetLocation = targetDraggingPanel.getName();\r\n var rowIndex = \"headers\" === targetLocation ? dragOptions.rowIndex : void 0;\r\n var sourceColumn = dragOptions.sourceColumn;\r\n var columnElements = targetDraggingPanel.getColumnElements(rowIndex, sourceColumn && sourceColumn.ownerBand) || [];\r\n var pointsByTarget = dragOptions.pointsByTarget = dragOptions.pointsByTarget || {};\r\n var pointsByColumns = \"columnChooser\" === targetLocation ? [] : pointsByTarget[targetLocation] || controller._generatePointsByColumns((0, _extend.extend)({}, dragOptions, {\r\n targetDraggingPanel: targetDraggingPanel,\r\n columns: targetDraggingPanel.getColumns(rowIndex),\r\n columnElements: columnElements,\r\n isVerticalOrientation: isVerticalOrientation,\r\n startColumnIndex: \"headers\" === targetLocation && (0, _renderer.default)(columnElements[0]).index()\r\n }));\r\n pointsByTarget[targetLocation] = pointsByColumns;\r\n params.targetLocation = targetLocation;\r\n if (pointsByColumns.length > 0) {\r\n for (var i = 0; i < pointsByColumns.length; i++) {\r\n var centerPosition = pointsByColumns[i + 1] && (pointsByColumns[i][axisName] + pointsByColumns[i + 1][axisName]) / 2;\r\n if (void 0 === centerPosition || (rtlEnabled && \"x\" === axisName ? eventData[axisName] > centerPosition : eventData[axisName] < centerPosition)) {\r\n params.targetColumnIndex = that._getVisibleIndexObject(rowIndex, pointsByColumns[i].columnIndex);\r\n if (columnElements[i]) {\r\n params.targetColumnElement = columnElements.eq(i);\r\n params.isLast = false\r\n } else {\r\n params.targetColumnElement = columnElements.last();\r\n params.isLast = true\r\n }\r\n params.posX = pointsByColumns[i].x;\r\n params.posY = pointsByColumns[i].y;\r\n controller.dock(params);\r\n break\r\n }\r\n }\r\n } else {\r\n that._resetTargetColumnOptions();\r\n controller.dock(params)\r\n }\r\n }\r\n },\r\n dropHeader: function(args) {\r\n var e = args.event;\r\n var that = e.data.that;\r\n var controller = that._controller;\r\n that.element().hide();\r\n if (controller && that._isDragging) {\r\n controller.drop(that._dropOptions)\r\n }\r\n that.element().appendTo(that._parentElement());\r\n that._dragOptions = null;\r\n that._dropOptions = null;\r\n that._isDragging = false;\r\n _dom_adapter.default.getDocument().onselectstart = that._onSelectStart || null\r\n }\r\n});\r\nvar isNextColumnResizingMode = function(that) {\r\n return \"widget\" !== that.option(\"columnResizingMode\")\r\n};\r\nvar ColumnsResizerViewController = _uiGrid_core.default.ViewController.inherit({\r\n _isHeadersRowArea: function(posY) {\r\n if (this._columnHeadersView) {\r\n var element = this._columnHeadersView.element();\r\n if (element) {\r\n var offsetTop = element.offset().top;\r\n var headersRowHeight = this._columnHeadersView.getHeadersRowHeight();\r\n return posY >= offsetTop && posY <= offsetTop + headersRowHeight\r\n }\r\n }\r\n return false\r\n },\r\n _isRtlParentStyle: function() {\r\n var _this$_$parentContain;\r\n return this.option(\"rtlEnabled\") && \"rtl\" === (null === (_this$_$parentContain = this._$parentContainer) || void 0 === _this$_$parentContain ? void 0 : _this$_$parentContain.parent().css(\"direction\"))\r\n },\r\n _pointCreated: function(point, cellsLength, columns) {\r\n var isNextColumnMode = isNextColumnResizingMode(this);\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var isRtlParentStyle = this._isRtlParentStyle();\r\n var firstPointColumnIndex = !isNextColumnMode && rtlEnabled && !isRtlParentStyle ? 0 : 1;\r\n if (point.index >= firstPointColumnIndex && point.index < cellsLength + (!isNextColumnMode && (!rtlEnabled || isRtlParentStyle) ? 1 : 0)) {\r\n point.columnIndex -= firstPointColumnIndex;\r\n var currentColumn = columns[point.columnIndex] || {};\r\n var nextColumn = columns[point.columnIndex + 1] || {};\r\n return !(isNextColumnMode ? currentColumn.allowResizing && nextColumn.allowResizing : currentColumn.allowResizing)\r\n }\r\n return true\r\n },\r\n _getTargetPoint: function(pointsByColumns, currentX, deltaX) {\r\n if (pointsByColumns) {\r\n for (var i = 0; i < pointsByColumns.length; i++) {\r\n if (pointsByColumns[i].x === pointsByColumns[0].x && pointsByColumns[i + 1] && pointsByColumns[i].x === pointsByColumns[i + 1].x) {\r\n continue\r\n }\r\n if (pointsByColumns[i].x - deltaX <= currentX && currentX <= pointsByColumns[i].x + deltaX) {\r\n return pointsByColumns[i]\r\n }\r\n }\r\n }\r\n return null\r\n },\r\n _moveSeparator: function(args) {\r\n var e = args.event;\r\n var that = e.data;\r\n var columnsSeparatorWidth = that._columnsSeparatorView.width();\r\n var isNextColumnMode = isNextColumnResizingMode(that);\r\n var deltaX = columnsSeparatorWidth / 2;\r\n var parentOffset = that._$parentContainer.offset();\r\n var parentOffsetLeft = parentOffset.left;\r\n var eventData = (0, _index.eventData)(e);\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n var isRtlParentStyle = this._isRtlParentStyle();\r\n if (that._isResizing && that._resizingInfo) {\r\n if ((parentOffsetLeft <= eventData.x || !isNextColumnMode && isRtlParentStyle) && (!isNextColumnMode || eventData.x <= parentOffsetLeft + that._$parentContainer.width())) {\r\n if (that._updateColumnsWidthIfNeeded(eventData.x)) {\r\n var $cell = that._columnHeadersView.getColumnElements().eq(that._resizingInfo.currentColumnIndex);\r\n var cell = $cell[0];\r\n if (cell) {\r\n var outerWidth = cell.getBoundingClientRect().width;\r\n that._columnsSeparatorView.moveByX($cell.offset().left + ((isNextColumnMode || isRtlParentStyle) && rtlEnabled ? 0 : outerWidth));\r\n that._tablePositionController.update(that._targetPoint.y);\r\n e.preventDefault()\r\n }\r\n }\r\n }\r\n } else {\r\n if (that._isHeadersRowArea(eventData.y)) {\r\n if (that._previousParentOffset) {\r\n if (that._previousParentOffset.left !== parentOffset.left || that._previousParentOffset.top !== parentOffset.top) {\r\n that.pointsByColumns(null)\r\n }\r\n }\r\n that._targetPoint = that._getTargetPoint(that.pointsByColumns(), eventData.x, columnsSeparatorWidth);\r\n that._previousParentOffset = parentOffset;\r\n that._isReadyResizing = false;\r\n if (that._targetPoint) {\r\n that._columnsSeparatorView.changeCursor(\"col-resize\");\r\n that._columnsSeparatorView.moveByX(that._targetPoint.x - deltaX);\r\n that._tablePositionController.update(that._targetPoint.y);\r\n that._isReadyResizing = true;\r\n e.preventDefault()\r\n } else {\r\n that._columnsSeparatorView.changeCursor()\r\n }\r\n } else {\r\n that.pointsByColumns(null);\r\n that._isReadyResizing = false;\r\n that._columnsSeparatorView.changeCursor()\r\n }\r\n }\r\n },\r\n _endResizing: function(args) {\r\n var e = args.event;\r\n var that = e.data;\r\n if (that._isResizing) {\r\n that.pointsByColumns(null);\r\n that._resizingInfo = null;\r\n that._columnsSeparatorView.hide();\r\n that._columnsSeparatorView.changeCursor();\r\n that._trackerView.hide();\r\n that._isReadyResizing = false;\r\n that._isResizing = false\r\n }\r\n },\r\n _getNextColumnIndex: function(currentColumnIndex) {\r\n return currentColumnIndex + 1\r\n },\r\n _setupResizingInfo: function(posX) {\r\n var that = this;\r\n var currentColumnIndex = that._targetPoint.columnIndex;\r\n var nextColumnIndex = that._getNextColumnIndex(currentColumnIndex);\r\n var currentHeader = that._columnHeadersView.getHeaderElement(currentColumnIndex);\r\n var nextHeader = that._columnHeadersView.getHeaderElement(nextColumnIndex);\r\n that._resizingInfo = {\r\n startPosX: posX,\r\n currentColumnIndex: currentColumnIndex,\r\n currentColumnWidth: currentHeader && currentHeader.length > 0 ? (0, _position.getBoundingRect)(currentHeader[0]).width : 0,\r\n nextColumnIndex: nextColumnIndex,\r\n nextColumnWidth: nextHeader && nextHeader.length > 0 ? (0, _position.getBoundingRect)(nextHeader[0]).width : 0\r\n }\r\n },\r\n _startResizing: function(args) {\r\n var e = args.event;\r\n var that = e.data;\r\n var eventData = (0, _index.eventData)(e);\r\n if ((0, _index.isTouchEvent)(e)) {\r\n if (that._isHeadersRowArea(eventData.y)) {\r\n that._targetPoint = that._getTargetPoint(that.pointsByColumns(), eventData.x, COLUMNS_SEPARATOR_TOUCH_TRACKER_WIDTH);\r\n if (that._targetPoint) {\r\n that._columnsSeparatorView.moveByX(that._targetPoint.x - that._columnsSeparatorView.width() / 2);\r\n that._isReadyResizing = true\r\n }\r\n } else {\r\n that._isReadyResizing = false\r\n }\r\n }\r\n if (that._isReadyResizing) {\r\n that._setupResizingInfo(eventData.x);\r\n that._isResizing = true;\r\n that._tablePositionController.update(that._targetPoint.y);\r\n that._columnsSeparatorView.show();\r\n that._trackerView.show();\r\n var scrollable = that.component.getScrollable();\r\n if (scrollable && that._isRtlParentStyle()) {\r\n that._scrollRight = scrollable.$content().width() - scrollable._container().width() - scrollable.scrollLeft()\r\n }\r\n e.preventDefault();\r\n e.stopPropagation()\r\n }\r\n if (this.isResizing()) {\r\n this.getController(\"editorFactory\").loseFocus()\r\n }\r\n },\r\n _generatePointsByColumns: function() {\r\n var that = this;\r\n var columns = that._columnsController ? that._columnsController.getVisibleColumns() : [];\r\n var cells = that._columnHeadersView.getColumnElements();\r\n var pointsByColumns = [];\r\n if (cells && cells.length > 0) {\r\n pointsByColumns = _uiGrid_core2.default.getPointsByColumns(cells, function(point) {\r\n return that._pointCreated(point, cells.length, columns)\r\n })\r\n }\r\n that._pointsByColumns = pointsByColumns\r\n },\r\n _unsubscribeFromEvents: function() {\r\n this._moveSeparatorHandler && _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.move, MODULE_NAMESPACE), this._moveSeparatorHandler);\r\n this._startResizingHandler && _events_engine.default.off(this._$parentContainer, (0, _index.addNamespace)(_pointer.default.down, MODULE_NAMESPACE), this._startResizingHandler);\r\n if (this._endResizingHandler) {\r\n _events_engine.default.off(this._columnsSeparatorView.element(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this._endResizingHandler);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this._endResizingHandler)\r\n }\r\n },\r\n _subscribeToEvents: function() {\r\n this._moveSeparatorHandler = this.createAction(this._moveSeparator);\r\n this._startResizingHandler = this.createAction(this._startResizing);\r\n this._endResizingHandler = this.createAction(this._endResizing);\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.move, MODULE_NAMESPACE), this, this._moveSeparatorHandler);\r\n _events_engine.default.on(this._$parentContainer, (0, _index.addNamespace)(_pointer.default.down, MODULE_NAMESPACE), this, this._startResizingHandler);\r\n _events_engine.default.on(this._columnsSeparatorView.element(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this, this._endResizingHandler);\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this, this._endResizingHandler)\r\n },\r\n _updateColumnsWidthIfNeeded: function(posX) {\r\n var deltaX;\r\n var needUpdate = false;\r\n var nextCellWidth;\r\n var resizingInfo = this._resizingInfo;\r\n var columnsController = this._columnsController;\r\n var visibleColumns = columnsController.getVisibleColumns();\r\n var columnsSeparatorWidth = this._columnsSeparatorView.width();\r\n var contentWidth = this._rowsView.contentWidth();\r\n var isNextColumnMode = isNextColumnResizingMode(this);\r\n var adaptColumnWidthByRatio = isNextColumnMode && this.option(\"adaptColumnWidthByRatio\") && !this.option(\"columnAutoWidth\");\r\n var minWidth;\r\n var nextColumn;\r\n var cellWidth;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var isRtlParentStyle = this._isRtlParentStyle();\r\n\r\n function isPercentWidth(width) {\r\n return (0, _type.isString)(width) && \"%\" === width.slice(-1)\r\n }\r\n\r\n function setColumnWidth(column, columnWidth, contentWidth, adaptColumnWidthByRatio) {\r\n if (column) {\r\n var oldColumnWidth = column.width;\r\n if (oldColumnWidth) {\r\n adaptColumnWidthByRatio = isPercentWidth(oldColumnWidth)\r\n }\r\n if (adaptColumnWidthByRatio) {\r\n column && columnsController.columnOption(column.index, \"visibleWidth\", columnWidth);\r\n column && columnsController.columnOption(column.index, \"width\", (columnWidth / contentWidth * 100).toFixed(3) + \"%\")\r\n } else {\r\n column && columnsController.columnOption(column.index, \"visibleWidth\", null);\r\n column && columnsController.columnOption(column.index, \"width\", columnWidth)\r\n }\r\n }\r\n }\r\n\r\n function correctContentWidth(contentWidth, visibleColumns) {\r\n var allColumnsHaveWidth = visibleColumns.every(function(column) {\r\n return column.width\r\n });\r\n if (allColumnsHaveWidth) {\r\n var totalPercent = visibleColumns.reduce(function(sum, column) {\r\n if (isPercentWidth(column.width)) {\r\n sum += parseFloat(column.width)\r\n }\r\n return sum\r\n }, 0);\r\n if (totalPercent > 100) {\r\n contentWidth = contentWidth / totalPercent * 100\r\n }\r\n }\r\n return contentWidth\r\n }\r\n deltaX = posX - resizingInfo.startPosX;\r\n if ((isNextColumnMode || isRtlParentStyle) && rtlEnabled) {\r\n deltaX = -deltaX\r\n }\r\n cellWidth = resizingInfo.currentColumnWidth + deltaX;\r\n var column = visibleColumns[resizingInfo.currentColumnIndex];\r\n minWidth = column && column.minWidth || columnsSeparatorWidth;\r\n needUpdate = cellWidth >= minWidth;\r\n if (isNextColumnMode) {\r\n nextCellWidth = resizingInfo.nextColumnWidth - deltaX;\r\n nextColumn = visibleColumns[resizingInfo.nextColumnIndex];\r\n minWidth = nextColumn && nextColumn.minWidth || columnsSeparatorWidth;\r\n needUpdate = needUpdate && nextCellWidth >= minWidth\r\n }\r\n if (needUpdate) {\r\n columnsController.beginUpdate();\r\n cellWidth = Math.floor(cellWidth);\r\n contentWidth = correctContentWidth(contentWidth, visibleColumns);\r\n setColumnWidth(column, cellWidth, contentWidth, adaptColumnWidthByRatio);\r\n if (isNextColumnMode) {\r\n nextCellWidth = Math.floor(nextCellWidth);\r\n setColumnWidth(nextColumn, nextCellWidth, contentWidth, adaptColumnWidthByRatio)\r\n } else {\r\n var columnWidths = this._columnHeadersView.getColumnWidths();\r\n columnWidths[resizingInfo.currentColumnIndex] = cellWidth;\r\n var hasScroll = columnWidths.reduce(function(totalWidth, width) {\r\n return totalWidth + width\r\n }, 0) > this._rowsView.contentWidth();\r\n if (!hasScroll) {\r\n var lastColumnIndex = _uiGrid_core2.default.getLastResizableColumnIndex(visibleColumns);\r\n if (lastColumnIndex >= 0) {\r\n columnsController.columnOption(visibleColumns[lastColumnIndex].index, \"visibleWidth\", \"auto\")\r\n }\r\n }\r\n for (var i = 0; i < columnWidths.length; i++) {\r\n if (visibleColumns[i] && visibleColumns[i] !== column && void 0 === visibleColumns[i].width) {\r\n columnsController.columnOption(visibleColumns[i].index, \"width\", columnWidths[i])\r\n }\r\n }\r\n }\r\n columnsController.endUpdate();\r\n if (!isNextColumnMode) {\r\n this.component.updateDimensions();\r\n var scrollable = this.component.getScrollable();\r\n if (scrollable && isRtlParentStyle) {\r\n var left = scrollable.$content().width() - scrollable._container().width() - this._scrollRight;\r\n scrollable.scrollTo({\r\n left: left\r\n })\r\n }\r\n }\r\n }\r\n return needUpdate\r\n },\r\n _subscribeToCallback: function(callback, handler) {\r\n callback.add(handler);\r\n this._subscribesToCallbacks.push({\r\n callback: callback,\r\n handler: handler\r\n })\r\n },\r\n _unsubscribeFromCallbacks: function() {\r\n for (var i = 0; i < this._subscribesToCallbacks.length; i++) {\r\n var subscribe = this._subscribesToCallbacks[i];\r\n subscribe.callback.remove(subscribe.handler)\r\n }\r\n this._subscribesToCallbacks = []\r\n },\r\n _unsubscribes: function() {\r\n this._unsubscribeFromEvents();\r\n this._unsubscribeFromCallbacks()\r\n },\r\n _init: function() {\r\n var that = this;\r\n var generatePointsByColumnsHandler = function() {\r\n if (!that._isResizing) {\r\n that.pointsByColumns(null)\r\n }\r\n };\r\n var generatePointsByColumnsScrollHandler = function(offset) {\r\n if (that._scrollLeft !== offset.left) {\r\n that._scrollLeft = offset.left;\r\n that.pointsByColumns(null)\r\n }\r\n };\r\n that._columnsSeparatorView = that.getView(\"columnsSeparatorView\");\r\n that._columnHeadersView = that.getView(\"columnHeadersView\");\r\n that._trackerView = that.getView(\"trackerView\");\r\n that._rowsView = that.getView(\"rowsView\");\r\n that._columnsController = that.getController(\"columns\");\r\n that._tablePositionController = that.getController(\"tablePosition\");\r\n that._$parentContainer = that.component.$element();\r\n that._subscribeToCallback(that._columnHeadersView.renderCompleted, generatePointsByColumnsHandler);\r\n that._subscribeToCallback(that._columnHeadersView.resizeCompleted, generatePointsByColumnsHandler);\r\n that._subscribeToCallback(that._columnsSeparatorView.renderCompleted, function() {\r\n that._unsubscribeFromEvents();\r\n that._subscribeToEvents()\r\n });\r\n that._subscribeToCallback(that._rowsView.renderCompleted, function() {\r\n that._rowsView.scrollChanged.remove(generatePointsByColumnsScrollHandler);\r\n that._rowsView.scrollChanged.add(generatePointsByColumnsScrollHandler)\r\n });\r\n var previousScrollbarVisibility = 0 !== that._rowsView.getScrollbarWidth();\r\n var previousTableHeight = 0;\r\n that._subscribeToCallback(that.getController(\"tablePosition\").positionChanged, function(e) {\r\n if (that._isResizing && !that._rowsView.isResizing) {\r\n var scrollbarVisibility = 0 !== that._rowsView.getScrollbarWidth();\r\n if (previousScrollbarVisibility !== scrollbarVisibility || previousTableHeight && previousTableHeight !== e.height) {\r\n previousScrollbarVisibility = scrollbarVisibility;\r\n previousTableHeight = e.height;\r\n that.component.updateDimensions()\r\n } else {\r\n that._rowsView.updateFreeSpaceRowHeight()\r\n }\r\n }\r\n previousTableHeight = e.height\r\n })\r\n },\r\n optionChanged: function(args) {\r\n this.callBase(args);\r\n if (\"allowColumnResizing\" === args.name) {\r\n if (args.value) {\r\n this._init();\r\n this._subscribeToEvents()\r\n } else {\r\n this._unsubscribes()\r\n }\r\n }\r\n },\r\n isResizing: function() {\r\n return this._isResizing\r\n },\r\n init: function() {\r\n this._subscribesToCallbacks = [];\r\n if (allowResizing(this)) {\r\n this._init()\r\n }\r\n },\r\n pointsByColumns: function(value) {\r\n if (void 0 !== value) {\r\n this._pointsByColumns = value\r\n } else {\r\n if (!this._pointsByColumns) {\r\n this._generatePointsByColumns()\r\n }\r\n return this._pointsByColumns\r\n }\r\n },\r\n dispose: function() {\r\n this._unsubscribes();\r\n this.callBase()\r\n }\r\n});\r\nvar TablePositionViewController = _uiGrid_core.default.ViewController.inherit({\r\n update: function(top) {\r\n var that = this;\r\n var params = {};\r\n var $element = that._columnHeadersView.element();\r\n var offset = $element && $element.offset();\r\n var offsetTop = offset && offset.top || 0;\r\n var diffOffsetTop = (0, _type.isDefined)(top) ? Math.abs(top - offsetTop) : 0;\r\n var columnsHeadersHeight = that._columnHeadersView ? that._columnHeadersView.getHeight() : 0;\r\n var scrollBarWidth = that._rowsView.getScrollbarWidth(true);\r\n var rowsHeight = that._rowsView ? that._rowsView.height() - scrollBarWidth : 0;\r\n var columnsResizerController = that.component.getController(\"columnsResizer\");\r\n var draggingHeaderView = that.component.getView(\"draggingHeaderView\");\r\n params.height = columnsHeadersHeight;\r\n var isDraggingOrResizing = false !== columnsResizerController.isResizing() || draggingHeaderView.isDragging();\r\n if (isDraggingOrResizing) {\r\n params.height += rowsHeight - diffOffsetTop\r\n }\r\n if (null !== top && $element && $element.length) {\r\n params.top = $element[0].offsetTop + diffOffsetTop\r\n }\r\n that.positionChanged.fire(params)\r\n },\r\n init: function() {\r\n var that = this;\r\n that.callBase();\r\n that._columnHeadersView = this.getView(\"columnHeadersView\");\r\n that._rowsView = this.getView(\"rowsView\");\r\n that._pagerView = this.getView(\"pagerView\");\r\n that._rowsView.resizeCompleted.add(function() {\r\n if (that.option(\"allowColumnResizing\")) {\r\n var targetPoint = that.getController(\"columnsResizer\")._targetPoint;\r\n that.update(targetPoint ? targetPoint.y : null)\r\n }\r\n })\r\n },\r\n ctor: function(component) {\r\n this.callBase(component);\r\n this.positionChanged = (0, _callbacks.default)()\r\n }\r\n});\r\nvar DraggingHeaderViewController = _uiGrid_core.default.ViewController.inherit({\r\n _generatePointsByColumns: function(options) {\r\n var that = this;\r\n return _uiGrid_core2.default.getPointsByColumns(options.columnElements, function(point) {\r\n return that._pointCreated(point, options.columns, options.targetDraggingPanel.getName(), options.sourceColumn)\r\n }, options.isVerticalOrientation, options.startColumnIndex)\r\n },\r\n _pointCreated: function(point, columns, location, sourceColumn) {\r\n var targetColumn = columns[point.columnIndex];\r\n var prevColumn = columns[point.columnIndex - 1];\r\n switch (location) {\r\n case \"columnChooser\":\r\n return true;\r\n case \"headers\":\r\n return sourceColumn && !sourceColumn.allowReordering || (!targetColumn || !targetColumn.allowReordering) && (!prevColumn || !prevColumn.allowReordering);\r\n default:\r\n return 0 === columns.length\r\n }\r\n },\r\n _subscribeToEvents: function(draggingHeader, draggingPanels) {\r\n var that = this;\r\n (0, _iterator.each)(draggingPanels, function(_, draggingPanel) {\r\n if (draggingPanel) {\r\n var columns;\r\n var rowCount = draggingPanel.getRowCount ? draggingPanel.getRowCount() : 1;\r\n var nameDraggingPanel = draggingPanel.getName();\r\n var subscribeToEvents = function(index, columnElement) {\r\n if (!columnElement) {\r\n return\r\n }\r\n var $columnElement = (0, _renderer.default)(columnElement);\r\n var column = columns[index];\r\n if (draggingPanel.allowDragging(column, nameDraggingPanel, draggingPanels)) {\r\n $columnElement.addClass(that.addWidgetPrefix(HEADERS_DRAG_ACTION_CLASS));\r\n _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.start, MODULE_NAMESPACE), that.createAction(function(args) {\r\n var e = args.event;\r\n var eventData = (0, _index.eventData)(e);\r\n draggingHeader.dragHeader({\r\n deltaX: eventData.x - (0, _renderer.default)(e.currentTarget).offset().left,\r\n deltaY: eventData.y - (0, _renderer.default)(e.currentTarget).offset().top,\r\n sourceColumn: column,\r\n index: column.index,\r\n columnIndex: index,\r\n columnElement: $columnElement,\r\n sourceLocation: nameDraggingPanel,\r\n draggingPanels: draggingPanels,\r\n rowIndex: that._columnsController.getRowIndex(column.index, true)\r\n })\r\n }));\r\n _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.move, MODULE_NAMESPACE), {\r\n that: draggingHeader\r\n }, that.createAction(draggingHeader.moveHeader));\r\n _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.end, MODULE_NAMESPACE), {\r\n that: draggingHeader\r\n }, that.createAction(draggingHeader.dropHeader))\r\n }\r\n };\r\n for (var i = 0; i < rowCount; i++) {\r\n var columnElements = draggingPanel.getColumnElements(i) || [];\r\n if (columnElements.length) {\r\n columns = draggingPanel.getColumns(i) || [];\r\n (0, _iterator.each)(columnElements, subscribeToEvents)\r\n }\r\n }\r\n }\r\n })\r\n },\r\n _unsubscribeFromEvents: function(draggingHeader, draggingPanels) {\r\n var that = this;\r\n (0, _iterator.each)(draggingPanels, function(_, draggingPanel) {\r\n if (draggingPanel) {\r\n var columnElements = draggingPanel.getColumnElements() || [];\r\n (0, _iterator.each)(columnElements, function(index, columnElement) {\r\n var $columnElement = (0, _renderer.default)(columnElement);\r\n _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.start, MODULE_NAMESPACE));\r\n _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.move, MODULE_NAMESPACE));\r\n _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.end, MODULE_NAMESPACE));\r\n $columnElement.removeClass(that.addWidgetPrefix(HEADERS_DRAG_ACTION_CLASS))\r\n })\r\n }\r\n })\r\n },\r\n _getSeparator: function(targetLocation) {\r\n return \"headers\" === targetLocation ? this._columnsSeparatorView : this._blockSeparatorView\r\n },\r\n hideSeparators: function(type) {\r\n var blockSeparator = this._blockSeparatorView;\r\n var columnsSeparator = this._columnsSeparatorView;\r\n this._animationColumnIndex = null;\r\n blockSeparator && blockSeparator.hide();\r\n \"block\" !== type && columnsSeparator && columnsSeparator.hide()\r\n },\r\n init: function() {\r\n var that = this;\r\n that.callBase();\r\n that._columnsController = that.getController(\"columns\");\r\n that._columnHeadersView = that.getView(\"columnHeadersView\");\r\n that._columnsSeparatorView = that.getView(\"columnsSeparatorView\");\r\n that._draggingHeaderView = that.getView(\"draggingHeaderView\");\r\n that._rowsView = that.getView(\"rowsView\");\r\n that._blockSeparatorView = that.getView(\"blockSeparatorView\");\r\n that._headerPanelView = that.getView(\"headerPanel\");\r\n that._columnChooserView = that.getView(\"columnChooserView\");\r\n var subscribeToEvents = function() {\r\n if (that._draggingHeaderView) {\r\n var draggingPanels = [that._columnChooserView, that._columnHeadersView, that._headerPanelView];\r\n that._unsubscribeFromEvents(that._draggingHeaderView, draggingPanels);\r\n that._subscribeToEvents(that._draggingHeaderView, draggingPanels)\r\n }\r\n };\r\n that._columnHeadersView.renderCompleted.add(subscribeToEvents);\r\n that._headerPanelView && that._headerPanelView.renderCompleted.add(subscribeToEvents);\r\n that._columnChooserView && that._columnChooserView.renderCompleted.add(subscribeToEvents)\r\n },\r\n allowDrop: function(parameters) {\r\n return this._columnsController.allowMoveColumn(parameters.sourceColumnIndex, parameters.targetColumnIndex, parameters.sourceLocation, parameters.targetLocation)\r\n },\r\n drag: function(parameters) {\r\n var sourceIndex = parameters.sourceIndex;\r\n var sourceLocation = parameters.sourceLocation;\r\n var sourceColumnElement = parameters.sourceColumnElement;\r\n var headersView = this._columnHeadersView;\r\n var rowsView = this._rowsView;\r\n if (sourceColumnElement) {\r\n sourceColumnElement.css({\r\n opacity: COLUMN_OPACITY\r\n });\r\n if (\"headers\" === sourceLocation) {\r\n headersView && headersView.setRowsOpacity(sourceIndex, COLUMN_OPACITY);\r\n rowsView && rowsView.setRowsOpacity(sourceIndex, COLUMN_OPACITY)\r\n }\r\n }\r\n },\r\n dock: function(parameters) {\r\n var that = this;\r\n var targetColumnIndex = (0, _type.isObject)(parameters.targetColumnIndex) ? parameters.targetColumnIndex.columnIndex : parameters.targetColumnIndex;\r\n var sourceLocation = parameters.sourceLocation;\r\n var targetLocation = parameters.targetLocation;\r\n var separator = that._getSeparator(targetLocation);\r\n var hasTargetVisibleIndex = targetColumnIndex >= 0;\r\n var showSeparator = function() {\r\n if (that._animationColumnIndex !== targetColumnIndex) {\r\n that.hideSeparators();\r\n separator.element()[parameters.isLast ? \"insertAfter\" : \"insertBefore\"](parameters.targetColumnElement);\r\n that._animationColumnIndex = targetColumnIndex;\r\n separator.show(targetLocation)\r\n }\r\n };\r\n that._columnHeadersView.element().find(\".\" + HEADER_ROW_CLASS).toggleClass(that.addWidgetPrefix(HEADERS_DROP_HIGHLIGHT_CLASS), \"headers\" !== sourceLocation && \"headers\" === targetLocation && !hasTargetVisibleIndex);\r\n if (separator) {\r\n if (that.allowDrop(parameters) && hasTargetVisibleIndex) {\r\n if (\"group\" === targetLocation || \"columnChooser\" === targetLocation) {\r\n showSeparator()\r\n } else {\r\n that.hideSeparators(\"block\");\r\n that.getController(\"tablePosition\").update(parameters.posY);\r\n separator.moveByX(parameters.posX - separator.width());\r\n separator.show()\r\n }\r\n } else {\r\n that.hideSeparators()\r\n }\r\n }\r\n },\r\n drop: function(parameters) {\r\n var sourceColumnElement = parameters.sourceColumnElement;\r\n if (sourceColumnElement) {\r\n sourceColumnElement.css({\r\n opacity: \"\"\r\n });\r\n this._columnHeadersView.setRowsOpacity(parameters.sourceIndex, \"\");\r\n this._rowsView.setRowsOpacity(parameters.sourceIndex, \"\");\r\n this._columnHeadersView.element().find(\".\" + HEADER_ROW_CLASS).removeClass(this.addWidgetPrefix(HEADERS_DROP_HIGHLIGHT_CLASS))\r\n }\r\n if (this.allowDrop(parameters)) {\r\n var separator = this._getSeparator(parameters.targetLocation);\r\n if (separator) {\r\n separator.hide()\r\n }\r\n this._columnsController.moveColumn(parameters.sourceColumnIndex, parameters.targetColumnIndex, parameters.sourceLocation, parameters.targetLocation)\r\n }\r\n },\r\n dispose: function() {\r\n if (this._draggingHeaderView) {\r\n this._unsubscribeFromEvents(this._draggingHeaderView, [this._columnChooserView, this._columnHeadersView, this._headerPanelView])\r\n }\r\n }\r\n});\r\nvar _default = {\r\n views: {\r\n columnsSeparatorView: ColumnsSeparatorView,\r\n blockSeparatorView: BlockSeparatorView,\r\n draggingHeaderView: DraggingHeaderView,\r\n trackerView: TrackerView\r\n },\r\n controllers: {\r\n draggingHeader: DraggingHeaderViewController,\r\n tablePosition: TablePositionViewController,\r\n columnsResizer: ColumnsResizerViewController\r\n },\r\n extenders: {\r\n views: {\r\n rowsView: {\r\n _needUpdateRowHeight: function(itemCount) {\r\n var wordWrapEnabled = this.option(\"wordWrapEnabled\");\r\n var columnsResizerController = this.getController(\"columnsResizer\");\r\n var isResizing = columnsResizerController.isResizing();\r\n return this.callBase.apply(this, arguments) || itemCount > 0 && wordWrapEnabled && isResizing\r\n }\r\n }\r\n },\r\n controllers: {\r\n editorFactory: {\r\n renderFocusOverlay: function() {\r\n if (this.getController(\"columnsResizer\").isResizing()) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.grouping.expanded.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.GroupingHelper = void 0;\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _utils = _interopRequireDefault(require(\"../../data/utils\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _store_helper = _interopRequireDefault(require(\"../../data/store_helper\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiData_gridGrouping = require(\"./ui.data_grid.grouping.core\");\r\nvar _uiData_grid2 = require(\"./ui.data_grid.utils\");\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar loadTotalCount = function(dataSource, options) {\r\n var d = new _deferred.Deferred;\r\n var loadOptions = (0, _extend.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\nvar GroupingHelper = _uiData_gridGrouping.GroupingHelper.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 processGroupItems = 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 {\r\n 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 }\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 };\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 (!_utils.default.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 removeGroupLoadOption = function(storeLoadOptions, loadOptions) {\r\n if (loadOptions.group) {\r\n var groups = _uiData_grid.default.normalizeSortingInfo(loadOptions.group);\r\n var sorts = _uiData_grid.default.normalizeSortingInfo(storeLoadOptions.sort);\r\n storeLoadOptions.sort = _store_helper.default.arrangeSortingInfo(groups, sorts);\r\n delete loadOptions.group\r\n }\r\n };\r\n var createNotGroupFilter = function(path, storeLoadOptions, group) {\r\n var groups = _uiData_grid.default.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(_uiData_grid.default.combineFilters(filterElement))\r\n }\r\n filter = _uiData_grid.default.combineFilters(filter, \"or\");\r\n return _uiData_grid.default.combineFilters([filter, storeLoadOptions.filter])\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 that = this;\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 removeGroupLoadOption(storeLoadOptions, options.loadOptions);\r\n options.group = options.group || group;\r\n if (options.isCustomLoading) {\r\n return\r\n }\r\n var loadOptions = (0, _extend.extend)({}, storeLoadOptions);\r\n loadOptions.skip = correctSkipLoadOption(that, 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(that, function(groupInfo) {\r\n if (groupInfo.offset >= loadOptions.skip + loadOptions.take + skipCorrection) {\r\n return false\r\n } else {\r\n 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 });\r\n (0, _iterator.each)(collapsedGroups, function() {\r\n loadOptions.filter = createNotGroupFilter(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 that = this;\r\n var data = options.data;\r\n var collapsedGroups = options.collapsedGroups;\r\n var groups = _uiData_grid.default.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 = (0, _data.toComparable)(path[0], true);\r\n for (i = 0; i < data.length; i++) {\r\n keyValue = (0, _data.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 = (0, _query.default)(data);\r\n _store_helper.default.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 processGroupItems(that, 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.Deferred).resolve(groupInfo.count)\r\n } else {\r\n groupCountQuery = loadTotalCount(dataSource, {\r\n filter: (0, _uiData_grid2.createGroupFilter)(path, {\r\n filter: dataSource.filter(),\r\n group: dataSource.group()\r\n })\r\n })\r\n }\r\n return (0, _deferred.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: (0, _uiData_grid2.createGroupFilter)(groupInfo.path, storeLoadOptions)\r\n });\r\n var groupOffsetQuery = loadTotalCount(dataSource, {\r\n filter: (0, _uiData_gridGrouping.createOffsetFilter)(groupInfo.path, storeLoadOptions)\r\n });\r\n return (0, _deferred.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\nexports.GroupingHelper = GroupingHelper;\r\n","/**\r\n * DevExtreme (ui/filter_builder/ui.filter_operations_dictionary.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar 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\nvar _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\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/context_menu/ui.menu_base.edit.strategy.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiCollection_widgetEditStrategy = _interopRequireDefault(require(\"../collection/ui.collection_widget.edit.strategy.plain\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n if (!(instance instanceof Constructor)) {\r\n throw new TypeError(\"Cannot call a class as a function\")\r\n }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n return Constructor\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n if (\"function\" !== typeof superClass && null !== superClass) {\r\n throw new TypeError(\"Super expression must either be null or a function\")\r\n }\r\n subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n constructor: {\r\n value: subClass,\r\n writable: true,\r\n configurable: true\r\n }\r\n });\r\n if (superClass) {\r\n _setPrototypeOf(subClass, superClass)\r\n }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n return function() {\r\n var result, Super = _getPrototypeOf(Derived);\r\n if (hasNativeReflectConstruct) {\r\n var NewTarget = _getPrototypeOf(this).constructor;\r\n result = Reflect.construct(Super, arguments, NewTarget)\r\n } else {\r\n result = Super.apply(this, arguments)\r\n }\r\n return _possibleConstructorReturn(this, result)\r\n }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n return call\r\n }\r\n return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n if (void 0 === self) {\r\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n }\r\n return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n return false\r\n }\r\n if (Reflect.construct.sham) {\r\n return false\r\n }\r\n if (\"function\" === typeof Proxy) {\r\n return true\r\n }\r\n try {\r\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n return true\r\n } catch (e) {\r\n return false\r\n }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n return o.__proto__ || Object.getPrototypeOf(o)\r\n };\r\n return _getPrototypeOf(o)\r\n}\r\nvar MenuBaseEditStrategy = function(_PlainEditStrategy) {\r\n _inherits(MenuBaseEditStrategy, _PlainEditStrategy);\r\n var _super = _createSuper(MenuBaseEditStrategy);\r\n\r\n function MenuBaseEditStrategy() {\r\n _classCallCheck(this, MenuBaseEditStrategy);\r\n return _super.apply(this, arguments)\r\n }\r\n _createClass(MenuBaseEditStrategy, [{\r\n key: \"_getPlainItems\",\r\n value: function() {\r\n return (0, _iterator.map)(this._collectionWidget.option(\"items\"), function getMenuItems(item) {\r\n return item.items ? [item].concat((0, _iterator.map)(item.items, getMenuItems)) : item\r\n })\r\n }\r\n }, {\r\n key: \"_stringifyItem\",\r\n value: function(item) {\r\n var _this = this;\r\n return JSON.stringify(item, function(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 }, {\r\n key: \"_getTemplateString\",\r\n value: function(template) {\r\n var result;\r\n if (\"object\" === _typeof(template)) {\r\n result = (0, _renderer.default)(template).text()\r\n } else {\r\n result = template.toString()\r\n }\r\n return result\r\n }\r\n }]);\r\n return MenuBaseEditStrategy\r\n}(_uiCollection_widgetEditStrategy.default);\r\nvar _default = MenuBaseEditStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/pdf_creator.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getData = getData;\r\nvar _version = _interopRequireDefault(require(\"../core/version\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _image_creator = require(\"./image_creator\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _extend = require(\"../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar window = (0, _window.getWindow)();\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.default);\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\n\r\nfunction getData(data, options) {\r\n return _image_creator.imageCreator.getImageData(data, (0, _extend.extend)({}, options, {\r\n format: \"JPEG\"\r\n })).then(function(imageString) {\r\n var binaryData = composePdfString(imageString, options, getCurDate());\r\n var pdfData = (0, _type.isFunction)(window.Blob) ? getBlob(binaryData) : getBase64(binaryData);\r\n return pdfData\r\n })\r\n}\r\n","/**\r\n * DevExtreme (ui/shared/accessibility.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.subscribeVisibilityChange = subscribeVisibilityChange;\r\nexports.unsubscribeVisibilityChange = unsubscribeVisibilityChange;\r\nexports.hiddenFocus = hiddenFocus;\r\nexports.registerKeyboardAction = registerKeyboardAction;\r\nexports.restoreFocus = restoreFocus;\r\nexports.selectView = selectView;\r\nexports.setTabIndex = setTabIndex;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\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 = (0, _index.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 {\r\n 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\n\r\nfunction saveFocusedElementInfo(target, instance) {\r\n var $target = (0, _renderer.default)(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 = (0, _extend.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 = (0, _renderer.default)(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 = (0, _renderer.default)(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\" === _dom_adapter.default.getDocument().visibilityState\r\n}\r\n\r\nfunction subscribeVisibilityChange() {\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), \"visibilitychange\", onDocumentVisibilityChange)\r\n}\r\n\r\nfunction unsubscribeVisibilityChange() {\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), \"visibilitychange\", onDocumentVisibilityChange)\r\n}\r\n\r\nfunction hiddenFocus(element) {\r\n isHiddenFocusing = true;\r\n element.focus();\r\n isHiddenFocusing = false\r\n}\r\n\r\nfunction registerKeyboardAction(viewName, instance, $element, selector, action, executeKeyDown) {\r\n if (instance.option(\"useLegacyKeyboardNavigation\")) {\r\n return _common.noop\r\n }\r\n var $mainElement = (0, _renderer.default)(instance.element());\r\n var keyDownHandler = function(e) {\r\n return processKeyDown(viewName, instance, e, action, $mainElement, executeKeyDown)\r\n };\r\n var mouseDownHandler = function() {\r\n isMouseDown = true;\r\n $mainElement.removeClass(FOCUS_STATE_CLASS)\r\n };\r\n var focusinHandler = function() {\r\n var needShowOverlay = !isMouseDown && !isHiddenFocusing;\r\n if (needShowOverlay) {\r\n $mainElement.addClass(FOCUS_STATE_CLASS)\r\n }\r\n isMouseDown = false\r\n };\r\n _events_engine.default.on($element, \"keydown\", selector, keyDownHandler);\r\n _events_engine.default.on($element, \"mousedown\", selector, mouseDownHandler);\r\n _events_engine.default.on($element, \"focusin\", selector, focusinHandler);\r\n return function() {\r\n _events_engine.default.off($element, \"keydown\", selector, keyDownHandler);\r\n _events_engine.default.off($element, \"mousedown\", selector, mouseDownHandler);\r\n _events_engine.default.off($element, \"focusin\", selector, focusinHandler)\r\n }\r\n}\r\n\r\nfunction 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 _events_engine.default.trigger($targetElement, \"focus\")\r\n }\r\n }\r\n}\r\n\r\nfunction selectView(viewName, instance, event) {\r\n var keyName = (0, _index.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 _events_engine.default.trigger($focusViewElement, \"focus\");\r\n $focusViewElement.removeClass(FOCUS_DISABLED_CLASS);\r\n break\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction 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 (ui/grid_core/ui.grid_core.error_handling.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar ERROR_ROW_CLASS = \"dx-error-row\";\r\nvar ERROR_MESSAGE_CLASS = \"dx-error-message\";\r\nvar ERROR_CLOSEBUTTON_CLASS = \"dx-closebutton\";\r\nvar ACTION_CLASS = \"action\";\r\nvar ErrorHandlingController = _uiGrid_core.default.ViewController.inherit({\r\n init: function() {\r\n var that = this;\r\n that._columnHeadersView = that.getView(\"columnHeadersView\");\r\n that._rowsView = that.getView(\"rowsView\")\r\n },\r\n _createErrorRow: function(error, $tableElements) {\r\n var that = this;\r\n var $errorRow;\r\n var $closeButton;\r\n var $errorMessage = this._renderErrorMessage(error);\r\n if ($tableElements) {\r\n $errorRow = (0, _renderer.default)(\"
\").addClass(ERROR_ROW_CLASS);\r\n $closeButton = (0, _renderer.default)(\"
\").addClass(ERROR_CLOSEBUTTON_CLASS).addClass(that.addWidgetPrefix(ACTION_CLASS));\r\n _events_engine.default.on($closeButton, _click.name, that.createAction(function(args) {\r\n var e = args.event;\r\n var $errorRow;\r\n var errorRowIndex = (0, _renderer.default)(e.currentTarget).closest(\".\" + ERROR_ROW_CLASS).index();\r\n e.stopPropagation();\r\n (0, _iterator.each)($tableElements, function(_, tableElement) {\r\n $errorRow = (0, _renderer.default)(tableElement).children(\"tbody\").children(\"tr\").eq(errorRowIndex);\r\n that.removeErrorRow($errorRow)\r\n });\r\n that.getController(\"resizing\") && that.getController(\"resizing\").fireContentReadyAction()\r\n }));\r\n (0, _renderer.default)(\"
\" + freeSpaceCellsHtml + \"\"\r\n };\r\n for (var i = 0; i < columns.length; i++) {\r\n var classes = that._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(that.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 that = this;\r\n var scrollingMode = that.option(\"scrolling.mode\");\r\n var virtualMode = scrollingMode === SCROLLING_MODE_VIRTUAL;\r\n var appendMode = scrollingMode === SCROLLING_MODE_INFINITE;\r\n var showBottomLoading = !that._dataController.hasKnownLastPage() && that._dataController.isLoaded() && (virtualMode || appendMode);\r\n var $contentElement = that._findContentElement();\r\n var bottomLoadPanelElement = that._findBottomLoadPanel($contentElement);\r\n if (showBottomLoading) {\r\n if (!bottomLoadPanelElement) {\r\n (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(BOTTOM_LOAD_PANEL_CLASS)).append(that._createComponent((0, _renderer.default)(\"
\"), _load_indicator.default).$element()).appendTo($contentElement)\r\n }\r\n } else {\r\n if (bottomLoadPanelElement) {\r\n bottomLoadPanelElement.remove()\r\n }\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 var that = this;\r\n that.callBase.apply(that, arguments);\r\n if (that._rowHeight) {\r\n that._updateContentPosition();\r\n var viewportHeight = that._hasHeight ? that.element().outerHeight() : (0, _renderer.default)((0, _window.getWindow)()).outerHeight();\r\n that._dataController.viewportSize(Math.ceil(viewportHeight / that._rowHeight))\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 that = this;\r\n var callBase = that.callBase;\r\n var dataController = that._dataController;\r\n var hasBottomLoadPanel = dataController.pageIndex() > 0 && dataController.isLoaded() && !!that._findBottomLoadPanel();\r\n if (hasBottomLoadPanel) {\r\n isLoading = false\r\n }\r\n callBase.call(that, 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((0, _window.getWindow)().document).length) {\r\n that._windowScroll = (0, _uiGrid_core.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 = this._dataController;\r\n if (dataController && dataController.loadIfNeed) {\r\n dataController.loadIfNeed()\r\n }\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\nvar _default = {\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 }\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.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 _applyFilter: function() {\r\n this.setViewportPosition(0);\r\n return this.callBase.apply(this, arguments)\r\n },\r\n reload: function() {\r\n var that = this;\r\n var rowsScrollController = that._rowsScrollController || that._dataSource;\r\n var itemIndex = rowsScrollController && rowsScrollController.getItemIndexByPosition();\r\n var result = this.callBase.apply(this, arguments);\r\n return result && result.done(function() {\r\n if (isVirtualMode(that) || isVirtualRowRendering(that)) {\r\n var rowIndexOffset = that.getRowIndexOffset();\r\n var rowIndex = Math.floor(itemIndex) - rowIndexOffset;\r\n var component = that.component;\r\n var scrollable = component.getScrollable && component.getScrollable();\r\n var isSortingOperation = that.dataSource().operationTypes().sorting;\r\n if (scrollable && !that.option(\"legacyRendering\") && !isSortingOperation) {\r\n var rowElement = component.getRowElement(rowIndex);\r\n var $rowElement = rowElement && rowElement[0] && (0, _renderer.default)(rowElement[0]);\r\n var top = $rowElement && $rowElement.position().top;\r\n var allowedTopOffset = _browser.default.mozilla || _browser.default.msie ? 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 that = this;\r\n var virtualRowsRendering = isVirtualRowRendering(that);\r\n if (\"virtual\" !== that.option(\"scrolling.mode\") && true !== virtualRowsRendering || false === virtualRowsRendering || that.option(\"legacyRendering\") || !that.option(\"scrolling.rowPageSize\")) {\r\n that._visibleItems = null;\r\n that._rowsScrollController = null;\r\n return\r\n }\r\n that._rowPageIndex = Math.ceil(that.pageIndex() * that.pageSize() / that.getRowPageSize());\r\n that._visibleItems = [];\r\n var isItemCountable = function(item) {\r\n return isItemCountableByDataSource(item, that._dataSource)\r\n };\r\n that._rowsScrollController = new _uiGrid_core.VirtualScrollController(that.component, {\r\n pageSize: function() {\r\n return that.getRowPageSize()\r\n },\r\n totalItemsCount: function() {\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 pageCount() {\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 (!that._rowsScrollController._dataSource.items().length && this.totalItemsCount()) {\r\n return\r\n }\r\n that._rowsScrollController.handleDataChanged(function(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(function(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 that._rowsScrollController._dataSource.items().filter(isItemCountable).length\r\n },\r\n correctCount: function(items, count, fromEnd) {\r\n return _correctCount(items, count, fromEnd, function(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) {\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()) {\r\n return LOAD_TIMEOUT\r\n }\r\n return (null === dataSource || void 0 === dataSource ? void 0 : dataSource._renderTime) || 0\r\n }\r\n }, true);\r\n that._rowsScrollController.positionChanged.add(function() {\r\n var _that$_dataSource;\r\n null === (_that$_dataSource = that._dataSource) || void 0 === _that$_dataSource ? void 0 : _that$_dataSource.setViewportItemIndex(that._rowsScrollController.getViewportItemIndex())\r\n });\r\n if (that.isLoaded()) {\r\n that._rowsScrollController.load()\r\n }\r\n },\r\n _updateItemsCore: function(change) {\r\n var _this3 = this;\r\n var delta = this.getRowIndexDelta();\r\n this.callBase.apply(this, arguments);\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(function(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 {\r\n if (\"insert\" === changeType) {\r\n visibleItems.splice(rowIndex, 0, newItem)\r\n } else {\r\n if (\"remove\" === changeType) {\r\n visibleItems.splice(rowIndex, 1)\r\n }\r\n }\r\n }\r\n })\r\n } else {\r\n visibleItems.forEach(function(item, index) {\r\n visibleItems[index] = _this3._items[index + delta] || visibleItems[index]\r\n });\r\n change.items = visibleItems\r\n }\r\n visibleItems.forEach(function(item, index) {\r\n item.rowIndex = index\r\n })\r\n }\r\n }\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 if (rowsScrollController && !byLoadedRows) {\r\n offset = rowsScrollController.beginPageIndex() * rowsScrollController._dataSource.pageSize()\r\n } else {\r\n if (\"virtual\" === this.option(\"scrolling.mode\") && dataSource) {\r\n offset = dataSource.beginPageIndex() * dataSource.pageSize()\r\n }\r\n }\r\n return offset\r\n },\r\n viewportSize: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n rowsScrollController && rowsScrollController.viewportSize.apply(rowsScrollController, arguments);\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.viewportSize.apply(dataSource, arguments)\r\n },\r\n viewportItemSize: function() {\r\n var rowsScrollController = this._rowsScrollController;\r\n rowsScrollController && rowsScrollController.viewportItemSize.apply(rowsScrollController, arguments);\r\n var dataSource = this._dataSource;\r\n return dataSource && 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 setContentSize: function(sizes) {\r\n var rowsScrollController = this._rowsScrollController;\r\n rowsScrollController && rowsScrollController.setContentSize(sizes);\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.setContentSize(sizes)\r\n },\r\n loadIfNeed: function() {\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 };\r\n _uiGrid_core2.default.proxyMethod(members, \"virtualItemsCount\");\r\n _uiGrid_core2.default.proxyMethod(members, \"getVirtualContentSize\");\r\n _uiGrid_core2.default.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 (!that.option(\"legacyRendering\") && (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.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\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.filter_builder.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _filter_builder = _interopRequireDefault(require(\"./../filter_builder\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _scroll_view = _interopRequireDefault(require(\"./../scroll_view\"));\r\nvar _popup = _interopRequireDefault(require(\"./../popup\"));\r\nvar _accessibility = require(\"../shared/accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar FilterBuilderView = _uiGrid_core.default.View.inherit({\r\n _renderCore: function() {\r\n this._updatePopupOptions()\r\n },\r\n _updatePopupOptions: function() {\r\n if (this.option(\"filterBuilderPopup.visible\")) {\r\n this._initPopup()\r\n } else {\r\n if (this._filterBuilderPopup) {\r\n this._filterBuilderPopup.hide()\r\n }\r\n }\r\n },\r\n _disposePopup: function() {\r\n if (this._filterBuilderPopup) {\r\n this._filterBuilderPopup.dispose();\r\n this._filterBuilderPopup = void 0\r\n }\r\n if (this._filterBuilder) {\r\n this._filterBuilder.dispose();\r\n this._filterBuilder = void 0\r\n }\r\n },\r\n _initPopup: function() {\r\n var that = this;\r\n that._disposePopup();\r\n that._filterBuilderPopup = that._createComponent(that.element(), _popup.default, (0, _extend.extend)({\r\n title: _message.default.format(\"dxDataGrid-filterBuilderPopupTitle\"),\r\n contentTemplate: function($contentElement) {\r\n return that._getPopupContentTemplate($contentElement)\r\n },\r\n onOptionChanged: function(args) {\r\n if (\"visible\" === args.name) {\r\n that.option(\"filterBuilderPopup.visible\", args.value)\r\n }\r\n },\r\n toolbarItems: that._getPopupToolbarItems()\r\n }, that.option(\"filterBuilderPopup\"), {\r\n onHidden: function(e) {\r\n (0, _accessibility.restoreFocus)(that);\r\n that._disposePopup()\r\n }\r\n }))\r\n },\r\n _getPopupContentTemplate: function(contentElement) {\r\n var $contentElement = (0, _renderer.default)(contentElement);\r\n var $filterBuilderContainer = (0, _renderer.default)(\"
\").appendTo((0, _renderer.default)(contentElement));\r\n this._filterBuilder = this._createComponent($filterBuilderContainer, _filter_builder.default, (0, _extend.extend)({\r\n value: this.option(\"filterValue\"),\r\n fields: this.getController(\"columns\").getFilteringColumns()\r\n }, this.option(\"filterBuilder\"), {\r\n customOperations: this.getController(\"filterSync\").getCustomFilterOperations()\r\n }));\r\n this._createComponent($contentElement, _scroll_view.default, {\r\n direction: \"both\"\r\n })\r\n },\r\n _getPopupToolbarItems: function() {\r\n var that = this;\r\n return [{\r\n toolbar: \"bottom\",\r\n location: \"after\",\r\n widget: \"dxButton\",\r\n options: {\r\n text: _message.default.format(\"OK\"),\r\n onClick: function(e) {\r\n var filter = that._filterBuilder.option(\"value\");\r\n that.option(\"filterValue\", filter);\r\n that._filterBuilderPopup.hide()\r\n }\r\n }\r\n }, {\r\n toolbar: \"bottom\",\r\n location: \"after\",\r\n widget: \"dxButton\",\r\n options: {\r\n text: _message.default.format(\"Cancel\"),\r\n onClick: function(e) {\r\n that._filterBuilderPopup.hide()\r\n }\r\n }\r\n }]\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"filterBuilder\":\r\n case \"filterBuilderPopup\":\r\n this._invalidate();\r\n args.handled = true;\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n filterBuilder: {\r\n groupOperationDescriptions: {\r\n and: _message.default.format(\"dxFilterBuilder-and\"),\r\n or: _message.default.format(\"dxFilterBuilder-or\"),\r\n notAnd: _message.default.format(\"dxFilterBuilder-notAnd\"),\r\n notOr: _message.default.format(\"dxFilterBuilder-notOr\")\r\n },\r\n filterOperationDescriptions: {\r\n between: _message.default.format(\"dxFilterBuilder-filterOperationBetween\"),\r\n equal: _message.default.format(\"dxFilterBuilder-filterOperationEquals\"),\r\n notEqual: _message.default.format(\"dxFilterBuilder-filterOperationNotEquals\"),\r\n lessThan: _message.default.format(\"dxFilterBuilder-filterOperationLess\"),\r\n lessThanOrEqual: _message.default.format(\"dxFilterBuilder-filterOperationLessOrEquals\"),\r\n greaterThan: _message.default.format(\"dxFilterBuilder-filterOperationGreater\"),\r\n greaterThanOrEqual: _message.default.format(\"dxFilterBuilder-filterOperationGreaterOrEquals\"),\r\n startsWith: _message.default.format(\"dxFilterBuilder-filterOperationStartsWith\"),\r\n contains: _message.default.format(\"dxFilterBuilder-filterOperationContains\"),\r\n notContains: _message.default.format(\"dxFilterBuilder-filterOperationNotContains\"),\r\n endsWith: _message.default.format(\"dxFilterBuilder-filterOperationEndsWith\"),\r\n isBlank: _message.default.format(\"dxFilterBuilder-filterOperationIsBlank\"),\r\n isNotBlank: _message.default.format(\"dxFilterBuilder-filterOperationIsNotBlank\")\r\n }\r\n },\r\n filterBuilderPopup: {}\r\n }\r\n },\r\n views: {\r\n filterBuilderView: FilterBuilderView\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/image_creator.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getData = getData;\r\nexports.testFormats = testFormats;\r\nexports.imageCreator = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _color = _interopRequireDefault(require(\"../color\"));\r\nvar _type = require(\"../core/utils/type\");\r\nvar _svg = require(\"../core/utils/svg\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _dom = require(\"../core/utils/dom\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _inflector = require(\"../core/utils/inflector\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar window = (0, _window.getWindow)();\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, _renderer.default)(\"\")[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 += 90 * (PI / 180) * (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 = (0, _extend.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.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(function(item) {\r\n return \"\" !== item.trim()\r\n });\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[(0, _inflector.camelize)(field)] = style[field]\r\n }\r\n }\r\n if (rootAppended && _dom_adapter.default.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[(0, _inflector.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 = (0, _type.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 || 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 {\r\n if (\"tspan\" === element.tagName || \"text\" === element.tagName) {\r\n var elementOptions = getElementOptions(element, shared.rootAppended);\r\n var mergedOptions = (0, _extend.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 }\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 = (0, _extend.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 gradients = _ref.gradients;\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(function(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.default(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 (0, _iterator.each)(element.childNodes, function(_, _ref2) {\r\n var attributes = _ref2.attributes;\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 (0, _iterator.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.Deferred;\r\n var i = 0;\r\n for (; i < array.length; i++) {\r\n var result = callback(array[i]);\r\n if ((0, _type.isPromise)(result)) {\r\n result.then(function() {\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 = (0, _extend.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 = function() {\r\n context.restore()\r\n };\r\n var d = drawCanvasElements(element.childNodes, context, options, shared);\r\n if ((0, _type.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 = (0, _iterator.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 (fill.search(/url/) === -1) {\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 (0, _iterator.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 = _dom_adapter.default.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) {\r\n var svgToCanvas = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : convertSvgToCanvas;\r\n var canvas = createCanvas(width, height, margin);\r\n var context = canvas.getContext(\"2d\");\r\n var svgElem = (0, _svg.getSvgElement)(markup);\r\n var invisibleDiv;\r\n var markupIsDomElement = _dom_adapter.default.isElementNode(markup);\r\n context.translate(margin, margin);\r\n _dom_adapter.default.getBody().appendChild(canvas);\r\n if (!markupIsDomElement) {\r\n invisibleDiv = createInvisibleDiv();\r\n invisibleDiv.appendChild(svgElem);\r\n _dom_adapter.default.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 (0, _deferred.fromPromise)(svgToCanvas(svgElem, canvas, markupIsDomElement && (0, _dom.contains)(_dom_adapter.default.getBody(), markup))).then(function() {\r\n return canvas\r\n }).always(function() {\r\n invisibleDiv && _dom_adapter.default.getBody().removeChild(invisibleDiv);\r\n _dom_adapter.default.getBody().removeChild(canvas)\r\n })\r\n}\r\nvar imageCreator = {\r\n getImageData: function(markup, options) {\r\n var mimeType = \"image/\" + options.format;\r\n var width = options.width;\r\n var height = options.height;\r\n var backgroundColor = options.backgroundColor;\r\n if ((0, _type.isFunction)(options.__parseAttributesFn)) {\r\n parseAttributes = options.__parseAttributesFn\r\n }\r\n return getCanvasFromSvg(markup, width, height, backgroundColor, options.margin, options.svgToCanvas).then(function(canvas) {\r\n return getStringFromCanvas(canvas, mimeType)\r\n })\r\n },\r\n getData: function(markup, options) {\r\n var that = this;\r\n return imageCreator.getImageData(markup, options).then(function(binaryData) {\r\n var mimeType = \"image/\" + options.format;\r\n var data = (0, _type.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\nexports.imageCreator = imageCreator;\r\n\r\nfunction getData(data, options) {\r\n return imageCreator.getData(data, options)\r\n}\r\n\r\nfunction 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 (canvas.toDataURL(mimeType).indexOf(mimeType) !== -1) {\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 (ui/tree_view.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiTree_view = _interopRequireDefault(require(\"./tree_view/ui.tree_view.search\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _uiTree_view.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.filter_sync.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _utils = require(\"../filter_builder/utils\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _filtering = _interopRequireDefault(require(\"../shared/filtering\"));\r\nvar _uiGrid_core3 = require(\"./ui.grid_core.filter_custom_operations\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar FILTER_ROW_OPERATIONS = [\"=\", \"<>\", \"<\", \"<=\", \">\", \">=\", \"notcontains\", \"contains\", \"startswith\", \"endswith\", \"between\"];\r\nvar FILTER_TYPES_INCLUDE = \"include\";\r\nvar FILTER_TYPES_EXCLUDE = \"exclude\";\r\n\r\nfunction getColumnIdentifier(column) {\r\n return column.dataField || column.name\r\n}\r\n\r\nfunction checkForErrors(columns) {\r\n columns.forEach(function(column) {\r\n var identifier = getColumnIdentifier(column);\r\n if (!(0, _type.isDefined)(identifier) && column.allowFiltering) {\r\n throw new _ui.default.Error(\"E1049\", column.caption)\r\n }\r\n })\r\n}\r\nvar FilterSyncController = _uiGrid_core.default.Controller.inherit(function() {\r\n var getEmptyFilterValues = function() {\r\n return {\r\n filterType: FILTER_TYPES_INCLUDE,\r\n filterValues: void 0\r\n }\r\n };\r\n var canSyncHeaderFilterWithFilterRow = function(column) {\r\n return !_filtering.default.getGroupInterval(column) && !(column.headerFilter && column.headerFilter.dataSource)\r\n };\r\n var getHeaderFilterFromCondition = function(headerFilterCondition, column) {\r\n if (!headerFilterCondition) {\r\n return getEmptyFilterValues()\r\n }\r\n var filterType;\r\n var selectedFilterOperation = headerFilterCondition[1];\r\n var value = headerFilterCondition[2];\r\n var hasArrayValue = Array.isArray(value);\r\n if (!hasArrayValue) {\r\n if (!canSyncHeaderFilterWithFilterRow(column)) {\r\n return getEmptyFilterValues()\r\n }\r\n }\r\n switch (selectedFilterOperation) {\r\n case \"anyof\":\r\n case \"=\":\r\n filterType = FILTER_TYPES_INCLUDE;\r\n break;\r\n case \"noneof\":\r\n case \"<>\":\r\n filterType = FILTER_TYPES_EXCLUDE;\r\n break;\r\n default:\r\n return getEmptyFilterValues()\r\n }\r\n return {\r\n filterType: filterType,\r\n filterValues: hasArrayValue ? value : [value]\r\n }\r\n };\r\n var getConditionFromFilterRow = function(column) {\r\n var value = column.filterValue;\r\n if ((0, _type.isDefined)(value)) {\r\n var operation = column.selectedFilterOperation || column.defaultFilterOperation || (0, _utils.getDefaultOperation)(column);\r\n var filter = [getColumnIdentifier(column), operation, column.filterValue];\r\n return filter\r\n } else {\r\n return null\r\n }\r\n };\r\n var getConditionFromHeaderFilter = function(column) {\r\n var selectedOperation;\r\n var value;\r\n var filterValues = column.filterValues;\r\n if (!filterValues) {\r\n return null\r\n }\r\n if (canSyncHeaderFilterWithFilterRow(column) && 1 === column.filterValues.length && !Array.isArray(filterValues[0])) {\r\n column.filterType === FILTER_TYPES_EXCLUDE ? selectedOperation = \"<>\" : selectedOperation = \"=\";\r\n value = filterValues[0]\r\n } else {\r\n column.filterType === FILTER_TYPES_EXCLUDE ? selectedOperation = \"noneof\" : selectedOperation = \"anyof\";\r\n value = filterValues\r\n }\r\n return [getColumnIdentifier(column), selectedOperation, value]\r\n };\r\n var updateHeaderFilterCondition = function(columnsController, column, headerFilterCondition) {\r\n var headerFilter = getHeaderFilterFromCondition(headerFilterCondition, column);\r\n columnsController.columnOption(getColumnIdentifier(column), headerFilter)\r\n };\r\n var updateFilterRowCondition = function(columnsController, column, condition) {\r\n var filterRowOptions;\r\n var selectedFilterOperation = condition && condition[1];\r\n var filterOperations = column.filterOperations || column.defaultFilterOperations;\r\n if ((!filterOperations || filterOperations.indexOf(selectedFilterOperation) >= 0 || selectedFilterOperation === column.defaultFilterOperation) && FILTER_ROW_OPERATIONS.indexOf(selectedFilterOperation) >= 0) {\r\n if (selectedFilterOperation === column.defaultFilterOperation && !(0, _type.isDefined)(column.selectedFilterOperation)) {\r\n selectedFilterOperation = column.selectedFilterOperation\r\n }\r\n filterRowOptions = {\r\n filterValue: condition[2],\r\n selectedFilterOperation: selectedFilterOperation\r\n }\r\n } else {\r\n filterRowOptions = {\r\n filterValue: void 0,\r\n selectedFilterOperation: void 0\r\n }\r\n }\r\n columnsController.columnOption(getColumnIdentifier(column), filterRowOptions)\r\n };\r\n return {\r\n syncFilterValue: function() {\r\n var that = this;\r\n var columnsController = that.getController(\"columns\");\r\n var columns = columnsController.getFilteringColumns();\r\n this._skipSyncColumnOptions = true;\r\n columns.forEach(function(column) {\r\n var filterConditions = (0, _utils.getMatchedConditions)(that.option(\"filterValue\"), getColumnIdentifier(column));\r\n if (1 === filterConditions.length) {\r\n var filterCondition = filterConditions[0];\r\n updateHeaderFilterCondition(columnsController, column, filterCondition);\r\n updateFilterRowCondition(columnsController, column, filterCondition)\r\n } else {\r\n (0, _type.isDefined)(column.filterValues) && updateHeaderFilterCondition(columnsController, column);\r\n (0, _type.isDefined)(column.filterValue) && updateFilterRowCondition(columnsController, column)\r\n }\r\n });\r\n this._skipSyncColumnOptions = false\r\n },\r\n _initSync: function() {\r\n var columns = this.getController(\"columns\").getColumns();\r\n var dataController = this.getController(\"data\");\r\n var pageIndex = dataController.pageIndex();\r\n checkForErrors(columns);\r\n if (!this.option(\"filterValue\")) {\r\n var filteringColumns = this.getController(\"columns\").getFilteringColumns();\r\n var filterValue = this.getFilterValueFromColumns(filteringColumns);\r\n this.option(\"filterValue\", filterValue)\r\n }\r\n this.syncFilterValue();\r\n dataController.pageIndex(pageIndex)\r\n },\r\n init: function() {\r\n var _this = this;\r\n var dataController = this.getController(\"data\");\r\n if (dataController.isFilterSyncActive()) {\r\n if (this.getController(\"columns\").isAllDataTypesDefined()) {\r\n this._initSync()\r\n } else {\r\n dataController.dataSourceChanged.add(function() {\r\n return _this._initSync()\r\n })\r\n }\r\n }\r\n },\r\n _getSyncFilterRow: function(filterValue, column) {\r\n var filter = getConditionFromFilterRow(column);\r\n if ((0, _type.isDefined)(filter)) {\r\n return (0, _utils.syncFilters)(filterValue, filter)\r\n } else {\r\n return (0, _utils.removeFieldConditionsFromFilter)(filterValue, getColumnIdentifier(column))\r\n }\r\n },\r\n _getSyncHeaderFilter: function(filterValue, column) {\r\n var filter = getConditionFromHeaderFilter(column);\r\n if (filter) {\r\n return (0, _utils.syncFilters)(filterValue, filter)\r\n } else {\r\n return (0, _utils.removeFieldConditionsFromFilter)(filterValue, getColumnIdentifier(column))\r\n }\r\n },\r\n getFilterValueFromColumns: function(columns) {\r\n if (!this.getController(\"data\").isFilterSyncActive()) {\r\n return null\r\n }\r\n var filterValue = [\"and\"];\r\n columns && columns.forEach(function(column) {\r\n var headerFilter = getConditionFromHeaderFilter(column);\r\n var filterRow = getConditionFromFilterRow(column);\r\n headerFilter && (0, _utils.addItem)(headerFilter, filterValue);\r\n filterRow && (0, _utils.addItem)(filterRow, filterValue)\r\n });\r\n return (0, _utils.getNormalizedFilter)(filterValue)\r\n },\r\n syncFilterRow: function(column, value) {\r\n this.option(\"filterValue\", this._getSyncFilterRow(this.option(\"filterValue\"), column))\r\n },\r\n syncHeaderFilter: function(column) {\r\n this.option(\"filterValue\", this._getSyncHeaderFilter(this.option(\"filterValue\"), column))\r\n },\r\n getCustomFilterOperations: function() {\r\n var filterBuilderCustomOperations = this.option(\"filterBuilder.customOperations\") || [];\r\n return [(0, _uiGrid_core3.anyOf)(this.component), (0, _uiGrid_core3.noneOf)(this.component)].concat(filterBuilderCustomOperations)\r\n },\r\n publicMethods: function() {\r\n return [\"getCustomFilterOperations\"]\r\n }\r\n }\r\n}());\r\nvar DataControllerFilterSyncExtender = {\r\n isFilterSyncActive: function() {\r\n var filterSyncEnabledValue = this.option(\"filterSyncEnabled\");\r\n return \"auto\" === filterSyncEnabledValue ? this.option(\"filterPanel.visible\") : filterSyncEnabledValue\r\n },\r\n skipCalculateColumnFilters: function() {\r\n return (0, _type.isDefined)(this.option(\"filterValue\")) && this.isFilterSyncActive()\r\n },\r\n _calculateAdditionalFilter: function() {\r\n var that = this;\r\n if (false === that.option(\"filterPanel.filterEnabled\")) {\r\n return that.callBase()\r\n }\r\n var filters = [that.callBase()];\r\n var columns = that.getController(\"columns\").getFilteringColumns();\r\n var filterValue = that.option(\"filterValue\");\r\n if (that.isFilterSyncActive()) {\r\n var currentColumn = that.getController(\"headerFilter\").getCurrentColumn();\r\n if (currentColumn && filterValue) {\r\n filterValue = (0, _utils.removeFieldConditionsFromFilter)(filterValue, getColumnIdentifier(currentColumn))\r\n }\r\n }\r\n var customOperations = that.getController(\"filterSync\").getCustomFilterOperations();\r\n var calculatedFilterValue = (0, _utils.getFilterExpression)(filterValue, columns, customOperations, \"filterBuilder\");\r\n if (calculatedFilterValue) {\r\n filters.push(calculatedFilterValue)\r\n }\r\n return _uiGrid_core2.default.combineFilters(filters)\r\n },\r\n _parseColumnPropertyName: function(fullName) {\r\n var matched = fullName.match(/.*\\.(.*)/);\r\n return matched[1]\r\n },\r\n clearFilter: function(filterName) {\r\n this.component.beginUpdate();\r\n if (arguments.length > 0) {\r\n if (\"filterValue\" === filterName) {\r\n this.option(\"filterValue\", null)\r\n }\r\n this.callBase(filterName)\r\n } else {\r\n this.option(\"filterValue\", null);\r\n this.callBase()\r\n }\r\n this.component.endUpdate()\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"filterValue\":\r\n this._applyFilter();\r\n this.isFilterSyncActive() && this.getController(\"filterSync\").syncFilterValue();\r\n args.handled = true;\r\n break;\r\n case \"filterSyncEnabled\":\r\n args.handled = true;\r\n break;\r\n case \"columns\":\r\n if (this.isFilterSyncActive()) {\r\n var column = this.getController(\"columns\").getColumnByPath(args.fullName);\r\n var filterSyncController = this.getController(\"filterSync\");\r\n if (column && !filterSyncController._skipSyncColumnOptions) {\r\n var propertyName = this._parseColumnPropertyName(args.fullName);\r\n filterSyncController._skipSyncColumnOptions = true;\r\n if (\"filterType\" === propertyName) {\r\n if (FILTER_TYPES_EXCLUDE === args.value || FILTER_TYPES_EXCLUDE === args.previousValue) {\r\n filterSyncController.syncHeaderFilter(column)\r\n }\r\n } else {\r\n if (\"filterValues\" === propertyName) {\r\n filterSyncController.syncHeaderFilter(column)\r\n } else {\r\n if ([\"filterValue\", \"selectedFilterOperation\"].indexOf(propertyName) > -1) {\r\n filterSyncController.syncFilterRow(column, column.filterValue)\r\n }\r\n }\r\n }\r\n filterSyncController._skipSyncColumnOptions = false\r\n }\r\n }\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n};\r\nvar ColumnHeadersViewFilterSyncExtender = {\r\n _isHeaderFilterEmpty: function(column) {\r\n if (this.getController(\"data\").isFilterSyncActive()) {\r\n return !(0, _utils.filterHasField)(this.option(\"filterValue\"), getColumnIdentifier(column))\r\n }\r\n return this.callBase(column)\r\n },\r\n _needUpdateFilterIndicators: function() {\r\n return !this.getController(\"data\").isFilterSyncActive()\r\n },\r\n optionChanged: function(args) {\r\n if (\"filterValue\" === args.name) {\r\n this._updateHeaderFilterIndicators()\r\n } else {\r\n this.callBase(args)\r\n }\r\n }\r\n};\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n filterValue: null,\r\n filterSyncEnabled: \"auto\"\r\n }\r\n },\r\n controllers: {\r\n filterSync: FilterSyncController\r\n },\r\n extenders: {\r\n controllers: {\r\n data: DataControllerFilterSyncExtender\r\n },\r\n views: {\r\n columnHeadersView: ColumnHeadersViewFilterSyncExtender\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.virtual_columns.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.virtual_columns\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"virtualColumns\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (exporter/excel_format_converter.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _string = require(\"../core/utils/string\");\r\nvar _number = _interopRequireDefault(require(\"../localization/number\"));\r\nvar _date = _interopRequireDefault(require(\"../localization/date\"));\r\nvar _type = require(\"../core/utils/type\");\r\nvar _date2 = require(\"../localization/ldml/date.format\");\r\nvar _language_codes = require(\"../localization/language_codes\");\r\nrequire(\"../localization/currency\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\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 SLASH_REGEXP = /\\//g;\r\nvar SQUARE_OPEN_BRACKET_REGEXP = /\\[/g;\r\nvar SQUARE_CLOSE_BRACKET_REGEXP = /]/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.replace(SLASH_REGEXP, \"\\\\/\").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\").replace(SQUARE_OPEN_BRACKET_REGEXP, \"\\\\[\").replace(SQUARE_CLOSE_BRACKET_REGEXP, \"\\\\]\")\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 = (_date.default.format(new Date(2009, 8, 8, 6, 5, 4), format) || \"\").toString();\r\n var result = (0, _date2.getFormat)(function(value) {\r\n return _date.default.format(value, format)\r\n });\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 = (0, _language_codes.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 {\r\n if (languageIDStr) {\r\n languageInfo = \"[$-\" + languageIDStr + \"]\"\r\n }\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 = _number.default.getOpenXmlCurrencyFormat(currency)\r\n } else {\r\n excelFormat = DEFINED_NUMBER_FORMTATS[format.toLowerCase()]\r\n }\r\n if (excelFormat) {\r\n result = (0, _string.format)(excelFormat, this._applyPrecision(format, precision))\r\n }\r\n return result\r\n },\r\n convertFormat: function(format, precision, type, currency) {\r\n if ((0, _type.isDefined)(format)) {\r\n if (\"date\" === type) {\r\n return excelFormatConverter._convertDateFormat(format)\r\n } else {\r\n if ((0, _type.isString)(format) && DEFINED_NUMBER_FORMTATS[format.toLowerCase()]) {\r\n return excelFormatConverter._convertNumberFormat(format, precision, currency)\r\n }\r\n }\r\n }\r\n }\r\n};\r\nvar _default = excelFormatConverter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.filter_sync.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.filter_sync\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"filterSync\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.grouping.collapsed.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.GroupingHelper = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiData_gridGrouping = require(\"./ui.data_grid.grouping.core\");\r\nvar _uiData_grid2 = require(\"./ui.data_grid.utils\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _errors = _interopRequireDefault(require(\"../../data/errors\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\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\nvar GroupingHelper = _uiData_gridGrouping.GroupingHelper.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 {\r\n if (item.items) {\r\n processGroupItems(that, item.items, groupsCount - 1, expandedInfo, path, isCustomLoading, isLastGroupExpanded)\r\n } else {\r\n 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 }\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 fillSkipTakeInExpandedInfo(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 }\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.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 fillSkipTakeInExpandedInfo(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 loadExpandedGroups(that, options, expandedInfo, loadedGroupCount, groupLevel, data)\r\n } else {\r\n if (expandedInfo.paths.length && options.storeLoadOptions.group) {\r\n makeDataDeferred(options);\r\n loadLastLevelGroupItems(that, options, expandedInfo, data)\r\n } else {\r\n if (isDataDeferred(options.data)) {\r\n options.data.resolve(data)\r\n }\r\n }\r\n }\r\n }\r\n\r\n function loadExpandedGroups(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 (0, _iterator.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: (0, _uiData_grid2.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 (0, _deferred.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 _deferred.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 }\r\n\r\n function loadLastLevelGroupItems(that, options, expandedInfo, data) {\r\n var expandedFilters = [];\r\n var groups = options.group || [];\r\n (0, _iterator.each)(expandedInfo.paths, function(_, expandedPath) {\r\n expandedFilters.push((0, _uiData_grid2.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 = _uiData_grid.default.combineFilters([filter, _uiData_grid.default.combineFilters(expandedFilters, \"or\")])\r\n }\r\n var loadOptions = (0, _extend.extend)({}, options.storeLoadOptions, {\r\n requireTotalCount: false,\r\n requireGroupCount: false,\r\n group: null,\r\n sort: groups.concat(_uiData_grid.default.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 }(0, _deferred.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 }(0, _iterator.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 }\r\n var loadGroupTotalCount = function(dataSource, options) {\r\n var d = new _deferred.Deferred;\r\n var isGrouping = !!(options.group && options.group.length);\r\n var loadOptions = (0, _extend.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(_errors.default.errors.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 that = this;\r\n var isVirtualPaging = that._isVirtualPaging();\r\n var pageSize = that._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(that, 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 {\r\n if (totalOffset + groupInfoCount >= options.skip + take) {\r\n takes.unshift(take + skip - groupInfo.childrenTotalCount)\r\n }\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 that = this;\r\n var groupInfo = that.findGroupInfo(path);\r\n var dataSource = that._dataSource;\r\n var remoteGroupPaging = dataSource.remoteOperations().groupPaging;\r\n var groups = _uiData_grid.default.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: (0, _uiData_grid2.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.Deferred).resolve()\r\n }\r\n return (new _deferred.Deferred).reject()\r\n },\r\n handleDataLoading: function(options) {\r\n var that = this;\r\n var storeLoadOptions = options.storeLoadOptions;\r\n var groups = _uiData_grid.default.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 = that._dataSource.remoteOperations().paging;\r\n storeLoadOptions.group = _uiData_grid.default.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 that._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 that = this;\r\n var loadedGroupCount = _uiData_grid.default.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(that, options.data, loadedGroupCount, expandedInfo, [], options.isCustomLoading, options.storeLoadOptions.isLoadingAll)\r\n } else {\r\n if (!options.remoteOperations.paging) {\r\n that.foreachGroups(function(groupInfo) {\r\n groupInfo.count = 0\r\n })\r\n }\r\n totalCount = updateGroupInfos(that, options, options.data, loadedGroupCount);\r\n if (totalCount < 0) {\r\n options.data = (new _deferred.Deferred).reject(_ui.default.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.Deferred).reject(_errors.default.errors.Error(\"E4022\"));\r\n return\r\n }\r\n that.updateTotalItemsCount(options);\r\n if (!options.remoteOperations.paging) {\r\n that._updatePagingOptions(options)\r\n }\r\n callBase(options);\r\n if (!options.remoteOperations.paging) {\r\n that._processPaging(options, loadedGroupCount)\r\n }\r\n }\r\n loadGroupItems(that, 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 = _uiData_grid.default.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: (0, _uiData_grid2.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: (0, _uiData_gridGrouping.createOffsetFilter)(groupInfo.path, {\r\n filter: storeLoadOptions.filter,\r\n group: group\r\n }),\r\n group: group.slice(groupInfo.path.length - 1, groupInfo.path.length),\r\n select: storeLoadOptions.select\r\n });\r\n return (0, _deferred.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\nexports.GroupingHelper = GroupingHelper;\r\n","/**\r\n * DevExtreme (ui/pager.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _class = _interopRequireDefault(require(\"../core/class\"));\r\nvar _string = require(\"../core/utils/string\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _click = require(\"../events/click\");\r\nvar _pointer = _interopRequireDefault(require(\"../events/pointer\"));\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.widget\"));\r\nvar _select_box = _interopRequireDefault(require(\"./select_box\"));\r\nvar _number_box = _interopRequireDefault(require(\"./number_box\"));\r\nvar _index = require(\"../events/utils/index\");\r\nvar _accessibility = require(\"./shared/accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar PAGES_LIMITER = 4;\r\nvar PAGER_CLASS = \"dx-pager\";\r\nvar PAGER_PAGE_CLASS = \"dx-page\";\r\nvar PAGER_PAGE_CLASS_SELECTOR = \".\" + PAGER_PAGE_CLASS;\r\nvar PAGER_PAGES_CLASS = \"dx-pages\";\r\nvar LIGHT_MODE_CLASS = \"dx-light-mode\";\r\nvar LIGHT_PAGES_CLASS = \"dx-light-pages\";\r\nvar PAGER_PAGE_INDEX_CLASS = \"dx-page-index\";\r\nvar PAGER_PAGES_COUNT_CLASS = \"dx-pages-count\";\r\nvar PAGER_SELECTION_CLASS = \"dx-selection\";\r\nvar PAGER_PAGE_SEPARATOR_CLASS = \"dx-separator\";\r\nvar PAGER_PAGE_SIZES_CLASS = \"dx-page-sizes\";\r\nvar PAGER_PAGE_SIZE_CLASS = \"dx-page-size\";\r\nvar PAGER_PAGE_SIZE_CLASS_SELECTOR = \".\" + PAGER_PAGE_SIZE_CLASS;\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\nvar PAGER_INFO_CLASS = \"dx-info\";\r\nvar PAGER_INFO_TEXT_CLASS = \"dx-info-text\";\r\nvar PAGER_BUTTON_DISABLE_CLASS = \"dx-button-disable\";\r\nvar Page = _class.default.inherit({\r\n ctor: function(value, index) {\r\n var that = this;\r\n that.index = index;\r\n that._$page = (0, _renderer.default)(\"
\").text(value).addClass(PAGER_PAGE_CLASS)\r\n },\r\n value: function(_value) {\r\n var that = this;\r\n if ((0, _type.isDefined)(_value)) {\r\n that._$page.text(_value)\r\n } else {\r\n var text = that._$page.text();\r\n if ((0, _type.isNumeric)(text)) {\r\n return parseInt(text)\r\n } else {\r\n return text\r\n }\r\n }\r\n },\r\n element: function() {\r\n return this._$page\r\n },\r\n select: function(value) {\r\n this._$page.toggleClass(PAGER_SELECTION_CLASS, value)\r\n },\r\n render: function(rootElement, rtlEnabled) {\r\n rtlEnabled ? this._$page.prependTo(rootElement) : this._$page.appendTo(rootElement)\r\n }\r\n});\r\nvar Pager = _ui.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n visible: true,\r\n pagesNavigatorVisible: \"auto\",\r\n pageIndex: 1,\r\n maxPagesCount: 10,\r\n pageCount: 10,\r\n totalCount: 0,\r\n pageSize: 5,\r\n showPageSizes: true,\r\n pageSizes: [5, 10],\r\n hasKnownLastPage: true,\r\n showNavigationButtons: false,\r\n showInfo: false,\r\n infoText: _message.default.getFormatter(\"dxPager-infoText\"),\r\n pagesCountText: _message.default.getFormatter(\"dxPager-pagesCountText\"),\r\n rtlEnabled: false,\r\n lightModeEnabled: false,\r\n pageIndexChanged: _common.noop,\r\n pageSizeChanged: _common.noop\r\n })\r\n },\r\n _toggleVisibility: function(value) {\r\n var $element = this.$element();\r\n if ($element) {\r\n $element.css(\"display\", value ? \"\" : \"none\")\r\n }\r\n },\r\n _getPages: function(currentPage, count) {\r\n var pages = [];\r\n var showMoreButton = !this.option(\"hasKnownLastPage\");\r\n var firstValue;\r\n var i;\r\n if (count > 0 || showMoreButton) {\r\n if (count <= this.option(\"maxPagesCount\")) {\r\n for (i = 1; i <= count; i++) {\r\n pages.push(new Page(i, i - 1))\r\n }\r\n if (showMoreButton) {\r\n pages.push(new Page(\">\", i - 1))\r\n }\r\n } else {\r\n pages.push(new Page(1, 0));\r\n firstValue = currentPage ? currentPage.value() - currentPage.index : 1;\r\n for (i = 1; i <= PAGES_LIMITER; i++) {\r\n pages.push(new Page(firstValue + i, i))\r\n }\r\n pages.push(new Page(count, PAGES_LIMITER + 1));\r\n if (showMoreButton) {\r\n pages.push(new Page(\">\", PAGES_LIMITER + 1))\r\n }\r\n }\r\n }\r\n return pages\r\n },\r\n _getPageByValue: function(value) {\r\n var that = this;\r\n var page;\r\n var i;\r\n for (i = 0; i < that._pages.length; i++) {\r\n page = that._pages[i];\r\n if (page.value() === value) {\r\n return page\r\n }\r\n }\r\n },\r\n _processSelectedPage: function(maxPagesCount, pageIndex, pageCount) {\r\n var that = this;\r\n var isPageIndexValid = false;\r\n var selectedPageIndex;\r\n if (that._pages) {\r\n (0, _iterator.each)(that._pages, function(key, page) {\r\n if (pageIndex === page.value()) {\r\n isPageIndexValid = true\r\n }\r\n });\r\n if (!isPageIndexValid) {\r\n that.selectedPage = null\r\n }\r\n }\r\n if ((0, _type.isDefined)(that.selectedPage)) {\r\n if (pageIndex === pageCount && pageCount > maxPagesCount && that.selectedPage.index !== PAGES_LIMITER + 1) {\r\n that.selectedPage.index = PAGES_LIMITER + 1\r\n }\r\n } else {\r\n if (pageIndex > PAGES_LIMITER && pageIndex < pageCount) {\r\n selectedPageIndex = pageCount - PAGES_LIMITER < pageIndex ? PAGES_LIMITER - (pageCount - pageIndex) + 1 : 2;\r\n that.selectedPage = new Page(pageIndex, selectedPageIndex)\r\n }\r\n }\r\n },\r\n _selectPageByValue: function(value) {\r\n var that = this;\r\n var i;\r\n var page = that._getPageByValue(value);\r\n var pages = that._pages;\r\n var pagesLength = pages.length;\r\n var nextPage;\r\n var morePage;\r\n if (!(0, _type.isDefined)(page)) {\r\n return\r\n }\r\n var prevPage = that._pages[page.index - 1];\r\n nextPage = that._pages[page.index + 1];\r\n if (nextPage && \">\" === nextPage.value()) {\r\n morePage = nextPage;\r\n nextPage = void 0;\r\n pagesLength--;\r\n pages.pop()\r\n }\r\n if (that.selectedPage) {\r\n that.selectedPage.select(false)\r\n }\r\n page.select(true);\r\n that.selectedPage = page;\r\n if (nextPage && nextPage.value() - value > 1) {\r\n if (0 !== page.index) {\r\n prevPage.value(value + 1);\r\n that._pages.splice(page.index, 1);\r\n that._pages.splice(page.index - 1, 0, page);\r\n that._pages[page.index].index = page.index;\r\n page.index = page.index - 1;\r\n for (i = page.index - 1; i > 0; i--) {\r\n that._pages[i].value(that._pages[i + 1].value() - 1)\r\n }\r\n } else {\r\n for (i = 0; i < pagesLength - 1; i++) {\r\n that._pages[i].value(i + 1)\r\n }\r\n }\r\n }\r\n if (prevPage && value - prevPage.value() > 1) {\r\n if (page.index !== pagesLength - 1) {\r\n nextPage.value(value - 1);\r\n that._pages.splice(page.index, 1);\r\n that._pages.splice(page.index + 1, 0, page);\r\n that._pages[page.index].index = page.index;\r\n page.index = page.index + 1;\r\n for (i = page.index + 1; i < pagesLength - 1; i++) {\r\n that._pages[i].value(that._pages[i - 1].value() + 1)\r\n }\r\n } else {\r\n for (i = 1; i <= pagesLength - 2; i++) {\r\n that._pages[pagesLength - 1 - i].value(that._pages[pagesLength - 1].value() - i)\r\n }\r\n }\r\n }\r\n if (morePage) {\r\n pages.push(morePage)\r\n }\r\n },\r\n _updatePagesTabIndices: function() {\r\n var _this = this;\r\n var $selectedPage = this.selectedPage._$page;\r\n var updatePageIndices = function updatePageIndices() {\r\n var buttons = (0, _renderer.default)(_this.element()).find(\"[role=button]:not(.dx-button-disable)\");\r\n (0, _iterator.each)(buttons, function(_, element) {\r\n return (0, _renderer.default)(element).attr(\"tabindex\", 0)\r\n });\r\n _events_engine.default.off($selectedPage, \"focus\", updatePageIndices)\r\n };\r\n _events_engine.default.on($selectedPage, \"focus\", updatePageIndices)\r\n },\r\n _nextPage: function(direction) {\r\n var pageIndex = this.option(\"pageIndex\");\r\n var pageCount = this.option(\"pageCount\");\r\n if ((0, _type.isDefined)(pageIndex)) {\r\n pageIndex = \"next\" === direction ? ++pageIndex : --pageIndex;\r\n if (pageIndex > 0 && pageIndex <= pageCount) {\r\n this.option(\"pageIndex\", pageIndex)\r\n }\r\n }\r\n },\r\n _wrapClickAction: function(action) {\r\n var _this2 = this;\r\n return function(e) {\r\n if (\"dxpointerup\" === e.type) {\r\n _this2._pointerUpHappened = true\r\n } else {\r\n if (_this2._pointerUpHappened) {\r\n _this2._pointerUpHappened = false;\r\n return\r\n }\r\n }\r\n action({\r\n event: e\r\n })\r\n }\r\n },\r\n _renderPages: function(pages) {\r\n var that = this;\r\n var $separator;\r\n var pagesLength = pages.length;\r\n var clickPagesIndexAction = that._createAction(function(args) {\r\n var e = args.event;\r\n var pageNumber = (0, _renderer.default)(e.target).text();\r\n var pageIndex = \">\" === pageNumber ? that.option(\"pageCount\") + 1 : Number(pageNumber);\r\n that.option(\"pageIndex\", pageIndex)\r\n });\r\n var page;\r\n if (pagesLength > 1) {\r\n that._pageClickHandler = this._wrapClickAction(clickPagesIndexAction);\r\n _events_engine.default.on(that._$pagesChooser, (0, _index.addNamespace)([_pointer.default.up, _click.name], that.Name + \"Pages\"), PAGER_PAGE_CLASS_SELECTOR, that._pageClickHandler);\r\n (0, _accessibility.registerKeyboardAction)(\"pager\", that, that._$pagesChooser, PAGER_PAGE_CLASS_SELECTOR, clickPagesIndexAction)\r\n }\r\n for (var i = 0; i < pagesLength; i++) {\r\n page = pages[i];\r\n page.render(that._$pagesChooser, that.option(\"rtlEnabled\"));\r\n that.setAria({\r\n role: \"button\",\r\n label: \"Page \" + page.value()\r\n }, page.element());\r\n (0, _accessibility.setTabIndex)(that, page.element());\r\n if (pages[i + 1] && pages[i + 1].value() - page.value() > 1) {\r\n $separator = (0, _renderer.default)(\"
\").text(\". . .\").addClass(PAGER_PAGE_SEPARATOR_CLASS);\r\n that.option(\"rtlEnabled\") ? $separator.prependTo(that._$pagesChooser) : $separator.appendTo(that._$pagesChooser)\r\n }\r\n }\r\n },\r\n _calculateLightPagesWidth: function($pageIndex, pageCount) {\r\n return Number($pageIndex.css(\"minWidth\").replace(\"px\", \"\")) + 10 * pageCount.toString().length\r\n },\r\n _renderLightPages: function() {\r\n var that = this;\r\n var pageCount = this.option(\"pageCount\");\r\n var pageIndex = this.option(\"pageIndex\");\r\n var clickAction = that._createAction(function() {\r\n that.option(\"pageIndex\", pageCount)\r\n });\r\n var pagesCountText = this.option(\"pagesCountText\");\r\n var $container = (0, _renderer.default)(\"
\").addClass(LIGHT_PAGES_CLASS).appendTo(this._$pagesChooser);\r\n var $pageIndex = (0, _renderer.default)(\"
\").addClass(PAGER_PAGE_INDEX_CLASS).appendTo($container);\r\n that._pageIndexEditor = that._createComponent($pageIndex, _number_box.default, {\r\n value: pageIndex,\r\n min: 1,\r\n max: pageCount,\r\n width: that._calculateLightPagesWidth($pageIndex, pageCount),\r\n onValueChanged: function(e) {\r\n if (null === e.value) {\r\n return\r\n }\r\n that.option(\"pageIndex\", e.value)\r\n }\r\n });\r\n (0, _renderer.default)(\"\").text(pagesCountText).addClass(PAGER_INFO_TEXT_CLASS + \" \" + PAGER_INFO_CLASS).appendTo($container);\r\n var $pageCount = (0, _renderer.default)(\"\").addClass(PAGER_PAGES_COUNT_CLASS).text(pageCount);\r\n _events_engine.default.on($pageCount, (0, _index.addNamespace)(_click.name, that.Name + \"PagesCount\"), function(e) {\r\n clickAction({\r\n event: e\r\n })\r\n });\r\n (0, _accessibility.registerKeyboardAction)(\"pager\", that, $pageCount, void 0, clickAction);\r\n $pageCount.appendTo($container);\r\n that.setAria({\r\n role: \"button\",\r\n label: \"Navigates to the last page\"\r\n }, $pageCount)\r\n },\r\n _renderPagesChooser: function() {\r\n var that = this;\r\n var lightModeEnabled = that.option(\"lightModeEnabled\");\r\n var pagesNavigatorVisible = that.option(\"pagesNavigatorVisible\");\r\n var $element = that.$element();\r\n that._$pagesChooser && that._$pagesChooser.remove();\r\n if (!pagesNavigatorVisible) {\r\n return\r\n }\r\n if (that._pages && 0 === that._pages.length) {\r\n that.selectedPage = null;\r\n return\r\n }\r\n that._$pagesChooser = (0, _renderer.default)(\"
\").addClass(PAGER_PAGES_CLASS).appendTo($element);\r\n if (\"auto\" === pagesNavigatorVisible) {\r\n that._$pagesChooser.css(\"visibility\", 1 === that.option(\"pageCount\") ? \"hidden\" : \"\")\r\n }\r\n if (!lightModeEnabled) {\r\n that._renderInfo()\r\n }\r\n that._renderNavigateButton(\"prev\");\r\n if (lightModeEnabled) {\r\n that._renderLightPages()\r\n } else {\r\n that._renderPages(that._pages)\r\n }\r\n that._renderNavigateButton(\"next\");\r\n that._updatePagesChooserWidth()\r\n },\r\n _renderPageSizes: function() {\r\n var that = this;\r\n var i;\r\n var pageSizes = that.option(\"pageSizes\");\r\n var pagesSizesLength = pageSizes && pageSizes.length;\r\n var pageSizeValue;\r\n var currentPageSize = that.option(\"pageSize\");\r\n var $pageSize;\r\n var clickPagesSizeAction = that._createAction(function(args) {\r\n var e = args.event;\r\n pageSizeValue = parseInt((0, _renderer.default)(e.target).text());\r\n that.option(\"pageSize\", pageSizeValue)\r\n });\r\n _events_engine.default.on(that._$pagesSizeChooser, (0, _index.addNamespace)(_click.name, that.Name + \"PageSize\"), PAGER_PAGE_SIZE_CLASS_SELECTOR, function(e) {\r\n clickPagesSizeAction({\r\n event: e\r\n })\r\n });\r\n (0, _accessibility.registerKeyboardAction)(\"pager\", that, that._$pagesSizeChooser, PAGER_PAGE_SIZE_CLASS_SELECTOR, clickPagesSizeAction);\r\n for (i = 0; i < pagesSizesLength; i++) {\r\n $pageSize = (0, _renderer.default)(\"
\").text(pageSizes[i]).addClass(PAGER_PAGE_SIZE_CLASS);\r\n that.setAria({\r\n role: \"button\",\r\n label: \"Display \" + pageSizes[i] + \" items on page\"\r\n }, $pageSize);\r\n (0, _accessibility.setTabIndex)(that, $pageSize);\r\n if (currentPageSize === pageSizes[i]) {\r\n $pageSize.addClass(PAGER_SELECTION_CLASS)\r\n }\r\n that._$pagesSizeChooser.append($pageSize)\r\n }\r\n },\r\n _calculateLightPageSizesWidth: function(pageSizes) {\r\n return Number(this._$pagesSizeChooser.css(\"minWidth\").replace(\"px\", \"\")) + 10 * Math.max.apply(Math, pageSizes).toString().length\r\n },\r\n _renderLightPageSizes: function() {\r\n var that = this;\r\n var pageSizes = that.option(\"pageSizes\");\r\n var $editor = (0, _renderer.default)(\"
\").appendTo(that._$pagesSizeChooser);\r\n that._pageSizeEditor = that._createComponent($editor, _select_box.default, {\r\n dataSource: pageSizes,\r\n value: that.option(\"pageSize\"),\r\n onSelectionChanged: function(e) {\r\n that.option(\"pageSize\", e.selectedItem)\r\n },\r\n width: that._calculateLightPageSizesWidth(pageSizes)\r\n })\r\n },\r\n _renderPagesSizeChooser: function() {\r\n var that = this;\r\n var pageSizes = that.option(\"pageSizes\");\r\n var showPageSizes = that.option(\"showPageSizes\");\r\n var pagesSizesLength = pageSizes && pageSizes.length;\r\n var $element = that.$element();\r\n that._$pagesSizeChooser && that._$pagesSizeChooser.remove();\r\n if (!showPageSizes || !pagesSizesLength) {\r\n return\r\n }\r\n that._$pagesSizeChooser = (0, _renderer.default)(\"
\").addClass(PAGER_PAGE_SIZES_CLASS).appendTo($element);\r\n if (that.option(\"lightModeEnabled\")) {\r\n that._renderLightPageSizes()\r\n } else {\r\n that._renderPageSizes()\r\n }\r\n that._pagesSizeChooserWidth = that._$pagesSizeChooser.width()\r\n },\r\n _renderInfo: function() {\r\n var infoText = this.option(\"infoText\");\r\n if (this.option(\"showInfo\") && (0, _type.isDefined)(infoText)) {\r\n this._$info = (0, _renderer.default)(\"
\").css(\"display\", this._isInfoHide ? \"none\" : \"\").addClass(PAGER_INFO_CLASS).text((0, _string.format)(infoText, this.selectedPage && this.selectedPage.value(), this.option(\"pageCount\"), this.option(\"totalCount\"))).appendTo(this._$pagesChooser);\r\n if (!this._isInfoHide) {\r\n this._infoWidth = this._$info.outerWidth(true)\r\n }\r\n }\r\n },\r\n _renderNavigateButton: function(direction) {\r\n var that = this;\r\n var clickAction = that._createAction(function() {\r\n that._nextPage(direction)\r\n });\r\n var $button;\r\n if (that.option(\"showNavigationButtons\") || that.option(\"lightModeEnabled\")) {\r\n $button = (0, _renderer.default)(\"
\").addClass(PAGER_NAVIGATE_BUTTON);\r\n _events_engine.default.on($button, (0, _index.addNamespace)([_pointer.default.up, _click.name], that.Name + \"Pages\"), that._wrapClickAction(clickAction));\r\n (0, _accessibility.registerKeyboardAction)(\"pager\", that, $button, void 0, clickAction);\r\n that.setAria({\r\n role: \"button\",\r\n label: \"prev\" === direction ? \"Previous page\" : \" Next page\"\r\n }, $button);\r\n (0, _accessibility.setTabIndex)(that, $button);\r\n if (that.option(\"rtlEnabled\")) {\r\n $button.addClass(\"prev\" === direction ? PAGER_NEXT_BUTTON_CLASS : PAGER_PREV_BUTTON_CLASS);\r\n $button.prependTo(this._$pagesChooser)\r\n } else {\r\n $button.addClass(\"prev\" === direction ? PAGER_PREV_BUTTON_CLASS : PAGER_NEXT_BUTTON_CLASS);\r\n $button.appendTo(this._$pagesChooser)\r\n }\r\n }\r\n },\r\n _renderContentImpl: function() {\r\n this.$element().toggleClass(LIGHT_MODE_CLASS, this.option(\"lightModeEnabled\"));\r\n this._toggleVisibility(this.option(\"visible\"));\r\n this._updatePageSizes(true);\r\n this._updatePages(true);\r\n (0, _accessibility.restoreFocus)(this)\r\n },\r\n _initMarkup: function() {\r\n var $element = this.$element();\r\n $element.addClass(PAGER_CLASS);\r\n var $pageSize = (0, _renderer.default)(\"
\").addClass(PAGER_PAGE_CLASS);\r\n this._$pagesChooser = (0, _renderer.default)(\"
\").addClass(PAGER_PAGES_CLASS).append($pageSize).appendTo($element)\r\n },\r\n _render: function() {\r\n this.option().lightModeEnabled = false;\r\n this.callBase();\r\n this._updateLightMode()\r\n },\r\n _updatePageSizes: function(forceRender) {\r\n var lightModeEnabled = this.option(\"lightModeEnabled\");\r\n var pageSize = this.option(\"pageSize\");\r\n var pageSizes = this.option(\"pageSizes\");\r\n if (lightModeEnabled) {\r\n this._pageSizeEditor && this._pageSizeEditor.option({\r\n value: pageSize,\r\n dataSource: pageSizes,\r\n width: this._calculateLightPageSizesWidth(pageSizes)\r\n })\r\n }\r\n if (!lightModeEnabled || forceRender) {\r\n this._renderPagesSizeChooser()\r\n }\r\n },\r\n _updatePages: function(forceRender) {\r\n var pageCount = this.option(\"pageCount\");\r\n var pageIndex = this.option(\"pageIndex\");\r\n var lightModeEnabled = this.option(\"lightModeEnabled\");\r\n if (!lightModeEnabled) {\r\n this._processSelectedPage(this.option(\"maxPagesCount\"), pageIndex, pageCount);\r\n this._pages = this._getPages(this.selectedPage, pageCount);\r\n this._selectPageByValue(pageIndex)\r\n } else {\r\n this._pageIndexEditor && this._pageIndexEditor.option({\r\n value: pageIndex,\r\n width: this._calculateLightPagesWidth(this._pageIndexEditor.$element(), pageCount)\r\n })\r\n }\r\n if (!lightModeEnabled || forceRender) {\r\n this._renderPagesChooser()\r\n }\r\n this._updateButtonsState(pageIndex)\r\n },\r\n _isPageIndexInvalid: function(direction, pageIndex) {\r\n var isNextDirection = \"next\" === direction;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n if (rtlEnabled && isNextDirection || !rtlEnabled && !isNextDirection) {\r\n return pageIndex <= 1\r\n }\r\n return pageIndex >= this.option(\"pageCount\")\r\n },\r\n _updateButtonsState: function(pageIndex) {\r\n var nextButton = this.$element().find(\".\" + PAGER_NEXT_BUTTON_CLASS);\r\n var prevButton = this.$element().find(\".\" + PAGER_PREV_BUTTON_CLASS);\r\n nextButton.toggleClass(PAGER_BUTTON_DISABLE_CLASS, this._isPageIndexInvalid(\"next\", pageIndex));\r\n prevButton.toggleClass(PAGER_BUTTON_DISABLE_CLASS, this._isPageIndexInvalid(\"prev\", pageIndex))\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"visible\":\r\n this._toggleVisibility(args.value);\r\n break;\r\n case \"pageIndex\":\r\n var pageIndexChanged = this.option(\"pageIndexChanged\");\r\n if (pageIndexChanged) {\r\n pageIndexChanged(args.value)\r\n }\r\n this._updatePages();\r\n break;\r\n case \"maxPagesCount\":\r\n case \"pageCount\":\r\n case \"totalCount\":\r\n case \"hasKnownLastPage\":\r\n case \"pagesNavigatorVisible\":\r\n case \"showNavigationButtons\":\r\n this._updatePages();\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 this._updatePageSizes();\r\n break;\r\n case \"pageSizes\":\r\n this._updatePageSizes();\r\n break;\r\n case \"lightModeEnabled\":\r\n this._renderContentImpl();\r\n !args.value && this._updateLightMode();\r\n break;\r\n default:\r\n this._invalidate()\r\n }\r\n },\r\n _clean: function() {\r\n if (this._$pagesChooser) {\r\n _events_engine.default.off(this._$pagesChooser, (0, _index.addNamespace)([_pointer.default.up, _click.name], this.Name + \"Pages\"), PAGER_PAGE_CLASS_SELECTOR, this._pageClickHandler);\r\n (0, _accessibility.registerKeyboardAction)(\"pager\", this, this._$pagesChooser, PAGER_PAGE_CLASS_SELECTOR, this._pageKeyDownHandler)\r\n }\r\n this.callBase()\r\n },\r\n _getMinPagerWidth: function() {\r\n var pagesChooserWidth = (0, _type.isDefined)(this._pagesChooserWidth) ? this._pagesChooserWidth : 0;\r\n var pagesSizeChooserWidth = (0, _type.isDefined)(this._pagesSizeChooserWidth) ? this._pagesSizeChooserWidth : 0;\r\n return pagesChooserWidth + pagesSizeChooserWidth\r\n },\r\n _updatePagesChooserWidth: (0, _common.deferUpdater)(function() {\r\n var lastPageWidth = this._pages && this._pages.length > 0 ? this._pages[this._pages.length - 1]._$page.width() : 0;\r\n this._pagesChooserWidth = this._$pagesChooser.width() + lastPageWidth\r\n }),\r\n _updateLightMode: (0, _common.deferUpdater)(function() {\r\n var that = this;\r\n var width = this.$element().width();\r\n var infoWidth = (0, _type.isDefined)(this._infoWidth) ? this._infoWidth : 0;\r\n (0, _common.deferRender)(function() {\r\n if (that._isInfoHide && width > that._getMinPagerWidth() + infoWidth) {\r\n that._$info.show();\r\n that._updatePagesChooserWidth();\r\n that._isInfoHide = false\r\n }\r\n if (!that._isInfoHide && width > that._getMinPagerWidth() - infoWidth && width < that._getMinPagerWidth()) {\r\n that._$info.hide();\r\n that._updatePagesChooserWidth();\r\n that._isInfoHide = true\r\n }(0, _common.deferUpdate)(function() {\r\n (0, _common.deferRender)(function() {\r\n if (that.option(\"lightModeEnabled\") && width > that._previousWidth) {\r\n that.option(\"lightModeEnabled\", false)\r\n } else {\r\n if (width < that._getMinPagerWidth()) {\r\n that.option(\"lightModeEnabled\", true)\r\n }\r\n }\r\n that._previousWidth = width\r\n })\r\n })\r\n })\r\n }),\r\n _dimensionChanged: function() {\r\n this._updateLightMode()\r\n },\r\n getHeight: function() {\r\n return this.option(\"visible\") ? this.$element().outerHeight() : 0\r\n }\r\n});\r\nvar _default = Pager;\r\nexports.default = _default;\r\n(0, _component_registrator.default)(\"dxPager\", Pager);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.rows.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.RowsView = void 0;\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.rows\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar RowsView = _uiGrid_core.default.views.rowsView;\r\nexports.RowsView = RowsView;\r\n_uiData_grid.default.registerModule(\"rows\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.header_panel.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.HeaderPanel = void 0;\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.header_panel\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar HeaderPanel = _uiGrid_core.default.views.headerPanel;\r\nexports.HeaderPanel = HeaderPanel;\r\n_uiData_grid.default.registerModule(\"headerPanel\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.selection.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.selection\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"selection\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.filter_panel.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.filter_panel\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"filterPanel\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.export.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.ExportController = exports.DataProvider = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.export_mixin\"));\r\nvar _exporter = require(\"../../exporter\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _list = _interopRequireDefault(require(\"../list\"));\r\nvar _context_menu = _interopRequireDefault(require(\"../context_menu\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar 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\nvar DATA_STYLE_OFFSET = 3;\r\nvar DataProvider = _class.default.inherit({\r\n _getGroupValue: function(item) {\r\n var key = item.key,\r\n data = item.data,\r\n rowType = item.rowType,\r\n groupIndex = item.groupIndex,\r\n summaryCells = item.summaryCells;\r\n var groupColumn = this._options.groupColumns[groupIndex];\r\n var value = _uiData_grid.default.getDisplayValue(groupColumn, groupColumn.deserializeValue ? groupColumn.deserializeValue(key[groupIndex]) : key[groupIndex], data, rowType);\r\n var result = groupColumn.caption + \": \" + _uiData_grid.default.formatValue(value, groupColumn);\r\n if (summaryCells && summaryCells[0] && summaryCells[0].length) {\r\n result += \" \" + _uiData_grid.default.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: (0, _type.isDefined)(excelWrapTextEnabled) ? excelWrapTextEnabled : !!exportController.option(\"wordWrapEnabled\"),\r\n customizeExcelCell: exportController.option(\"export.customizeExcelCell\")\r\n }\r\n },\r\n hasCustomizeExcelCell: function() {\r\n return (0, _type.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 ((0, _type.isDefined)(this._exportController) && (0, _type.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 ctor: function(exportController, initialColumnWidthsByColumnIndex, selectedRowsOnly) {\r\n this._exportController = exportController;\r\n this._initialColumnWidthsByColumnIndex = initialColumnWidthsByColumnIndex;\r\n this._selectedRowsOnly = selectedRowsOnly\r\n },\r\n getStyles: function() {\r\n var wrapTextEnabled = this._options.wrapTextEnabled;\r\n var styles = [\"center\", \"left\", \"right\"].map(function(alignment) {\r\n return {\r\n bold: true,\r\n alignment: alignment,\r\n wrapText: true\r\n }\r\n });\r\n this.getColumns().forEach(function(column) {\r\n styles.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 styles.push({\r\n bold: true,\r\n wrapText: false,\r\n alignment: (0, _position.getDefaultAlignment)(this._options.rtlEnabled)\r\n });\r\n return styles\r\n },\r\n _getTotalCellStyleId: function(cellIndex) {\r\n var alignment = this.getColumns()[cellIndex] && this.getColumns()[cellIndex].alignment || \"right\";\r\n return [\"center\", \"left\", \"right\"].indexOf(alignment)\r\n },\r\n getStyleId: function(rowIndex, cellIndex) {\r\n if (rowIndex < this.getHeaderRowCount()) {\r\n return 0\r\n } else {\r\n if (this.isTotalCell(rowIndex - this.getHeaderRowCount(), cellIndex)) {\r\n return this._getTotalCellStyleId(cellIndex)\r\n } else {\r\n if (this.isGroupRow(rowIndex - this.getHeaderRowCount())) {\r\n return DATA_STYLE_OFFSET + this.getColumns().length\r\n } else {\r\n return cellIndex + DATA_STYLE_OFFSET\r\n }\r\n }\r\n }\r\n },\r\n getColumns: function(getColumnsByAllRows) {\r\n var columns = this._options.columns;\r\n return getColumnsByAllRows ? columns : columns[columns.length - 1]\r\n },\r\n getColumnsWidths: function() {\r\n var columns = this.getColumns();\r\n return (0, _type.isDefined)(columns) ? columns.map(function(c) {\r\n return c.width\r\n }) : 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 (0, _type.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)]) && !(0, _type.isDefined)(column.customizeText)) {\r\n return (0, _type.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 (0, _deferred.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 ((0, _type.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 result = {\r\n cellSourceData: {},\r\n value: value\r\n };\r\n var column;\r\n var value;\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 ((0, _type.isDefined)(value)) {\r\n result.cellSourceData.value = value.value;\r\n result.cellSourceData.totalSummaryItemName = value.name;\r\n result.value = _uiData_grid.default.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 \" : \"\") + _uiData_grid.default.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 = _uiData_grid.default.getDisplayValue(column, _value, item.data, item.rowType);\r\n if (!isFinite(displayValue) || (0, _type.isDefined)(column.customizeText)) {\r\n if (isExcelJS && (0, _type.isDefined)(column.customizeText) && column.customizeText === this._exportController._columnsController.getCustomizeTextByDataType(\"boolean\")) {\r\n result.value = displayValue\r\n } else {\r\n result.value = _uiData_grid.default.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 var that = this;\r\n return {\r\n x: 0,\r\n y: that.getHeaderRowCount()\r\n }\r\n }\r\n});\r\nexports.DataProvider = DataProvider;\r\nvar ExportController = _uiData_grid.default.ViewController.inherit({}).include(_uiGrid_core.default).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 = (0, _extend.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 ((0, _type.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 var _this = this;\r\n if (!column.isBand) {\r\n return\r\n }\r\n var childColumns = this._columnsController.getChildrenByBandColumn(column.index, true);\r\n if (!(0, _type.isDefined)(childColumns)) {\r\n return\r\n }\r\n return childColumns.reduce(function(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 ((0, _type.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 (0, _array.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.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 (0, _deferred.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 ((0, _type.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 var that = this;\r\n that._selectionOnly = selectionOnly;\r\n (0, _exporter.export)(that.component.getDataProvider(), {\r\n fileName: that.option(\"export.fileName\"),\r\n proxyUrl: that.option(\"export.proxyUrl\"),\r\n format: \"EXCEL\",\r\n autoFilterEnabled: !!that.option(\"export.excelFilterEnabled\"),\r\n rtlEnabled: that.option(\"rtlEnabled\"),\r\n ignoreErrors: that.option(\"export.ignoreExcelErrors\"),\r\n exportingAction: that.getAction(\"onExporting\"),\r\n exportedAction: that.getAction(\"onExported\"),\r\n fileSavingAction: that.getAction(\"onFileSaving\")\r\n }, _exporter.excel.getData)\r\n },\r\n publicMethods: function() {\r\n return [\"getDataProvider\", \"getExportFormat\", \"exportToExcel\"]\r\n },\r\n selectionOnly: function(value) {\r\n if ((0, _type.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\nexports.ExportController = ExportController;\r\n_uiData_grid.default.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: _message.default.format(\"dxDataGrid-exportTo\"),\r\n exportAll: _message.default.format(\"dxDataGrid-exportAll\"),\r\n exportSelectedRows: _message.default.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 (0, _type.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 = (0, _renderer.default)(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, (0, _renderer.default)(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, (0, _renderer.default)(container))\r\n },\r\n menuItemTemplate: function(data, index, container) {\r\n that._renderButton(data, (0, _renderer.default)(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 that = this;\r\n var buttonOptions = that._getButtonOptions(data.allowExportSelected);\r\n var $buttonContainer = that._getButtonContainer().addClass(DATAGRID_EXPORT_BUTTON_CLASS).appendTo($container);\r\n if (withText) {\r\n var wrapperNode = (0, _renderer.default)(\"
\").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 that._createComponent($buttonContainer, _button.default, 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, (0, _renderer.default)(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, (0, _renderer.default)(container), DATAGRID_EXPORT_SELECTED_ICON)\r\n },\r\n text: texts.exportSelectedRows,\r\n exportSelected: true\r\n }];\r\n that._createComponent($container, _list.default, {\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 = (0, _renderer.default)(\"
\").addClass(\"dx-icon dx-icon-\" + iconName);\r\n var $text = (0, _renderer.default)(\"\").addClass(\"dx-button-text\").text(data.text);\r\n var $content = (0, _renderer.default)(\"
\").addClass(\"dx-button-content\").append($icon).append($text);\r\n var $button = (0, _renderer.default)(\"
\").addClass(BUTTON_CLASS + \" dx-button-has-text dx-button-has-icon dx-datagrid-toolbar-button\").append($content);\r\n var $toolbarItem = (0, _renderer.default)(\"
\").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 = (0, _renderer.default)(\"
\").appendTo($buttonContainer);\r\n that._contextMenu = that._createComponent($menuContainer, _context_menu.default, {\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 (ui/data_grid/ui.data_grid.base.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _console = require(\"../../core/utils/console\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _themes = require(\"../themes\");\r\nrequire(\"./ui.data_grid.column_headers\");\r\nrequire(\"./ui.data_grid.columns_controller\");\r\nrequire(\"./ui.data_grid.data_controller\");\r\nrequire(\"./ui.data_grid.sorting\");\r\nrequire(\"./ui.data_grid.rows\");\r\nrequire(\"./ui.data_grid.context_menu\");\r\nrequire(\"./ui.data_grid.error_handling\");\r\nrequire(\"./ui.data_grid.grid_view\");\r\nrequire(\"./ui.data_grid.header_panel\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\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\n_uiData_grid.default.registerModulesOrder([\"stateStoring\", \"columns\", \"selection\", \"editorFactory\", \"columnChooser\", \"grouping\", \"editing\", \"masterDetail\", \"validating\", \"adaptivity\", \"data\", \"virtualScrolling\", \"columnHeaders\", \"filterRow\", \"headerPanel\", \"headerFilter\", \"sorting\", \"search\", \"rows\", \"pager\", \"columnsResizingReordering\", \"contextMenu\", \"keyboardNavigation\", \"errorHandling\", \"summary\", \"columnFixing\", \"export\", \"gridView\"]);\r\nvar DataGrid = _ui.default.inherit({\r\n _activeStateUnit: DATAGRID_ROW_SELECTOR,\r\n _getDefaultOptions: function() {\r\n var that = this;\r\n var result = that.callBase();\r\n (0, _iterator.each)(_uiData_grid.default.modules, function() {\r\n if ((0, _type.isFunction)(this.defaultOptions)) {\r\n (0, _extend.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 (0, _extend.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 (0, _themes.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.default.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 var that = this;\r\n that.callBase();\r\n _uiData_grid.default.processModules(that, _uiData_grid.default);\r\n _uiData_grid.default.callModuleItemsMethod(that, \"init\")\r\n },\r\n _clean: _common.noop,\r\n _optionChanged: function(args) {\r\n var that = this;\r\n _uiData_grid.default.callModuleItemsMethod(that, \"optionChanged\", [args]);\r\n if (!args.handled) {\r\n that.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 (0, _common.deferRender)(function() {\r\n that._renderContentImpl()\r\n })\r\n },\r\n _getTemplate: function(templateName) {\r\n var template = templateName;\r\n if ((0, _type.isString)(template) && \"#\" === template[0]) {\r\n template = (0, _renderer.default)(templateName);\r\n _console.logger.warn(DATAGRID_DEPRECATED_TEMPLATE_WARNING)\r\n }\r\n return this.callBase(template)\r\n },\r\n _dispose: function() {\r\n var that = this;\r\n that.callBase();\r\n _uiData_grid.default.callModuleItemsMethod(that, \"dispose\")\r\n },\r\n isReady: function() {\r\n return this.getController(\"data\").isReady()\r\n },\r\n beginUpdate: function() {\r\n var that = this;\r\n that.callBase();\r\n _uiData_grid.default.callModuleItemsMethod(that, \"beginUpdate\")\r\n },\r\n endUpdate: function() {\r\n var that = this;\r\n _uiData_grid.default.callModuleItemsMethod(that, \"endUpdate\");\r\n that.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 = _uiData_grid.default.registerModule.bind(_uiData_grid.default);\r\n(0, _component_registrator.default)(\"dxDataGrid\", DataGrid);\r\nvar _default = DataGrid;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.filter_custom_operations.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.anyOf = anyOf;\r\nexports.noneOf = noneOf;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _utils = require(\"../filter_builder/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction baseOperation(grid) {\r\n var calculateFilterExpression = function(filterValue, field, fields) {\r\n var result = [];\r\n var lastIndex = filterValue.length - 1;\r\n filterValue && filterValue.forEach(function(value, index) {\r\n if ((0, _utils.isCondition)(value) || (0, _utils.isGroup)(value)) {\r\n var filterExpression = (0, _utils.getFilterExpression)(value, fields, [], \"headerFilter\");\r\n result.push(filterExpression)\r\n } else {\r\n result.push((0, _utils.getFilterExpression)([field.dataField, \"=\", value], fields, [], \"headerFilter\"))\r\n }\r\n index !== lastIndex && result.push(\"or\")\r\n });\r\n if (1 === result.length) {\r\n result = result[0]\r\n }\r\n return result\r\n };\r\n var getFullText = function(itemText, parentText) {\r\n return parentText ? parentText + \"/\" + itemText : itemText\r\n };\r\n var getSelectedItemsTexts = function getSelectedItemsTexts(items, parentText) {\r\n var result = [];\r\n items.forEach(function(item) {\r\n if (item.items) {\r\n var selectedItemsTexts = getSelectedItemsTexts(item.items, getFullText(item.text, parentText));\r\n result = result.concat(selectedItemsTexts)\r\n }\r\n item.selected && result.push(getFullText(item.text, parentText))\r\n });\r\n return result\r\n };\r\n var headerFilterController = grid && grid.getController(\"headerFilter\");\r\n var customizeText = function(fieldInfo) {\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 = (0, _extend.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 _data_source.DataSource(dataSourceOptions);\r\n var result = new _deferred.Deferred;\r\n var key = dataSource.store().key();\r\n if (key) {\r\n dataSource.filter([key, \"=\", fieldInfo.value])\r\n }\r\n dataSource.load().done(function(items) {\r\n result.resolve(getSelectedItemsTexts(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 return {\r\n dataTypes: [\"string\", \"date\", \"datetime\", \"number\", \"boolean\", \"object\"],\r\n calculateFilterExpression: calculateFilterExpression,\r\n editorTemplate: function(conditionInfo, container) {\r\n var div = (0, _renderer.default)(\"
\").addClass(\"dx-filterbuilder-item-value-text\").appendTo(container);\r\n var column = (0, _extend.extend)(true, {}, grid.columnOption(conditionInfo.field.dataField));\r\n (0, _utils.renderValueText)(div, conditionInfo.text && conditionInfo.text.split(\"|\"));\r\n var setValue = function(value) {\r\n conditionInfo.setValue(value)\r\n };\r\n column.filterType = \"include\";\r\n column.filterValues = conditionInfo.value ? conditionInfo.value.slice() : [];\r\n headerFilterController.showHeaderFilterMenuBase({\r\n columnElement: div,\r\n column: column,\r\n apply: function() {\r\n setValue(this.filterValues);\r\n headerFilterController.hideHeaderFilterMenu();\r\n conditionInfo.closeEditor()\r\n },\r\n onHidden: function() {\r\n conditionInfo.closeEditor()\r\n },\r\n isFilterBuilder: true\r\n });\r\n return container\r\n },\r\n customizeText: customizeText\r\n }\r\n}\r\n\r\nfunction anyOf(grid) {\r\n return (0, _extend.extend)(baseOperation(grid), {\r\n name: \"anyof\",\r\n icon: \"selectall\",\r\n caption: _message.default.format(\"dxFilterBuilder-filterOperationAnyOf\")\r\n })\r\n}\r\n\r\nfunction noneOf(grid) {\r\n var baseOp = baseOperation(grid);\r\n return (0, _extend.extend)({}, baseOp, {\r\n calculateFilterExpression: function(filterValue, field, fields) {\r\n var baseFilter = baseOp.calculateFilterExpression(filterValue, field, fields);\r\n if (!baseFilter || 0 === baseFilter.length) {\r\n return null\r\n }\r\n return \"!\" === baseFilter[0] ? baseFilter : [\"!\", baseFilter]\r\n },\r\n name: \"noneof\",\r\n icon: \"unselectall\",\r\n caption: _message.default.format(\"dxFilterBuilder-filterOperationNoneOf\")\r\n })\r\n}\r\n","/**\r\n * DevExtreme (exporter/excel/excel.cell_format_helper.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _excel = _interopRequireDefault(require(\"./excel.tag_helper\"));\r\nvar _excel2 = _interopRequireDefault(require(\"./excel.cell_alignment_helper\"));\r\nvar _excel3 = _interopRequireDefault(require(\"./excel.fill_helper\"));\r\nvar _excel4 = _interopRequireDefault(require(\"./excel.font_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar cellFormatHelper = {\r\n tryCreateTag: function(sourceObj, sharedItemsContainer) {\r\n var result = null;\r\n if ((0, _type.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 (!(0, _type.isDefined)(fill)) {\r\n fill = _excel3.default.tryCreateFillFromSimpleFormat(sourceObj)\r\n }\r\n result = {\r\n numberFormatId: numberFormatId,\r\n alignment: _excel2.default.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 {\r\n if ((0, _type.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 = _excel3.default.copy(source.fill)\r\n } else {\r\n _excel3.default.copySimpleFormat(source, result)\r\n }\r\n if (void 0 !== source.alignment) {\r\n result.alignment = _excel2.default.copy(source.alignment)\r\n }\r\n if (void 0 !== source.font) {\r\n result.font = _excel4.default.copy(source.font)\r\n }\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) || (0, _type.isDefined)(leftTag) && (0, _type.isDefined)(rightTag) && leftTag.fontId === rightTag.fontId && leftTag.numberFormatId === rightTag.numberFormatId && leftTag.fillId === rightTag.fillId && _excel2.default.areEqual(leftTag.alignment, rightTag.alignment)\r\n },\r\n isEmpty: function(tag) {\r\n return !(0, _type.isDefined)(tag) || !(0, _type.isDefined)(tag.fontId) && !(0, _type.isDefined)(tag.numberFormatId) && !(0, _type.isDefined)(tag.fillId) && _excel2.default.isEmpty(tag.alignment)\r\n },\r\n toXml: function(tag) {\r\n var isAlignmentEmpty = _excel2.default.isEmpty(tag.alignment);\r\n var applyNumberFormat;\r\n if ((0, _type.isDefined)(tag.numberFormatId)) {\r\n applyNumberFormat = tag.numberFormatId > 0 ? 1 : 0\r\n }\r\n return _excel.default.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 : _excel2.default.toXml(tag.alignment))\r\n }\r\n};\r\nvar _default = cellFormatHelper;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.adaptivity.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.adaptivity\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"adaptivity\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.column_fixing.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _wheel = require(\"../../events/core/wheel\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.utils\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _translator = require(\"../../animation/translator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar CONTENT_CLASS = \"content\";\r\nvar CONTENT_FIXED_CLASS = \"content-fixed\";\r\nvar MASTER_DETAIL_CELL_CLASS = \"dx-master-detail-cell\";\r\nvar FIRST_CELL_CLASS = \"dx-first-cell\";\r\nvar LAST_CELL_CLASS = \"dx-last-cell\";\r\nvar HOVER_STATE_CLASS = \"dx-state-hover\";\r\nvar FIXED_COL_CLASS = \"dx-col-fixed\";\r\nvar FIXED_COLUMNS_CLASS = \"dx-fixed-columns\";\r\nvar POINTER_EVENTS_NONE_CLASS = \"dx-pointer-events-none\";\r\nvar COMMAND_TRANSPARENT = \"transparent\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar getTransparentColumnIndex = function(fixedColumns) {\r\n var transparentColumnIndex = -1;\r\n (0, _iterator.each)(fixedColumns, function(index, column) {\r\n if (column.command === COMMAND_TRANSPARENT) {\r\n transparentColumnIndex = index;\r\n return false\r\n }\r\n });\r\n return transparentColumnIndex\r\n};\r\nvar normalizeColumnWidths = function(fixedColumns, widths, fixedWidths) {\r\n var fixedColumnIndex = 0;\r\n if (fixedColumns && widths && fixedWidths) {\r\n for (var i = 0; i < fixedColumns.length; i++) {\r\n if (fixedColumns[i].command === COMMAND_TRANSPARENT) {\r\n fixedColumnIndex += fixedColumns[i].colspan\r\n } else {\r\n if (widths[fixedColumnIndex] < fixedWidths[i]) {\r\n widths[fixedColumnIndex] = fixedWidths[i]\r\n }\r\n fixedColumnIndex++\r\n }\r\n }\r\n }\r\n return widths\r\n};\r\nvar baseFixedColumns = {\r\n init: function() {\r\n this.callBase();\r\n this._isFixedTableRendering = false;\r\n this._isFixedColumns = false\r\n },\r\n _createCol: function(column) {\r\n return this.callBase(column).toggleClass(FIXED_COL_CLASS, !!(this._isFixedTableRendering && (column.fixed || column.command && column.command !== COMMAND_TRANSPARENT)))\r\n },\r\n _correctColumnIndicesForFixedColumns: function(fixedColumns, change) {\r\n var transparentColumnIndex = getTransparentColumnIndex(fixedColumns);\r\n var transparentColspan = fixedColumns[transparentColumnIndex].colspan;\r\n var columnIndices = change && change.columnIndices;\r\n if (columnIndices) {\r\n change.columnIndices = columnIndices.map(function(columnIndices) {\r\n if (columnIndices) {\r\n return columnIndices.map(function(columnIndex) {\r\n if (columnIndex < transparentColumnIndex) {\r\n return columnIndex\r\n } else {\r\n if (columnIndex >= transparentColumnIndex + transparentColspan) {\r\n return columnIndex - transparentColspan + 1\r\n }\r\n }\r\n return -1\r\n }).filter(function(columnIndex) {\r\n return columnIndex >= 0\r\n })\r\n }\r\n })\r\n }\r\n },\r\n _renderTable: function(options) {\r\n var that = this;\r\n var $fixedTable;\r\n var fixedColumns = that.getFixedColumns();\r\n that._isFixedColumns = !!fixedColumns.length;\r\n var $table = that.callBase(options);\r\n if (that._isFixedColumns) {\r\n that._isFixedTableRendering = true;\r\n var change = options && options.change;\r\n var columnIndices = change && change.columnIndices;\r\n that._correctColumnIndicesForFixedColumns(fixedColumns, change);\r\n $fixedTable = that._createTable(fixedColumns);\r\n that._renderRows($fixedTable, (0, _extend.extend)({}, options, {\r\n columns: fixedColumns\r\n }));\r\n that._updateContent($fixedTable, change);\r\n if (columnIndices) {\r\n change.columnIndices = columnIndices\r\n }\r\n that._isFixedTableRendering = false\r\n } else {\r\n that._fixedTableElement && that._fixedTableElement.parent().remove();\r\n that._fixedTableElement = null\r\n }\r\n return $table\r\n },\r\n _renderRow: function($table, options) {\r\n var fixedCorrection;\r\n var cells = options.row.cells;\r\n this.callBase.apply(this, arguments);\r\n if (this._isFixedTableRendering && cells && cells.length) {\r\n fixedCorrection = 0;\r\n var fixedCells = options.row.cells || [];\r\n cells = cells.slice();\r\n options.row.cells = cells;\r\n for (var i = 0; i < fixedCells.length; i++) {\r\n if (fixedCells[i].column && fixedCells[i].column.command === COMMAND_TRANSPARENT) {\r\n fixedCorrection = (fixedCells[i].column.colspan || 1) - 1;\r\n continue\r\n }\r\n cells[i + fixedCorrection] = fixedCells[i]\r\n }\r\n }\r\n },\r\n _createCell: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n var columnCommand = column && column.command;\r\n var rowType = options.rowType;\r\n var $cell = that.callBase.apply(that, arguments);\r\n var fixedColumns;\r\n var prevFixedColumn;\r\n var transparentColumnIndex;\r\n if (that._isFixedTableRendering || \"filter\" === rowType) {\r\n fixedColumns = that.getFixedColumns();\r\n transparentColumnIndex = getTransparentColumnIndex(fixedColumns);\r\n prevFixedColumn = fixedColumns[transparentColumnIndex - 1]\r\n }\r\n if (that._isFixedTableRendering) {\r\n if (columnCommand === COMMAND_TRANSPARENT) {\r\n $cell.addClass(POINTER_EVENTS_NONE_CLASS).toggleClass(FIRST_CELL_CLASS, 0 === transparentColumnIndex || prevFixedColumn && \"expand\" === prevFixedColumn.command).toggleClass(LAST_CELL_CLASS, fixedColumns.length && transparentColumnIndex === fixedColumns.length - 1);\r\n if (\"freeSpace\" !== rowType) {\r\n _uiGrid_core.default.setEmptyText($cell)\r\n }\r\n }\r\n } else {\r\n if (\"filter\" === rowType) {\r\n $cell.toggleClass(FIRST_CELL_CLASS, options.columnIndex === transparentColumnIndex)\r\n }\r\n }\r\n var isRowAltStyle = that.option(\"rowAlternationEnabled\") && options.isAltRow;\r\n if (_browser.default.mozilla && options.column.fixed && \"group\" !== options.rowType && !isRowAltStyle) {\r\n $cell.addClass(FIXED_COL_CLASS)\r\n }\r\n return $cell\r\n },\r\n _wrapTableInScrollContainer: function() {\r\n var $scrollContainer = this.callBase.apply(this, arguments);\r\n if (this._isFixedTableRendering) {\r\n $scrollContainer.addClass(this.addWidgetPrefix(CONTENT_FIXED_CLASS))\r\n }\r\n return $scrollContainer\r\n },\r\n _renderCellContent: function($cell, options) {\r\n var that = this;\r\n var isEmptyCell;\r\n var column = options.column;\r\n var isFixedTableRendering = that._isFixedTableRendering;\r\n var isGroupCell = \"group\" === options.rowType && (0, _type.isDefined)(column.groupIndex);\r\n if (isFixedTableRendering && isGroupCell && !column.command && !column.groupCellTemplate) {\r\n $cell.css(\"pointerEvents\", \"none\")\r\n }\r\n if (!isFixedTableRendering && that._isFixedColumns) {\r\n isEmptyCell = column.fixed || column.command && false !== column.fixed;\r\n if (isGroupCell) {\r\n isEmptyCell = false;\r\n if (options.row.summaryCells && options.row.summaryCells.length) {\r\n var columns = that._columnsController.getVisibleColumns();\r\n var alignByFixedColumnCellCount = that._getAlignByColumnCellCount ? that._getAlignByColumnCellCount(column.colspan, {\r\n columns: columns,\r\n row: options.row,\r\n isFixed: true\r\n }) : 0;\r\n if (alignByFixedColumnCellCount > 0) {\r\n var transparentColumnIndex = getTransparentColumnIndex(that._columnsController.getFixedColumns());\r\n isEmptyCell = columns.length - alignByFixedColumnCellCount < transparentColumnIndex\r\n }\r\n }\r\n }\r\n if (isEmptyCell) {\r\n if (that.option(\"legacyRendering\") || column.command && \"buttons\" !== column.type || \"group\" === options.rowType) {\r\n $cell.html(\" \").addClass(column.cssClass);\r\n return\r\n } else {\r\n $cell.addClass(\"dx-hidden-cell\")\r\n }\r\n }\r\n }\r\n if (column.command !== COMMAND_TRANSPARENT) {\r\n that.callBase($cell, options)\r\n }\r\n },\r\n _getCellElementsCore: function(rowIndex) {\r\n var that = this;\r\n var cellElements = that.callBase(rowIndex);\r\n var isGroupRow = cellElements.parent().hasClass(GROUP_ROW_CLASS);\r\n var index = \"columnHeadersView\" === that.name ? rowIndex : void 0;\r\n if (that._fixedTableElement && cellElements) {\r\n var fixedColumns = that.getFixedColumns(index);\r\n var fixedCellElements = that._getRowElements(that._fixedTableElement).eq(rowIndex).children(\"td\");\r\n (0, _iterator.each)(fixedCellElements, function(columnIndex, cell) {\r\n if (isGroupRow) {\r\n if (cellElements[columnIndex] && \"hidden\" !== cell.style.visibility) {\r\n cellElements[columnIndex] = cell\r\n }\r\n } else {\r\n var fixedColumn = fixedColumns[columnIndex];\r\n if (fixedColumn) {\r\n if (fixedColumn.command === COMMAND_TRANSPARENT) {\r\n if (fixedCellElements.eq(columnIndex).hasClass(MASTER_DETAIL_CELL_CLASS)) {\r\n cellElements[columnIndex] = cell || cellElements[columnIndex]\r\n }\r\n } else {\r\n var fixedColumnIndex = that._columnsController.getVisibleIndex(fixedColumn.index, index);\r\n cellElements[fixedColumnIndex] = cell || cellElements[fixedColumnIndex]\r\n }\r\n }\r\n }\r\n })\r\n }\r\n return cellElements\r\n },\r\n getColumnWidths: function() {\r\n var that = this;\r\n var fixedWidths;\r\n var result = that.callBase();\r\n var fixedColumns = that.getFixedColumns();\r\n if (that._fixedTableElement && result.length) {\r\n fixedWidths = that.callBase(that._fixedTableElement)\r\n }\r\n return normalizeColumnWidths(fixedColumns, result, fixedWidths)\r\n },\r\n _getTableElement: function() {\r\n var tableElement = this._isFixedTableRendering ? this._fixedTableElement : this.callBase();\r\n return tableElement\r\n },\r\n _setTableElement: function(tableElement) {\r\n if (this._isFixedTableRendering) {\r\n this._fixedTableElement = tableElement.addClass(POINTER_EVENTS_NONE_CLASS)\r\n } else {\r\n this.callBase(tableElement)\r\n }\r\n },\r\n getColumns: function(rowIndex, $tableElement) {\r\n $tableElement = $tableElement || this._getTableElement();\r\n if (this._isFixedTableRendering || $tableElement && $tableElement.closest(\"table\").parent(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS)).length) {\r\n return this.getFixedColumns(rowIndex)\r\n }\r\n return this.callBase(rowIndex, $tableElement)\r\n },\r\n getRowIndex: function($row) {\r\n var $fixedTable = this._fixedTableElement;\r\n if ($fixedTable && $fixedTable.find($row).length) {\r\n return this._getRowElements($fixedTable).index($row)\r\n }\r\n return this.callBase($row)\r\n },\r\n getTableElements: function() {\r\n var result = this.callBase.apply(this, arguments);\r\n if (this._fixedTableElement) {\r\n result = (0, _renderer.default)([result.get(0), this._fixedTableElement.get(0)])\r\n }\r\n return result\r\n },\r\n getFixedColumns: function(rowIndex) {\r\n return this._columnsController.getFixedColumns(rowIndex)\r\n },\r\n getFixedColumnsOffset: function() {\r\n var offset = {\r\n left: 0,\r\n right: 0\r\n };\r\n var $transparentColumn;\r\n if (this._fixedTableElement) {\r\n $transparentColumn = this.getTransparentColumnElement();\r\n var positionTransparentColumn = $transparentColumn.position();\r\n offset = {\r\n left: positionTransparentColumn.left,\r\n right: this.element().outerWidth(true) - ($transparentColumn.outerWidth(true) + positionTransparentColumn.left)\r\n }\r\n }\r\n return offset\r\n },\r\n getTransparentColumnElement: function() {\r\n return this._fixedTableElement && this._fixedTableElement.find(\".\" + POINTER_EVENTS_NONE_CLASS).first()\r\n },\r\n getFixedTableElement: function() {\r\n return this._fixedTableElement\r\n },\r\n isFixedColumns: function() {\r\n return this._isFixedColumns\r\n },\r\n _resizeCore: function() {\r\n this.callBase();\r\n this.synchronizeRows()\r\n },\r\n setColumnWidths: function(options) {\r\n var columns;\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var widths = options.widths;\r\n var isWidthsSynchronized = widths && widths.length && (0, _type.isDefined)(visibleColumns[0].visibleWidth);\r\n var optionNames = options.optionNames;\r\n var isColumnWidthChanged = optionNames && optionNames.width;\r\n var useVisibleColumns = false;\r\n this.callBase.apply(this, arguments);\r\n if (this._fixedTableElement) {\r\n if (this.option(\"legacyRendering\")) {\r\n useVisibleColumns = widths && widths.length && !this.isScrollbarVisible(true)\r\n } else {\r\n var hasAutoWidth = widths && widths.some(function(width) {\r\n return \"auto\" === width\r\n });\r\n useVisibleColumns = hasAutoWidth && (!isWidthsSynchronized || !this.isScrollbarVisible(true))\r\n }\r\n if (useVisibleColumns) {\r\n columns = visibleColumns\r\n }\r\n this.callBase((0, _extend.extend)({}, options, {\r\n $tableElement: this._fixedTableElement,\r\n columns: columns,\r\n fixed: true\r\n }))\r\n }\r\n if (isWidthsSynchronized || isColumnWidthChanged && this.option(\"wordWrapEnabled\")) {\r\n this.synchronizeRows()\r\n }\r\n },\r\n _createColGroup: function(columns) {\r\n if (!this.option(\"legacyRendering\") && this._isFixedTableRendering && !this.option(\"columnAutoWidth\")) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var useVisibleColumns = visibleColumns.filter(function(column) {\r\n return !column.width\r\n }).length;\r\n if (useVisibleColumns) {\r\n columns = visibleColumns\r\n }\r\n }\r\n return this.callBase(columns)\r\n },\r\n _getClientHeight: function(element) {\r\n var boundingClientRectElement = element.getBoundingClientRect && (0, _position.getBoundingRect)(element);\r\n return boundingClientRectElement && boundingClientRectElement.height ? boundingClientRectElement.height : element.clientHeight\r\n },\r\n synchronizeRows: function() {\r\n var that = this;\r\n var rowHeights = [];\r\n var fixedRowHeights = [];\r\n var rowIndex;\r\n var $rowElements;\r\n var $fixedRowElements;\r\n var $contentElement;\r\n if (that._isFixedColumns && that._tableElement && that._fixedTableElement) {\r\n var heightTable = that._getClientHeight(that._tableElement.get(0));\r\n var heightFixedTable = that._getClientHeight(that._fixedTableElement.get(0));\r\n $rowElements = that._getRowElements(that._tableElement);\r\n $fixedRowElements = that._getRowElements(that._fixedTableElement);\r\n $contentElement = that._findContentElement();\r\n if (heightTable !== heightFixedTable) {\r\n $contentElement && $contentElement.css(\"height\", heightTable);\r\n $rowElements.css(\"height\", \"\");\r\n $fixedRowElements.css(\"height\", \"\");\r\n for (rowIndex = 0; rowIndex < $rowElements.length; rowIndex++) {\r\n rowHeights.push(that._getClientHeight($rowElements.get(rowIndex)));\r\n fixedRowHeights.push(that._getClientHeight($fixedRowElements.get(rowIndex)))\r\n }\r\n for (rowIndex = 0; rowIndex < $rowElements.length; rowIndex++) {\r\n var rowHeight = rowHeights[rowIndex];\r\n var fixedRowHeight = fixedRowHeights[rowIndex];\r\n if (rowHeight > fixedRowHeight) {\r\n $fixedRowElements.eq(rowIndex).css(\"height\", rowHeight)\r\n } else {\r\n if (rowHeight < fixedRowHeight) {\r\n $rowElements.eq(rowIndex).css(\"height\", fixedRowHeight)\r\n }\r\n }\r\n }\r\n $contentElement && $contentElement.css(\"height\", \"\")\r\n }\r\n }\r\n },\r\n setScrollerSpacing: function(width) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n this.callBase(width);\r\n this.element().children(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS)).css({\r\n paddingLeft: rtlEnabled ? width : \"\",\r\n paddingRight: !rtlEnabled ? width : \"\"\r\n })\r\n }\r\n};\r\nvar ColumnHeadersViewFixedColumnsExtender = (0, _extend.extend)({}, baseFixedColumns, {\r\n _getRowVisibleColumns: function(rowIndex) {\r\n if (this._isFixedTableRendering) {\r\n return this.getFixedColumns(rowIndex)\r\n }\r\n return this.callBase(rowIndex)\r\n },\r\n getContextMenuItems: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n var columnFixingOptions = that.option(\"columnFixing\");\r\n var items = that.callBase(options);\r\n if (options.row && \"header\" === options.row.rowType) {\r\n if (column && column.allowFixing) {\r\n var onItemClick = function(params) {\r\n switch (params.itemData.value) {\r\n case \"none\":\r\n that._columnsController.columnOption(column.index, \"fixed\", false);\r\n break;\r\n case \"left\":\r\n that._columnsController.columnOption(column.index, {\r\n fixed: true,\r\n fixedPosition: \"left\"\r\n });\r\n break;\r\n case \"right\":\r\n that._columnsController.columnOption(column.index, {\r\n fixed: true,\r\n fixedPosition: \"right\"\r\n })\r\n }\r\n };\r\n items = items || [];\r\n items.push({\r\n text: columnFixingOptions.texts.fix,\r\n beginGroup: true,\r\n items: [{\r\n text: columnFixingOptions.texts.leftPosition,\r\n value: \"left\",\r\n disabled: column.fixed && (!column.fixedPosition || \"left\" === column.fixedPosition),\r\n onItemClick: onItemClick\r\n }, {\r\n text: columnFixingOptions.texts.rightPosition,\r\n value: \"right\",\r\n disabled: column.fixed && \"right\" === column.fixedPosition,\r\n onItemClick: onItemClick\r\n }]\r\n }, {\r\n text: columnFixingOptions.texts.unfix,\r\n value: \"none\",\r\n disabled: !column.fixed,\r\n onItemClick: onItemClick\r\n })\r\n }\r\n }\r\n return items\r\n },\r\n getFixedColumnElements: function(rowIndex) {\r\n var that = this;\r\n if ((0, _type.isDefined)(rowIndex)) {\r\n return this._fixedTableElement && this._getRowElements(this._fixedTableElement).eq(rowIndex).children()\r\n }\r\n var columnElements = that.getColumnElements();\r\n var $transparentColumnElement = that.getTransparentColumnElement();\r\n if (columnElements && $transparentColumnElement && $transparentColumnElement.length) {\r\n var transparentColumnIndex = getTransparentColumnIndex(that.getFixedColumns());\r\n columnElements.splice(transparentColumnIndex, $transparentColumnElement.get(0).colSpan, $transparentColumnElement.get(0))\r\n }\r\n return columnElements\r\n },\r\n getColumnWidths: function() {\r\n var that = this;\r\n var fixedWidths;\r\n var result = that.callBase();\r\n var $fixedColumnElements = that.getFixedColumnElements();\r\n var fixedColumns = that.getFixedColumns();\r\n if (that._fixedTableElement) {\r\n if ($fixedColumnElements && $fixedColumnElements.length) {\r\n fixedWidths = that._getWidths($fixedColumnElements)\r\n } else {\r\n fixedWidths = that.callBase(that._fixedTableElement)\r\n }\r\n }\r\n return normalizeColumnWidths(fixedColumns, result, fixedWidths)\r\n }\r\n});\r\nvar RowsViewFixedColumnsExtender = (0, _extend.extend)({}, baseFixedColumns, {\r\n _detachHoverEvents: function() {\r\n this._fixedTableElement && _events_engine.default.off(this._fixedTableElement, \"mouseover mouseout\", \".dx-data-row\");\r\n this._tableElement && _events_engine.default.off(this._tableElement, \"mouseover mouseout\", \".dx-data-row\")\r\n },\r\n _attachHoverEvents: function() {\r\n var that = this;\r\n var attachHoverEvent = function($table) {\r\n _events_engine.default.on($table, \"mouseover mouseout\", \".dx-data-row\", that.createAction(function(args) {\r\n var event = args.event;\r\n var rowIndex = that.getRowIndex((0, _renderer.default)(event.target).closest(\".dx-row\"));\r\n var isHover = \"mouseover\" === event.type;\r\n if (rowIndex >= 0) {\r\n that._tableElement && that._getRowElements(that._tableElement).eq(rowIndex).toggleClass(HOVER_STATE_CLASS, isHover);\r\n that._fixedTableElement && that._getRowElements(that._fixedTableElement).eq(rowIndex).toggleClass(HOVER_STATE_CLASS, isHover)\r\n }\r\n }))\r\n };\r\n if (that._fixedTableElement && that._tableElement) {\r\n attachHoverEvent(that._fixedTableElement);\r\n attachHoverEvent(that._tableElement)\r\n }\r\n },\r\n _findContentElement: function() {\r\n var that = this;\r\n var $content;\r\n var scrollTop;\r\n var contentClass = that.addWidgetPrefix(CONTENT_CLASS);\r\n var element = that.element();\r\n var scrollDelay = _browser.default.mozilla ? 60 : 0;\r\n if (element && that._isFixedTableRendering) {\r\n $content = element.children(\".\" + contentClass);\r\n var scrollable = that.getScrollable();\r\n if (!$content.length && scrollable) {\r\n $content = (0, _renderer.default)(\"
\").addClass(contentClass);\r\n _events_engine.default.on($content, \"scroll\", function(e) {\r\n clearTimeout(that._fixedScrollTimeout);\r\n that._fixedScrollTimeout = setTimeout(function() {\r\n scrollTop = (0, _renderer.default)(e.target).scrollTop();\r\n scrollable.scrollTo({\r\n y: scrollTop\r\n })\r\n }, scrollDelay)\r\n });\r\n _events_engine.default.on($content, _wheel.name, function(e) {\r\n var $nearestScrollable = (0, _renderer.default)(e.target).closest(\".dx-scrollable\");\r\n if (scrollable && scrollable.$element().is($nearestScrollable)) {\r\n scrollTop = scrollable.scrollTop();\r\n scrollable.scrollTo({\r\n y: scrollTop - e.delta\r\n });\r\n if (scrollable.scrollTop() > 0 && scrollable.scrollTop() + scrollable.clientHeight() < scrollable.scrollHeight() + that.getScrollbarWidth()) {\r\n return false\r\n }\r\n }\r\n });\r\n $content.appendTo(element)\r\n }\r\n return $content\r\n }\r\n return that.callBase()\r\n },\r\n _updateScrollable: function() {\r\n this.callBase();\r\n var scrollable = this.getScrollable();\r\n var scrollTop = scrollable && scrollable.scrollOffset().top;\r\n this._updateFixedTablePosition(scrollTop)\r\n },\r\n _renderContent: function(contentElement, tableElement) {\r\n if (this._isFixedTableRendering) {\r\n return contentElement.empty().addClass(this.addWidgetPrefix(CONTENT_CLASS) + \" \" + this.addWidgetPrefix(CONTENT_FIXED_CLASS)).append(tableElement)\r\n }\r\n return this.callBase(contentElement, tableElement)\r\n },\r\n _getGroupCellOptions: function(options) {\r\n if (this._isFixedTableRendering) {\r\n return this.callBase((0, _extend.extend)({}, options, {\r\n columns: this._columnsController.getVisibleColumns()\r\n }))\r\n }\r\n return this.callBase(options)\r\n },\r\n _renderGroupedCells: function($row, options) {\r\n return this.callBase($row, (0, _extend.extend)({}, options, {\r\n columns: this._columnsController.getVisibleColumns()\r\n }))\r\n },\r\n _renderGroupSummaryCells: function($row, options) {\r\n if (this._isFixedTableRendering) {\r\n this.callBase($row, (0, _extend.extend)({}, options, {\r\n columns: this._columnsController.getVisibleColumns()\r\n }))\r\n } else {\r\n this.callBase($row, options)\r\n }\r\n },\r\n _hasAlignByColumnSummaryItems: function(columnIndex, options) {\r\n var result = this.callBase.apply(this, arguments);\r\n var column = options.columns[columnIndex];\r\n if (options.isFixed) {\r\n return column.fixed && (result || \"right\" === column.fixedPosition)\r\n }\r\n return result && !column.fixed\r\n },\r\n _renderGroupSummaryCellsCore: function($groupCell, options, groupCellColSpan, alignByColumnCellCount) {\r\n var alignByFixedColumnCellCount;\r\n if (this._isFixedTableRendering) {\r\n options.isFixed = true;\r\n alignByFixedColumnCellCount = this._getAlignByColumnCellCount(groupCellColSpan, options);\r\n options.isFixed = false;\r\n var startColumnIndex = options.columns.length - alignByFixedColumnCellCount;\r\n options = (0, _extend.extend)({}, options, {\r\n columns: this.getFixedColumns()\r\n });\r\n var transparentColumnIndex = getTransparentColumnIndex(options.columns);\r\n if (startColumnIndex < transparentColumnIndex) {\r\n alignByFixedColumnCellCount -= options.columns[transparentColumnIndex].colspan - 1 || 0;\r\n groupCellColSpan -= options.columns[transparentColumnIndex].colspan - 1 || 0\r\n } else {\r\n if (alignByColumnCellCount > 0) {\r\n $groupCell.css(\"visibility\", \"hidden\")\r\n }\r\n }\r\n alignByColumnCellCount = alignByFixedColumnCellCount\r\n }\r\n this.callBase($groupCell, options, groupCellColSpan, alignByColumnCellCount)\r\n },\r\n _getSummaryCellIndex: function(columnIndex, columns) {\r\n if (this._isFixedTableRendering) {\r\n var transparentColumnIndex = getTransparentColumnIndex(columns);\r\n if (columnIndex > transparentColumnIndex) {\r\n columnIndex += columns[transparentColumnIndex].colspan - 1\r\n }\r\n return columnIndex\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _renderCore: function(change) {\r\n this._detachHoverEvents();\r\n this.callBase(change);\r\n var isFixedColumns = this._isFixedColumns;\r\n this.element().toggleClass(FIXED_COLUMNS_CLASS, isFixedColumns);\r\n if (this.option(\"hoverStateEnabled\") && isFixedColumns) {\r\n this._attachHoverEvents()\r\n }\r\n },\r\n setRowsOpacity: function(columnIndex, value) {\r\n this.callBase(columnIndex, value);\r\n var $rows = this._getRowElements(this._fixedTableElement);\r\n this._setRowsOpacityCore($rows, this.getFixedColumns(), columnIndex, value)\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n that.callBase(args);\r\n if (\"hoverStateEnabled\" === args.name && that._isFixedColumns) {\r\n args.value ? this._attachHoverEvents() : this._detachHoverEvents()\r\n }\r\n },\r\n getCellIndex: function($cell) {\r\n var $fixedTable = this._fixedTableElement;\r\n var cellIndex = 0;\r\n if ($fixedTable && $cell.is(\"td\") && $cell.closest($fixedTable).length) {\r\n var columns = this.getFixedColumns();\r\n (0, _iterator.each)(columns, function(index, column) {\r\n if (index === $cell[0].cellIndex) {\r\n return false\r\n }\r\n if (column.colspan) {\r\n cellIndex += column.colspan;\r\n return\r\n }\r\n cellIndex++\r\n });\r\n return cellIndex\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _updateFixedTablePosition: function(scrollTop, needFocus) {\r\n if (this._fixedTableElement && this._tableElement) {\r\n var $focusedElement;\r\n var editorFactory = this.getController(\"editorFactory\");\r\n this._fixedTableElement.parent().scrollTop(scrollTop);\r\n if (needFocus && editorFactory) {\r\n $focusedElement = editorFactory.focus();\r\n $focusedElement && editorFactory.focus($focusedElement)\r\n }\r\n }\r\n },\r\n setScrollerSpacing: function(vWidth, hWidth) {\r\n var that = this;\r\n var styles = {\r\n marginBottom: 0\r\n };\r\n var $fixedContent = that.element().children(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS));\r\n if ($fixedContent.length && that._fixedTableElement) {\r\n $fixedContent.css(styles);\r\n that._fixedTableElement.css(styles);\r\n styles[that.option(\"rtlEnabled\") ? \"marginLeft\" : \"marginRight\"] = vWidth;\r\n styles.marginBottom = hWidth;\r\n var useNativeScrolling = that._scrollable && that._scrollable.option(\"useNative\");\r\n (useNativeScrolling ? $fixedContent : that._fixedTableElement).css(styles)\r\n }\r\n },\r\n _getElasticScrollTop: function(e) {\r\n var elasticScrollTop = 0;\r\n var scrollbarWidth = this.getScrollbarWidth(true);\r\n if (e.scrollOffset.top < 0) {\r\n elasticScrollTop = -e.scrollOffset.top\r\n } else {\r\n if (e.reachedBottom) {\r\n var scrollableContent = this._findContentElement();\r\n var scrollableContainer = e.component._container();\r\n var maxScrollTop = Math.max(scrollableContent.height() + scrollbarWidth - scrollableContainer.height(), 0);\r\n elasticScrollTop = maxScrollTop - e.scrollOffset.top\r\n }\r\n }\r\n return elasticScrollTop\r\n },\r\n _applyElasticScrolling: function(e) {\r\n if (this._fixedTableElement) {\r\n var elasticScrollTop = this._getElasticScrollTop(e);\r\n if (0 !== Math.ceil(elasticScrollTop)) {\r\n (0, _translator.move)(this._fixedTableElement, {\r\n top: elasticScrollTop\r\n })\r\n } else {\r\n this._fixedTableElement.css(\"transform\", \"\")\r\n }\r\n }\r\n },\r\n _handleScroll: function(e) {\r\n this._updateFixedTablePosition(e.scrollOffset.top, true);\r\n this._applyElasticScrolling(e);\r\n this.callBase(e)\r\n },\r\n _updateContentPosition: function(isRender) {\r\n this.callBase.apply(this, arguments);\r\n if (!isRender) {\r\n this._updateFixedTablePosition(this._scrollTop)\r\n }\r\n },\r\n _afterRowPrepared: function(e) {\r\n if (this._isFixedTableRendering) {\r\n return\r\n }\r\n this.callBase(e)\r\n },\r\n _scrollToElement: function($element) {\r\n this.callBase($element, this.getFixedColumnsOffset())\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n clearTimeout(this._fixedScrollTimeout)\r\n }\r\n});\r\nvar FooterViewFixedColumnsExtender = baseFixedColumns;\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n columnFixing: {\r\n enabled: false,\r\n texts: {\r\n fix: _message.default.format(\"dxDataGrid-columnFixingFix\"),\r\n unfix: _message.default.format(\"dxDataGrid-columnFixingUnfix\"),\r\n leftPosition: _message.default.format(\"dxDataGrid-columnFixingLeftPosition\"),\r\n rightPosition: _message.default.format(\"dxDataGrid-columnFixingRightPosition\")\r\n }\r\n }\r\n }\r\n },\r\n extenders: {\r\n views: {\r\n columnHeadersView: ColumnHeadersViewFixedColumnsExtender,\r\n rowsView: RowsViewFixedColumnsExtender,\r\n footerView: FooterViewFixedColumnsExtender\r\n },\r\n controllers: function() {\r\n var normalizeColumnIndicesByPoints = function(columns, fixedColumns, pointsByColumns) {\r\n var transparentColumnIndex = getTransparentColumnIndex(fixedColumns);\r\n var correctIndex = columns.length - fixedColumns.length;\r\n (0, _iterator.each)(pointsByColumns, function(_, point) {\r\n if (point.index > transparentColumnIndex) {\r\n point.columnIndex += correctIndex;\r\n point.index += correctIndex\r\n }\r\n });\r\n return pointsByColumns\r\n };\r\n return {\r\n draggingHeader: {\r\n _generatePointsByColumns: function(options) {\r\n var visibleColumns = options.columns;\r\n var targetDraggingPanel = options.targetDraggingPanel;\r\n if (targetDraggingPanel && \"headers\" === targetDraggingPanel.getName() && targetDraggingPanel.isFixedColumns()) {\r\n if (options.sourceColumn.fixed) {\r\n if (!options.rowIndex) {\r\n options.columnElements = targetDraggingPanel.getFixedColumnElements(0)\r\n }\r\n options.columns = targetDraggingPanel.getFixedColumns(options.rowIndex);\r\n var pointsByColumns = this.callBase(options);\r\n normalizeColumnIndicesByPoints(visibleColumns, options.columns, pointsByColumns);\r\n return pointsByColumns\r\n }\r\n }\r\n return this.callBase(options)\r\n },\r\n _pointCreated: function(point, columns, location, sourceColumn) {\r\n var result = this.callBase.apply(this, arguments);\r\n var $transparentColumn = this._columnHeadersView.getTransparentColumnElement();\r\n if (!result && \"headers\" === location && $transparentColumn && $transparentColumn.length) {\r\n var boundingRect = (0, _position.getBoundingRect)($transparentColumn.get(0));\r\n if (sourceColumn && sourceColumn.fixed) {\r\n return \"right\" === sourceColumn.fixedPosition ? point.x < boundingRect.right : point.x > boundingRect.left\r\n } else {\r\n return point.x < boundingRect.left || point.x > boundingRect.right\r\n }\r\n }\r\n return result\r\n }\r\n },\r\n columnsResizer: {\r\n _generatePointsByColumns: function() {\r\n var that = this;\r\n var columnsController = that._columnsController;\r\n var columns = columnsController && that._columnsController.getVisibleColumns();\r\n var fixedColumns = columnsController && that._columnsController.getFixedColumns();\r\n var cells = that._columnHeadersView.getFixedColumnElements();\r\n var pointsByFixedColumns = [];\r\n that.callBase();\r\n if (cells && cells.length > 0) {\r\n pointsByFixedColumns = _uiGrid_core.default.getPointsByColumns(cells, function(point) {\r\n return that._pointCreated(point, cells.length, fixedColumns)\r\n });\r\n that._pointsByFixedColumns = normalizeColumnIndicesByPoints(columns, fixedColumns, pointsByFixedColumns)\r\n }\r\n },\r\n _pointCreated: function(point, cellsLength, columns) {\r\n var isWidgetResizingMode = \"widget\" === this.option(\"columnResizingMode\");\r\n if (point.index > 0 && point.index < cellsLength) {\r\n var currentColumn = columns[point.columnIndex - 1] || {};\r\n var nextColumn = columns[point.columnIndex] || {};\r\n if (currentColumn.fixed || nextColumn.fixed) {\r\n point.columnIndex -= 1;\r\n return !((currentColumn.allowResizing || currentColumn.command === COMMAND_TRANSPARENT) && (isWidgetResizingMode || nextColumn.allowResizing || nextColumn.command === COMMAND_TRANSPARENT))\r\n }\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _getTargetPoint: function(pointsByColumns, currentX, deltaX) {\r\n var $transparentColumn = this._columnHeadersView.getTransparentColumnElement();\r\n if ($transparentColumn && $transparentColumn.length) {\r\n var boundingRect = (0, _position.getBoundingRect)($transparentColumn.get(0));\r\n if (currentX <= boundingRect.left || currentX >= boundingRect.right) {\r\n return this.callBase(this._pointsByFixedColumns, currentX, deltaX)\r\n }\r\n }\r\n return this.callBase(pointsByColumns, currentX, deltaX)\r\n }\r\n }\r\n }\r\n }()\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.pager.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.pager\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"pager\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.validating.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.validating\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"validating\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.filter_row.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _overlay = _interopRequireDefault(require(\"../overlay\"));\r\nvar _menu = _interopRequireDefault(require(\"../menu\"));\r\nvar _accessibility = require(\"../shared/accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar OPERATION_ICONS = {\r\n \"=\": \"filter-operation-equals\",\r\n \"<>\": \"filter-operation-not-equals\",\r\n \"<\": \"filter-operation-less\",\r\n \"<=\": \"filter-operation-less-equal\",\r\n \">\": \"filter-operation-greater\",\r\n \">=\": \"filter-operation-greater-equal\",\r\n \"default\": \"filter-operation-default\",\r\n notcontains: \"filter-operation-not-contains\",\r\n contains: \"filter-operation-contains\",\r\n startswith: \"filter-operation-starts-with\",\r\n endswith: \"filter-operation-ends-with\",\r\n between: \"filter-operation-between\"\r\n};\r\nvar OPERATION_DESCRIPTORS = {\r\n \"=\": \"equal\",\r\n \"<>\": \"notEqual\",\r\n \"<\": \"lessThan\",\r\n \"<=\": \"lessThanOrEqual\",\r\n \">\": \"greaterThan\",\r\n \">=\": \"greaterThanOrEqual\",\r\n startswith: \"startsWith\",\r\n contains: \"contains\",\r\n notcontains: \"notContains\",\r\n endswith: \"endsWith\",\r\n between: \"between\"\r\n};\r\nvar FILTERING_TIMEOUT = 700;\r\nvar CORRECT_FILTER_RANGE_OVERLAY_WIDTH = 1;\r\nvar FILTER_ROW_CLASS = \"filter-row\";\r\nvar FILTER_RANGE_OVERLAY_CLASS = \"filter-range-overlay\";\r\nvar FILTER_RANGE_START_CLASS = \"filter-range-start\";\r\nvar FILTER_RANGE_END_CLASS = \"filter-range-end\";\r\nvar MENU_CLASS = \"dx-menu\";\r\nvar EDITOR_WITH_MENU_CLASS = \"dx-editor-with-menu\";\r\nvar EDITOR_CONTAINER_CLASS = \"dx-editor-container\";\r\nvar EDITOR_CELL_CLASS = \"dx-editor-cell\";\r\nvar FILTER_MENU = \"dx-filter-menu\";\r\nvar APPLY_BUTTON_CLASS = \"dx-apply-button\";\r\nvar HIGHLIGHT_OUTLINE_CLASS = \"dx-highlight-outline\";\r\nvar FOCUSED_CLASS = \"dx-focused\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar FILTER_RANGE_CONTENT_CLASS = \"dx-filter-range-content\";\r\nvar FILTER_MODIFIED_CLASS = \"dx-filter-modified\";\r\nvar EDITORS_INPUT_SELECTOR = \"input:not([type='hidden'])\";\r\nvar BETWEEN_OPERATION_DATA_TYPES = [\"date\", \"datetime\", \"number\"];\r\n\r\nfunction isOnClickApplyFilterMode(that) {\r\n return \"onClick\" === that.option(\"filterRow.applyFilter\")\r\n}\r\nvar ColumnHeadersViewFilterRowExtender = function() {\r\n var getEditorInstance = function($editorContainer) {\r\n var $editor = $editorContainer && $editorContainer.children();\r\n var componentNames = $editor && $editor.data(\"dxComponents\");\r\n var editor = componentNames && componentNames.length && $editor.data(componentNames[0]);\r\n if (editor instanceof _editor.default) {\r\n return editor\r\n }\r\n };\r\n var getRangeTextByFilterValue = function(that, column) {\r\n var result = \"\";\r\n var rangeEnd = \"\";\r\n var filterValue = getColumnFilterValue(that, column);\r\n var formatOptions = _uiGrid_core2.default.getFormatOptionsByColumn(column, \"filterRow\");\r\n if (Array.isArray(filterValue)) {\r\n result = _uiGrid_core2.default.formatValue(filterValue[0], formatOptions);\r\n rangeEnd = _uiGrid_core2.default.formatValue(filterValue[1], formatOptions);\r\n if (\"\" !== rangeEnd) {\r\n result += \" - \" + rangeEnd\r\n }\r\n } else {\r\n if ((0, _type.isDefined)(filterValue)) {\r\n result = _uiGrid_core2.default.formatValue(filterValue, formatOptions)\r\n }\r\n }\r\n return result\r\n };\r\n\r\n function getColumnFilterValue(that, column) {\r\n if (column) {\r\n return isOnClickApplyFilterMode(that) && void 0 !== column.bufferedFilterValue ? column.bufferedFilterValue : column.filterValue\r\n }\r\n }\r\n var getColumnSelectedFilterOperation = function(that, column) {\r\n if (column) {\r\n return isOnClickApplyFilterMode(that) && void 0 !== column.bufferedSelectedFilterOperation ? column.bufferedSelectedFilterOperation : column.selectedFilterOperation\r\n }\r\n };\r\n var isValidFilterValue = function(filterValue, column) {\r\n if (column && BETWEEN_OPERATION_DATA_TYPES.indexOf(column.dataType) >= 0 && Array.isArray(filterValue)) {\r\n return false\r\n }\r\n return void 0 !== filterValue\r\n };\r\n var getFilterValue = function(that, columnIndex, $editorContainer) {\r\n var column = that._columnsController.columnOption(columnIndex);\r\n var filterValue = getColumnFilterValue(that, column);\r\n var isFilterRange = $editorContainer.closest(\".\" + that.addWidgetPrefix(FILTER_RANGE_OVERLAY_CLASS)).length;\r\n var isRangeStart = $editorContainer.hasClass(that.addWidgetPrefix(FILTER_RANGE_START_CLASS));\r\n if (filterValue && Array.isArray(filterValue) && \"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n if (isRangeStart) {\r\n return filterValue[0]\r\n } else {\r\n return filterValue[1]\r\n }\r\n }\r\n return !isFilterRange && isValidFilterValue(filterValue, column) ? filterValue : null\r\n };\r\n var normalizeFilterValue = function(that, filterValue, column, $editorContainer) {\r\n if (\"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n var columnFilterValue = getColumnFilterValue(that, column);\r\n if ($editorContainer.hasClass(that.addWidgetPrefix(FILTER_RANGE_START_CLASS))) {\r\n return [filterValue, Array.isArray(columnFilterValue) ? columnFilterValue[1] : void 0]\r\n } else {\r\n return [Array.isArray(columnFilterValue) ? columnFilterValue[0] : columnFilterValue, filterValue]\r\n }\r\n }\r\n return filterValue\r\n };\r\n var updateFilterValue = function(that, options) {\r\n var value = \"\" === options.value ? null : options.value;\r\n var $editorContainer = options.container;\r\n var column = that._columnsController.columnOption(options.column.index);\r\n var filterValue = getFilterValue(that, column.index, $editorContainer);\r\n if (!(0, _type.isDefined)(filterValue) && !(0, _type.isDefined)(value)) {\r\n return\r\n }\r\n that._applyFilterViewController.setHighLight($editorContainer, filterValue !== value);\r\n that._columnsController.columnOption(column.index, isOnClickApplyFilterMode(that) ? \"bufferedFilterValue\" : \"filterValue\", normalizeFilterValue(that, value, column, $editorContainer), options.notFireEvent)\r\n };\r\n return {\r\n _updateEditorValue: function(column, $editorContainer) {\r\n var that = this;\r\n var editor = getEditorInstance($editorContainer);\r\n editor && editor.option(\"value\", getFilterValue(that, column.index, $editorContainer))\r\n },\r\n _columnOptionChanged: function(e) {\r\n var that = this;\r\n var optionNames = e.optionNames;\r\n var $cell;\r\n var $editorContainer;\r\n var $editorRangeElements;\r\n var $menu;\r\n if (_uiGrid_core2.default.checkChanges(optionNames, [\"filterValue\", \"bufferedFilterValue\", \"selectedFilterOperation\", \"bufferedSelectedFilterOperation\"]) && void 0 !== e.columnIndex) {\r\n var visibleIndex = that._columnsController.getVisibleIndex(e.columnIndex);\r\n var column = that._columnsController.columnOption(e.columnIndex);\r\n $cell = that._getCellElement(that.element().find(\".\" + that.addWidgetPrefix(FILTER_ROW_CLASS)).index(), visibleIndex) || (0, _renderer.default)();\r\n $editorContainer = $cell.find(\".\" + EDITOR_CONTAINER_CLASS).first();\r\n if (optionNames.filterValue || optionNames.bufferedFilterValue) {\r\n that._updateEditorValue(column, $editorContainer);\r\n var overlayInstance = $cell.find(\".\" + that.addWidgetPrefix(FILTER_RANGE_OVERLAY_CLASS)).data(\"dxOverlay\");\r\n if (overlayInstance) {\r\n $editorRangeElements = overlayInstance.$content().find(\".\" + EDITOR_CONTAINER_CLASS);\r\n that._updateEditorValue(column, $editorRangeElements.first());\r\n that._updateEditorValue(column, $editorRangeElements.last())\r\n }\r\n if (!overlayInstance || !overlayInstance.option(\"visible\")) {\r\n that._updateFilterRangeContent($cell, getRangeTextByFilterValue(that, column))\r\n }\r\n }\r\n if (optionNames.selectedFilterOperation || optionNames.bufferedSelectedFilterOperation) {\r\n if (visibleIndex >= 0 && column) {\r\n $menu = $cell.find(\".\" + MENU_CLASS);\r\n if ($menu.length) {\r\n that._updateFilterOperationChooser($menu, column, $editorContainer);\r\n if (\"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n that._renderFilterRangeContent($cell, column)\r\n } else {\r\n if ($editorContainer.find(\".\" + FILTER_RANGE_CONTENT_CLASS).length) {\r\n that._renderEditor($editorContainer, that._getEditorOptions($editorContainer, column));\r\n that._hideFilterRange()\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return\r\n }\r\n that.callBase(e)\r\n },\r\n _renderCore: function() {\r\n this._filterRangeOverlayInstance = null;\r\n this.callBase.apply(this, arguments)\r\n },\r\n _resizeCore: function() {\r\n this.callBase.apply(this, arguments);\r\n this._filterRangeOverlayInstance && this._filterRangeOverlayInstance.repaint()\r\n },\r\n isFilterRowVisible: function() {\r\n return this._isElementVisible(this.option(\"filterRow\"))\r\n },\r\n isVisible: function() {\r\n return this.callBase() || this.isFilterRowVisible()\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._applyFilterViewController = this.getController(\"applyFilter\")\r\n },\r\n _initFilterRangeOverlay: function($cell, column) {\r\n var that = this;\r\n var sharedData = {};\r\n var $editorContainer = $cell.find(\".dx-editor-container\");\r\n var $overlay = (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(FILTER_RANGE_OVERLAY_CLASS)).appendTo($cell);\r\n return that._createComponent($overlay, _overlay.default, {\r\n height: \"auto\",\r\n shading: false,\r\n showTitle: false,\r\n focusStateEnabled: false,\r\n closeOnTargetScroll: false,\r\n closeOnOutsideClick: true,\r\n animation: false,\r\n position: {\r\n my: \"top\",\r\n at: \"top\",\r\n of: $editorContainer.length && $editorContainer || $cell,\r\n offset: \"0 -1\"\r\n },\r\n contentTemplate: function(contentElement) {\r\n var editorOptions;\r\n var $editor = (0, _renderer.default)(\"
\").addClass(EDITOR_CONTAINER_CLASS + \" \" + that.addWidgetPrefix(FILTER_RANGE_START_CLASS)).appendTo(contentElement);\r\n column = that._columnsController.columnOption(column.index);\r\n editorOptions = that._getEditorOptions($editor, column);\r\n editorOptions.sharedData = sharedData;\r\n that._renderEditor($editor, editorOptions);\r\n _events_engine.default.on($editor.find(EDITORS_INPUT_SELECTOR), \"keydown\", function(e) {\r\n var $prevElement = $cell.find(\"[tabindex]\").not(e.target).first();\r\n if (\"tab\" === (0, _index.normalizeKeyName)(e) && e.shiftKey) {\r\n e.preventDefault();\r\n that._hideFilterRange();\r\n if (!$prevElement.length) {\r\n $prevElement = $cell.prev().find(\"[tabindex]\").last()\r\n }\r\n _events_engine.default.trigger($prevElement, \"focus\")\r\n }\r\n });\r\n $editor = (0, _renderer.default)(\"
\").addClass(EDITOR_CONTAINER_CLASS + \" \" + that.addWidgetPrefix(FILTER_RANGE_END_CLASS)).appendTo(contentElement);\r\n editorOptions = that._getEditorOptions($editor, column);\r\n editorOptions.sharedData = sharedData;\r\n that._renderEditor($editor, editorOptions);\r\n _events_engine.default.on($editor.find(EDITORS_INPUT_SELECTOR), \"keydown\", function(e) {\r\n if (\"tab\" === (0, _index.normalizeKeyName)(e) && !e.shiftKey) {\r\n e.preventDefault();\r\n that._hideFilterRange();\r\n _events_engine.default.trigger($cell.next().find(\"[tabindex]\").first(), \"focus\")\r\n }\r\n });\r\n return (0, _renderer.default)(contentElement).addClass(that.getWidgetContainerClass())\r\n },\r\n onShown: function(e) {\r\n var $editor = e.component.$content().find(\".\" + EDITOR_CONTAINER_CLASS).first();\r\n _events_engine.default.trigger($editor.find(EDITORS_INPUT_SELECTOR), \"focus\")\r\n },\r\n onHidden: function() {\r\n column = that._columnsController.columnOption(column.index);\r\n $cell.find(\".\" + MENU_CLASS).parent().addClass(EDITOR_WITH_MENU_CLASS);\r\n if (\"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n that._updateFilterRangeContent($cell, getRangeTextByFilterValue(that, column));\r\n that.component.updateDimensions()\r\n }\r\n }\r\n })\r\n },\r\n _updateFilterRangeOverlay: function(options) {\r\n var overlayInstance = this._filterRangeOverlayInstance;\r\n overlayInstance && overlayInstance.option(options)\r\n },\r\n _showFilterRange: function($cell, column) {\r\n var that = this;\r\n var $overlay = $cell.children(\".\" + that.addWidgetPrefix(FILTER_RANGE_OVERLAY_CLASS));\r\n var overlayInstance = $overlay.length && $overlay.data(\"dxOverlay\");\r\n if (!overlayInstance && column) {\r\n overlayInstance = that._initFilterRangeOverlay($cell, column)\r\n }\r\n if (!overlayInstance.option(\"visible\")) {\r\n that._filterRangeOverlayInstance && that._filterRangeOverlayInstance.hide();\r\n that._filterRangeOverlayInstance = overlayInstance;\r\n that._updateFilterRangeOverlay({\r\n width: $cell.outerWidth(true) + CORRECT_FILTER_RANGE_OVERLAY_WIDTH\r\n });\r\n that._filterRangeOverlayInstance && that._filterRangeOverlayInstance.show()\r\n }\r\n },\r\n _hideFilterRange: function() {\r\n var overlayInstance = this._filterRangeOverlayInstance;\r\n overlayInstance && overlayInstance.hide()\r\n },\r\n getFilterRangeOverlayInstance: function() {\r\n return this._filterRangeOverlayInstance\r\n },\r\n _createRow: function(row) {\r\n var _this = this;\r\n var $row = this.callBase(row);\r\n if (\"filter\" === row.rowType) {\r\n $row.addClass(this.addWidgetPrefix(FILTER_ROW_CLASS));\r\n if (!this.option(\"useLegacyKeyboardNavigation\")) {\r\n _events_engine.default.on($row, \"keydown\", function(event) {\r\n return (0, _accessibility.selectView)(\"filterRow\", _this, event)\r\n })\r\n }\r\n }\r\n return $row\r\n },\r\n _getRows: function() {\r\n var result = this.callBase();\r\n if (this.isFilterRowVisible()) {\r\n result.push({\r\n rowType: \"filter\"\r\n })\r\n }\r\n return result\r\n },\r\n _renderFilterCell: function(cell, options) {\r\n var that = this;\r\n var column = options.column;\r\n var $cell = (0, _renderer.default)(cell);\r\n if (that.component.option(\"showColumnHeaders\")) {\r\n that.setAria(\"describedby\", column.headerId, $cell)\r\n }\r\n that.setAria(\"label\", _message.default.format(\"dxDataGrid-ariaFilterCell\"), $cell);\r\n $cell.addClass(EDITOR_CELL_CLASS);\r\n var $container = (0, _renderer.default)(\"
\").appendTo($cell);\r\n var $editorContainer = (0, _renderer.default)(\"
\").addClass(EDITOR_CONTAINER_CLASS).appendTo($container);\r\n if (\"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n that._renderFilterRangeContent($cell, column)\r\n } else {\r\n var editorOptions = that._getEditorOptions($editorContainer, column);\r\n that._renderEditor($editorContainer, editorOptions)\r\n }\r\n var alignment = column.alignment;\r\n if (alignment && \"center\" !== alignment) {\r\n $cell.find(EDITORS_INPUT_SELECTOR).first().css(\"textAlign\", column.alignment)\r\n }\r\n if (column.filterOperations && column.filterOperations.length) {\r\n that._renderFilterOperationChooser($container, column, $editorContainer)\r\n }\r\n },\r\n _renderCellContent: function($cell, options) {\r\n var that = this;\r\n var column = options.column;\r\n if (\"filter\" === options.rowType) {\r\n if (column.command) {\r\n $cell.html(\" \")\r\n } else {\r\n if (column.allowFiltering) {\r\n that.renderTemplate($cell, that._renderFilterCell.bind(that), options).done(function() {\r\n that._updateCell($cell, options)\r\n });\r\n return\r\n }\r\n }\r\n }\r\n that.callBase($cell, options)\r\n },\r\n _getEditorOptions: function($editorContainer, column) {\r\n var that = this;\r\n var accessibilityOptions = {\r\n editorOptions: {\r\n inputAttr: that._getFilterInputAccessibilityAttributes(column)\r\n }\r\n };\r\n var result = (0, _extend.extend)(accessibilityOptions, column, {\r\n value: getFilterValue(that, column.index, $editorContainer),\r\n parentType: \"filterRow\",\r\n showAllText: that.option(\"filterRow.showAllText\"),\r\n updateValueTimeout: \"onClick\" === that.option(\"filterRow.applyFilter\") ? 0 : FILTERING_TIMEOUT,\r\n width: null,\r\n setValue: function(value, notFireEvent) {\r\n updateFilterValue(that, {\r\n column: column,\r\n value: value,\r\n container: $editorContainer,\r\n notFireEvent: notFireEvent\r\n })\r\n }\r\n });\r\n if (\"between\" === getColumnSelectedFilterOperation(that, column)) {\r\n if ($editorContainer.hasClass(that.addWidgetPrefix(FILTER_RANGE_START_CLASS))) {\r\n result.placeholder = that.option(\"filterRow.betweenStartText\")\r\n } else {\r\n result.placeholder = that.option(\"filterRow.betweenEndText\")\r\n }\r\n }\r\n return result\r\n },\r\n _getFilterInputAccessibilityAttributes: function(column) {\r\n var columnAriaLabel = _message.default.format(\"dxDataGrid-ariaFilterCell\");\r\n if (this.component.option(\"showColumnHeaders\")) {\r\n return {\r\n \"aria-label\": columnAriaLabel,\r\n \"aria-describedby\": column.headerId\r\n }\r\n }\r\n return {\r\n \"aria-label\": columnAriaLabel\r\n }\r\n },\r\n _renderEditor: function($editorContainer, options) {\r\n $editorContainer.empty();\r\n return this.getController(\"editorFactory\").createEditor((0, _renderer.default)(\"
\").appendTo($editorContainer), options)\r\n },\r\n _renderFilterRangeContent: function($cell, column) {\r\n var that = this;\r\n var $editorContainer = $cell.find(\".\" + EDITOR_CONTAINER_CLASS).first();\r\n $editorContainer.empty();\r\n var $filterRangeContent = (0, _renderer.default)(\"
\").addClass(FILTER_RANGE_CONTENT_CLASS).attr(\"tabindex\", this.option(\"tabIndex\"));\r\n _events_engine.default.on($filterRangeContent, \"focusin\", function() {\r\n that._showFilterRange($cell, column)\r\n });\r\n $filterRangeContent.appendTo($editorContainer);\r\n that._updateFilterRangeContent($cell, getRangeTextByFilterValue(that, column))\r\n },\r\n _updateFilterRangeContent: function($cell, value) {\r\n var $filterRangeContent = $cell.find(\".\" + FILTER_RANGE_CONTENT_CLASS);\r\n if ($filterRangeContent.length) {\r\n if (\"\" === value) {\r\n $filterRangeContent.html(\" \")\r\n } else {\r\n $filterRangeContent.text(value)\r\n }\r\n }\r\n },\r\n _updateFilterOperationChooser: function($menu, column, $editorContainer) {\r\n var that = this;\r\n var isCellWasFocused;\r\n var restoreFocus = function() {\r\n var menu = _menu.default.getInstance($menu);\r\n menu && menu.option(\"focusedElement\", null);\r\n isCellWasFocused && that._focusEditor($editorContainer)\r\n };\r\n that._createComponent($menu, _menu.default, {\r\n integrationOptions: {},\r\n activeStateEnabled: false,\r\n selectionMode: \"single\",\r\n cssClass: that.getWidgetContainerClass() + \" \" + CELL_FOCUS_DISABLED_CLASS + \" \" + FILTER_MENU,\r\n showFirstSubmenuMode: \"onHover\",\r\n hideSubmenuOnMouseLeave: true,\r\n items: [{\r\n disabled: column.filterOperations && column.filterOperations.length ? false : true,\r\n icon: OPERATION_ICONS[getColumnSelectedFilterOperation(that, column) || \"default\"],\r\n selectable: false,\r\n items: that._getFilterOperationMenuItems(column)\r\n }],\r\n onItemClick: function(properties) {\r\n var selectedFilterOperation = properties.itemData.name;\r\n var columnSelectedFilterOperation = getColumnSelectedFilterOperation(that, column);\r\n var notFocusEditor = false;\r\n var isOnClickMode = isOnClickApplyFilterMode(that);\r\n var options = {};\r\n if (properties.itemData.items || selectedFilterOperation && selectedFilterOperation === columnSelectedFilterOperation) {\r\n return\r\n }\r\n if (selectedFilterOperation) {\r\n options[isOnClickMode ? \"bufferedSelectedFilterOperation\" : \"selectedFilterOperation\"] = selectedFilterOperation;\r\n if (\"between\" === selectedFilterOperation || \"between\" === columnSelectedFilterOperation) {\r\n notFocusEditor = \"between\" === selectedFilterOperation;\r\n options[isOnClickMode ? \"bufferedFilterValue\" : \"filterValue\"] = null\r\n }\r\n } else {\r\n options[isOnClickMode ? \"bufferedFilterValue\" : \"filterValue\"] = null;\r\n options[isOnClickMode ? \"bufferedSelectedFilterOperation\" : \"selectedFilterOperation\"] = column.defaultSelectedFilterOperation || null\r\n }\r\n that._columnsController.columnOption(column.index, options);\r\n that._applyFilterViewController.setHighLight($editorContainer, true);\r\n if (!selectedFilterOperation) {\r\n var editor = getEditorInstance($editorContainer);\r\n if (editor && \"dxDateBox\" === editor.NAME && !editor.option(\"isValid\")) {\r\n editor.reset();\r\n editor.option(\"isValid\", true)\r\n }\r\n }\r\n if (!notFocusEditor) {\r\n that._focusEditor($editorContainer)\r\n } else {\r\n that._showFilterRange($editorContainer.closest(\".\" + EDITOR_CELL_CLASS), column)\r\n }\r\n },\r\n onSubmenuShown: function() {\r\n isCellWasFocused = that._isEditorFocused($editorContainer);\r\n that.getController(\"editorFactory\").loseFocus()\r\n },\r\n onSubmenuHiding: function() {\r\n _events_engine.default.trigger($menu, \"blur\");\r\n restoreFocus()\r\n },\r\n onContentReady: function(e) {\r\n _events_engine.default.on($menu, \"blur\", function() {\r\n var menu = e.component;\r\n menu._hideSubmenu(menu._visibleSubmenu);\r\n restoreFocus()\r\n })\r\n },\r\n rtlEnabled: that.option(\"rtlEnabled\")\r\n })\r\n },\r\n _isEditorFocused: function($container) {\r\n return $container.hasClass(FOCUSED_CLASS) || $container.parents(\".\" + FOCUSED_CLASS).length\r\n },\r\n _focusEditor: function($container) {\r\n this.getController(\"editorFactory\").focus($container);\r\n _events_engine.default.trigger($container.find(EDITORS_INPUT_SELECTOR), \"focus\")\r\n },\r\n _renderFilterOperationChooser: function($container, column, $editorContainer) {\r\n var that = this;\r\n var $menu;\r\n if (that.option(\"filterRow.showOperationChooser\")) {\r\n $container.addClass(EDITOR_WITH_MENU_CLASS);\r\n $menu = (0, _renderer.default)(\"
\").prependTo($container);\r\n that._updateFilterOperationChooser($menu, column, $editorContainer)\r\n }\r\n },\r\n _getFilterOperationMenuItems: function(column) {\r\n var that = this;\r\n var result = [{}];\r\n var filterRowOptions = that.option(\"filterRow\");\r\n var operationDescriptions = filterRowOptions && filterRowOptions.operationDescriptions || {};\r\n if (column.filterOperations && column.filterOperations.length) {\r\n var availableFilterOperations = column.filterOperations.filter(function(value) {\r\n return (0, _type.isDefined)(OPERATION_DESCRIPTORS[value])\r\n });\r\n result = (0, _iterator.map)(availableFilterOperations, function(value) {\r\n var descriptionName = OPERATION_DESCRIPTORS[value];\r\n return {\r\n name: value,\r\n selected: (getColumnSelectedFilterOperation(that, column) || column.defaultFilterOperation) === value,\r\n text: operationDescriptions[descriptionName],\r\n icon: OPERATION_ICONS[value]\r\n }\r\n });\r\n result.push({\r\n name: null,\r\n text: filterRowOptions && filterRowOptions.resetOperationText,\r\n icon: OPERATION_ICONS.default\r\n })\r\n }\r\n return result\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"filterRow\":\r\n case \"showColumnLines\":\r\n this._invalidate(true, true);\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n }\r\n }\r\n}();\r\nvar DataControllerFilterRowExtender = {\r\n skipCalculateColumnFilters: function() {\r\n return false\r\n },\r\n _calculateAdditionalFilter: function() {\r\n if (this.skipCalculateColumnFilters()) {\r\n return this.callBase()\r\n }\r\n var filters = [this.callBase()];\r\n var columns = this._columnsController.getVisibleColumns(null, true);\r\n (0, _iterator.each)(columns, function() {\r\n if (this.allowFiltering && this.calculateFilterExpression && (0, _type.isDefined)(this.filterValue)) {\r\n var filter = this.createFilterExpression(this.filterValue, this.selectedFilterOperation || this.defaultFilterOperation, \"filterRow\");\r\n filters.push(filter)\r\n }\r\n });\r\n return _uiGrid_core2.default.combineFilters(filters)\r\n }\r\n};\r\nvar ApplyFilterViewController = _uiGrid_core.default.ViewController.inherit({\r\n _getHeaderPanel: function() {\r\n if (!this._headerPanel) {\r\n this._headerPanel = this.getView(\"headerPanel\")\r\n }\r\n return this._headerPanel\r\n },\r\n setHighLight: function($element, value) {\r\n if (isOnClickApplyFilterMode(this)) {\r\n $element && $element.toggleClass(HIGHLIGHT_OUTLINE_CLASS, value) && $element.closest(\".\" + EDITOR_CELL_CLASS).toggleClass(FILTER_MODIFIED_CLASS, value);\r\n this._getHeaderPanel().enableApplyButton(value)\r\n }\r\n },\r\n applyFilter: function() {\r\n var columnsController = this.getController(\"columns\");\r\n var columns = columnsController.getColumns();\r\n columnsController.beginUpdate();\r\n for (var i = 0; i < columns.length; i++) {\r\n var column = columns[i];\r\n if (void 0 !== column.bufferedFilterValue) {\r\n columnsController.columnOption(i, \"filterValue\", column.bufferedFilterValue);\r\n column.bufferedFilterValue = void 0\r\n }\r\n if (void 0 !== column.bufferedSelectedFilterOperation) {\r\n columnsController.columnOption(i, \"selectedFilterOperation\", column.bufferedSelectedFilterOperation);\r\n column.bufferedSelectedFilterOperation = void 0\r\n }\r\n }\r\n columnsController.endUpdate();\r\n this.removeHighLights()\r\n },\r\n removeHighLights: function() {\r\n if (isOnClickApplyFilterMode(this)) {\r\n var columnHeadersViewElement = this.getView(\"columnHeadersView\").element();\r\n columnHeadersViewElement.find(\".\" + this.addWidgetPrefix(FILTER_ROW_CLASS) + \" .\" + HIGHLIGHT_OUTLINE_CLASS).removeClass(HIGHLIGHT_OUTLINE_CLASS);\r\n columnHeadersViewElement.find(\".\" + this.addWidgetPrefix(FILTER_ROW_CLASS) + \" .\" + FILTER_MODIFIED_CLASS).removeClass(FILTER_MODIFIED_CLASS);\r\n this._getHeaderPanel().enableApplyButton(false)\r\n }\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n filterRow: {\r\n visible: false,\r\n showOperationChooser: true,\r\n showAllText: _message.default.format(\"dxDataGrid-filterRowShowAllText\"),\r\n resetOperationText: _message.default.format(\"dxDataGrid-filterRowResetOperationText\"),\r\n applyFilter: \"auto\",\r\n applyFilterText: _message.default.format(\"dxDataGrid-applyFilterText\"),\r\n operationDescriptions: {\r\n equal: _message.default.format(\"dxDataGrid-filterRowOperationEquals\"),\r\n notEqual: _message.default.format(\"dxDataGrid-filterRowOperationNotEquals\"),\r\n lessThan: _message.default.format(\"dxDataGrid-filterRowOperationLess\"),\r\n lessThanOrEqual: _message.default.format(\"dxDataGrid-filterRowOperationLessOrEquals\"),\r\n greaterThan: _message.default.format(\"dxDataGrid-filterRowOperationGreater\"),\r\n greaterThanOrEqual: _message.default.format(\"dxDataGrid-filterRowOperationGreaterOrEquals\"),\r\n startsWith: _message.default.format(\"dxDataGrid-filterRowOperationStartsWith\"),\r\n contains: _message.default.format(\"dxDataGrid-filterRowOperationContains\"),\r\n notContains: _message.default.format(\"dxDataGrid-filterRowOperationNotContains\"),\r\n endsWith: _message.default.format(\"dxDataGrid-filterRowOperationEndsWith\"),\r\n between: _message.default.format(\"dxDataGrid-filterRowOperationBetween\"),\r\n isBlank: _message.default.format(\"dxFilterBuilder-filterOperationIsBlank\"),\r\n isNotBlank: _message.default.format(\"dxFilterBuilder-filterOperationIsNotBlank\")\r\n },\r\n betweenStartText: _message.default.format(\"dxDataGrid-filterRowOperationBetweenStartText\"),\r\n betweenEndText: _message.default.format(\"dxDataGrid-filterRowOperationBetweenEndText\")\r\n }\r\n }\r\n },\r\n controllers: {\r\n applyFilter: ApplyFilterViewController\r\n },\r\n extenders: {\r\n controllers: {\r\n data: DataControllerFilterRowExtender,\r\n columnsResizer: {\r\n _startResizing: function() {\r\n var that = this;\r\n that.callBase.apply(that, arguments);\r\n if (that.isResizing()) {\r\n var overlayInstance = that._columnHeadersView.getFilterRangeOverlayInstance();\r\n if (overlayInstance) {\r\n var cellIndex = overlayInstance.$element().closest(\"td\").index();\r\n if (cellIndex === that._targetPoint.columnIndex || cellIndex === that._targetPoint.columnIndex + 1) {\r\n overlayInstance.$content().hide()\r\n }\r\n }\r\n }\r\n },\r\n _endResizing: function() {\r\n var that = this;\r\n var $cell;\r\n if (that.isResizing()) {\r\n var overlayInstance = that._columnHeadersView.getFilterRangeOverlayInstance();\r\n if (overlayInstance) {\r\n $cell = overlayInstance.$element().closest(\"td\");\r\n that._columnHeadersView._updateFilterRangeOverlay({\r\n width: $cell.outerWidth(true) + CORRECT_FILTER_RANGE_OVERLAY_WIDTH\r\n });\r\n overlayInstance.$content().show()\r\n }\r\n }\r\n that.callBase.apply(that, arguments)\r\n }\r\n }\r\n },\r\n views: {\r\n columnHeadersView: ColumnHeadersViewFilterRowExtender,\r\n headerPanel: {\r\n _getToolbarItems: function() {\r\n var items = this.callBase();\r\n var filterItem = this._prepareFilterItem(items);\r\n return filterItem.concat(items)\r\n },\r\n _prepareFilterItem: function() {\r\n var that = this;\r\n var filterItem = [];\r\n if (that._isShowApplyFilterButton()) {\r\n var hintText = that.option(\"filterRow.applyFilterText\");\r\n var columns = that._columnsController.getColumns();\r\n var disabled = !columns.filter(function(column) {\r\n return void 0 !== column.bufferedFilterValue\r\n }).length;\r\n var onInitialized = function(e) {\r\n (0, _renderer.default)(e.element).addClass(that._getToolbarButtonClass(APPLY_BUTTON_CLASS))\r\n };\r\n var onClickHandler = function() {\r\n that._applyFilterViewController.applyFilter()\r\n };\r\n var toolbarItem = {\r\n widget: \"dxButton\",\r\n options: {\r\n icon: \"apply-filter\",\r\n disabled: disabled,\r\n onClick: onClickHandler,\r\n hint: hintText,\r\n text: hintText,\r\n onInitialized: onInitialized\r\n },\r\n showText: \"inMenu\",\r\n name: \"applyFilterButton\",\r\n location: \"after\",\r\n locateInMenu: \"auto\",\r\n sortIndex: 10\r\n };\r\n filterItem.push(toolbarItem)\r\n }\r\n return filterItem\r\n },\r\n _isShowApplyFilterButton: function() {\r\n var filterRowOptions = this.option(\"filterRow\");\r\n return filterRowOptions && filterRowOptions.visible && \"onClick\" === filterRowOptions.applyFilter\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._dataController = this.getController(\"data\");\r\n this._applyFilterViewController = this.getController(\"applyFilter\")\r\n },\r\n enableApplyButton: function(value) {\r\n this.setToolbarItemDisabled(\"applyFilterButton\", !value)\r\n },\r\n isVisible: function() {\r\n return this.callBase() || this._isShowApplyFilterButton()\r\n },\r\n optionChanged: function(args) {\r\n if (\"filterRow\" === args.name) {\r\n this._invalidate();\r\n args.handled = true\r\n } else {\r\n this.callBase(args)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (events/double_click.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.name = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _dom = require(\"../core/utils/dom\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _class = _interopRequireDefault(require(\"../core/class\"));\r\nvar _event_registrator = _interopRequireDefault(require(\"./core/event_registrator\"));\r\nvar _click = require(\"./click\");\r\nvar _index = require(\"./utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DBLCLICK_EVENT_NAME = \"dxdblclick\";\r\nexports.name = DBLCLICK_EVENT_NAME;\r\nvar DBLCLICK_NAMESPACE = \"dxDblClick\";\r\nvar NAMESPACED_CLICK_EVENT = (0, _index.addNamespace)(_click.name, DBLCLICK_NAMESPACE);\r\nvar DBLCLICK_TIMEOUT = 300;\r\nvar DblClick = _class.default.inherit({\r\n ctor: function() {\r\n this._handlerCount = 0;\r\n this._forgetLastClick()\r\n },\r\n _forgetLastClick: function() {\r\n this._firstClickTarget = null;\r\n this._lastClickTimeStamp = -DBLCLICK_TIMEOUT\r\n },\r\n add: function() {\r\n if (this._handlerCount <= 0) {\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), NAMESPACED_CLICK_EVENT, this._clickHandler.bind(this))\r\n }\r\n this._handlerCount++\r\n },\r\n _clickHandler: function(e) {\r\n var timeStamp = e.timeStamp || Date.now();\r\n var timeBetweenClicks = timeStamp - this._lastClickTimeStamp;\r\n var isSimulated = timeBetweenClicks < 0;\r\n var isDouble = !isSimulated && timeBetweenClicks < DBLCLICK_TIMEOUT;\r\n if (isDouble) {\r\n (0, _index.fireEvent)({\r\n type: DBLCLICK_EVENT_NAME,\r\n target: (0, _dom.closestCommonParent)(this._firstClickTarget, e.target),\r\n originalEvent: e\r\n });\r\n this._forgetLastClick()\r\n } else {\r\n this._firstClickTarget = e.target;\r\n this._lastClickTimeStamp = timeStamp\r\n }\r\n },\r\n remove: function() {\r\n this._handlerCount--;\r\n if (this._handlerCount <= 0) {\r\n this._forgetLastClick();\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), NAMESPACED_CLICK_EVENT)\r\n }\r\n }\r\n});\r\n(0, _event_registrator.default)(DBLCLICK_EVENT_NAME, new DblClick);\r\n","/**\r\n * DevExtreme (ui/filter_builder/between.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getConfig = getConfig;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\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 = (0, _renderer.default)(\"
\").addClass(FILTER_BUILDER_RANGE_START_CLASS);\r\n var $editorEnd = (0, _renderer.default)(\"
\").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((0, _renderer.default)(\"\").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, (0, _extend.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, (0, _extend.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\n\r\nfunction 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 (ui/grid_core/ui.grid_core.utils.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _filtering = _interopRequireDefault(require(\"../shared/filtering\"));\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _load_panel = _interopRequireDefault(require(\"../load_panel\"));\r\nvar _utils = _interopRequireDefault(require(\"../../data/utils\"));\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\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 (!(0, _type.isDefined)(value)) {\r\n return null\r\n } else {\r\n if (isDateType(this.dataType)) {\r\n var nameIntervalSelector = arguments[0];\r\n return DATE_INTERVAL_SELECTORS[nameIntervalSelector](value)\r\n } else {\r\n if (\"number\" === this.dataType) {\r\n var groupInterval = arguments[0];\r\n return Math.floor(Number(value) / groupInterval) * groupInterval\r\n }\r\n }\r\n }\r\n};\r\nvar equalSelectors = function(selector1, selector2) {\r\n if ((0, _type.isFunction)(selector1) && (0, _type.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 = _utils.default.normalizeSortingInfo(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 = _format_helper.default.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 ? (0, _string.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 {\r\n if ((0, _type.isFunction)(filter1) && filter1.columnIndex >= 0 && (0, _type.isFunction)(filter2) && filter2.columnIndex >= 0) {\r\n return filter1.columnIndex === filter2.columnIndex && (0, _data.toComparable)(filter1.filterValue) === (0, _data.toComparable)(filter2.filterValue)\r\n } else {\r\n return (0, _data.toComparable)(filter1) == (0, _data.toComparable)(filter2)\r\n }\r\n }\r\n};\r\nvar _default = {\r\n renderNoDataText: function($element) {\r\n var that = this;\r\n $element = $element || this.element();\r\n if (!$element) {\r\n return\r\n }\r\n var noDataClass = that.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 = (0, _renderer.default)(\"\").addClass(noDataClass).appendTo($element)\r\n }\r\n if (isVisible && !isLoading) {\r\n noDataElement.removeClass(\"dx-hidden\").text(that._getNoDataText())\r\n } else {\r\n noDataElement.addClass(\"dx-hidden\")\r\n }\r\n },\r\n renderLoadPanel: function($element, $container, isLocalStore) {\r\n var that = this;\r\n var loadPanelOptions;\r\n that._loadPanel && that._loadPanel.$element().remove();\r\n loadPanelOptions = that.option(\"loadPanel\");\r\n if (loadPanelOptions && (\"auto\" === loadPanelOptions.enabled ? !isLocalStore : loadPanelOptions.enabled)) {\r\n loadPanelOptions = (0, _extend.extend)({\r\n shading: false,\r\n message: loadPanelOptions.text,\r\n position: function() {\r\n var $window = (0, _renderer.default)((0, _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 that._loadPanel = that._createComponent((0, _renderer.default)(\"
\").appendTo($container), _load_panel.default, loadPanelOptions)\r\n } else {\r\n that._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 = (0, _type.isDefined)(keyName) ? items[i][keyName] : items[i];\r\n if ((0, _common.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 {\r\n if (column.calculateDisplayValue && data && \"group\" !== rowType) {\r\n return column.calculateDisplayValue(data)\r\n } else {\r\n if (column.lookup && !(\"group\" === rowType && (column.calculateGroupValue || column.calculateDisplayValue))) {\r\n return column.lookup.calculateCellValue(value)\r\n }\r\n }\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 = _filtering.default.getGroupInterval(column);\r\n if (groupInterval) {\r\n (0, _iterator.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 result(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: function(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 ? (0, _position.getBoundingRect)(item[0]).width : 0) : 0,\r\n y: offset ? offset.top + (isVertical && i === cellsLength ? (0, _position.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 = (0, _renderer.default)(container);\r\n if ((0, _type.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 (0, _renderer.default)(\"
\").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 _events_engine.default.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 (0, _deferred.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(function(column) {\r\n return column && !column.command && !column.fixed && false !== column.allowResizing\r\n });\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\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.filter_builder.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.filter_builder\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"filterBuilder\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/data_grid/aggregate_calculator.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _errors = _interopRequireDefault(require(\"../../data/errors\"));\r\nvar _utils = _interopRequireDefault(require(\"../../data/utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction 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 === _utils.default.aggregators.count\r\n}\r\n\r\nfunction normalizeAggregate(aggregate) {\r\n var selector = (0, _data.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 = _utils.default.aggregators[aggregator];\r\n if (!aggregator) {\r\n throw _errors.default.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\nvar _default = _class.default.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 ? (0, _type.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\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.column_fixing.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.column_fixing\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"columnFixing\", _uiGrid_core.default);\r\n"],"sourceRoot":""}
\").attr({\r\n colSpan: that.getController(\"columns\").getVisibleColumns().length,\r\n role: \"presentation\"\r\n }).prepend($closeButton).append($errorMessage).appendTo($errorRow);\r\n return $errorRow\r\n }\r\n return $errorMessage\r\n },\r\n _renderErrorMessage: function(error) {\r\n var message = error.url ? error.message.replace(error.url, \"\") : error.message || error;\r\n var $message = (0, _renderer.default)(\"
\").addClass(ERROR_MESSAGE_CLASS).text(message);\r\n if (error.url) {\r\n (0, _renderer.default)(\"\").attr(\"href\", error.url).text(error.url).appendTo($message)\r\n }\r\n return $message\r\n },\r\n renderErrorRow: function(error, rowIndex, $popupContent) {\r\n var that = this;\r\n var $errorMessageElement;\r\n var $firstErrorRow;\r\n if ($popupContent) {\r\n $popupContent.find(\".\" + ERROR_MESSAGE_CLASS).remove();\r\n $errorMessageElement = that._createErrorRow(error);\r\n $popupContent.prepend($errorMessageElement);\r\n return $errorMessageElement\r\n }\r\n var viewElement = rowIndex >= 0 || !that._columnHeadersView.isVisible() ? that._rowsView : that._columnHeadersView;\r\n var $tableElements = $popupContent || viewElement.getTableElements();\r\n (0, _iterator.each)($tableElements, function(_, tableElement) {\r\n $errorMessageElement = that._createErrorRow(error, $tableElements);\r\n $firstErrorRow = $firstErrorRow || $errorMessageElement;\r\n if (rowIndex >= 0) {\r\n var $row = viewElement._getRowElements((0, _renderer.default)(tableElement)).eq(rowIndex);\r\n that.removeErrorRow($row.next());\r\n $errorMessageElement.insertAfter($row)\r\n } else {\r\n var $tbody = (0, _renderer.default)(tableElement).children(\"tbody\");\r\n var rowElements = $tbody.children(\"tr\");\r\n if (that._columnHeadersView.isVisible()) {\r\n that.removeErrorRow(rowElements.last());\r\n (0, _renderer.default)(tableElement).append($errorMessageElement)\r\n } else {\r\n that.removeErrorRow(rowElements.first());\r\n $tbody.first().prepend($errorMessageElement)\r\n }\r\n }\r\n });\r\n if (!$popupContent) {\r\n var resizingController = that.getController(\"resizing\");\r\n resizingController && resizingController.fireContentReadyAction()\r\n }\r\n return $firstErrorRow\r\n },\r\n removeErrorRow: function($row) {\r\n if (!$row) {\r\n var $columnHeaders = this._columnHeadersView && this._columnHeadersView.element();\r\n $row = $columnHeaders && $columnHeaders.find(\".\" + ERROR_ROW_CLASS);\r\n if (!$row || !$row.length) {\r\n var $rowsViewElement = this._rowsView.element();\r\n $row = $rowsViewElement && $rowsViewElement.find(\".\" + ERROR_ROW_CLASS)\r\n }\r\n }\r\n $row && $row.hasClass(ERROR_ROW_CLASS) && $row.remove()\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"errorRowEnabled\":\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n errorRowEnabled: true\r\n }\r\n },\r\n controllers: {\r\n errorHandling: ErrorHandlingController\r\n },\r\n extenders: {\r\n controllers: {\r\n data: {\r\n init: function() {\r\n var that = this;\r\n var errorHandlingController = that.getController(\"errorHandling\");\r\n that.callBase();\r\n that.dataErrorOccurred.add(function(error, $popupContent) {\r\n if (that.option(\"errorRowEnabled\")) {\r\n errorHandlingController.renderErrorRow(error, void 0, $popupContent)\r\n }\r\n });\r\n that.changed.add(function(e) {\r\n if (e && \"loadError\" === e.changeType) {\r\n return\r\n }\r\n var errorHandlingController = that.getController(\"errorHandling\");\r\n var editingController = that.getController(\"editing\");\r\n if (editingController && !editingController.hasChanges()) {\r\n errorHandlingController && errorHandlingController.removeErrorRow()\r\n }\r\n })\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.state_storing_core.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.StateStoringController = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _storage = require(\"../../core/utils/storage\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar 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 }(0, _iterator.each)(state, function(key, value) {\r\n if ((0, _type.isPlainObject)(value) || Array.isArray(value)) {\r\n parseDates(value)\r\n } else {\r\n 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\n};\r\nvar StateStoringController = _uiGrid_core.default.ViewController.inherit(function() {\r\n var getStorage = function(options) {\r\n var storage = \"sessionStorage\" === options.type ? (0, _storage.sessionStorage)() : (0, _window.getWindow)().localStorage;\r\n if (!storage) {\r\n if (\"file:\" === (0, _window.getWindow)().location.protocol && _browser.default.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 (0, _type.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 _ui.default.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 _ui.default.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 _events_engine.default.on((0, _window.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 var _this = this;\r\n this._isLoading = true;\r\n var loadResult = (0, _deferred.fromPromise)(this._loadState());\r\n loadResult.always(function() {\r\n _this._isLoaded = true;\r\n _this._isLoading = false\r\n }).done(function(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 (0, _extend.extend)(true, {}, that._state)\r\n } else {\r\n that._state = (0, _extend.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 var that = this;\r\n switch (args.name) {\r\n case \"stateStoring\":\r\n if (that.isEnabled() && !that.isLoading()) {\r\n that.load()\r\n }\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n },\r\n dispose: function() {\r\n clearTimeout(this._savingTimeoutID);\r\n _events_engine.default.off((0, _window.getWindow)(), \"unload\", this._windowUnloadHandler)\r\n }\r\n }\r\n}());\r\nexports.StateStoringController = StateStoringController;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.editing.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _double_click = require(\"../../events/double_click\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _array_utils = require(\"../../data/array_utils\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _dialog = require(\"../dialog\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _form = _interopRequireDefault(require(\"../form\"));\r\nvar _hold = _interopRequireDefault(require(\"../../events/hold\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar iconUtils = _interopRequireWildcard(require(\"../../core/utils/icon\"));\r\nvar _ui = _interopRequireDefault(require(\"../scroll_view/ui.scrollable\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n if (enumerableOnly) {\r\n symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })\r\n }\r\n keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n })\r\n } else {\r\n if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n } else {\r\n ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n if (!o) {\r\n return\r\n }\r\n if (\"string\" === typeof o) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n var n = Object.prototype.toString.call(o).slice(8, -1);\r\n if (\"Object\" === n && o.constructor) {\r\n n = o.constructor.name\r\n }\r\n if (\"Map\" === n || \"Set\" === n) {\r\n return Array.from(o)\r\n }\r\n if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n return Array.from(iter)\r\n }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return _arrayLikeToArray(arr)\r\n }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n if (null == len || len > arr.length) {\r\n len = arr.length\r\n }\r\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i]\r\n }\r\n return arr2\r\n}\r\nvar EDIT_FORM_CLASS = \"edit-form\";\r\nvar EDIT_FORM_ITEM_CLASS = \"edit-form-item\";\r\nvar FOCUS_OVERLAY_CLASS = \"focus-overlay\";\r\nvar READONLY_CLASS = \"readonly\";\r\nvar EDIT_POPUP_CLASS = \"edit-popup\";\r\nvar FORM_BUTTONS_CONTAINER_CLASS = \"form-buttons-container\";\r\nvar ADD_ROW_BUTTON_CLASS = \"addrow-button\";\r\nvar DROPDOWN_EDITOR_OVERLAY_CLASS = \"dx-dropdowneditor-overlay\";\r\nvar LINK_CLASS = \"dx-link\";\r\nvar EDITOR_CELL_CLASS = \"dx-editor-cell\";\r\nvar ROW_SELECTED = \"dx-selection\";\r\nvar EDIT_ROW = \"dx-edit-row\";\r\nvar EDIT_BUTTON_CLASS = \"dx-edit-button\";\r\nvar COMMAND_EDIT_CLASS = \"dx-command-edit\";\r\nvar COMMAND_EDIT_WITH_ICONS_CLASS = COMMAND_EDIT_CLASS + \"-with-icons\";\r\nvar SCROLLABLE_CONTAINER_CLASS = \"dx-scrollable-container\";\r\nvar BUTTON_CLASS = \"dx-button\";\r\nvar INSERT_INDEX = \"__DX_INSERT_INDEX__\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar ROW_REMOVED = \"dx-row-removed\";\r\nvar ROW_INSERTED = \"dx-row-inserted\";\r\nvar ROW_MODIFIED = \"dx-row-modified\";\r\nvar CELL_MODIFIED = \"dx-cell-modified\";\r\nvar EDITING_NAMESPACE = \"dxDataGridEditing\";\r\nvar DATA_ROW_CLASS = \"dx-data-row\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar EDITORS_INPUT_SELECTOR = \"input:not([type='hidden'])\";\r\nvar FOCUSABLE_ELEMENT_SELECTOR = \"[tabindex], \" + EDITORS_INPUT_SELECTOR;\r\nvar EDIT_MODE_BATCH = \"batch\";\r\nvar EDIT_MODE_ROW = \"row\";\r\nvar EDIT_MODE_CELL = \"cell\";\r\nvar EDIT_MODE_FORM = \"form\";\r\nvar EDIT_MODE_POPUP = \"popup\";\r\nvar DATA_EDIT_DATA_INSERT_TYPE = \"insert\";\r\nvar DATA_EDIT_DATA_UPDATE_TYPE = \"update\";\r\nvar DATA_EDIT_DATA_REMOVE_TYPE = \"remove\";\r\nvar DEFAULT_START_EDIT_ACTION = \"click\";\r\nvar EDIT_MODES = [EDIT_MODE_BATCH, EDIT_MODE_ROW, EDIT_MODE_CELL, EDIT_MODE_FORM, EDIT_MODE_POPUP];\r\nvar ROW_BASED_MODES = [EDIT_MODE_ROW, EDIT_MODE_FORM, EDIT_MODE_POPUP];\r\nvar CELL_BASED_MODES = [EDIT_MODE_BATCH, EDIT_MODE_CELL];\r\nvar FORM_BASED_MODES = [EDIT_MODE_FORM, EDIT_MODE_POPUP];\r\nvar MODES_WITH_DELAYED_FOCUS = [EDIT_MODE_ROW, EDIT_MODE_FORM];\r\nvar TARGET_COMPONENT_NAME = \"targetComponent\";\r\nvar EDIT_LINK_CLASS = {\r\n save: \"dx-link-save\",\r\n cancel: \"dx-link-cancel\",\r\n edit: \"dx-link-edit\",\r\n undelete: \"dx-link-undelete\",\r\n \"delete\": \"dx-link-delete\",\r\n add: \"dx-link-add\"\r\n};\r\nvar EDIT_ICON_CLASS = {\r\n save: \"save\",\r\n cancel: \"revert\",\r\n edit: \"edit\",\r\n undelete: \"revert\",\r\n \"delete\": \"trash\",\r\n add: \"add\"\r\n};\r\nvar METHOD_NAMES = {\r\n edit: \"editRow\",\r\n \"delete\": \"deleteRow\",\r\n undelete: \"undeleteRow\",\r\n save: \"saveEditData\",\r\n cancel: \"cancelEditData\",\r\n add: \"addRowByRowIndex\"\r\n};\r\nvar ACTION_OPTION_NAMES = {\r\n add: \"allowAdding\",\r\n edit: \"allowUpdating\",\r\n \"delete\": \"allowDeleting\"\r\n};\r\nvar BUTTON_NAMES = [\"edit\", \"save\", \"cancel\", \"delete\", \"undelete\"];\r\nvar EDITING_POPUP_OPTION_NAME = \"editing.popup\";\r\nvar EDITING_CHANGES_OPTION_NAME = \"editing.changes\";\r\nvar EDITING_EDITROWKEY_OPTION_NAME = \"editing.editRowKey\";\r\nvar EDITING_EDITCOLUMNNAME_OPTION_NAME = \"editing.editColumnName\";\r\nvar createFailureHandler = function(deferred) {\r\n return function(arg) {\r\n var error = arg instanceof Error ? arg : new Error(arg && String(arg) || \"Unknown error\");\r\n deferred.reject(error)\r\n }\r\n};\r\nvar _getEditMode = function(that) {\r\n var editMode = that.option(\"editing.mode\");\r\n if (EDIT_MODES.indexOf(editMode) !== -1) {\r\n return editMode\r\n }\r\n return EDIT_MODE_ROW\r\n};\r\nvar _isRowEditMode = function(that) {\r\n var editMode = _getEditMode(that);\r\n return ROW_BASED_MODES.indexOf(editMode) !== -1\r\n};\r\nvar isEditingCell = function(isEditRow, cellOptions) {\r\n return cellOptions.isEditing || isEditRow && cellOptions.column.allowEditing\r\n};\r\nvar isEditingOrShowEditorAlwaysDataCell = function(isEditRow, cellOptions) {\r\n var isCommandCell = !!cellOptions.column.command;\r\n var isEditing = isEditingCell(isEditRow, cellOptions);\r\n var isEditorCell = !isCommandCell && (isEditing || cellOptions.column.showEditorAlways);\r\n return \"data\" === cellOptions.rowType && isEditorCell\r\n};\r\nvar EditingController = _uiGrid_core.default.ViewController.inherit(function() {\r\n var getDefaultEditorTemplate = function(that) {\r\n return function(container, options) {\r\n var $editor = (0, _renderer.default)(\"
\").appendTo(container);\r\n that.getController(\"editorFactory\").createEditor($editor, (0, _extend.extend)({}, options.column, {\r\n value: options.value,\r\n setValue: options.setValue,\r\n row: options.row,\r\n parentType: \"dataRow\",\r\n width: null,\r\n readOnly: !options.setValue,\r\n isOnForm: options.isOnForm,\r\n id: options.id\r\n }))\r\n }\r\n };\r\n var getEditingTexts = function(options) {\r\n var editingTexts = options.component.option(\"editing.texts\") || {};\r\n return {\r\n save: editingTexts.saveRowChanges,\r\n cancel: editingTexts.cancelRowChanges,\r\n edit: editingTexts.editRow,\r\n undelete: editingTexts.undeleteRow,\r\n \"delete\": editingTexts.deleteRow,\r\n add: editingTexts.addRowToNode\r\n }\r\n };\r\n var getButtonIndex = function(buttons, name) {\r\n var result = -1;\r\n buttons.some(function(button, index) {\r\n if (getButtonName(button) === name) {\r\n result = index;\r\n return true\r\n }\r\n });\r\n return result\r\n };\r\n\r\n function getButtonName(button) {\r\n return (0, _type.isObject)(button) ? button.name : button\r\n }\r\n var getEditorType = function(item) {\r\n var column = item.column;\r\n return item.isCustomEditorType ? item.editorType : column.formItem && column.formItem.editorType\r\n };\r\n var forEachFormItems = function forEachFormItems(items, callBack) {\r\n items.forEach(function(item) {\r\n if (item.items || item.tabs) {\r\n forEachFormItems(item.items || item.tabs, callBack)\r\n } else {\r\n callBack(item)\r\n }\r\n })\r\n };\r\n return {\r\n init: function() {\r\n var that = this;\r\n that._columnsController = that.getController(\"columns\");\r\n that._dataController = that.getController(\"data\");\r\n that._rowsView = that.getView(\"rowsView\");\r\n that._editForm = null;\r\n that._updateEditFormDeferred = null;\r\n that._lastOperation = null;\r\n if (that._deferreds) {\r\n that._deferreds.forEach(function(d) {\r\n return d.reject(\"cancel\")\r\n })\r\n }\r\n that._deferreds = [];\r\n if (!that._dataChangedHandler) {\r\n that._dataChangedHandler = that._handleDataChanged.bind(that);\r\n that._dataController.changed.add(that._dataChangedHandler)\r\n }\r\n if (!that._saveEditorHandler) {\r\n that.createAction(\"onInitNewRow\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowInserting\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowInserted\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onEditingStart\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowUpdating\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowUpdated\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowRemoving\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowRemoved\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onSaved\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onSaving\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onEditCanceling\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onEditCanceled\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n var $pointerDownTarget;\r\n var isResizing;\r\n that._pointerUpEditorHandler = function() {\r\n var _that$getController;\r\n isResizing = null === (_that$getController = that.getController(\"columnsResizer\")) || void 0 === _that$getController ? void 0 : _that$getController.isResizing()\r\n };\r\n that._pointerDownEditorHandler = function(e) {\r\n return $pointerDownTarget = (0, _renderer.default)(e.target)\r\n };\r\n that._saveEditorHandler = that.createAction(function(e) {\r\n var event = e.event;\r\n var $target = (0, _renderer.default)(event.target);\r\n var targetComponent = event[TARGET_COMPONENT_NAME];\r\n if ($pointerDownTarget && $pointerDownTarget.is(\"input\") && !$pointerDownTarget.is($target)) {\r\n return\r\n }\r\n\r\n function checkEditorPopup($element) {\r\n return $element && !!$element.closest(\".\".concat(DROPDOWN_EDITOR_OVERLAY_CLASS)).length\r\n }\r\n if (!_isRowEditMode(that) && !that._editCellInProgress) {\r\n var isEditorPopup = checkEditorPopup($target) || checkEditorPopup(null === targetComponent || void 0 === targetComponent ? void 0 : targetComponent.$element());\r\n var isDomElement = !!$target.closest((0, _window.getWindow)().document).length;\r\n var isAnotherComponent = targetComponent && !targetComponent._disposed && targetComponent !== that.component;\r\n var isAddRowButton = !!$target.closest(\".\".concat(that.addWidgetPrefix(ADD_ROW_BUTTON_CLASS))).length;\r\n var isFocusOverlay = $target.hasClass(that.addWidgetPrefix(FOCUS_OVERLAY_CLASS));\r\n var isCellEditMode = _getEditMode(that) === EDIT_MODE_CELL;\r\n if (!isResizing && !isEditorPopup && !isFocusOverlay && !(isAddRowButton && isCellEditMode && that.isEditing()) && (isDomElement || isAnotherComponent)) {\r\n that._closeEditItem.bind(that)($target)\r\n }\r\n }\r\n });\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), _pointer.default.up, that._pointerUpEditorHandler);\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), _pointer.default.down, that._pointerDownEditorHandler);\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), _click.name, that._saveEditorHandler)\r\n }\r\n that._updateEditColumn();\r\n that._updateEditButtons();\r\n if (!this._internalState) {\r\n this._internalState = []\r\n }\r\n this.component._optionsByReference[EDITING_EDITROWKEY_OPTION_NAME] = true;\r\n this.component._optionsByReference[EDITING_CHANGES_OPTION_NAME] = true\r\n },\r\n getChanges: function() {\r\n return this.option(EDITING_CHANGES_OPTION_NAME)\r\n },\r\n resetChanges: function() {\r\n var changes = this.getChanges();\r\n var needReset = null === changes || void 0 === changes ? void 0 : changes.length;\r\n if (needReset) {\r\n this._silentOption(EDITING_CHANGES_OPTION_NAME, [])\r\n }\r\n },\r\n _getInternalData: function(key) {\r\n return this._internalState.filter(function(item) {\r\n return item.key === key\r\n })[0]\r\n },\r\n _addInternalData: function(params) {\r\n var internalData = this._getInternalData(params.key);\r\n if (internalData) {\r\n return (0, _extend.extend)(internalData, params)\r\n }\r\n this._internalState.push(params);\r\n return params\r\n },\r\n _getOldData: function(key) {\r\n var _this$_getInternalDat;\r\n return null === (_this$_getInternalDat = this._getInternalData(key)) || void 0 === _this$_getInternalDat ? void 0 : _this$_getInternalDat.oldData\r\n },\r\n getUpdatedData: function(data) {\r\n var key = this._dataController.keyOf(data);\r\n var changes = this.getChanges();\r\n var editIndex = _uiGrid_core2.default.getIndexByKey(key, changes);\r\n if (changes[editIndex]) {\r\n return (0, _array_utils.createObjectWithChanges)(data, changes[editIndex].data)\r\n }\r\n return data\r\n },\r\n getInsertedData: function() {\r\n return this.getChanges().filter(function(change) {\r\n return change.data && change.type === DATA_EDIT_DATA_INSERT_TYPE\r\n }).map(function(change) {\r\n return change.data\r\n })\r\n },\r\n getRemovedData: function() {\r\n var _this = this;\r\n return this.getChanges().filter(function(change) {\r\n return _this._getOldData(change.key) && change.type === DATA_EDIT_DATA_REMOVE_TYPE\r\n }).map(function(change) {\r\n return _this._getOldData(change.key)\r\n })\r\n },\r\n _fireDataErrorOccurred: function(arg) {\r\n if (\"cancel\" === arg) {\r\n return\r\n }\r\n var $popupContent = this.getPopupContent();\r\n this._dataController.dataErrorOccurred.fire(arg, $popupContent)\r\n },\r\n _needToCloseEditableCell: function($targetElement) {\r\n var $element = this.component.$element();\r\n var result = this.isEditing();\r\n var isCurrentComponentElement = !$element || !!$targetElement.closest($element).length;\r\n if (isCurrentComponentElement) {\r\n var isDataRow = $targetElement.closest(\".\" + DATA_ROW_CLASS).length;\r\n if (isDataRow) {\r\n var rowsView = this.getView(\"rowsView\");\r\n var $targetCell = $targetElement.closest(\".\" + ROW_CLASS + \"> td\");\r\n var rowIndex = rowsView.getRowIndex($targetCell.parent());\r\n var columnIndex = rowsView.getCellElements(rowIndex).index($targetCell);\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var allowEditing = visibleColumns[columnIndex] && visibleColumns[columnIndex].allowEditing;\r\n result = result && !allowEditing && !this.isEditCell(rowIndex, columnIndex)\r\n }\r\n }\r\n return result\r\n },\r\n _closeEditItem: function($targetElement) {\r\n if (this._needToCloseEditableCell($targetElement)) {\r\n this.closeEditCell()\r\n }\r\n },\r\n _handleDataChanged: function(args) {\r\n var editForm = this._editForm;\r\n if (\"refresh\" === args.changeType && _getEditMode(this) === EDIT_MODE_POPUP && editForm && editForm.option(\"visible\")) {\r\n this._repaintEditPopup()\r\n }\r\n },\r\n _isDefaultButtonVisible: function(button, options) {\r\n var result = true;\r\n var isRowMode = _isRowEditMode(this);\r\n var isBatchMode = _getEditMode(this) === EDIT_MODE_BATCH;\r\n var isEditRow = options.row && options.row.rowIndex === this._getVisibleEditRowIndex() && isRowMode;\r\n switch (button.name) {\r\n case \"edit\":\r\n result = !isEditRow && this.allowUpdating(options) && isRowMode;\r\n break;\r\n case \"save\":\r\n case \"cancel\":\r\n result = isEditRow;\r\n break;\r\n case \"delete\":\r\n result = !isEditRow && this.allowDeleting(options) && (!isBatchMode || !options.row.removed);\r\n break;\r\n case \"undelete\":\r\n result = isBatchMode && this.allowDeleting(options) && options.row.removed\r\n }\r\n return result\r\n },\r\n _isButtonVisible: function(button, options) {\r\n var visible = button.visible;\r\n if (!(0, _type.isDefined)(visible)) {\r\n return this._isDefaultButtonVisible(button, options)\r\n }\r\n return (0, _type.isFunction)(visible) ? visible.call(button, {\r\n component: options.component,\r\n row: options.row,\r\n column: options.column\r\n }) : visible\r\n },\r\n _getButtonConfig: function(button, options) {\r\n var _this2 = this;\r\n var config = (0, _type.isObject)(button) ? button : {};\r\n var buttonName = getButtonName(button);\r\n var editingTexts = getEditingTexts(options);\r\n var methodName = METHOD_NAMES[buttonName];\r\n var editingOptions = this.option(\"editing\");\r\n var actionName = ACTION_OPTION_NAMES[buttonName];\r\n var allowAction = actionName ? editingOptions[actionName] : true;\r\n return (0, _extend.extend)({\r\n name: buttonName,\r\n text: editingTexts[buttonName],\r\n cssClass: EDIT_LINK_CLASS[buttonName],\r\n onClick: function(e) {\r\n var event = e.event;\r\n event.stopPropagation();\r\n event.preventDefault();\r\n setTimeout(function() {\r\n options.row && allowAction && _this2[methodName] && _this2[methodName](options.row.rowIndex)\r\n })\r\n }\r\n }, config)\r\n },\r\n _getEditingButtons: function(options) {\r\n var _this3 = this;\r\n var buttonIndex;\r\n var haveCustomButtons = !!options.column.buttons;\r\n var buttons = (options.column.buttons || []).slice();\r\n if (haveCustomButtons) {\r\n buttonIndex = getButtonIndex(buttons, \"edit\");\r\n if (buttonIndex >= 0) {\r\n if (getButtonIndex(buttons, \"save\") < 0) {\r\n buttons.splice(buttonIndex + 1, 0, \"save\")\r\n }\r\n if (getButtonIndex(buttons, \"cancel\") < 0) {\r\n buttons.splice(getButtonIndex(buttons, \"save\") + 1, 0, \"cancel\")\r\n }\r\n }\r\n buttonIndex = getButtonIndex(buttons, \"delete\");\r\n if (buttonIndex >= 0 && getButtonIndex(buttons, \"undelete\") < 0) {\r\n buttons.splice(buttonIndex + 1, 0, \"undelete\")\r\n }\r\n } else {\r\n buttons = BUTTON_NAMES.slice()\r\n }\r\n return buttons.map(function(button) {\r\n return _this3._getButtonConfig(button, options)\r\n })\r\n },\r\n _renderEditingButtons: function($container, buttons, options) {\r\n var _this4 = this;\r\n buttons.forEach(function(button) {\r\n if (_this4._isButtonVisible(button, options)) {\r\n _this4._createButton($container, button, options)\r\n }\r\n })\r\n },\r\n _getEditCommandCellTemplate: function() {\r\n var _this5 = this;\r\n return function(container, options) {\r\n var $container = (0, _renderer.default)(container);\r\n if (\"data\" === options.rowType) {\r\n var buttons = _this5._getEditingButtons(options);\r\n _this5._renderEditingButtons($container, buttons, options);\r\n options.watch && options.watch(function() {\r\n return buttons.map(function(button) {\r\n return _this5._isButtonVisible(button, options)\r\n })\r\n }, function() {\r\n $container.empty();\r\n _this5._renderEditingButtons($container, buttons, options)\r\n })\r\n } else {\r\n _uiGrid_core2.default.setEmptyText($container)\r\n }\r\n }\r\n },\r\n isRowEditMode: function() {\r\n return _isRowEditMode(this)\r\n },\r\n isFormEditMode: function() {\r\n var editMode = _getEditMode(this);\r\n return FORM_BASED_MODES.indexOf(editMode) !== -1\r\n },\r\n isCellOrBatchEditMode: function() {\r\n var editMode = this.getEditMode();\r\n return CELL_BASED_MODES.indexOf(editMode) !== -1\r\n },\r\n getEditMode: function() {\r\n return _getEditMode(this)\r\n },\r\n getFirstEditableColumnIndex: function() {\r\n var columnsController = this.getController(\"columns\");\r\n var firstFormItem = this._firstFormItem;\r\n var columnIndex;\r\n if (_getEditMode(this) === EDIT_MODE_FORM && firstFormItem) {\r\n var editRowKey = this.option(EDITING_EDITROWKEY_OPTION_NAME);\r\n var editRowIndex = this._dataController.getRowIndexByKey(editRowKey);\r\n var $editFormElements = this._rowsView.getCellElements(editRowIndex);\r\n columnIndex = this._rowsView._getEditFormEditorVisibleIndex($editFormElements, firstFormItem.column)\r\n } else {\r\n var visibleColumns = columnsController.getVisibleColumns();\r\n (0, _iterator.each)(visibleColumns, function(index, column) {\r\n if (column.allowEditing) {\r\n columnIndex = index;\r\n return false\r\n }\r\n })\r\n }\r\n return columnIndex\r\n },\r\n getFirstEditableCellInRow: function(rowIndex) {\r\n var rowsView = this.getView(\"rowsView\");\r\n return rowsView && rowsView._getCellElement(rowIndex ? rowIndex : 0, this.getFirstEditableColumnIndex())\r\n },\r\n getFocusedCellInRow: function(rowIndex) {\r\n return this.getFirstEditableCellInRow(rowIndex)\r\n },\r\n getIndexByKey: function(key, items) {\r\n return _uiGrid_core2.default.getIndexByKey(key, items)\r\n },\r\n hasChanges: function(rowIndex) {\r\n var changes = this.getChanges();\r\n var result = false;\r\n for (var i = 0; i < (null === changes || void 0 === changes ? void 0 : changes.length); i++) {\r\n if (changes[i].type && (!(0, _type.isDefined)(rowIndex) || this._dataController.getRowIndexByKey(changes[i].key) === rowIndex)) {\r\n result = true;\r\n break\r\n }\r\n }\r\n return result\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n clearTimeout(this._inputFocusTimeoutID);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), _pointer.default.up, this._pointerUpEditorHandler);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), _pointer.default.down, this._pointerDownEditorHandler);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), _click.name, this._saveEditorHandler)\r\n },\r\n optionChanged: function(args) {\r\n if (\"editing\" === args.name) {\r\n var fullName = args.fullName;\r\n var editPopup = this._editPopup;\r\n if (fullName && 0 === fullName.indexOf(EDITING_POPUP_OPTION_NAME)) {\r\n if (editPopup) {\r\n var popupOptionName = fullName.slice(EDITING_POPUP_OPTION_NAME.length + 1);\r\n if (popupOptionName) {\r\n editPopup.option(popupOptionName, args.value)\r\n } else {\r\n editPopup.option(args.value)\r\n }\r\n }\r\n } else {\r\n if (editPopup && editPopup.option(\"visible\") && 0 === fullName.indexOf(\"editing.form\")) {\r\n this._repaintEditPopup()\r\n } else {\r\n if (fullName === EDITING_EDITROWKEY_OPTION_NAME) {\r\n this._handleEditRowKeyChange(args)\r\n } else {\r\n if (fullName === EDITING_EDITCOLUMNNAME_OPTION_NAME) {\r\n this._handleEditColumnNameChange(args)\r\n } else {\r\n if (fullName === EDITING_CHANGES_OPTION_NAME) {\r\n this._handleChangesChange(args)\r\n } else {\r\n this.init();\r\n this.resetChanges();\r\n this._resetEditColumnName();\r\n this._resetEditRowKey()\r\n }\r\n }\r\n }\r\n }\r\n }\r\n args.handled = true\r\n } else {\r\n this.callBase(args)\r\n }\r\n },\r\n _handleEditRowKeyChange: function(args) {\r\n var rowIndex = this._dataController.getRowIndexByKey(args.value);\r\n var oldRowIndexCorrection = this._getEditRowIndexCorrection();\r\n var oldRowIndex = this._dataController.getRowIndexByKey(args.previousValue) + oldRowIndexCorrection;\r\n var columnIndex = this._getVisibleEditColumnIndex();\r\n if (!this.isCellOrBatchEditMode()) {\r\n if ((0, _type.isDefined)(args.value)) {\r\n if (args.value !== args.previousValue) {\r\n this._editRowFromOptionChanged(rowIndex, oldRowIndex)\r\n }\r\n } else {\r\n this.cancelEditData()\r\n }\r\n } else {\r\n if ((0, _type.isDefined)(args.value) && args.value !== args.previousValue) {\r\n this._editCellFromOptionChanged(columnIndex, columnIndex, oldRowIndex)\r\n }\r\n }\r\n },\r\n _handleEditColumnNameChange: function(args) {\r\n var oldRowIndex = this._getVisibleEditRowIndex(args.previousValue);\r\n if (this.isCellOrBatchEditMode() && oldRowIndex !== -1 && (0, _type.isDefined)(args.value) && args.value !== args.previousValue) {\r\n var columnIndex = this._columnsController.getVisibleColumnIndex(args.value);\r\n var oldColumnIndex = this._columnsController.getVisibleColumnIndex(args.previousValue);\r\n this._editCellFromOptionChanged(columnIndex, oldColumnIndex, oldRowIndex)\r\n }\r\n },\r\n _handleChangesChange: function(args) {\r\n var dataController = this._dataController;\r\n if (!args.value.length && !args.previousValue.length) {\r\n return\r\n }\r\n dataController.updateItems({\r\n repaintChangesOnly: true\r\n })\r\n },\r\n _editCellFromOptionChanged: function(columnIndex, oldColumnIndex, oldRowIndex) {\r\n var _this6 = this;\r\n var columns = this._columnsController.getVisibleColumns();\r\n if (columnIndex > -1) {\r\n (0, _common.deferRender)(function() {\r\n _this6._repaintEditCell(columns[columnIndex], columns[oldColumnIndex], oldRowIndex)\r\n })\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"addRow\", \"deleteRow\", \"undeleteRow\", \"editRow\", \"editCell\", \"closeEditCell\", \"saveEditData\", \"cancelEditData\", \"hasEditData\"]\r\n },\r\n refresh: function(isPageChanged) {\r\n var editMode = _getEditMode(this);\r\n var needResetIndexes = editMode === EDIT_MODE_BATCH || isPageChanged && \"virtual\" !== this.option(\"scrolling.mode\");\r\n if (!(0, _type.isDefined)(this._pageIndex)) {\r\n return\r\n }\r\n if (!this.isCellOrBatchEditMode()) {\r\n this.resetChanges();\r\n this.init();\r\n if ((0, _type.isDefined)(this.option(EDITING_EDITROWKEY_OPTION_NAME))) {\r\n this._resetEditRowKey()\r\n }\r\n } else {\r\n if (needResetIndexes) {\r\n this._resetEditColumnName();\r\n this._resetEditRowKey()\r\n }\r\n }\r\n },\r\n isEditing: function() {\r\n var isEditRowKeyDefined = (0, _type.isDefined)(this.option(EDITING_EDITROWKEY_OPTION_NAME));\r\n var isEditColumnNameDefined = (0, _type.isDefined)(this.option(EDITING_EDITCOLUMNNAME_OPTION_NAME));\r\n if (this.isCellOrBatchEditMode()) {\r\n return isEditRowKeyDefined && isEditColumnNameDefined\r\n }\r\n return isEditRowKeyDefined\r\n },\r\n isEditRow: function(rowIndex) {\r\n var editMode = _getEditMode(this);\r\n return this._getVisibleEditRowIndex() === rowIndex && ROW_BASED_MODES.indexOf(editMode) !== -1\r\n },\r\n _setEditRowKey: function(value, silent) {\r\n if (silent) {\r\n this._silentOption(EDITING_EDITROWKEY_OPTION_NAME, value)\r\n } else {\r\n this.option(EDITING_EDITROWKEY_OPTION_NAME, value)\r\n }\r\n },\r\n _setEditRowKeyByIndex: function(rowIndex, silent) {\r\n var key = this._dataController.getKeyByRowIndex(rowIndex);\r\n if (void 0 === key) {\r\n this._dataController.fireError(\"E1043\");\r\n return\r\n }\r\n this._setEditRowKey(key, silent)\r\n },\r\n getEditRowIndex: function() {\r\n return this._getVisibleEditRowIndex()\r\n },\r\n getEditFormRowIndex: function() {\r\n var editMode = _getEditMode(this);\r\n return editMode === EDIT_MODE_FORM || editMode === EDIT_MODE_POPUP ? this._getVisibleEditRowIndex() : -1\r\n },\r\n isEditCell: function(visibleRowIndex, columnIndex) {\r\n return this._getVisibleEditRowIndex() === visibleRowIndex && this._getVisibleEditColumnIndex() === columnIndex\r\n },\r\n getPopupContent: function() {\r\n var editMode = _getEditMode(this);\r\n var popupVisible = this._editPopup && this._editPopup.option(\"visible\");\r\n if (editMode === EDIT_MODE_POPUP && popupVisible) {\r\n return this._$popupContent\r\n }\r\n },\r\n getEditForm: function() {\r\n return this._editForm\r\n },\r\n _needInsertItem: function(change, changeType) {\r\n var that = this;\r\n var dataSource = that._dataController.dataSource();\r\n var scrollingMode = that.option(\"scrolling.mode\");\r\n var pageIndex = dataSource.pageIndex();\r\n var beginPageIndex = dataSource.beginPageIndex ? dataSource.beginPageIndex() : pageIndex;\r\n var endPageIndex = dataSource.endPageIndex ? dataSource.endPageIndex() : pageIndex;\r\n if (\"standard\" !== scrollingMode) {\r\n switch (changeType) {\r\n case \"append\":\r\n return change.key.pageIndex === endPageIndex;\r\n case \"prepend\":\r\n return change.key.pageIndex === beginPageIndex;\r\n case \"refresh\":\r\n change.key.rowIndex = 0;\r\n change.key.dataRowIndex = 0;\r\n change.key.pageIndex = 0;\r\n break;\r\n default:\r\n return change.key.pageIndex >= beginPageIndex && change.key.pageIndex <= endPageIndex\r\n }\r\n }\r\n return change.key.pageIndex === pageIndex\r\n },\r\n _generateNewItem: function(key) {\r\n var item = {\r\n key: key\r\n };\r\n if (key && key[INSERT_INDEX]) {\r\n item[INSERT_INDEX] = key[INSERT_INDEX]\r\n }\r\n return item\r\n },\r\n _getLoadedRowIndexByInsertKey: function(items, change, key) {\r\n var dataController = this._dataController;\r\n var loadedRowIndexOffset = dataController.getRowIndexOffset(true);\r\n var loadedRowIndex = key.dataRowIndex - loadedRowIndexOffset;\r\n if (\"append\" === change.changeType) {\r\n loadedRowIndex -= dataController.items(true).length;\r\n if (change.removeCount) {\r\n loadedRowIndex += change.removeCount\r\n }\r\n }\r\n for (var i = 0; i < loadedRowIndex; i++) {\r\n if (items[i] && items[i][INSERT_INDEX]) {\r\n loadedRowIndex++\r\n }\r\n }\r\n return loadedRowIndex\r\n },\r\n processItems: function(items, e) {\r\n var _this7 = this;\r\n var changeType = e.changeType;\r\n this.update(changeType);\r\n var changes = this.getChanges();\r\n changes.forEach(function(change) {\r\n var key = change.key;\r\n if ((0, _type.isDefined)(key) && change.type === DATA_EDIT_DATA_INSERT_TYPE) {\r\n var loadedRowIndex = _this7._getLoadedRowIndexByInsertKey(items, e, key);\r\n var item = _this7._generateNewItem(key);\r\n if (loadedRowIndex >= 0 && _this7._needInsertItem(change, changeType, items, item)) {\r\n items.splice(key.dataRowIndex ? loadedRowIndex : 0, 0, item)\r\n }\r\n }\r\n });\r\n return items\r\n },\r\n processDataItem: function(item, options, generateDataValues) {\r\n var columns = options.visibleColumns;\r\n var key = item.data[INSERT_INDEX] ? item.data.key : item.key;\r\n var changes = this.getChanges();\r\n var editIndex = _uiGrid_core2.default.getIndexByKey(key, changes);\r\n item.isEditing = false;\r\n if (editIndex >= 0) {\r\n var editMode = _getEditMode(this);\r\n var _changes$editIndex = changes[editIndex],\r\n data = _changes$editIndex.data,\r\n type = _changes$editIndex.type;\r\n switch (type) {\r\n case DATA_EDIT_DATA_INSERT_TYPE:\r\n if (editMode === EDIT_MODE_POPUP) {\r\n item.visible = false\r\n }\r\n item.isNewRow = true;\r\n item.key = key;\r\n item.data = data;\r\n break;\r\n case DATA_EDIT_DATA_UPDATE_TYPE:\r\n item.modified = true;\r\n item.oldData = item.data;\r\n item.data = (0, _array_utils.createObjectWithChanges)(item.data, data);\r\n item.modifiedValues = generateDataValues(data, columns, true);\r\n break;\r\n case DATA_EDIT_DATA_REMOVE_TYPE:\r\n if (editMode === EDIT_MODE_BATCH) {\r\n item.data = (0, _array_utils.createObjectWithChanges)(item.data, data)\r\n }\r\n item.removed = true\r\n }\r\n }\r\n },\r\n _initNewRow: function(options) {\r\n var _this8 = this;\r\n this.executeAction(\"onInitNewRow\", options);\r\n if (options.promise) {\r\n var deferred = new _deferred.Deferred;\r\n (0, _deferred.when)((0, _deferred.fromPromise)(options.promise)).done(deferred.resolve).fail(createFailureHandler(deferred)).fail(function(arg) {\r\n return _this8._fireDataErrorOccurred(arg)\r\n });\r\n return deferred\r\n }\r\n },\r\n _getInsertKey: function(parentKey) {\r\n var that = this;\r\n var dataController = that._dataController;\r\n var rows = dataController.items();\r\n var editMode = _getEditMode(that);\r\n var insertKey = {\r\n parentKey: parentKey,\r\n pageIndex: dataController.pageIndex(),\r\n rowIndex: that._getInsertRowIndex(parentKey)\r\n };\r\n var row = rows[insertKey.rowIndex];\r\n if (row && (!row.isEditing && \"detail\" === row.rowType || \"detailAdaptive\" === row.rowType)) {\r\n insertKey.rowIndex++\r\n }\r\n insertKey.dataRowIndex = dataController.getRowIndexOffset() + rows.filter(function(row, index) {\r\n return index < insertKey.rowIndex && (\"data\" === row.rowType && !row.isNewRow || \"group\" === row.rowType)\r\n }).length;\r\n if (editMode !== EDIT_MODE_BATCH) {\r\n this._setEditRowKey(insertKey, true)\r\n }\r\n insertKey[INSERT_INDEX] = that._getInsertIndex();\r\n return insertKey\r\n },\r\n _getInsertRowIndex: function(parentKey) {\r\n var that = this;\r\n var rowsView = that.getView(\"rowsView\");\r\n var parentRowIndex = that._dataController.getRowIndexByKey(parentKey);\r\n if (parentRowIndex >= 0) {\r\n return parentRowIndex + 1\r\n }\r\n if (rowsView) {\r\n return rowsView.getTopVisibleItemIndex(true)\r\n }\r\n return 0\r\n },\r\n _getInsertIndex: function() {\r\n var maxInsertIndex = 0;\r\n this.getChanges().forEach(function(editItem) {\r\n if (editItem.type === DATA_EDIT_DATA_INSERT_TYPE && editItem.key[INSERT_INDEX] > maxInsertIndex) {\r\n maxInsertIndex = editItem.key[INSERT_INDEX]\r\n }\r\n });\r\n return maxInsertIndex + 1\r\n },\r\n addRow: function(parentKey) {\r\n var that = this;\r\n var dataController = that._dataController;\r\n var store = dataController.store();\r\n var key = store && store.key();\r\n var param = {\r\n data: {}\r\n };\r\n var editMode = _getEditMode(that);\r\n var oldEditRowIndex = that._getVisibleEditRowIndex();\r\n var deferred = new _deferred.Deferred;\r\n if (!store) {\r\n dataController.fireError(\"E1052\", this.component.NAME);\r\n return deferred.reject()\r\n }\r\n if (editMode === EDIT_MODE_CELL && that.hasChanges()) {\r\n that.saveEditData().done(function() {\r\n if (!that.hasChanges()) {\r\n that.addRow(parentKey).done(deferred.resolve).fail(deferred.reject)\r\n } else {\r\n deferred.reject(\"cancel\")\r\n }\r\n });\r\n return deferred.promise()\r\n }\r\n that.refresh();\r\n if (!that._allowRowAdding()) {\r\n return deferred.reject(\"cancel\")\r\n }\r\n if (!key) {\r\n param.data.__KEY__ = String(new _guid.default)\r\n }(0, _deferred.when)(that._initNewRow(param, parentKey)).done(function() {\r\n if (that._allowRowAdding()) {\r\n that._addRowCore(param.data, parentKey, oldEditRowIndex);\r\n deferred.resolve()\r\n } else {\r\n deferred.reject(\"cancel\")\r\n }\r\n }).fail(deferred.reject);\r\n return deferred.promise()\r\n },\r\n _allowRowAdding: function() {\r\n var that = this;\r\n var editMode = _getEditMode(that);\r\n var insertIndex = that._getInsertIndex();\r\n if (editMode !== EDIT_MODE_BATCH && insertIndex > 1) {\r\n return false\r\n }\r\n return true\r\n },\r\n _addRowCore: function(data, parentKey, initialOldEditRowIndex) {\r\n var that = this;\r\n var oldEditRowIndex = that._getVisibleEditRowIndex();\r\n var insertKey = that._getInsertKey(parentKey);\r\n var editMode = _getEditMode(that);\r\n that._addChange({\r\n key: insertKey,\r\n data: data,\r\n type: DATA_EDIT_DATA_INSERT_TYPE\r\n });\r\n that._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [initialOldEditRowIndex, oldEditRowIndex, insertKey.rowIndex]\r\n });\r\n if (editMode === EDIT_MODE_POPUP) {\r\n that._showEditPopup(insertKey.rowIndex)\r\n } else {\r\n that._focusFirstEditableCellInRow(insertKey.rowIndex)\r\n }\r\n that._afterInsertRow({\r\n key: insertKey,\r\n data: data\r\n })\r\n },\r\n _focusFirstEditableCellInRow: function(rowIndex) {\r\n var that = this;\r\n var $firstCell = that.getFirstEditableCellInRow(rowIndex);\r\n that._editCellInProgress = true;\r\n that._delayedInputFocus($firstCell, function() {\r\n that._editCellInProgress = false;\r\n var $cell = that.getFirstEditableCellInRow(rowIndex);\r\n var eventToTrigger = \"dblClick\" === that.option(\"editing.startEditAction\") ? _double_click.name : _click.name;\r\n $cell && _events_engine.default.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 _beforeEditCell: function(rowIndex, columnIndex, item) {\r\n var that = this;\r\n if (_getEditMode(that) === EDIT_MODE_CELL && !item.isNewRow && that.hasChanges()) {\r\n var d = new _deferred.Deferred;\r\n that.saveEditData().always(function() {\r\n d.resolve(that.hasChanges())\r\n });\r\n return d\r\n }\r\n },\r\n _beforeUpdateItems: function() {},\r\n _getVisibleEditColumnIndex: function() {\r\n var editColumnName = this.option(EDITING_EDITCOLUMNNAME_OPTION_NAME);\r\n if (!(0, _type.isDefined)(editColumnName)) {\r\n return -1\r\n }\r\n return this._columnsController.getVisibleColumnIndex(editColumnName)\r\n },\r\n _setEditColumnNameByIndex: function(index, silent) {\r\n var _visibleColumns$index;\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n this._setEditColumnName(null === (_visibleColumns$index = visibleColumns[index]) || void 0 === _visibleColumns$index ? void 0 : _visibleColumns$index.name, silent)\r\n },\r\n _setEditColumnName: function(name, silent) {\r\n if (silent) {\r\n this._silentOption(EDITING_EDITCOLUMNNAME_OPTION_NAME, name)\r\n } else {\r\n this.option(EDITING_EDITCOLUMNNAME_OPTION_NAME, name)\r\n }\r\n },\r\n _resetEditColumnName: function() {\r\n this._setEditColumnName(null, true)\r\n },\r\n _getEditColumn: function() {\r\n var editColumnName = this.option(EDITING_EDITCOLUMNNAME_OPTION_NAME);\r\n return this._getColumnByName(editColumnName)\r\n },\r\n _getColumnByName: function(name) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var editColumn;\r\n (0, _type.isDefined)(name) && visibleColumns.some(function(column) {\r\n if (column.name === name) {\r\n editColumn = column;\r\n return true\r\n }\r\n });\r\n return editColumn\r\n },\r\n _getVisibleEditRowIndex: function(columnName) {\r\n var dataController = this._dataController;\r\n var editRowKey = this.option(EDITING_EDITROWKEY_OPTION_NAME);\r\n var rowIndex = dataController.getRowIndexByKey(editRowKey);\r\n if (rowIndex === -1) {\r\n return rowIndex\r\n }\r\n return rowIndex + this._getEditRowIndexCorrection(columnName)\r\n },\r\n _getEditRowIndexCorrection: function(columnName) {\r\n var editColumn = columnName ? this._getColumnByName(columnName) : this._getEditColumn();\r\n var isColumnHidden = \"adaptiveHidden\" === (null === editColumn || void 0 === editColumn ? void 0 : editColumn.visibleWidth);\r\n return isColumnHidden ? 1 : 0\r\n },\r\n _resetEditRowKey: function() {\r\n this._setEditRowKey(null, true)\r\n },\r\n _resetEditIndices: function() {\r\n this._resetEditColumnName();\r\n this._resetEditRowKey()\r\n },\r\n editRow: function(rowIndex) {\r\n var 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: item.data\r\n });\r\n this._setEditRowKey(item.key)\r\n },\r\n _editRowFromOptionChanged: function(rowIndex, oldRowIndex) {\r\n var rowIndices = [oldRowIndex, rowIndex];\r\n var editMode = _getEditMode(this);\r\n this._beforeUpdateItems(rowIndices, rowIndex, oldRowIndex);\r\n if (editMode === EDIT_MODE_POPUP) {\r\n this._showEditPopup(rowIndex)\r\n } else {\r\n this._needFocusEditor = true;\r\n this._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: rowIndices\r\n })\r\n }\r\n },\r\n _focusEditorIfNeed: function() {\r\n var _this9 = this;\r\n var editMode = _getEditMode(this);\r\n if (this._needFocusEditor) {\r\n if (MODES_WITH_DELAYED_FOCUS.indexOf(editMode) !== -1) {\r\n var $editingCell = this.getFocusedCellInRow(this._getVisibleEditRowIndex());\r\n this._delayedInputFocus($editingCell, function() {\r\n $editingCell && _this9.component.focus($editingCell)\r\n })\r\n } else {\r\n if (CELL_BASED_MODES.indexOf(editMode) !== -1) {\r\n var _this$_rowsView;\r\n var editColumnIndex = this._getVisibleEditColumnIndex();\r\n var $cell = null === (_this$_rowsView = this._rowsView) || void 0 === _this$_rowsView ? void 0 : _this$_rowsView._getCellElement(this._getVisibleEditRowIndex(), editColumnIndex);\r\n if ($cell && !$cell.find(\":focus\").length) {\r\n this._focusEditingCell(function() {\r\n _this9._editCellInProgress = false\r\n }, $cell, true)\r\n } else {\r\n this._editCellInProgress = false\r\n }\r\n }\r\n }\r\n this._needFocusEditor = false\r\n }\r\n },\r\n _showEditPopup: function(rowIndex, repaintForm) {\r\n var that = this;\r\n var isMobileDevice = \"desktop\" !== _devices.default.current().deviceType;\r\n var popupOptions = (0, _extend.extend)({\r\n showTitle: false,\r\n fullScreen: isMobileDevice,\r\n toolbarItems: [{\r\n toolbar: \"bottom\",\r\n location: \"after\",\r\n widget: \"dxButton\",\r\n options: that._getSaveButtonConfig()\r\n }, {\r\n toolbar: \"bottom\",\r\n location: \"after\",\r\n widget: \"dxButton\",\r\n options: that._getCancelButtonConfig()\r\n }],\r\n contentTemplate: that._getPopupEditFormTemplate(rowIndex)\r\n }, that.option(EDITING_POPUP_OPTION_NAME));\r\n if (!that._editPopup) {\r\n var $popupContainer = (0, _renderer.default)(\"
\").appendTo(that.component.$element()).addClass(that.addWidgetPrefix(EDIT_POPUP_CLASS));\r\n that._editPopup = that._createComponent($popupContainer, _popup.default, {});\r\n that._editPopup.on(\"hiding\", that._getEditPopupHiddenHandler());\r\n that._editPopup.on(\"shown\", function(e) {\r\n _events_engine.default.trigger(e.component.$content().find(FOCUSABLE_ELEMENT_SELECTOR).not(\".\" + SCROLLABLE_CONTAINER_CLASS).first(), \"focus\");\r\n if (repaintForm) {\r\n that._editForm && that._editForm.repaint()\r\n }\r\n })\r\n }\r\n that._editPopup.option(popupOptions);\r\n that._editPopup.show()\r\n },\r\n _repaintEditPopup: function() {\r\n var rowIndex = this._getVisibleEditRowIndex();\r\n if (this._editPopup && this._editPopup.option(\"visible\") && rowIndex >= 0) {\r\n var defaultAnimation = this._editPopup.option(\"animation\");\r\n this._editPopup.option(\"animation\", null);\r\n this._showEditPopup(rowIndex, true);\r\n this._editPopup.option(\"animation\", defaultAnimation)\r\n }\r\n },\r\n _getEditPopupHiddenHandler: function() {\r\n var that = this;\r\n return function(e) {\r\n if (that.isEditing()) {\r\n that.cancelEditData()\r\n }\r\n }\r\n },\r\n _getPopupEditFormTemplate: function(rowIndex) {\r\n var that = this;\r\n var row = that.component.getVisibleRows()[rowIndex];\r\n var templateOptions = {\r\n row: row,\r\n rowType: row.rowType,\r\n key: row.key\r\n };\r\n return function(container) {\r\n var formTemplate = that.getEditFormTemplate();\r\n var scrollable = that._createComponent((0, _renderer.default)(\"
\").appendTo(container), _ui.default);\r\n that._$popupContent = scrollable.$content();\r\n formTemplate(that._$popupContent, templateOptions, true)\r\n }\r\n },\r\n _getSaveButtonConfig: function() {\r\n return {\r\n text: this.option(\"editing.texts.saveRowChanges\"),\r\n onClick: this.saveEditData.bind(this)\r\n }\r\n },\r\n _getCancelButtonConfig: function() {\r\n return {\r\n text: this.option(\"editing.texts.cancelRowChanges\"),\r\n onClick: this.cancelEditData.bind(this)\r\n }\r\n },\r\n _removeInternalData: function(key) {\r\n var internalData = this._getInternalData(key);\r\n var index = this._internalState.indexOf(internalData);\r\n if (index > -1) {\r\n this._internalState.splice(index, 1)\r\n }\r\n },\r\n _removeChange: function(index) {\r\n if (index >= 0) {\r\n var changes = _toConsumableArray(this.getChanges());\r\n this._removeInternalData(changes[index].key);\r\n changes.splice(index, 1);\r\n this._silentOption(EDITING_CHANGES_OPTION_NAME, changes)\r\n }\r\n },\r\n executeOperation: function(deferred, func) {\r\n var _this10 = this;\r\n this._lastOperation && this._lastOperation.reject();\r\n this._lastOperation = deferred;\r\n this.waitForDeferredOperations().done(function() {\r\n if (\"rejected\" === deferred.state()) {\r\n return\r\n }\r\n func();\r\n _this10._lastOperation = null\r\n }).fail(function() {\r\n deferred.reject();\r\n _this10._lastOperation = null\r\n })\r\n },\r\n waitForDeferredOperations: function() {\r\n return _deferred.when.apply(void 0, _toConsumableArray(this._deferreds))\r\n },\r\n editCell: function(rowIndex, columnIndex) {\r\n return this._editCell({\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n })\r\n },\r\n _editCell: function(options) {\r\n var _this11 = this;\r\n var d = new _deferred.Deferred;\r\n var coreResult;\r\n this.executeOperation(d, function() {\r\n coreResult = _this11._editCellCore(options);\r\n (0, _deferred.when)(coreResult).done(d.resolve).fail(d.reject)\r\n });\r\n return void 0 !== coreResult ? coreResult : d.promise()\r\n },\r\n _getNormalizedEditCellOptions: function(_ref) {\r\n var oldColumnIndex = _ref.oldColumnIndex,\r\n oldRowIndex = _ref.oldRowIndex,\r\n columnIndex = _ref.columnIndex,\r\n rowIndex = _ref.rowIndex;\r\n var columnsController = this._columnsController;\r\n var visibleColumns = columnsController.getVisibleColumns();\r\n var items = this._dataController.items();\r\n var item = items[rowIndex];\r\n var oldColumn;\r\n if ((0, _type.isDefined)(oldColumnIndex)) {\r\n oldColumn = visibleColumns[oldColumnIndex]\r\n } else {\r\n oldColumn = this._getEditColumn()\r\n }\r\n if (!(0, _type.isDefined)(oldRowIndex)) {\r\n oldRowIndex = this._getVisibleEditRowIndex()\r\n }\r\n if ((0, _type.isString)(columnIndex)) {\r\n columnIndex = columnsController.columnOption(columnIndex, \"index\");\r\n columnIndex = columnsController.getVisibleIndex(columnIndex)\r\n }\r\n var column = visibleColumns[columnIndex];\r\n return {\r\n oldColumn: oldColumn,\r\n columnIndex: columnIndex,\r\n oldRowIndex: oldRowIndex,\r\n rowIndex: rowIndex,\r\n column: column,\r\n item: item\r\n }\r\n },\r\n _editCellCore: function(options) {\r\n var _this12 = this;\r\n var dataController = this._dataController;\r\n var isEditByOptionChanged = (0, _type.isDefined)(options.oldColumnIndex) || (0, _type.isDefined)(options.oldRowIndex);\r\n var _this$_getNormalizedE = this._getNormalizedEditCellOptions(options),\r\n columnIndex = _this$_getNormalizedE.columnIndex,\r\n rowIndex = _this$_getNormalizedE.rowIndex,\r\n column = _this$_getNormalizedE.column,\r\n item = _this$_getNormalizedE.item;\r\n var params = {\r\n data: null === item || void 0 === item ? void 0 : item.data,\r\n cancel: false,\r\n column: column\r\n };\r\n if (void 0 === item.key) {\r\n this._dataController.fireError(\"E1043\");\r\n return\r\n }\r\n if (column && item && (\"data\" === item.rowType || \"detailAdaptive\" === item.rowType) && !item.removed && !_isRowEditMode(this)) {\r\n if (!isEditByOptionChanged && this.isEditCell(rowIndex, columnIndex)) {\r\n return true\r\n }\r\n var editRowIndex = rowIndex + dataController.getRowIndexOffset();\r\n return (0, _deferred.when)(this._beforeEditCell(rowIndex, columnIndex, item)).done(function(cancel) {\r\n if (cancel) {\r\n return\r\n }\r\n if (!_this12._prepareEditCell(params, item, columnIndex, editRowIndex)) {\r\n _this12._processCanceledEditingCell()\r\n }\r\n })\r\n }\r\n return false\r\n },\r\n _processCanceledEditingCell: function() {},\r\n _prepareEditCell: function(params, item, editColumnIndex, editRowIndex) {\r\n if (!item.isNewRow) {\r\n params.key = item.key\r\n }\r\n if (this._isEditingStart(params)) {\r\n return false\r\n }\r\n this._pageIndex = this._dataController.pageIndex();\r\n this._setEditRowKey(item.key);\r\n this._setEditColumnNameByIndex(editColumnIndex);\r\n if (!params.column.showEditorAlways) {\r\n this._addInternalData({\r\n key: item.key,\r\n oldData: item.data\r\n })\r\n }\r\n return true\r\n },\r\n _repaintEditCell: function(column, oldColumn, oldEditRowIndex) {\r\n var that = this;\r\n this._needFocusEditor = true;\r\n if (!column || !column.showEditorAlways || oldColumn && !oldColumn.showEditorAlways) {\r\n that._editCellInProgress = true;\r\n that.getController(\"editorFactory\").loseFocus();\r\n that._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [oldEditRowIndex, that._getVisibleEditRowIndex()]\r\n })\r\n } else {\r\n that._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 that = this;\r\n\r\n function inputFocus() {\r\n if (beforeFocusCallback) {\r\n beforeFocusCallback()\r\n }\r\n if ($cell) {\r\n var $focusableElement = $cell.find(FOCUSABLE_ELEMENT_SELECTOR).first();\r\n _uiGrid_core2.default.focusAndSelectElement(that, $focusableElement)\r\n }\r\n that._beforeFocusCallback = null\r\n }\r\n if (_devices.default.real().ios || _devices.default.real().android) {\r\n inputFocus()\r\n } else {\r\n if (that._beforeFocusCallback) {\r\n that._beforeFocusCallback()\r\n }\r\n clearTimeout(that._inputFocusTimeoutID);\r\n if (callBeforeFocusCallbackAlways) {\r\n that._beforeFocusCallback = beforeFocusCallback\r\n }\r\n that._inputFocusTimeoutID = setTimeout(inputFocus)\r\n }\r\n },\r\n _focusEditingCell: function(beforeFocusCallback, $editCell, callBeforeFocusCallbackAlways) {\r\n var that = this;\r\n var rowsView = that.getView(\"rowsView\");\r\n var editColumnIndex = this._getVisibleEditColumnIndex();\r\n $editCell = $editCell || rowsView && rowsView._getCellElement(that._getVisibleEditRowIndex(), editColumnIndex);\r\n that._delayedInputFocus($editCell, beforeFocusCallback, callBeforeFocusCallbackAlways)\r\n },\r\n deleteRow: function(rowIndex) {\r\n var _this13 = this;\r\n if (\"cell\" === this.option(\"editing.mode\") && this.isEditing()) {\r\n var isNewRow = this._dataController.items()[rowIndex].isNewRow;\r\n this.closeEditCell(null, isNewRow).always(function() {\r\n _this13._checkAndDeleteRow(rowIndex)\r\n })\r\n } else {\r\n this._checkAndDeleteRow(rowIndex)\r\n }\r\n },\r\n _checkAndDeleteRow: function(rowIndex) {\r\n var that = this;\r\n var editingOptions = that.option(\"editing\");\r\n var editingTexts = editingOptions && editingOptions.texts;\r\n var isBatchMode = editingOptions && editingOptions.mode === EDIT_MODE_BATCH;\r\n var confirmDelete = editingOptions && editingOptions.confirmDelete;\r\n var confirmDeleteMessage = editingTexts && editingTexts.confirmDeleteMessage;\r\n var item = that._dataController.items()[rowIndex];\r\n var allowDeleting = isBatchMode || !that.isEditing() || item.isNewRow;\r\n if (item && allowDeleting) {\r\n if (isBatchMode || !confirmDelete || !confirmDeleteMessage) {\r\n that._deleteRowCore(rowIndex)\r\n } else {\r\n var confirmDeleteTitle = editingTexts && editingTexts.confirmDeleteTitle;\r\n var showDialogTitle = (0, _type.isDefined)(confirmDeleteTitle) && confirmDeleteTitle.length > 0;\r\n (0, _dialog.confirm)(confirmDeleteMessage, confirmDeleteTitle, showDialogTitle).done(function(confirmResult) {\r\n if (confirmResult) {\r\n that._deleteRowCore(rowIndex)\r\n }\r\n })\r\n }\r\n }\r\n },\r\n _deleteRowCore: function(rowIndex) {\r\n var dataController = this._dataController;\r\n var item = dataController.items()[rowIndex];\r\n var key = item && item.key;\r\n var oldEditRowIndex = this._getVisibleEditRowIndex();\r\n var isBatchMode = this.option(\"editing.mode\") === EDIT_MODE_BATCH;\r\n this.refresh();\r\n var changes = this.getChanges();\r\n var editIndex = _uiGrid_core2.default.getIndexByKey(key, changes);\r\n if (editIndex >= 0) {\r\n if (changes[editIndex].type === DATA_EDIT_DATA_INSERT_TYPE) {\r\n this._removeChange(editIndex)\r\n } else {\r\n this._addChange({\r\n key: key,\r\n type: DATA_EDIT_DATA_REMOVE_TYPE\r\n })\r\n }\r\n } else {\r\n this._addChange({\r\n key: key,\r\n oldData: item.data,\r\n type: DATA_EDIT_DATA_REMOVE_TYPE\r\n })\r\n }\r\n if (isBatchMode) {\r\n dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [oldEditRowIndex, rowIndex]\r\n })\r\n } else {\r\n this.saveEditData()\r\n }\r\n },\r\n undeleteRow: function(rowIndex) {\r\n var that = this;\r\n var dataController = that._dataController;\r\n var item = dataController.items()[rowIndex];\r\n var oldEditRowIndex = that._getVisibleEditRowIndex();\r\n var key = item && item.key;\r\n var changes = this.getChanges();\r\n if (item) {\r\n var editIndex = _uiGrid_core2.default.getIndexByKey(key, changes);\r\n if (editIndex >= 0) {\r\n var data = changes[editIndex].data;\r\n if ((0, _type.isEmptyObject)(data)) {\r\n that._removeChange(editIndex)\r\n } else {\r\n that._addChange({\r\n key: key,\r\n type: DATA_EDIT_DATA_UPDATE_TYPE\r\n })\r\n }\r\n dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [oldEditRowIndex, rowIndex]\r\n })\r\n }\r\n }\r\n },\r\n _fireOnSaving: function() {\r\n var _this14 = this;\r\n var onSavingParams = {\r\n cancel: false,\r\n promise: null,\r\n changes: _toConsumableArray(this.getChanges())\r\n };\r\n this.executeAction(\"onSaving\", onSavingParams);\r\n var d = new _deferred.Deferred;\r\n (0, _deferred.when)((0, _deferred.fromPromise)(onSavingParams.promise)).done(function() {\r\n d.resolve(onSavingParams)\r\n }).fail(function(arg) {\r\n createFailureHandler(d);\r\n _this14._fireDataErrorOccurred(arg);\r\n d.resolve({\r\n cancel: true\r\n })\r\n });\r\n return d\r\n },\r\n _executeEditingAction: function(actionName, params, func) {\r\n if (this.component._disposed) {\r\n return null\r\n }\r\n var deferred = new _deferred.Deferred;\r\n this.executeAction(actionName, params);\r\n (0, _deferred.when)((0, _deferred.fromPromise)(params.cancel)).done(function(cancel) {\r\n if (cancel) {\r\n setTimeout(function() {\r\n deferred.resolve(\"cancel\")\r\n })\r\n } else {\r\n func(params).done(deferred.resolve).fail(createFailureHandler(deferred))\r\n }\r\n }).fail(createFailureHandler(deferred));\r\n return deferred\r\n },\r\n _processChanges: function(deferreds, results, dataChanges, changes) {\r\n var _this15 = this;\r\n var store = this._dataController.store();\r\n (0, _iterator.each)(changes, function(index, change) {\r\n var oldData = _this15._getOldData(change.key);\r\n var data = change.data,\r\n type = change.type;\r\n var changeCopy = _objectSpread({}, change);\r\n var deferred;\r\n var params;\r\n if (_this15._beforeSaveEditData(change, index)) {\r\n return\r\n }\r\n switch (type) {\r\n case DATA_EDIT_DATA_REMOVE_TYPE:\r\n params = {\r\n data: oldData,\r\n key: change.key,\r\n cancel: false\r\n };\r\n deferred = _this15._executeEditingAction(\"onRowRemoving\", params, function() {\r\n return store.remove(change.key).done(function(key) {\r\n dataChanges.push({\r\n type: \"remove\",\r\n key: key\r\n })\r\n })\r\n });\r\n break;\r\n case DATA_EDIT_DATA_INSERT_TYPE:\r\n params = {\r\n data: data,\r\n cancel: false\r\n };\r\n deferred = _this15._executeEditingAction(\"onRowInserting\", params, function() {\r\n return store.insert(params.data).done(function(data, key) {\r\n if ((0, _type.isDefined)(key)) {\r\n changeCopy.key = key\r\n }\r\n if (data && (0, _type.isObject)(data) && data !== params.data) {\r\n changeCopy.data = data\r\n }\r\n dataChanges.push({\r\n type: \"insert\",\r\n data: data,\r\n index: 0\r\n })\r\n })\r\n });\r\n break;\r\n case DATA_EDIT_DATA_UPDATE_TYPE:\r\n params = {\r\n newData: data,\r\n oldData: oldData,\r\n key: change.key,\r\n cancel: false\r\n };\r\n deferred = _this15._executeEditingAction(\"onRowUpdating\", params, function() {\r\n return store.update(change.key, params.newData).done(function(data, key) {\r\n if (data && (0, _type.isObject)(data) && data !== params.newData) {\r\n changeCopy.data = data\r\n }\r\n dataChanges.push({\r\n type: \"update\",\r\n key: key,\r\n data: data\r\n })\r\n })\r\n })\r\n }\r\n changes[index] = changeCopy;\r\n if (deferred) {\r\n var doneDeferred = new _deferred.Deferred;\r\n deferred.always(function(data) {\r\n results.push({\r\n key: change.key,\r\n result: data\r\n })\r\n }).always(doneDeferred.resolve);\r\n deferreds.push(doneDeferred.promise())\r\n }\r\n })\r\n },\r\n _processSaveEditDataResult: function(results) {\r\n var that = this;\r\n var hasSavedData = false;\r\n var editMode = _getEditMode(that);\r\n var changes = _toConsumableArray(this.getChanges());\r\n var changesLength = changes.length;\r\n for (var i = 0; i < results.length; i++) {\r\n var arg = results[i].result;\r\n var cancel = \"cancel\" === arg;\r\n var editIndex = _uiGrid_core2.default.getIndexByKey(results[i].key, changes);\r\n var change = changes[editIndex];\r\n var isError = arg && arg instanceof Error;\r\n if (isError) {\r\n if (change) {\r\n this._addInternalData({\r\n key: change.key,\r\n error: arg\r\n })\r\n }\r\n that._fireDataErrorOccurred(arg);\r\n if (editMode !== EDIT_MODE_BATCH) {\r\n if ((null === change || void 0 === change ? void 0 : change.type) === DATA_EDIT_DATA_REMOVE_TYPE) {\r\n if (editIndex >= 0) {\r\n changes.splice(editIndex, 1)\r\n }\r\n }\r\n break\r\n }\r\n } else {\r\n if (!cancel || !change || editMode !== EDIT_MODE_BATCH && change.type === DATA_EDIT_DATA_REMOVE_TYPE) {\r\n if (editIndex >= 0) {\r\n changes.splice(editIndex, 1)\r\n }\r\n hasSavedData = !cancel\r\n }\r\n }\r\n }\r\n if (changes.length < changesLength) {\r\n this._silentOption(EDITING_CHANGES_OPTION_NAME, changes)\r\n }\r\n return hasSavedData\r\n },\r\n _fireSaveEditDataEvents: function(changes) {\r\n var that = this;\r\n (0, _iterator.each)(changes, function(_, _ref2) {\r\n var data = _ref2.data,\r\n key = _ref2.key,\r\n type = _ref2.type;\r\n var internalData = that._addInternalData({\r\n key: key\r\n });\r\n var params = {\r\n key: key,\r\n data: data\r\n };\r\n if (internalData.error) {\r\n params.error = internalData.error\r\n }\r\n switch (type) {\r\n case DATA_EDIT_DATA_REMOVE_TYPE:\r\n that.executeAction(\"onRowRemoved\", (0, _extend.extend)({}, params, {\r\n data: internalData.oldData\r\n }));\r\n break;\r\n case DATA_EDIT_DATA_INSERT_TYPE:\r\n that.executeAction(\"onRowInserted\", params);\r\n break;\r\n case DATA_EDIT_DATA_UPDATE_TYPE:\r\n that.executeAction(\"onRowUpdated\", params)\r\n }\r\n });\r\n this.executeAction(\"onSaved\", {\r\n changes: changes\r\n })\r\n },\r\n saveEditData: function() {\r\n var _this16 = this;\r\n var deferred = new _deferred.Deferred;\r\n this.waitForDeferredOperations().done(function() {\r\n if (_this16.isSaving()) {\r\n _this16._resolveAfterSave(deferred);\r\n return\r\n }(0, _deferred.when)(_this16._beforeSaveEditData()).done(function(cancel) {\r\n if (cancel) {\r\n _this16._resolveAfterSave(deferred, {\r\n cancel: cancel\r\n });\r\n return\r\n }\r\n _this16._saving = true;\r\n _this16._saveEditDataInner().done(deferred.resolve).fail(deferred.reject).always(function() {\r\n _this16._saving = false\r\n })\r\n }).fail(deferred.reject)\r\n }).fail(deferred.reject);\r\n return deferred.promise()\r\n },\r\n _resolveAfterSave: function(deferred) {\r\n var _ref3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\r\n cancel = _ref3.cancel,\r\n error = _ref3.error;\r\n (0, _deferred.when)(this._afterSaveEditData(cancel)).done(function() {\r\n deferred.resolve(error)\r\n }).fail(deferred.reject)\r\n },\r\n _saveEditDataInner: function() {\r\n var _this17 = this;\r\n var results = [];\r\n var deferreds = [];\r\n var dataChanges = [];\r\n var dataController = this._dataController;\r\n var dataSource = dataController.dataSource();\r\n var result = new _deferred.Deferred;\r\n (0, _deferred.when)(this._fireOnSaving()).done(function(_ref4) {\r\n var cancel = _ref4.cancel,\r\n changes = _ref4.changes;\r\n if (cancel) {\r\n return result.resolve().promise()\r\n }\r\n _this17._processChanges(deferreds, results, dataChanges, changes);\r\n if (deferreds.length) {\r\n null === dataSource || void 0 === dataSource ? void 0 : dataSource.beginLoading();\r\n _deferred.when.apply(void 0, deferreds).done(function() {\r\n if (_this17._processSaveEditDataResult(results)) {\r\n _this17._endSaving(dataChanges, changes, result)\r\n } else {\r\n null === dataSource || void 0 === dataSource ? void 0 : dataSource.endLoading();\r\n result.resolve()\r\n }\r\n }).fail(function(error) {\r\n null === dataSource || void 0 === dataSource ? void 0 : dataSource.endLoading();\r\n result.resolve(error)\r\n });\r\n return result.always(function() {\r\n _this17._focusEditingCell()\r\n }).promise()\r\n }\r\n _this17._cancelSaving(result)\r\n }).fail(result.reject);\r\n return result.promise()\r\n },\r\n _resetModifiedClassCells: function(changes) {\r\n var _this18 = this;\r\n var editMode = _getEditMode(this);\r\n if (editMode === EDIT_MODE_BATCH) {\r\n var columnsCount = this._columnsController.getVisibleColumns().length;\r\n changes.forEach(function(_ref5) {\r\n var key = _ref5.key;\r\n var rowIndex = _this18._dataController.getRowIndexByKey(key);\r\n if (rowIndex !== -1) {\r\n for (var columnIndex = 0; columnIndex < columnsCount; columnIndex++) {\r\n _this18._rowsView._getCellElement(rowIndex, columnIndex).removeClass(CELL_MODIFIED)\r\n }\r\n }\r\n })\r\n }\r\n },\r\n _endSaving: function(dataChanges, changes, deferred) {\r\n var _changes$;\r\n var editMode = _getEditMode(this);\r\n var dataSource = this._dataController.dataSource();\r\n if (editMode !== EDIT_MODE_CELL) {\r\n this._resetModifiedClassCells(changes);\r\n this._resetEditIndices()\r\n } else {\r\n if (\"update\" !== (null === (_changes$ = changes[0]) || void 0 === _changes$ ? void 0 : _changes$.type)) {\r\n this._resetEditIndices()\r\n }\r\n }\r\n if (editMode === EDIT_MODE_POPUP && this._editPopup) {\r\n this._editPopup.hide()\r\n }\r\n null === dataSource || void 0 === dataSource ? void 0 : dataSource.endLoading();\r\n this._refreshDataAfterSave(dataChanges, changes, deferred)\r\n },\r\n _cancelSaving: function(result) {\r\n var editMode = _getEditMode(this);\r\n var dataController = this._dataController;\r\n if (_isRowEditMode(this)) {\r\n if (!this.hasChanges()) {\r\n this._cancelEditDataCore()\r\n }\r\n } else {\r\n if (this.isCellOrBatchEditMode()) {\r\n if (editMode !== EDIT_MODE_CELL) {\r\n this._resetEditIndices()\r\n }\r\n dataController.updateItems()\r\n } else {\r\n this._focusEditingCell()\r\n }\r\n }\r\n this.executeAction(\"onSaved\", {\r\n changes: []\r\n });\r\n this._resolveAfterSave(result)\r\n },\r\n _refreshDataAfterSave: function(dataChanges, changes, deferred) {\r\n var _this19 = this;\r\n var dataController = this._dataController;\r\n var refreshMode = this.option(\"editing.refreshMode\");\r\n var isFullRefresh = \"reshape\" !== refreshMode && \"repaint\" !== refreshMode;\r\n if (!isFullRefresh) {\r\n dataController.push(dataChanges)\r\n }(0, _deferred.when)(dataController.refresh({\r\n selection: isFullRefresh,\r\n reload: isFullRefresh,\r\n load: \"reshape\" === refreshMode,\r\n changesOnly: this.option(\"repaintChangesOnly\")\r\n })).always(function() {\r\n _this19._fireSaveEditDataEvents(changes)\r\n }).done(function() {\r\n _this19._resolveAfterSave(deferred)\r\n }).fail(function(error) {\r\n _this19._resolveAfterSave(deferred, {\r\n error: error\r\n })\r\n })\r\n },\r\n isSaving: function() {\r\n return this._saving\r\n },\r\n _updateEditColumn: function() {\r\n var that = this;\r\n var isEditColumnVisible = that._isEditColumnVisible();\r\n var useIcons = that.option(\"editing.useIcons\");\r\n var cssClass = COMMAND_EDIT_CLASS + (useIcons ? \" \" + COMMAND_EDIT_WITH_ICONS_CLASS : \"\");\r\n that._columnsController.addCommandColumn({\r\n type: \"buttons\",\r\n command: \"edit\",\r\n visible: isEditColumnVisible,\r\n cssClass: cssClass,\r\n width: \"auto\",\r\n alignment: \"center\",\r\n cellTemplate: that._getEditCommandCellTemplate(),\r\n fixedPosition: \"right\"\r\n });\r\n that._columnsController.columnOption(\"command:edit\", {\r\n visible: isEditColumnVisible,\r\n cssClass: cssClass\r\n })\r\n },\r\n _isEditColumnVisible: function() {\r\n var that = this;\r\n var editingOptions = that.option(\"editing\");\r\n if (editingOptions) {\r\n var editMode = _getEditMode(that);\r\n var isVisibleWithCurrentEditMode = false;\r\n switch (editMode) {\r\n case EDIT_MODE_ROW:\r\n isVisibleWithCurrentEditMode = editingOptions.allowUpdating || editingOptions.allowAdding;\r\n break;\r\n case EDIT_MODE_FORM:\r\n case EDIT_MODE_POPUP:\r\n isVisibleWithCurrentEditMode = editingOptions.allowUpdating\r\n }\r\n return editingOptions.allowDeleting || isVisibleWithCurrentEditMode\r\n }\r\n },\r\n _updateEditButtons: function() {\r\n var that = this;\r\n var headerPanel = that.getView(\"headerPanel\");\r\n var hasChanges = that.hasChanges();\r\n if (headerPanel) {\r\n headerPanel.setToolbarItemDisabled(\"saveButton\", !hasChanges);\r\n headerPanel.setToolbarItemDisabled(\"revertButton\", !hasChanges)\r\n }\r\n },\r\n _applyModified: function($element) {\r\n $element && $element.addClass(CELL_MODIFIED)\r\n },\r\n _beforeCloseEditCellInBatchMode: function() {},\r\n cancelEditData: function() {\r\n var changes = this.getChanges();\r\n var params = {\r\n cancel: false,\r\n changes: changes\r\n };\r\n this.executeAction(\"onEditCanceling\", params);\r\n if (!params.cancel) {\r\n this._cancelEditDataCore();\r\n this.executeAction(\"onEditCanceled\", {\r\n changes: changes\r\n })\r\n }\r\n },\r\n _cancelEditDataCore: function() {\r\n var editMode = _getEditMode(this);\r\n var rowIndex = this._getVisibleEditRowIndex();\r\n var dataController = this._dataController;\r\n this._beforeCancelEditData();\r\n this.init();\r\n this.resetChanges();\r\n this._resetEditColumnName();\r\n this._resetEditRowKey();\r\n if (ROW_BASED_MODES.indexOf(editMode) !== -1 && rowIndex >= 0) {\r\n dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [rowIndex, rowIndex + 1]\r\n })\r\n } else {\r\n dataController.updateItems({\r\n repaintChangesOnly: this.option(\"repaintChangesOnly\")\r\n })\r\n }\r\n if (editMode === EDIT_MODE_POPUP) {\r\n this._hideEditPopup()\r\n }\r\n },\r\n _hideEditPopup: function() {\r\n this._editPopup && this._editPopup.option(\"visible\", false)\r\n },\r\n hasEditData: function() {\r\n return this.hasChanges()\r\n },\r\n closeEditCell: function(isError, withoutSaveEditData) {\r\n var _this20 = this;\r\n var that = this;\r\n var result = (0, _deferred.when)();\r\n var oldEditRowIndex = that._getVisibleEditRowIndex();\r\n if (!_isRowEditMode(that)) {\r\n result = (0, _deferred.Deferred)();\r\n this.executeOperation(result, function() {\r\n _this20._closeEditCellCore(isError, oldEditRowIndex, withoutSaveEditData);\r\n result.resolve()\r\n })\r\n }\r\n return result.promise()\r\n },\r\n _closeEditCellCore: function(isError, oldEditRowIndex, withoutSaveEditData) {\r\n var that = this;\r\n var editMode = _getEditMode(that);\r\n var dataController = that._dataController;\r\n if (editMode === EDIT_MODE_CELL && that.hasChanges()) {\r\n if (!withoutSaveEditData) {\r\n that.saveEditData().done(function(error) {\r\n if (!that.hasChanges()) {\r\n that.closeEditCell(!!error)\r\n }\r\n })\r\n }\r\n } else {\r\n if (oldEditRowIndex >= 0) {\r\n var rowIndices = [oldEditRowIndex];\r\n this._resetEditRowKey();\r\n that._resetEditColumnName();\r\n that._beforeCloseEditCellInBatchMode(rowIndices);\r\n if (!isError) {\r\n dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: rowIndices\r\n })\r\n }\r\n }\r\n }\r\n },\r\n update: function(changeType) {\r\n var that = this;\r\n var dataController = that._dataController;\r\n if (dataController && that._pageIndex !== dataController.pageIndex()) {\r\n if (\"refresh\" === changeType) {\r\n that.refresh(true)\r\n }\r\n that._pageIndex = dataController.pageIndex()\r\n }\r\n that._updateEditButtons()\r\n },\r\n _getRowIndicesForCascadeUpdating: function(row, skipCurrentRow) {\r\n return skipCurrentRow ? [] : [row.rowIndex]\r\n },\r\n addDeferred: function(deferred) {\r\n var _this21 = this;\r\n if (this._deferreds.indexOf(deferred) < 0) {\r\n this._deferreds.push(deferred);\r\n deferred.always(function() {\r\n var index = _this21._deferreds.indexOf(deferred);\r\n if (index >= 0) {\r\n _this21._deferreds.splice(index, 1)\r\n }\r\n })\r\n }\r\n },\r\n _prepareChange: function(options, value, text) {\r\n var _options$row;\r\n var that = this;\r\n var newData = {};\r\n var oldData = null === (_options$row = options.row) || void 0 === _options$row ? void 0 : _options$row.data;\r\n var rowKey = options.key;\r\n var $cellElement = (0, _renderer.default)(options.cellElement);\r\n var editMode = _getEditMode(that);\r\n var deferred = new _deferred.Deferred;\r\n if (void 0 !== rowKey) {\r\n if (editMode === EDIT_MODE_BATCH) {\r\n that._applyModified($cellElement, options)\r\n }\r\n options.value = value;\r\n var setCellValueResult = (0, _deferred.fromPromise)(options.column.setCellValue(newData, value, (0, _extend.extend)(true, {}, oldData), text));\r\n setCellValueResult.done(function() {\r\n deferred.resolve({\r\n data: newData,\r\n key: rowKey,\r\n oldData: oldData,\r\n type: DATA_EDIT_DATA_UPDATE_TYPE\r\n })\r\n }).fail(createFailureHandler(deferred)).fail(function(arg) {\r\n return that._fireDataErrorOccurred(arg)\r\n });\r\n if ((0, _type.isDefined)(text) && options.column.displayValueMap) {\r\n options.column.displayValueMap[value] = text\r\n }\r\n that._updateRowValues(options);\r\n that.addDeferred(deferred)\r\n }\r\n return deferred\r\n },\r\n _updateRowValues: function(options) {\r\n if (options.values) {\r\n var dataController = this._dataController;\r\n var rowIndex = dataController.getRowIndexByKey(options.key);\r\n var row = dataController.getVisibleRows()[rowIndex];\r\n if (row) {\r\n options.values = row.values\r\n }\r\n options.values[options.columnIndex] = options.value\r\n }\r\n },\r\n updateFieldValue: function(options, value, text, forceUpdateRow) {\r\n var _this22 = this;\r\n var rowKey = options.key;\r\n var deferred = new _deferred.Deferred;\r\n if (void 0 === rowKey) {\r\n this._dataController.fireError(\"E1043\")\r\n }\r\n if (options.column.setCellValue) {\r\n this._prepareChange(options, value, text).done(function(params) {\r\n (0, _deferred.when)(_this22._applyChange(options, params, forceUpdateRow)).always(function() {\r\n deferred.resolve()\r\n })\r\n })\r\n } else {\r\n deferred.resolve()\r\n }\r\n return deferred.promise()\r\n },\r\n _focusPreviousEditingCellIfNeed: function(options) {\r\n var that = this;\r\n if (that.hasEditData() && !that.isEditCell(options.rowIndex, options.columnIndex)) {\r\n that._focusEditingCell();\r\n that._updateEditRow(options.row, true);\r\n return true\r\n }\r\n },\r\n _needUpdateRow: function(column) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n if (!column) {\r\n column = this._getEditColumn()\r\n }\r\n var isCustomSetCellValue = column && column.setCellValue !== column.defaultSetCellValue;\r\n var isCustomCalculateCellValue = visibleColumns.some(function(visibleColumn) {\r\n return visibleColumn.calculateCellValue !== visibleColumn.defaultCalculateCellValue\r\n });\r\n return isCustomSetCellValue || isCustomCalculateCellValue\r\n },\r\n _applyChange: function(options, params, forceUpdateRow) {\r\n var that = this;\r\n var editMode = _getEditMode(that);\r\n var isCustomSetCellValue = options.column.setCellValue !== options.column.defaultSetCellValue;\r\n var showEditorAlways = options.column.showEditorAlways;\r\n var isUpdateInCellMode = editMode === EDIT_MODE_CELL && options.row && !options.row.isNewRow;\r\n var focusPreviousEditingCell = showEditorAlways && !forceUpdateRow && isUpdateInCellMode && that.hasEditData() && !that.isEditCell(options.rowIndex, options.columnIndex);\r\n if (focusPreviousEditingCell) {\r\n that._focusEditingCell();\r\n that._updateEditRow(options.row, true, isCustomSetCellValue);\r\n return\r\n }\r\n that._addChange(params, options.row);\r\n that._updateEditButtons();\r\n if (showEditorAlways && !forceUpdateRow) {\r\n if (isUpdateInCellMode) {\r\n that._setEditRowKey(options.row.key, true);\r\n that._setEditColumnNameByIndex(options.columnIndex, true);\r\n return that.saveEditData()\r\n } else {\r\n if (editMode === EDIT_MODE_BATCH) {\r\n forceUpdateRow = that._needUpdateRow(options.column)\r\n }\r\n }\r\n }\r\n var row = options.row;\r\n if (row) {\r\n if (forceUpdateRow || isCustomSetCellValue) {\r\n that._updateEditRow(row, forceUpdateRow, isCustomSetCellValue)\r\n } else {\r\n if (row.update) {\r\n row.update()\r\n }\r\n }\r\n }\r\n },\r\n _updateEditRowCore: function(row, skipCurrentRow, isCustomSetCellValue) {\r\n var that = this;\r\n var editForm = that._editForm;\r\n var editMode = _getEditMode(that);\r\n if (editMode === EDIT_MODE_POPUP) {\r\n if (that.option(\"repaintChangesOnly\")) {\r\n row.update && row.update(row)\r\n } else {\r\n if (editForm) {\r\n that._updateEditFormDeferred = (new _deferred.Deferred).done(function() {\r\n return editForm.repaint()\r\n });\r\n if (!that._updateLockCount) {\r\n that._updateEditFormDeferred.resolve()\r\n }\r\n }\r\n }\r\n } else {\r\n that._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: that._getRowIndicesForCascadeUpdating(row, skipCurrentRow)\r\n })\r\n }\r\n },\r\n _endUpdateCore: function() {\r\n this._updateEditFormDeferred && this._updateEditFormDeferred.resolve()\r\n },\r\n _updateEditRow: function(row, forceUpdateRow, isCustomSetCellValue) {\r\n var that = this;\r\n if (forceUpdateRow || !_isRowEditMode(that)) {\r\n that._updateEditRowCore(row, !forceUpdateRow, isCustomSetCellValue);\r\n if (!forceUpdateRow) {\r\n that._focusEditingCell()\r\n }\r\n } else {\r\n var deferred = new _deferred.Deferred;\r\n that.addDeferred(deferred);\r\n setTimeout(function() {\r\n var $focusedElement = (0, _renderer.default)(_dom_adapter.default.getActiveElement());\r\n var columnIndex = that._rowsView.getCellIndex($focusedElement, row.rowIndex);\r\n var focusedElement = $focusedElement.get(0);\r\n var selectionRange = _uiGrid_core2.default.getSelectionRange(focusedElement);\r\n that._updateEditRowCore(row, false, isCustomSetCellValue);\r\n if (columnIndex >= 0) {\r\n var $focusedItem = that._rowsView._getCellElement(row.rowIndex, columnIndex);\r\n that._delayedInputFocus($focusedItem, function() {\r\n setTimeout(function() {\r\n focusedElement = _dom_adapter.default.getActiveElement();\r\n if (selectionRange.selectionStart >= 0) {\r\n _uiGrid_core2.default.setSelectionRange(focusedElement, selectionRange)\r\n }\r\n })\r\n })\r\n }\r\n deferred.resolve()\r\n })\r\n }\r\n },\r\n _addChange: function(options, row) {\r\n var changes = _toConsumableArray(this.getChanges());\r\n var index = _uiGrid_core2.default.getIndexByKey(options.key, changes);\r\n if (index < 0) {\r\n index = changes.length;\r\n this._addInternalData({\r\n key: options.key,\r\n oldData: options.oldData\r\n });\r\n delete options.oldData;\r\n changes.push(options)\r\n }\r\n var change = _objectSpread({}, changes[index]);\r\n if (change) {\r\n if (options.data) {\r\n change.data = (0, _array_utils.createObjectWithChanges)(change.data, options.data)\r\n }\r\n if ((!change.type || !options.data) && options.type) {\r\n change.type = options.type\r\n }\r\n if (row) {\r\n row.oldData = this._getOldData(row.key);\r\n row.data = (0, _array_utils.createObjectWithChanges)(row.data, options.data)\r\n }\r\n }\r\n changes[index] = change;\r\n this._silentOption(EDITING_CHANGES_OPTION_NAME, changes);\r\n return index\r\n },\r\n _getFormEditItemTemplate: function(cellOptions, column) {\r\n return column.editCellTemplate || getDefaultEditorTemplate(this)\r\n },\r\n renderFormEditTemplate: function(detailCellOptions, item, form, container, isReadOnly) {\r\n var that = this;\r\n var $container = (0,\r\n _renderer.default)(container);\r\n var column = item.column;\r\n var editorType = getEditorType(item);\r\n var rowData = null === detailCellOptions || void 0 === detailCellOptions ? void 0 : detailCellOptions.row.data;\r\n var cellOptions = (0, _extend.extend)({}, detailCellOptions, {\r\n data: rowData,\r\n cellElement: null,\r\n isOnForm: true,\r\n item: item,\r\n column: (0, _extend.extend)({}, column, {\r\n editorType: editorType,\r\n editorOptions: item.editorOptions\r\n }),\r\n id: form.getItemID(item.name || item.dataField),\r\n columnIndex: column.index,\r\n setValue: !isReadOnly && column.allowEditing && function(value) {\r\n that.updateFieldValue(cellOptions, value)\r\n }\r\n });\r\n cellOptions.value = column.calculateCellValue(rowData);\r\n var template = that._getFormEditItemTemplate.bind(that)(cellOptions, column);\r\n that._rowsView.renderTemplate($container, template, cellOptions, !!$container.closest((0, _window.getWindow)().document).length).done(function() {\r\n that._rowsView._updateCell($container, cellOptions)\r\n });\r\n return cellOptions\r\n },\r\n getFormEditorTemplate: function(cellOptions, item) {\r\n var that = this;\r\n var column = this.component.columnOption(item.dataField);\r\n return function(options, container) {\r\n var $container = (0, _renderer.default)(container);\r\n cellOptions.row.watch && cellOptions.row.watch(function() {\r\n return column.selector(cellOptions.row.data)\r\n }, function() {\r\n var _validator;\r\n var $editorElement = $container.find(\".dx-widget\").first();\r\n var validator = $editorElement.data(\"dxValidator\");\r\n var validatorOptions = null === (_validator = validator) || void 0 === _validator ? void 0 : _validator.option();\r\n $container.contents().remove();\r\n cellOptions = that.renderFormEditTemplate.bind(that)(cellOptions, item, options.component, $container);\r\n $editorElement = $container.find(\".dx-widget\").first();\r\n validator = $editorElement.data(\"dxValidator\");\r\n if (validatorOptions && !validator) {\r\n $editorElement.dxValidator({\r\n validationRules: validatorOptions.validationRules,\r\n validationGroup: validatorOptions.validationGroup,\r\n dataGetter: validatorOptions.dataGetter\r\n })\r\n }\r\n });\r\n cellOptions = that.renderFormEditTemplate.bind(that)(cellOptions, item, options.component, $container)\r\n }\r\n },\r\n getEditFormOptions: function(detailOptions) {\r\n var userCustomizeItem = this.option(\"editing.form.customizeItem\");\r\n var editFormItemClass = this.addWidgetPrefix(EDIT_FORM_ITEM_CLASS);\r\n var items = this.option(\"editing.form.items\");\r\n var isCustomEditorType = {};\r\n var that = this;\r\n if (!items) {\r\n var columns = this.getController(\"columns\").getColumns();\r\n items = [];\r\n (0, _iterator.each)(columns, function(_, column) {\r\n if (!column.isBand && !column.type) {\r\n items.push({\r\n column: column,\r\n name: column.name,\r\n dataField: column.dataField\r\n })\r\n }\r\n })\r\n } else {\r\n forEachFormItems(items, function(item) {\r\n var itemId = (null === item || void 0 === item ? void 0 : item.name) || (null === item || void 0 === item ? void 0 : item.dataField);\r\n if (itemId) {\r\n isCustomEditorType[itemId] = !!item.editorType\r\n }\r\n })\r\n }\r\n return {\r\n items: items,\r\n formID: \"dx-\" + new _guid.default,\r\n customizeItem: function(item) {\r\n var column;\r\n var itemId = item.name || item.dataField;\r\n if (item.column || itemId) {\r\n column = item.column || that._columnsController.columnOption(item.name ? \"name:\" + item.name : \"dataField:\" + item.dataField)\r\n }\r\n if (column) {\r\n item.label = item.label || {};\r\n item.label.text = item.label.text || column.caption;\r\n item.template = item.template || that.getFormEditorTemplate(detailOptions, item);\r\n item.column = column;\r\n item.isCustomEditorType = isCustomEditorType[itemId];\r\n if (column.formItem) {\r\n (0, _extend.extend)(item, column.formItem)\r\n }\r\n if (void 0 === item.isRequired && column.validationRules) {\r\n item.isRequired = column.validationRules.some(function(rule) {\r\n return \"required\" === rule.type\r\n });\r\n item.validationRules = []\r\n }\r\n var itemVisible = (0, _type.isDefined)(item.visible) ? item.visible : true;\r\n if (!that._firstFormItem && itemVisible) {\r\n that._firstFormItem = item\r\n }\r\n }\r\n userCustomizeItem && userCustomizeItem.call(this, item);\r\n item.cssClass = (0, _type.isString)(item.cssClass) ? item.cssClass + \" \" + editFormItemClass : editFormItemClass\r\n }\r\n }\r\n },\r\n getEditFormTemplate: function() {\r\n var that = this;\r\n return function($container, detailOptions, renderFormOnly) {\r\n var editFormOptions = that.option(\"editing.form\");\r\n var baseEditFormOptions = that.getEditFormOptions(detailOptions);\r\n that._firstFormItem = void 0;\r\n that._editForm = that._createComponent((0, _renderer.default)(\"
\").appendTo($container), _form.default, (0, _extend.extend)({}, editFormOptions, baseEditFormOptions));\r\n if (!renderFormOnly) {\r\n var $buttonsContainer = (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(FORM_BUTTONS_CONTAINER_CLASS)).appendTo($container);\r\n that._createComponent((0, _renderer.default)(\"
\").appendTo($buttonsContainer), _button.default, that._getSaveButtonConfig());\r\n that._createComponent((0, _renderer.default)(\"
\").appendTo($buttonsContainer), _button.default, that._getCancelButtonConfig())\r\n }\r\n that._editForm.on(\"contentReady\", function() {\r\n that._editPopup && that._editPopup.repaint()\r\n })\r\n }\r\n },\r\n getColumnTemplate: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n var rowIndex = options.row && options.row.rowIndex;\r\n var template;\r\n var isRowMode = _isRowEditMode(that);\r\n var isRowEditing = that.isEditRow(rowIndex);\r\n var isCellEditing = that.isEditCell(rowIndex, options.columnIndex);\r\n var editingStartOptions;\r\n if ((column.showEditorAlways || column.setCellValue && (isRowEditing && column.allowEditing || isCellEditing)) && (\"data\" === options.rowType || \"detailAdaptive\" === options.rowType) && !column.command) {\r\n var allowUpdating = that.allowUpdating(options);\r\n if (((allowUpdating || isRowEditing) && column.allowEditing || isCellEditing) && (isRowMode && isRowEditing || !isRowMode)) {\r\n if (column.showEditorAlways && !isRowMode) {\r\n editingStartOptions = {\r\n cancel: false,\r\n key: options.row.isNewRow ? void 0 : options.row.key,\r\n data: options.row.data,\r\n column: column\r\n };\r\n that._isEditingStart(editingStartOptions)\r\n }\r\n if (!editingStartOptions || !editingStartOptions.cancel) {\r\n options.setValue = function(value, text) {\r\n that.updateFieldValue(options, value, text)\r\n }\r\n }\r\n }\r\n template = column.editCellTemplate || getDefaultEditorTemplate(that)\r\n } else {\r\n if (\"detail\" === column.command && \"detail\" === options.rowType && isRowEditing) {\r\n template = that.getEditFormTemplate(options)\r\n }\r\n }\r\n return template\r\n },\r\n _createButton: function($container, button, options) {\r\n var that = this;\r\n var icon = EDIT_ICON_CLASS[button.name];\r\n var useIcons = that.option(\"editing.useIcons\");\r\n var $button = (0, _renderer.default)(\"\").attr(\"href\", \"#\").addClass(LINK_CLASS).addClass(button.cssClass);\r\n if (button.template) {\r\n that._rowsView.renderTemplate($container, button.template, options, true)\r\n } else {\r\n if (useIcons && icon || button.icon) {\r\n icon = button.icon || icon;\r\n var iconType = iconUtils.getImageSourceType(icon);\r\n if (\"image\" === iconType || \"svg\" === iconType) {\r\n $button = iconUtils.getImageContainer(icon).addClass(button.cssClass)\r\n } else {\r\n $button.addClass(\"dx-icon\" + (\"dxIcon\" === iconType ? \"-\" : \" \") + icon).attr(\"title\", button.text)\r\n }\r\n $button.addClass(\"dx-link-icon\");\r\n $container.addClass(COMMAND_EDIT_WITH_ICONS_CLASS);\r\n var localizationName = this.getButtonLocalizationNames()[button.name];\r\n localizationName && $button.attr(\"aria-label\", _message.default.format(localizationName))\r\n } else {\r\n $button.text(button.text)\r\n }\r\n if ((0, _type.isDefined)(button.hint)) {\r\n $button.attr(\"title\", button.hint)\r\n }\r\n _events_engine.default.on($button, (0, _index.addNamespace)(\"click\", EDITING_NAMESPACE), that.createAction(function(e) {\r\n button.onClick.call(button, (0, _extend.extend)({}, e, {\r\n row: options.row,\r\n column: options.column\r\n }));\r\n e.event.preventDefault();\r\n e.event.stopPropagation()\r\n }));\r\n $container.append($button, \" \")\r\n }\r\n },\r\n getButtonLocalizationNames: function() {\r\n return {\r\n edit: \"dxDataGrid-editingEditRow\",\r\n save: \"dxDataGrid-editingSaveRowChanges\",\r\n \"delete\": \"dxDataGrid-editingDeleteRow\",\r\n undelete: \"dxDataGrid-editingUndeleteRow\",\r\n cancel: \"dxDataGrid-editingCancelRowChanges\"\r\n }\r\n },\r\n prepareEditButtons: function(headerPanel) {\r\n var that = this;\r\n var editingOptions = that.option(\"editing\") || {};\r\n var editingTexts = that.option(\"editing.texts\") || {};\r\n var titleButtonTextByClassNames = {\r\n revert: editingTexts.cancelAllChanges,\r\n save: editingTexts.saveAllChanges,\r\n addRow: editingTexts.addRow\r\n };\r\n var classNameButtonByNames = {\r\n revert: \"cancel\",\r\n save: \"save\",\r\n addRow: \"addrow\"\r\n };\r\n var buttonItems = [];\r\n var prepareButtonItem = function(name, methodName, sortIndex) {\r\n var className = classNameButtonByNames[name];\r\n var onInitialized = function(e) {\r\n (0, _renderer.default)(e.element).addClass(headerPanel._getToolbarButtonClass(EDIT_BUTTON_CLASS + \" \" + that.addWidgetPrefix(className) + \"-button\"))\r\n };\r\n var hintText = titleButtonTextByClassNames[name];\r\n var isButtonDisabled = (\"save\" === className || \"cancel\" === className) && !that.hasChanges();\r\n return {\r\n widget: \"dxButton\",\r\n options: {\r\n onInitialized: onInitialized,\r\n icon: \"edit-button-\" + className,\r\n disabled: isButtonDisabled,\r\n onClick: function() {\r\n setTimeout(function() {\r\n that[methodName]()\r\n })\r\n },\r\n text: hintText,\r\n hint: hintText\r\n },\r\n showText: \"inMenu\",\r\n name: name + \"Button\",\r\n location: \"after\",\r\n locateInMenu: \"auto\",\r\n sortIndex: sortIndex\r\n }\r\n };\r\n if (editingOptions.allowAdding) {\r\n buttonItems.push(prepareButtonItem(\"addRow\", \"addRow\", 20))\r\n }\r\n if ((editingOptions.allowUpdating || editingOptions.allowAdding || editingOptions.allowDeleting) && _getEditMode(that) === EDIT_MODE_BATCH) {\r\n buttonItems.push(prepareButtonItem(\"save\", \"saveEditData\", 21));\r\n buttonItems.push(prepareButtonItem(\"revert\", \"cancelEditData\", 22))\r\n }\r\n return buttonItems\r\n },\r\n highlightDataCell: function($cell, parameters) {\r\n var cellModified = this.isCellModified(parameters);\r\n cellModified && parameters.column.setCellValue && $cell.addClass(CELL_MODIFIED)\r\n },\r\n _afterInsertRow: function() {},\r\n _beforeSaveEditData: function(change) {\r\n if (change && !(0, _type.isDefined)(change.key) && (0, _type.isDefined)(change.type)) {\r\n return true\r\n }\r\n },\r\n _afterSaveEditData: function() {},\r\n _beforeCancelEditData: function() {},\r\n _allowEditAction: function(actionName, options) {\r\n var allowEditAction = this.option(\"editing.\" + actionName);\r\n if ((0, _type.isFunction)(allowEditAction)) {\r\n allowEditAction = allowEditAction({\r\n component: this.component,\r\n row: options.row\r\n })\r\n }\r\n return allowEditAction\r\n },\r\n allowUpdating: function(options, eventName) {\r\n var startEditAction = this.option(\"editing.startEditAction\") || DEFAULT_START_EDIT_ACTION;\r\n var needCallback = arguments.length > 1 ? startEditAction === eventName || \"down\" === eventName : true;\r\n return needCallback && this._allowEditAction(\"allowUpdating\", options)\r\n },\r\n allowDeleting: function(options) {\r\n return this._allowEditAction(\"allowDeleting\", options)\r\n },\r\n isCellModified: function(parameters) {\r\n var columnIndex = parameters.columnIndex;\r\n var modifiedValues = parameters.row && (parameters.row.isNewRow ? parameters.row.values : parameters.row.modifiedValues);\r\n return !!modifiedValues && void 0 !== modifiedValues[columnIndex]\r\n }\r\n }\r\n}());\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n editing: {\r\n mode: \"row\",\r\n refreshMode: \"full\",\r\n allowAdding: false,\r\n allowUpdating: false,\r\n allowDeleting: false,\r\n useIcons: false,\r\n selectTextOnEditStart: false,\r\n confirmDelete: true,\r\n texts: {\r\n editRow: _message.default.format(\"dxDataGrid-editingEditRow\"),\r\n saveAllChanges: _message.default.format(\"dxDataGrid-editingSaveAllChanges\"),\r\n saveRowChanges: _message.default.format(\"dxDataGrid-editingSaveRowChanges\"),\r\n cancelAllChanges: _message.default.format(\"dxDataGrid-editingCancelAllChanges\"),\r\n cancelRowChanges: _message.default.format(\"dxDataGrid-editingCancelRowChanges\"),\r\n addRow: _message.default.format(\"dxDataGrid-editingAddRow\"),\r\n deleteRow: _message.default.format(\"dxDataGrid-editingDeleteRow\"),\r\n undeleteRow: _message.default.format(\"dxDataGrid-editingUndeleteRow\"),\r\n confirmDeleteMessage: _message.default.format(\"dxDataGrid-editingConfirmDeleteMessage\"),\r\n confirmDeleteTitle: \"\"\r\n },\r\n form: {\r\n colCount: 2\r\n },\r\n popup: {},\r\n startEditAction: \"click\",\r\n editRowKey: null,\r\n editColumnName: null,\r\n changes: []\r\n }\r\n }\r\n },\r\n controllers: {\r\n editing: EditingController\r\n },\r\n extenders: {\r\n controllers: {\r\n data: {\r\n init: function() {\r\n this._editingController = this.getController(\"editing\");\r\n this.callBase()\r\n },\r\n reload: function(full, repaintChangesOnly) {\r\n !repaintChangesOnly && this._editingController.refresh();\r\n return this.callBase.apply(this, arguments)\r\n },\r\n repaintRows: function() {\r\n if (this.getController(\"editing\").isSaving()) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _updateEditRow: function(items) {\r\n var editingController = this._editingController;\r\n var editRowKey = this.option(EDITING_EDITROWKEY_OPTION_NAME);\r\n var editRowIndex = _uiGrid_core2.default.getIndexByKey(editRowKey, items);\r\n var editItem = items[editRowIndex];\r\n if (editItem) {\r\n editItem.isEditing = true;\r\n if (editingController.getEditMode() === EDIT_MODE_FORM) {\r\n editItem.rowType = \"detail\"\r\n }\r\n }\r\n },\r\n _updateItemsCore: function(change) {\r\n this.callBase(change);\r\n this._updateEditRow(this.items())\r\n },\r\n _applyChangeUpdate: function(change) {\r\n this._updateEditRow(change.items);\r\n this.callBase(change)\r\n },\r\n _applyChangesOnly: function(change) {\r\n this._updateEditRow(change.items);\r\n this.callBase(change)\r\n },\r\n _processItems: function(items, change) {\r\n items = this._editingController.processItems(items, change);\r\n return this.callBase(items, change)\r\n },\r\n _processDataItem: function(dataItem, options) {\r\n this._editingController.processDataItem(dataItem, options, this.generateDataValues);\r\n return this.callBase(dataItem, options)\r\n },\r\n _processItem: function(item, options) {\r\n item = this.callBase(item, options);\r\n if (item.isNewRow) {\r\n options.dataIndex--;\r\n delete item.dataIndex\r\n }\r\n return item\r\n },\r\n _getChangedColumnIndices: function(oldItem, newItem, rowIndex, isLiveUpdate) {\r\n var editingController = this.getController(\"editing\");\r\n var isRowEditMode = editingController.isRowEditMode();\r\n if (oldItem.isNewRow !== newItem.isNewRow || oldItem.removed !== newItem.removed || isRowEditMode && oldItem.isEditing !== newItem.isEditing) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _isCellChanged: function(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) {\r\n var editingController = this.getController(\"editing\");\r\n var cell = oldRow.cells && oldRow.cells[columnIndex];\r\n var isEditing = editingController && editingController.isEditCell(visibleRowIndex, columnIndex);\r\n if (isLiveUpdate && isEditing) {\r\n return false\r\n }\r\n if (cell && cell.column && !cell.column.showEditorAlways && cell.isEditing !== isEditing) {\r\n return true\r\n }\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n },\r\n views: {\r\n rowsView: {\r\n init: function() {\r\n this.callBase();\r\n this._editingController = this.getController(\"editing\")\r\n },\r\n getCellElements: function(rowIndex) {\r\n var $cellElements = this.callBase(rowIndex);\r\n var editingController = this._editingController;\r\n var editForm = editingController.getEditForm();\r\n var editFormRowIndex = editingController.getEditFormRowIndex();\r\n if (editFormRowIndex === rowIndex && $cellElements && editForm) {\r\n return editForm.$element().find(\".\" + this.addWidgetPrefix(EDIT_FORM_ITEM_CLASS) + \", .\" + BUTTON_CLASS)\r\n }\r\n return $cellElements\r\n },\r\n getCellIndex: function($cell, rowIndex) {\r\n if (!$cell.is(\"td\") && rowIndex >= 0) {\r\n var $cellElements = this.getCellElements(rowIndex);\r\n var cellIndex = -1;\r\n (0, _iterator.each)($cellElements, function(index, cellElement) {\r\n if ((0, _renderer.default)(cellElement).find($cell).length) {\r\n cellIndex = index\r\n }\r\n });\r\n return cellIndex\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _getVisibleColumnIndex: function($cells, rowIndex, columnIdentifier) {\r\n var editFormRowIndex = this._editingController.getEditFormRowIndex();\r\n if (editFormRowIndex === rowIndex && (0, _type.isString)(columnIdentifier)) {\r\n var column = this._columnsController.columnOption(columnIdentifier);\r\n return this._getEditFormEditorVisibleIndex($cells, column)\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _getEditFormEditorVisibleIndex: function($cells, column) {\r\n var visibleIndex = -1;\r\n (0, _iterator.each)($cells, function(index, cellElement) {\r\n var item = (0, _renderer.default)(cellElement).find(\".dx-field-item-content\").data(\"dx-form-item\");\r\n if (item && item.column && column && item.column.index === column.index) {\r\n visibleIndex = index;\r\n return false\r\n }\r\n });\r\n return visibleIndex\r\n },\r\n publicMethods: function() {\r\n return this.callBase().concat([\"cellValue\"])\r\n },\r\n _getCellTemplate: function(options) {\r\n var that = this;\r\n var template = that._editingController.getColumnTemplate(options);\r\n return template || that.callBase(options)\r\n },\r\n _isNativeClick: function() {\r\n return (_devices.default.real().ios || _devices.default.real().android) && this.option(\"editing.allowUpdating\")\r\n },\r\n _createTable: function() {\r\n var that = this;\r\n var $table = that.callBase.apply(that, arguments);\r\n if (!_isRowEditMode(that) && that.option(\"editing.allowUpdating\")) {\r\n _events_engine.default.on($table, (0, _index.addNamespace)(_hold.default.name, \"dxDataGridRowsView\"), \"td:not(.\" + EDITOR_CELL_CLASS + \")\", that.createAction(function() {\r\n var editingController = that._editingController;\r\n if (editingController.isEditing()) {\r\n editingController.closeEditCell()\r\n }\r\n }))\r\n }\r\n return $table\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row);\r\n if (row) {\r\n var editingController = this._editingController;\r\n var isEditRow = editingController.isEditRow(row.rowIndex);\r\n var isRowRemoved = !!row.removed;\r\n var isRowInserted = !!row.isNewRow;\r\n var isRowModified = !!row.modified;\r\n if (_getEditMode(this) === EDIT_MODE_BATCH) {\r\n isRowRemoved && $row.addClass(ROW_REMOVED)\r\n } else {\r\n isEditRow && $row.addClass(EDIT_ROW)\r\n }\r\n isRowInserted && $row.addClass(ROW_INSERTED);\r\n isRowModified && $row.addClass(ROW_MODIFIED);\r\n if (isEditRow || isRowInserted || isRowRemoved) {\r\n $row.removeClass(ROW_SELECTED)\r\n }\r\n if (isEditRow && \"detail\" === row.rowType) {\r\n $row.addClass(this.addWidgetPrefix(EDIT_FORM_CLASS))\r\n }\r\n }\r\n return $row\r\n },\r\n _getColumnIndexByElement: function($element) {\r\n var $tableElement = $element.closest(\"table\");\r\n var $tableElements = this.getTableElements();\r\n while ($tableElement.length && !$tableElements.filter($tableElement).length) {\r\n $element = $tableElement.closest(\"td\");\r\n $tableElement = $element.closest(\"table\")\r\n }\r\n return this._getColumnIndexByElementCore($element)\r\n },\r\n _getColumnIndexByElementCore: function($element) {\r\n var $targetElement = $element.closest(\".\" + ROW_CLASS + \"> td:not(.dx-master-detail-cell)\");\r\n return this.getCellIndex($targetElement)\r\n },\r\n _editCellByClick: function(e, eventName) {\r\n var that = this;\r\n var editingController = that._editingController;\r\n var $targetElement = (0, _renderer.default)(e.event.target);\r\n var columnIndex = that._getColumnIndexByElement($targetElement);\r\n var row = that._dataController.items()[e.rowIndex];\r\n var allowUpdating = editingController.allowUpdating({\r\n row: row\r\n }, eventName) || row && row.isNewRow;\r\n var column = that._columnsController.getVisibleColumns()[columnIndex];\r\n var allowEditing = allowUpdating && column && (column.allowEditing || editingController.isEditCell(e.rowIndex, columnIndex));\r\n var startEditAction = that.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 && !editingController.isEditCell(e.rowIndex, columnIndex)) {\r\n editingController.closeEditCell()\r\n }\r\n if (allowEditing && eventName === startEditAction) {\r\n return editingController.editCell(e.rowIndex, columnIndex) || editingController.isEditRow(e.rowIndex)\r\n }\r\n },\r\n _rowPointerDown: function(e) {\r\n var _this23 = this;\r\n this._pointerDownTimeout = setTimeout(function() {\r\n _this23._editCellByClick(e, \"down\")\r\n })\r\n },\r\n _rowClick: function(e) {\r\n var isEditForm = (0, _renderer.default)(e.rowElement).hasClass(this.addWidgetPrefix(EDIT_FORM_CLASS));\r\n e.event[TARGET_COMPONENT_NAME] = this.component;\r\n if (!this._editCellByClick(e, \"click\") && !isEditForm) {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _rowDblClick: function(e) {\r\n if (!this._editCellByClick(e, \"dblClick\")) {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _cellPrepared: function($cell, parameters) {\r\n var editingController = this._editingController;\r\n var isCommandCell = !!parameters.column.command;\r\n var isEditableCell = parameters.setValue;\r\n var isEditRow = editingController.isEditRow(parameters.rowIndex);\r\n var isEditing = isEditingCell(isEditRow, parameters);\r\n if (isEditingOrShowEditorAlwaysDataCell(isEditRow, parameters)) {\r\n var alignment = parameters.column.alignment;\r\n $cell.toggleClass(this.addWidgetPrefix(READONLY_CLASS), !isEditableCell).toggleClass(CELL_FOCUS_DISABLED_CLASS, !isEditableCell);\r\n if (alignment) {\r\n $cell.find(EDITORS_INPUT_SELECTOR).first().css(\"textAlign\", alignment)\r\n }\r\n }\r\n if (isEditing) {\r\n this._editCellPrepared($cell)\r\n }\r\n if (parameters.column && !isCommandCell) {\r\n editingController.highlightDataCell($cell, parameters)\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _editCellPrepared: function($cell) {},\r\n _formItemPrepared: function() {},\r\n _isFormItem: function(parameters) {\r\n var isDetailRow = \"detail\" === parameters.rowType || \"detailAdaptive\" === parameters.rowType;\r\n var isPopupEditing = \"data\" === parameters.rowType && \"popup\" === _getEditMode(this);\r\n return (isDetailRow || isPopupEditing) && parameters.item\r\n },\r\n _updateCell: function($cell, parameters) {\r\n if (this._isFormItem(parameters)) {\r\n this._formItemPrepared(parameters, $cell)\r\n } else {\r\n this.callBase($cell, parameters)\r\n }\r\n },\r\n _update: function(change) {\r\n this.callBase(change);\r\n if (\"updateSelection\" === change.changeType) {\r\n this.getTableElements().children(\"tbody\").children(\".\" + EDIT_ROW).removeClass(ROW_SELECTED)\r\n }\r\n },\r\n _getCellOptions: function(options) {\r\n var cellOptions = this.callBase(options);\r\n cellOptions.isEditing = this._editingController.isEditCell(cellOptions.rowIndex, cellOptions.columnIndex);\r\n return cellOptions\r\n },\r\n _createCell: function(options) {\r\n var $cell = this.callBase(options);\r\n var isEditRow = this._editingController.isEditRow(options.rowIndex);\r\n isEditingOrShowEditorAlwaysDataCell(isEditRow, options) && $cell.addClass(EDITOR_CELL_CLASS);\r\n return $cell\r\n },\r\n _renderCellContent: function($cell, options) {\r\n if (\"data\" === options.rowType && _getEditMode(this) === EDIT_MODE_POPUP && false === options.row.visible) {\r\n return\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n cellValue: function(rowIndex, columnIdentifier, value, text) {\r\n var cellOptions = this.getCellOptions(rowIndex, columnIdentifier);\r\n if (cellOptions) {\r\n if (void 0 === value) {\r\n return cellOptions.value\r\n } else {\r\n this._editingController.updateFieldValue(cellOptions, value, text, true)\r\n }\r\n }\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n clearTimeout(this._pointerDownTimeout)\r\n },\r\n _renderCore: function() {\r\n this.callBase.apply(this, arguments);\r\n this._editingController._focusEditorIfNeed()\r\n }\r\n },\r\n headerPanel: {\r\n _getToolbarItems: function() {\r\n var items = this.callBase();\r\n var editButtonItems = this.getController(\"editing\").prepareEditButtons(this);\r\n return editButtonItems.concat(items)\r\n },\r\n optionChanged: function(args) {\r\n var fullName = args.fullName;\r\n switch (args.name) {\r\n case \"editing\":\r\n var excludedOptions = [EDITING_POPUP_OPTION_NAME, EDITING_CHANGES_OPTION_NAME, EDITING_EDITCOLUMNNAME_OPTION_NAME, EDITING_EDITROWKEY_OPTION_NAME];\r\n var shouldInvalidate = fullName && !excludedOptions.some(function(optionName) {\r\n return optionName === fullName\r\n });\r\n shouldInvalidate && this._invalidate();\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n isVisible: function() {\r\n var that = this;\r\n var editingOptions = that.getController(\"editing\").option(\"editing\");\r\n return that.callBase() || editingOptions && (editingOptions.allowAdding || (editingOptions.allowUpdating || editingOptions.allowDeleting) && editingOptions.mode === EDIT_MODE_BATCH)\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/menu/ui.submenu.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _element = require(\"../../core/element\");\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _context_menu = _interopRequireDefault(require(\"../context_menu\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n if (!(instance instanceof Constructor)) {\r\n throw new TypeError(\"Cannot call a class as a function\")\r\n }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n _get = Reflect.get\r\n } else {\r\n _get = function(target, property, receiver) {\r\n var base = _superPropBase(target, property);\r\n if (!base) {\r\n return\r\n }\r\n var desc = Object.getOwnPropertyDescriptor(base, property);\r\n if (desc.get) {\r\n return desc.get.call(receiver)\r\n }\r\n return desc.value\r\n }\r\n }\r\n return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n object = _getPrototypeOf(object);\r\n if (null === object) {\r\n break\r\n }\r\n }\r\n return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n if (\"function\" !== typeof superClass && null !== superClass) {\r\n throw new TypeError(\"Super expression must either be null or a function\")\r\n }\r\n subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n constructor: {\r\n value: subClass,\r\n writable: true,\r\n configurable: true\r\n }\r\n });\r\n if (superClass) {\r\n _setPrototypeOf(subClass, superClass)\r\n }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n return function() {\r\n var result, Super = _getPrototypeOf(Derived);\r\n if (hasNativeReflectConstruct) {\r\n var NewTarget = _getPrototypeOf(this).constructor;\r\n result = Reflect.construct(Super, arguments, NewTarget)\r\n } else {\r\n result = Super.apply(this, arguments)\r\n }\r\n return _possibleConstructorReturn(this, result)\r\n }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n return call\r\n }\r\n return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n if (void 0 === self) {\r\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n }\r\n return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n return false\r\n }\r\n if (Reflect.construct.sham) {\r\n return false\r\n }\r\n if (\"function\" === typeof Proxy) {\r\n return true\r\n }\r\n try {\r\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n return true\r\n } catch (e) {\r\n return false\r\n }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n return o.__proto__ || Object.getPrototypeOf(o)\r\n };\r\n return _getPrototypeOf(o)\r\n}\r\nvar DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS = \"dx-context-menu-content-delimiter\";\r\nvar DX_SUBMENU_CLASS = \"dx-submenu\";\r\nvar Submenu = function(_ContextMenu) {\r\n _inherits(Submenu, _ContextMenu);\r\n var _super = _createSuper(Submenu);\r\n\r\n function Submenu() {\r\n _classCallCheck(this, Submenu);\r\n return _super.apply(this, arguments)\r\n }\r\n _createClass(Submenu, [{\r\n key: \"_getDefaultOptions\",\r\n value: function() {\r\n return (0, _extend.extend)(_get(_getPrototypeOf(Submenu.prototype), \"_getDefaultOptions\", this).call(this), {\r\n orientation: \"horizontal\",\r\n tabIndex: null,\r\n onHoverStart: _common.noop\r\n })\r\n }\r\n }, {\r\n key: \"_initDataAdapter\",\r\n value: function() {\r\n this._dataAdapter = this.option(\"_dataAdapter\");\r\n if (!this._dataAdapter) {\r\n _get(_getPrototypeOf(Submenu.prototype), \"_initDataAdapter\", this).call(this)\r\n }\r\n }\r\n }, {\r\n key: \"_renderContentImpl\",\r\n value: function() {\r\n this._renderContextMenuOverlay();\r\n _get(_getPrototypeOf(Submenu.prototype), \"_renderContentImpl\", this).call(this);\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 }, {\r\n key: \"_renderDelimiter\",\r\n value: function() {\r\n this.$contentDelimiter = (0, _renderer.default)(\"
\").appendTo(this._itemContainer()).addClass(DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS)\r\n }\r\n }, {\r\n key: \"_getOverlayOptions\",\r\n value: function() {\r\n return (0, _extend.extend)(_get(_getPrototypeOf(Submenu.prototype), \"_getOverlayOptions\", this).call(this), {\r\n onPositioned: this._overlayPositionedActionHandler.bind(this)\r\n })\r\n }\r\n }, {\r\n key: \"_overlayPositionedActionHandler\",\r\n value: function(arg) {\r\n this._showDelimiter(arg)\r\n }\r\n }, {\r\n key: \"_hoverEndHandler\",\r\n value: function(e) {\r\n _get(_getPrototypeOf(Submenu.prototype), \"_hoverEndHandler\", this).call(this, e);\r\n this._toggleFocusClass(false, e.currentTarget)\r\n }\r\n }, {\r\n key: \"_isMenuHorizontal\",\r\n value: function() {\r\n return \"horizontal\" === this.option(\"orientation\")\r\n }\r\n }, {\r\n key: \"_hoverStartHandler\",\r\n value: function(e) {\r\n var hoverStartAction = this.option(\"onHoverStart\");\r\n hoverStartAction(e);\r\n _get(_getPrototypeOf(Submenu.prototype), \"_hoverStartHandler\", this).call(this, e);\r\n this._toggleFocusClass(true, e.currentTarget)\r\n }\r\n }, {\r\n key: \"_drawSubmenu\",\r\n value: function($rootItem) {\r\n this._actions.onShowing({\r\n rootItem: (0, _element.getPublicElement)($rootItem),\r\n submenu: this\r\n });\r\n _get(_getPrototypeOf(Submenu.prototype), \"_drawSubmenu\", this).call(this, $rootItem);\r\n this._actions.onShown({\r\n rootItem: (0, _element.getPublicElement)($rootItem),\r\n submenu: this\r\n })\r\n }\r\n }, {\r\n key: \"_hideSubmenu\",\r\n value: function($rootItem) {\r\n this._actions.onHiding({\r\n cancel: true,\r\n rootItem: (0, _element.getPublicElement)($rootItem),\r\n submenu: this\r\n });\r\n _get(_getPrototypeOf(Submenu.prototype), \"_hideSubmenu\", this).call(this, $rootItem);\r\n this._actions.onHidden({\r\n rootItem: (0, _element.getPublicElement)($rootItem),\r\n submenu: this\r\n })\r\n }\r\n }, {\r\n key: \"_showDelimiter\",\r\n value: function(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 {\r\n 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 {\r\n 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 }\r\n }\r\n _position.default.setup(this.$contentDelimiter, position)\r\n }\r\n }, {\r\n key: \"_getContextMenuPosition\",\r\n value: function() {\r\n return this.option(\"position\")\r\n }\r\n }, {\r\n key: \"isOverlayVisible\",\r\n value: function() {\r\n return this._overlay.option(\"visible\")\r\n }\r\n }, {\r\n key: \"getOverlayContent\",\r\n value: function() {\r\n return this._overlay.$content()\r\n }\r\n }]);\r\n return Submenu\r\n}(_context_menu.default);\r\nvar _default = Submenu;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.grid_view.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar accessibility = _interopRequireWildcard(require(\"../shared/accessibility\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TABLE_CLASS = \"table\";\r\nvar BORDERS_CLASS = \"borders\";\r\nvar TABLE_FIXED_CLASS = \"table-fixed\";\r\nvar IMPORTANT_MARGIN_CLASS = \"important-margin\";\r\nvar TEXT_CONTENT_CLASS = \"text-content\";\r\nvar HIDDEN_CLASS = \"dx-hidden\";\r\nvar GRIDBASE_CONTAINER_CLASS = \"dx-gridbase-container\";\r\nvar HIDDEN_COLUMNS_WIDTH = \"adaptiveHidden\";\r\nvar EDITORS_INPUT_SELECTOR = \"input:not([type='hidden'])\";\r\nvar VIEW_NAMES = [\"columnsSeparatorView\", \"blockSeparatorView\", \"trackerView\", \"headerPanel\", \"columnHeadersView\", \"rowsView\", \"footerView\", \"columnChooserView\", \"filterPanelView\", \"pagerView\", \"draggingHeaderView\", \"contextMenuView\", \"errorView\", \"headerFilterView\", \"filterBuilderView\"];\r\nvar isPercentWidth = function(width) {\r\n return (0, _type.isString)(width) && \"%\" === width.slice(-1)\r\n};\r\nvar isPixelWidth = function(width) {\r\n return (0, _type.isString)(width) && \"px\" === width.slice(-2)\r\n};\r\nvar mergeArraysByMaxValue = function(values1, values2) {\r\n var result = [];\r\n if (values1 && values2 && values1.length && values1.length === values2.length) {\r\n for (var i = 0; i < values1.length; i++) {\r\n result.push(values1[i] > values2[i] ? values1[i] : values2[i])\r\n }\r\n } else {\r\n if (values1 && values1.length) {\r\n result = values1\r\n } else {\r\n if (values2) {\r\n result = values2\r\n }\r\n }\r\n }\r\n return result\r\n};\r\nvar getContainerHeight = function($container) {\r\n var clientHeight = $container.get(0).clientHeight;\r\n var paddingTop = parseFloat($container.css(\"paddingTop\"));\r\n var paddingBottom = parseFloat($container.css(\"paddingBottom\"));\r\n return clientHeight - paddingTop - paddingBottom\r\n};\r\nvar calculateFreeWidth = function(that, widths) {\r\n var contentWidth = that._rowsView.contentWidth();\r\n var totalWidth = that._getTotalWidth(widths, contentWidth);\r\n return contentWidth - totalWidth\r\n};\r\nvar calculateFreeWidthWithCurrentMinWidth = function(that, columnIndex, currentMinWidth, widths) {\r\n return calculateFreeWidth(that, widths.map(function(width, index) {\r\n return index === columnIndex ? currentMinWidth : width\r\n }))\r\n};\r\nvar restoreFocus = function(focusedElement, selectionRange) {\r\n accessibility.hiddenFocus(focusedElement);\r\n _uiGrid_core2.default.setSelectionRange(focusedElement, selectionRange)\r\n};\r\nvar ResizingController = _uiGrid_core.default.ViewController.inherit({\r\n _initPostRenderHandlers: function() {\r\n var that = this;\r\n var dataController = that._dataController;\r\n if (!that._refreshSizesHandler) {\r\n that._refreshSizesHandler = function(e) {\r\n dataController.changed.remove(that._refreshSizesHandler);\r\n var resizeDeferred;\r\n var changeType = e && e.changeType;\r\n var isDelayed = e && e.isDelayed;\r\n var items = dataController.items();\r\n if (!e || \"refresh\" === changeType || \"prepend\" === changeType || \"append\" === changeType) {\r\n if (!isDelayed) {\r\n resizeDeferred = that.resize()\r\n }\r\n } else {\r\n if (\"update\" === changeType && e.changeTypes) {\r\n if ((items.length > 1 || \"insert\" !== e.changeTypes[0]) && !(0 === items.length && \"remove\" === e.changeTypes[0]) && !e.needUpdateDimensions) {\r\n (0, _common.deferUpdate)(function() {\r\n that._rowsView.resize()\r\n })\r\n } else {\r\n resizeDeferred = that.resize()\r\n }\r\n }\r\n }\r\n if (changeType && \"updateSelection\" !== changeType && \"updateFocusedRow\" !== changeType && !isDelayed) {\r\n (0, _deferred.when)(resizeDeferred).done(function() {\r\n that._setAriaRowColCount();\r\n that.fireContentReadyAction()\r\n })\r\n }\r\n };\r\n that._dataController.changed.add(function() {\r\n that._dataController.changed.add(that._refreshSizesHandler)\r\n })\r\n }\r\n },\r\n fireContentReadyAction: function() {\r\n this.component._fireContentReadyAction()\r\n },\r\n _setAriaRowColCount: function() {\r\n var component = this.component;\r\n component.setAria({\r\n rowCount: this._dataController.totalItemsCount(),\r\n colCount: component.columnCount()\r\n }, component.$element().children(\".\" + GRIDBASE_CONTAINER_CLASS))\r\n },\r\n _getBestFitWidths: function() {\r\n if (!this.option(\"legacyRendering\")) {\r\n return this._rowsView.getColumnWidths()\r\n }\r\n var rowsColumnWidths = this._rowsView.getColumnWidths();\r\n var headerColumnWidths = this._columnHeadersView && this._columnHeadersView.getColumnWidths();\r\n var footerColumnWidths = this._footerView && this._footerView.getColumnWidths();\r\n var resultWidths = mergeArraysByMaxValue(rowsColumnWidths, headerColumnWidths);\r\n resultWidths = mergeArraysByMaxValue(resultWidths, footerColumnWidths);\r\n return resultWidths\r\n },\r\n _setVisibleWidths: function(visibleColumns, widths) {\r\n var columnsController = this._columnsController;\r\n columnsController.beginUpdate();\r\n (0, _iterator.each)(visibleColumns, function(index, column) {\r\n var columnId = columnsController.getColumnId(column);\r\n columnsController.columnOption(columnId, \"visibleWidth\", widths[index])\r\n });\r\n columnsController.endUpdate()\r\n },\r\n _toggleBestFitModeForView: function(view, className, isBestFit) {\r\n var _this = this;\r\n if (!view || !view.isVisible()) {\r\n return\r\n }\r\n var $rowsTables = this._rowsView.getTableElements();\r\n var $viewTables = view.getTableElements();\r\n (0, _iterator.each)($rowsTables, function(index, tableElement) {\r\n var $tableBody;\r\n var $rowsTable = (0, _renderer.default)(tableElement);\r\n var $viewTable = $viewTables.eq(index);\r\n if ($viewTable && $viewTable.length) {\r\n if (isBestFit) {\r\n $tableBody = $viewTable.children(\"tbody\").appendTo($rowsTable)\r\n } else {\r\n $tableBody = $rowsTable.children(\".\" + className).appendTo($viewTable)\r\n }\r\n $tableBody.toggleClass(className, isBestFit);\r\n $tableBody.toggleClass(_this.addWidgetPrefix(\"best-fit\"), isBestFit)\r\n }\r\n })\r\n },\r\n _toggleBestFitMode: function(isBestFit) {\r\n var $element = this.component.$element();\r\n var that = this;\r\n if (!that.option(\"legacyRendering\")) {\r\n var $rowsTable = that._rowsView._getTableElement();\r\n var $rowsFixedTable = that._rowsView.getTableElements().eq(1);\r\n if (!$rowsTable) {\r\n return\r\n }\r\n $rowsTable.css(\"tableLayout\", isBestFit ? \"auto\" : \"fixed\");\r\n $rowsTable.children(\"colgroup\").css(\"display\", isBestFit ? \"none\" : \"\");\r\n $rowsFixedTable.toggleClass(this.addWidgetPrefix(TABLE_FIXED_CLASS), !isBestFit);\r\n that._toggleBestFitModeForView(that._columnHeadersView, \"dx-header\", isBestFit);\r\n that._toggleBestFitModeForView(that._footerView, \"dx-footer\", isBestFit);\r\n if (that._needStretch()) {\r\n $rowsTable.get(0).style.width = isBestFit ? \"auto\" : \"\"\r\n }\r\n if (_browser.default.msie && 11 === parseInt(_browser.default.version)) {\r\n $rowsTable.find(\".\" + this.addWidgetPrefix(TABLE_FIXED_CLASS)).each(function() {\r\n this.style.width = isBestFit ? \"10px\" : \"\"\r\n })\r\n }\r\n } else {\r\n $element.find(\".\" + this.addWidgetPrefix(TABLE_CLASS)).toggleClass(this.addWidgetPrefix(TABLE_FIXED_CLASS), !isBestFit);\r\n $element.find(EDITORS_INPUT_SELECTOR).toggleClass(HIDDEN_CLASS, isBestFit);\r\n $element.find(\".dx-group-cell\").toggleClass(HIDDEN_CLASS, isBestFit);\r\n $element.find(\".dx-header-row .\" + this.addWidgetPrefix(TEXT_CONTENT_CLASS)).css(\"maxWidth\", \"\")\r\n }\r\n },\r\n _synchronizeColumns: function() {\r\n var that = this;\r\n var columnsController = that._columnsController;\r\n var visibleColumns = columnsController.getVisibleColumns();\r\n var columnAutoWidth = that.option(\"columnAutoWidth\");\r\n var legacyRendering = that.option(\"legacyRendering\");\r\n var needBestFit = that._needBestFit();\r\n var hasMinWidth = false;\r\n var resetBestFitMode;\r\n var isColumnWidthsCorrected = false;\r\n var resultWidths = [];\r\n var focusedElement;\r\n var selectionRange;\r\n var normalizeWidthsByExpandColumns = function() {\r\n var expandColumnWidth;\r\n (0, _iterator.each)(visibleColumns, function(index, column) {\r\n if (\"groupExpand\" === column.type) {\r\n expandColumnWidth = resultWidths[index]\r\n }\r\n });\r\n (0, _iterator.each)(visibleColumns, function(index, column) {\r\n if (\"groupExpand\" === column.type && expandColumnWidth) {\r\n resultWidths[index] = expandColumnWidth\r\n }\r\n })\r\n };\r\n !needBestFit && (0, _iterator.each)(visibleColumns, function(index, column) {\r\n if (\"auto\" === column.width || legacyRendering && column.fixed) {\r\n needBestFit = true;\r\n return false\r\n }\r\n });\r\n (0, _iterator.each)(visibleColumns, function(index, column) {\r\n if (column.minWidth) {\r\n hasMinWidth = true;\r\n return false\r\n }\r\n });\r\n that._setVisibleWidths(visibleColumns, []);\r\n if (needBestFit) {\r\n focusedElement = _dom_adapter.default.getActiveElement();\r\n selectionRange = _uiGrid_core2.default.getSelectionRange(focusedElement);\r\n that._toggleBestFitMode(true);\r\n resetBestFitMode = true\r\n }(0, _common.deferUpdate)(function() {\r\n if (needBestFit) {\r\n resultWidths = that._getBestFitWidths();\r\n (0, _iterator.each)(visibleColumns, function(index, column) {\r\n var columnId = columnsController.getColumnId(column);\r\n columnsController.columnOption(columnId, \"bestFitWidth\", resultWidths[index], true)\r\n })\r\n } else {\r\n if (hasMinWidth) {\r\n resultWidths = that._getBestFitWidths()\r\n }\r\n }(0, _iterator.each)(visibleColumns, function(index) {\r\n var width = this.width;\r\n if (\"auto\" !== width) {\r\n if ((0, _type.isDefined)(width)) {\r\n resultWidths[index] = (0, _type.isNumeric)(width) || isPixelWidth(width) ? parseFloat(width) : width\r\n } else {\r\n if (!columnAutoWidth) {\r\n resultWidths[index] = void 0\r\n }\r\n }\r\n }\r\n });\r\n if (resetBestFitMode) {\r\n that._toggleBestFitMode(false);\r\n resetBestFitMode = false;\r\n if (focusedElement && focusedElement !== _dom_adapter.default.getActiveElement()) {\r\n var isFocusOutsideWindow = (0, _position.getBoundingRect)(focusedElement).bottom < 0;\r\n if (!isFocusOutsideWindow) {\r\n if (_browser.default.msie) {\r\n setTimeout(function() {\r\n restoreFocus(focusedElement, selectionRange)\r\n })\r\n } else {\r\n restoreFocus(focusedElement, selectionRange)\r\n }\r\n }\r\n }\r\n }\r\n isColumnWidthsCorrected = that._correctColumnWidths(resultWidths, visibleColumns);\r\n if (columnAutoWidth) {\r\n normalizeWidthsByExpandColumns();\r\n if (that._needStretch()) {\r\n that._processStretch(resultWidths, visibleColumns)\r\n }\r\n }(0, _common.deferRender)(function() {\r\n if (needBestFit || isColumnWidthsCorrected) {\r\n that._setVisibleWidths(visibleColumns, resultWidths)\r\n }\r\n })\r\n })\r\n },\r\n _needBestFit: function() {\r\n return this.option(\"columnAutoWidth\")\r\n },\r\n _needStretch: function() {\r\n return this.option(\"legacyRendering\") || this._columnsController.getVisibleColumns().some(function(c) {\r\n return \"auto\" === c.width && !c.command\r\n })\r\n },\r\n _getAverageColumnsWidth: function(resultWidths) {\r\n var freeWidth = calculateFreeWidth(this, resultWidths);\r\n var columnCountWithoutWidth = resultWidths.filter(function(width) {\r\n return void 0 === width\r\n }).length;\r\n return freeWidth / columnCountWithoutWidth\r\n },\r\n _correctColumnWidths: function(resultWidths, visibleColumns) {\r\n var that = this;\r\n var i;\r\n var hasPercentWidth = false;\r\n var hasAutoWidth = false;\r\n var isColumnWidthsCorrected = false;\r\n var $element = that.component.$element();\r\n var hasWidth = that._hasWidth;\r\n var _loop = function() {\r\n var index = i;\r\n var column = visibleColumns[index];\r\n var isHiddenColumn = resultWidths[index] === HIDDEN_COLUMNS_WIDTH;\r\n var width = resultWidths[index];\r\n var minWidth = column.minWidth;\r\n if (minWidth) {\r\n if (void 0 === width) {\r\n var averageColumnsWidth = that._getAverageColumnsWidth(resultWidths);\r\n width = averageColumnsWidth\r\n } else {\r\n if (isPercentWidth(width)) {\r\n var freeWidth = calculateFreeWidthWithCurrentMinWidth(that, index, minWidth, resultWidths);\r\n if (freeWidth < 0) {\r\n width = -1\r\n }\r\n }\r\n }\r\n }\r\n var realColumnWidth = that._getRealColumnWidth(index, resultWidths.map(function(columnWidth, columnIndex) {\r\n return index === columnIndex ? width : columnWidth\r\n }));\r\n if (minWidth && !isHiddenColumn && realColumnWidth < minWidth) {\r\n resultWidths[index] = minWidth;\r\n isColumnWidthsCorrected = true;\r\n i = -1\r\n }\r\n if (!(0, _type.isDefined)(column.width)) {\r\n hasAutoWidth = true\r\n }\r\n if (isPercentWidth(column.width)) {\r\n hasPercentWidth = true\r\n }\r\n };\r\n for (i = 0; i < visibleColumns.length; i++) {\r\n _loop()\r\n }\r\n if ($element && that._maxWidth) {\r\n delete that._maxWidth;\r\n $element.css(\"maxWidth\", \"\")\r\n }\r\n if (!hasAutoWidth && resultWidths.length) {\r\n var contentWidth = that._rowsView.contentWidth();\r\n var scrollbarWidth = that._rowsView.getScrollbarWidth();\r\n var totalWidth = that._getTotalWidth(resultWidths, contentWidth);\r\n if (totalWidth < contentWidth) {\r\n var lastColumnIndex = _uiGrid_core2.default.getLastResizableColumnIndex(visibleColumns, resultWidths);\r\n if (lastColumnIndex >= 0) {\r\n resultWidths[lastColumnIndex] = \"auto\";\r\n isColumnWidthsCorrected = true;\r\n if (false === hasWidth && !hasPercentWidth) {\r\n that._maxWidth = totalWidth + scrollbarWidth + (that.option(\"showBorders\") ? 2 : 0);\r\n $element.css(\"maxWidth\", that._maxWidth)\r\n }\r\n }\r\n }\r\n }\r\n return isColumnWidthsCorrected\r\n },\r\n _processStretch: function(resultSizes, visibleColumns) {\r\n var groupSize = this._rowsView.contentWidth();\r\n var tableSize = this._getTotalWidth(resultSizes, groupSize);\r\n var unusedIndexes = {\r\n length: 0\r\n };\r\n if (!resultSizes.length) {\r\n return\r\n }(0, _iterator.each)(visibleColumns, function(index) {\r\n if (this.width || resultSizes[index] === HIDDEN_COLUMNS_WIDTH) {\r\n unusedIndexes[index] = true;\r\n unusedIndexes.length++\r\n }\r\n });\r\n var diff = groupSize - tableSize;\r\n var diffElement = Math.floor(diff / (resultSizes.length - unusedIndexes.length));\r\n var onePixelElementsCount = diff - diffElement * (resultSizes.length - unusedIndexes.length);\r\n if (diff >= 0) {\r\n for (var i = 0; i < resultSizes.length; i++) {\r\n if (unusedIndexes[i]) {\r\n continue\r\n }\r\n resultSizes[i] += diffElement;\r\n if (onePixelElementsCount > 0) {\r\n if (onePixelElementsCount < 1) {\r\n resultSizes[i] += onePixelElementsCount;\r\n onePixelElementsCount = 0\r\n } else {\r\n resultSizes[i]++;\r\n onePixelElementsCount--\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _getRealColumnWidth: function(columnIndex, columnWidths, groupWidth) {\r\n var ratio = 1;\r\n var width = columnWidths[columnIndex];\r\n if (!isPercentWidth(width)) {\r\n return parseFloat(width)\r\n }\r\n var percentTotalWidth = columnWidths.reduce(function(sum, width, index) {\r\n if (!isPercentWidth(width)) {\r\n return sum\r\n }\r\n return sum + parseFloat(width)\r\n }, 0);\r\n var pixelTotalWidth = columnWidths.reduce(function(sum, width) {\r\n if (!width || width === HIDDEN_COLUMNS_WIDTH || isPercentWidth(width)) {\r\n return sum\r\n }\r\n return sum + parseFloat(width)\r\n }, 0);\r\n groupWidth = groupWidth || this._rowsView.contentWidth();\r\n var freeSpace = groupWidth - pixelTotalWidth;\r\n var percentTotalWidthInPixel = percentTotalWidth * groupWidth / 100;\r\n if (pixelTotalWidth > 0 && percentTotalWidthInPixel + pixelTotalWidth >= groupWidth) {\r\n ratio = percentTotalWidthInPixel > freeSpace ? freeSpace / percentTotalWidthInPixel : 1\r\n }\r\n return parseFloat(width) * groupWidth * ratio / 100\r\n },\r\n _getTotalWidth: function(widths, groupWidth) {\r\n var result = 0;\r\n for (var i = 0; i < widths.length; i++) {\r\n var width = widths[i];\r\n if (width && width !== HIDDEN_COLUMNS_WIDTH) {\r\n result += this._getRealColumnWidth(i, widths, groupWidth)\r\n }\r\n }\r\n return result\r\n },\r\n updateSize: function($rootElement) {\r\n var that = this;\r\n var $groupElement;\r\n var width;\r\n var importantMarginClass = that.addWidgetPrefix(IMPORTANT_MARGIN_CLASS);\r\n if (void 0 === that._hasHeight && $rootElement && $rootElement.is(\":visible\") && $rootElement.width()) {\r\n $groupElement = $rootElement.children(\".\" + that.getWidgetContainerClass());\r\n if ($groupElement.length) {\r\n $groupElement.detach()\r\n }\r\n that._hasHeight = !!getContainerHeight($rootElement);\r\n width = $rootElement.width();\r\n $rootElement.addClass(importantMarginClass);\r\n that._hasWidth = $rootElement.width() === width;\r\n $rootElement.removeClass(importantMarginClass);\r\n if ($groupElement.length) {\r\n $groupElement.appendTo($rootElement)\r\n }\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"resize\", \"updateDimensions\"]\r\n },\r\n resize: function() {\r\n return !this.component._requireResize && this.updateDimensions()\r\n },\r\n updateDimensions: function(checkSize) {\r\n var that = this;\r\n that._initPostRenderHandlers();\r\n if (!that._checkSize(checkSize)) {\r\n return\r\n }\r\n var prevResult = that._resizeDeferred;\r\n var result = that._resizeDeferred = new _deferred.Deferred;\r\n (0, _deferred.when)(prevResult).always(function() {\r\n (0, _common.deferRender)(function() {\r\n if (that._dataController.isLoaded()) {\r\n that._synchronizeColumns()\r\n }\r\n that._resetGroupElementHeight();\r\n (0, _common.deferUpdate)(function() {\r\n (0, _common.deferRender)(function() {\r\n (0, _common.deferUpdate)(function() {\r\n that._updateDimensionsCore()\r\n })\r\n })\r\n })\r\n }).done(result.resolve).fail(result.reject)\r\n });\r\n return result.promise()\r\n },\r\n _resetGroupElementHeight: function() {\r\n var groupElement = this.component.$element().children().get(0);\r\n var scrollable = this._rowsView.getScrollable();\r\n if (groupElement && groupElement.style.height && (!scrollable || !scrollable.scrollTop())) {\r\n groupElement.style.height = \"\"\r\n }\r\n },\r\n _checkSize: function(checkSize) {\r\n var $rootElement = this.component.$element();\r\n if (checkSize && (this._lastWidth === $rootElement.width() && this._lastHeight === $rootElement.height() || !$rootElement.is(\":visible\"))) {\r\n return false\r\n }\r\n return true\r\n },\r\n _setScrollerSpacingCore: function(hasHeight) {\r\n var that = this;\r\n var vScrollbarWidth = hasHeight ? that._rowsView.getScrollbarWidth() : 0;\r\n var hScrollbarWidth = that._rowsView.getScrollbarWidth(true);\r\n (0, _common.deferRender)(function() {\r\n that._columnHeadersView && that._columnHeadersView.setScrollerSpacing(vScrollbarWidth);\r\n that._footerView && that._footerView.setScrollerSpacing(vScrollbarWidth);\r\n that._rowsView.setScrollerSpacing(vScrollbarWidth, hScrollbarWidth)\r\n })\r\n },\r\n _setScrollerSpacing: function(hasHeight) {\r\n var _this2 = this;\r\n if (true === this.option(\"scrolling.useNative\")) {\r\n (0, _common.deferRender)(function() {\r\n (0, _common.deferUpdate)(function() {\r\n _this2._setScrollerSpacingCore(hasHeight)\r\n })\r\n })\r\n } else {\r\n this._setScrollerSpacingCore(hasHeight)\r\n }\r\n },\r\n _updateDimensionsCore: function() {\r\n var that = this;\r\n var dataController = that._dataController;\r\n var rowsView = that._rowsView;\r\n var $rootElement = that.component.$element();\r\n var groupElement = $rootElement.children().get(0);\r\n var rootElementHeight = $rootElement && ($rootElement.get(0).clientHeight || $rootElement.height());\r\n var maxHeight = parseInt($rootElement.css(\"maxHeight\"));\r\n var maxHeightHappened = maxHeight && rootElementHeight >= maxHeight;\r\n var height = that.option(\"height\") || $rootElement.get(0).style.height;\r\n var editorFactory = that.getController(\"editorFactory\");\r\n var isMaxHeightApplied = maxHeightHappened && groupElement.scrollHeight === groupElement.offsetHeight;\r\n var $testDiv;\r\n that.updateSize($rootElement);\r\n var hasHeight = that._hasHeight || maxHeightHappened;\r\n if (height && that._hasHeight ^ \"auto\" !== height) {\r\n $testDiv = (0, _renderer.default)(\"
\").height(height).appendTo($rootElement);\r\n that._hasHeight = !!$testDiv.height();\r\n $testDiv.remove()\r\n }(0, _common.deferRender)(function() {\r\n rowsView.height(null, hasHeight);\r\n if (maxHeightHappened && !isMaxHeightApplied) {\r\n (0, _renderer.default)(groupElement).css(\"height\", maxHeight)\r\n }\r\n if (!dataController.isLoaded()) {\r\n rowsView.setLoading(dataController.isLoading());\r\n return\r\n }(0, _common.deferUpdate)(function() {\r\n that._updateLastSizes($rootElement);\r\n that._setScrollerSpacing(hasHeight);\r\n (0, _iterator.each)(VIEW_NAMES, function(index, viewName) {\r\n var view = that.getView(viewName);\r\n if (view) {\r\n view.resize()\r\n }\r\n });\r\n editorFactory && editorFactory.resize()\r\n })\r\n })\r\n },\r\n _updateLastSizes: function($rootElement) {\r\n this._lastWidth = $rootElement.width();\r\n this._lastHeight = $rootElement.height()\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"width\":\r\n case \"height\":\r\n this.component._renderDimensions();\r\n this.resize();\r\n case \"legacyRendering\":\r\n case \"renderAsync\":\r\n args.handled = true;\r\n return;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n init: function() {\r\n var that = this;\r\n that._dataController = that.getController(\"data\");\r\n that._columnsController = that.getController(\"columns\");\r\n that._columnHeadersView = that.getView(\"columnHeadersView\");\r\n that._footerView = that.getView(\"footerView\");\r\n that._rowsView = that.getView(\"rowsView\")\r\n }\r\n});\r\nvar SynchronizeScrollingController = _uiGrid_core.default.ViewController.inherit({\r\n _scrollChangedHandler: function(views, pos, viewName) {\r\n for (var j = 0; j < views.length; j++) {\r\n if (views[j] && views[j].name !== viewName) {\r\n views[j].scrollTo({\r\n left: pos.left,\r\n top: pos.top\r\n })\r\n }\r\n }\r\n },\r\n init: function() {\r\n var views = [this.getView(\"columnHeadersView\"), this.getView(\"footerView\"), this.getView(\"rowsView\")];\r\n for (var i = 0; i < views.length; i++) {\r\n var view = views[i];\r\n if (view) {\r\n view.scrollChanged.add(this._scrollChangedHandler.bind(this, views))\r\n }\r\n }\r\n }\r\n});\r\nvar GridView = _uiGrid_core.default.View.inherit({\r\n _endUpdateCore: function() {\r\n if (this.component._requireResize) {\r\n this.component._requireResize = false;\r\n this._resizingController.resize()\r\n }\r\n },\r\n _getWidgetAriaLabel: function() {\r\n return \"dxDataGrid-ariaDataGrid\"\r\n },\r\n init: function() {\r\n var that = this;\r\n that._resizingController = that.getController(\"resizing\");\r\n that._dataController = that.getController(\"data\")\r\n },\r\n getView: function(name) {\r\n return this.component._views[name]\r\n },\r\n element: function() {\r\n return this._groupElement\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n if ((0, _type.isDefined)(that._groupElement) && \"showBorders\" === args.name) {\r\n that._groupElement.toggleClass(that.addWidgetPrefix(BORDERS_CLASS), !!args.value);\r\n args.handled = true\r\n } else {\r\n that.callBase(args)\r\n }\r\n },\r\n _renderViews: function($groupElement) {\r\n var that = this;\r\n (0, _iterator.each)(VIEW_NAMES, function(index, viewName) {\r\n var view = that.getView(viewName);\r\n if (view) {\r\n view.render($groupElement)\r\n }\r\n })\r\n },\r\n _getTableRoleName: function() {\r\n return \"grid\"\r\n },\r\n render: function($rootElement) {\r\n var that = this;\r\n var isFirstRender = !that._groupElement;\r\n var $groupElement = that._groupElement || (0, _renderer.default)(\"
\").addClass(that.getWidgetContainerClass());\r\n $groupElement.addClass(GRIDBASE_CONTAINER_CLASS);\r\n $groupElement.toggleClass(that.addWidgetPrefix(BORDERS_CLASS), !!that.option(\"showBorders\"));\r\n that.setAria(\"role\", \"presentation\", $rootElement);\r\n that.component.setAria({\r\n role: this._getTableRoleName(),\r\n label: _message.default.format(that._getWidgetAriaLabel())\r\n }, $groupElement);\r\n that._rootElement = $rootElement || that._rootElement;\r\n if (isFirstRender) {\r\n that._groupElement = $groupElement;\r\n (0, _window.hasWindow)() && that.getController(\"resizing\").updateSize($rootElement);\r\n $groupElement.appendTo($rootElement)\r\n }\r\n that._renderViews($groupElement)\r\n },\r\n update: function() {\r\n var that = this;\r\n var $rootElement = that._rootElement;\r\n var $groupElement = that._groupElement;\r\n var resizingController = that.getController(\"resizing\");\r\n if ($rootElement && $groupElement) {\r\n resizingController.resize();\r\n if (that._dataController.isLoaded()) {\r\n that._resizingController.fireContentReadyAction()\r\n }\r\n }\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n showBorders: false,\r\n renderAsync: false,\r\n legacyRendering: false\r\n }\r\n },\r\n controllers: {\r\n resizing: ResizingController,\r\n synchronizeScrolling: SynchronizeScrollingController\r\n },\r\n views: {\r\n gridView: GridView\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/filter_builder.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _filter_builder = _interopRequireDefault(require(\"./filter_builder/filter_builder\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _filter_builder.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.export_mixin.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _default = {\r\n _getEmptyCell: function() {\r\n return {\r\n text: \"\",\r\n value: void 0,\r\n colspan: 1,\r\n rowspan: 1\r\n }\r\n },\r\n _defaultSetter: function(value) {\r\n return !value ? 1 : value\r\n },\r\n _cloneItem: function(item) {\r\n return (0, _extend.extend)({}, item, this._getEmptyCell())\r\n },\r\n _prepareItems: function(items) {\r\n var that = this;\r\n var resultItems = [];\r\n var cols = (items[0] || []).reduce(function(sum, item) {\r\n return sum + that._defaultSetter(item.colspan)\r\n }, 0);\r\n var getItem = function(items) {\r\n var rowIndex = 0;\r\n var cellIndex = 0;\r\n return function() {\r\n var row = items[rowIndex] || [];\r\n var item = row[cellIndex++];\r\n if (cellIndex >= row.length) {\r\n rowIndex++;\r\n cellIndex = 0\r\n }\r\n if (item) {\r\n item.colspan = that._defaultSetter(item.colspan);\r\n item.rowspan = that._defaultSetter(item.rowspan)\r\n }\r\n return item\r\n }\r\n }(items);\r\n\r\n function addItem(rowIndex, cellIndex, item) {\r\n var row = resultItems[rowIndex] = resultItems[rowIndex] || [];\r\n row[cellIndex] = item;\r\n if (item.colspan > 1 || item.rowspan > 1) {\r\n var clone = that._cloneItem(item);\r\n for (var c = 1; c < item.colspan; c++) {\r\n addItem(rowIndex, cellIndex + c, clone)\r\n }\r\n for (var r = 1; r < item.rowspan; r++) {\r\n for (var _c = 0; _c < item.colspan; _c++) {\r\n addItem(rowIndex + r, cellIndex + _c, clone)\r\n }\r\n }\r\n }\r\n }\r\n var item = getItem();\r\n var rowIndex = 0;\r\n while (item) {\r\n for (var cellIndex = 0; cellIndex < cols; cellIndex++) {\r\n if (!item) {\r\n break\r\n }\r\n if (resultItems[rowIndex] && resultItems[rowIndex][cellIndex]) {\r\n continue\r\n }\r\n addItem(rowIndex, cellIndex, item);\r\n cellIndex += item.colspan - 1;\r\n item = getItem()\r\n }\r\n rowIndex++\r\n }\r\n return resultItems\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.state_storing.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.state_storing\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"stateStoring\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.utils.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.createGroupFilter = createGroupFilter;\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.utils\"));\r\nvar _utils = _interopRequireDefault(require(\"../../data/utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction createGroupFilter(path, storeLoadOptions) {\r\n var groups = _utils.default.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 _uiGrid_core.default.combineFilters(filter)\r\n}\r\n","/**\r\n * DevExtreme (ui/menu/ui.menu.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _element = require(\"../../core/element\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"../overlay/utils\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _hover = require(\"../../events/hover\");\r\nvar _ui = _interopRequireDefault(require(\"../context_menu/ui.menu_base\"));\r\nvar _overlay = _interopRequireDefault(require(\"../overlay\"));\r\nvar _ui2 = _interopRequireDefault(require(\"./ui.submenu\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _tree_view = _interopRequireDefault(require(\"../tree_view\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n if (!(instance instanceof Constructor)) {\r\n throw new TypeError(\"Cannot call a class as a function\")\r\n }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n _get = Reflect.get\r\n } else {\r\n _get = function(target, property, receiver) {\r\n var base = _superPropBase(target, property);\r\n if (!base) {\r\n return\r\n }\r\n var desc = Object.getOwnPropertyDescriptor(base, property);\r\n if (desc.get) {\r\n return desc.get.call(receiver)\r\n }\r\n return desc.value\r\n }\r\n }\r\n return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n object = _getPrototypeOf(object);\r\n if (null === object) {\r\n break\r\n }\r\n }\r\n return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n if (\"function\" !== typeof superClass && null !== superClass) {\r\n throw new TypeError(\"Super expression must either be null or a function\")\r\n }\r\n subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n constructor: {\r\n value: subClass,\r\n writable: true,\r\n configurable: true\r\n }\r\n });\r\n if (superClass) {\r\n _setPrototypeOf(subClass, superClass)\r\n }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n return function() {\r\n var result, Super = _getPrototypeOf(Derived);\r\n if (hasNativeReflectConstruct) {\r\n var NewTarget = _getPrototypeOf(this).constructor;\r\n result = Reflect.construct(Super, arguments, NewTarget)\r\n } else {\r\n result = Super.apply(this, arguments)\r\n }\r\n return _possibleConstructorReturn(this, result)\r\n }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n return call\r\n }\r\n return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n if (void 0 === self) {\r\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n }\r\n return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n return false\r\n }\r\n if (Reflect.construct.sham) {\r\n return false\r\n }\r\n if (\"function\" === typeof Proxy) {\r\n return true\r\n }\r\n try {\r\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n return true\r\n } catch (e) {\r\n return false\r\n }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n return o.__proto__ || Object.getPrototypeOf(o)\r\n };\r\n return _getPrototypeOf(o)\r\n}\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\nvar Menu = function(_MenuBase) {\r\n _inherits(Menu, _MenuBase);\r\n var _super = _createSuper(Menu);\r\n\r\n function Menu() {\r\n _classCallCheck(this, Menu);\r\n return _super.apply(this, arguments)\r\n }\r\n _createClass(Menu, [{\r\n key: \"_getDefaultOptions\",\r\n value: function() {\r\n return (0, _extend.extend)(_get(_getPrototypeOf(Menu.prototype), \"_getDefaultOptions\", this).call(this), {\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 }, {\r\n key: \"_setOptionsByReference\",\r\n value: function() {\r\n _get(_getPrototypeOf(Menu.prototype), \"_setOptionsByReference\", this).call(this);\r\n (0, _extend.extend)(this._optionsByReference, {\r\n animation: true,\r\n selectedItem: true\r\n })\r\n }\r\n }, {\r\n key: \"_itemElements\",\r\n value: function() {\r\n var rootMenuElements = _get(_getPrototypeOf(Menu.prototype), \"_itemElements\", this).call(this);\r\n var submenuElements = this._submenuItemElements();\r\n return rootMenuElements.add(submenuElements)\r\n }\r\n }, {\r\n key: \"_submenuItemElements\",\r\n value: function() {\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 }, {\r\n key: \"_focusTarget\",\r\n value: function() {\r\n return this.$element()\r\n }\r\n }, {\r\n key: \"_isMenuHorizontal\",\r\n value: function() {\r\n return \"horizontal\" === this.option(\"orientation\")\r\n }\r\n }, {\r\n key: \"_moveFocus\",\r\n value: function(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 _get(_getPrototypeOf(Menu.prototype), \"_moveFocus\", this).call(this, location)\r\n }\r\n if ($newTarget && 0 !== $newTarget.length) {\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($newTarget))\r\n }\r\n }\r\n }, {\r\n key: \"_getItemsNavigationOperation\",\r\n value: function(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 }, {\r\n key: \"_getKeyboardNavigationAction\",\r\n value: function(operation, argument) {\r\n var action = _common.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 }, {\r\n key: \"_clean\",\r\n value: function() {\r\n _get(_getPrototypeOf(Menu.prototype), \"_clean\", this).call(this);\r\n this.option(\"templatesRenderAsynchronously\") && clearTimeout(this._resizeEventTimer)\r\n }\r\n }, {\r\n key: \"_visibilityChanged\",\r\n value: function(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 }, {\r\n key: \"_isAdaptivityEnabled\",\r\n value: function() {\r\n return this.option(\"adaptivityEnabled\") && \"horizontal\" === this.option(\"orientation\")\r\n }\r\n }, {\r\n key: \"_updateItemsWidthCache\",\r\n value: function() {\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 }, {\r\n key: \"_dimensionChanged\",\r\n value: function() {\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 }, {\r\n key: \"_init\",\r\n value: function() {\r\n _get(_getPrototypeOf(Menu.prototype), \"_init\", this).call(this);\r\n this._submenus = []\r\n }\r\n }, {\r\n key: \"_initActions\",\r\n value: function() {\r\n var _this = this;\r\n this._actions = {};\r\n (0, _iterator.each)(ACTIONS, function(index, action) {\r\n _this._actions[action] = _this._createActionByOption(action)\r\n })\r\n }\r\n }, {\r\n key: \"_initMarkup\",\r\n value: function() {\r\n this._visibleSubmenu = null;\r\n this.$element().addClass(DX_MENU_CLASS);\r\n _get(_getPrototypeOf(Menu.prototype), \"_initMarkup\", this).call(this);\r\n this.setAria(\"role\", \"menubar\")\r\n }\r\n }, {\r\n key: \"_render\",\r\n value: function() {\r\n _get(_getPrototypeOf(Menu.prototype), \"_render\", this).call(this);\r\n this._initAdaptivity()\r\n }\r\n }, {\r\n key: \"_renderHamburgerButton\",\r\n value: function() {\r\n this._hamburger = new _button.default((0, _renderer.default)(\"
\").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 }, {\r\n key: \"_toggleTreeView\",\r\n value: function(state) {\r\n if ((0, _type.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 }, {\r\n key: \"_toggleHamburgerActiveState\",\r\n value: function(state) {\r\n this._hamburger && this._hamburger.$element().toggleClass(DX_STATE_ACTIVE_CLASS, state)\r\n }\r\n }, {\r\n key: \"_toggleAdaptiveMode\",\r\n value: function(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 }, {\r\n key: \"_removeAdaptivity\",\r\n value: function() {\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 }, {\r\n key: \"_treeviewItemClickHandler\",\r\n value: function(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 }, {\r\n key: \"_getAdaptiveOverlayOptions\",\r\n value: function() {\r\n var _this2 = this;\r\n var rtl = this.option(\"rtlEnabled\");\r\n var position = rtl ? \"right\" : \"left\";\r\n return {\r\n maxHeight: function() {\r\n return (0, _utils.getElementMaxHeightByWindow)(_this2.$element())\r\n },\r\n deferRendering: false,\r\n shading: false,\r\n animation: false,\r\n closeOnTargetScroll: true,\r\n onHidden: function() {\r\n _this2._toggleHamburgerActiveState(false)\r\n },\r\n height: \"auto\",\r\n closeOnOutsideClick: function(e) {\r\n return !(0, _renderer.default)(e.target).closest(\".\".concat(DX_ADAPTIVE_HAMBURGER_BUTTON_CLASS)).length\r\n },\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 }, {\r\n key: \"_getTreeViewOptions\",\r\n value: function() {\r\n var _this3 = this;\r\n var menuOptions = {};\r\n var optionsToTransfer = [\"rtlEnabled\", \"width\", \"accessKey\", \"activeStateEnabled\", \"animation\", \"dataSource\", \"disabled\", \"displayExpr\", \"displayExpr\", \"focusStateEnabled\", \"hint\", \"hoverStateEnabled\", \"itemsExpr\", \"items\", \"itemTemplate\", \"selectedExpr\", \"selectionMode\", \"tabIndex\", \"visible\"];\r\n var actionsToTransfer = [\"onItemContextMenu\", \"onSelectionChanged\"];\r\n (0, _iterator.each)(optionsToTransfer, function(_, option) {\r\n menuOptions[option] = _this3.option(option)\r\n });\r\n (0, _iterator.each)(actionsToTransfer, function(_, actionName) {\r\n menuOptions[actionName] = function(e) {\r\n _this3._actions[actionName](e)\r\n }\r\n });\r\n return (0, _extend.extend)(menuOptions, {\r\n dataSource: this.getDataSource(),\r\n animationEnabled: !!this.option(\"animation\"),\r\n onItemClick: this._treeviewItemClickHandler.bind(this),\r\n onItemExpanded: function(e) {\r\n _this3._overlay.repaint();\r\n _this3._actions.onSubmenuShown(e)\r\n },\r\n onItemCollapsed: function(e) {\r\n _this3._overlay.repaint();\r\n _this3._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 }, {\r\n key: \"_initAdaptivity\",\r\n value: function() {\r\n if (!this._isAdaptivityEnabled()) {\r\n return\r\n }\r\n this._$adaptiveContainer = (0, _renderer.default)(\"
\").addClass(DX_ADAPTIVE_MODE_CLASS);\r\n var $hamburger = this._renderHamburgerButton();\r\n this._treeView = this._createComponent((0, _renderer.default)(\"
\"), _tree_view.default, this._getTreeViewOptions());\r\n this._overlay = this._createComponent((0, _renderer.default)(\"
\"), _overlay.default, 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 }, {\r\n key: \"_getDelay\",\r\n value: function(delayType) {\r\n var delay = this.option(\"showFirstSubmenuMode\").delay;\r\n if (!(0, _type.isDefined)(delay)) {\r\n return DEFAULT_DELAY[delayType]\r\n } else {\r\n return (0, _type.isObject)(delay) ? delay[delayType] : delay\r\n }\r\n }\r\n }, {\r\n key: \"_keyboardHandler\",\r\n value: function(e) {\r\n return _get(_getPrototypeOf(Menu.prototype), \"_keyboardHandler\", this).call(this, e, !!this._visibleSubmenu)\r\n }\r\n }, {\r\n key: \"_renderContainer\",\r\n value: function() {\r\n var $wrapper = (0, _renderer.default)(\"
\");\r\n $wrapper.appendTo(this.$element()).addClass(this._isMenuHorizontal() ? DX_MENU_HORIZONTAL_CLASS : DX_MENU_VERTICAL_CLASS);\r\n return _get(_getPrototypeOf(Menu.prototype), \"_renderContainer\", this).call(this, $wrapper)\r\n }\r\n }, {\r\n key: \"_renderSubmenuItems\",\r\n value: function(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 }, {\r\n key: \"_getKeyboardListeners\",\r\n value: function() {\r\n return _get(_getPrototypeOf(Menu.prototype), \"_getKeyboardListeners\", this).call(this).concat(this._visibleSubmenu)\r\n }\r\n }, {\r\n key: \"_createSubmenu\",\r\n value: function(node, $rootItem) {\r\n var $submenuContainer = (0, _renderer.default)(\"
\").addClass(DX_CONTEXT_MENU_CLASS).appendTo($rootItem);\r\n var items = this._getChildNodes(node);\r\n var result = this._createComponent($submenuContainer, _ui2.default, (0, _extend.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 }, {\r\n key: \"_getSubmenuOptions\",\r\n value: function() {\r\n var _this4 = this;\r\n var $submenuTarget = (0, _renderer.default)(\"
\");\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: function(e) {\r\n if (!e.component.option(\"visible\")) {\r\n return\r\n }\r\n _this4.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 }, {\r\n key: \"_getShowFirstSubmenuMode\",\r\n value: function() {\r\n if (!this._isDesktopDevice()) {\r\n return \"onClick\"\r\n }\r\n var optionValue = this.option(\"showFirstSubmenuMode\");\r\n return (0, _type.isObject)(optionValue) ? optionValue.name : optionValue\r\n }\r\n }, {\r\n key: \"_moveMainMenuFocus\",\r\n value: function(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 {\r\n if (itemIndex < 0) {\r\n itemIndex = itemCount - 1\r\n }\r\n }\r\n var $newItem = $items.eq(itemIndex);\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($newItem))\r\n }\r\n }, {\r\n key: \"_nestedItemOnSelectionChangedHandler\",\r\n value: function(args) {\r\n var selectedItem = args.addedItems.length && args.addedItems[0];\r\n var submenu = _ui2.default.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 }, {\r\n key: \"_clearSelectionInSubmenus\",\r\n value: function(item, targetSubmenu) {\r\n var _this5 = this;\r\n var cleanAllSubmenus = !arguments.length;\r\n (0, _iterator.each)(this._submenus, function(index, submenu) {\r\n var $submenu = submenu._itemContainer();\r\n var isOtherItem = !$submenu.is(targetSubmenu && targetSubmenu._itemContainer());\r\n var $selectedItem = $submenu.find(\".\".concat(_this5._selectedItemClass()));\r\n if (isOtherItem && $selectedItem.length || cleanAllSubmenus) {\r\n $selectedItem.removeClass(_this5._selectedItemClass());\r\n var selectedItemData = _this5._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 }, {\r\n key: \"_clearRootSelection\",\r\n value: function() {\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 }, {\r\n key: \"_nestedItemOnItemClickHandler\",\r\n value: function(e) {\r\n this._actions.onItemClick(e)\r\n }\r\n }, {\r\n key: \"_nestedItemOnItemRenderedHandler\",\r\n value: function(e) {\r\n this._actions.onItemRendered(e)\r\n }\r\n }, {\r\n key: \"_attachSubmenuHandlers\",\r\n value: function($rootItem, submenu) {\r\n var _this6 = this;\r\n var $submenuOverlayContent = submenu.getOverlayContent();\r\n var submenus = $submenuOverlayContent.find(\".\".concat(DX_SUBMENU_CLASS));\r\n var submenuMouseLeaveName = (0, _index.addNamespace)(_hover.end, 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 (0, _iterator.each)(submenus, function(index, submenu) {\r\n _events_engine.default.off(submenu, submenuMouseLeaveName);\r\n _events_engine.default.on(submenu, submenuMouseLeaveName, null, _this6._submenuMouseLeaveHandler.bind(_this6, $rootItem))\r\n })\r\n }\r\n }, {\r\n key: \"_submenuOnShowingHandler\",\r\n value: function($rootItem, submenu) {\r\n var $border = $rootItem.children(\".\".concat(DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS));\r\n this._actions.onSubmenuShowing({\r\n rootItem: (0, _element.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 }, {\r\n key: \"_submenuOnShownHandler\",\r\n value: function($rootItem, submenu) {\r\n this._actions.onSubmenuShown({\r\n rootItem: (0, _element.getPublicElement)($rootItem),\r\n submenu: submenu\r\n })\r\n }\r\n }, {\r\n key: \"_submenuOnHidingHandler\",\r\n value: function($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 = (0, _element.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 }, {\r\n key: \"_submenuOnHiddenHandler\",\r\n value: function($rootItem, submenu) {\r\n this._actions.onSubmenuHidden({\r\n rootItem: (0, _element.getPublicElement)($rootItem),\r\n submenu: submenu\r\n })\r\n }\r\n }, {\r\n key: \"_submenuMouseLeaveHandler\",\r\n value: function($rootItem, eventArgs) {\r\n var target = (0, _renderer.default)(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 }, {\r\n key: \"_hideSubmenuAfterTimeout\",\r\n value: function() {\r\n if (!this._visibleSubmenu) {\r\n return\r\n }\r\n var isRootItemHovered = (0, _renderer.default)(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 }, {\r\n key: \"_getSubmenuByRootElement\",\r\n value: function($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 && _ui2.default.getInstance($submenu)\r\n }\r\n }, {\r\n key: \"getSubmenuPosition\",\r\n value: function($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 }, {\r\n key: \"_renderBorderElement\",\r\n value: function($item) {\r\n (0, _renderer.default)(\"
\").appendTo($item).addClass(DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS).hide()\r\n }\r\n }, {\r\n key: \"_itemPointerDownHandler\",\r\n value: function(e) {\r\n var $target = (0, _renderer.default)(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 _get(_getPrototypeOf(Menu.prototype), \"_itemPointerDownHandler\", this).call(this, e)\r\n }\r\n }, {\r\n key: \"_hoverStartHandler\",\r\n value: function(e) {\r\n var mouseMoveEventName = (0, _index.addNamespace)(_pointer.default.move, this.NAME);\r\n var $item = this._getItemElementByEventArgs(e);\r\n var node = this._dataAdapter.getNodeByItem(this._getItemData($item));\r\n var isSelectionActive = (0, _type.isDefined)(e.buttons) && 1 === e.buttons || !(0, _type.isDefined)(e.buttons) && 1 === e.which;\r\n if (this._isItemDisabled($item)) {\r\n return\r\n }\r\n _events_engine.default.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 _events_engine.default.on($item, mouseMoveEventName, this._itemMouseMoveHandler.bind(this));\r\n this._showSubmenuTimer = this._getDelay(\"hide\")\r\n }\r\n }\r\n }\r\n }, {\r\n key: \"_hoverEndHandler\",\r\n value: function(eventArg) {\r\n var _this7 = this;\r\n var $item = this._getItemElementByEventArgs(eventArg);\r\n var relatedTarget = (0, _renderer.default)(eventArg.relatedTarget);\r\n _get(_getPrototypeOf(Menu.prototype), \"_hoverEndHandler\", this).call(this, 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(function() {\r\n _this7._hideSubmenuAfterTimeout()\r\n }, this._getDelay(\"hide\"))\r\n }\r\n }\r\n }, {\r\n key: \"_hideVisibleSubmenu\",\r\n value: function() {\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 }, {\r\n key: \"_showSubmenu\",\r\n value: function($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 }, {\r\n key: \"_hideSubmenu\",\r\n value: function(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 }, {\r\n key: \"_itemMouseMoveHandler\",\r\n value: function(e) {\r\n var _this8 = this;\r\n if (e.pointers && e.pointers.length) {\r\n return\r\n }\r\n var $item = (0, _renderer.default)(e.currentTarget);\r\n if (!(0, _type.isDefined)(this._showSubmenuTimer)) {\r\n return\r\n }\r\n this._clearTimeouts();\r\n this._showSubmenuTimer = setTimeout(function() {\r\n var submenu = _this8._getSubmenuByElement($item);\r\n if (submenu && !submenu.isOverlayVisible()) {\r\n _this8._showSubmenu($item)\r\n }\r\n }, this._getDelay(\"show\"))\r\n }\r\n }, {\r\n key: \"_clearTimeouts\",\r\n value: function() {\r\n clearTimeout(this._hideSubmenuTimer);\r\n clearTimeout(this._showSubmenuTimer)\r\n }\r\n }, {\r\n key: \"_getSubmenuByElement\",\r\n value: function($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 }, {\r\n key: \"_updateSubmenuVisibilityOnClick\",\r\n value: function(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 = (0, _renderer.default)(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 }, {\r\n key: \"_optionChanged\",\r\n value: function(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 _get(_getPrototypeOf(Menu.prototype), \"_optionChanged\", this).call(this, 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 _get(_getPrototypeOf(Menu.prototype), \"_optionChanged\", this).call(this, 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 _get(_getPrototypeOf(Menu.prototype), \"_optionChanged\", this).call(this, args)\r\n }\r\n }\r\n }, {\r\n key: \"_changeSubmenusOption\",\r\n value: function(name, value) {\r\n (0, _iterator.each)(this._submenus, function(index, submenu) {\r\n submenu.option(name, value)\r\n })\r\n }\r\n }, {\r\n key: \"selectItem\",\r\n value: function(itemElement) {\r\n this._hideSubmenu(this._visibleSubmenu);\r\n _get(_getPrototypeOf(Menu.prototype), \"selectItem\", this).call(this, itemElement)\r\n }\r\n }, {\r\n key: \"unselectItem\",\r\n value: function(itemElement) {\r\n this._hideSubmenu(this._visibleSubmenu);\r\n _get(_getPrototypeOf(Menu.prototype), \"selectItem\", this).call(this, itemElement)\r\n }\r\n }]);\r\n return Menu\r\n}(_ui.default);\r\n(0, _component_registrator.default)(\"dxMenu\", Menu);\r\nvar _default = Menu;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.row_dragging.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.row_dragging\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"rowDragging\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tooltip/tooltip.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _popover = _interopRequireDefault(require(\"../popover\"));\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TOOLTIP_CLASS = \"dx-tooltip\";\r\nvar TOOLTIP_WRAPPER_CLASS = \"dx-tooltip-wrapper\";\r\nvar Tooltip = _popover.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n toolbarItems: [],\r\n showCloseButton: false,\r\n showTitle: false,\r\n title: null,\r\n titleTemplate: null,\r\n onTitleRendered: null,\r\n bottomTemplate: null,\r\n propagateOutsideClick: true\r\n })\r\n },\r\n _render: function() {\r\n this.$element().addClass(TOOLTIP_CLASS);\r\n this._wrapper().addClass(TOOLTIP_WRAPPER_CLASS);\r\n this.callBase()\r\n },\r\n _renderContent: function() {\r\n this.callBase();\r\n this._contentId = \"dx-\" + new _guid.default;\r\n this._$content.attr({\r\n id: this._contentId,\r\n role: \"tooltip\"\r\n });\r\n this._toggleAriaDescription(true)\r\n },\r\n _toggleAriaDescription: function(showing) {\r\n var $target = (0, _renderer.default)(this.option(\"target\"));\r\n var label = showing ? this._contentId : void 0;\r\n if (!(0, _type.isWindow)($target.get(0))) {\r\n this.setAria(\"describedby\", label, $target)\r\n }\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxTooltip\", Tooltip);\r\nvar _default = Tooltip;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.search.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\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 (0, _type.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\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n searchPanel: {\r\n visible: false,\r\n width: 160,\r\n placeholder: _message.default.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: function() {\r\n var calculateSearchFilter = 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 = (0, _data.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 (0, _query.default)(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 {\r\n if (void 0 !== filterValue) {\r\n filters.push(column.createFilterExpression(filterValue, null, \"search\"))\r\n }\r\n }\r\n }\r\n }\r\n return _uiGrid_core.default.combineFilters(filters, \"or\")\r\n };\r\n return {\r\n publicMethods: function() {\r\n return this.callBase().concat([\"searchByText\"])\r\n },\r\n _calculateAdditionalFilter: function() {\r\n var that = this;\r\n var filter = that.callBase();\r\n var searchFilter = calculateSearchFilter(that, that.option(\"searchPanel.text\"));\r\n return _uiGrid_core.default.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 var that = this;\r\n switch (args.fullName) {\r\n case \"searchPanel.text\":\r\n case \"searchPanel\":\r\n that._applyFilter();\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n }\r\n }\r\n }()\r\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 = (0, _renderer.default)(\"
\").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\": _message.default.format(\"dxDataGrid-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 (0, _renderer.default)(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 = _uiGrid_core.default.getFormatOptionsByColumn(column, \"search\");\r\n return _uiGrid_core.default.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 that = this;\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 = (0, _renderer.default)(\"
\").append(cellElement)\r\n } else {\r\n if (column) {\r\n if (column.groupIndex >= 0 && !column.showWhenGrouped) {\r\n $items = cellElement\r\n } else {\r\n var columnIndex = that._columnsController.getVisibleIndex(column.index);\r\n $items = $parent.children(\"td\").eq(columnIndex).find(\"*\")\r\n }\r\n }\r\n }\r\n $items = $items && $items.length ? $items : $parent.find(\"*\");\r\n $items = $items.filter(function(_, element) {\r\n var $contents = (0, _renderer.default)(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 that = this;\r\n var $searchTextSpan = (0, _renderer.default)(\"\").addClass(that.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 = (0, _renderer.default)(_dom_adapter.default.createTextNode(text.substr(index + searchText.length))).insertAfter($searchTextSpan);\r\n return that._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 (0, _iterator.each)(textNodes, function(_, element) {\r\n (0, _iterator.each)((0, _renderer.default)(element).contents(), function(_, textNode) {\r\n if (isEquals) {\r\n if (stringNormalizer((0, _renderer.default)(textNode).text()) === stringNormalizer(searchText)) {\r\n (0, _renderer.default)(this).replaceWith((0, _renderer.default)(\"\").addClass(that.addWidgetPrefix(SEARCH_TEXT_CLASS)).text((0, _renderer.default)(textNode).text()))\r\n }\r\n } else {\r\n that._highlightSearchTextCore((0, _renderer.default)(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)) {\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\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/excel/excel.cell_alignment_helper.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _excel = _interopRequireDefault(require(\"./excel.tag_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar cellAlignmentHelper = {\r\n tryCreateTag: function(sourceObj) {\r\n var result = null;\r\n if ((0, _type.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 ((0, _type.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) || (0, _type.isDefined)(leftTag) && (0, _type.isDefined)(rightTag) && leftTag.vertical === rightTag.vertical && leftTag.wrapText === rightTag.wrapText && leftTag.horizontal === rightTag.horizontal\r\n },\r\n isEmpty: function(tag) {\r\n return !(0, _type.isDefined)(tag) || !(0, _type.isDefined)(tag.vertical) && !(0, _type.isDefined)(tag.wrapText) && !(0, _type.isDefined)(tag.horizontal)\r\n },\r\n toXml: function(tag) {\r\n return _excel.default.toXml(\"alignment\", {\r\n vertical: tag.vertical,\r\n wrapText: (0, _type.isDefined)(tag.wrapText) ? Number(tag.wrapText) : void 0,\r\n horizontal: tag.horizontal\r\n })\r\n }\r\n};\r\nvar _default = cellAlignmentHelper;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.columns_controller.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _variable_wrapper = _interopRequireDefault(require(\"../../core/utils/variable_wrapper\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _config = _interopRequireDefault(require(\"../../core/config\"));\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _abstract_store = _interopRequireDefault(require(\"../../data/abstract_store\"));\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _utils = require(\"../../data/data_source/utils\");\r\nvar _filtering = _interopRequireDefault(require(\"../shared/filtering\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n if (enumerableOnly) {\r\n symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })\r\n }\r\n keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n })\r\n } else {\r\n if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n } else {\r\n ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar USER_STATE_FIELD_NAMES_15_1 = [\"filterValues\", \"filterType\", \"fixed\", \"fixedPosition\"];\r\nvar USER_STATE_FIELD_NAMES = [\"visibleIndex\", \"dataField\", \"name\", \"dataType\", \"width\", \"visible\", \"sortOrder\", \"lastSortOrder\", \"sortIndex\", \"groupIndex\", \"filterValue\", \"selectedFilterOperation\", \"added\"].concat(USER_STATE_FIELD_NAMES_15_1);\r\nvar IGNORE_COLUMN_OPTION_NAMES = {\r\n visibleWidth: true,\r\n bestFitWidth: true,\r\n bufferedFilterValue: true\r\n};\r\nvar COMMAND_EXPAND_CLASS = \"dx-command-expand\";\r\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\r\nvar GROUP_COMMAND_COLUMN_NAME = \"groupExpand\";\r\nvar regExp = /columns\\[(\\d+)\\]\\.?/gi;\r\nvar globalColumnId = 1;\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n commonColumnSettings: {\r\n allowFiltering: true,\r\n allowHiding: true,\r\n allowSorting: true,\r\n allowEditing: true,\r\n encodeHtml: true,\r\n trueText: _message.default.format(\"dxDataGrid-trueText\"),\r\n falseText: _message.default.format(\"dxDataGrid-falseText\")\r\n },\r\n allowColumnReordering: false,\r\n allowColumnResizing: false,\r\n columnResizingMode: \"nextColumn\",\r\n columnMinWidth: void 0,\r\n columnWidth: void 0,\r\n adaptColumnWidthByRatio: true,\r\n columns: void 0,\r\n regenerateColumnsByVisibleItems: false,\r\n customizeColumns: null,\r\n dateSerializationFormat: void 0\r\n }\r\n },\r\n controllers: {\r\n columns: _uiGrid_core.default.Controller.inherit(function() {\r\n var DEFAULT_COLUMN_OPTIONS = {\r\n visible: true,\r\n showInColumnChooser: true\r\n };\r\n var DATATYPE_OPERATIONS = {\r\n number: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"between\"],\r\n string: [\"contains\", \"notcontains\", \"startswith\", \"endswith\", \"=\", \"<>\"],\r\n date: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"between\"],\r\n datetime: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"between\"]\r\n };\r\n var COLUMN_INDEX_OPTIONS = {\r\n visibleIndex: true,\r\n groupIndex: true,\r\n grouped: true,\r\n sortIndex: true,\r\n sortOrder: true\r\n };\r\n var GROUP_LOCATION = \"group\";\r\n var COLUMN_CHOOSER_LOCATION = \"columnChooser\";\r\n var setFilterOperationsAsDefaultValues = function(column) {\r\n column.filterOperations = column.defaultFilterOperations\r\n };\r\n var createColumn = function(that, columnOptions, userStateColumnOptions, bandColumn) {\r\n var commonColumnOptions = {};\r\n if (columnOptions) {\r\n if ((0, _type.isString)(columnOptions)) {\r\n columnOptions = {\r\n dataField: columnOptions\r\n }\r\n }\r\n that.setName(columnOptions);\r\n var result = {};\r\n if (columnOptions.command) {\r\n result = (0, _object.deepExtendArraySafe)(commonColumnOptions, columnOptions)\r\n } else {\r\n commonColumnOptions = that.getCommonSettings(columnOptions);\r\n if (userStateColumnOptions && userStateColumnOptions.name && userStateColumnOptions.dataField) {\r\n columnOptions = (0, _extend.extend)({}, columnOptions, {\r\n dataField: userStateColumnOptions.dataField\r\n })\r\n }\r\n var calculatedColumnOptions = that._createCalculatedColumnOptions(columnOptions, bandColumn);\r\n if (!columnOptions.type) {\r\n result = {\r\n headerId: \"dx-col-\".concat(globalColumnId++)\r\n }\r\n }\r\n result = (0, _object.deepExtendArraySafe)(result, DEFAULT_COLUMN_OPTIONS);\r\n (0, _object.deepExtendArraySafe)(result, commonColumnOptions);\r\n (0, _object.deepExtendArraySafe)(result, calculatedColumnOptions);\r\n (0, _object.deepExtendArraySafe)(result, columnOptions);\r\n (0, _object.deepExtendArraySafe)(result, {\r\n selector: null\r\n })\r\n }\r\n if (columnOptions.filterOperations === columnOptions.defaultFilterOperations) {\r\n setFilterOperationsAsDefaultValues(result)\r\n }\r\n return result\r\n }\r\n };\r\n var createColumnsFromOptions = function createColumnsFromOptions(that, columnsOptions, bandColumn) {\r\n var result = [];\r\n if (columnsOptions) {\r\n (0, _iterator.each)(columnsOptions, function(index, columnOptions) {\r\n var userStateColumnOptions = that._columnsUserState && checkUserStateColumn(columnOptions, that._columnsUserState[index]) && that._columnsUserState[index];\r\n var column = createColumn(that, columnOptions, userStateColumnOptions, bandColumn);\r\n if (column) {\r\n if (bandColumn) {\r\n column.ownerBand = bandColumn\r\n }\r\n result.push(column);\r\n if (column.columns) {\r\n result = result.concat(createColumnsFromOptions(that, column.columns, column));\r\n delete column.columns;\r\n column.hasColumns = true\r\n }\r\n }\r\n })\r\n }\r\n return result\r\n };\r\n var getParentBandColumns = function(columnIndex, columnParentByIndex) {\r\n var result = [];\r\n var parent = columnParentByIndex[columnIndex];\r\n while (parent) {\r\n result.unshift(parent);\r\n columnIndex = parent.index;\r\n parent = columnParentByIndex[columnIndex]\r\n }\r\n return result\r\n };\r\n var _getChildrenByBandColumn = function(columnIndex, columnChildrenByIndex, recursive) {\r\n var result = [];\r\n var children = columnChildrenByIndex[columnIndex];\r\n if (children) {\r\n for (var i = 0; i < children.length; i++) {\r\n var column = children[i];\r\n if (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped) {\r\n result.push(column);\r\n if (recursive && column.isBand) {\r\n result = result.concat(_getChildrenByBandColumn(column.index, columnChildrenByIndex, recursive))\r\n }\r\n }\r\n }\r\n }\r\n return result\r\n };\r\n var getColumnByIndexes = function(that, columnIndexes) {\r\n var result;\r\n var columns;\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var callbackFilter = function(column) {\r\n var ownerBand = result ? result.index : void 0;\r\n return column.ownerBand === ownerBand\r\n };\r\n if (bandColumnsCache.isPlain) {\r\n result = that._columns[columnIndexes[0]]\r\n } else {\r\n columns = that._columns.filter(callbackFilter);\r\n for (var i = 0; i < columnIndexes.length; i++) {\r\n result = columns[columnIndexes[i]];\r\n if (result) {\r\n columns = that._columns.filter(callbackFilter)\r\n }\r\n }\r\n }\r\n return result\r\n };\r\n var getColumnFullPath = function(that, column) {\r\n var result = [];\r\n var columns;\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var callbackFilter = function(item) {\r\n return item.ownerBand === column.ownerBand\r\n };\r\n if (bandColumnsCache.isPlain) {\r\n var columnIndex = that._columns.indexOf(column);\r\n if (columnIndex >= 0) {\r\n result = [\"columns[\".concat(columnIndex, \"]\")]\r\n }\r\n } else {\r\n columns = that._columns.filter(callbackFilter);\r\n while (columns.length && columns.indexOf(column) !== -1) {\r\n result.unshift(\"columns[\".concat(columns.indexOf(column), \"]\"));\r\n column = bandColumnsCache.columnParentByIndex[column.index];\r\n columns = column ? that._columns.filter(callbackFilter) : []\r\n }\r\n }\r\n return result.join(\".\")\r\n };\r\n var calculateColspan = function calculateColspan(that, columnID) {\r\n var colspan = 0;\r\n var columns = that.getChildrenByBandColumn(columnID, true);\r\n (0, _iterator.each)(columns, function(_, column) {\r\n if (column.isBand) {\r\n column.colspan = column.colspan || calculateColspan(that, column.index);\r\n colspan += column.colspan || 1\r\n } else {\r\n colspan += 1\r\n }\r\n });\r\n return colspan\r\n };\r\n var processBandColumns = function(that, columns, bandColumnsCache) {\r\n var rowspan;\r\n for (var i = 0; i < columns.length; i++) {\r\n var column = columns[i];\r\n if (column.visible || column.command) {\r\n if (column.isBand) {\r\n column.colspan = column.colspan || calculateColspan(that, column.index)\r\n }\r\n if (!column.isBand || !column.colspan) {\r\n rowspan = that.getRowCount();\r\n if (!column.command && (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped)) {\r\n rowspan -= getParentBandColumns(column.index, bandColumnsCache.columnParentByIndex).length\r\n }\r\n if (rowspan > 1) {\r\n column.rowspan = rowspan\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var getValueDataType = function(value) {\r\n var dataType = (0, _type.type)(value);\r\n if (\"string\" !== dataType && \"boolean\" !== dataType && \"number\" !== dataType && \"date\" !== dataType && \"object\" !== dataType) {\r\n dataType = void 0\r\n }\r\n return dataType\r\n };\r\n var getSerializationFormat = function(dataType, value) {\r\n switch (dataType) {\r\n case \"date\":\r\n case \"datetime\":\r\n return _date_serialization.default.getDateSerializationFormat(value);\r\n case \"number\":\r\n if ((0, _type.isString)(value)) {\r\n return \"string\"\r\n }\r\n if ((0, _type.isNumeric)(value)) {\r\n return null\r\n }\r\n }\r\n };\r\n var updateSerializers = function(options, dataType) {\r\n if (!options.deserializeValue) {\r\n if (_uiGrid_core2.default.isDateType(dataType)) {\r\n options.deserializeValue = function(value) {\r\n return _date_serialization.default.deserializeDate(value)\r\n };\r\n options.serializeValue = function(value) {\r\n return (0, _type.isString)(value) ? value : _date_serialization.default.serializeDate(value, this.serializationFormat)\r\n }\r\n }\r\n if (\"number\" === dataType) {\r\n options.deserializeValue = function(value) {\r\n var parsedValue = parseFloat(value);\r\n return isNaN(parsedValue) ? value : parsedValue\r\n };\r\n options.serializeValue = function(value, target) {\r\n if (\"filter\" === target) {\r\n return value\r\n }\r\n return (0, _type.isDefined)(value) && \"string\" === this.serializationFormat ? value.toString() : value\r\n }\r\n }\r\n }\r\n };\r\n var getAlignmentByDataType = function(dataType, isRTL) {\r\n switch (dataType) {\r\n case \"number\":\r\n return \"right\";\r\n case \"boolean\":\r\n return \"center\";\r\n default:\r\n return (0, _position.getDefaultAlignment)(isRTL)\r\n }\r\n };\r\n var customizeTextForBooleanDataType = function(e) {\r\n if (true === e.value) {\r\n return this.trueText || \"true\"\r\n } else {\r\n if (false === e.value) {\r\n return this.falseText || \"false\"\r\n } else {\r\n return e.valueText || \"\"\r\n }\r\n }\r\n };\r\n var getCustomizeTextByDataType = function(dataType) {\r\n if (\"boolean\" === dataType) {\r\n return customizeTextForBooleanDataType\r\n }\r\n };\r\n var createColumnsFromDataSource = function(that, dataSource) {\r\n var firstItems = that._getFirstItems(dataSource);\r\n var fieldName;\r\n var processedFields = {};\r\n var result = [];\r\n for (var i = 0; i < firstItems.length; i++) {\r\n if (firstItems[i]) {\r\n for (fieldName in firstItems[i]) {\r\n if (!(0, _type.isFunction)(firstItems[i][fieldName]) || _variable_wrapper.default.isWrapped(firstItems[i][fieldName])) {\r\n processedFields[fieldName] = true\r\n }\r\n }\r\n }\r\n }\r\n for (fieldName in processedFields) {\r\n if (0 !== fieldName.indexOf(\"__\")) {\r\n var column = createColumn(that, fieldName);\r\n result.push(column)\r\n }\r\n }\r\n return result\r\n };\r\n var updateColumnIndexes = function(that) {\r\n (0, _iterator.each)(that._columns, function(index, column) {\r\n column.index = index\r\n });\r\n (0, _iterator.each)(that._columns, function(index, column) {\r\n if ((0, _type.isObject)(column.ownerBand)) {\r\n column.ownerBand = column.ownerBand.index\r\n }\r\n });\r\n (0, _iterator.each)(that._commandColumns, function(index, column) {\r\n column.index = -(index + 1)\r\n })\r\n };\r\n var updateColumnGroupIndexes = function(that, currentColumn) {\r\n (0, _array.normalizeIndexes)(that._columns, \"groupIndex\", currentColumn, function(column) {\r\n var grouped = column.grouped;\r\n delete column.grouped;\r\n return grouped\r\n })\r\n };\r\n var updateColumnSortIndexes = function(that, currentColumn) {\r\n (0, _iterator.each)(that._columns, function(index, column) {\r\n if ((0, _type.isDefined)(column.sortIndex) && !isSortOrderValid(column.sortOrder)) {\r\n delete column.sortIndex\r\n }\r\n });\r\n (0, _array.normalizeIndexes)(that._columns, \"sortIndex\", currentColumn, function(column) {\r\n return !(0, _type.isDefined)(column.groupIndex) && isSortOrderValid(column.sortOrder)\r\n })\r\n };\r\n var updateColumnVisibleIndexes = function(that, currentColumn) {\r\n var key;\r\n var column;\r\n var bandColumns = {};\r\n var result = [];\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var columns = that._columns.filter(function(column) {\r\n return !column.command\r\n });\r\n for (var i = 0; i < columns.length; i++) {\r\n column = columns[i];\r\n var parentBandColumns = getParentBandColumns(i, bandColumnsCache.columnParentByIndex);\r\n if (parentBandColumns.length) {\r\n var bandColumnIndex = parentBandColumns[parentBandColumns.length - 1].index;\r\n bandColumns[bandColumnIndex] = bandColumns[bandColumnIndex] || [];\r\n bandColumns[bandColumnIndex].push(column)\r\n } else {\r\n result.push(column)\r\n }\r\n }\r\n for (key in bandColumns) {\r\n (0, _array.normalizeIndexes)(bandColumns[key], \"visibleIndex\", currentColumn)\r\n }(0, _array.normalizeIndexes)(result, \"visibleIndex\", currentColumn)\r\n };\r\n var getColumnIndexByVisibleIndex = function(that, visibleIndex, location) {\r\n var rowIndex = (0, _type.isObject)(visibleIndex) ? visibleIndex.rowIndex : null;\r\n var columns = location === GROUP_LOCATION ? that.getGroupColumns() : location === COLUMN_CHOOSER_LOCATION ? that.getChooserColumns() : that.getVisibleColumns(rowIndex);\r\n var column;\r\n visibleIndex = (0, _type.isObject)(visibleIndex) ? visibleIndex.columnIndex : visibleIndex;\r\n column = columns[visibleIndex];\r\n if (column && column.type === GROUP_COMMAND_COLUMN_NAME) {\r\n column = that._columns.filter(function(col) {\r\n return column.type === col.type\r\n })[0] || column\r\n }\r\n return column && (0, _type.isDefined)(column.index) ? column.index : -1\r\n };\r\n var moveColumnToGroup = function(that, column, groupIndex) {\r\n var groupColumns = that.getGroupColumns();\r\n var i;\r\n if (groupIndex >= 0) {\r\n for (i = 0; i < groupColumns.length; i++) {\r\n if (groupColumns[i].groupIndex >= groupIndex) {\r\n groupColumns[i].groupIndex++\r\n }\r\n }\r\n } else {\r\n groupIndex = 0;\r\n for (i = 0; i < groupColumns.length; i++) {\r\n groupIndex = Math.max(groupIndex, groupColumns[i].groupIndex + 1)\r\n }\r\n }\r\n return groupIndex\r\n };\r\n\r\n function checkUserStateColumn(column, userStateColumn) {\r\n return column && userStateColumn && (userStateColumn.name === column.name || !column.name) && (userStateColumn.dataField === column.dataField || column.name)\r\n }\r\n var applyUserState = function(that) {\r\n var columnsUserState = that._columnsUserState;\r\n var ignoreColumnOptionNames = that._ignoreColumnOptionNames || [];\r\n var columns = that._columns;\r\n var columnCountById = {};\r\n var resultColumns = [];\r\n var allColumnsHaveState = true;\r\n var userStateColumnIndexes = [];\r\n var column;\r\n var userStateColumnIndex;\r\n var i;\r\n\r\n function applyFieldsState(column, userStateColumn) {\r\n if (!userStateColumn) {\r\n return\r\n }\r\n for (var index = 0; index < USER_STATE_FIELD_NAMES.length; index++) {\r\n var fieldName = USER_STATE_FIELD_NAMES[index];\r\n if ((0, _array.inArray)(fieldName, ignoreColumnOptionNames) >= 0) {\r\n continue\r\n }\r\n if (\"dataType\" === fieldName) {\r\n column[fieldName] = column[fieldName] || userStateColumn[fieldName]\r\n } else {\r\n if ((0, _array.inArray)(fieldName, USER_STATE_FIELD_NAMES_15_1) >= 0) {\r\n if (fieldName in userStateColumn) {\r\n column[fieldName] = userStateColumn[fieldName]\r\n }\r\n } else {\r\n if (\"selectedFilterOperation\" === fieldName && userStateColumn[fieldName]) {\r\n column.defaultSelectedFilterOperation = column[fieldName] || null\r\n }\r\n column[fieldName] = userStateColumn[fieldName]\r\n }\r\n }\r\n }\r\n }\r\n\r\n function findUserStateColumn(columnsUserState, column) {\r\n var id = column.name || column.dataField;\r\n var count = columnCountById[id] || 0;\r\n for (var j = 0; j < columnsUserState.length; j++) {\r\n if (checkUserStateColumn(column, columnsUserState[j])) {\r\n if (count) {\r\n count--\r\n } else {\r\n columnCountById[id] = columnCountById[id] || 0;\r\n columnCountById[id]++;\r\n return j\r\n }\r\n }\r\n }\r\n return -1\r\n }\r\n if (columnsUserState) {\r\n for (i = 0; i < columns.length; i++) {\r\n userStateColumnIndex = findUserStateColumn(columnsUserState, columns[i]);\r\n allColumnsHaveState = allColumnsHaveState && userStateColumnIndex >= 0;\r\n userStateColumnIndexes.push(userStateColumnIndex)\r\n }\r\n for (i = 0; i < columns.length; i++) {\r\n column = columns[i];\r\n userStateColumnIndex = userStateColumnIndexes[i];\r\n if (that._hasUserState || allColumnsHaveState) {\r\n applyFieldsState(column, columnsUserState[userStateColumnIndex])\r\n }\r\n if (userStateColumnIndex >= 0 && (0, _type.isDefined)(columnsUserState[userStateColumnIndex].initialIndex)) {\r\n resultColumns[userStateColumnIndex] = column\r\n } else {\r\n resultColumns.push(column)\r\n }\r\n }\r\n var hasAddedBands = false;\r\n for (i = 0; i < columnsUserState.length; i++) {\r\n var columnUserState = columnsUserState[i];\r\n if (columnUserState.added && findUserStateColumn(columns, columnUserState) < 0) {\r\n column = createColumn(that, columnUserState.added);\r\n applyFieldsState(column, columnUserState);\r\n resultColumns.push(column);\r\n if (columnUserState.added.columns) {\r\n hasAddedBands = true\r\n }\r\n }\r\n }\r\n if (hasAddedBands) {\r\n updateColumnIndexes(that);\r\n resultColumns = createColumnsFromOptions(that, resultColumns)\r\n }\r\n assignColumns(that, resultColumns)\r\n }\r\n };\r\n var updateIndexes = function(that, column) {\r\n updateColumnIndexes(that);\r\n updateColumnGroupIndexes(that, column);\r\n updateColumnSortIndexes(that, column);\r\n resetBandColumnsCache(that);\r\n updateColumnVisibleIndexes(that, column)\r\n };\r\n var resetColumnsCache = function(that) {\r\n that.resetColumnsCache()\r\n };\r\n\r\n function assignColumns(that, columns) {\r\n that._columns = columns;\r\n resetColumnsCache(that);\r\n that.updateColumnDataTypes()\r\n }\r\n var updateColumnChanges = function(that, changeType, optionName, columnIndex) {\r\n var columnChanges = that._columnChanges || {\r\n optionNames: {\r\n length: 0\r\n },\r\n changeTypes: {\r\n length: 0\r\n },\r\n columnIndex: columnIndex\r\n };\r\n optionName = optionName || \"all\";\r\n optionName = optionName.split(\".\")[0];\r\n var changeTypes = columnChanges.changeTypes;\r\n if (changeType && !changeTypes[changeType]) {\r\n changeTypes[changeType] = true;\r\n changeTypes.length++\r\n }\r\n var optionNames = columnChanges.optionNames;\r\n if (optionName && !optionNames[optionName]) {\r\n optionNames[optionName] = true;\r\n optionNames.length++\r\n }\r\n if (void 0 === columnIndex || columnIndex !== columnChanges.columnIndex) {\r\n delete columnChanges.columnIndex\r\n }\r\n that._columnChanges = columnChanges;\r\n resetColumnsCache(that)\r\n };\r\n var fireColumnsChanged = function(that) {\r\n var onColumnsChanging = that.option(\"onColumnsChanging\");\r\n var columnChanges = that._columnChanges;\r\n var reinitOptionNames = [\"dataField\", \"lookup\", \"dataType\", \"columns\"];\r\n var needReinit = function(options) {\r\n return options && reinitOptionNames.some(function(name) {\r\n return options[name]\r\n })\r\n };\r\n if (that.isInitialized() && !that._updateLockCount && columnChanges) {\r\n if (onColumnsChanging) {\r\n that._updateLockCount++;\r\n onColumnsChanging((0, _extend.extend)({\r\n component: that.component\r\n }, columnChanges));\r\n that._updateLockCount--\r\n }\r\n that._columnChanges = void 0;\r\n if (needReinit(columnChanges.optionNames)) {\r\n that.reinit()\r\n } else {\r\n that.columnsChanged.fire(columnChanges)\r\n }\r\n }\r\n };\r\n var updateSortOrderWhenGrouping = function(that, column, groupIndex, prevGroupIndex) {\r\n var columnWasGrouped = prevGroupIndex >= 0;\r\n if (groupIndex >= 0) {\r\n if (!columnWasGrouped) {\r\n column.lastSortOrder = column.sortOrder\r\n }\r\n } else {\r\n var sortMode = that.option(\"sorting.mode\");\r\n var sortOrder = column.lastSortOrder;\r\n if (\"single\" === sortMode) {\r\n var sortedByAnotherColumn = that._columns.some(function(col) {\r\n return col !== column && (0, _type.isDefined)(col.sortIndex)\r\n });\r\n if (sortedByAnotherColumn) {\r\n sortOrder = void 0\r\n }\r\n }\r\n column.sortOrder = sortOrder\r\n }\r\n };\r\n var fireOptionChanged = function(that, options) {\r\n var value = options.value;\r\n var optionName = options.optionName;\r\n var prevValue = options.prevValue;\r\n var fullOptionName = options.fullOptionName;\r\n var fullOptionPath = \"\".concat(fullOptionName, \".\").concat(optionName);\r\n if (!IGNORE_COLUMN_OPTION_NAMES[optionName] && that._skipProcessingColumnsChange !== fullOptionPath) {\r\n that._skipProcessingColumnsChange = fullOptionPath;\r\n that.component._notifyOptionChanged(fullOptionPath, value, prevValue);\r\n that._skipProcessingColumnsChange = false\r\n }\r\n };\r\n var columnOptionCore = function(that, column, optionName, value, notFireEvent) {\r\n var optionGetter = (0, _data.compileGetter)(optionName);\r\n var columnIndex = column.index;\r\n var columns;\r\n var changeType;\r\n var initialColumn;\r\n if (3 === arguments.length) {\r\n return optionGetter(column, {\r\n functionsAsIs: true\r\n })\r\n }\r\n var prevValue = optionGetter(column, {\r\n functionsAsIs: true\r\n });\r\n if (prevValue !== value) {\r\n if (\"groupIndex\" === optionName || \"calculateGroupValue\" === optionName) {\r\n changeType = \"grouping\";\r\n updateSortOrderWhenGrouping(that, column, value, prevValue)\r\n } else {\r\n if (\"sortIndex\" === optionName || \"sortOrder\" === optionName || \"calculateSortValue\" === optionName) {\r\n changeType = \"sorting\"\r\n } else {\r\n changeType = \"columns\"\r\n }\r\n }\r\n var optionSetter = (0, _data.compileSetter)(optionName);\r\n optionSetter(column, value, {\r\n functionsAsIs: true\r\n });\r\n var fullOptionName = getColumnFullPath(that, column);\r\n if (COLUMN_INDEX_OPTIONS[optionName]) {\r\n updateIndexes(that, column);\r\n value = optionGetter(column)\r\n }\r\n if (\"name\" === optionName || \"allowEditing\" === optionName) {\r\n that._checkColumns()\r\n }\r\n fullOptionName && fireOptionChanged(that, {\r\n fullOptionName: fullOptionName,\r\n optionName: optionName,\r\n value: value,\r\n prevValue: prevValue\r\n });\r\n if (!(0, _type.isDefined)(prevValue) && !(0, _type.isDefined)(value) && 0 !== optionName.indexOf(\"buffer\")) {\r\n notFireEvent = true\r\n }\r\n if (!notFireEvent) {\r\n if ((0, _array.inArray)(optionName, USER_STATE_FIELD_NAMES) < 0 && \"visibleWidth\" !== optionName) {\r\n columns = that.option(\"columns\");\r\n initialColumn = that.getColumnByPath(fullOptionName, columns);\r\n if ((0, _type.isString)(initialColumn)) {\r\n initialColumn = columns[columnIndex] = {\r\n dataField: initialColumn\r\n }\r\n }\r\n if (initialColumn && checkUserStateColumn(initialColumn, column)) {\r\n optionSetter(initialColumn, value, {\r\n functionsAsIs: true\r\n })\r\n }\r\n }\r\n updateColumnChanges(that, changeType, optionName, columnIndex)\r\n } else {\r\n resetColumnsCache(that)\r\n }\r\n }\r\n };\r\n\r\n function isSortOrderValid(sortOrder) {\r\n return \"asc\" === sortOrder || \"desc\" === sortOrder\r\n }\r\n var addExpandColumn = function(that) {\r\n var options = that._getExpandColumnOptions();\r\n that.addCommandColumn(options)\r\n };\r\n var defaultSetCellValue = function(data, value) {\r\n var path = this.dataField.split(\".\");\r\n var dotCount = path.length - 1;\r\n if (this.serializeValue) {\r\n value = this.serializeValue(value)\r\n }\r\n for (var i = 0; i < dotCount; i++) {\r\n var name = path[i];\r\n data = data[name] = data[name] || {}\r\n }\r\n data[path[dotCount]] = value\r\n };\r\n var getDataColumns = function getDataColumns(columns, rowIndex, bandColumnID) {\r\n var result = [];\r\n rowIndex = rowIndex || 0;\r\n columns[rowIndex] && (0, _iterator.each)(columns[rowIndex], function(_, column) {\r\n if (column.ownerBand === bandColumnID || column.type === GROUP_COMMAND_COLUMN_NAME) {\r\n if (!column.isBand || !column.colspan) {\r\n if (!column.command || rowIndex < 1) {\r\n result.push(column)\r\n }\r\n } else {\r\n result.push.apply(result, getDataColumns(columns, rowIndex + 1, column.index))\r\n }\r\n }\r\n });\r\n return result\r\n };\r\n var _getRowCount = function(that) {\r\n var rowCount = 1;\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var columnParentByIndex = bandColumnsCache.columnParentByIndex;\r\n that._columns.forEach(function(column) {\r\n var parents = getParentBandColumns(column.index, columnParentByIndex);\r\n var invisibleParents = parents.filter(function(column) {\r\n return !column.visible\r\n });\r\n if (column.visible && !invisibleParents.length) {\r\n rowCount = Math.max(rowCount, parents.length + 1)\r\n }\r\n });\r\n return rowCount\r\n };\r\n var isCustomCommandColumn = function(that, commandColumn) {\r\n return !!that._columns.filter(function(column) {\r\n return column.type === commandColumn.type\r\n }).length\r\n };\r\n var getFixedPosition = function(that, column) {\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n if (column.command && !isCustomCommandColumn(that, column) || !column.fixedPosition) {\r\n return rtlEnabled ? \"right\" : \"left\"\r\n }\r\n return column.fixedPosition\r\n };\r\n var processExpandColumns = function(columns, expandColumns, type, columnIndex) {\r\n var customColumnIndex;\r\n var rowCount = this.getRowCount();\r\n var rowspan = columns[columnIndex] && columns[columnIndex].rowspan;\r\n var expandColumnsByType = expandColumns.filter(function(column) {\r\n return column.type === type\r\n });\r\n columns.forEach(function(column, index) {\r\n if (column.type === type) {\r\n customColumnIndex = index;\r\n rowspan = columns[index + 1] ? columns[index + 1].rowspan : rowCount\r\n }\r\n });\r\n if (rowspan > 1) {\r\n expandColumnsByType = (0, _iterator.map)(expandColumnsByType, function(expandColumn) {\r\n return (0, _extend.extend)({}, expandColumn, {\r\n rowspan: rowspan\r\n })\r\n })\r\n }\r\n expandColumnsByType.unshift.apply(expandColumnsByType, (0, _type.isDefined)(customColumnIndex) ? [customColumnIndex, 1] : [columnIndex, 0]);\r\n columns.splice.apply(columns, expandColumnsByType);\r\n return rowspan || 1\r\n };\r\n var digitsCount = function(number) {\r\n var i;\r\n for (i = 0; number > 1; i++) {\r\n number /= 10\r\n }\r\n return i\r\n };\r\n var numberToString = function(number, digitsCount) {\r\n var str = number ? number.toString() : \"0\";\r\n while (str.length < digitsCount) {\r\n str = \"0\" + str\r\n }\r\n return str\r\n };\r\n var mergeColumns = function(that, columns, commandColumns, needToExtend) {\r\n var column;\r\n var commandColumnIndex;\r\n var result = columns.slice().map(function(column) {\r\n return (0, _extend.extend)({}, column)\r\n });\r\n var isColumnFixing = that._isColumnFixing();\r\n var defaultCommandColumns = commandColumns.slice().map(function(column) {\r\n return (0, _extend.extend)({\r\n fixed: isColumnFixing\r\n }, column)\r\n });\r\n var getCommandColumnIndex = function(column) {\r\n return commandColumns.reduce(function(result, commandColumn, index) {\r\n var columnType = needToExtend && column.type === GROUP_COMMAND_COLUMN_NAME ? \"expand\" : column.type;\r\n return commandColumn.type === columnType || commandColumn.command === column.command ? index : result\r\n }, -1)\r\n };\r\n var callbackFilter = function(commandColumn) {\r\n return commandColumn.command !== commandColumns[commandColumnIndex].command\r\n };\r\n for (var i = 0; i < columns.length; i++) {\r\n column = columns[i];\r\n commandColumnIndex = column && (column.type || column.command) ? getCommandColumnIndex(column) : -1;\r\n if (commandColumnIndex >= 0) {\r\n if (needToExtend) {\r\n result[i] = (0, _extend.extend)({\r\n fixed: isColumnFixing\r\n }, commandColumns[commandColumnIndex], column);\r\n if (column.type !== GROUP_COMMAND_COLUMN_NAME) {\r\n defaultCommandColumns = defaultCommandColumns.filter(callbackFilter)\r\n }\r\n } else {\r\n var columnOptions = {\r\n visibleIndex: column.visibleIndex,\r\n index: column.index,\r\n headerId: column.headerId,\r\n allowFixing: 0 === column.groupIndex,\r\n allowReordering: 0 === column.groupIndex,\r\n groupIndex: column.groupIndex\r\n };\r\n result[i] = (0, _extend.extend)({}, column, commandColumns[commandColumnIndex], column.type === GROUP_COMMAND_COLUMN_NAME && columnOptions)\r\n }\r\n }\r\n }\r\n if (columns.length && needToExtend && defaultCommandColumns.length) {\r\n result = result.concat(defaultCommandColumns)\r\n }\r\n return result\r\n };\r\n var isColumnFixed = function(that, column) {\r\n return (0, _type.isDefined)(column.fixed) || !column.type ? column.fixed : that._isColumnFixing()\r\n };\r\n var convertOwnerBandToColumnReference = function(columns) {\r\n columns.forEach(function(column) {\r\n if ((0, _type.isDefined)(column.ownerBand)) {\r\n column.ownerBand = columns[column.ownerBand]\r\n }\r\n })\r\n };\r\n var resetBandColumnsCache = function(that) {\r\n that._bandColumnsCache = void 0\r\n };\r\n var findColumn = function(columns, identifier) {\r\n var identifierOptionName = (0, _type.isString)(identifier) && identifier.substr(0, identifier.indexOf(\":\"));\r\n var column;\r\n if (void 0 === identifier) {\r\n return\r\n }\r\n if (identifierOptionName) {\r\n identifier = identifier.substr(identifierOptionName.length + 1)\r\n }\r\n if (identifierOptionName) {\r\n column = columns.filter(function(column) {\r\n return \"\" + column[identifierOptionName] === identifier\r\n })[0]\r\n } else {\r\n [\"index\", \"name\", \"dataField\", \"caption\"].some(function(optionName) {\r\n column = columns.filter(function(column) {\r\n return column[optionName] === identifier\r\n })[0];\r\n return !!column\r\n })\r\n }\r\n return column\r\n };\r\n return {\r\n _getExpandColumnOptions: function() {\r\n return {\r\n type: \"expand\",\r\n command: \"expand\",\r\n width: \"auto\",\r\n cssClass: COMMAND_EXPAND_CLASS,\r\n allowEditing: false,\r\n allowGrouping: false,\r\n allowSorting: false,\r\n allowResizing: false,\r\n allowReordering: false,\r\n allowHiding: false\r\n }\r\n },\r\n _getFirstItems: function(dataSource) {\r\n var groupsCount;\r\n var items = [];\r\n var getFirstItemsCore = function getFirstItemsCore(items, groupsCount) {\r\n if (!items || !groupsCount) {\r\n return items\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n var childItems = getFirstItemsCore(items[i].items || items[i].collapsedItems, groupsCount - 1);\r\n if (childItems && childItems.length) {\r\n return childItems\r\n }\r\n }\r\n };\r\n if (dataSource && dataSource.items().length > 0) {\r\n groupsCount = _uiGrid_core2.default.normalizeSortingInfo(dataSource.group()).length;\r\n items = getFirstItemsCore(dataSource.items(), groupsCount) || []\r\n }\r\n return items\r\n },\r\n _endUpdateCore: function() {\r\n !this._skipProcessingColumnsChange && fireColumnsChanged(this)\r\n },\r\n init: function() {\r\n var that = this;\r\n var columns = that.option(\"columns\");\r\n that._commandColumns = that._commandColumns || [];\r\n that._columns = that._columns || [];\r\n that._isColumnsFromOptions = !!columns;\r\n if (that._isColumnsFromOptions) {\r\n assignColumns(that, columns ? createColumnsFromOptions(that, columns) : []);\r\n applyUserState(that)\r\n } else {\r\n assignColumns(that, that._columnsUserState ? createColumnsFromOptions(that, that._columnsUserState) : that._columns)\r\n }\r\n addExpandColumn(that);\r\n if (that._dataSourceApplied) {\r\n that.applyDataSource(that._dataSource, true)\r\n } else {\r\n updateIndexes(that)\r\n }\r\n that._checkColumns()\r\n },\r\n callbackNames: function() {\r\n return [\"columnsChanged\"]\r\n },\r\n getColumnByPath: function(path, columns) {\r\n var that = this;\r\n var column;\r\n var columnIndexes = [];\r\n path.replace(regExp, function(_, columnIndex) {\r\n columnIndexes.push(parseInt(columnIndex));\r\n return \"\"\r\n });\r\n if (columnIndexes.length) {\r\n if (columns) {\r\n column = columnIndexes.reduce(function(column, index) {\r\n return column && column.columns && column.columns[index]\r\n }, {\r\n columns: columns\r\n })\r\n } else {\r\n column = getColumnByIndexes(that, columnIndexes)\r\n }\r\n }\r\n return column\r\n },\r\n optionChanged: function(args) {\r\n var needUpdateRequireResize;\r\n switch (args.name) {\r\n case \"adaptColumnWidthByRatio\":\r\n args.handled = true;\r\n break;\r\n case \"dataSource\":\r\n if (args.value !== args.previousValue && !this.option(\"columns\") && (!Array.isArray(args.value) || !Array.isArray(args.previousValue))) {\r\n this._columns = []\r\n }\r\n break;\r\n case \"columns\":\r\n needUpdateRequireResize = this._skipProcessingColumnsChange;\r\n args.handled = true;\r\n if (!this._skipProcessingColumnsChange) {\r\n if (args.name === args.fullName) {\r\n this._columnsUserState = null;\r\n this._ignoreColumnOptionNames = null;\r\n this.init()\r\n } else {\r\n this._columnOptionChanged(args);\r\n needUpdateRequireResize = true\r\n }\r\n }\r\n if (needUpdateRequireResize) {\r\n this._updateRequireResize(args)\r\n }\r\n break;\r\n case \"commonColumnSettings\":\r\n case \"columnAutoWidth\":\r\n case \"allowColumnResizing\":\r\n case \"allowColumnReordering\":\r\n case \"columnFixing\":\r\n case \"grouping\":\r\n case \"groupPanel\":\r\n case \"regenerateColumnsByVisibleItems\":\r\n case \"customizeColumns\":\r\n case \"editing\":\r\n case \"columnHidingEnabled\":\r\n case \"dateSerializationFormat\":\r\n case \"columnResizingMode\":\r\n case \"columnMinWidth\":\r\n case \"columnWidth\":\r\n var _args$fullName, _args$fullName2, _args$fullName3, _args$fullName4, _args$fullName5;\r\n args.handled = true;\r\n var ignoreColumnOptionNames = \"columnWidth\" === args.fullName && [\"width\"];\r\n var isEditingPopup = 0 === (null === (_args$fullName = args.fullName) || void 0 === _args$fullName ? void 0 : _args$fullName.indexOf(\"editing.popup\"));\r\n var isEditingForm = 0 === (null === (_args$fullName2 = args.fullName) || void 0 === _args$fullName2 ? void 0 : _args$fullName2.indexOf(\"editing.form\"));\r\n var isEditRowKey = 0 === (null === (_args$fullName3 = args.fullName) || void 0 === _args$fullName3 ? void 0 : _args$fullName3.indexOf(\"editing.editRowKey\"));\r\n var isEditColumnName = 0 === (null === (_args$fullName4 = args.fullName) || void 0 === _args$fullName4 ? void 0 : _args$fullName4.indexOf(\"editing.editColumnName\"));\r\n var isChanges = 0 === (null === (_args$fullName5 = args.fullName) || void 0 === _args$fullName5 ? void 0 : _args$fullName5.indexOf(\"editing.changes\"));\r\n var needReinit = !isEditingPopup && !isEditingForm && !isEditRowKey && !isChanges && !isEditColumnName;\r\n if (needReinit) {\r\n this.reinit(ignoreColumnOptionNames)\r\n }\r\n break;\r\n case \"rtlEnabled\":\r\n this.reinit();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _columnOptionChanged: function(args) {\r\n var columnOptionValue = {};\r\n var column = this.getColumnByPath(args.fullName);\r\n var columnOptionName = args.fullName.replace(regExp, \"\");\r\n if (column) {\r\n if (columnOptionName) {\r\n columnOptionValue[columnOptionName] = args.value\r\n } else {\r\n columnOptionValue = args.value\r\n }\r\n this._skipProcessingColumnsChange = args.fullName;\r\n this.columnOption(column.index, columnOptionValue);\r\n this._skipProcessingColumnsChange = false\r\n }\r\n },\r\n _updateRequireResize: function(args) {\r\n var component = this.component;\r\n if (\"width\" === args.fullName.replace(regExp, \"\") && component._updateLockCount) {\r\n component._requireResize = true\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"addColumn\", \"deleteColumn\", \"columnOption\", \"columnCount\", \"clearSorting\", \"clearGrouping\", \"getVisibleColumns\", \"getVisibleColumnIndex\"]\r\n },\r\n applyDataSource: function(dataSource, forceApplying) {\r\n var that = this;\r\n var isDataSourceLoaded = dataSource && dataSource.isLoaded();\r\n that._dataSource = dataSource;\r\n if (!that._dataSourceApplied || 0 === that._dataSourceColumnsCount || forceApplying || that.option(\"regenerateColumnsByVisibleItems\")) {\r\n if (isDataSourceLoaded) {\r\n if (!that._isColumnsFromOptions) {\r\n var columnsFromDataSource = createColumnsFromDataSource(that, dataSource);\r\n if (columnsFromDataSource.length) {\r\n assignColumns(that, columnsFromDataSource);\r\n that._dataSourceColumnsCount = that._columns.length;\r\n applyUserState(that)\r\n }\r\n }\r\n return that.updateColumns(dataSource, forceApplying)\r\n } else {\r\n that._dataSourceApplied = false\r\n }\r\n } else {\r\n if (isDataSourceLoaded && !that.isAllDataTypesDefined(true) && that.updateColumnDataTypes(dataSource)) {\r\n updateColumnChanges(that, \"columns\");\r\n fireColumnsChanged(that);\r\n return (new _deferred.Deferred).reject().promise()\r\n }\r\n }\r\n },\r\n reset: function() {\r\n this._dataSourceApplied = false;\r\n this._dataSourceColumnsCount = void 0;\r\n this.reinit()\r\n },\r\n resetColumnsCache: function() {\r\n var that = this;\r\n that._visibleColumns = void 0;\r\n that._fixedColumns = void 0;\r\n that._rowCount = void 0;\r\n resetBandColumnsCache(that)\r\n },\r\n reinit: function(ignoreColumnOptionNames) {\r\n this._columnsUserState = this.getUserState();\r\n this._ignoreColumnOptionNames = ignoreColumnOptionNames || null;\r\n this.init();\r\n if (ignoreColumnOptionNames) {\r\n this._ignoreColumnOptionNames = null\r\n }\r\n },\r\n isInitialized: function() {\r\n return !!this._columns.length || !!this.option(\"columns\")\r\n },\r\n isDataSourceApplied: function() {\r\n return this._dataSourceApplied\r\n },\r\n getCommonSettings: function(column) {\r\n var commonColumnSettings = (!column || !column.type) && this.option(\"commonColumnSettings\") || {};\r\n var groupingOptions = this.option(\"grouping\") || {};\r\n var groupPanelOptions = this.option(\"groupPanel\") || {};\r\n return (0, _extend.extend)({\r\n allowFixing: this.option(\"columnFixing.enabled\"),\r\n allowResizing: this.option(\"allowColumnResizing\") || void 0,\r\n allowReordering: this.option(\"allowColumnReordering\"),\r\n minWidth: this.option(\"columnMinWidth\"),\r\n width: this.option(\"columnWidth\"),\r\n autoExpandGroup: groupingOptions.autoExpandAll,\r\n allowCollapsing: groupingOptions.allowCollapsing,\r\n allowGrouping: groupPanelOptions.allowColumnDragging && groupPanelOptions.visible || groupingOptions.contextMenuEnabled\r\n }, commonColumnSettings)\r\n },\r\n isColumnOptionUsed: function(optionName) {\r\n for (var i = 0; i < this._columns.length; i++) {\r\n if (this._columns[i][optionName]) {\r\n return true\r\n }\r\n }\r\n },\r\n isAllDataTypesDefined: function(checkSerializers) {\r\n var columns = this._columns;\r\n if (!columns.length) {\r\n return false\r\n }\r\n for (var i = 0; i < columns.length; i++) {\r\n if (!columns[i].dataField && columns[i].calculateCellValue === columns[i].defaultCalculateCellValue) {\r\n continue\r\n }\r\n if (!columns[i].dataType || checkSerializers && columns[i].deserializeValue && void 0 === columns[i].serializationFormat) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n getColumns: function() {\r\n return this._columns\r\n },\r\n isBandColumnsUsed: function() {\r\n return this.getColumns().some(function(column) {\r\n return column.isBand\r\n })\r\n },\r\n getGroupColumns: function() {\r\n var result = [];\r\n (0, _iterator.each)(this._columns, function() {\r\n var column = this;\r\n if ((0, _type.isDefined)(column.groupIndex)) {\r\n result[column.groupIndex] = column\r\n }\r\n });\r\n return result\r\n },\r\n getVisibleColumns: function(rowIndex) {\r\n this._visibleColumns = this._visibleColumns || this._getVisibleColumnsCore();\r\n rowIndex = (0, _type.isDefined)(rowIndex) ? rowIndex : this._visibleColumns.length - 1;\r\n return this._visibleColumns[rowIndex] || []\r\n },\r\n getFixedColumns: function(rowIndex) {\r\n this._fixedColumns = this._fixedColumns || this._getFixedColumnsCore();\r\n rowIndex = (0, _type.isDefined)(rowIndex) ? rowIndex : this._fixedColumns.length - 1;\r\n return this._fixedColumns[rowIndex] || []\r\n },\r\n getFilteringColumns: function() {\r\n return this.getColumns().filter(function(item) {\r\n return (item.dataField || item.name) && (item.allowFiltering || item.allowHeaderFiltering)\r\n }).map(function(item) {\r\n var field = (0, _extend.extend)(true, {}, item);\r\n if (!(0, _type.isDefined)(field.dataField)) {\r\n field.dataField = field.name\r\n }\r\n field.filterOperations = item.filterOperations !== item.defaultFilterOperations ? field.filterOperations : null;\r\n return field\r\n })\r\n },\r\n getColumnIndexOffset: function() {\r\n return 0\r\n },\r\n _getFixedColumnsCore: function() {\r\n var that = this;\r\n var result = [];\r\n var rowCount = that.getRowCount();\r\n var isColumnFixing = that._isColumnFixing();\r\n var transparentColumn = {\r\n command: \"transparent\"\r\n };\r\n var transparentColspan = 0;\r\n var notFixedColumnCount;\r\n var transparentColumnIndex;\r\n var lastFixedPosition;\r\n if (isColumnFixing) {\r\n for (var i = 0; i <= rowCount; i++) {\r\n notFixedColumnCount = 0;\r\n lastFixedPosition = null;\r\n transparentColumnIndex = null;\r\n var visibleColumns = that.getVisibleColumns(i, true);\r\n for (var j = 0; j < visibleColumns.length; j++) {\r\n var prevColumn = visibleColumns[j - 1];\r\n var column = visibleColumns[j];\r\n if (!column.fixed) {\r\n if (0 === i) {\r\n if (column.isBand && column.colspan) {\r\n transparentColspan += column.colspan\r\n } else {\r\n transparentColspan++\r\n }\r\n }\r\n notFixedColumnCount++;\r\n if (!(0, _type.isDefined)(transparentColumnIndex)) {\r\n transparentColumnIndex = j\r\n }\r\n } else {\r\n if (prevColumn && prevColumn.fixed && getFixedPosition(that, prevColumn) !== getFixedPosition(that, column)) {\r\n if (!(0, _type.isDefined)(transparentColumnIndex)) {\r\n transparentColumnIndex = j\r\n }\r\n } else {\r\n lastFixedPosition = column.fixedPosition\r\n }\r\n }\r\n }\r\n if (0 === i && (0 === notFixedColumnCount || notFixedColumnCount >= visibleColumns.length)) {\r\n return []\r\n }\r\n if (!(0, _type.isDefined)(transparentColumnIndex)) {\r\n transparentColumnIndex = \"right\" === lastFixedPosition ? 0 : visibleColumns.length\r\n }\r\n result[i] = visibleColumns.slice(0);\r\n if (!transparentColumn.colspan) {\r\n transparentColumn.colspan = transparentColspan\r\n }\r\n result[i].splice(transparentColumnIndex, notFixedColumnCount, transparentColumn)\r\n }\r\n }\r\n return result.map(function(columns) {\r\n return columns.map(function(column) {\r\n var newColumn = _objectSpread({}, column);\r\n if (newColumn.headerId) {\r\n newColumn.headerId += \"-fixed\"\r\n }\r\n return newColumn\r\n })\r\n })\r\n },\r\n _isColumnFixing: function() {\r\n var isColumnFixing = this.option(\"columnFixing.enabled\");\r\n !isColumnFixing && (0, _iterator.each)(this._columns, function(_, column) {\r\n if (column.fixed) {\r\n isColumnFixing = true;\r\n return false\r\n }\r\n });\r\n return isColumnFixing\r\n },\r\n _getExpandColumnsCore: function() {\r\n return this.getGroupColumns()\r\n },\r\n getExpandColumns: function() {\r\n var expandColumns = this._getExpandColumnsCore();\r\n var expandColumn;\r\n var firstGroupColumn = expandColumns.filter(function(column) {\r\n return 0 === column.groupIndex\r\n })[0];\r\n var isFixedFirstGroupColumn = firstGroupColumn && firstGroupColumn.fixed;\r\n var isColumnFixing = this._isColumnFixing();\r\n if (expandColumns.length) {\r\n expandColumn = this.columnOption(\"command:expand\")\r\n }\r\n expandColumns = (0, _iterator.map)(expandColumns, function(column) {\r\n return (0, _extend.extend)({}, column, {\r\n visibleWidth: null,\r\n minWidth: null,\r\n cellTemplate: !(0, _type.isDefined)(column.groupIndex) ? column.cellTemplate : null,\r\n headerCellTemplate: null,\r\n fixed: !(0, _type.isDefined)(column.groupIndex) || !isFixedFirstGroupColumn ? isColumnFixing : true\r\n }, expandColumn, {\r\n index: column.index,\r\n type: column.type || GROUP_COMMAND_COLUMN_NAME\r\n })\r\n });\r\n return expandColumns\r\n },\r\n getBandColumnsCache: function() {\r\n if (!this._bandColumnsCache) {\r\n var columns = this._columns;\r\n var columnChildrenByIndex = {};\r\n var columnParentByIndex = {};\r\n var isPlain = true;\r\n columns.forEach(function(column) {\r\n var parentIndex = column.ownerBand;\r\n var parent = columns[parentIndex];\r\n if (column.hasColumns) {\r\n isPlain = false\r\n }\r\n if (column.colspan) {\r\n column.colspan = void 0\r\n }\r\n if (column.rowspan) {\r\n column.rowspan = void 0\r\n }\r\n if (parent) {\r\n columnParentByIndex[column.index] = parent\r\n } else {\r\n parentIndex = -1\r\n }\r\n columnChildrenByIndex[parentIndex] = columnChildrenByIndex[parentIndex] || [];\r\n columnChildrenByIndex[parentIndex].push(column)\r\n });\r\n this._bandColumnsCache = {\r\n isPlain: isPlain,\r\n columnChildrenByIndex: columnChildrenByIndex,\r\n columnParentByIndex: columnParentByIndex\r\n }\r\n }\r\n return this._bandColumnsCache\r\n },\r\n _isColumnVisible: function(column) {\r\n return column.visible && this.isParentColumnVisible(column.index)\r\n },\r\n _getVisibleColumnsCore: function() {\r\n var that = this;\r\n var i;\r\n var result = [];\r\n var rowspanGroupColumns = 0;\r\n var rowspanExpandColumns = 0;\r\n var rowCount = that.getRowCount();\r\n var positiveIndexedColumns = [];\r\n var negativeIndexedColumns = [];\r\n var notGroupedColumnsCount = 0;\r\n var isFixedToEnd;\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var expandColumns = mergeColumns(that, that.getExpandColumns(), that._columns);\r\n var columns = mergeColumns(that, that._columns, that._commandColumns, true);\r\n var columnDigitsCount = digitsCount(columns.length);\r\n processBandColumns(that, columns, bandColumnsCache);\r\n for (i = 0; i < rowCount; i++) {\r\n result[i] = [];\r\n negativeIndexedColumns[i] = [{}];\r\n positiveIndexedColumns[i] = [{}, {}, {}]\r\n }(0, _iterator.each)(columns, function() {\r\n var column = this;\r\n var visibleIndex = column.visibleIndex;\r\n var indexedColumns;\r\n var parentBandColumns = getParentBandColumns(column.index, bandColumnsCache.columnParentByIndex);\r\n var visible = that._isColumnVisible(column);\r\n if (visible && (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped)) {\r\n var rowIndex = parentBandColumns.length;\r\n if (visibleIndex < 0) {\r\n visibleIndex = -visibleIndex;\r\n indexedColumns = negativeIndexedColumns[rowIndex]\r\n } else {\r\n column.fixed = parentBandColumns.length ? parentBandColumns[0].fixed : column.fixed;\r\n column.fixedPosition = parentBandColumns.length ? parentBandColumns[0].fixedPosition : column.fixedPosition;\r\n if (column.fixed) {\r\n isFixedToEnd = \"right\" === column.fixedPosition;\r\n if (rtlEnabled && (!column.command || isCustomCommandColumn(that, column))) {\r\n isFixedToEnd = !isFixedToEnd\r\n }\r\n if (isFixedToEnd) {\r\n indexedColumns = positiveIndexedColumns[rowIndex][2]\r\n } else {\r\n indexedColumns = positiveIndexedColumns[rowIndex][0]\r\n }\r\n } else {\r\n indexedColumns = positiveIndexedColumns[rowIndex][1]\r\n }\r\n }\r\n if (parentBandColumns.length) {\r\n visibleIndex = numberToString(visibleIndex, columnDigitsCount);\r\n for (i = parentBandColumns.length - 1; i >= 0; i--) {\r\n visibleIndex = numberToString(parentBandColumns[i].visibleIndex, columnDigitsCount) + visibleIndex\r\n }\r\n }\r\n indexedColumns[visibleIndex] = indexedColumns[visibleIndex] || [];\r\n indexedColumns[visibleIndex].push(column);\r\n notGroupedColumnsCount++\r\n }\r\n });\r\n (0, _iterator.each)(result, function(rowIndex) {\r\n (0, _object.orderEach)(negativeIndexedColumns[rowIndex], function(_, columns) {\r\n result[rowIndex].unshift.apply(result[rowIndex], columns)\r\n });\r\n var firstPositiveIndexColumn = result[rowIndex].length;\r\n (0, _iterator.each)(positiveIndexedColumns[rowIndex], function(index, columnsByFixing) {\r\n (0, _object.orderEach)(columnsByFixing, function(_, columnsByVisibleIndex) {\r\n result[rowIndex].push.apply(result[rowIndex], columnsByVisibleIndex)\r\n })\r\n });\r\n if (rowspanExpandColumns < rowIndex + 1) {\r\n rowspanExpandColumns += processExpandColumns.call(that, result[rowIndex], expandColumns, \"detailExpand\", firstPositiveIndexColumn)\r\n }\r\n if (rowspanGroupColumns < rowIndex + 1) {\r\n rowspanGroupColumns += processExpandColumns.call(that, result[rowIndex], expandColumns, GROUP_COMMAND_COLUMN_NAME, firstPositiveIndexColumn)\r\n }\r\n });\r\n result.push(getDataColumns(result));\r\n if (!notGroupedColumnsCount && that._columns.length) {\r\n result[rowCount].push({\r\n command: \"empty\"\r\n })\r\n }\r\n return result\r\n },\r\n getInvisibleColumns: function(columns, bandColumnIndex) {\r\n var that = this;\r\n var result = [];\r\n var hiddenColumnsByBand;\r\n columns = columns || that._columns;\r\n (0, _iterator.each)(columns, function(_, column) {\r\n if (column.ownerBand !== bandColumnIndex) {\r\n return\r\n }\r\n if (column.isBand) {\r\n if (!column.visible) {\r\n hiddenColumnsByBand = that.getChildrenByBandColumn(column.index)\r\n } else {\r\n hiddenColumnsByBand = that.getInvisibleColumns(that.getChildrenByBandColumn(column.index), column.index)\r\n }\r\n if (hiddenColumnsByBand.length) {\r\n result.push(column);\r\n result = result.concat(hiddenColumnsByBand)\r\n }\r\n return\r\n }\r\n if (!column.visible) {\r\n result.push(column)\r\n }\r\n });\r\n return result\r\n },\r\n getChooserColumns: function(getAllColumns) {\r\n var columns = getAllColumns ? this.getColumns() : this.getInvisibleColumns();\r\n return (0, _common.grep)(columns, function(column) {\r\n return column.showInColumnChooser\r\n })\r\n },\r\n allowMoveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {\r\n var that = this;\r\n var columnIndex = getColumnIndexByVisibleIndex(that, fromVisibleIndex, sourceLocation);\r\n var sourceColumn = that._columns[columnIndex];\r\n if (sourceColumn && (sourceColumn.allowReordering || sourceColumn.allowGrouping || sourceColumn.allowHiding)) {\r\n if (sourceLocation === targetLocation) {\r\n if (sourceLocation === COLUMN_CHOOSER_LOCATION) {\r\n return false\r\n }\r\n fromVisibleIndex = (0, _type.isObject)(fromVisibleIndex) ? fromVisibleIndex.columnIndex : fromVisibleIndex;\r\n toVisibleIndex = (0, _type.isObject)(toVisibleIndex) ? toVisibleIndex.columnIndex : toVisibleIndex;\r\n return fromVisibleIndex !== toVisibleIndex && fromVisibleIndex + 1 !== toVisibleIndex\r\n } else {\r\n if (sourceLocation === GROUP_LOCATION && targetLocation !== COLUMN_CHOOSER_LOCATION || targetLocation === GROUP_LOCATION) {\r\n return sourceColumn && sourceColumn.allowGrouping\r\n } else {\r\n if (sourceLocation === COLUMN_CHOOSER_LOCATION || targetLocation === COLUMN_CHOOSER_LOCATION) {\r\n return sourceColumn && sourceColumn.allowHiding\r\n }\r\n }\r\n }\r\n return true\r\n }\r\n return false\r\n },\r\n moveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {\r\n var that = this;\r\n var options = {};\r\n var prevGroupIndex;\r\n var fromIndex = getColumnIndexByVisibleIndex(that, fromVisibleIndex, sourceLocation);\r\n var toIndex = getColumnIndexByVisibleIndex(that, toVisibleIndex, targetLocation);\r\n var targetGroupIndex;\r\n if (fromIndex >= 0) {\r\n var column = that._columns[fromIndex];\r\n toVisibleIndex = (0, _type.isObject)(toVisibleIndex) ? toVisibleIndex.columnIndex : toVisibleIndex;\r\n targetGroupIndex = toIndex >= 0 ? that._columns[toIndex].groupIndex : -1;\r\n if ((0, _type.isDefined)(column.groupIndex) && sourceLocation === GROUP_LOCATION) {\r\n if (targetGroupIndex > column.groupIndex) {\r\n targetGroupIndex--\r\n }\r\n if (targetLocation !== GROUP_LOCATION) {\r\n options.groupIndex = void 0\r\n } else {\r\n prevGroupIndex = column.groupIndex;\r\n delete column.groupIndex;\r\n updateColumnGroupIndexes(that)\r\n }\r\n }\r\n if (targetLocation === GROUP_LOCATION) {\r\n options.groupIndex = moveColumnToGroup(that, column, targetGroupIndex);\r\n column.groupIndex = prevGroupIndex\r\n } else {\r\n if (toVisibleIndex >= 0) {\r\n var targetColumn = that._columns[toIndex];\r\n if (!targetColumn || column.ownerBand !== targetColumn.ownerBand) {\r\n options.visibleIndex = MAX_SAFE_INTEGER\r\n } else {\r\n if (isColumnFixed(that, column) ^ isColumnFixed(that, targetColumn)) {\r\n options.visibleIndex = MAX_SAFE_INTEGER\r\n } else {\r\n options.visibleIndex = targetColumn.visibleIndex\r\n }\r\n }\r\n }\r\n }\r\n var isVisible = targetLocation !== COLUMN_CHOOSER_LOCATION;\r\n if (column.visible !== isVisible) {\r\n options.visible = isVisible\r\n }\r\n that.columnOption(column.index, options)\r\n }\r\n },\r\n changeSortOrder: function(columnIndex, sortOrder) {\r\n var that = this;\r\n var options = {};\r\n var sortingOptions = that.option(\"sorting\");\r\n var sortingMode = sortingOptions && sortingOptions.mode;\r\n var needResetSorting = \"single\" === sortingMode || !sortOrder;\r\n var allowSorting = \"single\" === sortingMode || \"multiple\" === sortingMode;\r\n var column = that._columns[columnIndex];\r\n var nextSortOrder = function(column) {\r\n if (\"ctrl\" === sortOrder) {\r\n if (!(\"sortOrder\" in column && \"sortIndex\" in column)) {\r\n return false\r\n }\r\n options.sortOrder = void 0;\r\n options.sortIndex = void 0\r\n } else {\r\n if ((0, _type.isDefined)(column.groupIndex) || (0, _type.isDefined)(column.sortIndex)) {\r\n options.sortOrder = \"desc\" === column.sortOrder ? \"asc\" : \"desc\"\r\n } else {\r\n options.sortOrder = \"asc\"\r\n }\r\n }\r\n return true\r\n };\r\n if (allowSorting && column && column.allowSorting) {\r\n if (needResetSorting && !(0, _type.isDefined)(column.groupIndex)) {\r\n (0, _iterator.each)(that._columns, function(index) {\r\n if (index !== columnIndex && this.sortOrder) {\r\n if (!(0, _type.isDefined)(this.groupIndex)) {\r\n delete this.sortOrder\r\n }\r\n delete this.sortIndex\r\n }\r\n })\r\n }\r\n if (isSortOrderValid(sortOrder)) {\r\n if (column.sortOrder !== sortOrder) {\r\n options.sortOrder = sortOrder\r\n }\r\n } else {\r\n if (\"none\" === sortOrder) {\r\n if (column.sortOrder) {\r\n options.sortIndex = void 0;\r\n options.sortOrder = void 0\r\n }\r\n } else {\r\n nextSortOrder(column)\r\n }\r\n }\r\n }\r\n that.columnOption(column.index, options)\r\n },\r\n getSortDataSourceParameters: function(useLocalSelector) {\r\n var that = this;\r\n var sortColumns = [];\r\n var sort = [];\r\n (0, _iterator.each)(that._columns, function() {\r\n if ((this.dataField || this.selector || this.calculateCellValue) && (0, _type.isDefined)(this.sortIndex) && !(0, _type.isDefined)(this.groupIndex)) {\r\n sortColumns[this.sortIndex] = this\r\n }\r\n });\r\n (0, _iterator.each)(sortColumns, function() {\r\n var sortOrder = this && this.sortOrder;\r\n if (isSortOrderValid(sortOrder)) {\r\n var sortItem = {\r\n selector: this.calculateSortValue || this.displayField || this.calculateDisplayValue || useLocalSelector && this.selector || this.dataField || this.calculateCellValue,\r\n desc: \"desc\" === this.sortOrder\r\n };\r\n if (this.sortingMethod) {\r\n sortItem.compare = this.sortingMethod.bind(this)\r\n }\r\n sort.push(sortItem)\r\n }\r\n });\r\n return sort.length > 0 ? sort : null\r\n },\r\n getGroupDataSourceParameters: function(useLocalSelector) {\r\n var group = [];\r\n (0, _iterator.each)(this.getGroupColumns(), function() {\r\n var selector = this.calculateGroupValue || this.displayField || this.calculateDisplayValue || useLocalSelector && this.selector || this.dataField || this.calculateCellValue;\r\n if (selector) {\r\n var groupItem = {\r\n selector: selector,\r\n desc: \"desc\" === this.sortOrder,\r\n isExpanded: !!this.autoExpandGroup\r\n };\r\n if (this.sortingMethod) {\r\n groupItem.compare = this.sortingMethod.bind(this)\r\n }\r\n group.push(groupItem)\r\n }\r\n });\r\n return group.length > 0 ? group : null\r\n },\r\n refresh: function(updateNewLookupsOnly) {\r\n var deferreds = [];\r\n (0, _iterator.each)(this._columns, function() {\r\n var lookup = this.lookup;\r\n if (lookup && !this.calculateDisplayValue) {\r\n if (updateNewLookupsOnly && lookup.valueMap) {\r\n return\r\n }\r\n if (lookup.update) {\r\n deferreds.push(lookup.update())\r\n }\r\n }\r\n });\r\n return _deferred.when.apply(_renderer.default, deferreds).done(resetColumnsCache.bind(null, this))\r\n },\r\n _updateColumnOptions: function(column, columnIndex) {\r\n column.selector = column.selector || function(data) {\r\n return column.calculateCellValue(data)\r\n };\r\n (0, _iterator.each)([\"calculateSortValue\", \"calculateGroupValue\", \"calculateDisplayValue\"], function(_, calculateCallbackName) {\r\n var calculateCallback = column[calculateCallbackName];\r\n if ((0, _type.isFunction)(calculateCallback) && !calculateCallback.originalCallback) {\r\n column[calculateCallbackName] = function(data) {\r\n return calculateCallback.call(column, data)\r\n };\r\n column[calculateCallbackName].originalCallback = calculateCallback;\r\n column[calculateCallbackName].columnIndex = columnIndex\r\n }\r\n });\r\n if ((0, _type.isString)(column.calculateDisplayValue)) {\r\n column.displayField = column.calculateDisplayValue;\r\n column.calculateDisplayValue = (0, _data.compileGetter)(column.displayField)\r\n }\r\n if (column.calculateDisplayValue) {\r\n column.displayValueMap = column.displayValueMap || {}\r\n }\r\n updateSerializers(column, column.dataType);\r\n var lookup = column.lookup;\r\n if (lookup) {\r\n updateSerializers(lookup, lookup.dataType)\r\n }\r\n var dataType = lookup ? lookup.dataType : column.dataType;\r\n if (dataType) {\r\n column.alignment = column.alignment || getAlignmentByDataType(dataType, this.option(\"rtlEnabled\"));\r\n column.format = column.format || _uiGrid_core2.default.getFormatByDataType(dataType);\r\n column.customizeText = column.customizeText || getCustomizeTextByDataType(dataType);\r\n column.defaultFilterOperations = column.defaultFilterOperations || !lookup && DATATYPE_OPERATIONS[dataType] || [];\r\n if (!(0, _type.isDefined)(column.filterOperations)) {\r\n setFilterOperationsAsDefaultValues(column)\r\n }\r\n column.defaultFilterOperation = column.filterOperations && column.filterOperations[0] || \"=\";\r\n column.showEditorAlways = (0, _type.isDefined)(column.showEditorAlways) ? column.showEditorAlways : \"boolean\" === dataType && !column.cellTemplate\r\n }\r\n },\r\n updateColumnDataTypes: function(dataSource) {\r\n var that = this;\r\n var dateSerializationFormat = that.option(\"dateSerializationFormat\");\r\n var firstItems = that._getFirstItems(dataSource);\r\n var isColumnDataTypesUpdated = false;\r\n (0, _iterator.each)(that._columns, function(index, column) {\r\n var i;\r\n var value;\r\n var dataType;\r\n var lookupDataType;\r\n var valueDataType;\r\n var lookup = column.lookup;\r\n if (_uiGrid_core2.default.isDateType(column.dataType) && void 0 === column.serializationFormat) {\r\n column.serializationFormat = dateSerializationFormat\r\n }\r\n if (lookup && _uiGrid_core2.default.isDateType(lookup.dataType) && void 0 === column.serializationFormat) {\r\n lookup.serializationFormat = dateSerializationFormat\r\n }\r\n if (column.calculateCellValue && firstItems.length) {\r\n if (!column.dataType || lookup && !lookup.dataType) {\r\n for (i = 0; i < firstItems.length; i++) {\r\n value = column.calculateCellValue(firstItems[i]);\r\n if (!column.dataType) {\r\n valueDataType = getValueDataType(value);\r\n dataType = dataType || valueDataType;\r\n if (dataType && valueDataType && dataType !== valueDataType) {\r\n dataType = \"string\"\r\n }\r\n }\r\n if (lookup && !lookup.dataType) {\r\n valueDataType = getValueDataType(_uiGrid_core2.default.getDisplayValue(column, value, firstItems[i]));\r\n lookupDataType = lookupDataType || valueDataType;\r\n if (lookupDataType && valueDataType && lookupDataType !== valueDataType) {\r\n lookupDataType = \"string\"\r\n }\r\n }\r\n }\r\n if (dataType || lookupDataType) {\r\n if (dataType) {\r\n column.dataType = dataType\r\n }\r\n if (lookup && lookupDataType) {\r\n lookup.dataType = lookupDataType\r\n }\r\n isColumnDataTypesUpdated = true\r\n }\r\n }\r\n if (void 0 === column.serializationFormat || lookup && void 0 === lookup.serializationFormat) {\r\n for (i = 0; i < firstItems.length; i++) {\r\n value = column.calculateCellValue(firstItems[i], true);\r\n if (void 0 === column.serializationFormat) {\r\n column.serializationFormat = getSerializationFormat(column.dataType, value)\r\n }\r\n if (lookup && void 0 === lookup.serializationFormat) {\r\n lookup.serializationFormat = getSerializationFormat(lookup.dataType, lookup.calculateCellValue(value, true))\r\n }\r\n }\r\n }\r\n }\r\n that._updateColumnOptions(column, index)\r\n });\r\n return isColumnDataTypesUpdated\r\n },\r\n _customizeColumns: function(columns) {\r\n var that = this;\r\n var customizeColumns = that.option(\"customizeColumns\");\r\n if (customizeColumns) {\r\n var hasOwnerBand = columns.some(function(column) {\r\n return (0, _type.isObject)(column.ownerBand)\r\n });\r\n if (hasOwnerBand) {\r\n updateIndexes(that)\r\n }\r\n customizeColumns(columns);\r\n assignColumns(that, createColumnsFromOptions(that, columns))\r\n }\r\n },\r\n updateColumns: function(dataSource, forceApplying) {\r\n var _this = this;\r\n if (!forceApplying) {\r\n this.updateSortingGrouping(dataSource)\r\n }\r\n if (!dataSource || dataSource.isLoaded()) {\r\n var sortParameters = dataSource ? dataSource.sort() || [] : this.getSortDataSourceParameters();\r\n var groupParameters = dataSource ? dataSource.group() || [] : this.getGroupDataSourceParameters();\r\n var filterParameters = null === dataSource || void 0 === dataSource ? void 0 : dataSource.lastLoadOptions().filter;\r\n this._customizeColumns(this._columns);\r\n updateIndexes(this);\r\n var columns = this._columns;\r\n return (0, _deferred.when)(this.refresh(true)).always(function() {\r\n if (_this._columns !== columns) {\r\n return\r\n }\r\n _this._updateChanges(dataSource, {\r\n sorting: sortParameters,\r\n grouping: groupParameters,\r\n filtering: filterParameters\r\n });\r\n fireColumnsChanged(_this)\r\n })\r\n }\r\n },\r\n _updateChanges: function(dataSource, parameters) {\r\n if (dataSource) {\r\n this.updateColumnDataTypes(dataSource);\r\n this._dataSourceApplied = true\r\n }\r\n if (!_uiGrid_core2.default.equalSortParameters(parameters.sorting, this.getSortDataSourceParameters())) {\r\n updateColumnChanges(this, \"sorting\")\r\n }\r\n if (!_uiGrid_core2.default.equalSortParameters(parameters.grouping, this.getGroupDataSourceParameters())) {\r\n updateColumnChanges(this, \"grouping\")\r\n }\r\n var dataController = this.getController(\"data\");\r\n if (dataController && !_uiGrid_core2.default.equalFilterParameters(parameters.filtering, dataController.getCombinedFilter())) {\r\n updateColumnChanges(this, \"filtering\")\r\n }\r\n updateColumnChanges(this, \"columns\")\r\n },\r\n updateSortingGrouping: function(dataSource, fromDataSource) {\r\n var that = this;\r\n var sortParameters;\r\n var isColumnsChanged;\r\n var updateSortGroupParameterIndexes = function(columns, sortParameters, indexParameterName) {\r\n (0, _iterator.each)(columns, function(index, column) {\r\n delete column[indexParameterName];\r\n if (sortParameters) {\r\n for (var i = 0; i < sortParameters.length; i++) {\r\n var selector = sortParameters[i].selector;\r\n var isExpanded = sortParameters[i].isExpanded;\r\n if (selector === column.dataField || selector === column.name || selector === column.selector || selector === column.calculateCellValue || selector === column.calculateGroupValue || selector === column.calculateDisplayValue) {\r\n column.sortOrder = column.sortOrder || (sortParameters[i].desc ? \"desc\" : \"asc\");\r\n if (void 0 !== isExpanded) {\r\n column.autoExpandGroup = isExpanded\r\n }\r\n column[indexParameterName] = i;\r\n break\r\n }\r\n }\r\n }\r\n })\r\n };\r\n if (dataSource) {\r\n sortParameters = _uiGrid_core2.default.normalizeSortingInfo(dataSource.sort());\r\n var groupParameters = _uiGrid_core2.default.normalizeSortingInfo(dataSource.group());\r\n var columnsGroupParameters = that.getGroupDataSourceParameters();\r\n var columnsSortParameters = that.getSortDataSourceParameters();\r\n if (!that._columns.length) {\r\n (0, _iterator.each)(groupParameters, function(index, group) {\r\n that._columns.push(group.selector)\r\n });\r\n (0, _iterator.each)(sortParameters, function(index, sort) {\r\n that._columns.push(sort.selector)\r\n });\r\n assignColumns(that, createColumnsFromOptions(that, that._columns))\r\n }\r\n if ((fromDataSource || !columnsGroupParameters && !that._hasUserState) && !_uiGrid_core2.default.equalSortParameters(groupParameters, columnsGroupParameters)) {\r\n updateSortGroupParameterIndexes(that._columns, groupParameters, \"groupIndex\");\r\n if (fromDataSource) {\r\n updateColumnChanges(that, \"grouping\");\r\n isColumnsChanged = true\r\n }\r\n }\r\n if ((fromDataSource || !columnsSortParameters && !that._hasUserState) && !_uiGrid_core2.default.equalSortParameters(sortParameters, columnsSortParameters)) {\r\n updateSortGroupParameterIndexes(that._columns, sortParameters, \"sortIndex\");\r\n if (fromDataSource) {\r\n updateColumnChanges(that, \"sorting\");\r\n isColumnsChanged = true\r\n }\r\n }\r\n if (isColumnsChanged) {\r\n fireColumnsChanged(that)\r\n }\r\n }\r\n },\r\n updateFilter: function(filter, remoteFiltering, columnIndex, filterValue) {\r\n var that = this;\r\n if (!Array.isArray(filter)) {\r\n return filter\r\n }\r\n filter = (0, _extend.extend)([], filter);\r\n columnIndex = void 0 !== filter.columnIndex ? filter.columnIndex : columnIndex;\r\n filterValue = void 0 !== filter.filterValue ? filter.filterValue : filterValue;\r\n if ((0, _type.isString)(filter[0]) && \"!\" !== filter[0]) {\r\n var column = that.columnOption(filter[0]);\r\n if (remoteFiltering) {\r\n if ((0, _config.default)().forceIsoDateParsing && column && column.serializeValue && filter.length > 1) {\r\n filter[filter.length - 1] = column.serializeValue(filter[filter.length - 1], \"filter\")\r\n }\r\n } else {\r\n if (column && column.selector) {\r\n filter[0] = column.selector;\r\n filter[0].columnIndex = column.index\r\n }\r\n }\r\n } else {\r\n if ((0, _type.isFunction)(filter[0])) {\r\n filter[0].columnIndex = columnIndex;\r\n filter[0].filterValue = filterValue\r\n }\r\n }\r\n for (var i = 0; i < filter.length; i++) {\r\n filter[i] = that.updateFilter(filter[i], remoteFiltering, columnIndex, filterValue)\r\n }\r\n return filter\r\n },\r\n columnCount: function() {\r\n return this._columns ? this._columns.length : 0\r\n },\r\n columnOption: function(identifier, option, value, notFireEvent) {\r\n var that = this;\r\n var columns = that._columns.concat(that._commandColumns);\r\n var column = findColumn(columns, identifier);\r\n if (column) {\r\n if (1 === arguments.length) {\r\n return (0, _extend.extend)({}, column)\r\n }\r\n if ((0, _type.isString)(option)) {\r\n if (2 === arguments.length) {\r\n return columnOptionCore(that, column, option)\r\n } else {\r\n columnOptionCore(that, column, option, value, notFireEvent)\r\n }\r\n } else {\r\n if ((0, _type.isObject)(option)) {\r\n (0, _iterator.each)(option, function(optionName, value) {\r\n columnOptionCore(that, column, optionName, value, notFireEvent)\r\n })\r\n }\r\n }\r\n fireColumnsChanged(that)\r\n }\r\n },\r\n clearSorting: function() {\r\n var that = this;\r\n var columnCount = this.columnCount();\r\n that.beginUpdate();\r\n for (var i = 0; i < columnCount; i++) {\r\n that.columnOption(i, \"sortOrder\", void 0)\r\n }\r\n that.endUpdate()\r\n },\r\n clearGrouping: function() {\r\n var that = this;\r\n var columnCount = this.columnCount();\r\n that.beginUpdate();\r\n for (var i = 0; i < columnCount; i++) {\r\n that.columnOption(i, \"groupIndex\", void 0)\r\n }\r\n that.endUpdate()\r\n },\r\n getVisibleIndex: function(index, rowIndex) {\r\n var columns = this.getVisibleColumns(rowIndex);\r\n for (var i = columns.length - 1; i >= 0; i--) {\r\n if (columns[i].index === index) {\r\n return i\r\n }\r\n }\r\n return -1\r\n },\r\n getVisibleColumnIndex: function(id, rowIndex) {\r\n var index = this.columnOption(id, \"index\");\r\n return this.getVisibleIndex(index, rowIndex)\r\n },\r\n addColumn: function(options) {\r\n var that = this;\r\n var column = createColumn(that, options);\r\n var index = that._columns.length;\r\n that._columns.push(column);\r\n if (column.isBand) {\r\n that._columns = createColumnsFromOptions(that, that._columns);\r\n column = that._columns[index]\r\n }\r\n column.added = options;\r\n updateIndexes(that, column);\r\n that.updateColumns(that._dataSource);\r\n that._checkColumns()\r\n },\r\n deleteColumn: function(id) {\r\n var that = this;\r\n var column = that.columnOption(id);\r\n if (column && column.index >= 0) {\r\n convertOwnerBandToColumnReference(that._columns);\r\n that._columns.splice(column.index, 1);\r\n if (column.isBand) {\r\n var childIndexes = that.getChildrenByBandColumn(column.index).map(function(column) {\r\n return column.index\r\n });\r\n that._columns = that._columns.filter(function(column) {\r\n return childIndexes.indexOf(column.index) < 0\r\n })\r\n }\r\n updateIndexes(that);\r\n that.updateColumns(that._dataSource)\r\n }\r\n },\r\n addCommandColumn: function(options) {\r\n var commandColumn = this._commandColumns.filter(function(column) {\r\n return column.command === options.command\r\n })[0];\r\n if (!commandColumn) {\r\n commandColumn = options;\r\n this._commandColumns.push(commandColumn)\r\n }\r\n },\r\n getUserState: function() {\r\n var columns = this._columns;\r\n var result = [];\r\n var i;\r\n\r\n function handleStateField(index, value) {\r\n if (void 0 !== columns[i][value]) {\r\n result[i][value] = columns[i][value]\r\n }\r\n }\r\n for (i = 0; i < columns.length; i++) {\r\n result[i] = {};\r\n (0, _iterator.each)(USER_STATE_FIELD_NAMES, handleStateField)\r\n }\r\n return result\r\n },\r\n setName: function(column) {\r\n var dataField = column.dataField;\r\n if (!(0, _type.isDefined)(column.name) && (0, _type.isDefined)(dataField)) {\r\n column.name = dataField\r\n }\r\n },\r\n setUserState: function(state) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var ignoreColumnOptionNames = that.option(\"stateStoring.ignoreColumnOptionNames\");\r\n null === state || void 0 === state ? void 0 : state.forEach(this.setName);\r\n if (!ignoreColumnOptionNames) {\r\n ignoreColumnOptionNames = [];\r\n var commonColumnSettings = that.getCommonSettings();\r\n if (!that.option(\"columnChooser.enabled\")) {\r\n ignoreColumnOptionNames.push(\"visible\")\r\n }\r\n if (\"none\" === that.option(\"sorting.mode\")) {\r\n ignoreColumnOptionNames.push(\"sortIndex\", \"sortOrder\")\r\n }\r\n if (!commonColumnSettings.allowGrouping) {\r\n ignoreColumnOptionNames.push(\"groupIndex\")\r\n }\r\n if (!commonColumnSettings.allowFixing) {\r\n ignoreColumnOptionNames.push(\"fixed\", \"fixedPosition\")\r\n }\r\n if (!commonColumnSettings.allowResizing) {\r\n ignoreColumnOptionNames.push(\"width\", \"visibleWidth\")\r\n }\r\n var isFilterPanelHidden = !that.option(\"filterPanel.visible\");\r\n if (!that.option(\"filterRow.visible\") && isFilterPanelHidden) {\r\n ignoreColumnOptionNames.push(\"filterValue\", \"selectedFilterOperation\")\r\n }\r\n if (!that.option(\"headerFilter.visible\") && isFilterPanelHidden) {\r\n ignoreColumnOptionNames.push(\"filterValues\", \"filterType\")\r\n }\r\n }\r\n that._columnsUserState = state;\r\n that._ignoreColumnOptionNames = ignoreColumnOptionNames;\r\n that._hasUserState = !!state;\r\n updateColumnChanges(that, \"filtering\");\r\n that.init();\r\n if (dataSource) {\r\n dataSource.sort(that.getSortDataSourceParameters());\r\n dataSource.group(that.getGroupDataSourceParameters())\r\n }\r\n },\r\n _checkColumns: function() {\r\n var usedNames = {};\r\n var hasEditableColumnWithoutName = false;\r\n var duplicatedNames = [];\r\n this._columns.forEach(function(column) {\r\n var _column$columns;\r\n var name = column.name;\r\n var isBand = null === (_column$columns = column.columns) || void 0 === _column$columns ? void 0 : _column$columns.length;\r\n var isEditable = column.allowEditing && (column.dataField || column.setCellValue) && !isBand;\r\n if (name) {\r\n if (usedNames[name]) {\r\n duplicatedNames.push('\"'.concat(name, '\"'))\r\n }\r\n usedNames[name] = true\r\n } else {\r\n if (isEditable) {\r\n hasEditableColumnWithoutName = true\r\n }\r\n }\r\n });\r\n if (duplicatedNames.length) {\r\n _ui.default.log(\"E1059\", duplicatedNames.join(\", \"))\r\n }\r\n if (hasEditableColumnWithoutName) {\r\n _ui.default.log(\"E1060\")\r\n }\r\n },\r\n _createCalculatedColumnOptions: function(columnOptions, bandColumn) {\r\n var calculatedColumnOptions = {};\r\n var dataField = columnOptions.dataField;\r\n if (Array.isArray(columnOptions.columns) && columnOptions.columns.length || columnOptions.isBand) {\r\n calculatedColumnOptions.isBand = true;\r\n dataField = null\r\n }\r\n if (dataField) {\r\n if ((0, _type.isString)(dataField)) {\r\n var getter = (0, _data.compileGetter)(dataField);\r\n calculatedColumnOptions = {\r\n caption: (0, _inflector.captionize)(dataField),\r\n calculateCellValue: function(data, skipDeserialization) {\r\n var value = getter(data);\r\n return this.deserializeValue && !skipDeserialization ? this.deserializeValue(value) : value\r\n },\r\n setCellValue: defaultSetCellValue,\r\n parseValue: function(text) {\r\n var column = this;\r\n var result;\r\n var parsedValue;\r\n if (\"number\" === column.dataType) {\r\n if ((0, _type.isString)(text) && column.format) {\r\n parsedValue = _number.default.parse(text);\r\n if ((0, _type.isNumeric)(parsedValue)) {\r\n result = parsedValue\r\n }\r\n } else {\r\n if ((0, _type.isDefined)(text) && (0, _type.isNumeric)(text)) {\r\n result = Number(text)\r\n }\r\n }\r\n } else {\r\n if (\"boolean\" === column.dataType) {\r\n if (text === column.trueText) {\r\n result = true\r\n } else {\r\n if (text === column.falseText) {\r\n result = false\r\n }\r\n }\r\n } else {\r\n if (_uiGrid_core2.default.isDateType(column.dataType)) {\r\n parsedValue = _date.default.parse(text, column.format);\r\n if (parsedValue) {\r\n result = parsedValue\r\n }\r\n } else {\r\n result = text\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n }\r\n }\r\n calculatedColumnOptions.allowFiltering = true\r\n } else {\r\n calculatedColumnOptions.allowFiltering = !!columnOptions.calculateFilterExpression\r\n }\r\n calculatedColumnOptions.calculateFilterExpression = function() {\r\n return _filtering.default.defaultCalculateFilterExpression.apply(this, arguments)\r\n };\r\n calculatedColumnOptions.createFilterExpression = function(filterValue) {\r\n var result;\r\n if (this.calculateFilterExpression) {\r\n result = this.calculateFilterExpression.apply(this, arguments)\r\n }\r\n if ((0, _type.isFunction)(result)) {\r\n result = [result, \"=\", true]\r\n }\r\n if (result) {\r\n result.columnIndex = this.index;\r\n result.filterValue = filterValue\r\n }\r\n return result\r\n };\r\n if (!dataField || !(0, _type.isString)(dataField)) {\r\n (0, _extend.extend)(true, calculatedColumnOptions, {\r\n allowSorting: false,\r\n allowGrouping: false,\r\n calculateCellValue: function() {\r\n return null\r\n }\r\n })\r\n }\r\n if (bandColumn) {\r\n calculatedColumnOptions.allowFixing = false\r\n }\r\n if (columnOptions.dataType) {\r\n calculatedColumnOptions.userDataType = columnOptions.dataType\r\n }\r\n if (columnOptions.selectedFilterOperation && !(\"defaultSelectedFilterOperation\" in calculatedColumnOptions)) {\r\n calculatedColumnOptions.defaultSelectedFilterOperation = columnOptions.selectedFilterOperation\r\n }\r\n if (columnOptions.lookup) {\r\n calculatedColumnOptions.lookup = {\r\n calculateCellValue: function(value, skipDeserialization) {\r\n if (this.valueExpr) {\r\n value = this.valueMap && this.valueMap[value]\r\n }\r\n return this.deserializeValue && !skipDeserialization ? this.deserializeValue(value) : value\r\n },\r\n updateValueMap: function() {\r\n this.valueMap = {};\r\n if (this.items) {\r\n var calculateValue = (0, _data.compileGetter)(this.valueExpr);\r\n var calculateDisplayValue = (0, _data.compileGetter)(this.displayExpr);\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n var displayValue = calculateDisplayValue(item);\r\n this.valueMap[calculateValue(item)] = displayValue;\r\n this.dataType = this.dataType || getValueDataType(displayValue)\r\n }\r\n }\r\n },\r\n update: function() {\r\n var that = this;\r\n var dataSource = that.dataSource;\r\n if (dataSource) {\r\n if ((0, _type.isFunction)(dataSource) && !_variable_wrapper.default.isWrapped(dataSource)) {\r\n dataSource = dataSource({})\r\n }\r\n if ((0, _type.isPlainObject)(dataSource) || dataSource instanceof _abstract_store.default || Array.isArray(dataSource)) {\r\n if (that.valueExpr) {\r\n var dataSourceOptions = (0, _utils.normalizeDataSourceOptions)(dataSource);\r\n dataSourceOptions.paginate = false;\r\n dataSource = new _data_source.DataSource(dataSourceOptions);\r\n return dataSource.load().done(function(data) {\r\n that.items = data;\r\n that.updateValueMap && that.updateValueMap()\r\n })\r\n }\r\n } else {\r\n _ui.default.log(\"E1016\")\r\n }\r\n } else {\r\n that.updateValueMap && that.updateValueMap()\r\n }\r\n }\r\n }\r\n }\r\n calculatedColumnOptions.resizedCallbacks = (0, _callbacks.default)();\r\n if (columnOptions.resized) {\r\n calculatedColumnOptions.resizedCallbacks.add(columnOptions.resized.bind(columnOptions))\r\n }(0, _iterator.each)(calculatedColumnOptions, function(optionName) {\r\n if ((0, _type.isFunction)(calculatedColumnOptions[optionName]) && 0 !== optionName.indexOf(\"default\")) {\r\n var defaultOptionName = \"default\" + optionName.charAt(0).toUpperCase() + optionName.substr(1);\r\n calculatedColumnOptions[defaultOptionName] = calculatedColumnOptions[optionName]\r\n }\r\n });\r\n return calculatedColumnOptions\r\n },\r\n getRowCount: function() {\r\n this._rowCount = this._rowCount || _getRowCount(this);\r\n return this._rowCount\r\n },\r\n getRowIndex: function(columnIndex, alwaysGetRowIndex) {\r\n var column = this._columns[columnIndex];\r\n var bandColumnsCache = this.getBandColumnsCache();\r\n return column && (alwaysGetRowIndex || column.visible && !(column.command || (0, _type.isDefined)(column.groupIndex))) ? getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex).length : 0\r\n },\r\n getChildrenByBandColumn: function(bandColumnIndex, onlyVisibleDirectChildren) {\r\n var that = this;\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var result = _getChildrenByBandColumn(bandColumnIndex, bandColumnsCache.columnChildrenByIndex, !onlyVisibleDirectChildren);\r\n if (onlyVisibleDirectChildren) {\r\n return result.filter(function(column) {\r\n return column.visible && !column.command\r\n }).sort(function(column1, column2) {\r\n return column1.visibleIndex - column2.visibleIndex\r\n })\r\n }\r\n return result\r\n },\r\n isParentBandColumn: function(columnIndex, bandColumnIndex) {\r\n var result = false;\r\n var column = this._columns[columnIndex];\r\n var bandColumnsCache = this.getBandColumnsCache();\r\n var parentBandColumns = column && getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex);\r\n if (parentBandColumns) {\r\n (0, _iterator.each)(parentBandColumns, function(_, bandColumn) {\r\n if (bandColumn.index === bandColumnIndex) {\r\n result = true;\r\n return false\r\n }\r\n })\r\n }\r\n return result\r\n },\r\n isParentColumnVisible: function(columnIndex) {\r\n var result = true;\r\n var bandColumnsCache = this.getBandColumnsCache();\r\n var bandColumns = columnIndex >= 0 && getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex);\r\n bandColumns && (0, _iterator.each)(bandColumns, function(_, bandColumn) {\r\n result = result && bandColumn.visible;\r\n return result\r\n });\r\n return result\r\n },\r\n getColumnId: function(column) {\r\n if (column.command && column.type === GROUP_COMMAND_COLUMN_NAME) {\r\n if (isCustomCommandColumn(this, column)) {\r\n return \"type:\" + column.type\r\n }\r\n return \"command:\" + column.command\r\n }\r\n return column.index\r\n },\r\n getCustomizeTextByDataType: getCustomizeTextByDataType,\r\n getHeaderContentAlignment: function(columnAlignment) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n if (rtlEnabled) {\r\n return \"left\" === columnAlignment ? \"right\" : \"left\"\r\n }\r\n return columnAlignment\r\n }\r\n }\r\n }())\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/context_menu/ui.menu_base.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _utils = require(\"../widget/utils.ink_ripple\");\r\nvar _ui = _interopRequireDefault(require(\"../hierarchical_collection/ui.hierarchical_collection_widget\"));\r\nvar _uiMenu_baseEdit = _interopRequireDefault(require(\"./ui.menu_base.edit.strategy\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _item = _interopRequireDefault(require(\"../collection/item\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _classCallCheck(instance, Constructor) {\r\n if (!(instance instanceof Constructor)) {\r\n throw new TypeError(\"Cannot call a class as a function\")\r\n }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n return Constructor\r\n}\r\n\r\nfunction _get(target, property, receiver) {\r\n if (\"undefined\" !== typeof Reflect && Reflect.get) {\r\n _get = Reflect.get\r\n } else {\r\n _get = function(target, property, receiver) {\r\n var base = _superPropBase(target, property);\r\n if (!base) {\r\n return\r\n }\r\n var desc = Object.getOwnPropertyDescriptor(base, property);\r\n if (desc.get) {\r\n return desc.get.call(receiver)\r\n }\r\n return desc.value\r\n }\r\n }\r\n return _get(target, property, receiver || target)\r\n}\r\n\r\nfunction _superPropBase(object, property) {\r\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\r\n object = _getPrototypeOf(object);\r\n if (null === object) {\r\n break\r\n }\r\n }\r\n return object\r\n}\r\n\r\nfunction _inherits(subClass, superClass) {\r\n if (\"function\" !== typeof superClass && null !== superClass) {\r\n throw new TypeError(\"Super expression must either be null or a function\")\r\n }\r\n subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n constructor: {\r\n value: subClass,\r\n writable: true,\r\n configurable: true\r\n }\r\n });\r\n if (superClass) {\r\n _setPrototypeOf(subClass, superClass)\r\n }\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction _createSuper(Derived) {\r\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\r\n return function() {\r\n var result, Super = _getPrototypeOf(Derived);\r\n if (hasNativeReflectConstruct) {\r\n var NewTarget = _getPrototypeOf(this).constructor;\r\n result = Reflect.construct(Super, arguments, NewTarget)\r\n } else {\r\n result = Super.apply(this, arguments)\r\n }\r\n return _possibleConstructorReturn(this, result)\r\n }\r\n}\r\n\r\nfunction _possibleConstructorReturn(self, call) {\r\n if (call && (\"object\" === _typeof(call) || \"function\" === typeof call)) {\r\n return call\r\n }\r\n return _assertThisInitialized(self)\r\n}\r\n\r\nfunction _assertThisInitialized(self) {\r\n if (void 0 === self) {\r\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")\r\n }\r\n return self\r\n}\r\n\r\nfunction _isNativeReflectConstruct() {\r\n if (\"undefined\" === typeof Reflect || !Reflect.construct) {\r\n return false\r\n }\r\n if (Reflect.construct.sham) {\r\n return false\r\n }\r\n if (\"function\" === typeof Proxy) {\r\n return true\r\n }\r\n try {\r\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\r\n return true\r\n } catch (e) {\r\n return false\r\n }\r\n}\r\n\r\nfunction _getPrototypeOf(o) {\r\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\r\n return o.__proto__ || Object.getPrototypeOf(o)\r\n };\r\n return _getPrototypeOf(o)\r\n}\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\nvar MenuBase = function(_HierarchicalCollecti) {\r\n _inherits(MenuBase, _HierarchicalCollecti);\r\n var _super = _createSuper(MenuBase);\r\n\r\n function MenuBase() {\r\n _classCallCheck(this, MenuBase);\r\n return _super.apply(this, arguments)\r\n }\r\n _createClass(MenuBase, [{\r\n key: \"_getDefaultOptions\",\r\n value: function() {\r\n return (0, _extend.extend)(_get(_getPrototypeOf(MenuBase.prototype), \"_getDefaultOptions\", this).call(this), {\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 }, {\r\n key: \"_itemDataKey\",\r\n value: function() {\r\n return \"dxMenuItemDataKey\"\r\n }\r\n }, {\r\n key: \"_itemClass\",\r\n value: function() {\r\n return ITEM_CLASS\r\n }\r\n }, {\r\n key: \"_setAriaSelected\",\r\n value: function() {}\r\n }, {\r\n key: \"_selectedItemClass\",\r\n value: function() {\r\n return DX_MENU_SELECTED_ITEM_CLASS\r\n }\r\n }, {\r\n key: \"_widgetClass\",\r\n value: function() {\r\n return DX_MENU_BASE_CLASS\r\n }\r\n }, {\r\n key: \"_focusTarget\",\r\n value: function() {\r\n return this._itemContainer()\r\n }\r\n }, {\r\n key: \"_clean\",\r\n value: function() {\r\n this.option(\"focusedElement\", null);\r\n _get(_getPrototypeOf(MenuBase.prototype), \"_clean\", this).call(this)\r\n }\r\n }, {\r\n key: \"_supportedKeys\",\r\n value: function() {\r\n var _this = this;\r\n var selectItem = function() {\r\n var $item = (0, _renderer.default)(_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 return (0, _extend.extend)(_get(_getPrototypeOf(MenuBase.prototype), \"_supportedKeys\", this).call(this), {\r\n space: selectItem,\r\n pageUp: _common.noop,\r\n pageDown: _common.noop\r\n })\r\n }\r\n }, {\r\n key: \"_isSelectionEnabled\",\r\n value: function() {\r\n return this.option(\"selectionMode\") === SINGLE_SELECTION_MODE\r\n }\r\n }, {\r\n key: \"_init\",\r\n value: function() {\r\n this._activeStateUnit = \".\".concat(ITEM_CLASS);\r\n _get(_getPrototypeOf(MenuBase.prototype), \"_init\", this).call(this);\r\n this._renderSelectedItem();\r\n this._initActions()\r\n }\r\n }, {\r\n key: \"_getTextContainer\",\r\n value: function(itemData) {\r\n var itemText = itemData.text;\r\n var $itemContainer = (0, _renderer.default)(\"\").addClass(DX_MENU_ITEM_CAPTION_CLASS);\r\n var itemContent = (0, _type.isPlainObject)(itemData) ? itemText : String(itemData);\r\n return itemText && $itemContainer.text(itemContent)\r\n }\r\n }, {\r\n key: \"_getPopoutContainer\",\r\n value: function(itemData) {\r\n var items = itemData.items;\r\n var $popOutContainer;\r\n if (items && items.length) {\r\n var $popOutImage = (0, _renderer.default)(\"
\").addClass(DX_MENU_ITEM_POPOUT_CLASS);\r\n $popOutContainer = (0, _renderer.default)(\"\").addClass(DX_MENU_ITEM_POPOUT_CONTAINER_CLASS).append($popOutImage)\r\n }\r\n return $popOutContainer\r\n }\r\n }, {\r\n key: \"_getDataAdapterOptions\",\r\n value: function() {\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 }, {\r\n key: \"_selectByItem\",\r\n value: function(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 }, {\r\n key: \"_renderSelectedItem\",\r\n value: function() {\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 }, {\r\n key: \"_initActions\",\r\n value: function() {}\r\n }, {\r\n key: \"_initMarkup\",\r\n value: function() {\r\n _get(_getPrototypeOf(MenuBase.prototype), \"_initMarkup\", this).call(this);\r\n this._addCustomCssClass(this.$element());\r\n this.option(\"useInkRipple\") && this._renderInkRipple()\r\n }\r\n }, {\r\n key: \"_renderInkRipple\",\r\n value: function() {\r\n this._inkRipple = (0, _utils.render)()\r\n }\r\n }, {\r\n key: \"_toggleActiveState\",\r\n value: function($element, value, e) {\r\n _get(_getPrototypeOf(MenuBase.prototype), \"_toggleActiveState\", this).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 }, {\r\n key: \"_getShowSubmenuMode\",\r\n value: function() {\r\n var defaultValue = \"onClick\";\r\n var optionValue = this.option(\"showSubmenuMode\");\r\n optionValue = (0, _type.isObject)(optionValue) ? optionValue.name : optionValue;\r\n return this._isDesktopDevice() ? optionValue : defaultValue\r\n }\r\n }, {\r\n key: \"_initSelectedItems\",\r\n value: function() {}\r\n }, {\r\n key: \"_isDesktopDevice\",\r\n value: function() {\r\n return \"desktop\" === _devices.default.real().deviceType\r\n }\r\n }, {\r\n key: \"_initEditStrategy\",\r\n value: function() {\r\n var Strategy = _uiMenu_baseEdit.default;\r\n this._editStrategy = new Strategy(this)\r\n }\r\n }, {\r\n key: \"_addCustomCssClass\",\r\n value: function($element) {\r\n $element.addClass(this.option(\"cssClass\"))\r\n }\r\n }, {\r\n key: \"_itemWrapperSelector\",\r\n value: function() {\r\n return \".\".concat(DX_MENU_ITEM_WRAPPER_CLASS)\r\n }\r\n }, {\r\n key: \"_hoverStartHandler\",\r\n value: function(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 }, {\r\n key: \"_getAvailableItems\",\r\n value: function($itemElements) {\r\n return _get(_getPrototypeOf(MenuBase.prototype), \"_getAvailableItems\", this).call(this, $itemElements).filter(function() {\r\n return \"hidden\" !== (0, _renderer.default)(this).css(\"visibility\")\r\n })\r\n }\r\n }, {\r\n key: \"_isItemDisabled\",\r\n value: function($item) {\r\n return this._disabledGetter($item.data(this._itemDataKey()))\r\n }\r\n }, {\r\n key: \"_showSubmenu\",\r\n value: function($itemElement) {\r\n this._addExpandedClass($itemElement)\r\n }\r\n }, {\r\n key: \"_addExpandedClass\",\r\n value: function(itemElement) {\r\n (0, _renderer.default)(itemElement).addClass(DX_MENU_ITEM_EXPANDED_CLASS)\r\n }\r\n }, {\r\n key: \"_getSubmenuDelay\",\r\n value: function(action) {\r\n var _this$option = this.option(\"showSubmenuMode\"),\r\n delay = _this$option.delay;\r\n if (!(0, _type.isDefined)(delay)) {\r\n return DEFAULT_DELAY[action]\r\n }\r\n return (0, _type.isObject)(delay) ? delay[action] : delay\r\n }\r\n }, {\r\n key: \"_getItemElementByEventArgs\",\r\n value: function(eventArgs) {\r\n var $target = (0, _renderer.default)(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 }, {\r\n key: \"_hoverEndHandler\",\r\n value: function() {\r\n clearTimeout(this._showSubmenusTimeout)\r\n }\r\n }, {\r\n key: \"_hasSubmenu\",\r\n value: function(node) {\r\n return node && node.internalFields.childrenKeys.length\r\n }\r\n }, {\r\n key: \"_renderContentImpl\",\r\n value: function() {\r\n this._renderItems(this._dataAdapter.getRootNodes())\r\n }\r\n }, {\r\n key: \"_renderItems\",\r\n value: function(nodes, submenuContainer) {\r\n var _this2 = this;\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 (0, _iterator.each)(nodes, function(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 _this2._renderSeparator($nodeContainer)\r\n }\r\n _this2._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 }, {\r\n key: \"_renderContainer\",\r\n value: function($wrapper) {\r\n var $container = (0, _renderer.default)(\"
    \");\r\n this.setAria(\"role\", \"none\", $container);\r\n return $container.appendTo($wrapper).addClass(DX_MENU_ITEMS_CONTAINER_CLASS)\r\n }\r\n }, {\r\n key: \"_createDOMElement\",\r\n value: function($nodeContainer) {\r\n var $node = (0, _renderer.default)(\"
  • \");\r\n this.setAria(\"role\", \"none\", $node);\r\n return $node.appendTo($nodeContainer).addClass(DX_MENU_ITEM_WRAPPER_CLASS)\r\n }\r\n }, {\r\n key: \"_renderItem\",\r\n value: function(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 = _get(_getPrototypeOf(MenuBase.prototype), \"_renderItem\", this).call(this, 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 }, {\r\n key: \"_renderItemFrame\",\r\n value: function(index, itemData, $itemContainer) {\r\n var $itemFrame = $itemContainer.children(\".\".concat(ITEM_CLASS));\r\n return $itemFrame.length ? $itemFrame : _get(_getPrototypeOf(MenuBase.prototype), \"_renderItemFrame\", this).apply(this, arguments)\r\n }\r\n }, {\r\n key: \"_refreshItem\",\r\n value: function($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 }, {\r\n key: \"_addContentClasses\",\r\n value: function(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 }, {\r\n key: \"_getItemContent\",\r\n value: function($itemFrame) {\r\n var $itemContent = _get(_getPrototypeOf(MenuBase.prototype), \"_getItemContent\", this).call(this, $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 }, {\r\n key: \"_postprocessRenderItem\",\r\n value: function(args) {\r\n var $itemElement = (0, _renderer.default)(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 }, {\r\n key: \"_isItemSelectable\",\r\n value: function(item) {\r\n return false !== item.selectable\r\n }\r\n }, {\r\n key: \"_renderSeparator\",\r\n value: function($itemsContainer) {\r\n (0, _renderer.default)(\"
  • \").appendTo($itemsContainer).addClass(DX_MENU_SEPARATOR_CLASS)\r\n }\r\n }, {\r\n key: \"_itemClickHandler\",\r\n value: function(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 }, {\r\n key: \"_updateSubmenuVisibilityOnClick\",\r\n value: function(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 }, {\r\n key: \"_updateSelectedItemOnClick\",\r\n value: function(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 }, {\r\n key: \"_isItemSelectionAllowed\",\r\n value: function(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 }, {\r\n key: \"_isContainerEmpty\",\r\n value: function() {\r\n return this._itemContainer().is(\":empty\")\r\n }\r\n }, {\r\n key: \"_syncSelectionOptions\",\r\n value: function() {\r\n return (0, _common.asyncNoop)()\r\n }\r\n }, {\r\n key: \"_optionChanged\",\r\n value: function(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 _get(_getPrototypeOf(MenuBase.prototype), \"_optionChanged\", this).call(this, args)\r\n }\r\n }\r\n }, {\r\n key: \"_toggleItemSelection\",\r\n value: function(node, value) {\r\n var itemElement = this._getElementByItem(node.internalFields.item);\r\n itemElement && (0, _renderer.default)(itemElement).toggleClass(DX_MENU_SELECTED_ITEM_CLASS);\r\n this._dataAdapter.toggleSelection(node.internalFields.key, value)\r\n }\r\n }, {\r\n key: \"_getElementByItem\",\r\n value: function(itemData) {\r\n var _this3 = this;\r\n var result;\r\n (0, _iterator.each)(this._itemElements(), function(_, itemElement) {\r\n if ((0, _renderer.default)(itemElement).data(_this3._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 }, {\r\n key: \"_updateSelectedItems\",\r\n value: function(oldSelection, newSelection) {\r\n if (oldSelection || newSelection) {\r\n this._fireSelectionChangeEvent(newSelection, oldSelection)\r\n }\r\n }\r\n }, {\r\n key: \"_fireSelectionChangeEvent\",\r\n value: function(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 }, {\r\n key: \"selectItem\",\r\n value: function(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 }, {\r\n key: \"unselectItem\",\r\n value: function(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\n return MenuBase\r\n}(_ui.default);\r\nMenuBase.ItemClass = _item.default;\r\nvar _default = MenuBase;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.header_filter_core.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.updateHeaderFilterItemSelectionState = updateHeaderFilterItemSelectionState;\r\nexports.headerFilterMixin = exports.allowHeaderFiltering = exports.HeaderFilterView = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _tree_view = _interopRequireDefault(require(\"../tree_view\"));\r\nvar _list = _interopRequireDefault(require(\"../list\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar HEADER_FILTER_CLASS = \"dx-header-filter\";\r\nvar HEADER_FILTER_MENU_CLASS = \"dx-header-filter-menu\";\r\nvar DEFAULT_SEARCH_EXPRESSION = \"text\";\r\n\r\nfunction resetChildrenItemSelection(items) {\r\n items = items || [];\r\n for (var i = 0; i < items.length; i++) {\r\n items[i].selected = false;\r\n resetChildrenItemSelection(items[i].items)\r\n }\r\n}\r\n\r\nfunction updateSelectAllState(e, filterValues) {\r\n if (e.component.option(\"searchValue\")) {\r\n return\r\n }\r\n var selectAllCheckBox = (0, _renderer.default)(e.element).find(\".dx-list-select-all-checkbox\").data(\"dxCheckBox\");\r\n if (selectAllCheckBox && filterValues && filterValues.length) {\r\n selectAllCheckBox.option(\"value\", void 0)\r\n }\r\n}\r\n\r\nfunction isSearchEnabled(that, options) {\r\n var headerFilter = options.headerFilter;\r\n if (headerFilter && (0, _type.isDefined)(headerFilter.allowSearch)) {\r\n return headerFilter.allowSearch\r\n }\r\n return that.option(\"headerFilter.allowSearch\")\r\n}\r\n\r\nfunction updateHeaderFilterItemSelectionState(item, filterValuesMatch, isExcludeFilter) {\r\n if (filterValuesMatch ^ isExcludeFilter) {\r\n item.selected = true;\r\n if (isExcludeFilter && item.items) {\r\n for (var j = 0; j < item.items.length; j++) {\r\n if (!item.items[j].selected) {\r\n item.selected = void 0;\r\n break\r\n }\r\n }\r\n }\r\n } else {\r\n if (isExcludeFilter || item.selected) {\r\n item.selected = false;\r\n resetChildrenItemSelection(item.items)\r\n }\r\n }\r\n}\r\nvar HeaderFilterView = _uiGrid_core.default.View.inherit({\r\n getPopupContainer: function() {\r\n return this._popupContainer\r\n },\r\n getListContainer: function() {\r\n return this._listContainer\r\n },\r\n applyHeaderFilter: function(options) {\r\n var that = this;\r\n var list = that.getListContainer();\r\n var searchValue = list.option(\"searchValue\");\r\n var isSelectAll = !searchValue && !options.isFilterBuilder && list.$element().find(\".dx-checkbox\").eq(0).hasClass(\"dx-checkbox-checked\");\r\n var filterValues = [];\r\n var fillSelectedItemKeys = function fillSelectedItemKeys(filterValues, items, isExclude) {\r\n (0, _iterator.each)(items, function(_, item) {\r\n if (void 0 !== item.selected && !!item.selected ^ isExclude) {\r\n var node = list._getNode(item);\r\n var hasChildren = list._hasChildren(node);\r\n var hasChildrenWithSelection = hasChildren && item.items && item.items.some(function(item) {\r\n return item.selected\r\n });\r\n if (!searchValue || !hasChildrenWithSelection) {\r\n filterValues.push(item.value);\r\n return\r\n }\r\n }\r\n if (item.items && item.items.length) {\r\n fillSelectedItemKeys(filterValues, item.items, isExclude)\r\n }\r\n })\r\n };\r\n if (!isSelectAll) {\r\n if (\"tree\" === options.type) {\r\n if (options.filterType) {\r\n options.filterType = \"include\"\r\n }\r\n fillSelectedItemKeys(filterValues, list.option(\"items\"), false);\r\n options.filterValues = filterValues\r\n }\r\n } else {\r\n if (\"tree\" === options.type) {\r\n options.filterType = \"exclude\"\r\n }\r\n if (Array.isArray(options.filterValues)) {\r\n options.filterValues = []\r\n }\r\n }\r\n if (options.filterValues && !options.filterValues.length) {\r\n options.filterValues = null\r\n }\r\n options.apply();\r\n that.hideHeaderFilterMenu()\r\n },\r\n showHeaderFilterMenu: function($columnElement, options) {\r\n var that = this;\r\n if (options) {\r\n that._initializePopupContainer(options);\r\n var popupContainer = that.getPopupContainer();\r\n that.hideHeaderFilterMenu();\r\n that.updatePopup($columnElement, options);\r\n popupContainer.show()\r\n }\r\n },\r\n hideHeaderFilterMenu: function() {\r\n var headerFilterMenu = this.getPopupContainer();\r\n headerFilterMenu && headerFilterMenu.hide()\r\n },\r\n updatePopup: function($element, options) {\r\n var that = this;\r\n var alignment = \"right\" === options.alignment ? \"left\" : \"right\";\r\n if (that._popupContainer) {\r\n that._cleanPopupContent();\r\n that._popupContainer.option(\"position\", {\r\n my: alignment + \" top\",\r\n at: alignment + \" bottom\",\r\n of: $element,\r\n collision: \"flip fit\"\r\n })\r\n }\r\n },\r\n _getSearchExpr: function(options) {\r\n var lookup = options.lookup;\r\n var useDefaultSearchExpr = options.useDefaultSearchExpr;\r\n var headerFilterDataSource = options.headerFilter && options.headerFilter.dataSource;\r\n if (useDefaultSearchExpr || (0, _type.isDefined)(headerFilterDataSource) && !(0, _type.isFunction)(headerFilterDataSource)) {\r\n return DEFAULT_SEARCH_EXPRESSION\r\n }\r\n if (lookup) {\r\n return lookup.displayExpr || \"this\"\r\n }\r\n if (options.dataSource) {\r\n var group = options.dataSource.group;\r\n if (Array.isArray(group) && group.length > 0) {\r\n return group[0].selector\r\n } else {\r\n if ((0, _type.isFunction)(group) && !options.remoteFiltering) {\r\n return group\r\n }\r\n }\r\n }\r\n return options.dataField || options.selector\r\n },\r\n _cleanPopupContent: function() {\r\n this._popupContainer && this._popupContainer.$content().empty()\r\n },\r\n _initializePopupContainer: function(options) {\r\n var that = this;\r\n var $element = that.element();\r\n var headerFilterOptions = that.option(\"headerFilter\");\r\n var width = options.headerFilter && options.headerFilter.width || headerFilterOptions && headerFilterOptions.width;\r\n var height = options.headerFilter && options.headerFilter.height || headerFilterOptions && headerFilterOptions.height;\r\n var dxPopupOptions = {\r\n width: width,\r\n height: height,\r\n visible: false,\r\n shading: false,\r\n showTitle: false,\r\n showCloseButton: false,\r\n closeOnTargetScroll: false,\r\n dragEnabled: false,\r\n closeOnOutsideClick: true,\r\n focusStateEnabled: false,\r\n toolbarItems: [{\r\n toolbar: \"bottom\",\r\n location: \"after\",\r\n widget: \"dxButton\",\r\n options: {\r\n text: headerFilterOptions.texts.ok,\r\n onClick: function() {\r\n that.applyHeaderFilter(options)\r\n }\r\n }\r\n }, {\r\n toolbar: \"bottom\",\r\n location: \"after\",\r\n widget: \"dxButton\",\r\n options: {\r\n text: headerFilterOptions.texts.cancel,\r\n onClick: function() {\r\n that.hideHeaderFilterMenu()\r\n }\r\n }\r\n }],\r\n resizeEnabled: true,\r\n onShowing: function(e) {\r\n e.component.$content().parent().addClass(\"dx-dropdowneditor-overlay\");\r\n that._initializeListContainer(options);\r\n options.onShowing && options.onShowing(e)\r\n },\r\n onShown: function() {\r\n that.getListContainer().focus()\r\n },\r\n onHidden: options.onHidden,\r\n onInitialized: function(e) {\r\n var component = e.component;\r\n component.option(\"animation\", component._getDefaultOptions().animation)\r\n }\r\n };\r\n if (!(0, _type.isDefined)(that._popupContainer)) {\r\n that._popupContainer = that._createComponent($element, _popup.default, dxPopupOptions)\r\n } else {\r\n that._popupContainer.option(dxPopupOptions)\r\n }\r\n },\r\n _initializeListContainer: function(options) {\r\n var that = this;\r\n var $content = that._popupContainer.$content();\r\n var widgetOptions = {\r\n searchEnabled: isSearchEnabled(that, options),\r\n searchTimeout: that.option(\"headerFilter.searchTimeout\"),\r\n searchMode: options.headerFilter && options.headerFilter.searchMode || \"\",\r\n dataSource: options.dataSource,\r\n onContentReady: function() {\r\n that.renderCompleted.fire()\r\n },\r\n itemTemplate: function(data, _, element) {\r\n var $element = (0, _renderer.default)(element);\r\n if (options.encodeHtml) {\r\n return $element.text(data.text)\r\n }\r\n return $element.html(data.text)\r\n }\r\n };\r\n\r\n function onOptionChanged(e) {\r\n if (\"searchValue\" === e.fullName && !options.isFilterBuilder && false !== that.option(\"headerFilter.hideSelectAllOnSearch\")) {\r\n if (\"tree\" === options.type) {\r\n e.component.option(\"showCheckBoxesMode\", e.value ? \"normal\" : \"selectAll\")\r\n } else {\r\n e.component.option(\"selectionMode\", e.value ? \"multiple\" : \"all\")\r\n }\r\n }\r\n }\r\n if (\"tree\" === options.type) {\r\n that._listContainer = that._createComponent((0, _renderer.default)(\"
    \").appendTo($content), _tree_view.default, (0, _extend.extend)(widgetOptions, {\r\n showCheckBoxesMode: options.isFilterBuilder ? \"normal\" : \"selectAll\",\r\n onOptionChanged: onOptionChanged,\r\n keyExpr: \"id\"\r\n }))\r\n } else {\r\n that._listContainer = that._createComponent((0, _renderer.default)(\"
    \").appendTo($content), _list.default, (0, _extend.extend)(widgetOptions, {\r\n searchExpr: that._getSearchExpr(options),\r\n pageLoadMode: \"scrollBottom\",\r\n showSelectionControls: true,\r\n selectionMode: options.isFilterBuilder ? \"multiple\" : \"all\",\r\n onOptionChanged: onOptionChanged,\r\n onSelectionChanged: function(e) {\r\n var items = e.component.option(\"items\");\r\n var selectedItems = e.component.option(\"selectedItems\");\r\n if (!e.component._selectedItemsUpdating && !e.component.option(\"searchValue\") && !options.isFilterBuilder) {\r\n var filterValues = options.filterValues || [];\r\n var isExclude = \"exclude\" === options.filterType;\r\n if (0 === selectedItems.length && items.length && (filterValues.length <= 1 || isExclude && filterValues.length === items.length - 1)) {\r\n options.filterType = \"include\";\r\n options.filterValues = []\r\n } else {\r\n if (selectedItems.length === items.length) {\r\n options.filterType = \"exclude\";\r\n options.filterValues = []\r\n }\r\n }\r\n }(0, _iterator.each)(items, function(index, item) {\r\n var selected = _uiGrid_core2.default.getIndexByKey(item, selectedItems, null) >= 0;\r\n var oldSelected = !!item.selected;\r\n if (oldSelected !== selected) {\r\n item.selected = selected;\r\n options.filterValues = options.filterValues || [];\r\n var filterValueIndex = _uiGrid_core2.default.getIndexByKey(item.value, options.filterValues, null);\r\n if (filterValueIndex >= 0) {\r\n options.filterValues.splice(filterValueIndex, 1)\r\n }\r\n if (selected ^ \"exclude\" === options.filterType) {\r\n options.filterValues.push(item.value)\r\n }\r\n }\r\n });\r\n updateSelectAllState(e, options.filterValues)\r\n },\r\n onContentReady: function(e) {\r\n var component = e.component;\r\n var items = component.option(\"items\");\r\n var selectedItems = [];\r\n (0, _iterator.each)(items, function() {\r\n if (this.selected) {\r\n selectedItems.push(this)\r\n }\r\n });\r\n component._selectedItemsUpdating = true;\r\n component.option(\"selectedItems\", selectedItems);\r\n component._selectedItemsUpdating = false;\r\n updateSelectAllState(e, options.filterValues)\r\n }\r\n }))\r\n }\r\n },\r\n _renderCore: function() {\r\n this.element().addClass(HEADER_FILTER_MENU_CLASS)\r\n }\r\n});\r\nexports.HeaderFilterView = HeaderFilterView;\r\nvar allowHeaderFiltering = function(column) {\r\n return (0, _type.isDefined)(column.allowHeaderFiltering) ? column.allowHeaderFiltering : column.allowFiltering\r\n};\r\nexports.allowHeaderFiltering = allowHeaderFiltering;\r\nvar headerFilterMixin = {\r\n _applyColumnState: function(options) {\r\n var $headerFilterIndicator;\r\n var rootElement = options.rootElement;\r\n var column = options.column;\r\n if (\"headerFilter\" === options.name) {\r\n rootElement.find(\".\" + HEADER_FILTER_CLASS).remove();\r\n if (allowHeaderFiltering(column)) {\r\n $headerFilterIndicator = this.callBase(options).toggleClass(\"dx-header-filter-empty\", this._isHeaderFilterEmpty(column));\r\n if (!this.option(\"useLegacyKeyboardNavigation\")) {\r\n $headerFilterIndicator.attr(\"tabindex\", this.option(\"tabindex\") || 0)\r\n }\r\n }\r\n return $headerFilterIndicator\r\n }\r\n return this.callBase(options)\r\n },\r\n _isHeaderFilterEmpty: function(column) {\r\n return !column.filterValues || !column.filterValues.length\r\n },\r\n _getIndicatorClassName: function(name) {\r\n if (\"headerFilter\" === name) {\r\n return HEADER_FILTER_CLASS\r\n }\r\n return this.callBase(name)\r\n },\r\n _renderIndicator: function(options) {\r\n var $container = options.container;\r\n var $indicator = options.indicator;\r\n if (\"headerFilter\" === options.name) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n if ($container.children().length && (!rtlEnabled && \"right\" === options.columnAlignment || rtlEnabled && \"left\" === options.columnAlignment)) {\r\n $container.prepend($indicator);\r\n return\r\n }\r\n }\r\n this.callBase(options)\r\n },\r\n optionChanged: function(args) {\r\n if (\"headerFilter\" === args.name) {\r\n var requireReady = \"columnHeadersView\" === this.name;\r\n this._invalidate(requireReady, requireReady);\r\n args.handled = true\r\n } else {\r\n this.callBase(args)\r\n }\r\n }\r\n};\r\nexports.headerFilterMixin = headerFilterMixin;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.editing.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nrequire(\"./ui.data_grid.editor_factory\");\r\nvar _uiData_grid2 = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.editing\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid2.default.registerModule(\"editing\", (0, _extend.extend)(true, {}, _uiGrid_core.default, {\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 (exporter/excel/excel.fill_helper.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _excel = _interopRequireDefault(require(\"./excel.tag_helper\"));\r\nvar _excel2 = _interopRequireDefault(require(\"./excel.pattern_fill_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar fillHelper = {\r\n tryCreateTag: function(sourceObj) {\r\n var result = null;\r\n if ((0, _type.isDefined)(sourceObj)) {\r\n result = {\r\n patternFill: _excel2.default.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 _ref = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},\r\n backgroundColor = _ref.backgroundColor,\r\n fillPatternType = _ref.fillPatternType,\r\n fillPatternColor = _ref.fillPatternColor;\r\n if ((0, _type.isDefined)(backgroundColor) && !((0, _type.isDefined)(fillPatternType) && (0, _type.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 {\r\n if ((0, _type.isDefined)(fillPatternType) && (0, _type.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 },\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 ((0, _type.isDefined)(source)) {\r\n result = {};\r\n if (void 0 !== source.patternFill) {\r\n result.patternFill = _excel2.default.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) || (0, _type.isDefined)(leftTag) && (0, _type.isDefined)(rightTag) && _excel2.default.areEqual(leftTag.patternFill, rightTag.patternFill)\r\n },\r\n isEmpty: function(tag) {\r\n return !(0, _type.isDefined)(tag) || _excel2.default.isEmpty(tag.patternFill)\r\n },\r\n toXml: function(tag) {\r\n return _excel.default.toXml(\"fill\", {}, _excel2.default.toXml(tag.patternFill))\r\n }\r\n};\r\nvar _default = fillHelper;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/shared/ui.editor_factory_mixin.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _variable_wrapper = _interopRequireDefault(require(\"../../core/utils/variable_wrapper\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _element = require(\"../../core/element\");\r\nvar _utils = require(\"../../data/data_source/utils\");\r\nvar _index = require(\"../../events/utils/index\");\r\nrequire(\"../text_box\");\r\nrequire(\"../number_box\");\r\nrequire(\"../check_box\");\r\nrequire(\"../select_box\");\r\nrequire(\"../date_box\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar isWrapped = _variable_wrapper.default.isWrapped;\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 (0, _extend.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.default.msie || _browser.default.mozilla || _devices.default.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 }, (0, _type.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\" === (0, _index.normalizeKeyName)(e.event)) {\r\n _events_engine.default.trigger((0, _renderer.default)(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 prepareDateBox = 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\" === (0, _index.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 };\r\n var prepareTextBox = function(options) {\r\n var config = getTextEditorConfig(options);\r\n var isSearching = \"searchPanel\" === options.parentType;\r\n var toString = function(value) {\r\n return (0, _type.isDefined)(value) ? value.toString() : \"\"\r\n };\r\n if (options.editorType && \"dxTextBox\" !== options.editorType) {\r\n config.value = options.value\r\n } else {\r\n config.value = toString(options.value)\r\n }\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 };\r\n var prepareNumberBox = function(options) {\r\n var config = getTextEditorConfig(options);\r\n config.value = (0, _type.isDefined)(options.value) ? options.value : null;\r\n options.editorName = \"dxNumberBox\";\r\n options.editorOptions = config\r\n };\r\n var prepareBooleanEditor = function(options) {\r\n if (\"filterRow\" === options.parentType || \"filterBuilder\" === options.parentType) {\r\n prepareSelectBox((0, _extend.extend)(options, {\r\n lookup: {\r\n displayExpr: function(data) {\r\n if (true === data) {\r\n return options.trueText || \"true\"\r\n } else {\r\n if (false === data) {\r\n return options.falseText || \"false\"\r\n }\r\n }\r\n },\r\n dataSource: [true, false]\r\n }\r\n }))\r\n } else {\r\n prepareCheckBox(options)\r\n }\r\n };\r\n\r\n function watchLookupDataSource(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(function() {\r\n dataSource = options.lookup.dataSource(options.row);\r\n return dataSource && dataSource.filter\r\n }, function() {\r\n selectBox.option(\"dataSource\", dataSource)\r\n }, function(row) {\r\n options.row = row\r\n })\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 = (0, _data.compileGetter)(lookup.displayExpr);\r\n dataSource = lookup.dataSource;\r\n if ((0, _type.isFunction)(dataSource) && !isWrapped(dataSource)) {\r\n dataSource = dataSource(options.row || {});\r\n watchLookupDataSource(options)\r\n }\r\n if ((0, _type.isObject)(dataSource) || Array.isArray(dataSource)) {\r\n dataSource = (0, _utils.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\r\n function prepareCheckBox(options) {\r\n options.editorName = \"dxCheckBox\";\r\n options.editorOptions = getResultConfig({\r\n elementAttr: {\r\n id: options.id\r\n },\r\n value: (0, _type.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 }\r\n var createEditorCore = function(that, options) {\r\n var $editorElement = (0, _renderer.default)(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 (\"dxTextBox\" === options.editorName) {\r\n $editorElement.dxTextBox(\"instance\").registerKeyHandler(\"enter\", _common.noop)\r\n }\r\n if (\"dxDateBox\" === options.editorName) {\r\n $editorElement.dxDateBox(\"instance\").registerKeyHandler(\"enter\", function() {\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\" === (0, _index.normalizeKeyName)(event) && !event.ctrlKey && !event.shiftKey) {\r\n event.stopPropagation()\r\n }\r\n })\r\n }\r\n }\r\n };\r\n return {\r\n createEditor: function($container, options) {\r\n options.cancel = false;\r\n options.editorElement = (0, _element.getPublicElement)($container);\r\n if (!(0, _type.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 prepareDateBox(options);\r\n break;\r\n case \"boolean\":\r\n prepareBooleanEditor(options);\r\n break;\r\n case \"number\":\r\n prepareNumberBox(options);\r\n break;\r\n default:\r\n prepareTextBox(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 {\r\n if (\"dataRow\" === options.parentType && options.editorType && editorName === options.editorName) {\r\n options.editorName = options.editorType\r\n }\r\n }\r\n if (\"dataRow\" === options.parentType && !options.isOnForm && !(0, _type.isDefined)(options.editorOptions.showValidationMark)) {\r\n options.editorOptions.showValidationMark = false\r\n }\r\n createEditorCore(this, options);\r\n this.executeAction(\"onEditorPrepared\", options)\r\n }\r\n }\r\n}();\r\nvar _default = EditorFactoryMixin;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.validating.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _array_utils = require(\"../../data/array_utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _selectors = require(\"../widget/selectors\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _validation_engine = _interopRequireDefault(require(\"../validation_engine\"));\r\nvar _validator = _interopRequireDefault(require(\"../validator\"));\r\nvar _tooltip = _interopRequireDefault(require(\"../tooltip\"));\r\nvar _overlay = _interopRequireDefault(require(\"../overlay\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n if (!o) {\r\n return\r\n }\r\n if (\"string\" === typeof o) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n var n = Object.prototype.toString.call(o).slice(8, -1);\r\n if (\"Object\" === n && o.constructor) {\r\n n = o.constructor.name\r\n }\r\n if (\"Map\" === n || \"Set\" === n) {\r\n return Array.from(o)\r\n }\r\n if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n if (\"undefined\" !== typeof Symbol && Symbol.iterator in Object(iter)) {\r\n return Array.from(iter)\r\n }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return _arrayLikeToArray(arr)\r\n }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n if (null == len || len > arr.length) {\r\n len = arr.length\r\n }\r\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i]\r\n }\r\n return arr2\r\n}\r\nvar 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 validationResultIsValid = function(result) {\r\n return (0, _type.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 = _uiGrid_core.default.Controller.inherit(function() {\r\n return {\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(function(data) {\r\n return data.key === key\r\n })[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.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 (0, _deferred.when)(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 (0, _iterator.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 _this = this;\r\n var isValid = true;\r\n var editingController = this._editingController;\r\n var deferred = new _deferred.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 (0, _iterator.each)(changes, function(index, _ref) {\r\n var type = _ref.type,\r\n key = _ref.key;\r\n if (\"remove\" !== type) {\r\n var validationData = _this._getValidationData(key);\r\n var validationResult = _this.validateGroup(validationData);\r\n completeList.push(validationResult);\r\n validationResult.done(function(validationResult) {\r\n validationData.validated = true;\r\n isValid = isValid && validationResult.isValid\r\n })\r\n }\r\n })\r\n } else {\r\n if (this._currentCellValidator) {\r\n var validationResult = this.validateGroup(this._currentCellValidator._findGroup());\r\n completeList.push(validationResult);\r\n validationResult.done(function(validationResult) {\r\n isValid = validationResult.isValid\r\n })\r\n }\r\n }\r\n _deferred.when.apply(void 0, completeList).done(function() {\r\n _this._isValidationInProgress = false;\r\n deferred.resolve(isValid)\r\n });\r\n return deferred.promise()\r\n },\r\n validateGroup: function validateGroup(validationData) {\r\n var _validationResult, _this2 = this;\r\n var result = new _deferred.Deferred;\r\n var validateGroup = validationData && _validation_engine.default.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 = _validation_engine.default.validateGroup(validationData)\r\n }(0, _deferred.when)((null === (_validationResult = validationResult) || void 0 === _validationResult ? void 0 : _validationResult.complete) || validationResult).done(function(validationResult) {\r\n (0, _deferred.when)(_this2._rowValidating(validationData, validationResult)).done(result.resolve)\r\n });\r\n return result.promise()\r\n },\r\n isRowDataModified: function(change) {\r\n return !(0, _type.isEmptyObject)(change.data)\r\n },\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 (FORM_BASED_MODES.indexOf(editMode) === -1) {\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 = _validation_engine.default.getGroupConfig(validationData);\r\n if (groupConfig) {\r\n var validationResult = _validation_engine.default.validateGroup(validationData);\r\n (0, _deferred.when)(validationResult.complete || validationResult).done(function(validationResult) {\r\n validationData.isValid = validationResult.isValid;\r\n validationData.brokenRules = validationResult.brokenRules\r\n })\r\n } else {\r\n if (!validationData.brokenRules || !validationData.brokenRules.length) {\r\n validationData.isValid = true\r\n }\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 = (0, _renderer.default)(\"
    \").appendTo($indicatorContainer).addClass(PENDING_INDICATOR_CLASS);\r\n this._createComponent($indicator, _load_indicator.default);\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 = _load_indicator.default.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(function(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 (!(0, _selectors.focused)($focus)) {\r\n _events_engine.default.trigger($focus, \"focus\");\r\n _events_engine.default.trigger($focus, _pointer.default.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 {\r\n if (editor) {\r\n editor.option(\"validationStatus\", VALIDATION_STATUS.valid)\r\n } else {\r\n this.disposeCellPendingIndicator($container)\r\n }\r\n }\r\n $container.toggleClass(this.addWidgetPrefix(INVALIDATE_CLASS), result.status === VALIDATION_STATUS.invalid)\r\n }\r\n },\r\n createValidator: function(parameters, $container) {\r\n var _this3 = this;\r\n var editingController = this._editingController;\r\n var column = parameters.column;\r\n var showEditorAlways = column.showEditorAlways;\r\n if ((0, _type.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 = (0, _common.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 editingController._addInternalData({\r\n key: parameters.key,\r\n oldData: parameters.data\r\n })\r\n }\r\n }\r\n if (needCreateValidator) {\r\n if ($container && !$container.length) {\r\n _ui.default.log(\"E1050\");\r\n return\r\n }\r\n var validationData = this._getValidationData(parameters.key, true);\r\n var getValue = function() {\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.default($container || (0, _renderer.default)(\"
    \"), {\r\n name: column.caption,\r\n validationRules: (0, _extend.extend)(true, [], column.validationRules),\r\n validationGroup: validationData,\r\n adapter: useDefaultValidator ? null : {\r\n getValue: getValue,\r\n applyValidationResults: function(result) {\r\n _this3.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: (0, _array_utils.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 rowKey = _ref2.rowKey,\r\n columnIndex = _ref2.columnIndex;\r\n return this._currentCellValidator && 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.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 }(0, _deferred.when)(validationResult.complete || validationResult).done(function(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 rowKey = _ref3.rowKey,\r\n columnIndex = _ref3.columnIndex,\r\n validationResult = _ref3.validationResult;\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 = (0, _extend.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.Deferred;\r\n result.complete.always(function() {\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 rowKey = _ref4.rowKey,\r\n columnIndex = _ref4.columnIndex;\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 change = _ref5.change,\r\n columnIndex = _ref5.columnIndex;\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 change = _ref6.change,\r\n columnIndex = _ref6.columnIndex;\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 rowKey = _ref7.rowKey,\r\n columnIndex = _ref7.columnIndex;\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 rowKey = _ref8.rowKey,\r\n columnIndex = _ref8.columnIndex;\r\n var validationData = this._getValidationData(rowKey);\r\n var groupConfig = validationData && _validation_engine.default.getGroupConfig(validationData);\r\n var validators = groupConfig && groupConfig.validators;\r\n return validators && validators.filter(function(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 ((0, _type.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\n}());\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n editing: {\r\n texts: {\r\n validationCancelChanges: _message.default.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(function(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 _this4 = this;\r\n var that = this;\r\n var startInsertIndex = that.getView(\"rowsView\").getTopVisibleItemIndex();\r\n var rowIndex = startInsertIndex;\r\n (0, _iterator.each)(that.getChanges(), function(_, _ref9) {\r\n var key = _ref9.key,\r\n type = _ref9.type;\r\n var validationData = _this4.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 getEditFormOptions: function(detailOptions) {\r\n var editFormOptions = this.callBase.apply(this, arguments);\r\n var validatingController = this.getController(\"validating\");\r\n var validationData = validatingController._getValidationData(detailOptions.key, true);\r\n return (0, _extend.extend)({}, editFormOptions, {\r\n validationGroup: validationData\r\n })\r\n },\r\n _updateEditRowCore: function(row, skipCurrentRow, isCustomSetCellValue) {\r\n this.callBase.apply(this, arguments);\r\n if (isCustomSetCellValue && this._editForm && !row.isNewRow) {\r\n this._editForm.validate()\r\n }\r\n },\r\n _needInsertItem: function(_ref10) {\r\n var key = _ref10.key;\r\n var result = this.callBase.apply(this, arguments);\r\n var validationData = this.getController(\"validating\")._getValidationData(key);\r\n if (result && !(null !== validationData && void 0 !== validationData && validationData.isValid)) {\r\n result = key.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 that = this;\r\n var i;\r\n var changes = that.getChanges();\r\n var dataController = that.getController(\"data\");\r\n var validatingController = this.getController(\"validating\");\r\n var getIndexByChange = 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 (0, _iterator.each)(items, function(i, item) {\r\n if ((0, _common.equalByValue)(key, isInsert ? item : dataController.keyOf(item))) {\r\n index = i;\r\n return false\r\n }\r\n });\r\n return index\r\n };\r\n items = that.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 = getIndexByChange(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 (that.getEditMode() === EDIT_MODE_BATCH && \"prepend\" !== changeType && \"append\" !== changeType) {\r\n for (i = 0; i < changes.length; i++) {\r\n var key = changes[i].key;\r\n var validationData = validatingController._getValidationData(key);\r\n if (validationData && changes[i].type && validationData.pageIndex === that._pageIndex && key.pageIndex !== that._pageIndex) {\r\n addInValidItem(changes[i], 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 = _uiGrid_core2.default.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 = (0, _extend.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 _this5 = this;\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(function(column) {\r\n return !column.isBand\r\n });\r\n var groupColumns = columnsController.getGroupColumns().filter(function(column) {\r\n return !column.showWhenGrouped && invisibleColumns.indexOf(column) === -1\r\n });\r\n var invisibleColumnValidators = [];\r\n var isCellVisible = function(column, rowKey) {\r\n return _this5._dataController.getRowIndexByKey(rowKey) >= 0 && invisibleColumns.indexOf(column) < 0\r\n };\r\n invisibleColumns.push.apply(invisibleColumns, _toConsumableArray(groupColumns));\r\n if (FORM_BASED_MODES.indexOf(this.getEditMode()) === -1) {\r\n (0, _iterator.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 {\r\n if (\"update\" === change.type) {\r\n var oldData = that._getOldData(change.key);\r\n data = (0, _array_utils.createObjectWithChanges)(oldData, change.data)\r\n }\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 _this6 = this;\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.Deferred;\r\n this.executeOperation(result, function() {\r\n validatingController.validate(true).done(function(isFullValid) {\r\n disposeValidators();\r\n _this6._updateRowAndPageIndices();\r\n switch (_this6.getEditMode()) {\r\n case EDIT_MODE_CELL:\r\n if (!isFullValid) {\r\n _this6._focusEditingCell()\r\n }\r\n break;\r\n case EDIT_MODE_BATCH:\r\n if (!isFullValid) {\r\n _this6._resetEditRowKey();\r\n _this6._resetEditColumnName();\r\n _this6.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.Deferred;\r\n (0, _deferred.when)(validatingController.validateCell(validator), result).done(function(validationResult, result) {\r\n deferred.resolve(validationResult.status === VALIDATION_STATUS.valid && result)\r\n });\r\n return deferred.promise()\r\n } else {\r\n if (!validator) {\r\n return result\r\n }\r\n }\r\n }\r\n },\r\n _afterSaveEditData: function(cancel) {\r\n var _this7 = this;\r\n var $firstErrorRow;\r\n (0, _iterator.each)(this.getChanges(), function(_, change) {\r\n var $errorRow = _this7._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 && this.getEditMode() === EDIT_MODE_CELL && 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 {\r\n if (!cancel) {\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 (0, _iterator.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 _this8 = this;\r\n var validationState = this.getController(\"validating\")._validationState;\r\n (0, _iterator.each)(validationState, function(_, validationData) {\r\n if (validationData.pageIndex !== _this8._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 _this9 = this;\r\n var validatingController = this.getController(\"validating\");\r\n var deferred = new _deferred.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(function() {\r\n var currentValidator = validatingController.getCellValidator({\r\n rowKey: e.key,\r\n columnIndex: e.column.index\r\n });\r\n (0, _deferred.when)(currentValidator && validatingController.validateCell(currentValidator)).done(function(validationResult) {\r\n _this9.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 = (0, _type.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 (0, _deferred.when)(this.getController(\"validating\").validateCell(validator)).done(function() {\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[_uiGrid_core2.default.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: function() {\r\n var getWidthOfVisibleCells = function(that, element) {\r\n var rowIndex = (0, _renderer.default)(element).closest(\"tr\").index();\r\n var $cellElements = (0, _renderer.default)(that._rowsView.getRowElement(rowIndex)).first().children().filter(\":not(.dx-hidden-cell)\");\r\n return that._rowsView._getWidths($cellElements).reduce(function(w1, w2) {\r\n return w1 + w2\r\n }, 0)\r\n };\r\n var getBoundaryNonFixedColumnsInfo = function(fixedColumns) {\r\n var firstNonFixedColumnIndex;\r\n var lastNonFixedColumnIndex;\r\n fixedColumns.some(function(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 };\r\n return {\r\n _showRevertButton: function($container) {\r\n var _this10 = this;\r\n if (!$container || !$container.length) {\r\n return\r\n }\r\n var $tooltipElement = $container.find(\".\" + this.addWidgetPrefix(REVERT_TOOLTIP_CLASS));\r\n $tooltipElement && $tooltipElement.remove();\r\n $tooltipElement = (0, _renderer.default)(\"
    \").addClass(this.addWidgetPrefix(REVERT_TOOLTIP_CLASS)).appendTo($container);\r\n var tooltipOptions = {\r\n animation: null,\r\n visible: true,\r\n target: $container,\r\n container: $container,\r\n closeOnOutsideClick: false,\r\n closeOnTargetScroll: false,\r\n contentTemplate: function() {\r\n var $buttonElement = (0, _renderer.default)(\"
    \").addClass(REVERT_BUTTON_CLASS);\r\n var buttonOptions = {\r\n icon: \"revert\",\r\n hint: _this10.option(\"editing.texts.validationCancelChanges\"),\r\n onClick: function() {\r\n _this10._editingController.cancelEditData()\r\n }\r\n };\r\n return new _button.default($buttonElement, buttonOptions).$element()\r\n },\r\n position: {\r\n my: \"left top\",\r\n at: \"right top\",\r\n of: $container,\r\n offset: \"1 0\",\r\n collision: \"flip\",\r\n boundary: this._rowsView.element()\r\n },\r\n onPositioned: this._positionedHandler.bind(this)\r\n };\r\n return new _tooltip.default($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 isFormEditMode = this._editingController.isFormEditMode();\r\n if (isFixedColumns && !isFormEditMode) {\r\n var nextRowOptions = $cell.closest(\".dx-row\").next().data(\"options\");\r\n if (nextRowOptions && \"group\" === nextRowOptions.rowType) {\r\n $nextFixedRowElement = (0, _renderer.default)(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 = (0, _renderer.default)(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 {\r\n if (needRepaint) {\r\n e.component.repaint()\r\n }\r\n }\r\n }\r\n },\r\n _showValidationMessage: function($cell, messages, alignment, revertTooltip) {\r\n var _this11 = this;\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 ? \"
    \" : \"\") + (0, _string.encodeHtml)(message)\r\n });\r\n var $overlayElement = (0, _renderer.default)(\"
    \").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.default.mozilla || _browser.default.msie) ? -1 : 0\r\n },\r\n my: myPosition,\r\n at: atPosition\r\n },\r\n onPositioned: function(e) {\r\n _this11._positionedHandler(e, isOverlayVisible);\r\n _this11._shiftValidationMessageIfNeed(e.component.$content(), revertTooltip && revertTooltip.$content(), $cell)\r\n }\r\n };\r\n this._hideFixedGroupCell($cell, overlayOptions);\r\n new _overlay.default($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 && getWidthOfVisibleCells(this, options.element);\r\n var $overlayContentElement = isRevertButton ? options.component.overlayContent() : options.component.$content();\r\n var validationMessageWidth = $overlayContentElement.outerWidth(true);\r\n var needMaxWidth = !isRevertButton && validationMessageWidth > visibleTableWidth;\r\n var columnIndex = this._rowsView.getCellIndex((0, _renderer.default)(options.element).closest(\"td\"));\r\n var boundaryNonFixedColumnsInfo = getBoundaryNonFixedColumnsInfo(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 {\r\n 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 }\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 $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 revertTooltip;\r\n if (validationResult && validationResult.status === VALIDATION_STATUS.invalid || \"update\" === (null === change || void 0 === change ? void 0 : change.type) && !this._editingController.isSaving()) {\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 var _this12 = this;\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 $cell = $focus && $focus.is(\"td\") ? $focus : null;\r\n var column = $cell && this.getController(\"columns\").getVisibleColumns()[$cell.index()];\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(function() {\r\n (0, _deferred.when)(validatingController.validateCell(validator)).done(function(result) {\r\n validationResult = result;\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 _this12.updateCellState($element, validationResult, hideBorder);\r\n callBase.call(_this12, $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 _uiGrid_core2.default.getWidgetInstance($editor)\r\n }\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 = (0, _renderer.default)(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 that = this;\r\n var $rowElements;\r\n var $freeSpaceRowElement;\r\n var $freeSpaceRowElements;\r\n var $element = that.element();\r\n var $tooltipContent = $element && $element.find(\".\" + that.addWidgetPrefix(WIDGET_INVALID_MESSAGE_CLASS) + \" .dx-overlay-content\");\r\n that.callBase($table);\r\n if ($tooltipContent && $tooltipContent.length) {\r\n $rowElements = that._getRowElements();\r\n $freeSpaceRowElements = that._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 var _this13 = this;\r\n this.callBase.apply(this, arguments);\r\n (0, _common.deferUpdate)(function() {\r\n var $editor = $container.find(\".dx-widget\").first();\r\n var isEditorDisposed = $editor.length && !$editor.children().length;\r\n if (!isEditorDisposed) {\r\n _this13.getController(\"validating\").createValidator(cellOptions, $editor)\r\n }\r\n })\r\n },\r\n _cellPrepared: function($cell, parameters) {\r\n if (!this.getController(\"editing\").isFormEditMode()) {\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\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.virtual_columns_core.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.foreachColumnInfo = foreachColumnInfo;\r\nexports.createColumnsInfo = createColumnsInfo;\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction 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\n\r\nfunction 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 = (0, _extend.extend)({}, cell, {\r\n colspan: colspan\r\n })\r\n }\r\n newInfo[rowIndex].push(cell)\r\n } else {\r\n if (visibleIndex > endIndex) {\r\n return false\r\n }\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 (ui/tooltip.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _tooltip = _interopRequireDefault(require(\"./tooltip/tooltip\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _tooltip.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.state_storing.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = require(\"./ui.grid_core.state_storing_core\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar getDataState = function(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 (0, _extend.extend)(state, dataController.getUserState())\r\n};\r\nvar processLoadState = function(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 = function(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\nvar _default = {\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: _uiGrid_core.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((0, _extend.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 = (0, _extend.extend)({}, oldState, state);\r\n var oldStateHash = (0, _common.getKeyHash)(oldState);\r\n var newStateHash = (0, _common.getKeyHash)(newState);\r\n if (!(0, _common.equalByValue)(oldStateHash, newStateHash)) {\r\n (0, _extend.extend)(this._state, state);\r\n this.save()\r\n }\r\n } else {\r\n (0, _extend.extend)(this._state, state)\r\n }\r\n },\r\n applyState: function(state) {\r\n var that = this;\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 = that.getController(\"export\");\r\n var columnsController = that.getController(\"columns\");\r\n var dataController = that.getController(\"data\");\r\n var scrollingMode = that.option(\"scrolling.mode\");\r\n var isVirtualScrollingMode = \"virtual\" === scrollingMode || \"infinite\" === scrollingMode;\r\n var showPageSizeSelector = true === that.option(\"pager.visible\") && that.option(\"pager.showPageSizeSelector\");\r\n that.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 that.option(\"selectedRowKeys\", selectedRowKeys)\r\n }\r\n that.option(\"selectionFilter\", selectionFilter);\r\n if (allowedPageSizes && \"auto\" === that.option(\"pager.allowedPageSizes\")) {\r\n that.option(\"pager\").allowedPageSizes = allowedPageSizes\r\n }\r\n if (that.option(\"focusedRowEnabled\")) {\r\n that.option(\"focusedRowKey\", state.focusedRowKey)\r\n }\r\n that.component.endUpdate();\r\n searchText && that.option(\"searchPanel.text\", searchText);\r\n that.option(\"filterValue\", getFilterValue(that, state));\r\n that.option(\"filterPanel.filterEnabled\", state.filterPanel ? state.filterPanel.filterEnabled : true);\r\n that.option(\"paging.pageSize\", (!isVirtualScrollingMode || showPageSizeSelector) && (0, _type.isDefined)(state.pageSize) ? state.pageSize : that._initialPageSize);\r\n that.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 _this = this;\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.Deferred;\r\n this._restoreStateTimeoutID = setTimeout(function() {\r\n stateStoringController.load().always(function() {\r\n _this._restoreStateTimeoutID = null\r\n }).done(function() {\r\n callBase.call(_this);\r\n _this.stateLoaded.fire();\r\n deferred.resolve()\r\n }).fail(function(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 {\r\n if (!this.isStateLoading()) {\r\n callBase.call(this)\r\n }\r\n }\r\n },\r\n isLoading: function() {\r\n var that = this;\r\n var stateStoringController = that.getController(\"stateStoring\");\r\n return this.callBase() || stateStoringController.isLoading()\r\n },\r\n isStateLoading: function() {\r\n return (0, _type.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\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.column_headers.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.ColumnHeadersView = void 0;\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.column_headers\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar ColumnHeadersView = _uiGrid_core.default.views.columnHeadersView;\r\nexports.ColumnHeadersView = ColumnHeadersView;\r\n_uiData_grid.default.registerModule(\"columnHeaders\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/hierarchical_collection/ui.data_converter.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../../ui/widget/ui.errors\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DataConverter = _class.default.inherit({\r\n ctor: function() {\r\n this._dataStructure = [];\r\n this._itemsCount = 0;\r\n this._visibleItemsCount = 0\r\n },\r\n _indexByKey: {},\r\n _convertItemsToNodes: function(items, parentKey) {\r\n var that = this;\r\n (0, _iterator.each)(items, function(_, item) {\r\n var parentId = (0, _type.isDefined)(parentKey) ? parentKey : that._getParentId(item);\r\n var node = that._convertItemToNode(item, parentId);\r\n that._dataStructure.push(node);\r\n that._checkForDuplicateId(node.internalFields.key);\r\n that._indexByKey[node.internalFields.key] = that._dataStructure.length - 1;\r\n if (that._itemHasChildren(item)) {\r\n that._convertItemsToNodes(that._dataAccessors.getters.items(item), node.internalFields.key)\r\n }\r\n })\r\n },\r\n _checkForDuplicateId: function(key) {\r\n if ((0, _type.isDefined)(this._indexByKey[key])) {\r\n throw _ui.default.Error(\"E1040\", key)\r\n }\r\n },\r\n _getParentId: function(item) {\r\n return \"plain\" === this._dataType ? this._dataAccessors.getters.parentKey(item) : void 0\r\n },\r\n _itemHasChildren: function(item) {\r\n if (\"plain\" === this._dataType) {\r\n return\r\n }\r\n var items = this._dataAccessors.getters.items(item);\r\n return items && items.length\r\n },\r\n _getUniqueKey: function(item) {\r\n var keyGetter = this._dataAccessors.getters.key;\r\n var itemKey = keyGetter(item);\r\n var isCorrectKey = keyGetter && (itemKey || 0 === itemKey) && (0, _type.isPrimitive)(itemKey);\r\n return isCorrectKey ? itemKey : this.getItemsCount()\r\n },\r\n _convertItemToNode: function(item, parentKey) {\r\n this._itemsCount++;\r\n false !== item.visible && this._visibleItemsCount++;\r\n var that = this;\r\n var node = {\r\n internalFields: {\r\n disabled: that._dataAccessors.getters.disabled(item, {\r\n defaultValue: false\r\n }),\r\n expanded: that._dataAccessors.getters.expanded(item, {\r\n defaultValue: false\r\n }),\r\n selected: that._dataAccessors.getters.selected(item, {\r\n defaultValue: false\r\n }),\r\n key: that._getUniqueKey(item),\r\n parentKey: (0, _type.isDefined)(parentKey) ? parentKey : that._rootValue,\r\n item: that._makeObjectFromPrimitive(item),\r\n childrenKeys: []\r\n }\r\n };\r\n (0, _extend.extend)(node, item);\r\n delete node.items;\r\n return node\r\n },\r\n setChildrenKeys: function() {\r\n var that = this;\r\n (0, _iterator.each)(this._dataStructure, function(_, node) {\r\n if (node.internalFields.parentKey === that._rootValue) {\r\n return\r\n }\r\n var parent = that.getParentNode(node);\r\n parent && parent.internalFields.childrenKeys.push(node.internalFields.key)\r\n })\r\n },\r\n _makeObjectFromPrimitive: function(item) {\r\n if ((0, _type.isPrimitive)(item)) {\r\n var key = item;\r\n item = {};\r\n this._dataAccessors.setters.key(item, key)\r\n }\r\n return item\r\n },\r\n _convertToPublicNode: function(node, parent) {\r\n if (!node) {\r\n return null\r\n }\r\n var publicNode = {\r\n text: this._dataAccessors.getters.display(node),\r\n key: node.internalFields.key,\r\n selected: node.internalFields.selected,\r\n expanded: node.internalFields.expanded,\r\n disabled: node.internalFields.disabled,\r\n parent: parent || null,\r\n itemData: node.internalFields.item,\r\n children: [],\r\n items: []\r\n };\r\n if (publicNode.parent) {\r\n publicNode.parent.children.push(publicNode);\r\n publicNode.parent.items.push(publicNode)\r\n }\r\n return publicNode\r\n },\r\n convertToPublicNodes: function(data, parent) {\r\n if (!data.length) {\r\n return []\r\n }\r\n var that = this;\r\n var publicNodes = [];\r\n (0, _iterator.each)(data, function(_, node) {\r\n node = (0, _type.isPrimitive)(node) ? that._getByKey(node) : node;\r\n var publicNode = that._convertToPublicNode(node, parent);\r\n publicNode.children = that.convertToPublicNodes(node.internalFields.childrenKeys, publicNode);\r\n publicNodes.push(publicNode);\r\n node.internalFields.publicNode = publicNode\r\n });\r\n return publicNodes\r\n },\r\n setDataAccessors: function(accessors) {\r\n this._dataAccessors = accessors\r\n },\r\n _getByKey: function(key) {\r\n return this._dataStructure[this.getIndexByKey(key)] || null\r\n },\r\n getParentNode: function(node) {\r\n return this._getByKey(node.internalFields.parentKey)\r\n },\r\n getByKey: function getByKey(data, key) {\r\n if (null === key || void 0 === key) {\r\n return null\r\n }\r\n var result = null;\r\n var that = this;\r\n var getByKey = function(data, key) {\r\n (0, _iterator.each)(data, function(_, element) {\r\n var currentElementKey = element.internalFields && element.internalFields.key || that._dataAccessors.getters.key(element);\r\n if (currentElementKey.toString() === key.toString()) {\r\n result = element;\r\n return false\r\n }\r\n });\r\n return result\r\n };\r\n return getByKey(data, key)\r\n },\r\n getItemsCount: function() {\r\n return this._itemsCount\r\n },\r\n getVisibleItemsCount: function() {\r\n return this._visibleItemsCount\r\n },\r\n updateIndexByKey: function() {\r\n var that = this;\r\n this._indexByKey = {};\r\n (0, _iterator.each)(this._dataStructure, function(index, node) {\r\n that._checkForDuplicateId(node.internalFields.key);\r\n that._indexByKey[node.internalFields.key] = index\r\n })\r\n },\r\n updateChildrenKeys: function() {\r\n this._indexByKey = {};\r\n this.removeChildrenKeys();\r\n this.updateIndexByKey();\r\n this.setChildrenKeys()\r\n },\r\n removeChildrenKeys: function() {\r\n this._indexByKey = {};\r\n (0, _iterator.each)(this._dataStructure, function(index, node) {\r\n node.internalFields.childrenKeys = []\r\n })\r\n },\r\n getIndexByKey: function(key) {\r\n return this._indexByKey[key]\r\n },\r\n createPlainStructure: function(items, rootValue, dataType) {\r\n this._itemsCount = 0;\r\n this._visibleItemsCount = 0;\r\n this._rootValue = rootValue;\r\n this._dataType = dataType;\r\n this._indexByKey = {};\r\n this._convertItemsToNodes(items);\r\n this.setChildrenKeys();\r\n return this._dataStructure\r\n }\r\n});\r\nvar _default = DataConverter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.column_state_mixin.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COLUMN_INDICATORS_CLASS = \"dx-column-indicators\";\r\nvar GROUP_PANEL_ITEM_CLASS = \"dx-group-panel-item\";\r\nvar _default = {\r\n _applyColumnState: function(options) {\r\n var _that$component;\r\n var that = this;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var columnAlignment = that._getColumnAlignment(options.column.alignment, rtlEnabled);\r\n var parameters = (0, _extend.extend)(true, {\r\n columnAlignment: columnAlignment\r\n }, options);\r\n var isGroupPanelItem = parameters.rootElement.hasClass(GROUP_PANEL_ITEM_CLASS);\r\n var $indicatorsContainer = that._createIndicatorContainer(parameters, isGroupPanelItem);\r\n var $span = (0, _renderer.default)(\"\").addClass(that._getIndicatorClassName(options.name));\r\n var columnsController = null === (_that$component = that.component) || void 0 === _that$component ? void 0 : _that$component.getController(\"columns\");\r\n var indicatorAlignment = (null === columnsController || void 0 === columnsController ? void 0 : columnsController.getHeaderContentAlignment(columnAlignment)) || columnAlignment;\r\n parameters.container = $indicatorsContainer;\r\n parameters.indicator = $span;\r\n that._renderIndicator(parameters);\r\n $indicatorsContainer[(isGroupPanelItem || !options.showColumnLines) && \"left\" === indicatorAlignment ? \"appendTo\" : \"prependTo\"](options.rootElement);\r\n return $span\r\n },\r\n _getIndicatorClassName: _common.noop,\r\n _getColumnAlignment: function(alignment, rtlEnabled) {\r\n rtlEnabled = rtlEnabled || this.option(\"rtlEnabled\");\r\n return alignment && \"center\" !== alignment ? alignment : (0, _position.getDefaultAlignment)(rtlEnabled)\r\n },\r\n _createIndicatorContainer: function(options, ignoreIndicatorAlignment) {\r\n var $indicatorsContainer = this._getIndicatorContainer(options.rootElement);\r\n var indicatorAlignment = \"left\" === options.columnAlignment ? \"right\" : \"left\";\r\n if (!$indicatorsContainer.length) {\r\n $indicatorsContainer = (0, _renderer.default)(\"
    \").addClass(COLUMN_INDICATORS_CLASS)\r\n }\r\n this.setAria(\"role\", \"presentation\", $indicatorsContainer);\r\n return $indicatorsContainer.css(\"float\", options.showColumnLines && !ignoreIndicatorAlignment ? indicatorAlignment : null)\r\n },\r\n _getIndicatorContainer: function($cell) {\r\n return $cell && $cell.find(\".\" + COLUMN_INDICATORS_CLASS)\r\n },\r\n _getIndicatorElements: function($cell) {\r\n var $indicatorContainer = this._getIndicatorContainer($cell);\r\n return $indicatorContainer && $indicatorContainer.children()\r\n },\r\n _renderIndicator: function(options) {\r\n var $container = options.container;\r\n var $indicator = options.indicator;\r\n $container && $indicator && $container.append($indicator)\r\n },\r\n _updateIndicators: function(indicatorName) {\r\n var that = this;\r\n var columns = that.getColumns();\r\n var $cells = that.getColumnElements();\r\n var $cell;\r\n if (!$cells || columns.length !== $cells.length) {\r\n return\r\n }\r\n for (var i = 0; i < columns.length; i++) {\r\n $cell = $cells.eq(i);\r\n that._updateIndicator($cell, columns[i], indicatorName);\r\n var rowOptions = $cell.parent().data(\"options\");\r\n if (rowOptions && rowOptions.cells) {\r\n rowOptions.cells[$cell.index()].column = columns[i]\r\n }\r\n }\r\n },\r\n _updateIndicator: function($cell, column, indicatorName) {\r\n if (!column.command) {\r\n return this._applyColumnState({\r\n name: indicatorName,\r\n rootElement: $cell,\r\n column: column,\r\n showColumnLines: this.option(\"showColumnLines\")\r\n })\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/hierarchical_collection/ui.data_adapter.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../../ui/widget/ui.errors\"));\r\nvar _ui2 = _interopRequireDefault(require(\"../../ui/widget/ui.search_box_mixin\"));\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _store_helper = _interopRequireDefault(require(\"../../data/store_helper\"));\r\nvar _ui3 = _interopRequireDefault(require(\"./ui.data_converter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar EXPANDED = \"expanded\";\r\nvar SELECTED = \"selected\";\r\nvar DISABLED = \"disabled\";\r\nvar DataAdapter = _class.default.inherit({\r\n ctor: function(options) {\r\n this.options = {};\r\n (0, _extend.extend)(this.options, this._defaultOptions(), options);\r\n this.options.dataConverter.setDataAccessors(this.options.dataAccessors);\r\n this._selectedNodesKeys = [];\r\n this._expandedNodesKeys = [];\r\n this._dataStructure = [];\r\n this._createInternalDataStructure();\r\n this.getTreeNodes()\r\n },\r\n setOption: function(name, value) {\r\n this.options[name] = value;\r\n if (\"recursiveSelection\" === name) {\r\n this._updateSelection()\r\n }\r\n },\r\n _defaultOptions: function() {\r\n return {\r\n dataAccessors: void 0,\r\n items: [],\r\n multipleSelection: true,\r\n recursiveSelection: false,\r\n recursiveExpansion: false,\r\n rootValue: 0,\r\n searchValue: \"\",\r\n dataType: \"tree\",\r\n searchMode: \"contains\",\r\n dataConverter: new _ui3.default,\r\n onNodeChanged: _common.noop,\r\n sort: null\r\n }\r\n },\r\n _createInternalDataStructure: function() {\r\n this._initialDataStructure = this.options.dataConverter.createPlainStructure(this.options.items, this.options.rootValue, this.options.dataType);\r\n this._dataStructure = this.options.searchValue.length ? this.search(this.options.searchValue) : this._initialDataStructure;\r\n this.options.dataConverter._dataStructure = this._dataStructure;\r\n this._updateSelection();\r\n this._updateExpansion()\r\n },\r\n _updateSelection: function() {\r\n if (this.options.recursiveSelection) {\r\n this._setChildrenSelection();\r\n this._setParentSelection()\r\n }\r\n this._selectedNodesKeys = this._updateNodesKeysArray(SELECTED)\r\n },\r\n _updateExpansion: function(key) {\r\n if (this.options.recursiveExpansion) {\r\n key ? this._updateOneBranch(key) : this._setParentExpansion()\r\n }\r\n this._expandedNodesKeys = this._updateNodesKeysArray(EXPANDED)\r\n },\r\n _updateNodesKeysArray: function(property) {\r\n var that = this;\r\n var array = [];\r\n (0, _iterator.each)(that._getDataBySelectionMode(), function(_, node) {\r\n if (!that._isNodeVisible(node)) {\r\n return\r\n }\r\n if (node.internalFields[property]) {\r\n if (property === EXPANDED || that.options.multipleSelection) {\r\n array.push(node.internalFields.key)\r\n } else {\r\n array.length && that.toggleSelection(array[0], false, true);\r\n array = [node.internalFields.key]\r\n }\r\n }\r\n });\r\n return array\r\n },\r\n _getDataBySelectionMode: function() {\r\n return this.options.multipleSelection ? this.getData() : this.getFullData()\r\n },\r\n _isNodeVisible: function(node) {\r\n return false !== node.internalFields.item.visible\r\n },\r\n _getByKey: function(data, key) {\r\n return data === this._dataStructure ? this.options.dataConverter._getByKey(key) : this.options.dataConverter.getByKey(data, key)\r\n },\r\n _setChildrenSelection: function() {\r\n var that = this;\r\n (0, _iterator.each)(this._dataStructure, function(_, node) {\r\n if (!node.internalFields.childrenKeys.length) {\r\n return\r\n }\r\n var isSelected = node.internalFields.selected;\r\n true === isSelected && that._toggleChildrenSelection(node, isSelected)\r\n })\r\n },\r\n _setParentSelection: function() {\r\n var that = this;\r\n (0, _iterator.each)(this._dataStructure, function(_, node) {\r\n var parent = that.options.dataConverter.getParentNode(node);\r\n if (parent && node.internalFields.parentKey !== that.options.rootValue) {\r\n that._iterateParents(node, function(parent) {\r\n var newParentState = that._calculateSelectedState(parent);\r\n that._setFieldState(parent, SELECTED, newParentState)\r\n })\r\n }\r\n })\r\n },\r\n _setParentExpansion: function() {\r\n var that = this;\r\n (0, _iterator.each)(this._dataStructure, function(_, node) {\r\n if (!node.internalFields.expanded) {\r\n return\r\n }\r\n that._updateOneBranch(node.internalFields.key)\r\n })\r\n },\r\n _updateOneBranch: function(key) {\r\n var that = this;\r\n var node = this.getNodeByKey(key);\r\n that._iterateParents(node, function(parent) {\r\n that._setFieldState(parent, EXPANDED, true)\r\n })\r\n },\r\n _iterateChildren: function(node, recursive, callback, processedKeys) {\r\n if (!(0, _type.isFunction)(callback)) {\r\n return\r\n }\r\n var that = this;\r\n var nodeKey = node.internalFields.key;\r\n processedKeys = processedKeys || [];\r\n if (processedKeys.indexOf(nodeKey) === -1) {\r\n processedKeys.push(nodeKey);\r\n (0, _iterator.each)(node.internalFields.childrenKeys, function(_, key) {\r\n var child = that.getNodeByKey(key);\r\n callback(child);\r\n if (child.internalFields.childrenKeys.length && recursive) {\r\n that._iterateChildren(child, recursive, callback, processedKeys)\r\n }\r\n })\r\n }\r\n },\r\n _iterateParents: function(node, callback, processedKeys) {\r\n if (node.internalFields.parentKey === this.options.rootValue || !(0, _type.isFunction)(callback)) {\r\n return\r\n }\r\n processedKeys = processedKeys || [];\r\n var key = node.internalFields.key;\r\n if (processedKeys.indexOf(key) === -1) {\r\n processedKeys.push(key);\r\n var parent = this.options.dataConverter.getParentNode(node);\r\n if (parent) {\r\n callback(parent);\r\n if (parent.internalFields.parentKey !== this.options.rootValue) {\r\n this._iterateParents(parent, callback, processedKeys)\r\n }\r\n }\r\n }\r\n },\r\n _calculateSelectedState: function(node) {\r\n var itemsCount = node.internalFields.childrenKeys.length;\r\n var selectedItemsCount = 0;\r\n var invisibleItemsCount = 0;\r\n var result = false;\r\n for (var i = 0; i <= itemsCount - 1; i++) {\r\n var childNode = this.getNodeByKey(node.internalFields.childrenKeys[i]);\r\n var isChildInvisible = false === childNode.internalFields.item.visible;\r\n var childState = childNode.internalFields.selected;\r\n if (isChildInvisible) {\r\n invisibleItemsCount++;\r\n continue\r\n }\r\n if (childState) {\r\n selectedItemsCount++\r\n } else {\r\n if (void 0 === childState) {\r\n selectedItemsCount += .5\r\n }\r\n }\r\n }\r\n if (selectedItemsCount) {\r\n result = selectedItemsCount === itemsCount - invisibleItemsCount ? true : void 0\r\n }\r\n return result\r\n },\r\n _toggleChildrenSelection: function(node, state) {\r\n var that = this;\r\n this._iterateChildren(node, true, function(child) {\r\n if (that._isNodeVisible(child)) {\r\n that._setFieldState(child, SELECTED, state)\r\n }\r\n })\r\n },\r\n _setFieldState: function(node, field, state) {\r\n if (node.internalFields[field] === state) {\r\n return\r\n }\r\n node.internalFields[field] = state;\r\n if (node.internalFields.publicNode) {\r\n node.internalFields.publicNode[field] = state\r\n }\r\n this.options.dataAccessors.setters[field](node.internalFields.item, state);\r\n this.options.onNodeChanged(node)\r\n },\r\n _markChildren: function(keys) {\r\n var that = this;\r\n (0, _iterator.each)(keys, function(_, key) {\r\n var index = that.getIndexByKey(key);\r\n var node = that.getNodeByKey(key);\r\n that._dataStructure[index] = 0;\r\n node.internalFields.childrenKeys.length && that._markChildren(node.internalFields.childrenKeys)\r\n })\r\n },\r\n _removeNode: function(key) {\r\n var node = this.getNodeByKey(key);\r\n this._dataStructure[this.getIndexByKey(key)] = 0;\r\n this._markChildren(node.internalFields.childrenKeys);\r\n var that = this;\r\n var counter = 0;\r\n var items = (0, _extend.extend)([], this._dataStructure);\r\n (0, _iterator.each)(items, function(index, item) {\r\n if (!item) {\r\n that._dataStructure.splice(index - counter, 1);\r\n counter++\r\n }\r\n })\r\n },\r\n _addNode: function(item) {\r\n var dataConverter = this.options.dataConverter;\r\n var node = dataConverter._convertItemToNode(item, this.options.dataAccessors.getters.parentKey(item));\r\n this._dataStructure = this._dataStructure.concat(node);\r\n this._initialDataStructure = this._initialDataStructure.concat(node);\r\n dataConverter._dataStructure = dataConverter._dataStructure.concat(node)\r\n },\r\n _updateFields: function() {\r\n this.options.dataConverter.updateChildrenKeys();\r\n this._updateSelection();\r\n this._updateExpansion()\r\n },\r\n getSelectedNodesKeys: function() {\r\n return this._selectedNodesKeys\r\n },\r\n getExpandedNodesKeys: function() {\r\n return this._expandedNodesKeys\r\n },\r\n getData: function() {\r\n return this._dataStructure\r\n },\r\n getFullData: function() {\r\n return this._initialDataStructure\r\n },\r\n getNodeByItem: function(item) {\r\n var result = null;\r\n (0, _iterator.each)(this._dataStructure, function(_, node) {\r\n if (node.internalFields.item === item) {\r\n result = node;\r\n return false\r\n }\r\n });\r\n return result\r\n },\r\n getNodesByItems: function(items) {\r\n var that = this;\r\n var nodes = [];\r\n (0, _iterator.each)(items, function(_, item) {\r\n var node = that.getNodeByItem(item);\r\n node && nodes.push(node)\r\n });\r\n return nodes\r\n },\r\n getNodeByKey: function(key, data) {\r\n return this._getByKey(data || this._getDataBySelectionMode(), key)\r\n },\r\n getTreeNodes: function() {\r\n return this.options.dataConverter.convertToPublicNodes(this.getRootNodes())\r\n },\r\n getItemsCount: function() {\r\n return this.options.dataConverter.getItemsCount()\r\n },\r\n getVisibleItemsCount: function() {\r\n return this.options.dataConverter.getVisibleItemsCount()\r\n },\r\n getPublicNode: function(node) {\r\n return node.internalFields.publicNode\r\n },\r\n getRootNodes: function() {\r\n return this.getChildrenNodes(this.options.rootValue)\r\n },\r\n getChildrenNodes: function(parentKey) {\r\n return (0, _query.default)(this._dataStructure).filter([\"internalFields.parentKey\", parentKey]).toArray()\r\n },\r\n getIndexByKey: function(key) {\r\n return this.options.dataConverter.getIndexByKey(key)\r\n },\r\n addItem: function(item) {\r\n this._addNode(item);\r\n this._updateFields()\r\n },\r\n removeItem: function(key) {\r\n this._removeNode(key);\r\n this._updateFields()\r\n },\r\n toggleSelection: function(key, state, selectRecursive) {\r\n var isSingleModeUnselect = this._isSingleModeUnselect(state);\r\n var node = this._getByKey(selectRecursive || isSingleModeUnselect ? this._initialDataStructure : this._dataStructure, key);\r\n this._setFieldState(node, SELECTED, state);\r\n if (this.options.recursiveSelection && !selectRecursive) {\r\n state ? this._setChildrenSelection() : this._toggleChildrenSelection(node, state);\r\n this._setParentSelection()\r\n }\r\n this._selectedNodesKeys = this._updateNodesKeysArray(SELECTED)\r\n },\r\n _isSingleModeUnselect: function(selectionState) {\r\n return !this.options.multipleSelection && !selectionState\r\n },\r\n toggleNodeDisabledState: function(key, state) {\r\n var node = this.getNodeByKey(key);\r\n this._setFieldState(node, DISABLED, state)\r\n },\r\n toggleSelectAll: function(state) {\r\n if (!(0, _type.isDefined)(state)) {\r\n return\r\n }\r\n var that = this;\r\n var lastSelectedKey = that._selectedNodesKeys[that._selectedNodesKeys.length - 1];\r\n var dataStructure = that._isSingleModeUnselect(state) ? this._initialDataStructure : this._dataStructure;\r\n (0, _iterator.each)(dataStructure, function(index, node) {\r\n if (!that._isNodeVisible(node)) {\r\n return\r\n }\r\n that._setFieldState(node, SELECTED, state)\r\n });\r\n that._selectedNodesKeys = that._updateNodesKeysArray(SELECTED);\r\n if (!state && that.options.selectionRequired) {\r\n that.toggleSelection(lastSelectedKey, true)\r\n }\r\n },\r\n isAllSelected: function() {\r\n if (this.getSelectedNodesKeys().length) {\r\n return this.getSelectedNodesKeys().length === this.getVisibleItemsCount() ? true : void 0\r\n } else {\r\n return false\r\n }\r\n },\r\n toggleExpansion: function(key, state) {\r\n var node = this.getNodeByKey(key);\r\n this._setFieldState(node, EXPANDED, state);\r\n if (state) {\r\n this._updateExpansion(key)\r\n }\r\n this._expandedNodesKeys = this._updateNodesKeysArray(EXPANDED)\r\n },\r\n isFiltered: function(item) {\r\n return !this.options.searchValue.length || !!this._filterDataStructure(this.options.searchValue, [item]).length\r\n },\r\n _createCriteria: function(selector, value, operation) {\r\n var searchFilter = [];\r\n if (!Array.isArray(selector)) {\r\n return [selector, operation, value]\r\n }(0, _iterator.each)(selector, function(i, item) {\r\n searchFilter.push([item, operation, value], \"or\")\r\n });\r\n searchFilter.pop();\r\n return searchFilter\r\n },\r\n _filterDataStructure: function(filterValue, dataStructure) {\r\n var selector = this.options.searchExpr || this.options.dataAccessors.getters.display;\r\n var operation = _ui2.default.getOperationBySearchMode(this.options.searchMode);\r\n var criteria = this._createCriteria(selector, filterValue, operation);\r\n dataStructure = dataStructure || this._initialDataStructure;\r\n return (0, _query.default)(dataStructure).filter(criteria).toArray()\r\n },\r\n search: function(searchValue) {\r\n var that = this;\r\n var matches = this._filterDataStructure(searchValue);\r\n var dataConverter = this.options.dataConverter;\r\n\r\n function lookForParents(matches, index) {\r\n var length = matches.length;\r\n while (index < length) {\r\n var node = matches[index];\r\n if (node.internalFields.parentKey === that.options.rootValue) {\r\n index++;\r\n continue\r\n }\r\n var parent = dataConverter.getParentNode(node);\r\n if (!parent) {\r\n _ui.default.log(\"W1007\", node.internalFields.parentKey, node.internalFields.key);\r\n index++;\r\n continue\r\n }\r\n if (!parent.internalFields.expanded) {\r\n that._setFieldState(parent, EXPANDED, true)\r\n }\r\n if ((0, _array.inArray)(parent, matches) > -1) {\r\n index++;\r\n continue\r\n }\r\n matches.splice(index, 0, parent);\r\n lookForParents(matches, index)\r\n }\r\n }\r\n lookForParents(matches, 0);\r\n if (this.options.sort) {\r\n matches = _store_helper.default.queryByOptions((0, _query.default)(matches), {\r\n sort: this.options.sort\r\n }).toArray()\r\n }\r\n dataConverter._indexByKey = {};\r\n (0, _iterator.each)(matches, function(index, node) {\r\n node.internalFields.childrenKeys = [];\r\n dataConverter._indexByKey[node.internalFields.key] = index\r\n });\r\n dataConverter._dataStructure = matches;\r\n dataConverter.setChildrenKeys();\r\n return dataConverter._dataStructure\r\n }\r\n});\r\nvar _default = DataAdapter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.grid_view.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.grid_view\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"gridView\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (localization/language_codes.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getLanguageId = getLanguageId;\r\nvar _core = _interopRequireDefault(require(\"./core\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\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\n\r\nfunction getLanguageId() {\r\n return LANGUAGE_CODES[_core.default.locale()]\r\n}\r\n","/**\r\n * DevExtreme (ui/menu.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./menu/ui.menu\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.virtual_scrolling.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiData_grid2 = _interopRequireDefault(require(\"./ui.data_grid.data_source_adapter\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.virtual_scrolling\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"virtualScrolling\", _uiGrid_core.default);\r\n_uiData_grid2.default.extend(_uiGrid_core.default.extenders.dataSourceAdapter);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.sorting.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.sorting\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"sorting\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.header_panel.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _toolbar = _interopRequireDefault(require(\"../toolbar\"));\r\nvar _uiGrid_core = require(\"./ui.grid_core.columns_view\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _visibility_change = require(\"../../events/visibility_change\");\r\nrequire(\"../drop_down_menu\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar HEADER_PANEL_CLASS = \"header-panel\";\r\nvar TOOLBAR_BUTTON_CLASS = \"toolbar-button\";\r\nvar HeaderPanel = _uiGrid_core.ColumnsView.inherit({\r\n _getToolbarItems: function() {\r\n return []\r\n },\r\n _getButtonContainer: function() {\r\n return (0, _renderer.default)(\"
    \").addClass(this.addWidgetPrefix(TOOLBAR_BUTTON_CLASS))\r\n },\r\n _getToolbarButtonClass: function(specificClass) {\r\n var secondClass = specificClass ? \" \" + specificClass : \"\";\r\n return this.addWidgetPrefix(TOOLBAR_BUTTON_CLASS) + secondClass\r\n },\r\n _getToolbarOptions: function() {\r\n var options = {\r\n toolbarOptions: {\r\n items: this._getToolbarItems(),\r\n onItemRendered: function(e) {\r\n var itemRenderedCallback = e.itemData.onItemRendered;\r\n if (itemRenderedCallback) {\r\n itemRenderedCallback(e)\r\n }\r\n }\r\n }\r\n };\r\n this.executeAction(\"onToolbarPreparing\", options);\r\n if (options.toolbarOptions && !(0, _type.isDefined)(options.toolbarOptions.visible)) {\r\n var toolbarItems = options.toolbarOptions.items;\r\n options.toolbarOptions.visible = !!(toolbarItems && toolbarItems.length)\r\n }\r\n return options.toolbarOptions\r\n },\r\n _renderCore: function() {\r\n if (!this._toolbar) {\r\n this.element().addClass(this.addWidgetPrefix(HEADER_PANEL_CLASS));\r\n this._toolbar = this._createComponent((0, _renderer.default)(\"
    \").appendTo(this.element()), _toolbar.default, this._toolbarOptions)\r\n } else {\r\n this._toolbar.option(this._toolbarOptions)\r\n }\r\n },\r\n _columnOptionChanged: _common.noop,\r\n _handleDataChanged: function() {\r\n if (this._requireReady) {\r\n this.render()\r\n }\r\n },\r\n init: function() {\r\n this.callBase();\r\n this.createAction(\"onToolbarPreparing\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n render: function() {\r\n this._toolbarOptions = this._getToolbarOptions();\r\n this.callBase.apply(this, arguments)\r\n },\r\n setToolbarItemDisabled: function(name, optionValue) {\r\n var toolbarInstance = this._toolbar;\r\n if (toolbarInstance) {\r\n var items = toolbarInstance.option(\"items\") || [];\r\n var itemIndex = items.indexOf(items.filter(function(item) {\r\n return item.name === name\r\n })[0]);\r\n if (itemIndex >= 0) {\r\n var itemOptionPrefix = \"items[\" + itemIndex + \"]\";\r\n if (toolbarInstance.option(itemOptionPrefix + \".options\")) {\r\n toolbarInstance.option(itemOptionPrefix + \".options.disabled\", optionValue)\r\n } else {\r\n toolbarInstance.option(itemOptionPrefix + \".disabled\", optionValue)\r\n }\r\n }\r\n }\r\n },\r\n updateToolbarDimensions: function() {\r\n if (this._toolbar) {\r\n (0, _visibility_change.triggerResizeEvent)(this.getHeaderPanel())\r\n }\r\n },\r\n getHeaderPanel: function() {\r\n return this.element()\r\n },\r\n getHeight: function() {\r\n return this.getElementHeight()\r\n },\r\n optionChanged: function(args) {\r\n if (\"onToolbarPreparing\" === args.name) {\r\n this._invalidate();\r\n args.handled = true\r\n }\r\n this.callBase(args)\r\n },\r\n isVisible: function() {\r\n return this._toolbarOptions && this._toolbarOptions.visible\r\n },\r\n allowDragging: _common.noop\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {}\r\n },\r\n views: {\r\n headerPanel: HeaderPanel\r\n },\r\n extenders: {\r\n controllers: {\r\n resizing: {\r\n _updateDimensionsCore: function() {\r\n this.callBase.apply(this, arguments);\r\n this.getView(\"headerPanel\").updateToolbarDimensions()\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.filter_row.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.filter_row\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"filterRow\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.keyboard_navigation.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _selectors = require(\"../widget/selectors\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar accessibility = _interopRequireWildcard(require(\"../shared/accessibility\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _short = require(\"../../events/short\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar ROWS_VIEW_CLASS = \"rowsview\";\r\nvar EDIT_FORM_CLASS = \"edit-form\";\r\nvar GROUP_FOOTER_CLASS = \"group-footer\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar DATA_ROW_CLASS = \"dx-data-row\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar HEADER_ROW_CLASS = \"dx-header-row\";\r\nvar EDIT_FORM_ITEM_CLASS = \"edit-form-item\";\r\nvar MASTER_DETAIL_ROW_CLASS = \"dx-master-detail-row\";\r\nvar FREESPACE_ROW_CLASS = \"dx-freespace-row\";\r\nvar VIRTUAL_ROW_CLASS = \"dx-virtual-row\";\r\nvar MASTER_DETAIL_CELL_CLASS = \"dx-master-detail-cell\";\r\nvar EDITOR_CELL_CLASS = \"dx-editor-cell\";\r\nvar DROPDOWN_EDITOR_OVERLAY_CLASS = \"dx-dropdowneditor-overlay\";\r\nvar COMMAND_EXPAND_CLASS = \"dx-command-expand\";\r\nvar COMMAND_SELECT_CLASS = \"dx-command-select\";\r\nvar COMMAND_EDIT_CLASS = \"dx-command-edit\";\r\nvar COMMAND_CELL_SELECTOR = \"[class^=dx-command]\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar DATEBOX_WIDGET_NAME = \"dxDateBox\";\r\nvar FOCUS_STATE_CLASS = \"dx-state-focused\";\r\nvar WIDGET_CLASS = \"dx-widget\";\r\nvar REVERT_BUTTON_CLASS = \"dx-revert-button\";\r\nvar FAST_EDITING_DELETE_KEY = \"delete\";\r\nvar INTERACTIVE_ELEMENTS_SELECTOR = \"input:not([type='hidden']), textarea, a, select, button, [tabindex]\";\r\nvar EDIT_MODE_ROW = \"row\";\r\nvar EDIT_MODE_FORM = \"form\";\r\nvar EDIT_MODE_BATCH = \"batch\";\r\nvar EDIT_MODE_CELL = \"cell\";\r\nvar FOCUS_TYPE_ROW = \"row\";\r\nvar FOCUS_TYPE_CELL = \"cell\";\r\nvar COLUMN_HEADERS_VIEW = \"columnHeadersView\";\r\n\r\nfunction isGroupRow($row) {\r\n return $row && $row.hasClass(GROUP_ROW_CLASS)\r\n}\r\n\r\nfunction isDetailRow($row) {\r\n return $row && $row.hasClass(MASTER_DETAIL_ROW_CLASS)\r\n}\r\n\r\nfunction isDataRow($row) {\r\n return $row && !isGroupRow($row) && !isDetailRow($row)\r\n}\r\n\r\nfunction isNotFocusedRow($row) {\r\n return !$row || $row.hasClass(FREESPACE_ROW_CLASS) || $row.hasClass(VIRTUAL_ROW_CLASS)\r\n}\r\n\r\nfunction isCellElement($element) {\r\n return $element.length && \"TD\" === $element[0].tagName\r\n}\r\n\r\nfunction isEditorCell(that, $cell) {\r\n return !that._isRowEditMode() && $cell && !$cell.hasClass(COMMAND_SELECT_CLASS) && $cell.hasClass(EDITOR_CELL_CLASS)\r\n}\r\n\r\nfunction isElementDefined($element) {\r\n return (0, _type.isDefined)($element) && $element.length > 0\r\n}\r\n\r\nfunction isMobile() {\r\n return \"desktop\" !== _devices.default.current().deviceType\r\n}\r\n\r\nfunction isCellInHeaderRow($cell) {\r\n return !!$cell.parent(\".\".concat(HEADER_ROW_CLASS)).length\r\n}\r\n\r\nfunction isFixedColumnIndexOffsetRequired(that, column) {\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n var result = false;\r\n if (rtlEnabled) {\r\n result = !(\"right\" === column.fixedPosition || (0, _type.isDefined)(column.command) && !(0, _type.isDefined)(column.fixedPosition))\r\n } else {\r\n result = !(!(0, _type.isDefined)(column.fixedPosition) || \"left\" === column.fixedPosition)\r\n }\r\n return result\r\n}\r\nvar KeyboardNavigationController = _uiGrid_core.default.ViewController.inherit({\r\n init: function() {\r\n var _this = this;\r\n this._dataController = this.getController(\"data\");\r\n this._selectionController = this.getController(\"selection\");\r\n this._editingController = this.getController(\"editing\");\r\n this._headerPanel = this.getView(\"headerPanel\");\r\n this._columnsController = this.getController(\"columns\");\r\n this._editorFactory = this.getController(\"editorFactory\");\r\n if (this.isKeyboardEnabled()) {\r\n accessibility.subscribeVisibilityChange();\r\n this._updateFocusTimeout = null;\r\n this._fastEditingStarted = false;\r\n this._focusedCellPosition = {};\r\n this._canceledCellPosition = null;\r\n var elementFocused = function($element) {\r\n _this.setupFocusedView();\r\n if (_this._isNeedScroll) {\r\n if ($element.is(\":visible\") && _this._focusedView && _this._focusedView.getScrollable) {\r\n _this._focusedView._scrollToElement($element);\r\n _this._isNeedScroll = false\r\n }\r\n }\r\n };\r\n this._editorFactory.focused.add(elementFocused);\r\n this._initViewHandlers();\r\n this._initDocumentHandlers();\r\n this.createAction(\"onKeyDown\")\r\n }\r\n },\r\n _initViewHandlers: function() {\r\n var _this2 = this;\r\n var rowsView = this.getView(\"rowsView\");\r\n var rowsViewFocusHandler = function(event) {\r\n var $element = (0, _renderer.default)(event.target);\r\n var isRelatedTargetInRowsView = (0, _renderer.default)(event.relatedTarget).closest(rowsView.element()).length;\r\n var isCommandButton = $element.hasClass(\"dx-link\");\r\n if (isCommandButton && !isRelatedTargetInRowsView) {\r\n var $focusedCell = _this2._getFocusedCell();\r\n $focusedCell = !isElementDefined($focusedCell) ? rowsView.getCellElements(0).filter(\"[tabindex]\").eq(0) : $focusedCell;\r\n if (!$element.closest($focusedCell).length) {\r\n event.preventDefault();\r\n _events_engine.default.trigger($focusedCell, \"focus\")\r\n }\r\n }\r\n };\r\n rowsView.renderCompleted.add(function(e) {\r\n var $rowsView = rowsView.element();\r\n var isFullUpdate = !e || \"refresh\" === e.changeType;\r\n var isFocusedViewCorrect = _this2._focusedView && _this2._focusedView.name === rowsView.name;\r\n var needUpdateFocus = false;\r\n var isAppend = e && (\"append\" === e.changeType || \"prepend\" === e.changeType);\r\n var $focusedElement = (0, _renderer.default)(\":focus\");\r\n var isFocusedElementCorrect = !$focusedElement.length || $focusedElement.closest($rowsView).length || _browser.default.msie && $focusedElement.is(\"body\");\r\n _events_engine.default.off($rowsView, \"focusin\", rowsViewFocusHandler);\r\n _events_engine.default.on($rowsView, \"focusin\", rowsViewFocusHandler);\r\n _this2._initPointerEventHandler();\r\n _this2._initKeyDownHandler();\r\n _this2._setRowsViewAttributes();\r\n if (isFocusedViewCorrect && isFocusedElementCorrect) {\r\n needUpdateFocus = _this2._isNeedFocus ? !isAppend : _this2._isHiddenFocus && isFullUpdate;\r\n needUpdateFocus && _this2._updateFocus(true)\r\n }\r\n })\r\n },\r\n _initDocumentHandlers: function() {\r\n var _this3 = this;\r\n var document = _dom_adapter.default.getDocument();\r\n this._documentClickHandler = this.createAction(function(e) {\r\n var $target = (0, _renderer.default)(e.event.target);\r\n var isCurrentRowsViewClick = _this3._isEventInCurrentGrid(e.event) && $target.closest(\".\".concat(_this3.addWidgetPrefix(ROWS_VIEW_CLASS))).length;\r\n var isEditorOverlay = $target.closest(\".\".concat(DROPDOWN_EDITOR_OVERLAY_CLASS)).length;\r\n var columnsResizerController = _this3.getController(\"columnsResizer\");\r\n var isColumnResizing = !!columnsResizerController && columnsResizerController.isResizing();\r\n if (!isCurrentRowsViewClick && !isEditorOverlay && !isColumnResizing) {\r\n _this3._resetFocusedView()\r\n }\r\n });\r\n _events_engine.default.on(document, (0, _index.addNamespace)(_pointer.default.down, \"dxDataGridKeyboardNavigation\"), this._documentClickHandler)\r\n },\r\n _setRowsViewAttributes: function() {\r\n var $rowsView = this._getRowsViewElement();\r\n var isGridEmpty = !this._dataController.getVisibleRows().length;\r\n if (isGridEmpty) {\r\n this._applyTabIndexToElement($rowsView)\r\n }\r\n },\r\n _initPointerEventHandler: function() {\r\n var pointerEventName = !isMobile() ? _pointer.default.down : _click.name;\r\n var clickSelector = \".\".concat(ROW_CLASS, \" > td, .\").concat(ROW_CLASS);\r\n var $rowsView = this._getRowsViewElement();\r\n if (!(0, _type.isDefined)(this._pointerEventAction)) {\r\n this._pointerEventAction = this.createAction(this._pointerEventHandler)\r\n }\r\n _events_engine.default.off($rowsView, (0, _index.addNamespace)(pointerEventName, \"dxDataGridKeyboardNavigation\"), this._pointerEventAction);\r\n _events_engine.default.on($rowsView, (0, _index.addNamespace)(pointerEventName, \"dxDataGridKeyboardNavigation\"), clickSelector, this._pointerEventAction)\r\n },\r\n _initKeyDownHandler: function() {\r\n var _this4 = this;\r\n var $rowsView = this._getRowsViewElement();\r\n _short.keyboard.off(this._keyDownListener);\r\n this._keyDownListener = _short.keyboard.on($rowsView, null, function(e) {\r\n return _this4._keyDownHandler(e)\r\n })\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n this._resetFocusedView();\r\n _short.keyboard.off(this._keyDownListener);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.down, \"dxDataGridKeyboardNavigation\"), this._documentClickHandler);\r\n clearTimeout(this._updateFocusTimeout);\r\n accessibility.unsubscribeVisibilityChange()\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"keyboardNavigation\":\r\n case \"useLegacyKeyboardNavigation\":\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n },\r\n isRowFocusType: function() {\r\n return this.focusType === FOCUS_TYPE_ROW\r\n },\r\n isCellFocusType: function() {\r\n return this.focusType === FOCUS_TYPE_CELL\r\n },\r\n setRowFocusType: function() {\r\n if (this.option(\"focusedRowEnabled\")) {\r\n this.focusType = FOCUS_TYPE_ROW\r\n }\r\n },\r\n setCellFocusType: function() {\r\n this.focusType = FOCUS_TYPE_CELL\r\n },\r\n _keyDownHandler: function(e) {\r\n var isEditing = this._editingController.isEditing();\r\n var needStopPropagation = true;\r\n var originalEvent = e.originalEvent;\r\n var isHandled = this._processOnKeyDown(e);\r\n if (originalEvent.isDefaultPrevented()) {\r\n return\r\n }\r\n this._isNeedFocus = true;\r\n this._isNeedScroll = true;\r\n this._updateFocusedCellPositionByTarget(originalEvent.target);\r\n if (!isHandled) {\r\n switch (e.keyName) {\r\n case \"leftArrow\":\r\n case \"rightArrow\":\r\n this._leftRightKeysHandler(e, isEditing);\r\n break;\r\n case \"upArrow\":\r\n case \"downArrow\":\r\n if (e.ctrl) {\r\n accessibility.selectView(\"rowsView\", this, originalEvent)\r\n } else {\r\n this._upDownKeysHandler(e, isEditing)\r\n }\r\n break;\r\n case \"pageUp\":\r\n case \"pageDown\":\r\n this._pageUpDownKeyHandler(e);\r\n break;\r\n case \"space\":\r\n this._spaceKeyHandler(e, isEditing);\r\n break;\r\n case \"A\":\r\n if (e.ctrl) {\r\n this._ctrlAKeyHandler(e, isEditing)\r\n } else {\r\n this._beginFastEditing(e.originalEvent)\r\n }\r\n break;\r\n case \"tab\":\r\n this._tabKeyHandler(e, isEditing);\r\n break;\r\n case \"enter\":\r\n this._enterKeyHandler(e, isEditing);\r\n break;\r\n case \"escape\":\r\n this._escapeKeyHandler(e, isEditing);\r\n break;\r\n case \"F\":\r\n if (e.ctrl) {\r\n this._ctrlFKeyHandler(e)\r\n } else {\r\n this._beginFastEditing(e.originalEvent)\r\n }\r\n break;\r\n case \"F2\":\r\n this._f2KeyHandler();\r\n break;\r\n case \"del\":\r\n case \"backspace\":\r\n if (this._isFastEditingAllowed() && !this._isFastEditingStarted()) {\r\n this._beginFastEditing(originalEvent, true)\r\n }\r\n break;\r\n default:\r\n if (!this._beginFastEditing(originalEvent)) {\r\n this._isNeedFocus = false;\r\n this._isNeedScroll = false;\r\n needStopPropagation = false\r\n }\r\n }\r\n if (needStopPropagation) {\r\n originalEvent.stopPropagation()\r\n }\r\n }\r\n },\r\n _processOnKeyDown: function(eventArgs) {\r\n var originalEvent = eventArgs.originalEvent;\r\n var args = {\r\n handled: false,\r\n event: originalEvent\r\n };\r\n this.executeAction(\"onKeyDown\", args);\r\n eventArgs.ctrl = originalEvent.ctrlKey;\r\n eventArgs.alt = originalEvent.altKey;\r\n eventArgs.shift = originalEvent.shiftKey;\r\n return !!args.handled\r\n },\r\n _closeEditCell: function() {\r\n var _this5 = this;\r\n setTimeout(function() {\r\n _this5._editingController.closeEditCell()\r\n })\r\n },\r\n _leftRightKeysHandler: function(eventArgs, isEditing) {\r\n var rowIndex = this.getVisibleRowIndex();\r\n var $event = eventArgs.originalEvent;\r\n var $row = this._focusedView && this._focusedView.getRow(rowIndex);\r\n var directionCode = this._getDirectionCodeByKey(eventArgs.keyName);\r\n var isEditingNavigationMode = this._isFastEditingStarted();\r\n var allowNavigate = (!isEditing || isEditingNavigationMode) && isDataRow($row);\r\n if (allowNavigate) {\r\n this.setCellFocusType();\r\n isEditingNavigationMode && this._closeEditCell();\r\n if (this._isVirtualColumnRender()) {\r\n this._processVirtualHorizontalPosition(directionCode)\r\n }\r\n var $cell = this._getNextCell(directionCode);\r\n if (isElementDefined($cell)) {\r\n this._arrowKeysHandlerFocusCell($event, $cell, directionCode)\r\n }\r\n $event && $event.preventDefault()\r\n }\r\n },\r\n _upDownKeysHandler: function(eventArgs, isEditing) {\r\n var rowIndex = this._focusedCellPosition.rowIndex;\r\n var visibleRowIndex = this.getVisibleRowIndex();\r\n var $row = this._focusedView && this._focusedView.getRow(visibleRowIndex);\r\n var $event = eventArgs.originalEvent;\r\n var isUpArrow = \"upArrow\" === eventArgs.keyName;\r\n var dataSource = this._dataController.dataSource();\r\n var isEditingNavigationMode = this._isFastEditingStarted();\r\n var allowNavigate = (!isEditing || isEditingNavigationMode) && $row && !isDetailRow($row);\r\n if (allowNavigate) {\r\n isEditingNavigationMode && this._closeEditCell();\r\n if (!this._navigateNextCell($event, eventArgs.keyName)) {\r\n if (this._isVirtualRowRender() && isUpArrow && dataSource && !dataSource.isLoading()) {\r\n var rowHeight = $row.outerHeight();\r\n rowIndex = this._focusedCellPosition.rowIndex - 1;\r\n this._scrollBy(0, -rowHeight, rowIndex, $event)\r\n }\r\n }\r\n $event && $event.preventDefault()\r\n }\r\n },\r\n _pageUpDownKeyHandler: function(eventArgs) {\r\n var pageIndex = this._dataController.pageIndex();\r\n var pageCount = this._dataController.pageCount();\r\n var pagingEnabled = this.option(\"paging.enabled\");\r\n var isPageUp = \"pageUp\" === eventArgs.keyName;\r\n var pageStep = isPageUp ? -1 : 1;\r\n var scrollable = this.getView(\"rowsView\").getScrollable();\r\n if (pagingEnabled && !this._isVirtualScrolling()) {\r\n if ((isPageUp ? pageIndex > 0 : pageIndex < pageCount - 1) && !this._isVirtualScrolling()) {\r\n this._dataController.pageIndex(pageIndex + pageStep);\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n } else {\r\n if (scrollable && scrollable._container().height() < scrollable.$content().height()) {\r\n this._scrollBy(0, scrollable._container().height() * pageStep);\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n }\r\n },\r\n _spaceKeyHandler: function(eventArgs, isEditing) {\r\n var rowIndex = this.getVisibleRowIndex();\r\n var $target = (0, _renderer.default)(eventArgs.originalEvent && eventArgs.originalEvent.target);\r\n if (this.option(\"selection\") && \"none\" !== this.option(\"selection\").mode && !isEditing) {\r\n var isFocusedRowElement = \"row\" === this._getElementType($target) && this.isRowFocusType() && isDataRow($target);\r\n var isFocusedSelectionCell = $target.hasClass(COMMAND_SELECT_CLASS);\r\n if (isFocusedSelectionCell && \"onClick\" === this.option(\"selection.showCheckBoxesMode\")) {\r\n this._selectionController.startSelectionWithCheckboxes()\r\n }\r\n if (isFocusedRowElement || $target.parent().hasClass(DATA_ROW_CLASS) || $target.hasClass(this.addWidgetPrefix(ROWS_VIEW_CLASS))) {\r\n this._selectionController.changeItemSelection(rowIndex, {\r\n shift: eventArgs.shift,\r\n control: eventArgs.ctrl\r\n });\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n } else {\r\n this._beginFastEditing(eventArgs.originalEvent)\r\n }\r\n },\r\n _ctrlAKeyHandler: function(eventArgs, isEditing) {\r\n if (!isEditing && eventArgs.ctrl && !eventArgs.alt && \"multiple\" === this.option(\"selection.mode\") && this.option(\"selection.allowSelectAll\")) {\r\n this._selectionController.selectAll();\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n },\r\n _tabKeyHandler: function(eventArgs, isEditing) {\r\n var editingOptions = this.option(\"editing\");\r\n var direction = eventArgs.shift ? \"previous\" : \"next\";\r\n var isCellPositionDefined = (0, _type.isDefined)(this._focusedCellPosition) && !(0, _type.isEmptyObject)(this._focusedCellPosition);\r\n var isOriginalHandlerRequired = !isCellPositionDefined || !eventArgs.shift && this._isLastValidCell(this._focusedCellPosition) || eventArgs.shift && this._isFirstValidCell(this._focusedCellPosition);\r\n var eventTarget = eventArgs.originalEvent.target;\r\n var focusedViewElement = this._focusedView && this._focusedView.element();\r\n if (this._handleTabKeyOnMasterDetailCell(eventTarget, direction)) {\r\n return\r\n }(0, _renderer.default)(focusedViewElement).addClass(FOCUS_STATE_CLASS);\r\n if (editingOptions && eventTarget && !isOriginalHandlerRequired) {\r\n if ((0, _renderer.default)(eventTarget).hasClass(this.addWidgetPrefix(ROWS_VIEW_CLASS))) {\r\n this._resetFocusedCell()\r\n }\r\n if (this._isVirtualColumnRender()) {\r\n this._processVirtualHorizontalPosition(direction)\r\n }\r\n if (isEditing) {\r\n if (!this._editingCellTabHandler(eventArgs, direction)) {\r\n return\r\n }\r\n } else {\r\n if (this._targetCellTabHandler(eventArgs, direction)) {\r\n isOriginalHandlerRequired = true\r\n }\r\n }\r\n }\r\n if (isOriginalHandlerRequired) {\r\n this._editorFactory.loseFocus();\r\n if (this._editingController.isEditing() && !this._isRowEditMode()) {\r\n this._resetFocusedView();\r\n this._closeEditCell()\r\n }\r\n } else {\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n },\r\n _getMaxHorizontalOffset: function() {\r\n var scrollable = this.component.getScrollable();\r\n var rowsView = this.getView(\"rowsView\");\r\n var offset = scrollable ? scrollable.scrollWidth() - (0, _renderer.default)(rowsView.element()).width() : 0;\r\n return offset\r\n },\r\n _isColumnRendered: function(columnIndex) {\r\n var allVisibleColumns = this._columnsController.getVisibleColumns(null, true);\r\n var renderedVisibleColumns = this._columnsController.getVisibleColumns();\r\n var column = allVisibleColumns[columnIndex];\r\n var result = false;\r\n if (column) {\r\n result = renderedVisibleColumns.indexOf(column) >= 0\r\n }\r\n return result\r\n },\r\n _isFixedColumn: function(columnIndex) {\r\n var allVisibleColumns = this._columnsController.getVisibleColumns(null, true);\r\n var column = allVisibleColumns[columnIndex];\r\n return !!column && !!column.fixed\r\n },\r\n _isColumnVirtual: function(columnIndex) {\r\n var localColumnIndex = columnIndex - this._columnsController.getColumnIndexOffset();\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var column = visibleColumns[localColumnIndex];\r\n return !!column && \"virtual\" === column.command\r\n },\r\n _processVirtualHorizontalPosition: function(direction) {\r\n var scrollable = this.component.getScrollable();\r\n var columnIndex = this.getColumnIndex();\r\n var nextColumnIndex;\r\n var horizontalScrollPosition = 0;\r\n var needToScroll = false;\r\n switch (direction) {\r\n case \"next\":\r\n case \"nextInRow\":\r\n var columnsCount = this._getVisibleColumnCount();\r\n nextColumnIndex = columnIndex + 1;\r\n horizontalScrollPosition = this.option(\"rtlEnabled\") ? this._getMaxHorizontalOffset() : 0;\r\n if (\"next\" === direction) {\r\n needToScroll = columnsCount === nextColumnIndex || this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)\r\n } else {\r\n needToScroll = columnsCount > nextColumnIndex && this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)\r\n }\r\n break;\r\n case \"previous\":\r\n case \"previousInRow\":\r\n nextColumnIndex = columnIndex - 1;\r\n horizontalScrollPosition = this.option(\"rtlEnabled\") ? 0 : this._getMaxHorizontalOffset();\r\n if (\"previous\" === direction) {\r\n var columnIndexOffset = this._columnsController.getColumnIndexOffset();\r\n var leftEdgePosition = nextColumnIndex < 0 && 0 === columnIndexOffset;\r\n needToScroll = leftEdgePosition || this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)\r\n } else {\r\n needToScroll = nextColumnIndex >= 0 && this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)\r\n }\r\n }\r\n if (needToScroll) {\r\n scrollable.scrollTo({\r\n left: horizontalScrollPosition\r\n })\r\n } else {\r\n if ((0, _type.isDefined)(nextColumnIndex) && (0, _type.isDefined)(direction) && this._isColumnVirtual(nextColumnIndex)) {\r\n horizontalScrollPosition = this._getHorizontalScrollPositionOffset(direction);\r\n 0 !== horizontalScrollPosition && scrollable.scrollBy({\r\n left: horizontalScrollPosition,\r\n top: 0\r\n })\r\n }\r\n }\r\n },\r\n _getHorizontalScrollPositionOffset: function(direction) {\r\n var positionOffset = 0;\r\n var $currentCell = this._getCell(this._focusedCellPosition);\r\n var currentCellWidth = $currentCell && $currentCell.outerWidth();\r\n if (currentCellWidth > 0) {\r\n var rtlMultiplier = this.option(\"rtlEnabled\") ? -1 : 1;\r\n positionOffset = \"nextInRow\" === direction || \"next\" === direction ? currentCellWidth * rtlMultiplier : currentCellWidth * rtlMultiplier * -1\r\n }\r\n return positionOffset\r\n },\r\n _editingCellTabHandler: function(eventArgs, direction) {\r\n var eventTarget = eventArgs.originalEvent.target;\r\n var $cell = this._getCellElementFromTarget(eventTarget);\r\n var isEditingAllowed;\r\n var $event = eventArgs.originalEvent;\r\n var elementType = this._getElementType(eventTarget);\r\n if ($cell.is(COMMAND_CELL_SELECTOR)) {\r\n return !this._targetCellTabHandler(eventArgs, direction)\r\n }\r\n this._updateFocusedCellPosition($cell);\r\n var nextCellInfo = this._getNextCellByTabKey($event, direction, elementType);\r\n $cell = nextCellInfo.$cell;\r\n if (!$cell || this._handleTabKeyOnMasterDetailCell($cell, direction)) {\r\n return false\r\n }\r\n var columnsController = this._columnsController;\r\n var cellIndex = this.getView(\"rowsView\").getCellIndex($cell);\r\n var columnIndex = cellIndex + columnsController.getColumnIndexOffset();\r\n var column = columnsController.getVisibleColumns(null, true)[columnIndex];\r\n var $row = $cell && $cell.parent();\r\n var rowIndex = this._getRowIndex($row);\r\n var row = this._dataController.items()[rowIndex];\r\n var editingController = this._editingController;\r\n if (column && column.allowEditing) {\r\n var _isDataRow = !row || \"data\" === row.rowType;\r\n isEditingAllowed = editingController.allowUpdating({\r\n row: row\r\n }) ? _isDataRow : row && row.isNewRow\r\n }\r\n if (!isEditingAllowed) {\r\n this._closeEditCell()\r\n }\r\n if (this._focusCell($cell, !nextCellInfo.isHighlighted)) {\r\n if (!this._isRowEditMode() && isEditingAllowed) {\r\n this._editFocusedCell()\r\n } else {\r\n this._focusInteractiveElement($cell, eventArgs.shift)\r\n }\r\n }\r\n return true\r\n },\r\n _targetCellTabHandler: function(eventArgs, direction) {\r\n var $event = eventArgs.originalEvent;\r\n var eventTarget = $event.target;\r\n var $cell = this._getCellElementFromTarget(eventTarget);\r\n var $lastInteractiveElement = this._getInteractiveElement($cell, !eventArgs.shift);\r\n var isOriginalHandlerRequired = false;\r\n var elementType;\r\n if (!isEditorCell(this, $cell) && $lastInteractiveElement.length && eventTarget !== $lastInteractiveElement.get(0)) {\r\n isOriginalHandlerRequired = true\r\n } else {\r\n if (void 0 === this._focusedCellPosition.rowIndex && (0, _renderer.default)(eventTarget).hasClass(ROW_CLASS)) {\r\n this._updateFocusedCellPosition($cell)\r\n }\r\n elementType = this._getElementType(eventTarget);\r\n if (this.isRowFocusType()) {\r\n this.setCellFocusType();\r\n if (\"row\" === elementType && isDataRow((0, _renderer.default)(eventTarget))) {\r\n eventTarget = this.getFirstValidCellInRow((0, _renderer.default)(eventTarget));\r\n elementType = this._getElementType(eventTarget)\r\n }\r\n }\r\n var nextCellInfo = this._getNextCellByTabKey($event, direction, elementType);\r\n $cell = nextCellInfo.$cell;\r\n if (!$cell) {\r\n return false\r\n }\r\n $cell = this._checkNewLineTransition($event, $cell);\r\n if (!$cell) {\r\n return false\r\n }\r\n this._focusCell($cell, !nextCellInfo.isHighlighted);\r\n if (!isEditorCell(this, $cell)) {\r\n this._focusInteractiveElement($cell, eventArgs.shift)\r\n }\r\n }\r\n return isOriginalHandlerRequired\r\n },\r\n _getNextCellByTabKey: function($event, direction, elementType) {\r\n var $cell = this._getNextCell(direction, elementType);\r\n var args = $cell && this._fireFocusedCellChanging($event, $cell, true);\r\n if (!args || args.cancel) {\r\n return {}\r\n }\r\n if (args.$newCellElement) {\r\n $cell = args.$newCellElement\r\n }\r\n return {\r\n $cell: $cell,\r\n isHighlighted: args.isHighlighted\r\n }\r\n },\r\n _checkNewLineTransition: function($event, $cell) {\r\n var rowIndex = this.getVisibleRowIndex();\r\n var $row = $cell.parent();\r\n if (rowIndex !== this._getRowIndex($row)) {\r\n var cellPosition = this._getCellPosition($cell);\r\n var args = this._fireFocusedRowChanging($event, $row);\r\n if (args.cancel) {\r\n return\r\n }\r\n if (args.rowIndexChanged) {\r\n this.setFocusedColumnIndex(cellPosition.columnIndex);\r\n $cell = this._getFocusedCell()\r\n }\r\n }\r\n return $cell\r\n },\r\n _enterKeyHandler: function(eventArgs, isEditing) {\r\n var $cell = this._getFocusedCell();\r\n var rowIndex = this.getVisibleRowIndex();\r\n var $row = this._focusedView && this._focusedView.getRow(rowIndex);\r\n if (this.option(\"grouping.allowCollapsing\") && isGroupRow($row) || this.option(\"masterDetail.enabled\") && $cell && $cell.hasClass(COMMAND_EXPAND_CLASS)) {\r\n var key = this._dataController.getKeyByRowIndex(rowIndex);\r\n var item = this._dataController.items()[rowIndex];\r\n if (void 0 !== key && item && item.data && !item.data.isContinuation) {\r\n this._dataController.changeRowExpand(key)\r\n }\r\n } else {\r\n this._processEnterKeyForDataCell(eventArgs, isEditing)\r\n }\r\n },\r\n _processEnterKeyForDataCell: function(eventArgs, isEditing) {\r\n var direction = this._getEnterKeyDirection(eventArgs);\r\n var allowEditingOnEnterKey = this._allowEditingOnEnterKey();\r\n if (isEditing || !allowEditingOnEnterKey && direction) {\r\n this._handleEnterKeyEditingCell(eventArgs.originalEvent);\r\n if (\"next\" === direction || \"previous\" === direction) {\r\n this._targetCellTabHandler(eventArgs, direction)\r\n } else {\r\n if (\"upArrow\" === direction || \"downArrow\" === direction) {\r\n this._navigateNextCell(eventArgs.originalEvent, direction)\r\n }\r\n }\r\n } else {\r\n if (allowEditingOnEnterKey) {\r\n this._startEditing(eventArgs)\r\n }\r\n }\r\n },\r\n _getEnterKeyDirection: function(eventArgs) {\r\n var enterKeyDirection = this.option(\"keyboardNavigation.enterKeyDirection\");\r\n var isShift = eventArgs.shift;\r\n if (\"column\" === enterKeyDirection) {\r\n return isShift ? \"upArrow\" : \"downArrow\"\r\n }\r\n if (\"row\" === enterKeyDirection) {\r\n return isShift ? \"previous\" : \"next\"\r\n }\r\n },\r\n _handleEnterKeyEditingCell: function(event) {\r\n var target = event.target;\r\n var $cell = this._getCellElementFromTarget(target);\r\n var isRowEditMode = this._isRowEditMode();\r\n this._updateFocusedCellPosition($cell);\r\n if (isRowEditMode) {\r\n this._focusEditFormCell($cell);\r\n setTimeout(this._editingController.saveEditData.bind(this._editingController))\r\n } else {\r\n _events_engine.default.trigger((0, _renderer.default)(target), \"change\");\r\n this._closeEditCell();\r\n event.preventDefault()\r\n }\r\n },\r\n _escapeKeyHandler: function(eventArgs, isEditing) {\r\n var $cell = this._getCellElementFromTarget(eventArgs.originalEvent.target);\r\n if (isEditing) {\r\n this._updateFocusedCellPosition($cell);\r\n if (!this._isRowEditMode()) {\r\n if (\"cell\" === this._editingController.getEditMode()) {\r\n this._editingController.cancelEditData()\r\n } else {\r\n this._closeEditCell()\r\n }\r\n } else {\r\n this._focusEditFormCell($cell);\r\n this._editingController.cancelEditData();\r\n if (0 === this._dataController.items().length) {\r\n this._resetFocusedCell();\r\n this._editorFactory.loseFocus()\r\n }\r\n }\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n },\r\n _ctrlFKeyHandler: function(eventArgs) {\r\n if (this.option(\"searchPanel.visible\")) {\r\n var searchTextEditor = this._headerPanel.getSearchTextEditor();\r\n if (searchTextEditor) {\r\n searchTextEditor.focus();\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n }\r\n },\r\n _f2KeyHandler: function() {\r\n var isEditing = this._editingController.isEditing();\r\n var rowIndex = this.getVisibleRowIndex();\r\n var $row = this._focusedView && this._focusedView.getRow(rowIndex);\r\n if (!isEditing && isDataRow($row)) {\r\n this._startEditing()\r\n }\r\n },\r\n _navigateNextCell: function($event, keyCode) {\r\n var $cell = this._getNextCell(keyCode);\r\n var directionCode = this._getDirectionCodeByKey(keyCode);\r\n var isCellValid = $cell && this._isCellValid($cell);\r\n var result = isCellValid ? this._arrowKeysHandlerFocusCell($event, $cell, directionCode) : false;\r\n return result\r\n },\r\n _arrowKeysHandlerFocusCell: function($event, $nextCell, direction) {\r\n var isVerticalDirection = \"prevRow\" === direction || \"nextRow\" === direction;\r\n var args = this._fireFocusChangingEvents($event, $nextCell, isVerticalDirection, true);\r\n $nextCell = args.$newCellElement;\r\n if (!args.cancel && this._isCellValid($nextCell)) {\r\n this._focus($nextCell, !args.isHighlighted);\r\n return true\r\n }\r\n return false\r\n },\r\n _beginFastEditing: function(originalEvent, isDeleting) {\r\n if (!this._isFastEditingAllowed() || originalEvent.altKey || originalEvent.ctrlKey || this._editingController.isEditing()) {\r\n return false\r\n }\r\n if (isDeleting) {\r\n this._startEditing(originalEvent, FAST_EDITING_DELETE_KEY)\r\n } else {\r\n var key = originalEvent.key;\r\n var keyCode = originalEvent.keyCode || originalEvent.which;\r\n var fastEditingKey = key || keyCode && String.fromCharCode(keyCode);\r\n if (fastEditingKey && (1 === fastEditingKey.length || fastEditingKey === FAST_EDITING_DELETE_KEY)) {\r\n this._startEditing(originalEvent, fastEditingKey)\r\n }\r\n }\r\n return true\r\n },\r\n _pointerEventHandler: function(e) {\r\n var event = e.event || e;\r\n var $target = (0, _renderer.default)(event.currentTarget);\r\n var rowsView = this.getView(\"rowsView\");\r\n var focusedViewElement = rowsView && rowsView.element();\r\n var $parent = $target.parent();\r\n var isInteractiveElement = (0, _renderer.default)(event.target).is(INTERACTIVE_ELEMENTS_SELECTOR);\r\n var isRevertButton = !!(0, _renderer.default)(event.target).closest(\".\".concat(REVERT_BUTTON_CLASS)).length;\r\n var isExpandCommandCell = $target.hasClass(COMMAND_EXPAND_CLASS);\r\n if (!isRevertButton && this._isEventInCurrentGrid(event) && (this._isCellValid($target, !isInteractiveElement) || isExpandCommandCell)) {\r\n $target = this._isInsideEditForm($target) ? (0, _renderer.default)(event.target) : $target;\r\n this._focusView();\r\n (0, _renderer.default)(focusedViewElement).removeClass(FOCUS_STATE_CLASS);\r\n if ($parent.hasClass(FREESPACE_ROW_CLASS)) {\r\n this._updateFocusedCellPosition($target);\r\n this._applyTabIndexToElement(this._focusedView.element());\r\n this._focusedView.focus()\r\n } else {\r\n if (!this._isMasterDetailCell($target)) {\r\n this._clickTargetCellHandler(event, $target)\r\n } else {\r\n this._updateFocusedCellPosition($target)\r\n }\r\n }\r\n } else {\r\n if ($target.is(\"td\")) {\r\n this._resetFocusedCell()\r\n }\r\n }\r\n },\r\n _clickTargetCellHandler: function(event, $cell) {\r\n var columnIndex = this.getView(\"rowsView\").getCellIndex($cell);\r\n var column = this._columnsController.getVisibleColumns()[columnIndex];\r\n var isCellEditMode = this._isCellEditMode();\r\n this.setCellFocusType();\r\n var args = this._fireFocusChangingEvents(event, $cell, true);\r\n $cell = args.$newCellElement;\r\n if (!args.cancel) {\r\n if (args.resetFocusedRow) {\r\n this.getController(\"focus\")._resetFocusedRow();\r\n return\r\n }\r\n if (args.rowIndexChanged) {\r\n $cell = this._getFocusedCell()\r\n }\r\n if (!args.isHighlighted && !isCellEditMode) {\r\n this.setRowFocusType()\r\n }\r\n this._updateFocusedCellPosition($cell);\r\n if (this._allowRowUpdating() && isCellEditMode && column && column.allowEditing) {\r\n this._isNeedFocus = false;\r\n this._isHiddenFocus = false\r\n } else {\r\n var $target = event && (0, _renderer.default)(event.target).closest(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((0, _renderer.default)(element));\r\n if (!element) {\r\n activeElementSelector = \".dx-datagrid-rowsview .dx-row[tabindex]\";\r\n if (!focusedRowEnabled) {\r\n activeElementSelector += \", .dx-datagrid-rowsview .dx-row > td[tabindex]\"\r\n }\r\n element = this.component.$element().find(activeElementSelector).first()\r\n }\r\n element && this._focusElement((0, _renderer.default)(element), isHighlighted)\r\n },\r\n getFocusedView: function() {\r\n return this._focusedView\r\n },\r\n setupFocusedView: function() {\r\n if (this.isKeyboardEnabled() && !(0, _type.isDefined)(this._focusedView)) {\r\n this._focusView()\r\n }\r\n },\r\n _focusElement: function($element, isHighlighted) {\r\n var rowsViewElement = (0, _renderer.default)(this._getRowsViewElement());\r\n var $focusedView = $element.closest(rowsViewElement);\r\n var isRowFocusType = this.isRowFocusType();\r\n var args = {};\r\n if (!$focusedView.length || isCellElement($element) && !this._isCellValid($element)) {\r\n return\r\n }\r\n this._focusView();\r\n this._isNeedFocus = true;\r\n this._isNeedScroll = true;\r\n if (isCellElement($element) || isGroupRow($element)) {\r\n this.setCellFocusType();\r\n args = this._fireFocusChangingEvents(null, $element, false, isHighlighted);\r\n $element = args.$newCellElement;\r\n if (isRowFocusType && !args.isHighlighted) {\r\n this.setRowFocusType()\r\n }\r\n }\r\n if (!args.cancel) {\r\n this._focus($element, !args.isHighlighted);\r\n this._focusInteractiveElement($element)\r\n }\r\n },\r\n _getFocusedViewByElement: function($element) {\r\n var view = this.getFocusedView();\r\n var $view = view && (0, _renderer.default)(view.element());\r\n return $element && 0 !== $element.closest($view).length\r\n },\r\n _focusView: function() {\r\n this._focusedView = this.getView(\"rowsView\")\r\n },\r\n _resetFocusedView: function() {\r\n var $cell = this._getFocusedCell();\r\n this._resetFocusedCell($cell, true);\r\n this.setRowFocusType();\r\n this._focusedView = null\r\n },\r\n _focusInteractiveElement: function($cell, isLast) {\r\n if (!$cell) {\r\n return\r\n }\r\n var $focusedElement = this._getInteractiveElement($cell, isLast);\r\n _uiGrid_core2.default.focusAndSelectElement(this, $focusedElement)\r\n },\r\n _focus: function($cell, disableFocus, 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 {\r\n if (isCellElement($cell)) {\r\n $focusElement = $cell;\r\n this._updateFocusedCellPosition($cell)\r\n }\r\n }\r\n if ($focusElement) {\r\n if ($focusViewElement) {\r\n $focusViewElement.find(\".dx-row[tabindex], .dx-row > td[tabindex]\").not($focusElement).removeClass(CELL_FOCUS_DISABLED_CLASS).removeAttr(\"tabindex\")\r\n }\r\n _events_engine.default.one($focusElement, \"blur\", function(e) {\r\n if (e.relatedTarget) {\r\n $focusElement.removeClass(CELL_FOCUS_DISABLED_CLASS)\r\n }\r\n });\r\n if (!isInteractiveElement) {\r\n this._applyTabIndexToElement($focusElement);\r\n _events_engine.default.trigger($focusElement, \"focus\")\r\n }\r\n if (disableFocus) {\r\n $focusElement.addClass(CELL_FOCUS_DISABLED_CLASS)\r\n } else {\r\n this._editorFactory.focus($focusElement)\r\n }\r\n }\r\n },\r\n _updateFocus: function(isRenderView) {\r\n var _this6 = this;\r\n this._updateFocusTimeout = setTimeout(function() {\r\n var $cell = _this6._getFocusedCell();\r\n var isEditing = _this6._editingController.isEditing();\r\n if ($cell && !(_this6._isMasterDetailCell($cell) && !_this6._isRowEditMode())) {\r\n if (_this6._hasSkipRow($cell.parent())) {\r\n var direction = _this6._focusedCellPosition && _this6._focusedCellPosition.rowIndex > 0 ? \"upArrow\" : \"downArrow\";\r\n $cell = _this6._getNextCell(direction)\r\n }\r\n if (isElementDefined($cell)) {\r\n if (isRenderView && !isEditing && _this6._checkCellOverlapped($cell)) {\r\n return\r\n }\r\n if ($cell.is(\"td\") || $cell.hasClass(_this6.addWidgetPrefix(EDIT_FORM_ITEM_CLASS))) {\r\n var isCommandCell = $cell.is(COMMAND_CELL_SELECTOR);\r\n if ((isRenderView || !isCommandCell) && _this6._editorFactory.focus()) {\r\n var $focusedElementInsideCell = $cell.find(\":focus\");\r\n var isFocusedElementDefined = isElementDefined($focusedElementInsideCell);\r\n if (isCommandCell && isFocusedElementDefined) {\r\n _uiGrid_core2.default.focusAndSelectElement(_this6, $focusedElementInsideCell);\r\n return\r\n }!isFocusedElementDefined && _this6._focus($cell)\r\n } else {\r\n if (_this6._isNeedFocus || _this6._isHiddenFocus) {\r\n _this6._focus($cell, _this6._isHiddenFocus)\r\n }\r\n }\r\n if (isEditing) {\r\n _this6._focusInteractiveElement.bind(_this6)($cell)\r\n }\r\n } else {\r\n _events_engine.default.trigger($cell, \"focus\")\r\n }\r\n }\r\n }\r\n })\r\n },\r\n _checkCellOverlapped: function($cell) {\r\n var cellOffset = $cell.offset();\r\n var hasScrollable = this.component.getScrollable && this.component.getScrollable();\r\n var isOverlapped = false;\r\n if (hasScrollable) {\r\n if (cellOffset.left < 0) {\r\n isOverlapped = $cell.width() + cellOffset.left <= 0\r\n } else {\r\n if (cellOffset.top < 0) {\r\n isOverlapped = $cell.height() + cellOffset.top <= 0\r\n }\r\n }\r\n }\r\n return isOverlapped\r\n },\r\n _getFocusedCell: function() {\r\n return (0, _renderer.default)(this._getCell(this._focusedCellPosition))\r\n },\r\n _updateFocusedCellPositionByTarget: function(target) {\r\n var _this$_focusedCellPos;\r\n var elementType = this._getElementType(target);\r\n if (\"row\" === elementType && (0, _type.isDefined)(null === (_this$_focusedCellPos = this._focusedCellPosition) || void 0 === _this$_focusedCellPos ? void 0 : _this$_focusedCellPos.columnIndex)) {\r\n var $row = (0, _renderer.default)(target);\r\n this._focusedView && isGroupRow($row) && this.setFocusedRowIndex(this._getRowIndex($row))\r\n } else {\r\n this._updateFocusedCellPosition(this._getCellElementFromTarget(target))\r\n }\r\n },\r\n _updateFocusedCellPosition: function($cell, direction) {\r\n var position = this._getCellPosition($cell, direction);\r\n if (position) {\r\n if (!$cell.length || position.rowIndex >= 0 && position.columnIndex >= 0) {\r\n this.setFocusedCellPosition(position.rowIndex, position.columnIndex)\r\n }\r\n }\r\n return position\r\n },\r\n _getFocusedColumnIndexOffset: function(columnIndex) {\r\n var offset = 0;\r\n var column = this._columnsController.getVisibleColumns()[columnIndex];\r\n if (column && column.fixed) {\r\n offset = this._getFixedColumnIndexOffset(column)\r\n } else {\r\n if (columnIndex >= 0) {\r\n offset = this._columnsController.getColumnIndexOffset()\r\n }\r\n }\r\n return offset\r\n },\r\n _getFixedColumnIndexOffset: function(column) {\r\n var offset = isFixedColumnIndexOffsetRequired(this, column) ? this._getVisibleColumnCount() - this._columnsController.getVisibleColumns().length : 0;\r\n return offset\r\n },\r\n _getCellPosition: function($cell, direction) {\r\n var columnIndex;\r\n var $row = isElementDefined($cell) && $cell.closest(\"tr\");\r\n var rowsView = this.getView(\"rowsView\");\r\n if (isElementDefined($row)) {\r\n var rowIndex = this._getRowIndex($row);\r\n columnIndex = rowsView.getCellIndex($cell, rowIndex);\r\n columnIndex += this._getFocusedColumnIndexOffset(columnIndex);\r\n if (direction) {\r\n columnIndex = \"previous\" === direction ? columnIndex - 1 : columnIndex + 1;\r\n columnIndex = this._applyColumnIndexBoundaries(columnIndex)\r\n }\r\n return {\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n }\r\n }\r\n },\r\n _focusCell: function($cell, isDisabled) {\r\n if (this._isCellValid($cell)) {\r\n this._focus($cell, isDisabled);\r\n return true\r\n }\r\n },\r\n _focusEditFormCell: function($cell) {\r\n if ($cell.hasClass(MASTER_DETAIL_CELL_CLASS)) {\r\n this._editorFactory.focus($cell, true)\r\n }\r\n },\r\n _resetFocusedCell: function($cellElement, preventScroll) {\r\n var _this$_focusedView;\r\n var $cell = isElementDefined($cellElement) ? $cellElement : this._getFocusedCell();\r\n isElementDefined($cell) && $cell.removeAttr(\"tabindex\");\r\n this._isNeedFocus = false;\r\n this._isNeedScroll = false;\r\n this._focusedCellPosition = {};\r\n clearTimeout(this._updateFocusTimeout);\r\n null === (_this$_focusedView = this._focusedView) || void 0 === _this$_focusedView ? void 0 : _this$_focusedView.renderFocusState(preventScroll)\r\n },\r\n restoreFocusableElement: function(rowIndex, $event) {\r\n var that = this;\r\n var args;\r\n var $rowElement;\r\n var isUpArrow = (0, _type.isDefined)(rowIndex);\r\n var rowsView = that.getView(\"rowsView\");\r\n var $rowsViewElement = rowsView.element();\r\n var columnIndex = that._focusedCellPosition.columnIndex;\r\n var rowIndexOffset = that._dataController.getRowIndexOffset();\r\n rowIndex = isUpArrow ? rowIndex : rowsView.getTopVisibleItemIndex() + rowIndexOffset;\r\n if (!isUpArrow) {\r\n that._editorFactory.loseFocus();\r\n that._applyTabIndexToElement($rowsViewElement);\r\n _events_engine.default.trigger($rowsViewElement, \"focus\")\r\n } else {\r\n $rowElement = rowsView.getRow(rowIndex - rowIndexOffset);\r\n args = that._fireFocusedRowChanging($event, $rowElement);\r\n if (!args.cancel && args.rowIndexChanged) {\r\n rowIndex = args.newRowIndex\r\n }\r\n }\r\n if (!isUpArrow || !args.cancel) {\r\n that.setFocusedCellPosition(rowIndex, columnIndex)\r\n }\r\n isUpArrow && that._updateFocus()\r\n },\r\n _getNewPositionByCode: function(cellPosition, elementType, code) {\r\n var columnIndex = cellPosition.columnIndex;\r\n var rowIndex = cellPosition.rowIndex;\r\n var visibleColumnsCount;\r\n if (void 0 === cellPosition.rowIndex && \"next\" === code) {\r\n return {\r\n columnIndex: 0,\r\n rowIndex: 0\r\n }\r\n }\r\n switch (code) {\r\n case \"nextInRow\":\r\n case \"next\":\r\n visibleColumnsCount = this._getVisibleColumnCount();\r\n if (columnIndex < visibleColumnsCount - 1 && \"row\" !== elementType && this._hasValidCellAfterPosition({\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex\r\n })) {\r\n columnIndex++\r\n } else {\r\n if (!this._isLastRow(rowIndex) && \"next\" === code) {\r\n columnIndex = 0;\r\n rowIndex++\r\n }\r\n }\r\n break;\r\n case \"previousInRow\":\r\n case \"previous\":\r\n if (columnIndex > 0 && \"row\" !== elementType && this._hasValidCellBeforePosition({\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex\r\n })) {\r\n columnIndex--\r\n } else {\r\n if (rowIndex > 0 && \"previous\" === code) {\r\n rowIndex--;\r\n visibleColumnsCount = this._getVisibleColumnCount();\r\n columnIndex = visibleColumnsCount - 1\r\n }\r\n }\r\n break;\r\n case \"upArrow\":\r\n rowIndex = rowIndex > 0 ? rowIndex - 1 : rowIndex;\r\n break;\r\n case \"downArrow\":\r\n rowIndex = !this._isLastRow(rowIndex) ? rowIndex + 1 : rowIndex\r\n }\r\n return {\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex\r\n }\r\n },\r\n setFocusedCellPosition: function(rowIndex, columnIndex) {\r\n this.setFocusedRowIndex(rowIndex);\r\n this.setFocusedColumnIndex(columnIndex)\r\n },\r\n setFocusedRowIndex: function(rowIndex) {\r\n if (!this._focusedCellPosition) {\r\n this._focusedCellPosition = {}\r\n }\r\n this._focusedCellPosition.rowIndex = rowIndex\r\n },\r\n setFocusedColumnIndex: function(columnIndex) {\r\n if (!this._focusedCellPosition) {\r\n this._focusedCellPosition = {}\r\n }\r\n this._focusedCellPosition.columnIndex = columnIndex\r\n },\r\n getRowIndex: function() {\r\n return this._focusedCellPosition ? this._focusedCellPosition.rowIndex : -1\r\n },\r\n getColumnIndex: function() {\r\n return this._focusedCellPosition ? this._focusedCellPosition.columnIndex : -1\r\n },\r\n getVisibleRowIndex: function() {\r\n var rowIndex = this._focusedCellPosition && this._focusedCellPosition.rowIndex;\r\n if (!(0, _type.isDefined)(rowIndex)) {\r\n return -1\r\n }\r\n return rowIndex - this._dataController.getRowIndexOffset()\r\n },\r\n getVisibleColumnIndex: function() {\r\n var columnIndex = this._focusedCellPosition && this._focusedCellPosition.columnIndex;\r\n if (!(0, _type.isDefined)(columnIndex)) {\r\n return -1\r\n }\r\n return columnIndex - this._columnsController.getColumnIndexOffset()\r\n },\r\n _applyColumnIndexBoundaries: function(columnIndex) {\r\n var visibleColumnsCount = this._getVisibleColumnCount();\r\n if (columnIndex < 0) {\r\n columnIndex = 0\r\n } else {\r\n if (columnIndex >= visibleColumnsCount) {\r\n columnIndex = visibleColumnsCount - 1\r\n }\r\n }\r\n return columnIndex\r\n },\r\n _isCellByPositionValid: function(cellPosition) {\r\n var $cell = (0, _renderer.default)(this._getCell(cellPosition));\r\n return this._isCellValid($cell)\r\n },\r\n _isLastRow: function(rowIndex) {\r\n if (this._isVirtualRowRender()) {\r\n return rowIndex >= this._dataController.totalItemsCount() - 1\r\n }\r\n return rowIndex === this._dataController.items().length - 1\r\n },\r\n _isFirstValidCell: function(cellPosition) {\r\n var isFirstValidCell = false;\r\n if (0 === cellPosition.rowIndex && cellPosition.columnIndex >= 0) {\r\n isFirstValidCell = isFirstValidCell || !this._hasValidCellBeforePosition(cellPosition)\r\n }\r\n return isFirstValidCell\r\n },\r\n _hasValidCellBeforePosition: function(cellPosition) {\r\n var columnIndex = cellPosition.columnIndex;\r\n var hasValidCells = false;\r\n while (columnIndex > 0 && !hasValidCells) {\r\n var checkingPosition = {\r\n columnIndex: --columnIndex,\r\n rowIndex: cellPosition.rowIndex\r\n };\r\n hasValidCells = this._isCellByPositionValid(checkingPosition)\r\n }\r\n return hasValidCells\r\n },\r\n _hasValidCellAfterPosition: function(cellPosition) {\r\n var columnIndex = cellPosition.columnIndex;\r\n var hasValidCells = false;\r\n var visibleColumnCount = this._getVisibleColumnCount();\r\n while (columnIndex < visibleColumnCount - 1 && !hasValidCells) {\r\n var checkingPosition = {\r\n columnIndex: ++columnIndex,\r\n rowIndex: cellPosition.rowIndex\r\n };\r\n hasValidCells = this._isCellByPositionValid(checkingPosition)\r\n }\r\n return hasValidCells\r\n },\r\n _isLastValidCell: function(cellPosition) {\r\n var nextColumnIndex = cellPosition.columnIndex >= 0 ? cellPosition.columnIndex + 1 : 0;\r\n var rowIndex = cellPosition.rowIndex;\r\n var checkingPosition = {\r\n columnIndex: nextColumnIndex,\r\n rowIndex: rowIndex\r\n };\r\n var visibleRows = this._dataController.getVisibleRows();\r\n var row = visibleRows && visibleRows[rowIndex];\r\n var isLastRow = this._isLastRow(rowIndex);\r\n if (!isLastRow) {\r\n return false\r\n }\r\n if (row && \"group\" === row.rowType && cellPosition.columnIndex > 0) {\r\n return true\r\n }\r\n if (cellPosition.columnIndex === this._getVisibleColumnCount() - 1) {\r\n return true\r\n }\r\n if (this._isCellByPositionValid(checkingPosition)) {\r\n return false\r\n }\r\n return this._isLastValidCell(checkingPosition)\r\n },\r\n _isCellValid: function($cell, isClick) {\r\n if (isElementDefined($cell)) {\r\n var rowsView = this.getView(\"rowsView\");\r\n var $row = $cell.parent();\r\n var columnsController = this._columnsController;\r\n var columnIndex = rowsView.getCellIndex($cell) + columnsController.getColumnIndexOffset();\r\n var column = columnsController.getVisibleColumns(null, true)[columnIndex];\r\n var visibleColumnCount = this._getVisibleColumnCount();\r\n var editingController = this._editingController;\r\n var isMasterDetailRow = isDetailRow($row);\r\n var isShowWhenGrouped = column && column.showWhenGrouped;\r\n var isDataCell = column && !$cell.hasClass(COMMAND_EXPAND_CLASS) && isDataRow($row);\r\n var isValidGroupSpaceColumn = function() {\r\n return !isMasterDetailRow && column && (!(0, _type.isDefined)(column.groupIndex) || isShowWhenGrouped && isDataCell) || parseInt($cell.attr(\"colspan\")) > 1\r\n };\r\n if (this._isMasterDetailCell($cell)) {\r\n return true\r\n }\r\n if (visibleColumnCount > columnIndex && isValidGroupSpaceColumn()) {\r\n var rowItems = this._dataController.items();\r\n var visibleRowIndex = rowsView.getRowIndex($row);\r\n var row = rowItems[visibleRowIndex];\r\n var isCellEditing = editingController && this._isCellEditMode() && editingController.isEditing();\r\n var isRowEditingInCurrentRow = editingController && editingController.isEditRow(visibleRowIndex);\r\n var isEditing = isRowEditingInCurrentRow || isCellEditing;\r\n if (column.command) {\r\n if (this._isLegacyNavigation()) {\r\n return !isEditing && \"expand\" === column.command\r\n }\r\n if (isCellEditing) {\r\n return false\r\n }\r\n if (isRowEditingInCurrentRow) {\r\n return \"select\" !== column.command\r\n }\r\n return !isEditing\r\n }\r\n if (isCellEditing && row && \"data\" !== row.rowType) {\r\n return false\r\n }\r\n return !isEditing || column.allowEditing || isClick\r\n }\r\n }\r\n },\r\n getFirstValidCellInRow: function($row, columnIndex) {\r\n var that = this;\r\n var $cells = $row.find(\"> td\");\r\n var $cell;\r\n var $result;\r\n columnIndex = columnIndex || 0;\r\n for (var i = columnIndex; i < $cells.length; ++i) {\r\n $cell = $cells.eq(i);\r\n if (that._isCellValid($cell)) {\r\n $result = $cell;\r\n break\r\n }\r\n }\r\n return $result\r\n },\r\n _getNextCell: function(keyCode, elementType, cellPosition) {\r\n var focusedCellPosition = cellPosition || this._focusedCellPosition;\r\n var isRowFocusType = this.isRowFocusType();\r\n var includeCommandCells = isRowFocusType || (0, _array.inArray)(keyCode, [\"next\", \"previous\"]) > -1;\r\n var $cell;\r\n var $row;\r\n if (this._focusedView && focusedCellPosition) {\r\n var newFocusedCellPosition = this._getNewPositionByCode(focusedCellPosition, elementType, keyCode);\r\n $cell = (0, _renderer.default)(this._getCell(newFocusedCellPosition));\r\n var isLastCellOnDirection = \"previous\" === keyCode ? this._isFirstValidCell(newFocusedCellPosition) : this._isLastValidCell(newFocusedCellPosition);\r\n if (isElementDefined($cell) && !this._isCellValid($cell) && this._isCellInRow(newFocusedCellPosition, includeCommandCells) && !isLastCellOnDirection) {\r\n if (isRowFocusType) {\r\n $cell = this.getFirstValidCellInRow($cell.parent(), newFocusedCellPosition.columnIndex)\r\n } else {\r\n $cell = this._getNextCell(keyCode, \"cell\", newFocusedCellPosition)\r\n }\r\n }\r\n $row = isElementDefined($cell) && $cell.parent();\r\n if (this._hasSkipRow($row)) {\r\n var rowIndex = this._getRowIndex($row);\r\n if (!this._isLastRow(rowIndex)) {\r\n $cell = this._getNextCell(keyCode, \"row\", {\r\n columnIndex: focusedCellPosition.columnIndex,\r\n rowIndex: rowIndex\r\n })\r\n } else {\r\n return null\r\n }\r\n }\r\n return isElementDefined($cell) ? $cell : null\r\n }\r\n return null\r\n },\r\n _startEditing: function(eventArgs, fastEditingKey) {\r\n var focusedCellPosition = this._focusedCellPosition;\r\n var visibleRowIndex = this.getVisibleRowIndex();\r\n var visibleColumnIndex = this.getVisibleColumnIndex();\r\n var row = this._dataController.items()[visibleRowIndex];\r\n var column = this._columnsController.getVisibleColumns()[visibleColumnIndex];\r\n if (this._isAllowEditing(row, column)) {\r\n if (this._isRowEditMode()) {\r\n this._editingController.editRow(visibleRowIndex)\r\n } else {\r\n if (focusedCellPosition) {\r\n this._startEditCell(eventArgs, fastEditingKey)\r\n }\r\n }\r\n }\r\n },\r\n _isAllowEditing: function(row, column) {\r\n return this._editingController.allowUpdating({\r\n row: row\r\n }) && column && column.allowEditing\r\n },\r\n _editFocusedCell: function() {\r\n var rowIndex = this.getVisibleRowIndex();\r\n var colIndex = this.getVisibleColumnIndex();\r\n return this._editingController.editCell(rowIndex, colIndex)\r\n },\r\n _startEditCell: function(eventArgs, fastEditingKey) {\r\n var _this7 = this;\r\n this._fastEditingStarted = (0, _type.isDefined)(fastEditingKey);\r\n var editResult = this._editFocusedCell();\r\n if (this._isFastEditingStarted()) {\r\n if (true === editResult) {\r\n this._editingCellHandler(eventArgs, fastEditingKey)\r\n } else {\r\n if (editResult && editResult.done) {\r\n var editorValue = fastEditingKey !== FAST_EDITING_DELETE_KEY ? fastEditingKey : \"\";\r\n editResult.done(function() {\r\n return _this7._editingCellHandler(eventArgs, editorValue)\r\n })\r\n }\r\n }\r\n }\r\n },\r\n _editingCellHandler: function(eventArgs, editorValue) {\r\n var $input = this._getFocusedCell().find(\".dx-texteditor-input\").eq(0);\r\n var keyDownEvent = (0, _index.createEvent)(eventArgs, {\r\n type: \"keydown\",\r\n target: $input.get(0)\r\n });\r\n var keyPressEvent = (0, _index.createEvent)(eventArgs, {\r\n type: \"keypress\",\r\n target: $input.get(0)\r\n });\r\n var inputEvent = (0, _index.createEvent)(eventArgs, {\r\n type: \"input\",\r\n target: $input.get(0)\r\n });\r\n _events_engine.default.trigger($input, keyDownEvent);\r\n if (!keyDownEvent.isDefaultPrevented()) {\r\n _events_engine.default.trigger($input, keyPressEvent);\r\n if (!keyPressEvent.isDefaultPrevented()) {\r\n var timeout = _browser.default.mozilla ? 25 : 0;\r\n setTimeout(function() {\r\n $input.val(editorValue);\r\n var $widgetContainer = $input.closest(\".\".concat(WIDGET_CLASS));\r\n _events_engine.default.off($widgetContainer, \"focusout\");\r\n _events_engine.default.one($widgetContainer, \"focusout\", function() {\r\n _events_engine.default.trigger($input, \"change\")\r\n });\r\n _events_engine.default.trigger($input, inputEvent)\r\n }, timeout)\r\n }\r\n }\r\n },\r\n _fireFocusChangingEvents: function($event, $cell, fireRowEvent, isHighlighted) {\r\n var args = {};\r\n var cellPosition = this._getCellPosition($cell) || {};\r\n if (this.isCellFocusType()) {\r\n args = this._fireFocusedCellChanging($event, $cell, isHighlighted);\r\n if (!args.cancel) {\r\n cellPosition.columnIndex = args.newColumnIndex;\r\n cellPosition.rowIndex = args.newRowIndex;\r\n isHighlighted = args.isHighlighted;\r\n $cell = (0, _renderer.default)(this._getCell(cellPosition))\r\n }\r\n }\r\n if (!args.cancel && fireRowEvent && $cell) {\r\n args = this._fireFocusedRowChanging($event, $cell.parent());\r\n if (!args.cancel) {\r\n cellPosition.rowIndex = args.newRowIndex;\r\n args.isHighlighted = isHighlighted\r\n }\r\n }\r\n args.$newCellElement = (0, _renderer.default)(this._getCell(cellPosition));\r\n if (!args.$newCellElement.length) {\r\n args.$newCellElement = $cell\r\n }\r\n return args\r\n },\r\n _fireFocusedCellChanging: function($event, $cellElement, isHighlighted) {\r\n var that = this;\r\n var prevCellIndex = that.option(\"focusedColumnIndex\");\r\n var prevRowIndex = that.option(\"focusedRowIndex\");\r\n var cellPosition = that._getCellPosition($cellElement);\r\n var columnIndex = cellPosition ? cellPosition.columnIndex : -1;\r\n var rowIndex = cellPosition ? cellPosition.rowIndex : -1;\r\n var args = {\r\n cellElement: $cellElement,\r\n prevColumnIndex: prevCellIndex,\r\n prevRowIndex: prevRowIndex,\r\n newColumnIndex: columnIndex,\r\n newRowIndex: rowIndex,\r\n rows: that._dataController.getVisibleRows(),\r\n columns: that._columnsController.getVisibleColumns(),\r\n event: $event,\r\n isHighlighted: isHighlighted || false,\r\n cancel: false\r\n };\r\n this._canceledCellPosition = null;\r\n that.executeAction(\"onFocusedCellChanging\", args);\r\n if (args.newColumnIndex !== columnIndex || args.newRowIndex !== rowIndex) {\r\n args.$newCellElement = (0, _renderer.default)(this._getCell({\r\n columnIndex: args.newColumnIndex,\r\n rowIndex: args.newRowIndex\r\n }))\r\n }\r\n if (args.cancel) {\r\n this._canceledCellPosition = {\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n }\r\n }\r\n return args\r\n },\r\n _fireFocusedCellChanged: function($cellElement, prevCellIndex, prevRowIndex) {\r\n var that = this;\r\n var dataController = that._dataController;\r\n var columnIndex = that.getView(\"rowsView\").getCellIndex($cellElement);\r\n var rowIndex = this._getRowIndex($cellElement && $cellElement.parent());\r\n var localRowIndex = Math.min(rowIndex - dataController.getRowIndexOffset(), dataController.items().length - 1);\r\n var isEditingCell = that._editingController.isEditCell(localRowIndex, columnIndex);\r\n var row = dataController.items()[localRowIndex];\r\n if (!isEditingCell && (prevCellIndex !== columnIndex || prevRowIndex !== rowIndex)) {\r\n that.executeAction(\"onFocusedCellChanged\", {\r\n cellElement: $cellElement,\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex,\r\n row: row,\r\n column: that._columnsController.getVisibleColumns()[columnIndex]\r\n })\r\n }\r\n },\r\n _fireFocusedRowChanging: function(eventArgs, $newFocusedRow) {\r\n var newRowIndex = this._getRowIndex($newFocusedRow);\r\n var dataController = this._dataController;\r\n var prevFocusedRowIndex = this.option(\"focusedRowIndex\");\r\n var loadingOperationTypes = dataController.loadingOperationTypes();\r\n var args = {\r\n rowElement: $newFocusedRow,\r\n prevRowIndex: prevFocusedRowIndex,\r\n newRowIndex: newRowIndex,\r\n event: eventArgs,\r\n rows: dataController.getVisibleRows(),\r\n cancel: false\r\n };\r\n if (!dataController || dataController.isLoading() && (loadingOperationTypes.reload || loadingOperationTypes.paging)) {\r\n args.cancel = true;\r\n return args\r\n }\r\n if (this.option(\"focusedRowEnabled\")) {\r\n this.executeAction(\"onFocusedRowChanging\", args);\r\n if (!args.cancel && args.newRowIndex !== newRowIndex) {\r\n args.resetFocusedRow = args.newRowIndex < 0;\r\n if (!args.resetFocusedRow) {\r\n this.setFocusedRowIndex(args.newRowIndex)\r\n }\r\n args.rowIndexChanged = true\r\n }\r\n }\r\n return args\r\n },\r\n _fireFocusedRowChanged: function($rowElement) {\r\n var row;\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var focusController = this.getController(\"focus\");\r\n var focusedRowIndex = null === focusController || void 0 === focusController ? void 0 : focusController.getFocusedRowIndexByKey(focusedRowKey);\r\n if (this.option(\"focusedRowEnabled\")) {\r\n if (focusedRowIndex >= 0) {\r\n var dataController = this._dataController;\r\n row = focusedRowIndex >= 0 && dataController.getVisibleRows()[focusedRowIndex - dataController.getRowIndexOffset()]\r\n }\r\n this.executeAction(\"onFocusedRowChanged\", {\r\n rowElement: $rowElement,\r\n rowIndex: focusedRowIndex,\r\n row: row\r\n })\r\n }\r\n },\r\n _isEventInCurrentGrid: function(event) {\r\n return _uiGrid_core2.default.isElementInCurrentGrid(this, (0, _renderer.default)(event.target))\r\n },\r\n _isRowEditMode: function() {\r\n var editMode = this._editingController.getEditMode();\r\n return editMode === EDIT_MODE_ROW || editMode === EDIT_MODE_FORM\r\n },\r\n _isCellEditMode: function() {\r\n var editMode = this._editingController.getEditMode();\r\n return editMode === EDIT_MODE_CELL || editMode === EDIT_MODE_BATCH\r\n },\r\n _isFastEditingAllowed: function() {\r\n return this._isCellEditMode() && this.option(\"keyboardNavigation.editOnKeyPress\")\r\n },\r\n _getInteractiveElement: function($cell, isLast) {\r\n var $focusedElement = $cell.find(INTERACTIVE_ELEMENTS_SELECTOR).filter(\":visible\");\r\n return isLast ? $focusedElement.last() : $focusedElement.first()\r\n },\r\n _applyTabIndexToElement: function($element) {\r\n var tabIndex = this.option(\"tabIndex\") || 0;\r\n $element.attr(\"tabindex\", (0, _type.isDefined)(tabIndex) ? tabIndex : 0)\r\n },\r\n _getCell: function(cellPosition) {\r\n if (this._focusedView && cellPosition) {\r\n var rowIndexOffset = this._dataController.getRowIndexOffset();\r\n var column = this._columnsController.getVisibleColumns(null, true)[cellPosition.columnIndex];\r\n var columnIndexOffset = column && column.fixed ? this._getFixedColumnIndexOffset(column) : this._columnsController.getColumnIndexOffset();\r\n var rowIndex = cellPosition.rowIndex >= 0 ? cellPosition.rowIndex - rowIndexOffset : -1;\r\n var columnIndex = cellPosition.columnIndex >= 0 ? cellPosition.columnIndex - columnIndexOffset : -1;\r\n return this._focusedView.getCell({\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n })\r\n }\r\n },\r\n _getRowIndex: function($row) {\r\n var rowsView = this.getView(\"rowsView\");\r\n var rowIndex = rowsView.getRowIndex($row);\r\n if (rowIndex >= 0) {\r\n rowIndex += this._dataController.getRowIndexOffset()\r\n }\r\n return rowIndex\r\n },\r\n _hasSkipRow: function($row) {\r\n var row = $row && $row.get(0);\r\n return row && (\"none\" === row.style.display || $row.hasClass(this.addWidgetPrefix(GROUP_FOOTER_CLASS)) || isDetailRow($row) && !$row.hasClass(this.addWidgetPrefix(EDIT_FORM_CLASS)))\r\n },\r\n _allowEditingOnEnterKey: function() {\r\n return \"startEdit\" === this.option(\"keyboardNavigation.enterKeyAction\")\r\n },\r\n _isLegacyNavigation: function() {\r\n return this.option(\"useLegacyKeyboardNavigation\")\r\n },\r\n _getDirectionCodeByKey: function(key) {\r\n var directionCode;\r\n switch (key) {\r\n case \"upArrow\":\r\n directionCode = \"prevRow\";\r\n break;\r\n case \"downArrow\":\r\n directionCode = \"nextRow\";\r\n break;\r\n case \"leftArrow\":\r\n directionCode = this.option(\"rtlEnabled\") ? \"nextInRow\" : \"previousInRow\";\r\n break;\r\n case \"rightArrow\":\r\n directionCode = this.option(\"rtlEnabled\") ? \"previousInRow\" : \"nextInRow\"\r\n }\r\n return directionCode\r\n },\r\n _isVirtualScrolling: function() {\r\n var scrollingMode = this.option(\"scrolling.mode\");\r\n return \"virtual\" === scrollingMode || \"infinite\" === scrollingMode\r\n },\r\n _isVirtualRowRender: function() {\r\n return this._isVirtualScrolling() || \"virtual\" === this.option(\"scrolling.rowRenderingMode\")\r\n },\r\n _isVirtualColumnRender: function() {\r\n return \"virtual\" === this.option(\"scrolling.columnRenderingMode\")\r\n },\r\n _scrollBy: function(left, top, rowIndex, $event) {\r\n var that = this;\r\n var scrollable = this.getView(\"rowsView\").getScrollable();\r\n if (that._focusedCellPosition) {\r\n var scrollHandler = function scrollHandler() {\r\n scrollable.off(\"scroll\", scrollHandler);\r\n setTimeout(that.restoreFocusableElement.bind(that, rowIndex, $event))\r\n };\r\n scrollable.on(\"scroll\", scrollHandler)\r\n }\r\n return scrollable.scrollBy({\r\n left: left,\r\n top: top\r\n })\r\n },\r\n _isInsideEditForm: function(element) {\r\n return (0, _renderer.default)(element).closest(\".\" + this.addWidgetPrefix(EDIT_FORM_CLASS)).length > 0\r\n },\r\n _isMasterDetailCell: function(element) {\r\n var $masterDetailCell = (0, _renderer.default)(element).closest(\".\" + MASTER_DETAIL_CELL_CLASS);\r\n var $masterDetailGrid = $masterDetailCell.closest(\".\" + this.getWidgetContainerClass()).parent();\r\n return $masterDetailCell.length && $masterDetailGrid.is(this.component.$element())\r\n },\r\n _processNextCellInMasterDetail: function($nextCell) {\r\n if (!this._isInsideEditForm($nextCell) && $nextCell) {\r\n this._applyTabIndexToElement($nextCell)\r\n }\r\n },\r\n _handleTabKeyOnMasterDetailCell: function(target, direction) {\r\n if (this._isMasterDetailCell(target)) {\r\n this._updateFocusedCellPosition((0, _renderer.default)(target), direction);\r\n var $nextCell = this._getNextCell(direction, \"row\");\r\n this._processNextCellInMasterDetail($nextCell);\r\n return true\r\n }\r\n return false\r\n },\r\n _getElementType: function(target) {\r\n return (0, _renderer.default)(target).is(\"tr\") ? \"row\" : \"cell\"\r\n },\r\n _isFastEditingStarted: function() {\r\n return this._isFastEditingAllowed() && this._fastEditingStarted\r\n },\r\n _getVisibleColumnCount: function() {\r\n return this._columnsController.getVisibleColumns(null, true).length\r\n },\r\n _isCellInRow: function(cellPosition, includeCommandCells) {\r\n var columnIndex = cellPosition.columnIndex;\r\n var visibleColumnsCount = this._getVisibleColumnCount();\r\n return includeCommandCells ? columnIndex >= 0 && columnIndex <= visibleColumnsCount - 1 : columnIndex > 0 && columnIndex < visibleColumnsCount - 1\r\n },\r\n _getCellElementFromTarget: function(target) {\r\n var elementType = this._getElementType(target);\r\n var $targetElement = (0, _renderer.default)(target);\r\n var $cell;\r\n if (\"cell\" === elementType) {\r\n $cell = $targetElement.closest(\".\".concat(ROW_CLASS, \" > td\"))\r\n } else {\r\n $cell = $targetElement.children().not(\".\" + COMMAND_EXPAND_CLASS).first()\r\n }\r\n return $cell\r\n },\r\n _getRowsViewElement: function() {\r\n var rowsView = this.getView(\"rowsView\");\r\n return rowsView && rowsView.element()\r\n },\r\n isKeyboardEnabled: function() {\r\n return this.option(\"keyboardNavigation.enabled\")\r\n },\r\n _processCanceledEditCellPosition: function(rowIndex, columnIndex) {\r\n if (this._canceledCellPosition) {\r\n var isCanceled = this._canceledCellPosition.rowIndex === rowIndex && this._canceledCellPosition.columnIndex === columnIndex;\r\n this._canceledCellPosition = null;\r\n return isCanceled\r\n }\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n useLegacyKeyboardNavigation: false,\r\n keyboardNavigation: {\r\n enabled: true,\r\n enterKeyAction: \"startEdit\",\r\n enterKeyDirection: \"none\",\r\n editOnKeyPress: false\r\n }\r\n }\r\n },\r\n controllers: {\r\n keyboardNavigation: KeyboardNavigationController\r\n },\r\n extenders: {\r\n views: {\r\n rowsView: {\r\n _rowClick: function(e) {\r\n var editRowIndex = this.getController(\"editing\").getEditRowIndex();\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n if (editRowIndex === e.rowIndex) {\r\n keyboardController.setCellFocusType()\r\n }\r\n var needTriggerPointerEventHandler = isMobile() && this.option(\"focusedRowEnabled\");\r\n if (needTriggerPointerEventHandler) {\r\n this._triggerPointerDownEventHandler(e)\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _triggerPointerDownEventHandler: function(e) {\r\n var originalEvent = e.event.originalEvent;\r\n if (originalEvent) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var $cell = (0, _renderer.default)(originalEvent.target);\r\n var columnIndex = this.getCellIndex($cell);\r\n var column = this.getController(\"columns\").getVisibleColumns()[columnIndex];\r\n var row = this.getController(\"data\").items()[e.rowIndex];\r\n if (keyboardController._isAllowEditing(row, column)) {\r\n var eventArgs = (0, _index.createEvent)(originalEvent, {\r\n currentTarget: originalEvent.target\r\n });\r\n keyboardController._pointerEventHandler(eventArgs)\r\n }\r\n }\r\n },\r\n renderFocusState: function(preventScroll) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var $rowsViewElement = this.element();\r\n if ($rowsViewElement && !(0, _selectors.focused)($rowsViewElement)) {\r\n $rowsViewElement.attr(\"tabindex\", null)\r\n }\r\n var rowIndex = keyboardController.getVisibleRowIndex();\r\n if (!(0, _type.isDefined)(rowIndex) || rowIndex < 0) {\r\n rowIndex = 0\r\n }\r\n var cellElements = this.getCellElements(rowIndex);\r\n if (keyboardController.isKeyboardEnabled() && cellElements.length) {\r\n this.updateFocusElementTabIndex(cellElements, preventScroll)\r\n }\r\n },\r\n updateFocusElementTabIndex: function(cellElements) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var $row = cellElements.eq(0).parent();\r\n if (isGroupRow($row)) {\r\n keyboardController._applyTabIndexToElement($row)\r\n } else {\r\n var columnIndex = keyboardController.getColumnIndex();\r\n if (!(0, _type.isDefined)(columnIndex) || columnIndex < 0) {\r\n columnIndex = 0\r\n }\r\n this._updateFocusedCellTabIndex(cellElements, columnIndex)\r\n }\r\n },\r\n _updateFocusedCellTabIndex: function(cellElements, columnIndex) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var cellElementsLength = cellElements ? cellElements.length : -1;\r\n var updateCellTabIndex = function($cell) {\r\n var isMasterDetailCell = keyboardController._isMasterDetailCell($cell);\r\n var isValidCell = keyboardController._isCellValid($cell);\r\n if (!isMasterDetailCell && isValidCell && isCellElement($cell)) {\r\n keyboardController._applyTabIndexToElement($cell);\r\n keyboardController.setCellFocusType();\r\n return true\r\n }\r\n };\r\n var $cell = cellElements.filter(\"[aria-colindex='\".concat(columnIndex + 1, \"']\"));\r\n if ($cell.length) {\r\n updateCellTabIndex($cell)\r\n } else {\r\n if (cellElementsLength <= columnIndex) {\r\n columnIndex = cellElementsLength - 1\r\n }\r\n for (var i = columnIndex; i < cellElementsLength; ++i) {\r\n if (updateCellTabIndex((0, _renderer.default)(cellElements[i]))) {\r\n break\r\n }\r\n }\r\n }\r\n },\r\n renderDelayedTemplates: function(change) {\r\n this.callBase.apply(this, arguments);\r\n if (!change || !change.repaintChangesOnly) {\r\n this.renderFocusState()\r\n }\r\n },\r\n _renderCore: function(change) {\r\n this.callBase(change);\r\n if (!change || !change.repaintChangesOnly) {\r\n this.renderFocusState()\r\n }\r\n },\r\n _editCellPrepared: function($cell) {\r\n var editorInstance = this._getEditorInstance($cell);\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var isEditingNavigationMode = keyboardController && keyboardController._isFastEditingStarted();\r\n if (editorInstance && isEditingNavigationMode) {\r\n this._handleEditingNavigationMode(editorInstance)\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _handleEditingNavigationMode: function(editorInstance) {\r\n [\"downArrow\", \"upArrow\"].forEach(function(keyName) {\r\n var originalKeyHandler = editorInstance._supportedKeys()[keyName];\r\n editorInstance.registerKeyHandler(keyName, function(e) {\r\n var isDropDownOpened = \"true\" === editorInstance._input().attr(\"aria-expanded\");\r\n if (isDropDownOpened) {\r\n return originalKeyHandler && originalKeyHandler.call(editorInstance, e)\r\n }\r\n })\r\n });\r\n editorInstance.registerKeyHandler(\"leftArrow\", _common.noop);\r\n editorInstance.registerKeyHandler(\"rightArrow\", _common.noop);\r\n var isDateBoxWithMask = editorInstance.NAME === DATEBOX_WIDGET_NAME && editorInstance.option(\"useMaskBehavior\");\r\n if (isDateBoxWithMask) {\r\n editorInstance.registerKeyHandler(\"enter\", _common.noop)\r\n }\r\n },\r\n _getEditorInstance: function($cell) {\r\n var $editor = $cell.find(\".dx-texteditor\").eq(0);\r\n return _uiGrid_core2.default.getWidgetInstance($editor)\r\n }\r\n }\r\n },\r\n controllers: {\r\n editing: {\r\n editCell: function(rowIndex, columnIndex) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n if (keyboardController._processCanceledEditCellPosition(rowIndex, columnIndex)) {\r\n return false\r\n }\r\n var isCellEditing = this.callBase(rowIndex, columnIndex);\r\n if (isCellEditing) {\r\n keyboardController.setupFocusedView()\r\n }\r\n return isCellEditing\r\n },\r\n editRow: function(rowIndex) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var visibleColumnIndex = keyboardController.getVisibleColumnIndex();\r\n var column = this._columnsController.getVisibleColumns()[visibleColumnIndex];\r\n if (column && column.type || this.option(\"editing.mode\") === EDIT_MODE_FORM) {\r\n keyboardController._resetFocusedCell()\r\n }\r\n this.callBase(rowIndex)\r\n },\r\n addRow: function(parentKey) {\r\n this.getController(\"keyboardNavigation\").setupFocusedView();\r\n return this.callBase.apply(this, arguments)\r\n },\r\n getFocusedCellInRow: function(rowIndex) {\r\n var keyboardNavigationController = this.getController(\"keyboardNavigation\");\r\n var $cell = this.callBase(rowIndex);\r\n if (keyboardNavigationController.isKeyboardEnabled() && keyboardNavigationController._focusedCellPosition.rowIndex === rowIndex) {\r\n var $focusedCell = keyboardNavigationController._getFocusedCell();\r\n if (isElementDefined($focusedCell) && !$focusedCell.hasClass(COMMAND_EDIT_CLASS)) {\r\n $cell = $focusedCell\r\n }\r\n }\r\n return $cell\r\n },\r\n _processCanceledEditingCell: function() {\r\n var _this8 = this;\r\n this.closeEditCell().done(function() {\r\n var keyboardNavigation = _this8.getController(\"keyboardNavigation\");\r\n keyboardNavigation._updateFocus()\r\n })\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._keyboardNavigationController = this.getController(\"keyboardNavigation\")\r\n },\r\n closeEditCell: function() {\r\n var keyboardNavigation = this.getController(\"keyboardNavigation\");\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 },\r\n adaptiveColumns: {\r\n _showHiddenCellsInView: function(_ref) {\r\n var viewName = _ref.viewName,\r\n $cells = _ref.$cells,\r\n isCommandColumn = _ref.isCommandColumn;\r\n this.callBase.apply(this, arguments);\r\n viewName === COLUMN_HEADERS_VIEW && !isCommandColumn && $cells.each(function(_, cellElement) {\r\n var $cell = (0, _renderer.default)(cellElement);\r\n isCellInHeaderRow($cell) && $cell.attr(\"tabindex\", 0)\r\n })\r\n },\r\n _hideVisibleCellInView: function(_ref2) {\r\n var viewName = _ref2.viewName,\r\n $cell = _ref2.$cell,\r\n isCommandColumn = _ref2.isCommandColumn;\r\n this.callBase.apply(this, arguments);\r\n if (viewName === COLUMN_HEADERS_VIEW && !isCommandColumn && isCellInHeaderRow($cell)) {\r\n $cell.removeAttr(\"tabindex\")\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.adaptivity.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _click = require(\"../../events/click\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _form = _interopRequireDefault(require(\"../form\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _themes = require(\"../themes\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COLUMN_HEADERS_VIEW = \"columnHeadersView\";\r\nvar ROWS_VIEW = \"rowsView\";\r\nvar FOOTER_VIEW = \"footerView\";\r\nvar COLUMN_VIEWS = [COLUMN_HEADERS_VIEW, ROWS_VIEW, FOOTER_VIEW];\r\nvar ADAPTIVE_NAMESPACE = \"dxDataGridAdaptivity\";\r\nvar HIDDEN_COLUMNS_WIDTH = \"adaptiveHidden\";\r\nvar ADAPTIVE_ROW_TYPE = \"detailAdaptive\";\r\nvar FORM_ITEM_CONTENT_CLASS = \"dx-field-item-content\";\r\nvar FORM_ITEM_MODIFIED = \"dx-item-modified\";\r\nvar HIDDEN_COLUMN_CLASS = \"hidden-column\";\r\nvar ADAPTIVE_COLUMN_BUTTON_CLASS = \"adaptive-more\";\r\nvar ADAPTIVE_COLUMN_NAME_CLASS = \"dx-command-adaptive\";\r\nvar COMMAND_ADAPTIVE_HIDDEN_CLASS = \"dx-command-adaptive-hidden\";\r\nvar ADAPTIVE_DETAIL_ROW_CLASS = \"dx-adaptive-detail-row\";\r\nvar ADAPTIVE_ITEM_TEXT_CLASS = \"dx-adaptive-item-text\";\r\nvar MASTER_DETAIL_CELL_CLASS = \"dx-master-detail-cell\";\r\nvar LAST_DATA_CELL_CLASS = \"dx-last-data-cell\";\r\nvar ADAPTIVE_COLUMN_NAME = \"adaptive\";\r\nvar EDIT_MODE_BATCH = \"batch\";\r\nvar EDIT_MODE_ROW = \"row\";\r\nvar EDIT_MODE_FORM = \"form\";\r\nvar EDIT_MODE_POPUP = \"popup\";\r\nvar REVERT_TOOLTIP_CLASS = \"revert-tooltip\";\r\nvar GROUP_CELL_CLASS = \"dx-group-cell\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\n\r\nfunction getColumnId(that, column) {\r\n return that._columnsController.getColumnId(column)\r\n}\r\n\r\nfunction getDataCellElements($row) {\r\n return $row.find(\"td:not(.dx-datagrid-hidden-column):not([class*='dx-command-'])\")\r\n}\r\n\r\nfunction adaptiveCellTemplate(container, options) {\r\n var $adaptiveColumnButton;\r\n var $container = (0, _renderer.default)(container);\r\n var adaptiveColumnsController = options.component.getController(\"adaptiveColumns\");\r\n if (\"data\" === options.rowType) {\r\n $adaptiveColumnButton = (0, _renderer.default)(\"\").addClass(adaptiveColumnsController.addWidgetPrefix(ADAPTIVE_COLUMN_BUTTON_CLASS));\r\n _events_engine.default.on($adaptiveColumnButton, (0, _index.addNamespace)(_click.name, ADAPTIVE_NAMESPACE), adaptiveColumnsController.createAction(function() {\r\n adaptiveColumnsController.toggleExpandAdaptiveDetailRow(options.key)\r\n }));\r\n $adaptiveColumnButton.appendTo($container)\r\n } else {\r\n _uiGrid_core2.default.setEmptyText($container)\r\n }\r\n}\r\nvar AdaptiveColumnsController = _uiGrid_core.default.ViewController.inherit({\r\n _isRowEditMode: function() {\r\n var editMode = this._getEditMode();\r\n return editMode === EDIT_MODE_ROW\r\n },\r\n _isItemModified: function(item, cellOptions) {\r\n var columnIndex = this._columnsController.getVisibleIndex(item.column.index);\r\n var rowIndex = this._dataController.getRowIndexByKey(cellOptions.key);\r\n var row = this._dataController.items()[rowIndex + 1];\r\n return row && row.modifiedValues && (0, _type.isDefined)(row.modifiedValues[columnIndex])\r\n },\r\n _renderFormViewTemplate: function(item, cellOptions, $container) {\r\n var that = this;\r\n var column = item.column;\r\n var focusAction = that.createAction(function() {\r\n _events_engine.default.trigger($container, _click.name)\r\n });\r\n var value = column.calculateCellValue(cellOptions.data);\r\n var displayValue = _uiGrid_core2.default.getDisplayValue(column, value, cellOptions.data, cellOptions.rowType);\r\n var text = _uiGrid_core2.default.formatValue(displayValue, column);\r\n var isCellOrBatchEditMode = this._editingController.isCellOrBatchEditMode();\r\n var rowsView = that._rowsView;\r\n if (column.allowEditing && that.getController(\"keyboardNavigation\").isKeyboardEnabled()) {\r\n $container.attr(\"tabIndex\", that.option(\"tabIndex\"));\r\n if (isCellOrBatchEditMode) {\r\n _events_engine.default.off($container, \"focus\", focusAction);\r\n _events_engine.default.on($container, \"focus\", focusAction)\r\n }\r\n }\r\n if (column.cellTemplate) {\r\n var templateOptions = (0, _extend.extend)({}, cellOptions, {\r\n value: value,\r\n displayValue: displayValue,\r\n text: text,\r\n column: column\r\n });\r\n var isDomElement = !!$container.closest((0, _window.getWindow)().document).length;\r\n rowsView.renderTemplate($container, column.cellTemplate, templateOptions, isDomElement).done(function() {\r\n rowsView._cellPrepared($container, cellOptions)\r\n })\r\n } else {\r\n var container = $container.get(0);\r\n if (column.encodeHtml) {\r\n container.textContent = text\r\n } else {\r\n container.innerHTML = text\r\n }\r\n $container.addClass(ADAPTIVE_ITEM_TEXT_CLASS);\r\n if (!(0, _type.isDefined)(text) || \"\" === text) {\r\n $container.html(\" \")\r\n }\r\n if (!that._isRowEditMode()) {\r\n if (that._isItemModified(item, cellOptions)) {\r\n $container.addClass(FORM_ITEM_MODIFIED)\r\n }\r\n }\r\n rowsView._cellPrepared($container, cellOptions)\r\n }\r\n },\r\n _getTemplate: function(item, cellOptions) {\r\n var that = this;\r\n var column = item.column;\r\n var editingController = this.getController(\"editing\");\r\n return function(options, container) {\r\n var $container = (0, _renderer.default)(container);\r\n var columnIndex = that._columnsController.getVisibleIndex(column.visibleIndex);\r\n var templateOptions = (0, _extend.extend)({}, cellOptions);\r\n var renderFormTemplate = function() {\r\n var isItemEdited = that._isItemEdited(item);\r\n templateOptions.value = cellOptions.row.values[columnIndex];\r\n if (isItemEdited || column.showEditorAlways) {\r\n editingController.renderFormEditTemplate(templateOptions, item, options.component, $container, !isItemEdited)\r\n } else {\r\n templateOptions.column = column;\r\n templateOptions.columnIndex = columnIndex;\r\n that._renderFormViewTemplate(item, templateOptions, $container)\r\n }\r\n };\r\n renderFormTemplate();\r\n templateOptions.watch && templateOptions.watch(function() {\r\n return {\r\n isItemEdited: that._isItemEdited(item),\r\n value: cellOptions.row.values[columnIndex]\r\n }\r\n }, function() {\r\n $container.contents().remove();\r\n $container.removeClass(ADAPTIVE_ITEM_TEXT_CLASS);\r\n renderFormTemplate()\r\n })\r\n }\r\n },\r\n _isVisibleColumnsValid: function(visibleColumns) {\r\n var getCommandColumnsCount = function() {\r\n var result = 0;\r\n for (var j = 0; j < visibleColumns.length; j++) {\r\n var visibleColumn = visibleColumns[j];\r\n if (visibleColumn.command) {\r\n result++\r\n }\r\n }\r\n return result\r\n };\r\n if (visibleColumns < 2) {\r\n return false\r\n }\r\n if (visibleColumns.length - getCommandColumnsCount() <= 1) {\r\n return false\r\n }\r\n return true\r\n },\r\n _calculatePercentWidths: function(widths, visibleColumns) {\r\n var that = this;\r\n var percentWidths = 0;\r\n visibleColumns.forEach(function(item, index) {\r\n if (widths[index] !== HIDDEN_COLUMNS_WIDTH) {\r\n percentWidths += that._getItemPercentWidth(item)\r\n }\r\n });\r\n return percentWidths\r\n },\r\n _isPercentWidth: function(width) {\r\n return (0, _type.isString)(width) && \"%\" === width.slice(-1)\r\n },\r\n _isColumnHidden: function(column) {\r\n return this._hiddenColumns.filter(function(hiddenColumn) {\r\n return hiddenColumn.index === column.index\r\n }).length > 0\r\n },\r\n _getAverageColumnsWidth: function(containerWidth, columns, columnsCanFit) {\r\n var that = this;\r\n var fixedColumnsWidth = 0;\r\n var columnsWithoutFixedWidthCount = 0;\r\n columns.forEach(function(column) {\r\n if (!that._isColumnHidden(column)) {\r\n var width = column.width;\r\n if ((0, _type.isDefined)(width) && !isNaN(parseFloat(width))) {\r\n fixedColumnsWidth += that._isPercentWidth(width) ? that._calculatePercentWidth({\r\n visibleIndex: column.visibleIndex,\r\n columnsCount: columns.length,\r\n columnsCanFit: columnsCanFit,\r\n bestFitWidth: column.bestFitWidth,\r\n columnWidth: width,\r\n containerWidth: containerWidth\r\n }) : parseFloat(width)\r\n } else {\r\n columnsWithoutFixedWidthCount++\r\n }\r\n }\r\n });\r\n return (containerWidth - fixedColumnsWidth) / columnsWithoutFixedWidthCount\r\n },\r\n _calculateColumnWidth: function(column, containerWidth, contentColumns, columnsCanFit) {\r\n var columnId = getColumnId(this, column);\r\n var widthOption = this._columnsController.columnOption(columnId, \"width\");\r\n var bestFitWidth = this._columnsController.columnOption(columnId, \"bestFitWidth\");\r\n var columnsCount = contentColumns.length;\r\n var colWidth;\r\n if (widthOption && \"auto\" !== widthOption) {\r\n if (this._isPercentWidth(widthOption)) {\r\n colWidth = this._calculatePercentWidth({\r\n visibleIndex: column.visibleIndex,\r\n columnsCount: columnsCount,\r\n columnsCanFit: columnsCanFit,\r\n bestFitWidth: bestFitWidth,\r\n columnWidth: widthOption,\r\n containerWidth: containerWidth\r\n })\r\n } else {\r\n return widthOption\r\n }\r\n } else {\r\n var columnAutoWidth = this.option(\"columnAutoWidth\");\r\n colWidth = columnAutoWidth || !!column.command ? bestFitWidth : this._getAverageColumnsWidth(containerWidth, contentColumns, columnsCanFit)\r\n }\r\n return colWidth\r\n },\r\n _calculatePercentWidth: function(options) {\r\n var columnFitted = options.visibleIndex < options.columnsCount - 1 && options.columnsCanFit;\r\n var partialWidth = options.containerWidth * parseFloat(options.columnWidth) / 100;\r\n var resultWidth = options.columnsCanFit && partialWidth < options.bestFitWidth ? options.bestFitWidth : partialWidth;\r\n return columnFitted ? options.containerWidth * parseFloat(options.columnWidth) / 100 : resultWidth\r\n },\r\n _getNotTruncatedColumnWidth: function(column, containerWidth, contentColumns, columnsCanFit) {\r\n var columnId = getColumnId(this, column);\r\n var widthOption = this._columnsController.columnOption(columnId, \"width\");\r\n var bestFitWidth = this._columnsController.columnOption(columnId, \"bestFitWidth\");\r\n if (widthOption && \"auto\" !== widthOption && !this._isPercentWidth(widthOption)) {\r\n return parseFloat(widthOption)\r\n }\r\n var colWidth = this._calculateColumnWidth(column, containerWidth, contentColumns, columnsCanFit);\r\n return colWidth < bestFitWidth ? null : colWidth\r\n },\r\n _getItemPercentWidth: function(item) {\r\n var result = 0;\r\n if (item.width && this._isPercentWidth(item.width)) {\r\n result = parseFloat(item.width)\r\n }\r\n return result\r\n },\r\n _getCommandColumnsWidth: function() {\r\n var that = this;\r\n var columns = that._columnsController.getVisibleColumns();\r\n var colWidth = 0;\r\n (0, _iterator.each)(columns, function(index, column) {\r\n if (column.index < 0 || column.command) {\r\n colWidth += that._columnsController.columnOption(getColumnId(that, column), \"bestFitWidth\") || 0\r\n }\r\n });\r\n return colWidth\r\n },\r\n _isItemEdited: function(item) {\r\n if (this.isFormEditMode()) {\r\n return false\r\n }\r\n if (this._isRowEditMode()) {\r\n var editRowKey = this.option(\"editing.editRowKey\");\r\n if ((0, _common.equalByValue)(editRowKey, this._dataController.adaptiveExpandedKey())) {\r\n return true\r\n }\r\n } else {\r\n var rowIndex = this._dataController.getRowIndexByKey(this._dataController.adaptiveExpandedKey()) + 1;\r\n var columnIndex = this._columnsController.getVisibleIndex(item.column.index);\r\n return this._editingController.isEditCell(rowIndex, columnIndex)\r\n }\r\n },\r\n _getFormItemsByHiddenColumns: function(hiddenColumns) {\r\n var items = [];\r\n (0, _iterator.each)(hiddenColumns, function(_, column) {\r\n items.push({\r\n column: column,\r\n name: column.name,\r\n dataField: column.dataField,\r\n visibleIndex: column.visibleIndex\r\n })\r\n });\r\n return items\r\n },\r\n _getAdaptiveColumnVisibleIndex: function(visibleColumns) {\r\n for (var i = 0; i < visibleColumns.length; i++) {\r\n var column = visibleColumns[i];\r\n if (column.command === ADAPTIVE_COLUMN_NAME) {\r\n return i\r\n }\r\n }\r\n },\r\n _hideAdaptiveColumn: function(resultWidths, visibleColumns) {\r\n var visibleIndex = this._getAdaptiveColumnVisibleIndex(visibleColumns);\r\n if ((0, _type.isDefined)(visibleIndex)) {\r\n resultWidths[visibleIndex] = HIDDEN_COLUMNS_WIDTH;\r\n this._hideVisibleColumn({\r\n isCommandColumn: true,\r\n visibleIndex: visibleIndex\r\n })\r\n }\r\n },\r\n _showHiddenCellsInView: function(_ref) {\r\n var $cells = _ref.$cells,\r\n isCommandColumn = _ref.isCommandColumn;\r\n var cssClassNameToRemove = isCommandColumn ? COMMAND_ADAPTIVE_HIDDEN_CLASS : this.addWidgetPrefix(HIDDEN_COLUMN_CLASS);\r\n $cells.removeClass(cssClassNameToRemove)\r\n },\r\n _showHiddenColumns: function() {\r\n for (var i = 0; i < COLUMN_VIEWS.length; i++) {\r\n var view = this.getView(COLUMN_VIEWS[i]);\r\n if (view && view.isVisible() && view.element()) {\r\n var viewName = view.name;\r\n var $hiddenCommandCells = view.element().find(\".\" + COMMAND_ADAPTIVE_HIDDEN_CLASS);\r\n this._showHiddenCellsInView({\r\n viewName: viewName,\r\n $cells: $hiddenCommandCells,\r\n isCommandColumn: true\r\n });\r\n var $hiddenCells = view.element().find(\".\" + this.addWidgetPrefix(HIDDEN_COLUMN_CLASS));\r\n this._showHiddenCellsInView({\r\n viewName: viewName,\r\n $cells: $hiddenCells\r\n })\r\n }\r\n }\r\n },\r\n _isCellValid: function($cell) {\r\n return $cell && $cell.length && !$cell.hasClass(MASTER_DETAIL_CELL_CLASS) && !$cell.hasClass(GROUP_CELL_CLASS)\r\n },\r\n _hideVisibleColumn: function(_ref2) {\r\n var isCommandColumn = _ref2.isCommandColumn,\r\n visibleIndex = _ref2.visibleIndex;\r\n var that = this;\r\n COLUMN_VIEWS.forEach(function(viewName) {\r\n var view = that.getView(viewName);\r\n view && that._hideVisibleColumnInView({\r\n view: view,\r\n isCommandColumn: isCommandColumn,\r\n visibleIndex: visibleIndex\r\n })\r\n })\r\n },\r\n _hideVisibleColumnInView: function(_ref3) {\r\n var view = _ref3.view,\r\n isCommandColumn = _ref3.isCommandColumn,\r\n visibleIndex = _ref3.visibleIndex;\r\n var viewName = view.name;\r\n var $cellElement;\r\n var column = this._columnsController.getVisibleColumns()[visibleIndex];\r\n var editFormRowIndex = this._editingController && this._editingController.getEditFormRowIndex();\r\n if (view && view.isVisible() && column) {\r\n var rowsCount = view.getRowsCount();\r\n var $rowElements = view._getRowElements();\r\n for (var rowIndex = 0; rowIndex < rowsCount; rowIndex++) {\r\n var cancelClassAdding = rowIndex === editFormRowIndex && viewName === ROWS_VIEW && \"popup\" !== this.option(\"editing.mode\");\r\n if (!cancelClassAdding) {\r\n var currentVisibleIndex = viewName === COLUMN_HEADERS_VIEW ? this._columnsController.getVisibleIndex(column.index, rowIndex) : visibleIndex;\r\n if (currentVisibleIndex >= 0) {\r\n var $rowElement = $rowElements.eq(rowIndex);\r\n $cellElement = this._findCellElementInRow($rowElement, currentVisibleIndex);\r\n this._isCellValid($cellElement) && this._hideVisibleCellInView({\r\n viewName: viewName,\r\n isCommandColumn: isCommandColumn,\r\n $cell: $cellElement\r\n })\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _findCellElementInRow: function($rowElement, visibleColumnIndex) {\r\n var $rowCells = $rowElement.children();\r\n var visibleIndex = visibleColumnIndex;\r\n var cellIsInsideGroup = false;\r\n if ($rowElement.hasClass(GROUP_ROW_CLASS)) {\r\n var $groupCell = $rowElement.find(\".\".concat(GROUP_CELL_CLASS));\r\n var colSpan = $groupCell.attr(\"colspan\");\r\n if ($groupCell.length && (0, _type.isDefined)(colSpan)) {\r\n var groupCellLength = parseInt(colSpan);\r\n var endGroupIndex = $groupCell.index() + groupCellLength - 1;\r\n if (visibleColumnIndex > endGroupIndex) {\r\n visibleIndex = visibleColumnIndex - groupCellLength + 1\r\n } else {\r\n cellIsInsideGroup = true\r\n }\r\n }\r\n }\r\n var $cellElement = !cellIsInsideGroup ? $rowCells.eq(visibleIndex) : void 0;\r\n return $cellElement\r\n },\r\n _hideVisibleCellInView: function(_ref4) {\r\n var $cell = _ref4.$cell,\r\n isCommandColumn = _ref4.isCommandColumn;\r\n var cssClassNameToAdd = isCommandColumn ? COMMAND_ADAPTIVE_HIDDEN_CLASS : this.addWidgetPrefix(HIDDEN_COLUMN_CLASS);\r\n $cell.addClass(cssClassNameToAdd)\r\n },\r\n _getEditMode: function() {\r\n return this._editingController.getEditMode()\r\n },\r\n isFormEditMode: function() {\r\n var editMode = this._getEditMode();\r\n return editMode === EDIT_MODE_FORM || editMode === EDIT_MODE_POPUP\r\n },\r\n hideRedundantColumns: function(resultWidths, visibleColumns, hiddenQueue) {\r\n var that = this;\r\n this._hiddenColumns = [];\r\n if (that._isVisibleColumnsValid(visibleColumns) && hiddenQueue.length) {\r\n var totalWidth = 0;\r\n var $rootElement = that.component.$element();\r\n var rootElementWidth = $rootElement.width() - that._getCommandColumnsWidth();\r\n var getVisibleContentColumns = function() {\r\n var _this = this;\r\n return visibleColumns.filter(function(item) {\r\n return !item.command && 0 === _this._hiddenColumns.filter(function(i) {\r\n return i.index === item.index\r\n }).length\r\n })\r\n }.bind(this);\r\n var visibleContentColumns = getVisibleContentColumns();\r\n var contentColumnsCount = visibleContentColumns.length;\r\n var i;\r\n var hasHiddenColumns;\r\n var needHideColumn;\r\n do {\r\n needHideColumn = false;\r\n totalWidth = 0;\r\n var percentWidths = that._calculatePercentWidths(resultWidths, visibleColumns);\r\n var columnsCanFit = percentWidths < 100 && 0 !== percentWidths;\r\n for (i = 0; i < visibleColumns.length; i++) {\r\n var visibleColumn = visibleColumns[i];\r\n var columnWidth = that._getNotTruncatedColumnWidth(visibleColumn, rootElementWidth, visibleContentColumns, columnsCanFit);\r\n var columnId = getColumnId(that, visibleColumn);\r\n var widthOption = that._columnsController.columnOption(columnId, \"width\");\r\n var minWidth = that._columnsController.columnOption(columnId, \"minWidth\");\r\n var columnBestFitWidth = that._columnsController.columnOption(columnId, \"bestFitWidth\");\r\n if (resultWidths[i] === HIDDEN_COLUMNS_WIDTH) {\r\n hasHiddenColumns = true;\r\n continue\r\n }\r\n if (!columnWidth && !visibleColumn.command && !visibleColumn.fixed) {\r\n needHideColumn = true;\r\n break\r\n }\r\n if (!widthOption || \"auto\" === widthOption) {\r\n columnWidth = Math.max(columnBestFitWidth || 0, minWidth || 0)\r\n }\r\n if (visibleColumn.command !== ADAPTIVE_COLUMN_NAME || hasHiddenColumns) {\r\n totalWidth += columnWidth\r\n }\r\n }\r\n needHideColumn = needHideColumn || totalWidth > $rootElement.width();\r\n if (needHideColumn) {\r\n var column = hiddenQueue.pop();\r\n var visibleIndex = that._columnsController.getVisibleIndex(column.index);\r\n rootElementWidth += that._calculateColumnWidth(column, rootElementWidth, visibleContentColumns, columnsCanFit);\r\n that._hideVisibleColumn({\r\n visibleIndex: visibleIndex\r\n });\r\n resultWidths[visibleIndex] = HIDDEN_COLUMNS_WIDTH;\r\n this._hiddenColumns.push(column);\r\n visibleContentColumns = getVisibleContentColumns()\r\n }\r\n } while (needHideColumn && visibleContentColumns.length > 1 && hiddenQueue.length);\r\n if (contentColumnsCount === visibleContentColumns.length) {\r\n that._hideAdaptiveColumn(resultWidths, visibleColumns)\r\n }\r\n } else {\r\n that._hideAdaptiveColumn(resultWidths, visibleColumns)\r\n }\r\n },\r\n getItemContentByColumnIndex: function(visibleColumnIndex) {\r\n var $itemContent;\r\n for (var i = 0; i < this._$itemContents.length; i++) {\r\n $itemContent = this._$itemContents.eq(i);\r\n var item = $itemContent.data(\"dx-form-item\");\r\n if (item && item.column && this._columnsController.getVisibleIndex(item.column.index) === visibleColumnIndex) {\r\n return $itemContent\r\n }\r\n }\r\n },\r\n toggleExpandAdaptiveDetailRow: function(key, alwaysExpanded) {\r\n if (!(this.isFormEditMode() && this._editingController.isEditing())) {\r\n this.getController(\"data\").toggleExpandAdaptiveDetailRow(key, alwaysExpanded)\r\n }\r\n },\r\n createFormByHiddenColumns: function(container, options) {\r\n var that = this;\r\n var $container = (0, _renderer.default)(container);\r\n var userFormOptions = {\r\n items: that._getFormItemsByHiddenColumns(that._hiddenColumns),\r\n formID: \"dx-\" + new _guid.default\r\n };\r\n var defaultFormOptions = (0, _themes.isMaterial)() ? {\r\n colCount: 2\r\n } : {};\r\n this.executeAction(\"onAdaptiveDetailRowPreparing\", {\r\n formOptions: userFormOptions\r\n });\r\n that._$itemContents = null;\r\n that._form = that._createComponent((0, _renderer.default)(\"
    \").appendTo($container), _form.default, (0, _extend.extend)(defaultFormOptions, userFormOptions, {\r\n customizeItem: function(item) {\r\n var column = item.column || that._columnsController.columnOption(item.name || item.dataField);\r\n if (column) {\r\n item.label = item.label || {};\r\n item.label.text = item.label.text || column.caption;\r\n item.column = column;\r\n item.template = that._getTemplate(item, options, that.updateForm.bind(that))\r\n }\r\n userFormOptions.customizeItem && userFormOptions.customizeItem.call(this, item)\r\n },\r\n onContentReady: function(e) {\r\n userFormOptions.onContentReady && userFormOptions.onContentReady.call(this, e);\r\n that._$itemContents = $container.find(\".\" + FORM_ITEM_CONTENT_CLASS)\r\n }\r\n }))\r\n },\r\n hasAdaptiveDetailRowExpanded: function() {\r\n return (0, _type.isDefined)(this._dataController.adaptiveExpandedKey())\r\n },\r\n updateForm: function(hiddenColumns) {\r\n if (this.hasAdaptiveDetailRowExpanded()) {\r\n if (this._form && (0, _type.isDefined)(this._form._contentReadyAction)) {\r\n if (hiddenColumns && hiddenColumns.length) {\r\n this._form.option(\"items\", this._getFormItemsByHiddenColumns(hiddenColumns))\r\n } else {\r\n this._form.repaint()\r\n }\r\n }\r\n }\r\n },\r\n updateHidingQueue: function(columns) {\r\n var that = this;\r\n var hideableColumns = columns.filter(function(column) {\r\n return column.visible && !column.type && !column.fixed && !((0, _type.isDefined)(column.groupIndex) && column.groupIndex >= 0)\r\n });\r\n var columnsHasHidingPriority;\r\n var i;\r\n that._hidingColumnsQueue = [];\r\n if (that.option(\"allowColumnResizing\") && \"widget\" === that.option(\"columnResizingMode\")) {\r\n return that._hidingColumnsQueue\r\n }\r\n for (i = 0; i < hideableColumns.length; i++) {\r\n if ((0, _type.isDefined)(hideableColumns[i].hidingPriority) && hideableColumns[i].hidingPriority >= 0) {\r\n columnsHasHidingPriority = true;\r\n that._hidingColumnsQueue[hideableColumns[i].hidingPriority] = hideableColumns[i]\r\n }\r\n }\r\n if (columnsHasHidingPriority) {\r\n that._hidingColumnsQueue.reverse()\r\n } else {\r\n if (that.option(\"columnHidingEnabled\")) {\r\n for (i = 0; i < hideableColumns.length; i++) {\r\n var visibleIndex = that._columnsController.getVisibleIndex(hideableColumns[i].index);\r\n that._hidingColumnsQueue[visibleIndex] = hideableColumns[i]\r\n }\r\n }\r\n }\r\n that._hidingColumnsQueue = that._hidingColumnsQueue.filter(Object);\r\n return that._hidingColumnsQueue\r\n },\r\n getHiddenColumns: function() {\r\n return this._hiddenColumns\r\n },\r\n hasHiddenColumns: function() {\r\n return this._hiddenColumns.length > 0\r\n },\r\n getHidingColumnsQueue: function() {\r\n return this._hidingColumnsQueue\r\n },\r\n init: function() {\r\n var that = this;\r\n that._columnsController = that.getController(\"columns\");\r\n that._dataController = that.getController(\"data\");\r\n that._rowsView = that.getView(\"rowsView\");\r\n that._columnsController.addCommandColumn({\r\n type: ADAPTIVE_COLUMN_NAME,\r\n command: ADAPTIVE_COLUMN_NAME,\r\n visible: true,\r\n adaptiveHidden: true,\r\n cssClass: ADAPTIVE_COLUMN_NAME_CLASS,\r\n alignment: \"center\",\r\n width: \"auto\",\r\n cellTemplate: adaptiveCellTemplate,\r\n fixedPosition: \"right\"\r\n });\r\n that._columnsController.columnsChanged.add(function() {\r\n var isAdaptiveVisible = !!that.updateHidingQueue(that._columnsController.getColumns()).length;\r\n that._columnsController.columnOption(\"command:adaptive\", \"adaptiveHidden\", !isAdaptiveVisible, true)\r\n });\r\n that._editingController = that.getController(\"editing\");\r\n that._hidingColumnsQueue = [];\r\n that._hiddenColumns = [];\r\n that.createAction(\"onAdaptiveDetailRowPreparing\");\r\n that.callBase()\r\n },\r\n optionChanged: function(args) {\r\n if (\"columnHidingEnabled\" === args.name) {\r\n this._columnsController.columnOption(\"command:adaptive\", \"adaptiveHidden\", !args.value)\r\n }\r\n this.callBase(args)\r\n },\r\n publicMethods: function() {\r\n return [\"isAdaptiveDetailRowExpanded\", \"expandAdaptiveDetailRow\", \"collapseAdaptiveDetailRow\"]\r\n },\r\n isAdaptiveDetailRowExpanded: function(key) {\r\n return this._dataController.adaptiveExpandedKey() && (0, _common.equalByValue)(this._dataController.adaptiveExpandedKey(), key)\r\n },\r\n expandAdaptiveDetailRow: function(key) {\r\n if (!this.hasAdaptiveDetailRowExpanded()) {\r\n this.toggleExpandAdaptiveDetailRow(key)\r\n }\r\n },\r\n collapseAdaptiveDetailRow: function() {\r\n if (this.hasAdaptiveDetailRowExpanded()) {\r\n this.toggleExpandAdaptiveDetailRow()\r\n }\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n columnHidingEnabled: false,\r\n onAdaptiveDetailRowPreparing: null\r\n }\r\n },\r\n controllers: {\r\n adaptiveColumns: AdaptiveColumnsController\r\n },\r\n extenders: {\r\n views: {\r\n rowsView: {\r\n _getCellTemplate: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n if (options.rowType === ADAPTIVE_ROW_TYPE && \"detail\" === column.command) {\r\n return function(container, options) {\r\n that._adaptiveColumnsController.createFormByHiddenColumns((0, _renderer.default)(container), options)\r\n }\r\n }\r\n return that.callBase(options)\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row);\r\n if (row && row.rowType === ADAPTIVE_ROW_TYPE && row.key === this._dataController.adaptiveExpandedKey()) {\r\n $row.addClass(ADAPTIVE_DETAIL_ROW_CLASS)\r\n }\r\n return $row\r\n },\r\n _renderCells: function($row, options) {\r\n this.callBase($row, options);\r\n var hidingColumnsQueueLength = this._adaptiveColumnsController.getHidingColumnsQueue().length;\r\n var hiddenColumnsLength = this._adaptiveColumnsController.getHiddenColumns().length;\r\n if (hidingColumnsQueueLength && !hiddenColumnsLength) {\r\n getDataCellElements($row).last().addClass(LAST_DATA_CELL_CLASS)\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(rowIndex, columnIdentifier)\r\n }\r\n },\r\n getContextMenuItems: function(options) {\r\n if (options.row && \"detailAdaptive\" === options.row.rowType) {\r\n var view = this.component.getView(\"columnHeadersView\");\r\n var formItem = (0, _renderer.default)(options.targetElement).closest(\".dx-field-item-label\").next().data(\"dx-form-item\");\r\n options.column = formItem ? formItem.column : options.column;\r\n return view.getContextMenuItems && view.getContextMenuItems(options)\r\n }\r\n return this.callBase && this.callBase(options)\r\n },\r\n isClickableElement: function($target) {\r\n var isClickable = this.callBase ? this.callBase($target) : false;\r\n return isClickable || !!$target.closest(\".\" + ADAPTIVE_COLUMN_NAME_CLASS).length\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._adaptiveColumnsController = this.getController(\"adaptiveColumns\")\r\n }\r\n }\r\n },\r\n controllers: {\r\n \"export\": {\r\n _updateColumnWidth: function(column, width) {\r\n this.callBase(column, column.visibleWidth === HIDDEN_COLUMNS_WIDTH ? column.bestFitWidth : width)\r\n }\r\n },\r\n columnsResizer: {\r\n _pointCreated: function(point, cellsLength, columns) {\r\n var result = this.callBase(point, cellsLength, columns);\r\n var currentColumn = columns[point.columnIndex] || {};\r\n var nextColumnIndex = this._getNextColumnIndex(point.columnIndex);\r\n var nextColumn = columns[nextColumnIndex] || {};\r\n var hasHiddenColumnsOnly = nextColumnIndex !== point.columnIndex + 1 && nextColumn.command;\r\n var hasAdaptiveHiddenWidth = currentColumn.visibleWidth === HIDDEN_COLUMNS_WIDTH || hasHiddenColumnsOnly;\r\n return result || hasAdaptiveHiddenWidth\r\n },\r\n _getNextColumnIndex: function(currentColumnIndex) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var index = this.callBase(currentColumnIndex);\r\n while (visibleColumns[index] && visibleColumns[index].visibleWidth === HIDDEN_COLUMNS_WIDTH) {\r\n index++\r\n }\r\n return index\r\n }\r\n },\r\n draggingHeader: {\r\n _pointCreated: function(point, columns, location, sourceColumn) {\r\n var result = this.callBase(point, columns, location, sourceColumn);\r\n var column = columns[point.columnIndex - 1] || {};\r\n var hasAdaptiveHiddenWidth = column.visibleWidth === HIDDEN_COLUMNS_WIDTH;\r\n return result || hasAdaptiveHiddenWidth\r\n }\r\n },\r\n editing: {\r\n _isRowEditMode: function() {\r\n return this.getEditMode() === EDIT_MODE_ROW\r\n },\r\n _getFormEditItemTemplate: function(cellOptions, column) {\r\n if (this.getEditMode() !== EDIT_MODE_ROW && \"detailAdaptive\" === cellOptions.rowType) {\r\n cellOptions.columnIndex = this._columnsController.getVisibleIndex(column.index);\r\n return this.getColumnTemplate(cellOptions)\r\n }\r\n return this.callBase(cellOptions, column)\r\n },\r\n _closeEditItem: function($targetElement) {\r\n var $itemContents = $targetElement.closest(\".\" + FORM_ITEM_CONTENT_CLASS);\r\n var rowIndex = this._dataController.getRowIndexByKey(this._dataController.adaptiveExpandedKey()) + 1;\r\n var formItem = $itemContents.length ? $itemContents.first().data(\"dx-form-item\") : null;\r\n var columnIndex = formItem && formItem.column && this._columnsController.getVisibleIndex(formItem.column.index);\r\n if (!this.isEditCell(rowIndex, columnIndex)) {\r\n this.callBase($targetElement)\r\n }\r\n },\r\n _beforeUpdateItems: function(rowIndices, rowIndex) {\r\n if (!this._adaptiveController.isFormEditMode() && this._adaptiveController.hasHiddenColumns()) {\r\n var items = this._dataController.items();\r\n var item = items[rowIndex];\r\n var oldExpandRowIndex = _uiGrid_core2.default.getIndexByKey(this._dataController.adaptiveExpandedKey(), items);\r\n this._isForceRowAdaptiveExpand = !this._adaptiveController.hasAdaptiveDetailRowExpanded();\r\n if (oldExpandRowIndex >= 0) {\r\n rowIndices.push(oldExpandRowIndex + 1)\r\n }\r\n rowIndices.push(rowIndex + 1);\r\n this._dataController.adaptiveExpandedKey(item.key)\r\n }\r\n },\r\n _afterInsertRow: function(options) {\r\n this.callBase(options);\r\n if (this._adaptiveController.hasHiddenColumns()) {\r\n this._adaptiveController.toggleExpandAdaptiveDetailRow(options.key, this.isRowEditMode());\r\n this._isForceRowAdaptiveExpand = true\r\n }\r\n },\r\n _collapseAdaptiveDetailRow: function() {\r\n if (this._isRowEditMode() && this._isForceRowAdaptiveExpand) {\r\n this._adaptiveController.collapseAdaptiveDetailRow();\r\n this._isForceRowAdaptiveExpand = false\r\n }\r\n },\r\n _cancelEditAdaptiveDetailRow: function() {\r\n if (this._adaptiveController.hasHiddenColumns()) {\r\n this._collapseAdaptiveDetailRow()\r\n }\r\n },\r\n _afterSaveEditData: function() {\r\n var _this2 = this;\r\n this.callBase.apply(this, arguments);\r\n var deferred = new _deferred.Deferred;\r\n if (this._isRowEditMode() && this._adaptiveController.hasHiddenColumns()) {\r\n (0, _deferred.when)(this.getController(\"validating\").validate(true)).done(function(isValid) {\r\n if (isValid) {\r\n _this2._cancelEditAdaptiveDetailRow()\r\n }\r\n deferred.resolve()\r\n })\r\n } else {\r\n deferred.resolve()\r\n }\r\n return deferred.promise()\r\n },\r\n _beforeCancelEditData: function() {\r\n this.callBase();\r\n this._cancelEditAdaptiveDetailRow()\r\n },\r\n _getRowIndicesForCascadeUpdating: function(row) {\r\n var rowIndices = this.callBase.apply(this, arguments);\r\n if (this._adaptiveController.isAdaptiveDetailRowExpanded(row.key)) {\r\n rowIndices.push(row.rowType === ADAPTIVE_ROW_TYPE ? row.rowIndex - 1 : row.rowIndex + 1)\r\n }\r\n return rowIndices\r\n },\r\n _beforeCloseEditCellInBatchMode: function(rowIndices) {\r\n var expandedKey = this._dataController._adaptiveExpandedKey;\r\n if (expandedKey) {\r\n var rowIndex = _uiGrid_core2.default.getIndexByKey(expandedKey, this._dataController.items());\r\n if (rowIndex > -1) {\r\n rowIndices.unshift(rowIndex)\r\n }\r\n }\r\n },\r\n editRow: function(rowIndex) {\r\n if (this._adaptiveController.isFormEditMode()) {\r\n this._adaptiveController.collapseAdaptiveDetailRow()\r\n }\r\n this.callBase(rowIndex)\r\n },\r\n deleteRow: function(rowIndex) {\r\n var rowKey = this._dataController.getKeyByRowIndex(rowIndex);\r\n if (this.getEditMode() === EDIT_MODE_BATCH && this._adaptiveController.isAdaptiveDetailRowExpanded(rowKey)) {\r\n this._adaptiveController.collapseAdaptiveDetailRow()\r\n }\r\n this.callBase(rowIndex)\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._adaptiveController = this.getController(\"adaptiveColumns\")\r\n }\r\n },\r\n resizing: {\r\n _needBestFit: function() {\r\n return this.callBase() || !!this._adaptiveColumnsController.getHidingColumnsQueue().length\r\n },\r\n _updateScrollableForIE: function() {\r\n var that = this;\r\n if (_browser.default.msie && parseInt(_browser.default.version) <= 11) {\r\n this._updateScrollableTimeoutID = setTimeout(function() {\r\n that.getView(\"rowsView\")._updateScrollable()\r\n })\r\n }\r\n },\r\n _correctColumnWidths: function(resultWidths, visibleColumns) {\r\n var adaptiveController = this._adaptiveColumnsController;\r\n var columnAutoWidth = this.option(\"columnAutoWidth\");\r\n var oldHiddenColumns = adaptiveController.getHiddenColumns();\r\n var hidingColumnsQueue = adaptiveController.updateHidingQueue(this._columnsController.getColumns());\r\n adaptiveController.hideRedundantColumns(resultWidths, visibleColumns, hidingColumnsQueue);\r\n var hiddenColumns = adaptiveController.getHiddenColumns();\r\n if (adaptiveController.hasAdaptiveDetailRowExpanded()) {\r\n if (oldHiddenColumns.length !== hiddenColumns.length) {\r\n adaptiveController.updateForm(hiddenColumns)\r\n }\r\n }!hiddenColumns.length && adaptiveController.collapseAdaptiveDetailRow();\r\n if (columnAutoWidth && hidingColumnsQueue.length && !hiddenColumns.length) {\r\n this._updateScrollableForIE()\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _toggleBestFitMode: function(isBestFit) {\r\n isBestFit && this._adaptiveColumnsController._showHiddenColumns();\r\n this.callBase(isBestFit)\r\n },\r\n _needStretch: function() {\r\n var adaptiveColumnsController = this._adaptiveColumnsController;\r\n return this.callBase.apply(this, arguments) || adaptiveColumnsController.getHidingColumnsQueue().length || adaptiveColumnsController.hasHiddenColumns()\r\n },\r\n init: function() {\r\n this._adaptiveColumnsController = this.getController(\"adaptiveColumns\");\r\n this.callBase()\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n clearTimeout(this._updateScrollableTimeoutID)\r\n }\r\n },\r\n data: {\r\n _processItems: function(items, change) {\r\n var that = this;\r\n var changeType = change.changeType;\r\n items = that.callBase.apply(that, arguments);\r\n if (\"loadingAll\" === changeType || !(0, _type.isDefined)(that._adaptiveExpandedKey)) {\r\n return items\r\n }\r\n var expandRowIndex = _uiGrid_core2.default.getIndexByKey(that._adaptiveExpandedKey, items);\r\n if (expandRowIndex >= 0) {\r\n var item = items[expandRowIndex];\r\n items.splice(expandRowIndex + 1, 0, {\r\n visible: true,\r\n rowType: ADAPTIVE_ROW_TYPE,\r\n key: item.key,\r\n data: item.data,\r\n node: item.node,\r\n modifiedValues: item.modifiedValues,\r\n isNewRow: item.isNewRow,\r\n values: item.values\r\n })\r\n } else {\r\n if (\"refresh\" === changeType) {\r\n that._adaptiveExpandedKey = void 0\r\n }\r\n }\r\n return items\r\n },\r\n _getRowIndicesForExpand: function(key) {\r\n var rowIndices = this.callBase.apply(this, arguments);\r\n if (this.getController(\"adaptiveColumns\").isAdaptiveDetailRowExpanded(key)) {\r\n var lastRowIndex = rowIndices[rowIndices.length - 1];\r\n rowIndices.push(lastRowIndex + 1)\r\n }\r\n return rowIndices\r\n },\r\n adaptiveExpandedKey: function(value) {\r\n if ((0, _type.isDefined)(value)) {\r\n this._adaptiveExpandedKey = value\r\n } else {\r\n return this._adaptiveExpandedKey\r\n }\r\n },\r\n toggleExpandAdaptiveDetailRow: function(key, alwaysExpanded) {\r\n var that = this;\r\n var oldExpandLoadedRowIndex = _uiGrid_core2.default.getIndexByKey(that._adaptiveExpandedKey, that._items);\r\n var newExpandLoadedRowIndex = _uiGrid_core2.default.getIndexByKey(key, that._items);\r\n if (oldExpandLoadedRowIndex >= 0 && oldExpandLoadedRowIndex === newExpandLoadedRowIndex && !alwaysExpanded) {\r\n key = void 0;\r\n newExpandLoadedRowIndex = -1\r\n }\r\n that._adaptiveExpandedKey = key;\r\n if (oldExpandLoadedRowIndex >= 0) {\r\n oldExpandLoadedRowIndex++\r\n }\r\n if (newExpandLoadedRowIndex >= 0) {\r\n newExpandLoadedRowIndex++\r\n }\r\n var rowIndexDelta = that.getRowIndexDelta();\r\n that.updateItems({\r\n allowInvisibleRowIndices: true,\r\n changeType: \"update\",\r\n rowIndices: [oldExpandLoadedRowIndex - rowIndexDelta, newExpandLoadedRowIndex - rowIndexDelta]\r\n })\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._adaptiveExpandedKey = void 0\r\n }\r\n },\r\n editorFactory: {\r\n _getFocusCellSelector: function() {\r\n return this.callBase() + \", .dx-adaptive-detail-row .dx-field-item > .dx-field-item-content\"\r\n },\r\n _getTooltipsSelector: function() {\r\n return this.callBase() + \", .dx-field-item-content .\" + this.addWidgetPrefix(REVERT_TOOLTIP_CLASS)\r\n }\r\n },\r\n columns: {\r\n _isColumnVisible: function(column) {\r\n return this.callBase(column) && !column.adaptiveHidden\r\n }\r\n },\r\n keyboardNavigation: {\r\n _isCellValid: function($cell) {\r\n return this.callBase.apply(this, arguments) && !$cell.hasClass(this.addWidgetPrefix(HIDDEN_COLUMN_CLASS))\r\n },\r\n _processNextCellInMasterDetail: function($nextCell) {\r\n this.callBase($nextCell);\r\n var isCellOrBatchMode = this._editingController.isCellOrBatchEditMode();\r\n if (!this._isInsideEditForm($nextCell) && $nextCell && isCellOrBatchMode) {\r\n var focusHandler = function focusHandler() {\r\n _events_engine.default.off($nextCell, \"focus\", focusHandler);\r\n _events_engine.default.trigger($nextCell, \"dxclick\")\r\n };\r\n _events_engine.default.on($nextCell, \"focus\", focusHandler)\r\n }\r\n },\r\n _handleTabKeyOnMasterDetailCell: function(eventTarget, direction) {\r\n var result = this.callBase(eventTarget, direction);\r\n var $currentCell = this._getFocusedCell();\r\n var $row = $currentCell && $currentCell.parent();\r\n if (!result && $row && $row.length) {\r\n var $dataCells = getDataCellElements($row);\r\n var $targetCell = \"next\" === direction ? $dataCells.last() : $dataCells.first();\r\n var rowIndex = $row.get(0).rowIndex;\r\n var adaptiveController = this._adaptiveController;\r\n var key = this._dataController.getKeyByRowIndex(\"next\" === direction ? rowIndex : rowIndex - 1);\r\n var isCellElementsEquals = $currentCell && $targetCell && $currentCell.get(0) === $targetCell.get(0);\r\n return adaptiveController.isAdaptiveDetailRowExpanded(key) && isCellElementsEquals\r\n }\r\n return result\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._adaptiveController = this.getController(\"adaptiveColumns\")\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.editor_factory.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.editor_factory\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"editorFactory\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.error_handling.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.error_handling\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"errorHandling\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/filter_builder/utils.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getGroupCriteria = getGroupCriteria;\r\nexports.setGroupValue = setGroupValue;\r\nexports.getGroupMenuItem = getGroupMenuItem;\r\nexports.getGroupValue = getGroupValue;\r\nexports.getFilterOperations = getFilterOperations;\r\nexports.getCaptionByOperation = getCaptionByOperation;\r\nexports.getOperationFromAvailable = getOperationFromAvailable;\r\nexports.getCustomOperation = getCustomOperation;\r\nexports.getAvailableOperations = getAvailableOperations;\r\nexports.getDefaultOperation = getDefaultOperation;\r\nexports.createCondition = createCondition;\r\nexports.removeItem = removeItem;\r\nexports.createEmptyGroup = createEmptyGroup;\r\nexports.isEmptyGroup = isEmptyGroup;\r\nexports.addItem = addItem;\r\nexports.getField = getField;\r\nexports.isGroup = isGroup;\r\nexports.isCondition = isCondition;\r\nexports.convertToInnerStructure = convertToInnerStructure;\r\nexports.getNormalizedFields = getNormalizedFields;\r\nexports.getFilterExpression = getFilterExpression;\r\nexports.getNormalizedFilter = getNormalizedFilter;\r\nexports.getCurrentLookupValueText = getCurrentLookupValueText;\r\nexports.getCurrentValueText = getCurrentValueText;\r\nexports.getItems = getItems;\r\nexports.getCaptionWithParents = getCaptionWithParents;\r\nexports.updateConditionByOperation = updateConditionByOperation;\r\nexports.getOperationValue = getOperationValue;\r\nexports.isValidCondition = isValidCondition;\r\nexports.getMergedOperations = getMergedOperations;\r\nexports.removeFieldConditionsFromFilter = removeFieldConditionsFromFilter;\r\nexports.syncFilters = syncFilters;\r\nexports.getMatchedConditions = getMatchedConditions;\r\nexports.filterHasField = filterHasField;\r\nexports.renderValueText = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _errors = _interopRequireDefault(require(\"../../data/errors\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _filtering = _interopRequireDefault(require(\"../shared/filtering\"));\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _between = require(\"./between\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _ui2 = _interopRequireDefault(require(\"./ui.filter_operations_dictionary\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\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 _format_helper.default.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\n\r\nfunction 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 var isNegationValue = function(value) {\r\n return value.indexOf(\"!\") !== -1\r\n };\r\n var convertGroupToNegationGroup = function(group) {\r\n var criteria = group.slice(0);\r\n group.length = 0;\r\n group.push(\"!\", criteria)\r\n };\r\n var convertNegationGroupToGroup = function(group) {\r\n var criteria = getGroupCriteria(group);\r\n group.length = 0;\r\n [].push.apply(group, criteria)\r\n };\r\n if (isNegationValue(value)) {\r\n if (!isNegationGroup(group)) {\r\n convertGroupToNegationGroup(group)\r\n }\r\n } else {\r\n if (isNegationGroup(group)) {\r\n convertNegationGroupToGroup(group)\r\n }\r\n }\r\n}\r\n\r\nfunction setGroupValue(group, value) {\r\n convertGroupToNewStructure(group, value);\r\n var criteria = getGroupCriteria(group);\r\n var i;\r\n var getNormalizedGroupValue = function(value) {\r\n return value.indexOf(\"!\") === -1 ? value : value.substring(1)\r\n };\r\n var changeCriteriaValue = 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 };\r\n value = getNormalizedGroupValue(value);\r\n changeCriteriaValue(criteria, value);\r\n return group\r\n}\r\n\r\nfunction 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 _errors.default.errors.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\n\r\nfunction 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\n\r\nfunction getFilterOperations(field) {\r\n var result = containItems(field.filterOperations) ? field.filterOperations : getDefaultFilterOperations(field);\r\n return (0, _extend.extend)([], result)\r\n}\r\n\r\nfunction getCaptionByOperation(operation, filterOperationDescriptions) {\r\n var operationName = _ui2.default.getNameByFilterOperation(operation);\r\n return filterOperationDescriptions && filterOperationDescriptions[operationName] ? filterOperationDescriptions[operationName] : operationName\r\n}\r\n\r\nfunction 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 _ui.default.Error(\"E1048\", operation)\r\n}\r\n\r\nfunction 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\n\r\nfunction 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 && filterOperations.indexOf(customOperation.name) === -1) {\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 || (0, _inflector.captionize)(customOperation.name),\r\n value: customOperation.name,\r\n isCustom: true\r\n }\r\n } else {\r\n return {\r\n icon: _ui2.default.getIconByFilterOperation(operation) || EMPTY_MENU_ICON,\r\n text: getCaptionByOperation(operation, filterOperationDescriptions),\r\n value: operation\r\n }\r\n }\r\n })\r\n}\r\n\r\nfunction getDefaultOperation(field) {\r\n return field.defaultFilterOperation || getFilterOperations(field)[0]\r\n}\r\n\r\nfunction 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\n\r\nfunction 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\n\r\nfunction createEmptyGroup(value) {\r\n return value.indexOf(\"not\") !== -1 ? [\"!\", [value.substring(3).toLowerCase()]] : [value]\r\n}\r\n\r\nfunction 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\n\r\nfunction 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\n\r\nfunction 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 _ui.default.Error(\"E1047\", dataField)\r\n}\r\n\r\nfunction 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\n\r\nfunction 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 {\r\n if (isCondition(group[i])) {\r\n innerGroup.push(convertToInnerCondition(group[i], customOperations));\r\n innerGroup.push(groupOperation)\r\n }\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\n\r\nfunction convertToInnerStructure(value, customOperations) {\r\n if (!value) {\r\n return [AND_GROUP_OPERATION]\r\n }\r\n value = (0, _extend.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\n\r\nfunction getNormalizedFields(fields) {\r\n return fields.reduce(function(result, field) {\r\n if ((0, _type.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 = _filtering.default.defaultCalculateFilterExpression;\r\n if (!(0, _type.isDefined)(normalizedField.dataType)) {\r\n normalizedField.dataType = DEFAULT_DATA_TYPE\r\n }\r\n if (!(0, _type.isDefined)(normalizedField.trueText)) {\r\n normalizedField.trueText = _message.default.format(\"dxDataGrid-trueText\")\r\n }\r\n if (!(0, _type.isDefined)(normalizedField.falseText)) {\r\n normalizedField.falseText = _message.default.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 {\r\n if (field.createFilterExpression) {\r\n return field.createFilterExpression.apply(field, [filterExpression[2], filterExpression[1], target])\r\n } else {\r\n 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\n }\r\n}\r\n\r\nfunction getFilterExpression(value, fields, customOperations, target) {\r\n if (!(0, _type.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 {\r\n 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 }\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\n\r\nfunction 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 {\r\n if (isCondition(criteria[i])) {\r\n if (!isValidCondition(criteria[i])) {\r\n itemsForRemove.push(criteria[i])\r\n }\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\n\r\nfunction 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 = (0, _type.isFunction)(lookup.dataSource) ? lookup.dataSource({}) : lookup.dataSource;\r\n var dataSource = new _data_source.DataSource(lookupDataSource);\r\n dataSource.loadSingle(lookup.valueExpr, value).done(function(result) {\r\n result ? handler(lookup.displayExpr ? (0, _data.compileGetter)(lookup.displayExpr)(result) : result) : handler(\"\")\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 || _message.default.format(\"dxDataGrid-trueText\")\r\n } else {\r\n if (false === value) {\r\n valueText = field.falseText || _message.default.format(\"dxDataGrid-falseText\")\r\n } else {\r\n valueText = getFormattedValueText(field, value)\r\n }\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(function(v) {\r\n return getPrimitiveValueText(field, v, customOperation, target)\r\n })\r\n}\r\n\r\nfunction checkDefaultValue(value) {\r\n return \"\" === value || null === value\r\n}\r\n\r\nfunction 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.Deferred;\r\n _deferred.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(function(item) {\r\n return !checkDefaultValue(item)\r\n }) ? args.map(function(item) {\r\n return !checkDefaultValue(item) ? item : \"?\"\r\n }) : \"\";\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 {\r\n if (hasParent(dataField)) {\r\n dataField.split(\".\").forEach(function(field, index, arr) {\r\n caption += (0, _inflector.captionize)(field);\r\n if (index !== arr.length - 1) {\r\n caption += \".\"\r\n }\r\n });\r\n return caption\r\n }\r\n }\r\n return (0, _inflector.captionize)(dataField)\r\n}\r\n\r\nfunction getItems(fields, allowHierarchicalFields) {\r\n var items = [];\r\n for (var i = 0; i < fields.length; i++) {\r\n var item = (0, _extend.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 dataField.lastIndexOf(\".\") !== -1\r\n}\r\n\r\nfunction getParentIdFromItemDataField(dataField) {\r\n return dataField.substring(0, dataField.lastIndexOf(\".\"))\r\n}\r\n\r\nfunction 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\n\r\nfunction 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 {\r\n 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 }\r\n return condition\r\n}\r\n\r\nfunction 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\n\r\nfunction isValidCondition(condition) {\r\n return \"\" !== condition[2]\r\n}\r\n\r\nfunction getMergedOperations(customOperations, betweenCaption, context) {\r\n var result = (0, _extend.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 (betweenIndex !== -1) {\r\n result[betweenIndex] = (0, _extend.extend)((0, _between.getConfig)(betweenCaption, context), result[betweenIndex])\r\n } else {\r\n result.unshift((0, _between.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\n\r\nfunction 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\n\r\nfunction 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\n\r\nfunction 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\n\r\nfunction 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\nvar 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(function(t, i) {\r\n (0, _renderer.default)(\"\").addClass(FILTER_BUILDER_ITEM_TEXT_PART_CLASS).text(t).appendTo($container);\r\n if (i !== lastItemIndex) {\r\n (0, _renderer.default)(\"\").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 {\r\n if (value) {\r\n $container.text(value)\r\n } else {\r\n $container.text(_message.default.format(\"dxFilterBuilder-enterValueText\"))\r\n }\r\n }\r\n};\r\nexports.renderValueText = renderValueText;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.filter_panel.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _check_box = _interopRequireDefault(require(\"../check_box\"));\r\nvar _utils = require(\"../filter_builder/utils\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _uiGrid_core3 = require(\"./ui.grid_core.accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar FILTER_PANEL_CLASS = \"filter-panel\";\r\nvar FILTER_PANEL_TEXT_CLASS = FILTER_PANEL_CLASS + \"-text\";\r\nvar FILTER_PANEL_CHECKBOX_CLASS = FILTER_PANEL_CLASS + \"-checkbox\";\r\nvar FILTER_PANEL_CLEAR_FILTER_CLASS = FILTER_PANEL_CLASS + \"-clear-filter\";\r\nvar FILTER_PANEL_LEFT_CONTAINER = FILTER_PANEL_CLASS + \"-left\";\r\nvar FILTER_PANEL_TARGET = \"filterPanel\";\r\nvar FilterPanelView = _uiGrid_core.default.View.inherit({\r\n isVisible: function() {\r\n return this.option(\"filterPanel.visible\") && this.getController(\"data\").dataSource()\r\n },\r\n init: function() {\r\n var _this = this;\r\n this.getController(\"data\").dataSourceChanged.add(function() {\r\n return _this.render()\r\n })\r\n },\r\n _renderCore: function() {\r\n var that = this;\r\n var $element = that.element();\r\n $element.empty().addClass(that.addWidgetPrefix(FILTER_PANEL_CLASS));\r\n var $leftContainer = (0, _renderer.default)(\"
    \").addClass(that.addWidgetPrefix(FILTER_PANEL_LEFT_CONTAINER)).appendTo($element);\r\n if (that.option(\"filterValue\") || that._filterValueBuffer) {\r\n $leftContainer.append(that._getCheckElement()).append(that._getFilterElement()).append(that._getTextElement());\r\n $element.append(that._getRemoveButtonElement())\r\n } else {\r\n $leftContainer.append(that._getFilterElement()).append(that._getTextElement())\r\n }\r\n },\r\n _getCheckElement: function() {\r\n var that = this;\r\n var $element = (0, _renderer.default)(\"
    \").addClass(this.addWidgetPrefix(FILTER_PANEL_CHECKBOX_CLASS));\r\n that._createComponent($element, _check_box.default, {\r\n value: that.option(\"filterPanel.filterEnabled\"),\r\n onValueChanged: function(e) {\r\n that.option(\"filterPanel.filterEnabled\", e.value)\r\n }\r\n });\r\n $element.attr(\"title\", this.option(\"filterPanel.texts.filterEnabledHint\"));\r\n return $element\r\n },\r\n _getFilterElement: function() {\r\n var that = this;\r\n var $element = (0, _renderer.default)(\"
    \").addClass(\"dx-icon-filter\");\r\n _events_engine.default.on($element, \"click\", function() {\r\n return that._showFilterBuilder()\r\n });\r\n (0, _uiGrid_core3.registerKeyboardAction)(\"filterPanel\", that, $element, void 0, function() {\r\n return that._showFilterBuilder()\r\n });\r\n that._addTabIndexToElement($element);\r\n return $element\r\n },\r\n _getTextElement: function() {\r\n var that = this;\r\n var $textElement = (0, _renderer.default)(\"
    \").addClass(that.addWidgetPrefix(FILTER_PANEL_TEXT_CLASS));\r\n var filterText;\r\n var filterValue = that.option(\"filterValue\");\r\n if (filterValue) {\r\n (0, _deferred.when)(that.getFilterText(filterValue, that.getController(\"filterSync\").getCustomFilterOperations())).done(function(filterText) {\r\n var customizeText = that.option(\"filterPanel.customizeText\");\r\n if (customizeText) {\r\n var customText = customizeText({\r\n component: that.component,\r\n filterValue: filterValue,\r\n text: filterText\r\n });\r\n if (\"string\" === typeof customText) {\r\n filterText = customText\r\n }\r\n }\r\n $textElement.text(filterText)\r\n })\r\n } else {\r\n filterText = that.option(\"filterPanel.texts.createFilter\");\r\n $textElement.text(filterText)\r\n }\r\n _events_engine.default.on($textElement, \"click\", function() {\r\n return that._showFilterBuilder()\r\n });\r\n (0, _uiGrid_core3.registerKeyboardAction)(\"filterPanel\", that, $textElement, void 0, function() {\r\n return that._showFilterBuilder()\r\n });\r\n that._addTabIndexToElement($textElement);\r\n return $textElement\r\n },\r\n _showFilterBuilder: function() {\r\n this.option(\"filterBuilderPopup.visible\", true)\r\n },\r\n _getRemoveButtonElement: function() {\r\n var that = this;\r\n var clearFilterValue = function() {\r\n return that.option(\"filterValue\", null)\r\n };\r\n var $element = (0, _renderer.default)(\"
    \").addClass(that.addWidgetPrefix(FILTER_PANEL_CLEAR_FILTER_CLASS)).text(that.option(\"filterPanel.texts.clearFilter\"));\r\n _events_engine.default.on($element, \"click\", clearFilterValue);\r\n (0, _uiGrid_core3.registerKeyboardAction)(\"filterPanel\", this, $element, void 0, clearFilterValue);\r\n that._addTabIndexToElement($element);\r\n return $element\r\n },\r\n _addTabIndexToElement: function($element) {\r\n if (!this.option(\"useLegacyKeyboardNavigation\")) {\r\n var tabindex = this.option(\"tabindex\") || 0;\r\n $element.attr(\"tabindex\", tabindex)\r\n }\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"filterValue\":\r\n this._invalidate();\r\n this.option(\"filterPanel.filterEnabled\", true);\r\n args.handled = true;\r\n break;\r\n case \"filterPanel\":\r\n this._invalidate();\r\n args.handled = true;\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _getConditionText: function(fieldText, operationText, valueText) {\r\n var result = \"[\".concat(fieldText, \"] \").concat(operationText);\r\n if ((0, _type.isDefined)(valueText)) {\r\n result += valueText\r\n }\r\n return result\r\n },\r\n _getValueMaskedText: function(value) {\r\n return Array.isArray(value) ? \"('\".concat(value.join(\"', '\"), \"')\") : \" '\".concat(value, \"'\")\r\n },\r\n _getValueText: function(field, customOperation, value) {\r\n var _this2 = this;\r\n var deferred = new _deferred.Deferred;\r\n var hasCustomOperation = customOperation && customOperation.customizeText;\r\n if ((0, _type.isDefined)(value) || hasCustomOperation) {\r\n if (!hasCustomOperation && field.lookup) {\r\n (0, _utils.getCurrentLookupValueText)(field, value, function(data) {\r\n deferred.resolve(_this2._getValueMaskedText(data))\r\n })\r\n } else {\r\n var displayValue = Array.isArray(value) ? value : _uiGrid_core2.default.getDisplayValue(field, value);\r\n (0, _deferred.when)((0, _utils.getCurrentValueText)(field, displayValue, customOperation, FILTER_PANEL_TARGET)).done(function(data) {\r\n deferred.resolve(_this2._getValueMaskedText(data))\r\n })\r\n }\r\n } else {\r\n deferred.resolve(\"\")\r\n }\r\n return deferred.promise()\r\n },\r\n getConditionText: function(filterValue, options) {\r\n var that = this;\r\n var operation = filterValue[1];\r\n var deferred = new _deferred.Deferred;\r\n var customOperation = (0, _utils.getCustomOperation)(options.customOperations, operation);\r\n var operationText;\r\n var field = (0, _utils.getField)(filterValue[0], options.columns);\r\n var fieldText = field.caption || \"\";\r\n var value = filterValue[2];\r\n if (customOperation) {\r\n operationText = customOperation.caption || (0, _inflector.captionize)(customOperation.name)\r\n } else {\r\n if (null === value) {\r\n operationText = (0, _utils.getCaptionByOperation)(\"=\" === operation ? \"isblank\" : \"isnotblank\", options.filterOperationDescriptions)\r\n } else {\r\n operationText = (0, _utils.getCaptionByOperation)(operation, options.filterOperationDescriptions)\r\n }\r\n }\r\n this._getValueText(field, customOperation, value).done(function(valueText) {\r\n deferred.resolve(that._getConditionText(fieldText, operationText, valueText))\r\n });\r\n return deferred\r\n },\r\n getGroupText: function(filterValue, options, isInnerGroup) {\r\n var that = this;\r\n var result = new _deferred.Deferred;\r\n var textParts = [];\r\n var groupValue = (0, _utils.getGroupValue)(filterValue);\r\n filterValue.forEach(function(item) {\r\n if ((0, _utils.isCondition)(item)) {\r\n textParts.push(that.getConditionText(item, options))\r\n } else {\r\n if ((0, _utils.isGroup)(item)) {\r\n textParts.push(that.getGroupText(item, options, true))\r\n }\r\n }\r\n });\r\n _deferred.when.apply(this, textParts).done(function() {\r\n var text;\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key]\r\n }\r\n if (\"!\" === groupValue[0]) {\r\n var groupText = options.groupOperationDescriptions[\"not\" + groupValue.substring(1, 2).toUpperCase() + groupValue.substring(2)].split(\" \");\r\n text = \"\".concat(groupText[0], \" \").concat(args[0])\r\n } else {\r\n text = args.join(\" \".concat(options.groupOperationDescriptions[groupValue], \" \"))\r\n }\r\n if (isInnerGroup) {\r\n text = \"(\".concat(text, \")\")\r\n }\r\n result.resolve(text)\r\n });\r\n return result\r\n },\r\n getFilterText: function(filterValue, customOperations) {\r\n var that = this;\r\n var options = {\r\n customOperations: customOperations,\r\n columns: that.getController(\"columns\").getFilteringColumns(),\r\n filterOperationDescriptions: that.option(\"filterBuilder.filterOperationDescriptions\"),\r\n groupOperationDescriptions: that.option(\"filterBuilder.groupOperationDescriptions\")\r\n };\r\n return (0, _utils.isCondition)(filterValue) ? that.getConditionText(filterValue, options) : that.getGroupText(filterValue, options)\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n filterPanel: {\r\n visible: false,\r\n filterEnabled: true,\r\n texts: {\r\n createFilter: _message.default.format(\"dxDataGrid-filterPanelCreateFilter\"),\r\n clearFilter: _message.default.format(\"dxDataGrid-filterPanelClearFilter\"),\r\n filterEnabledHint: _message.default.format(\"dxDataGrid-filterPanelFilterEnabledHint\")\r\n }\r\n }\r\n }\r\n },\r\n views: {\r\n filterPanelView: FilterPanelView\r\n },\r\n extenders: {\r\n controllers: {\r\n data: {\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"filterPanel\":\r\n this._applyFilter();\r\n args.handled = true;\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.selection.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"../data_grid/ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _support = require(\"../../core/utils/support\");\r\nvar _click = require(\"../../events/click\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _hold = _interopRequireDefault(require(\"../../events/hold\"));\r\nvar _selection = _interopRequireDefault(require(\"../selection/selection\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar 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 = (0, _renderer.default)(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 = _uiData_grid.default.Controller.inherit(function() {\r\n var isSeveralRowsSelected = 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 };\r\n var selectionCellTemplate = function(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((0, _renderer.default)(container), options)\r\n };\r\n var selectionHeaderTemplate = function(container, options) {\r\n var column = options.column;\r\n var $cellElement = (0, _renderer.default)(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 this._dataController = this.getController(\"data\");\r\n this._selectionMode = this.option(SELECTION_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 that = this;\r\n var dataController = that._dataController;\r\n var selectionOptions = that.option(\"selection\") || {};\r\n return {\r\n selectedKeys: that.option(\"selectedRowKeys\"),\r\n mode: that._selectionMode,\r\n deferred: selectionOptions.deferred,\r\n maxFilterLengthInRequest: selectionOptions.maxFilterLengthInRequest,\r\n selectionFilter: that.option(\"selectionFilter\"),\r\n key: function() {\r\n return dataController && dataController.key()\r\n },\r\n keyOf: function(item) {\r\n return dataController && dataController.keyOf(item)\r\n },\r\n dataFields: function() {\r\n return dataController.dataSource() && dataController.dataSource().select()\r\n },\r\n load: function(options) {\r\n return dataController.dataSource() && dataController.dataSource().load(options) || (new _deferred.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 item && \"data\" === item.rowType && !item.isNewRow\r\n },\r\n getItemData: function(item) {\r\n return item && (item.oldData || item.data || item)\r\n },\r\n filter: function() {\r\n return dataController.getCombinedFilter()\r\n },\r\n totalCount: function() {\r\n return dataController.totalCount()\r\n },\r\n onSelectionChanged: that._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.default(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 && isSeveralRowsSelected(this, selectionFilter) : selectedItemKeys.length > 1) {\r\n this.startSelectionWithCheckboxes()\r\n } else {\r\n if (isDeferredMode ? selectionFilter && !selectionFilter.length : 0 === selectedItemKeys.length && removedItemKeys.length) {\r\n this.stopSelectionWithCheckboxes()\r\n }\r\n }\r\n }\r\n },\r\n _updateSelectedItems: function(args) {\r\n var that = this;\r\n var selectionChangedOptions;\r\n var isDeferredMode = that.option(\"selection.deferred\");\r\n var selectionFilter = that._selection.selectionFilter();\r\n var dataController = that._dataController;\r\n var items = dataController.items();\r\n if (!items) {\r\n return\r\n }\r\n var isSelectionWithCheckboxes = that.isSelectionWithCheckboxes();\r\n var changedItemIndexes = that.getChangedItemIndexes(items);\r\n that._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 !== that.isSelectionWithCheckboxes()) {\r\n dataController.updateItems({\r\n changeType: \"updateSelection\",\r\n itemIndexes: changedItemIndexes\r\n })\r\n }\r\n if (isDeferredMode) {\r\n that.option(\"selectionFilter\", selectionFilter);\r\n selectionChangedOptions = {}\r\n } else {\r\n if (args.addedItemKeys.length || args.removedItemKeys.length) {\r\n that._selectedItemsInternalChange = true;\r\n that.option(\"selectedRowKeys\", args.selectedItemKeys.slice(0));\r\n that._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 }\r\n that._fireSelectionChanged(selectionChangedOptions)\r\n },\r\n getChangedItemIndexes: function(items) {\r\n var that = this;\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 = that.isRowSelected(isDeferredSelection ? row.data : row.key);\r\n if (that._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 var that = this;\r\n that.callBase(args);\r\n switch (args.name) {\r\n case \"selection\":\r\n var oldSelectionMode = that._selectionMode;\r\n that.init();\r\n var selectionMode = that._selectionMode;\r\n var selectedRowKeys = that.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 {\r\n if (\"multiple\" !== selectionMode) {\r\n selectedRowKeys = []\r\n }\r\n }\r\n }\r\n that.selectRows(selectedRowKeys).always(function() {\r\n that._fireSelectionChanged()\r\n });\r\n that.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) && !that._selectedItemsInternalChange && (that.component.getDataSource() || !value.length)) {\r\n that.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.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 }(0, _iterator.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 var that = this;\r\n if ((0, _type.isDefined)(itemIndex)) {\r\n that._selection._focusedItemIndex = itemIndex\r\n } else {\r\n return that._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 var that = this;\r\n if (\"multiple\" === that.option(SELECTION_MODE) && !that.isSelectionWithCheckboxes()) {\r\n that._isSelectionWithCheckboxes = true;\r\n that._updateSelectColumn();\r\n return true\r\n }\r\n return false\r\n },\r\n stopSelectionWithCheckboxes: function() {\r\n var that = this;\r\n if (that._isSelectionWithCheckboxes) {\r\n that._isSelectionWithCheckboxes = false;\r\n that._updateSelectColumn();\r\n return true\r\n }\r\n return false\r\n }\r\n }\r\n}());\r\nvar _default = {\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.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 var _this = this;\r\n if (change && \"updateSelection\" === change.changeType) {\r\n change.items.forEach(function(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(function(change) {\r\n return \"updateSelection\" === change.changeType\r\n });\r\n if (isUpdateSelection) {\r\n var itemIndexes = changes.map(function(change) {\r\n return change.itemIndexes || []\r\n }).reduce(function(a, b) {\r\n return a.concat(b)\r\n });\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(function(change) {\r\n return \"remove\" === change.type\r\n }).map(function(change) {\r\n return change.key\r\n });\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 var that = this;\r\n that.callBase();\r\n that.getController(\"selection\").selectionChanged.add(that._updateSelectAllValue.bind(that))\r\n },\r\n _updateSelectAllValue: function() {\r\n var that = this;\r\n var $element = that.element();\r\n var $editor = $element && $element.find(\".\" + SELECT_CHECKBOX_CLASS);\r\n if ($element && $editor.length && \"multiple\" === that.option(\"selection.mode\")) {\r\n $editor.dxCheckBox(\"instance\").option({\r\n visible: !that.getController(\"data\").isEmpty(),\r\n value: that.getController(\"selection\").isSelectAll()\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 = (0, _renderer.default)(\"
    \").appendTo($container).addClass(SELECT_CHECKBOX_CLASS);\r\n that.setAria(\"label\", _message.default.format(\"dxDataGrid-ariaSelectAll\"), $container);\r\n that.getController(\"editorFactory\").createEditor(groupElement, (0, _extend.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 _events_engine.default.on($element, _click.name, this.createAction(function(e) {\r\n var event = e.event;\r\n if (!(0, _renderer.default)(event.target).closest(\".\" + SELECT_CHECKBOX_CLASS).length) {\r\n _events_engine.default.trigger((0, _renderer.default)(event.currentTarget).children(\".\" + SELECT_CHECKBOX_CLASS), _click.name)\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\", _message.default.format(\"dxDataGrid-ariaSelectRow\"), $container);\r\n this._renderSelectCheckBox($container, options)\r\n } else {\r\n _uiGrid_core.default.setEmptyText($container)\r\n }\r\n },\r\n _renderSelectCheckBox: function(container, options) {\r\n var groupElement = (0, _renderer.default)(\"
    \").addClass(SELECT_CHECKBOX_CLASS).appendTo(container);\r\n this.getController(\"editorFactory\").createEditor(groupElement, (0, _extend.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 _events_engine.default.trigger(e.element, _click.name, 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 _events_engine.default.on($element, _click.name, this.createAction(function(e) {\r\n var selectionController = this.getController(\"selection\");\r\n var event = e.event;\r\n var rowIndex = this.getRowIndex((0, _renderer.default)(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 ((0, _renderer.default)(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 (0, _iterator.each)(tableElements, function(_, tableElement) {\r\n (0, _iterator.each)(change.itemIndexes || [], function(_, index) {\r\n var $row;\r\n if (change.items[index]) {\r\n $row = that._getRowElements((0, _renderer.default)(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) || !_support.touch) {\r\n _events_engine.default.on($table, (0, _index.addNamespace)(_hold.default.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 _events_engine.default.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 that = this;\r\n var dxEvent = e.event;\r\n var isSelectionDisabled = (0, _renderer.default)(dxEvent.target).closest(\".\" + SELECTION_DISABLED_CLASS).length;\r\n if (!that.isClickableElement((0, _renderer.default)(dxEvent.target))) {\r\n if (!isSelectionDisabled && (\"multiple\" !== that.option(SELECTION_MODE) || \"always\" !== that.option(SHOW_CHECKBOXES_MODE))) {\r\n if (that.getController(\"selection\").changeItemSelection(e.rowIndex, {\r\n control: (0, _index.isCommandKeyPressed)(dxEvent),\r\n shift: dxEvent.shiftKey\r\n })) {\r\n dxEvent.preventDefault();\r\n e.handled = true\r\n }\r\n }\r\n that.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 (0, _iterator.each)(tableElements, function(_, tableElement) {\r\n (0, _renderer.default)(tableElement).toggleClass(CHECKBOXES_HIDDEN_CLASS, isCheckBoxesHidden)\r\n })\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/excel/excel.color_helper.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _excel = _interopRequireDefault(require(\"./excel.tag_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\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 {\r\n 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 }\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 ((0, _type.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 ((0, _type.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 !(0, _type.isDefined)(tag) || !(0, _type.isDefined)(tag.rgb) && !(0, _type.isDefined)(tag.theme)\r\n },\r\n areEqual: function(leftTag, rightTag) {\r\n return colorHelper.isEmpty(leftTag) && colorHelper.isEmpty(rightTag) || (0, _type.isDefined)(leftTag) && (0, _type.isDefined)(rightTag) && leftTag.rgb === rightTag.rgb && leftTag.theme === rightTag.theme\r\n },\r\n toXml: function(tagName, tag) {\r\n return _excel.default.toXml(tagName, {\r\n rgb: tag.rgb,\r\n theme: tag.theme\r\n })\r\n }\r\n};\r\nvar _default = colorHelper;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/excel/excel.pattern_fill_helper.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _excel = _interopRequireDefault(require(\"./excel.tag_helper\"));\r\nvar _excel2 = _interopRequireDefault(require(\"./excel.color_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar patternFillHelper = {\r\n tryCreateTag: function(sourceObj) {\r\n var result = null;\r\n if ((0, _type.isDefined)(sourceObj)) {\r\n result = {\r\n patternType: sourceObj.patternType,\r\n backgroundColor: _excel2.default.tryCreateTag(sourceObj.backgroundColor),\r\n foregroundColor: _excel2.default.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 ((0, _type.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 = _excel2.default.copy(source.backgroundColor)\r\n }\r\n if (void 0 !== source.foregroundColor) {\r\n result.foregroundColor = _excel2.default.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) || (0, _type.isDefined)(leftTag) && (0, _type.isDefined)(rightTag) && leftTag.patternType === rightTag.patternType && _excel2.default.areEqual(leftTag.backgroundColor, rightTag.backgroundColor) && _excel2.default.areEqual(leftTag.foregroundColor, rightTag.foregroundColor)\r\n },\r\n isEmpty: function(tag) {\r\n return !(0, _type.isDefined)(tag) || !(0, _type.isDefined)(tag.patternType)\r\n },\r\n toXml: function(tag) {\r\n var content = [(0, _type.isDefined)(tag.foregroundColor) ? _excel2.default.toXml(\"fgColor\", tag.foregroundColor) : \"\", (0, _type.isDefined)(tag.backgroundColor) ? _excel2.default.toXml(\"bgColor\", tag.backgroundColor) : \"\"].join(\"\");\r\n return _excel.default.toXml(\"patternFill\", {\r\n patternType: tag.patternType\r\n }, content)\r\n }\r\n};\r\nvar _default = patternFillHelper;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.columns_resizing_reordering.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.TrackerView = exports.ColumnsResizerViewController = exports.TablePositionViewController = exports.ColumnsSeparatorView = exports.DraggingHeaderViewController = exports.DraggingHeaderView = void 0;\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.columns_resizing_reordering\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DraggingHeaderView = _uiGrid_core.default.views.draggingHeaderView;\r\nexports.DraggingHeaderView = DraggingHeaderView;\r\nvar DraggingHeaderViewController = _uiGrid_core.default.controllers.draggingHeader;\r\nexports.DraggingHeaderViewController = DraggingHeaderViewController;\r\nvar ColumnsSeparatorView = _uiGrid_core.default.views.columnsSeparatorView;\r\nexports.ColumnsSeparatorView = ColumnsSeparatorView;\r\nvar TablePositionViewController = _uiGrid_core.default.controllers.tablePosition;\r\nexports.TablePositionViewController = TablePositionViewController;\r\nvar ColumnsResizerViewController = _uiGrid_core.default.controllers.columnsResizer;\r\nexports.ColumnsResizerViewController = ColumnsResizerViewController;\r\nvar TrackerView = _uiGrid_core.default.views.trackerView;\r\nexports.TrackerView = TrackerView;\r\n_uiData_grid.default.registerModule(\"columnsResizingReordering\", _uiGrid_core.default);\r\n","/*!\n\nJSZip v3.7.1 - 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(t){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=t()}}(function(){return function s(a,o,h){function u(r,t){if(!o[r]){if(!a[r]){var e=\"function\"==typeof require&&require;if(!t&&e)return e(r,!0);if(l)return l(r,!0);var i=new Error(\"Cannot find module '\"+r+\"'\");throw i.code=\"MODULE_NOT_FOUND\",i}var n=o[r]={exports:{}};a[r][0].call(n.exports,function(t){var e=a[r][1][t];return u(e||t)},n,n.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,t=0;t>2,s=(3&e)<<4|r>>4,a=1>6:64,o=2>4,r=(15&n)<<4|(s=p.indexOf(t.charAt(o++)))>>2,i=(3&s)<<6|(a=p.indexOf(t.charAt(o++))),l[h++]=e,64!==s&&(l[h++]=r),64!==a&&(l[h++]=i);return l}},{\"./support\":30,\"./utils\":32}],2:[function(t,e,r){\"use strict\";var i=t(\"./external\"),n=t(\"./stream/DataWorker\"),s=t(\"./stream/Crc32Probe\"),a=t(\"./stream/DataLengthProbe\");function o(t,e,r,i,n){this.compressedSize=t,this.uncompressedSize=e,this.crc32=r,this.compression=i,this.compressedContent=n}o.prototype={getContentWorker:function(){var t=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),e=this;return t.on(\"end\",function(){if(this.streamInfo.data_length!==e.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),t},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(t,e,r){return t.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(e.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",e)},e.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(t,e,r){\"use strict\";var i=t(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(t){return new i(\"STORE compression\")},uncompressWorker:function(){return new i(\"STORE decompression\")}},r.DEFLATE=t(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(t,e,r){\"use strict\";var i=t(\"./utils\");var o=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();e.exports=function(t,e){return void 0!==t&&t.length?\"string\"!==i.getTypeOf(t)?function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a>>8^n[255&(t^e[a])];return-1^t}(0|e,t,t.length,0):function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a>>8^n[255&(t^e.charCodeAt(a))];return-1^t}(0|e,t,t.length,0):0}},{\"./utils\":32}],5:[function(t,e,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(t,e,r){\"use strict\";var i=null;i=\"undefined\"!=typeof Promise?Promise:t(\"lie\"),e.exports={Promise:i}},{lie:37}],7:[function(t,e,r){\"use strict\";var i=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,n=t(\"pako\"),s=t(\"./utils\"),a=t(\"./stream/GenericWorker\"),o=i?\"uint8array\":\"array\";function h(t,e){a.call(this,\"FlateWorker/\"+t),this._pako=null,this._pakoAction=t,this._pakoOptions=e,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(t){this.meta=t.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,t.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},r.compressWorker=function(t){return new h(\"Deflate\",t)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(t,e,r){\"use strict\";function A(t,e){var r,i=\"\";for(r=0;r>>=8;return i}function i(t,e,r,i,n,s){var a,o,h=t.file,u=t.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),d=I.transformTo(\"string\",O.utf8encode(h.name)),c=h.comment,p=I.transformTo(\"string\",s(c)),m=I.transformTo(\"string\",O.utf8encode(c)),_=d.length!==h.name.length,g=m.length!==c.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};e&&!r||(x.crc32=t.crc32,x.compressedSize=t.compressedSize,x.uncompressedSize=t.uncompressedSize);var S=0;e&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===n?(C=798,z|=function(t,e){var r=t;return t||(r=e?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(t){return 63&(t||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+d,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(i,4)+f+b+p}}var I=t(\"../utils\"),n=t(\"../stream/GenericWorker\"),O=t(\"../utf8\"),B=t(\"../crc32\"),R=t(\"../signature\");function s(t,e,r,i){n.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=e,this.zipPlatform=r,this.encodeFileName=i,this.streamFiles=t,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,n),s.prototype.push=function(t){var e=t.meta.percent||0,r=this.entriesCount,i=this._sources.length;this.accumulate?this.contentBuffer.push(t):(this.bytesWritten+=t.data.length,n.prototype.push.call(this,{data:t.data,meta:{currentFile:this.currentFile,percent:r?(e+100*(r-i-1))/r:100}}))},s.prototype.openedSource=function(t){this.currentSourceOffset=this.bytesWritten,this.currentFile=t.file.name;var e=this.streamFiles&&!t.file.dir;if(e){var r=i(t,e,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(t){this.accumulate=!1;var e=this.streamFiles&&!t.file.dir,r=i(t,e,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),e)this.push({data:function(t){return R.DATA_DESCRIPTOR+A(t.crc32,4)+A(t.compressedSize,4)+A(t.uncompressedSize,4)}(t),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var t=this.bytesWritten,e=0;e=this.index;e--)r=(r<<8)+this.byteAt(e);return this.index+=t,r},readString:function(t){return i.transformTo(\"string\",this.readData(t))},readData:function(t){},lastIndexOfSignature:function(t){},readAndCheckSignature:function(t){},readDate:function(){var t=this.readInt(4);return new Date(Date.UTC(1980+(t>>25&127),(t>>21&15)-1,t>>16&31,t>>11&31,t>>5&63,(31&t)<<1))}},e.exports=n},{\"../utils\":32}],19:[function(t,e,r){\"use strict\";var i=t(\"./Uint8ArrayReader\");function n(t){i.call(this,t)}t(\"../utils\").inherits(n,i),n.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(t,e,r){\"use strict\";var i=t(\"./DataReader\");function n(t){i.call(this,t)}t(\"../utils\").inherits(n,i),n.prototype.byteAt=function(t){return this.data.charCodeAt(this.zero+t)},n.prototype.lastIndexOfSignature=function(t){return this.data.lastIndexOf(t)-this.zero},n.prototype.readAndCheckSignature=function(t){return t===this.readData(4)},n.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{\"../utils\":32,\"./DataReader\":18}],21:[function(t,e,r){\"use strict\";var i=t(\"./ArrayReader\");function n(t){i.call(this,t)}t(\"../utils\").inherits(n,i),n.prototype.readData=function(t){if(this.checkOffset(t),0===t)return new Uint8Array(0);var e=this.data.subarray(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(t,e,r){\"use strict\";var i=t(\"../utils\"),n=t(\"../support\"),s=t(\"./ArrayReader\"),a=t(\"./StringReader\"),o=t(\"./NodeBufferReader\"),h=t(\"./Uint8ArrayReader\");e.exports=function(t){var e=i.getTypeOf(t);return i.checkSupport(e),\"string\"!==e||n.uint8array?\"nodebuffer\"===e?new o(t):n.uint8array?new h(i.transformTo(\"uint8array\",t)):new s(i.transformTo(\"array\",t)):new a(t)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(t,e,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(t,e,r){\"use strict\";var i=t(\"./GenericWorker\"),n=t(\"../utils\");function s(t){i.call(this,\"ConvertWorker to \"+t),this.destType=t}n.inherits(s,i),s.prototype.processChunk=function(t){this.push({data:n.transformTo(this.destType,t.data),meta:t.meta})},e.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(t,e,r){\"use strict\";var i=t(\"./GenericWorker\"),n=t(\"../crc32\");function s(){i.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}t(\"../utils\").inherits(s,i),s.prototype.processChunk=function(t){this.streamInfo.crc32=n(t.data,this.streamInfo.crc32||0),this.push(t)},e.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(t,e,r){\"use strict\";var i=t(\"../utils\"),n=t(\"./GenericWorker\");function s(t){n.call(this,\"DataLengthProbe for \"+t),this.propName=t,this.withStreamInfo(t,0)}i.inherits(s,n),s.prototype.processChunk=function(t){if(t){var e=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=e+t.data.length}n.prototype.processChunk.call(this,t)},e.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(t,e,r){\"use strict\";var i=t(\"../utils\"),n=t(\"./GenericWorker\");function s(t){n.call(this,\"DataWorker\");var e=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,t.then(function(t){e.dataIsReady=!0,e.data=t,e.max=t&&t.length||0,e.type=i.getTypeOf(t),e.isPaused||e._tickAndRepeat()},function(t){e.error(t)})}i.inherits(s,n),s.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var t=null,e=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":t=this.data.substring(this.index,e);break;case\"uint8array\":t=this.data.subarray(this.index,e);break;case\"array\":case\"nodebuffer\":t=this.data.slice(this.index,e)}return this.index=e,this.push({data:t,meta:{percent:this.max?this.index/this.max*100:0}})},e.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(t,e,r){\"use strict\";function i(t){this.name=t||\"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}i.prototype={push:function(t){this.emit(\"data\",t)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(t){this.emit(\"error\",t)}return!0},error:function(t){return!this.isFinished&&(this.isPaused?this.generatedError=t:(this.isFinished=!0,this.emit(\"error\",t),this.previous&&this.previous.error(t),this.cleanUp()),!0)},on:function(t,e){return this._listeners[t].push(e),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(t,e){if(this._listeners[t])for(var r=0;r \"+t:t}},e.exports=i},{}],29:[function(t,e,r){\"use strict\";var h=t(\"../utils\"),n=t(\"./ConvertWorker\"),s=t(\"./GenericWorker\"),u=t(\"../base64\"),i=t(\"../support\"),a=t(\"../external\"),o=null;if(i.nodestream)try{o=t(\"../nodejs/NodejsStreamOutputAdapter\")}catch(t){}function l(t,o){return new a.Promise(function(e,r){var i=[],n=t._internalType,s=t._outputType,a=t._mimeType;t.on(\"data\",function(t,e){i.push(t),o&&o(e)}).on(\"error\",function(t){i=[],r(t)}).on(\"end\",function(){try{var t=function(t,e,r){switch(t){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",e),r);case\"base64\":return u.encode(e);default:return h.transformTo(t,e)}}(s,function(t,e){var r,i=0,n=null,s=0;for(r=0;r>>6:(r<65536?e[s++]=224|r>>>12:(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63),e[s++]=128|r>>>6&63),e[s++]=128|63&r);return e}(t)},s.utf8decode=function(t){return h.nodebuffer?o.transformTo(\"nodebuffer\",t).toString(\"utf-8\"):function(t){var e,r,i,n,s=t.length,a=new Array(2*s);for(e=r=0;e>10&1023,a[r++]=56320|1023&i)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(t=o.transformTo(h.uint8array?\"uint8array\":\"array\",t))},o.inherits(a,i),a.prototype.processChunk=function(t){var e=o.transformTo(h.uint8array?\"uint8array\":\"array\",t.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=e;(e=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),e.set(r,this.leftOver.length)}else e=this.leftOver.concat(e);this.leftOver=null}var i=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;0<=r&&128==(192&t[r]);)r--;return r<0?e:0===r?e:r+u[t[r]]>e?r:e}(e),n=e;i!==e.length&&(h.uint8array?(n=e.subarray(0,i),this.leftOver=e.subarray(i,e.length)):(n=e.slice(0,i),this.leftOver=e.slice(i,e.length))),this.push({data:s.utf8decode(n),meta:t.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,i),l.prototype.processChunk=function(t){this.push({data:s.utf8encode(t.data),meta:t.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(t,e,a){\"use strict\";var o=t(\"./support\"),h=t(\"./base64\"),r=t(\"./nodejsUtils\"),i=t(\"set-immediate-shim\"),u=t(\"./external\");function n(t){return t}function l(t,e){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==t&&(this.dosPermissions=63&this.externalFileAttributes),3==t&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(t){if(this.extraFields[1]){var e=i(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(t){var e,r,i,n=t.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});t.index+4>>6:(r<65536?e[s++]=224|r>>>12:(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63),e[s++]=128|r>>>6&63),e[s++]=128|63&r);return e},r.buf2binstring=function(t){return l(t,t.length)},r.binstring2buf=function(t){for(var e=new h.Buf8(t.length),r=0,i=e.length;r>10&1023,o[i++]=56320|1023&n)}return l(o,i)},r.utf8border=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;0<=r&&128==(192&t[r]);)r--;return r<0?e:0===r?e:r+u[t[r]]>e?r:e}},{\"./common\":41}],43:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,i){for(var n=65535&t|0,s=t>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:t>>>1;e[r]=t}return e}();e.exports=function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a>>8^n[255&(t^e[a])];return-1^t}},{}],46:[function(t,e,r){\"use strict\";var h,d=t(\"../utils/common\"),u=t(\"./trees\"),c=t(\"./adler32\"),p=t(\"./crc32\"),i=t(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,n=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(t,e){return t.msg=i[e],e}function T(t){return(t<<1)-(4t.avail_out&&(r=t.avail_out),0!==r&&(d.arraySet(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0))}function N(t,e){u._tr_flush_block(t,0<=t.block_start?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,F(t.strm)}function U(t,e){t.pending_buf[t.pending++]=e}function P(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function L(t,e){var r,i,n=t.max_chain_length,s=t.strstart,a=t.prev_length,o=t.nice_match,h=t.strstart>t.w_size-z?t.strstart-(t.w_size-z):0,u=t.window,l=t.w_mask,f=t.prev,d=t.strstart+S,c=u[s+a-1],p=u[s+a];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(u[(r=e)+a]===p&&u[r+a-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]&&sh&&0!=--n);return a<=t.lookahead?a:t.lookahead}function j(t){var e,r,i,n,s,a,o,h,u,l,f=t.w_size;do{if(n=t.window_size-t.lookahead-t.strstart,t.strstart>=f+(f-z)){for(d.arraySet(t.window,t.window,f,f,0),t.match_start-=f,t.strstart-=f,t.block_start-=f,e=r=t.hash_size;i=t.head[--e],t.head[e]=f<=i?i-f:0,--r;);for(e=r=f;i=t.prev[--e],t.prev[e]=f<=i?i-f:0,--r;);n+=f}if(0===t.strm.avail_in)break;if(a=t.strm,o=t.window,h=t.strstart+t.lookahead,u=n,l=void 0,l=a.avail_in,u=x)for(s=t.strstart-t.insert,t.ins_h=t.window[s],t.ins_h=(t.ins_h<=x&&(t.ins_h=(t.ins_h<=x)if(i=u._tr_tally(t,t.strstart-t.match_start,t.match_length-x),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=x){for(t.match_length--;t.strstart++,t.ins_h=(t.ins_h<=x&&(t.ins_h=(t.ins_h<=x&&t.match_length<=t.prev_length){for(n=t.strstart+t.lookahead-x,i=u._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-x),t.lookahead-=t.prev_length-1,t.prev_length-=2;++t.strstart<=n&&(t.ins_h=(t.ins_h<t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(j(t),0===t.lookahead&&e===l)return A;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+r;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,N(t,!1),0===t.strm.avail_out))return A;if(t.strstart-t.block_start>=t.w_size-z&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):(t.strstart>t.block_start&&(N(t,!1),t.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(t,e){return Y(t,e,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?_:(t.state.gzhead=e,m):_},r.deflate=function(t,e){var r,i,n,s;if(!t||!t.state||5>8&255),U(i,i.gzhead.time>>16&255),U(i,i.gzhead.time>>24&255),U(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),U(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(U(i,255&i.gzhead.extra.length),U(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=p(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(U(i,0),U(i,0),U(i,0),U(i,0),U(i,0),U(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),U(i,3),i.status=E);else{var a=v+(i.w_bits-8<<4)<<8;a|=(2<=i.strategy||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(a|=32),a+=31-a%31,i.status=E,P(i,a),0!==i.strstart&&(P(i,t.adler>>>16),P(i,65535&t.adler)),t.adler=1}if(69===i.status)if(i.gzhead.extra){for(n=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending!==i.pending_buf_size));)U(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending===i.pending_buf_size)){s=1;break}s=i.gzindexn&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),0===s&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending===i.pending_buf_size)){s=1;break}s=i.gzindexn&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),0===s&&(i.status=103)}else i.status=103;if(103===i.status&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&F(t),i.pending+2<=i.pending_buf_size&&(U(i,255&t.adler),U(i,t.adler>>8&255),t.adler=0,i.status=E)):i.status=E),0!==i.pending){if(F(t),0===t.avail_out)return i.last_flush=-1,m}else if(0===t.avail_in&&T(e)<=T(r)&&e!==f)return R(t,-5);if(666===i.status&&0!==t.avail_in)return R(t,-5);if(0!==t.avail_in||0!==i.lookahead||e!==l&&666!==i.status){var o=2===i.strategy?function(t,e){for(var r;;){if(0===t.lookahead&&(j(t),0===t.lookahead)){if(e===l)return A;break}if(t.match_length=0,r=u._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}(i,e):3===i.strategy?function(t,e){for(var r,i,n,s,a=t.window;;){if(t.lookahead<=S){if(j(t),t.lookahead<=S&&e===l)return A;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=x&&0t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=x?(r=u._tr_tally(t,1,t.match_length-x),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=u._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}(i,e):h[i.level].func(i,e);if(o!==O&&o!==B||(i.status=666),o===A||o===O)return 0===t.avail_out&&(i.last_flush=-1),m;if(o===I&&(1===e?u._tr_align(i):5!==e&&(u._tr_stored_block(i,0,0,!1),3===e&&(D(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),F(t),0===t.avail_out))return i.last_flush=-1,m}return e!==f?m:i.wrap<=0?1:(2===i.wrap?(U(i,255&t.adler),U(i,t.adler>>8&255),U(i,t.adler>>16&255),U(i,t.adler>>24&255),U(i,255&t.total_in),U(i,t.total_in>>8&255),U(i,t.total_in>>16&255),U(i,t.total_in>>24&255)):(P(i,t.adler>>>16),P(i,65535&t.adler)),F(t),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new d.Buf8(r.w_size),d.arraySet(u,e,l-r.w_size,r.w_size,0),e=u,l=r.w_size),a=t.avail_in,o=t.next_in,h=t.input,t.avail_in=l,t.next_in=0,t.input=e,j(r);r.lookahead>=x;){for(i=r.strstart,n=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(c&(1<>>=y,p-=y),p<15&&(c+=z[i++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(c&(1<>>=y,p-=y,(y=s-a)>3,c&=(1<<(p-=w<<3))-1,t.next_in=i,t.next_out=s,t.avail_in=i>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<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 I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=1&e.wrap),e.mode=P,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new I.Buf32(i),e.distcode=e.distdyn=new I.Buf32(n),e.sane=1,e.back=-1,N):U}function o(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,a(t)):U}function h(t,e){var r,i;return t&&t.state?(i=t.state,e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||15=s.wsize?(I.arraySet(s.window,e,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(i<(n=s.wsize-s.wnext)&&(n=i),I.arraySet(s.window,e,r-i,n,s.wnext),(i-=n)?(I.arraySet(s.window,e,r-i,i,0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=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){t.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){t.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){t.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break t;o--,u+=i[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break t;o--,u+=i[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break t;o--,u+=i[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(c=r.length)&&(c=o),c&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,i,s,c,k)),512&r.flags&&(r.check=B(r.check,i,c,s)),o-=c,s+=c,r.length-=c),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break t;for(c=0;k=i[s+c++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&c>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break t;o--,u+=i[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break t;o--,u+=i[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==e)break;u>>>=2,l-=2;break t;case 2:r.mode=17;break;case 3:t.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break t;o--,u+=i[s++]<>>16^65535)){t.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===e)break t;case 15:r.mode=16;case 16:if(c=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=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){t.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){t.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],c=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+c>r.nlen+r.ndist){t.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]){t.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){t.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){t.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===e)break t;case 20:r.mode=21;case 21:if(6<=o&&258<=h){t.next_out=a,t.avail_out=h,t.next_in=s,t.avail_in=o,r.hold=u,r.bits=l,R(t,d),a=t.next_out,n=t.output,h=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){t.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){t.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break t;if(c=d-h,r.offset>c){if((c=r.offset-c)>r.whave&&r.sane){t.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=n,p=a-r.offset,c=r.length;for(hc?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=e[r+a[v]]}if(k>>7)]}function U(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function P(t,e,r){t.bi_valid>c-r?(t.bi_buf|=e<>c-t.bi_valid,t.bi_valid+=r-c):(t.bi_buf|=e<>>=1,r<<=1,0<--e;);return r>>>1}function Z(t,e,r){var i,n,s=new Array(g+1),a=0;for(i=1;i<=g;i++)s[i]=a=a+r[i-1]<<1;for(n=0;n<=e;n++){var o=t[2*n+1];0!==o&&(t[2*n]=j(s[o]++,o))}}function W(t){var e;for(e=0;e>1;1<=r;r--)G(t,s,r);for(n=h;r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],G(t,s,1),i=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=i,s[2*n]=s[2*r]+s[2*i],t.depth[n]=(t.depth[r]>=t.depth[i]?t.depth[r]:t.depth[i])+1,s[2*r+1]=s[2*i+1]=n,t.heap[1]=n++,G(t,s,1),2<=t.heap_len;);t.heap[--t.heap_max]=t.heap[1],function(t,e){var r,i,n,s,a,o,h=e.dyn_tree,u=e.max_code,l=e.stat_desc.static_tree,f=e.stat_desc.has_stree,d=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,p=e.stat_desc.max_length,m=0;for(s=0;s<=g;s++)t.bl_count[s]=0;for(h[2*t.heap[t.heap_max]+1]=0,r=t.heap_max+1;r<_;r++)p<(s=h[2*h[2*(i=t.heap[r])+1]+1]+1)&&(s=p,m++),h[2*i+1]=s,u>=7;i>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return o;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return h;for(e=32;e>>3,(s=t.static_len+3+7>>>3)<=n&&(n=s)):n=s=r+5,r+4<=n&&-1!==e?J(t,e,r,i):4===t.strategy||s===n?(P(t,2+(i?1:0),3),K(t,z,C)):(P(t,4+(i?1:0),3),function(t,e,r,i){var n;for(P(t,e-257,5),P(t,r-1,5),P(t,i-4,4),n=0;n>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(A[r]+u+1)]++,t.dyn_dtree[2*N(e)]++),t.last_lit===t.lit_bufsize-1},r._tr_align=function(t){P(t,2,3),L(t,m,z),function(t){16===t.bi_valid?(U(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)}(t)}},{\"../utils/common\":41}],53:[function(t,e,r){\"use strict\";e.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(t,e,r){\"use strict\";e.exports=\"function\"==typeof setImmediate?setImmediate:function(){var t=[].slice.apply(arguments);t.splice(1,0,0),setTimeout.apply(null,t)}},{}]},{},[10])(10)});","/**\r\n * DevExtreme (exporter/file_saver.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.fileSaver = exports.MIME_TYPES = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _ui = _interopRequireDefault(require(\"../ui/widget/ui.errors\"));\r\nvar _type = require(\"../core/utils/type\");\r\nvar _console = require(\"../core/utils/console\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar navigator = (0, _window.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\nvar 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\nexports.MIME_TYPES = MIME_TYPES;\r\nvar 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 = _dom_adapter.default.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 = (0, _renderer.default)(\"
    \").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(_dom_adapter.default.createElement(\"input\"), {\r\n type: \"hidden\",\r\n name: \"fileName\",\r\n value: fileName\r\n }));\r\n exportForm.append(setAttributes(_dom_adapter.default.createElement(\"input\"), {\r\n type: \"hidden\",\r\n name: \"contentType\",\r\n value: contentType\r\n }));\r\n exportForm.append(setAttributes(_dom_adapter.default.createElement(\"input\"), {\r\n type: \"hidden\",\r\n name: \"data\",\r\n value: data\r\n }));\r\n exportForm.appendTo(\"body\");\r\n _events_engine.default.trigger(exportForm, \"submit\");\r\n if (_events_engine.default.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 = _dom_adapter.default.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 var _this = this;\r\n this._blobSaved = false;\r\n if ((0, _type.isDefined)(navigator.msSaveOrOpenBlob)) {\r\n navigator.msSaveOrOpenBlob(data, fileName);\r\n this._blobSaved = true\r\n } else {\r\n if ((0, _type.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 ((0, _type.isDefined)(URL)) {\r\n var objectURL = URL.createObjectURL(data);\r\n var downloadLink = this._linkDownloader(fileName, objectURL);\r\n setTimeout(function() {\r\n URL.revokeObjectURL(objectURL);\r\n _this._objectUrlRevoked = true\r\n }, this._revokeObjectURLTimeout);\r\n this._click(downloadLink)\r\n } else {\r\n _console.logger.warn(\"window.URL || window.webkitURL || window.mozURL || window.msURL || window.oURL is not defined\")\r\n }\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 ((0, _type.isDefined)(proxyURL)) {\r\n _ui.default.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 {\r\n if ((0, _type.isFunction)(window.Blob)) {\r\n this._saveBlobAs(fileName, format, data)\r\n } else {\r\n if ((0, _type.isDefined)(proxyURL) && !(0, _type.isDefined)(navigator.userAgent.match(/iPad/i))) {\r\n this._saveByProxy(proxyURL, fileName, format, data)\r\n } else {\r\n if (!(0, _type.isDefined)(navigator.userAgent.match(/iPad/i))) {\r\n _ui.default.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};\r\nexports.fileSaver = fileSaver;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.header_filter.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.header_filter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiData_grid.default.registerModule(\"headerFilter\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.grouping.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.GroupingHeaderPanelExtender = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"./ui.data_grid.core\"));\r\nvar _uiData_gridGrouping = require(\"./ui.data_grid.grouping.expanded\");\r\nvar _uiData_gridGrouping2 = require(\"./ui.data_grid.grouping.collapsed\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiData_grid2 = _interopRequireDefault(require(\"./ui.data_grid.data_source_adapter\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _uiGrid_core = require(\"../grid_core/ui.grid_core.accessibility\");\r\nvar _accessibility = require(\"../shared/accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar 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 = function() {\r\n return {\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 _uiData_gridGrouping2.GroupingHelper) {\r\n this._grouping = new _uiData_gridGrouping.GroupingHelper(this)\r\n }\r\n } else {\r\n if (!grouping || grouping instanceof _uiData_gridGrouping.GroupingHelper) {\r\n this._grouping = new _uiData_gridGrouping2.GroupingHelper(this)\r\n }\r\n }\r\n },\r\n totalItemsCount: function() {\r\n var that = this;\r\n var totalCount = that.callBase();\r\n return totalCount > 0 && that._dataSource.group() && that._dataSource.requireTotalCount() ? totalCount + that._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 that = this;\r\n var dataSource = that._dataSource;\r\n var group = dataSource.group();\r\n var groups = _uiData_grid.default.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 {\r\n if (group && group[i]) {\r\n groups[i].isExpanded = group[i].isExpanded\r\n }\r\n }\r\n }\r\n dataSource.group(groups);\r\n that._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 that.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 that = this;\r\n var dataSource = that._dataSource;\r\n if (dataSource.group()) {\r\n dataSource.beginLoading();\r\n if (that._lastLoadOptions) {\r\n that._lastLoadOptions.groupExpand = true\r\n }\r\n return that._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 {\r\n if (!options.isCustomLoading && remoteOperations.paging && operationTypes.grouping) {\r\n this.resetCache()\r\n }\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\n}();\r\n_uiData_grid2.default.extend(GroupingDataSourceAdapterExtender);\r\nvar GroupingDataControllerExtender = function() {\r\n return {\r\n init: function() {\r\n var that = this;\r\n that.callBase();\r\n that.createAction(\"onRowExpanding\");\r\n that.createAction(\"onRowExpanded\");\r\n that.createAction(\"onRowCollapsing\");\r\n that.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 ((0, _type.isDefined)(item.groupIndex) && (0, _type.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 that = this;\r\n var groupedColumns = that._columnsController.getGroupColumns();\r\n var column = groupedColumns[groupedColumns.length - groupsCount];\r\n if (!options) {\r\n var scrollingMode = that.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 that._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 (0, _deferred.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.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.Deferred;\r\n if (!dataSource) {\r\n d.resolve()\r\n } else {\r\n (0, _deferred.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.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.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\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\nvar GroupingHeaderPanelExtender = function() {\r\n return {\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 var _this = this;\r\n if (this._isGroupPanelVisible()) {\r\n var isRendered = false;\r\n var toolbarItem = {\r\n template: function() {\r\n var $groupPanel = (0, _renderer.default)(\"
    \").addClass(DATAGRID_GROUP_PANEL_CLASS);\r\n _this._updateGroupPanelContent($groupPanel);\r\n (0, _uiGrid_core.registerKeyboardAction)(\"groupPanel\", _this, $groupPanel, void 0, _this._handleActionKeyDown.bind(_this));\r\n return $groupPanel\r\n },\r\n name: \"groupPanel\",\r\n onItemRendered: function() {\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 = (0, _renderer.default)(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.default.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 (0, _iterator.each)(groupColumns, function(index, groupColumn) {\r\n that._createGroupPanelItem($groupPanel, groupColumn)\r\n });\r\n (0, _accessibility.restoreFocus)(this)\r\n },\r\n _createGroupPanelItem: function($rootElement, groupColumn) {\r\n var $groupPanelItem = (0, _renderer.default)(\"
    \").addClass(groupColumn.cssClass).addClass(DATAGRID_GROUP_PANEL_ITEM_CLASS).data(\"columnData\", groupColumn).appendTo($rootElement).text(groupColumn.caption);\r\n (0, _accessibility.setTabIndex)(this, $groupPanelItem);\r\n return $groupPanelItem\r\n },\r\n _columnOptionChanged: function(e) {\r\n if (!this._requireReady && !_uiData_grid.default.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 that = this;\r\n var groupColumns = that.getController(\"columns\").getGroupColumns();\r\n var groupPanelOptions = that.option(\"groupPanel\");\r\n that._renderGroupPanelItems($groupPanel, groupColumns);\r\n if (groupPanelOptions.allowColumnDragging && !groupColumns.length) {\r\n (0, _renderer.default)(\"
    \").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 that.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 that = this;\r\n var $element = that.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 that = this;\r\n var contextMenuEnabled = that.option(\"grouping.contextMenuEnabled\");\r\n var $groupedColumnElement = (0, _renderer.default)(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 = (0, _type.isDefined)(column.allowGrouping) ? column.allowGrouping : true;\r\n if (isGroupingAllowed) {\r\n var isColumnGrouped = (0, _type.isDefined)(column.groupIndex) && column.groupIndex > -1;\r\n var groupingTexts = that.option(\"grouping.texts\");\r\n var onItemClick = onGroupingMenuItemClick.bind(that, 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\n}();\r\nexports.GroupingHeaderPanelExtender = GroupingHeaderPanelExtender;\r\nvar GroupingRowsViewExtender = function() {\r\n return {\r\n getContextMenuItems: function(options) {\r\n var that = this;\r\n var contextMenuEnabled = that.option(\"grouping.contextMenuEnabled\");\r\n var items;\r\n if (contextMenuEnabled && options.row && \"group\" === options.row.rowType) {\r\n var columnsController = that._columnsController;\r\n var column = columnsController.columnOption(\"groupIndex:\" + options.row.groupIndex);\r\n if (column && column.allowGrouping) {\r\n var groupingTexts = that.option(\"grouping.texts\");\r\n var onItemClick = onGroupingMenuItemClick.bind(that, 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 that = this;\r\n var expandMode = that.option(\"grouping.expandMode\");\r\n var scrollingMode = that.option(\"scrolling.mode\");\r\n var isGroupRowStateChanged = \"infinite\" !== scrollingMode && \"rowClick\" === expandMode && (0, _renderer.default)(e.event.target).closest(\".\" + DATAGRID_GROUP_ROW_CLASS).length;\r\n var isExpandButtonClicked = (0, _renderer.default)(e.event.target).closest(\".\" + DATAGRID_EXPAND_CLASS).length;\r\n if (isGroupRowStateChanged || isExpandButtonClicked) {\r\n that._changeGroupRowState(e)\r\n }\r\n that.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\n}();\r\nvar columnHeadersViewExtender = function() {\r\n return {\r\n getContextMenuItems: function(options) {\r\n var that = this;\r\n var contextMenuEnabled = that.option(\"grouping.contextMenuEnabled\");\r\n var items = that.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 && (!(0, _type.isDefined)(column.allowGrouping) || column.allowGrouping)) {\r\n var groupingTexts = that.option(\"grouping.texts\");\r\n var isColumnGrouped = (0, _type.isDefined)(column.groupIndex) && column.groupIndex > -1;\r\n var onItemClick = onGroupingMenuItemClick.bind(that, 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\n}();\r\n_uiData_grid.default.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: _message.default.format(\"dxDataGrid-groupContinuesMessage\"),\r\n groupContinuedMessage: _message.default.format(\"dxDataGrid-groupContinuedMessage\"),\r\n groupByThisColumn: _message.default.format(\"dxDataGrid-groupHeaderText\"),\r\n ungroup: _message.default.format(\"dxDataGrid-ungroupHeaderText\"),\r\n ungroupAll: _message.default.format(\"dxDataGrid-ungroupAllText\")\r\n }\r\n },\r\n groupPanel: {\r\n visible: false,\r\n emptyPanelText: _message.default.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 = _uiData_grid.default.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 (ui/grid_core/ui.grid_core.data_controller.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\r\nvar _custom_store = _interopRequireDefault(require(\"../../data/custom_store\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _data_helper = _interopRequireDefault(require(\"../../data_helper\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _array_compare = require(\"../../core/utils/array_compare\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n loadingTimeout: 0,\r\n dataSource: null,\r\n cacheEnabled: true,\r\n repaintChangesOnly: false,\r\n highlightChanges: false,\r\n onDataErrorOccurred: null,\r\n remoteOperations: \"auto\",\r\n paging: {\r\n enabled: true,\r\n pageSize: void 0,\r\n pageIndex: void 0\r\n }\r\n }\r\n },\r\n controllers: {\r\n data: _uiGrid_core.default.Controller.inherit({}).include(_data_helper.default).inherit(function() {\r\n var changePaging = function(that, optionName, value) {\r\n var dataSource = that._dataSource;\r\n if (dataSource) {\r\n if (void 0 !== value) {\r\n if (dataSource[optionName]() !== value) {\r\n if (\"pageSize\" === optionName) {\r\n dataSource.pageIndex(0)\r\n }\r\n dataSource[optionName](value);\r\n that._skipProcessingPagingChange = true;\r\n that.option(\"paging.\" + optionName, value);\r\n that._skipProcessingPagingChange = false;\r\n return dataSource[\"pageIndex\" === optionName ? \"load\" : \"reload\"]().done(that.pageChanged.fire.bind(that.pageChanged))\r\n }\r\n return (0, _deferred.Deferred)().resolve().promise()\r\n }\r\n return dataSource[optionName]()\r\n }\r\n return 0\r\n };\r\n var members = {\r\n init: function() {\r\n var _this = this;\r\n var that = this;\r\n that._items = [];\r\n that._columnsController = that.getController(\"columns\");\r\n that._currentOperationTypes = null;\r\n that._dataChangedHandler = function(e) {\r\n that._currentOperationTypes = _this._dataSource.operationTypes();\r\n that._handleDataChanged(e);\r\n that._currentOperationTypes = null\r\n };\r\n that._columnsChangedHandler = that._handleColumnsChanged.bind(that);\r\n that._loadingChangedHandler = that._handleLoadingChanged.bind(that);\r\n that._loadErrorHandler = that._handleLoadError.bind(that);\r\n that._customizeStoreLoadOptionsHandler = that._handleCustomizeStoreLoadOptions.bind(that);\r\n that._changingHandler = that._handleChanging.bind(that);\r\n that._columnsController.columnsChanged.add(that._columnsChangedHandler);\r\n that._isLoading = false;\r\n that._isCustomLoading = false;\r\n that._repaintChangesOnly = void 0;\r\n that._changes = [];\r\n that.createAction(\"onDataErrorOccurred\");\r\n that.dataErrorOccurred.add(function(error) {\r\n return that.executeAction(\"onDataErrorOccurred\", {\r\n error: error\r\n })\r\n });\r\n that._refreshDataSource()\r\n },\r\n callbackNames: function() {\r\n return [\"changed\", \"loadingChanged\", \"dataErrorOccurred\", \"pageChanged\", \"dataSourceChanged\"]\r\n },\r\n callbackFlags: function(name) {\r\n if (\"dataErrorOccurred\" === name) {\r\n return {\r\n stopOnFalse: true\r\n }\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"beginCustomLoading\", \"endCustomLoading\", \"refresh\", \"filter\", \"clearFilter\", \"getCombinedFilter\", \"keyOf\", \"byKey\", \"getDataByKeys\", \"pageIndex\", \"pageSize\", \"pageCount\", \"totalCount\", \"_disposeDataSource\", \"getKeyByRowIndex\", \"getRowIndexByKey\", \"getDataSource\", \"getVisibleRows\", \"repaintRows\"]\r\n },\r\n reset: function() {\r\n this._columnsController.reset();\r\n this._items = [];\r\n this._refreshDataSource()\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n var dataSource;\r\n\r\n function handled() {\r\n args.handled = true\r\n }\r\n if (\"dataSource\" === args.name && args.name === args.fullName && (args.value === args.previousValue || that.option(\"columns\") && Array.isArray(args.value) && Array.isArray(args.previousValue))) {\r\n if (args.value !== args.previousValue) {\r\n var store = that.store();\r\n if (store) {\r\n store._array = args.value\r\n }\r\n }\r\n handled();\r\n that.refresh(that.option(\"repaintChangesOnly\"));\r\n return\r\n }\r\n switch (args.name) {\r\n case \"cacheEnabled\":\r\n case \"repaintChangesOnly\":\r\n case \"highlightChanges\":\r\n case \"loadingTimeout\":\r\n handled();\r\n break;\r\n case \"remoteOperations\":\r\n case \"keyExpr\":\r\n case \"dataSource\":\r\n case \"scrolling\":\r\n handled();\r\n that.reset();\r\n break;\r\n case \"paging\":\r\n dataSource = that.dataSource();\r\n if (dataSource && that._setPagingOptions(dataSource)) {\r\n dataSource.load().done(that.pageChanged.fire.bind(that.pageChanged))\r\n }\r\n handled();\r\n break;\r\n case \"rtlEnabled\":\r\n that.reset();\r\n break;\r\n case \"columns\":\r\n dataSource = that.dataSource();\r\n if (dataSource && dataSource.isLoading() && args.name === args.fullName) {\r\n this._useSortingGroupingFromColumns = true;\r\n dataSource.load()\r\n }\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n },\r\n isReady: function() {\r\n return !this._isLoading\r\n },\r\n getDataSource: function() {\r\n return this._dataSource && this._dataSource._dataSource\r\n },\r\n getCombinedFilter: function(returnDataField) {\r\n return this.combinedFilter(void 0, returnDataField)\r\n },\r\n combinedFilter: function(filter, returnDataField) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var columnsController = that._columnsController;\r\n if (dataSource) {\r\n if (void 0 === filter) {\r\n filter = dataSource.filter()\r\n }\r\n var additionalFilter = that._calculateAdditionalFilter();\r\n if (additionalFilter) {\r\n if (columnsController.isDataSourceApplied() || columnsController.isAllDataTypesDefined()) {\r\n filter = _uiGrid_core2.default.combineFilters([additionalFilter, filter])\r\n }\r\n }\r\n filter = columnsController.updateFilter(filter, returnDataField || dataSource.remoteOperations().filtering)\r\n }\r\n return filter\r\n },\r\n waitReady: function() {\r\n if (this._updateLockCount) {\r\n this._readyDeferred = new _deferred.Deferred;\r\n return this._readyDeferred\r\n }\r\n return (0, _deferred.when)()\r\n },\r\n _endUpdateCore: function() {\r\n var changes = this._changes;\r\n if (changes.length) {\r\n this._changes = [];\r\n var repaintChangesOnly = changes.every(function(change) {\r\n return change.repaintChangesOnly\r\n });\r\n this.updateItems(1 === changes.length ? changes[0] : {\r\n repaintChangesOnly: repaintChangesOnly\r\n })\r\n }\r\n if (this._readyDeferred) {\r\n this._readyDeferred.resolve();\r\n this._readyDeferred = null\r\n }\r\n },\r\n _handleCustomizeStoreLoadOptions: function(e) {\r\n var columnsController = this._columnsController;\r\n var dataSource = this._dataSource;\r\n var storeLoadOptions = e.storeLoadOptions;\r\n if (e.isCustomLoading && !storeLoadOptions.isLoadingAll) {\r\n return\r\n }\r\n storeLoadOptions.filter = this.combinedFilter(storeLoadOptions.filter);\r\n if (!columnsController.isDataSourceApplied()) {\r\n columnsController.updateColumnDataTypes(dataSource)\r\n }\r\n this._columnsUpdating = true;\r\n columnsController.updateSortingGrouping(dataSource, !this._useSortingGroupingFromColumns);\r\n this._columnsUpdating = false;\r\n storeLoadOptions.sort = columnsController.getSortDataSourceParameters();\r\n storeLoadOptions.group = columnsController.getGroupDataSourceParameters();\r\n dataSource.sort(storeLoadOptions.sort);\r\n dataSource.group(storeLoadOptions.group);\r\n storeLoadOptions.sort = columnsController.getSortDataSourceParameters(!dataSource.remoteOperations().sorting);\r\n e.group = columnsController.getGroupDataSourceParameters(!dataSource.remoteOperations().grouping)\r\n },\r\n _handleColumnsChanged: function(e) {\r\n var that = this;\r\n var changeTypes = e.changeTypes;\r\n var optionNames = e.optionNames;\r\n var filterValue;\r\n var filterValues;\r\n var filterApplied;\r\n var updateItemsHandler = function updateItemsHandler() {\r\n that._columnsController.columnsChanged.remove(updateItemsHandler);\r\n that.updateItems()\r\n };\r\n if (changeTypes.sorting || changeTypes.grouping) {\r\n if (that._dataSource && !that._columnsUpdating) {\r\n that._dataSource.group(that._columnsController.getGroupDataSourceParameters());\r\n that._dataSource.sort(that._columnsController.getSortDataSourceParameters());\r\n that.reload()\r\n }\r\n } else {\r\n if (changeTypes.columns) {\r\n if (optionNames.filterValues || optionNames.filterValue || optionNames.selectedFilterOperation) {\r\n filterValue = that._columnsController.columnOption(e.columnIndex, \"filterValue\");\r\n filterValues = that._columnsController.columnOption(e.columnIndex, \"filterValues\");\r\n if (Array.isArray(filterValues) || void 0 === e.columnIndex || (0, _type.isDefined)(filterValue) || !optionNames.selectedFilterOperation || optionNames.filterValue) {\r\n that._applyFilter();\r\n filterApplied = true\r\n }\r\n }\r\n if (!that._needApplyFilter && !_uiGrid_core2.default.checkChanges(optionNames, [\"width\", \"visibleWidth\", \"filterValue\", \"bufferedFilterValue\", \"selectedFilterOperation\", \"filterValues\", \"filterType\"])) {\r\n that._columnsController.columnsChanged.add(updateItemsHandler)\r\n }\r\n if ((0, _type.isDefined)(optionNames.visible)) {\r\n var column = that._columnsController.columnOption(e.columnIndex);\r\n if (column && ((0, _type.isDefined)(column.filterValue) || (0, _type.isDefined)(column.filterValues))) {\r\n that._applyFilter();\r\n filterApplied = true\r\n }\r\n }\r\n }\r\n }\r\n if (!filterApplied && changeTypes.filtering) {\r\n that.reload()\r\n }\r\n },\r\n _handleDataChanged: function(e) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var columnsController = that._columnsController;\r\n var isAsyncDataSourceApplying = false;\r\n this._useSortingGroupingFromColumns = false;\r\n if (dataSource && !that._isDataSourceApplying) {\r\n that._isDataSourceApplying = true;\r\n (0, _deferred.when)(that._columnsController.applyDataSource(dataSource)).done(function() {\r\n if (that._isLoading) {\r\n that._handleLoadingChanged(false)\r\n }\r\n if (isAsyncDataSourceApplying && e && e.isDelayed) {\r\n e.isDelayed = false\r\n }\r\n that._isDataSourceApplying = false;\r\n var hasAdditionalFilter = function() {\r\n var additionalFilter = that._calculateAdditionalFilter();\r\n return additionalFilter && additionalFilter.length\r\n };\r\n var needApplyFilter = that._needApplyFilter;\r\n that._needApplyFilter = false;\r\n if (needApplyFilter && !that._isAllDataTypesDefined && hasAdditionalFilter()) {\r\n _ui.default.log(\"W1005\", that.component.NAME);\r\n that._applyFilter()\r\n } else {\r\n that.updateItems(e, true)\r\n }\r\n }).fail(function() {\r\n that._isDataSourceApplying = false\r\n });\r\n if (that._isDataSourceApplying) {\r\n isAsyncDataSourceApplying = true;\r\n that._handleLoadingChanged(true)\r\n }\r\n that._needApplyFilter = !that._columnsController.isDataSourceApplied();\r\n that._isAllDataTypesDefined = columnsController.isAllDataTypesDefined()\r\n }\r\n },\r\n _handleLoadingChanged: function(isLoading) {\r\n this._isLoading = isLoading;\r\n this._fireLoadingChanged()\r\n },\r\n _handleLoadError: function(e) {\r\n this.dataErrorOccurred.fire(e)\r\n },\r\n fireError: function() {\r\n this.dataErrorOccurred.fire(_ui.default.Error.apply(_ui.default, arguments))\r\n },\r\n _setPagingOptions: function(dataSource) {\r\n var pageIndex = this.option(\"paging.pageIndex\");\r\n var pageSize = this.option(\"paging.pageSize\");\r\n var pagingEnabled = this.option(\"paging.enabled\");\r\n var scrollingMode = this.option(\"scrolling.mode\");\r\n var appendMode = \"infinite\" === scrollingMode;\r\n var virtualMode = \"virtual\" === scrollingMode;\r\n var paginate = pagingEnabled || virtualMode || appendMode;\r\n var isChanged = false;\r\n dataSource.requireTotalCount(!appendMode);\r\n if (void 0 !== pagingEnabled && dataSource.paginate() !== paginate) {\r\n dataSource.paginate(paginate);\r\n isChanged = true\r\n }\r\n if (void 0 !== pageSize && dataSource.pageSize() !== pageSize) {\r\n dataSource.pageSize(pageSize);\r\n isChanged = true\r\n }\r\n if (void 0 !== pageIndex && dataSource.pageIndex() !== pageIndex) {\r\n dataSource.pageIndex(pageIndex);\r\n isChanged = true\r\n }\r\n return isChanged\r\n },\r\n _getSpecificDataSourceOption: function() {\r\n var dataSource = this.option(\"dataSource\");\r\n if (Array.isArray(dataSource)) {\r\n return {\r\n store: {\r\n type: \"array\",\r\n data: dataSource,\r\n key: this.option(\"keyExpr\")\r\n }\r\n }\r\n }\r\n return dataSource\r\n },\r\n _initDataSource: function() {\r\n var that = this;\r\n var dataSource = this.option(\"dataSource\");\r\n var oldDataSource = this._dataSource;\r\n that.callBase();\r\n dataSource = that._dataSource;\r\n that._useSortingGroupingFromColumns = true;\r\n if (dataSource) {\r\n that._setPagingOptions(dataSource);\r\n that.setDataSource(dataSource)\r\n } else {\r\n if (oldDataSource) {\r\n that.updateItems()\r\n }\r\n }\r\n },\r\n _loadDataSource: function() {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var result = new _deferred.Deferred;\r\n (0, _deferred.when)(this._columnsController.refresh(true)).always(function() {\r\n if (dataSource) {\r\n dataSource.load().done(result.resolve).fail(result.reject)\r\n } else {\r\n result.resolve()\r\n }\r\n });\r\n return result.promise()\r\n },\r\n _beforeProcessItems: function(items) {\r\n return items.slice(0)\r\n },\r\n getRowIndexDelta: function() {\r\n return 0\r\n },\r\n _processItems: function(items, change) {\r\n var that = this;\r\n var rowIndexDelta = that.getRowIndexDelta();\r\n var changeType = change.changeType;\r\n var visibleColumns = that._columnsController.getVisibleColumns(null, \"loadingAll\" === changeType);\r\n var visibleItems = that._items;\r\n var lastVisibleItem = \"append\" === changeType && visibleItems.length > 0 ? visibleItems[visibleItems.length - 1] : null;\r\n var dataIndex = (0, _type.isDefined)(null === lastVisibleItem || void 0 === lastVisibleItem ? void 0 : lastVisibleItem.dataIndex) ? lastVisibleItem.dataIndex + 1 : 0;\r\n var options = {\r\n visibleColumns: visibleColumns,\r\n dataIndex: dataIndex\r\n };\r\n var result = [];\r\n (0, _iterator.each)(items, function(index, item) {\r\n if ((0, _type.isDefined)(item)) {\r\n options.rowIndex = index - rowIndexDelta;\r\n item = that._processItem(item, options);\r\n result.push(item)\r\n }\r\n });\r\n return result\r\n },\r\n _processItem: function(item, options) {\r\n item = this._generateDataItem(item, options);\r\n item = this._processDataItem(item, options);\r\n item.dataIndex = options.dataIndex++;\r\n return item\r\n },\r\n _generateDataItem: function(data) {\r\n return {\r\n rowType: \"data\",\r\n data: data,\r\n key: this.keyOf(data)\r\n }\r\n },\r\n _processDataItem: function(dataItem, options) {\r\n dataItem.values = this.generateDataValues(dataItem.data, options.visibleColumns);\r\n return dataItem\r\n },\r\n generateDataValues: function(data, columns, isModified) {\r\n var values = [];\r\n var value;\r\n for (var i = 0; i < columns.length; i++) {\r\n var column = columns[i];\r\n value = isModified ? void 0 : null;\r\n if (!column.command) {\r\n if (column.calculateCellValue) {\r\n value = column.calculateCellValue(data)\r\n } else {\r\n if (column.dataField) {\r\n value = data[column.dataField]\r\n }\r\n }\r\n }\r\n values.push(value)\r\n }\r\n return values\r\n },\r\n _applyChange: function(change) {\r\n var that = this;\r\n if (\"update\" === change.changeType) {\r\n that._applyChangeUpdate(change)\r\n } else {\r\n if (that.items().length && change.repaintChangesOnly && \"refresh\" === change.changeType) {\r\n that._applyChangesOnly(change)\r\n } else {\r\n if (\"refresh\" === change.changeType) {\r\n that._applyChangeFull(change)\r\n }\r\n }\r\n }\r\n },\r\n _applyChangeFull: function(change) {\r\n this._items = change.items.slice(0)\r\n },\r\n _getRowIndices: function(change) {\r\n var rowIndices = change.rowIndices.slice(0);\r\n var rowIndexDelta = this.getRowIndexDelta();\r\n rowIndices.sort(function(a, b) {\r\n return a - b\r\n });\r\n for (var i = 0; i < rowIndices.length; i++) {\r\n var correctedRowIndex = rowIndices[i];\r\n if (change.allowInvisibleRowIndices) {\r\n correctedRowIndex += rowIndexDelta\r\n }\r\n if (correctedRowIndex < 0) {\r\n rowIndices.splice(i, 1);\r\n i--\r\n }\r\n }\r\n return rowIndices\r\n },\r\n _applyChangeUpdate: function(change) {\r\n var that = this;\r\n var items = change.items;\r\n var rowIndices = that._getRowIndices(change);\r\n var rowIndexDelta = that.getRowIndexDelta();\r\n var repaintChangesOnly = that.option(\"repaintChangesOnly\");\r\n var prevIndex = -1;\r\n var rowIndexCorrection = 0;\r\n var changeType;\r\n change.items = [];\r\n change.rowIndices = [];\r\n change.columnIndices = [];\r\n change.changeTypes = [];\r\n var equalItems = function(item1, item2, strict) {\r\n var result = item1 && item2 && (0, _common.equalByValue)(item1.key, item2.key);\r\n if (result && strict) {\r\n result = item1.rowType === item2.rowType && (\"detail\" !== item2.rowType || item1.isEditing === item2.isEditing)\r\n }\r\n return result\r\n };\r\n (0, _iterator.each)(rowIndices, function(index, rowIndex) {\r\n var columnIndices;\r\n rowIndex += rowIndexCorrection + rowIndexDelta;\r\n if (prevIndex === rowIndex) {\r\n return\r\n }\r\n prevIndex = rowIndex;\r\n var oldItem = that._items[rowIndex];\r\n var oldNextItem = that._items[rowIndex + 1];\r\n var newItem = items[rowIndex];\r\n var newNextItem = items[rowIndex + 1];\r\n var strict = equalItems(oldItem, oldNextItem) || equalItems(newItem, newNextItem);\r\n if (newItem) {\r\n newItem.rowIndex = rowIndex;\r\n change.items.push(newItem)\r\n }\r\n if (oldItem && newItem && equalItems(oldItem, newItem, strict)) {\r\n changeType = \"update\";\r\n that._items[rowIndex] = newItem;\r\n if (oldItem.visible !== newItem.visible) {\r\n change.items.splice(-1, 1, {\r\n visible: newItem.visible\r\n })\r\n } else {\r\n if (repaintChangesOnly && !change.isFullUpdate) {\r\n columnIndices = that._partialUpdateRow(oldItem, newItem, rowIndex - rowIndexDelta)\r\n }\r\n }\r\n } else {\r\n if (newItem && !oldItem || newNextItem && equalItems(oldItem, newNextItem, strict)) {\r\n changeType = \"insert\";\r\n that._items.splice(rowIndex, 0, newItem);\r\n rowIndexCorrection++\r\n } else {\r\n if (oldItem && !newItem || oldNextItem && equalItems(newItem, oldNextItem, strict)) {\r\n changeType = \"remove\";\r\n that._items.splice(rowIndex, 1);\r\n rowIndexCorrection--;\r\n prevIndex = -1\r\n } else {\r\n if (newItem) {\r\n changeType = \"update\";\r\n that._items[rowIndex] = newItem\r\n } else {\r\n return\r\n }\r\n }\r\n }\r\n }\r\n change.rowIndices.push(rowIndex - rowIndexDelta);\r\n change.changeTypes.push(changeType);\r\n change.columnIndices.push(columnIndices)\r\n })\r\n },\r\n _isCellChanged: function(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) {\r\n if (JSON.stringify(oldRow.values[columnIndex]) !== JSON.stringify(newRow.values[columnIndex])) {\r\n return true\r\n }\r\n\r\n function isCellModified(row, columnIndex) {\r\n return row.modifiedValues ? void 0 !== row.modifiedValues[columnIndex] : false\r\n }\r\n if (isCellModified(oldRow, columnIndex) !== isCellModified(newRow, columnIndex)) {\r\n return true\r\n }\r\n return false\r\n },\r\n _getChangedColumnIndices: function(oldItem, newItem, visibleRowIndex, isLiveUpdate) {\r\n if (oldItem.rowType === newItem.rowType && \"group\" !== newItem.rowType && \"groupFooter\" !== newItem.rowType) {\r\n var columnIndices = [];\r\n if (\"detail\" !== newItem.rowType) {\r\n for (var columnIndex = 0; columnIndex < oldItem.values.length; columnIndex++) {\r\n if (this._isCellChanged(oldItem, newItem, visibleRowIndex, columnIndex, isLiveUpdate)) {\r\n columnIndices.push(columnIndex)\r\n }\r\n }\r\n }\r\n return columnIndices\r\n }\r\n },\r\n _partialUpdateRow: function(oldItem, newItem, visibleRowIndex, isLiveUpdate) {\r\n var changedColumnIndices = this._getChangedColumnIndices(oldItem, newItem, visibleRowIndex, isLiveUpdate);\r\n if (changedColumnIndices) {\r\n oldItem.cells && oldItem.cells.forEach(function(cell, columnIndex) {\r\n var isCellChanged = changedColumnIndices.indexOf(columnIndex) >= 0;\r\n if (!isCellChanged && cell && cell.update) {\r\n cell.update(newItem)\r\n }\r\n });\r\n newItem.update = oldItem.update;\r\n newItem.watch = oldItem.watch;\r\n newItem.cells = oldItem.cells;\r\n if (isLiveUpdate) {\r\n newItem.oldValues = oldItem.values\r\n }\r\n oldItem.update && oldItem.update(newItem)\r\n }\r\n return changedColumnIndices\r\n },\r\n _isItemEquals: function(item1, item2) {\r\n if (JSON.stringify(item1.values) !== JSON.stringify(item2.values)) {\r\n return false\r\n }\r\n var compareFields = [\"modified\", \"isNewRow\", \"removed\", \"isEditing\"];\r\n if (compareFields.some(function(field) {\r\n return item1[field] !== item2[field]\r\n })) {\r\n return false\r\n }\r\n if (\"group\" === item1.rowType || \"groupFooter\" === item1.rowType) {\r\n var _item1$data, _item2$data, _item1$data2, _item2$data2;\r\n var expandedMatch = item1.isExpanded === item2.isExpanded;\r\n var summaryCellsMatch = JSON.stringify(item1.summaryCells) === JSON.stringify(item2.summaryCells);\r\n var continuationMatch = (null === (_item1$data = item1.data) || void 0 === _item1$data ? void 0 : _item1$data.isContinuation) === (null === (_item2$data = item2.data) || void 0 === _item2$data ? void 0 : _item2$data.isContinuation) && (null === (_item1$data2 = item1.data) || void 0 === _item1$data2 ? void 0 : _item1$data2.isContinuationOnNextPage) === (null === (_item2$data2 = item2.data) || void 0 === _item2$data2 ? void 0 : _item2$data2.isContinuationOnNextPage);\r\n if (!expandedMatch || !summaryCellsMatch || !continuationMatch) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n _applyChangesOnly: function(change) {\r\n var _this2 = this;\r\n var rowIndices = [];\r\n var columnIndices = [];\r\n var changeTypes = [];\r\n var items = [];\r\n var newIndexByKey = {};\r\n\r\n function getRowKey(row) {\r\n if (row) {\r\n return row.rowType + \",\" + JSON.stringify(row.key)\r\n }\r\n }\r\n var isItemEquals = function(item1, item2) {\r\n if (!_this2._isItemEquals(item1, item2)) {\r\n return false\r\n }\r\n if (item1.cells) {\r\n item1.update && item1.update(item2);\r\n item1.cells.forEach(function(cell) {\r\n if (cell && cell.update) {\r\n cell.update(item2)\r\n }\r\n })\r\n }\r\n return true\r\n };\r\n var oldItems = this._items.slice();\r\n change.items.forEach(function(item, index) {\r\n var key = getRowKey(item);\r\n newIndexByKey[key] = index;\r\n item.rowIndex = index\r\n });\r\n var result = (0, _array_compare.findChanges)(oldItems, change.items, getRowKey, isItemEquals);\r\n if (!result) {\r\n this._applyChangeFull(change);\r\n return\r\n }\r\n result.forEach(function(change) {\r\n switch (change.type) {\r\n case \"update\":\r\n var index = change.index;\r\n var newItem = change.data;\r\n var oldItem = change.oldItem;\r\n var changedColumnIndices = _this2._partialUpdateRow(oldItem, newItem, index, true);\r\n rowIndices.push(index);\r\n changeTypes.push(\"update\");\r\n items.push(newItem);\r\n _this2._items[index] = newItem;\r\n columnIndices.push(changedColumnIndices);\r\n break;\r\n case \"insert\":\r\n rowIndices.push(change.index);\r\n changeTypes.push(\"insert\");\r\n items.push(change.data);\r\n columnIndices.push(void 0);\r\n _this2._items.splice(change.index, 0, change.data);\r\n break;\r\n case \"remove\":\r\n rowIndices.push(change.index);\r\n changeTypes.push(\"remove\");\r\n _this2._items.splice(change.index, 1);\r\n items.push(change.oldItem);\r\n columnIndices.push(void 0)\r\n }\r\n });\r\n change.repaintChangesOnly = true;\r\n change.changeType = \"update\";\r\n change.rowIndices = rowIndices;\r\n change.columnIndices = columnIndices;\r\n change.changeTypes = changeTypes;\r\n change.items = items;\r\n if (oldItems.length) {\r\n change.isLiveUpdate = true\r\n }\r\n this._correctRowIndices(function(rowIndex) {\r\n var oldItem = oldItems[rowIndex];\r\n var key = getRowKey(oldItem);\r\n var newRowIndex = newIndexByKey[key];\r\n return newRowIndex >= 0 ? newRowIndex - rowIndex : 0\r\n })\r\n },\r\n _correctRowIndices: _common.noop,\r\n _updateItemsCore: function(change) {\r\n var that = this;\r\n var items;\r\n var dataSource = that._dataSource;\r\n var changeType = change.changeType || \"refresh\";\r\n change.changeType = changeType;\r\n if (dataSource) {\r\n items = change.items || dataSource.items();\r\n items = that._beforeProcessItems(items);\r\n items = that._processItems(items, change);\r\n change.items = items;\r\n var oldItems = that._items.length === items.length && that._items;\r\n that._applyChange(change);\r\n var rowIndexDelta = that.getRowIndexDelta();\r\n (0, _iterator.each)(that._items, function(index, item) {\r\n item.rowIndex = index - rowIndexDelta;\r\n if (oldItems) {\r\n item.cells = oldItems[index].cells || []\r\n }\r\n })\r\n } else {\r\n that._items = []\r\n }\r\n },\r\n _handleChanging: function(e) {\r\n var that = this;\r\n var rows = that.getVisibleRows();\r\n var dataSource = that.dataSource();\r\n if (dataSource) {\r\n e.changes.forEach(function(change) {\r\n if (\"insert\" === change.type && change.index >= 0) {\r\n var dataIndex = 0;\r\n for (var i = 0; i < change.index; i++) {\r\n var row = rows[i];\r\n if (row && (\"data\" === row.rowType || \"group\" === row.rowType)) {\r\n dataIndex++\r\n }\r\n }\r\n change.index = dataIndex\r\n }\r\n })\r\n }\r\n },\r\n updateItems: function(change, isDataChanged) {\r\n change = change || {};\r\n var that = this;\r\n if (void 0 !== that._repaintChangesOnly) {\r\n change.repaintChangesOnly = that._repaintChangesOnly\r\n } else {\r\n if (change.changes) {\r\n change.repaintChangesOnly = that.option(\"repaintChangesOnly\")\r\n } else {\r\n if (isDataChanged) {\r\n var operationTypes = that.dataSource().operationTypes();\r\n change.repaintChangesOnly = operationTypes && !operationTypes.grouping && !operationTypes.filtering && that.option(\"repaintChangesOnly\");\r\n change.isDataChanged = true;\r\n if (operationTypes && (operationTypes.reload || operationTypes.paging || operationTypes.groupExpanding)) {\r\n change.needUpdateDimensions = true\r\n }\r\n }\r\n }\r\n }\r\n if (that._updateLockCount) {\r\n that._changes.push(change);\r\n return\r\n }\r\n that._updateItemsCore(change);\r\n if (change.cancel) {\r\n return\r\n }\r\n that._fireChanged(change)\r\n },\r\n loadingOperationTypes: function() {\r\n var dataSource = this.dataSource();\r\n return dataSource && dataSource.loadingOperationTypes() || {}\r\n },\r\n _fireChanged: function(change) {\r\n var _this3 = this;\r\n if (this._currentOperationTypes) {\r\n change.operationTypes = this._currentOperationTypes;\r\n this._currentOperationTypes = null\r\n }(0, _common.deferRender)(function() {\r\n _this3.changed.fire(change)\r\n })\r\n },\r\n isLoading: function() {\r\n return this._isLoading || this._isCustomLoading\r\n },\r\n _fireLoadingChanged: function() {\r\n this.loadingChanged.fire(this.isLoading(), this._loadingText)\r\n },\r\n _calculateAdditionalFilter: function() {\r\n return null\r\n },\r\n _applyFilter: function() {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n if (dataSource) {\r\n dataSource.pageIndex(0);\r\n return that.reload().done(that.pageChanged.fire.bind(that.pageChanged))\r\n }\r\n },\r\n filter: function filter(filterExpr) {\r\n var dataSource = this._dataSource;\r\n var filter = dataSource && dataSource.filter();\r\n if (0 === arguments.length) {\r\n return filter\r\n }\r\n filterExpr = arguments.length > 1 ? Array.prototype.slice.call(arguments, 0) : filterExpr;\r\n if (_uiGrid_core2.default.equalFilterParameters(filter, filterExpr)) {\r\n return\r\n }\r\n if (dataSource) {\r\n dataSource.filter(filterExpr)\r\n }\r\n this._applyFilter()\r\n },\r\n clearFilter: function(filterName) {\r\n var that = this;\r\n var columnsController = that._columnsController;\r\n var clearColumnOption = function(optionName) {\r\n var columnCount = columnsController.columnCount();\r\n for (var index = 0; index < columnCount; index++) {\r\n columnsController.columnOption(index, optionName, void 0)\r\n }\r\n };\r\n that.component.beginUpdate();\r\n if (arguments.length > 0) {\r\n switch (filterName) {\r\n case \"dataSource\":\r\n that.filter(null);\r\n break;\r\n case \"search\":\r\n that.searchByText(\"\");\r\n break;\r\n case \"header\":\r\n clearColumnOption(\"filterValues\");\r\n break;\r\n case \"row\":\r\n clearColumnOption(\"filterValue\")\r\n }\r\n } else {\r\n that.filter(null);\r\n that.searchByText(\"\");\r\n clearColumnOption(\"filterValue\");\r\n clearColumnOption(\"bufferedFilterValue\");\r\n clearColumnOption(\"filterValues\")\r\n }\r\n that.component.endUpdate()\r\n },\r\n _fireDataSourceChanged: function() {\r\n var that = this;\r\n var changedHandler = function changedHandler() {\r\n that.changed.remove(changedHandler);\r\n that.dataSourceChanged.fire()\r\n };\r\n that.changed.add(changedHandler)\r\n },\r\n _getDataSourceAdapter: _common.noop,\r\n _createDataSourceAdapterCore: function(dataSource, remoteOperations) {\r\n var dataSourceAdapterProvider = this._getDataSourceAdapter();\r\n var dataSourceAdapter = dataSourceAdapterProvider.create(this.component);\r\n dataSourceAdapter.init(dataSource, remoteOperations);\r\n return dataSourceAdapter\r\n },\r\n isLocalStore: function(store) {\r\n store = store || this.store();\r\n return store instanceof _array_store.default\r\n },\r\n isCustomStore: function(store) {\r\n store = store || this.store();\r\n return store instanceof _custom_store.default\r\n },\r\n _createDataSourceAdapter: function(dataSource) {\r\n var remoteOperations = this.option(\"remoteOperations\");\r\n var store = dataSource.store();\r\n var enabledRemoteOperations = {\r\n filtering: true,\r\n sorting: true,\r\n paging: true,\r\n grouping: true,\r\n summary: true\r\n };\r\n if (remoteOperations && remoteOperations.groupPaging) {\r\n remoteOperations = (0, _extend.extend)({}, enabledRemoteOperations, remoteOperations)\r\n }\r\n if (\"auto\" === remoteOperations) {\r\n remoteOperations = this.isLocalStore(store) || this.isCustomStore(store) ? {} : {\r\n filtering: true,\r\n sorting: true,\r\n paging: true\r\n }\r\n }\r\n if (true === remoteOperations) {\r\n remoteOperations = enabledRemoteOperations\r\n }\r\n return this._createDataSourceAdapterCore(dataSource, remoteOperations)\r\n },\r\n setDataSource: function(dataSource) {\r\n var that = this;\r\n var oldDataSource = that._dataSource;\r\n if (!dataSource && oldDataSource) {\r\n oldDataSource.cancelAll();\r\n oldDataSource.changed.remove(that._dataChangedHandler);\r\n oldDataSource.loadingChanged.remove(that._loadingChangedHandler);\r\n oldDataSource.loadError.remove(that._loadErrorHandler);\r\n oldDataSource.customizeStoreLoadOptions.remove(that._customizeStoreLoadOptionsHandler);\r\n oldDataSource.changing.remove(that._changingHandler);\r\n oldDataSource.dispose(that._isSharedDataSource)\r\n }\r\n if (dataSource) {\r\n dataSource = that._createDataSourceAdapter(dataSource)\r\n }\r\n that._dataSource = dataSource;\r\n if (dataSource) {\r\n that._fireDataSourceChanged();\r\n that._isLoading = !dataSource.isLoaded();\r\n that._needApplyFilter = true;\r\n that._isAllDataTypesDefined = that._columnsController.isAllDataTypesDefined();\r\n dataSource.changed.add(that._dataChangedHandler);\r\n dataSource.loadingChanged.add(that._loadingChangedHandler);\r\n dataSource.loadError.add(that._loadErrorHandler);\r\n dataSource.customizeStoreLoadOptions.add(that._customizeStoreLoadOptionsHandler);\r\n dataSource.changing.add(that._changingHandler)\r\n }\r\n },\r\n items: function() {\r\n return this._items\r\n },\r\n isEmpty: function() {\r\n return !this.items().length\r\n },\r\n pageCount: function() {\r\n return this._dataSource ? this._dataSource.pageCount() : 1\r\n },\r\n dataSource: function() {\r\n return this._dataSource\r\n },\r\n store: function() {\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.store()\r\n },\r\n loadAll: function(data) {\r\n var that = this;\r\n var d = new _deferred.Deferred;\r\n var dataSource = that._dataSource;\r\n if (dataSource) {\r\n if (data) {\r\n var options = {\r\n data: data,\r\n isCustomLoading: true,\r\n storeLoadOptions: {\r\n isLoadingAll: true\r\n },\r\n loadOptions: {\r\n filter: that.getCombinedFilter(),\r\n group: dataSource.group(),\r\n sort: dataSource.sort()\r\n }\r\n };\r\n dataSource._handleDataLoaded(options);\r\n (0, _deferred.when)(options.data).done(function(data) {\r\n data = that._beforeProcessItems(data);\r\n d.resolve(that._processItems(data, {\r\n changeType: \"loadingAll\"\r\n }), options.extra && options.extra.summary)\r\n }).fail(d.reject)\r\n } else {\r\n if (!dataSource.isLoading()) {\r\n var loadOptions = (0, _extend.extend)({}, dataSource.loadOptions(), {\r\n isLoadingAll: true,\r\n requireTotalCount: false\r\n });\r\n dataSource.load(loadOptions).done(function(items, extra) {\r\n items = that._beforeProcessItems(items);\r\n items = that._processItems(items, {\r\n changeType: \"loadingAll\"\r\n });\r\n d.resolve(items, extra && extra.summary)\r\n }).fail(d.reject)\r\n } else {\r\n d.reject()\r\n }\r\n }\r\n } else {\r\n d.resolve([])\r\n }\r\n return d\r\n },\r\n getKeyByRowIndex: function(rowIndex) {\r\n var item = this.items()[rowIndex];\r\n if (item) {\r\n return item.key\r\n }\r\n },\r\n getRowIndexByKey: function(key) {\r\n return _uiGrid_core2.default.getIndexByKey(key, this.items())\r\n },\r\n keyOf: function(data) {\r\n var store = this.store();\r\n if (store) {\r\n return store.keyOf(data)\r\n }\r\n },\r\n byKey: function(key) {\r\n var store = this.store();\r\n var rowIndex = this.getRowIndexByKey(key);\r\n var result;\r\n if (!store) {\r\n return\r\n }\r\n if (rowIndex >= 0) {\r\n result = (new _deferred.Deferred).resolve(this.items()[rowIndex].data)\r\n }\r\n return result || store.byKey(key)\r\n },\r\n key: function() {\r\n var store = this.store();\r\n if (store) {\r\n return store.key()\r\n }\r\n },\r\n getRowIndexOffset: function() {\r\n return 0\r\n },\r\n getDataByKeys: function(rowKeys) {\r\n var that = this;\r\n var result = new _deferred.Deferred;\r\n var deferreds = [];\r\n var data = [];\r\n (0, _iterator.each)(rowKeys, function(index, key) {\r\n deferreds.push(that.byKey(key).done(function(keyData) {\r\n data[index] = keyData\r\n }))\r\n });\r\n _deferred.when.apply(_renderer.default, deferreds).always(function() {\r\n result.resolve(data)\r\n });\r\n return result\r\n },\r\n pageIndex: function(value) {\r\n return changePaging(this, \"pageIndex\", value)\r\n },\r\n pageSize: function(value) {\r\n return changePaging(this, \"pageSize\", value)\r\n },\r\n beginCustomLoading: function(messageText) {\r\n this._isCustomLoading = true;\r\n this._loadingText = messageText || \"\";\r\n this._fireLoadingChanged()\r\n },\r\n endCustomLoading: function() {\r\n this._isCustomLoading = false;\r\n this._loadingText = void 0;\r\n this._fireLoadingChanged()\r\n },\r\n refresh: function(options) {\r\n if (true === options) {\r\n options = {\r\n reload: true,\r\n changesOnly: true\r\n }\r\n } else {\r\n if (!options) {\r\n options = {\r\n lookup: true,\r\n selection: true,\r\n reload: true\r\n }\r\n }\r\n }\r\n var that = this;\r\n var dataSource = that.getDataSource();\r\n var changesOnly = options.changesOnly;\r\n var d = new _deferred.Deferred;\r\n var customizeLoadResult = function() {\r\n that._repaintChangesOnly = !!changesOnly\r\n };\r\n (0, _deferred.when)(!options.lookup || that._columnsController.refresh()).always(function() {\r\n if (options.load || options.reload) {\r\n dataSource && dataSource.on(\"customizeLoadResult\", customizeLoadResult);\r\n (0, _deferred.when)(that.reload(options.reload, changesOnly)).always(function() {\r\n dataSource && dataSource.off(\"customizeLoadResult\", customizeLoadResult);\r\n that._repaintChangesOnly = void 0\r\n }).done(d.resolve).fail(d.reject)\r\n } else {\r\n that.updateItems({\r\n repaintChangesOnly: options.changesOnly\r\n });\r\n d.resolve()\r\n }\r\n });\r\n return d.promise()\r\n },\r\n getVisibleRows: function() {\r\n return this.items()\r\n },\r\n _disposeDataSource: function() {\r\n this.setDataSource(null)\r\n },\r\n dispose: function() {\r\n this._disposeDataSource();\r\n this.callBase.apply(this, arguments)\r\n },\r\n repaintRows: function(rowIndexes, changesOnly) {\r\n rowIndexes = Array.isArray(rowIndexes) ? rowIndexes : [rowIndexes];\r\n if (rowIndexes.length > 1 || (0, _type.isDefined)(rowIndexes[0])) {\r\n this.updateItems({\r\n changeType: \"update\",\r\n rowIndices: rowIndexes,\r\n isFullUpdate: !changesOnly\r\n })\r\n }\r\n },\r\n skipProcessingPagingChange: function(fullName) {\r\n return this._skipProcessingPagingChange && (\"paging.pageIndex\" === fullName || \"paging.pageSize\" === fullName)\r\n },\r\n getUserState: function() {\r\n return {\r\n searchText: this.option(\"searchPanel.text\"),\r\n pageIndex: this.pageIndex(),\r\n pageSize: this.pageSize()\r\n }\r\n },\r\n getCachedStoreData: function() {\r\n return this._dataSource && this._dataSource.getCachedStoreData()\r\n }\r\n };\r\n _uiGrid_core2.default.proxyMethod(members, \"load\");\r\n _uiGrid_core2.default.proxyMethod(members, \"reload\");\r\n _uiGrid_core2.default.proxyMethod(members, \"push\");\r\n _uiGrid_core2.default.proxyMethod(members, \"itemsCount\", 0);\r\n _uiGrid_core2.default.proxyMethod(members, \"totalItemsCount\", 0);\r\n _uiGrid_core2.default.proxyMethod(members, \"hasKnownLastPage\", true);\r\n _uiGrid_core2.default.proxyMethod(members, \"isLoaded\", true);\r\n _uiGrid_core2.default.proxyMethod(members, \"totalCount\", 0);\r\n return members\r\n }())\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.sorting.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.sorting_mixin\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _index = require(\"../../events/utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COLUMN_HEADERS_VIEW_NAMESPACE = \"dxDataGridColumnHeadersView\";\r\nvar ColumnHeadersViewSortingExtender = (0, _extend.extend)({}, _uiGrid_core.default, {\r\n _createRow: function(row) {\r\n var _this = this;\r\n var $row = this.callBase(row);\r\n if (\"header\" === row.rowType) {\r\n _events_engine.default.on($row, (0, _index.addNamespace)(_click.name, COLUMN_HEADERS_VIEW_NAMESPACE), \"td\", this.createAction(function(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 ((0, _renderer.default)(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 = (0, _renderer.default)(event.currentTarget);\r\n var rowIndex = $cellElementFromEvent.parent().index();\r\n var columnIndex = -1;\r\n [].slice.call(that.getCellElements(rowIndex)).some(function($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((0, _renderer.default)(event.target))) {\r\n return\r\n }\r\n if (column && !(0, _type.isDefined)(column.groupIndex) && !column.command) {\r\n if (event.shiftKey) {\r\n keyName = \"shift\"\r\n } else {\r\n if (event.ctrlKey) {\r\n keyName = \"ctrl\"\r\n }\r\n }\r\n setTimeout(function() {\r\n that._columnsController.changeSortOrder(column.index, keyName)\r\n })\r\n }\r\n },\r\n _renderCellContent: function($cell, options) {\r\n var that = this;\r\n var column = options.column;\r\n if (!column.command && \"header\" === options.rowType) {\r\n that._applyColumnState({\r\n name: \"sort\",\r\n rootElement: $cell,\r\n column: column,\r\n showColumnLines: that.option(\"showColumnLines\")\r\n })\r\n }\r\n that.callBase($cell, options)\r\n },\r\n _columnOptionChanged: function(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: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"sorting\":\r\n that._invalidate();\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n }\r\n});\r\nvar HeaderPanelSortingExtender = (0, _extend.extend)({}, _uiGrid_core.default, {\r\n _createGroupPanelItem: function($rootElement, groupColumn) {\r\n var that = this;\r\n var $item = that.callBase.apply(that, arguments);\r\n _events_engine.default.on($item, (0, _index.addNamespace)(_click.name, \"dxDataGridHeaderPanel\"), that.createAction(function() {\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: function(groupColumnIndex) {\r\n var _this2 = this;\r\n setTimeout(function() {\r\n return _this2.getController(\"columns\").changeSortOrder(groupColumnIndex)\r\n })\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"sorting\":\r\n that._invalidate();\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n sorting: {\r\n mode: \"single\",\r\n ascendingText: _message.default.format(\"dxDataGrid-sortingAscendingText\"),\r\n descendingText: _message.default.format(\"dxDataGrid-sortingDescendingText\"),\r\n clearText: _message.default.format(\"dxDataGrid-sortingClearText\"),\r\n showSortIndexes: true\r\n }\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\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/context_menu.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./context_menu/ui.context_menu\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/*!\n * devextreme-vue\n * Version: 20.2.5\n * Build date: Fri Jan 15 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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 = exports.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.DxButton = exports.DxBoundaryOffset = exports.DxAt = exports.DxAsyncRule = exports.DxAnimation = exports.DxDataGrid = void 0;\nvar data_grid_1 = 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,\n customizeColumns: Function,\n dataSource: [Array, Object, String],\n dateSerializationFormat: String,\n disabled: Boolean,\n editing: Object,\n elementAttr: Object,\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, String],\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, String],\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, String],\n template: {},\n text: String,\n visible: [Boolean, Function]\n }\n});\nexports.DxButton = DxButton;\nDxButton.$_optionName = \"buttons\";\nDxButton.$_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: Object,\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:dataSource\": null,\n \"update:displayExpr\": null,\n \"update:valueExpr\": null,\n },\n props: {\n allowClearing: Boolean,\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: Object,\n useIcons: Boolean\n }\n});\nexports.DxEditing = DxEditing;\nDxEditing.$_optionName = \"editing\";\nDxEditing.$_expectedChildren = {\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: Object,\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: Object,\n customOperations: Array,\n defaultGroupOperation: String,\n disabled: Boolean,\n elementAttr: Object,\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: Object,\n closeOnOutsideClick: [Boolean, Function],\n container: {},\n contentTemplate: {},\n deferRendering: Boolean,\n disabled: Boolean,\n dragEnabled: Boolean,\n elementAttr: Object,\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: Object,\n colCount: [Number, String],\n colCountByScreen: Object,\n customizeItem: Function,\n disabled: Boolean,\n elementAttr: Object,\n focusStateEnabled: Boolean,\n formData: Object,\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: Object,\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: [Number, Object, String],\n staggerDelay: Number,\n start: Function,\n to: [Number, Object, String],\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:dataSource\": null,\n \"update:displayExpr\": null,\n \"update:valueExpr\": null,\n },\n props: {\n allowClearing: Boolean,\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: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 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: Object,\n closeOnOutsideClick: [Boolean, Function],\n container: {},\n contentTemplate: {},\n deferRendering: Boolean,\n disabled: Boolean,\n dragEnabled: Boolean,\n elementAttr: Object,\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: [Number, Object, String],\n staggerDelay: Number,\n start: Function,\n to: [Number, Object, String],\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: Object,\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","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.column_chooser.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = require(\"./ui.grid_core.columns_view\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _themes = require(\"../themes\");\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _tree_view = _interopRequireDefault(require(\"../tree_view\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COLUMN_CHOOSER_CLASS = \"column-chooser\";\r\nvar COLUMN_CHOOSER_BUTTON_CLASS = \"column-chooser-button\";\r\nvar NOTOUCH_ACTION_CLASS = \"notouch-action\";\r\nvar COLUMN_CHOOSER_LIST_CLASS = \"column-chooser-list\";\r\nvar COLUMN_CHOOSER_PLAIN_CLASS = \"column-chooser-plain\";\r\nvar COLUMN_CHOOSER_DRAG_CLASS = \"column-chooser-mode-drag\";\r\nvar COLUMN_CHOOSER_SELECT_CLASS = \"column-chooser-mode-select\";\r\nvar COLUMN_CHOOSER_ICON_NAME = \"column-chooser\";\r\nvar COLUMN_CHOOSER_ITEM_CLASS = \"dx-column-chooser-item\";\r\nvar TREEVIEW_NODE_SELECTOR = \".dx-treeview-node\";\r\nvar CHECKBOX_SELECTOR = \".dx-checkbox\";\r\nvar CLICK_TIMEOUT = 300;\r\nvar processItems = function(that, chooserColumns) {\r\n var items = [];\r\n var isSelectMode = \"select\" === that.option(\"columnChooser.mode\");\r\n if (chooserColumns.length) {\r\n (0, _iterator.each)(chooserColumns, function(index, column) {\r\n var item = {\r\n text: column.caption,\r\n cssClass: column.cssClass,\r\n allowHiding: column.allowHiding,\r\n expanded: true,\r\n id: column.index,\r\n disabled: false,\r\n disableCheckBox: false === column.allowHiding,\r\n parentId: (0, _type.isDefined)(column.ownerBand) ? column.ownerBand : null\r\n };\r\n if (isSelectMode) {\r\n item.selected = column.visible\r\n }\r\n items.push(item)\r\n })\r\n }\r\n return items\r\n};\r\nvar ColumnChooserController = _uiGrid_core.default.ViewController.inherit({\r\n renderShowColumnChooserButton: function($element) {\r\n var that = this;\r\n var columnChooserButtonClass = that.addWidgetPrefix(COLUMN_CHOOSER_BUTTON_CLASS);\r\n var columnChooserEnabled = that.option(\"columnChooser.enabled\");\r\n var $showColumnChooserButton = $element.find(\".\" + columnChooserButtonClass);\r\n var $columnChooserButton;\r\n if (columnChooserEnabled) {\r\n if (!$showColumnChooserButton.length) {\r\n $columnChooserButton = (0, _renderer.default)(\"
    \").addClass(columnChooserButtonClass).appendTo($element);\r\n that._createComponent($columnChooserButton, _button.default, {\r\n icon: COLUMN_CHOOSER_ICON_NAME,\r\n onClick: function() {\r\n that.getView(\"columnChooserView\").showColumnChooser()\r\n },\r\n hint: that.option(\"columnChooser.title\"),\r\n integrationOptions: {}\r\n })\r\n } else {\r\n $showColumnChooserButton.show()\r\n }\r\n } else {\r\n $showColumnChooserButton.hide()\r\n }\r\n },\r\n getPosition: function() {\r\n var rowsView = this.getView(\"rowsView\");\r\n return {\r\n my: \"right bottom\",\r\n at: \"right bottom\",\r\n of: rowsView && rowsView.element(),\r\n collision: \"fit\",\r\n offset: \"-2 -2\",\r\n boundaryOffset: \"2 2\"\r\n }\r\n }\r\n});\r\nvar ColumnChooserView = _uiGrid_core2.ColumnsView.inherit({\r\n _resizeCore: _common.noop,\r\n _isWinDevice: function() {\r\n return !!_devices.default.real().win\r\n },\r\n _updateList: function(change) {\r\n var items;\r\n var $popupContent = this._popupContainer.$content();\r\n var isSelectMode = \"select\" === this.option(\"columnChooser.mode\");\r\n var columnChooserList = this._columnChooserList;\r\n var chooserColumns = this._columnsController.getChooserColumns(isSelectMode);\r\n if (isSelectMode && columnChooserList && change && \"selection\" === change.changeType) {\r\n items = processItems(this, chooserColumns);\r\n for (var i = 0; i < items.length; i++) {\r\n var selected = items[i].selected;\r\n var id = items[i].id;\r\n if (id === change.columnIndex) {\r\n if (selected) {\r\n columnChooserList.selectItem(id, selected)\r\n } else {\r\n columnChooserList.unselectItem(id, selected)\r\n }\r\n }\r\n }\r\n } else {\r\n if (!isSelectMode || !columnChooserList || \"full\" === change) {\r\n this._popupContainer._wrapper().toggleClass(this.addWidgetPrefix(COLUMN_CHOOSER_DRAG_CLASS), !isSelectMode).toggleClass(this.addWidgetPrefix(COLUMN_CHOOSER_SELECT_CLASS), isSelectMode);\r\n items = processItems(this, chooserColumns);\r\n this._renderTreeView($popupContent, items)\r\n }\r\n }\r\n },\r\n _initializePopupContainer: function() {\r\n var that = this;\r\n var $element = that.element().addClass(that.addWidgetPrefix(COLUMN_CHOOSER_CLASS));\r\n var columnChooserOptions = that.option(\"columnChooser\");\r\n var themeName = (0, _themes.current)();\r\n var isGenericTheme = (0, _themes.isGeneric)(themeName);\r\n var isMaterial = (0, _themes.isMaterial)(themeName);\r\n var dxPopupOptions = {\r\n visible: false,\r\n shading: false,\r\n showCloseButton: false,\r\n dragEnabled: true,\r\n resizeEnabled: true,\r\n toolbarItems: [{\r\n text: columnChooserOptions.title,\r\n toolbar: \"top\",\r\n location: isGenericTheme || isMaterial ? \"before\" : \"center\"\r\n }],\r\n position: that.getController(\"columnChooser\").getPosition(),\r\n width: columnChooserOptions.width,\r\n height: columnChooserOptions.height,\r\n rtlEnabled: that.option(\"rtlEnabled\"),\r\n onHidden: function() {\r\n if (that._isWinDevice()) {\r\n (0, _renderer.default)(\"body\").removeClass(that.addWidgetPrefix(NOTOUCH_ACTION_CLASS))\r\n }\r\n },\r\n container: columnChooserOptions.container\r\n };\r\n if (isGenericTheme || isMaterial) {\r\n (0, _extend.extend)(dxPopupOptions, {\r\n showCloseButton: true\r\n })\r\n } else {\r\n dxPopupOptions.toolbarItems[dxPopupOptions.toolbarItems.length] = {\r\n shortcut: \"cancel\"\r\n }\r\n }\r\n if (!(0, _type.isDefined)(this._popupContainer)) {\r\n that._popupContainer = that._createComponent($element, _popup.default, dxPopupOptions);\r\n that._popupContainer.on(\"optionChanged\", function(args) {\r\n if (\"visible\" === args.name) {\r\n that.renderCompleted.fire()\r\n }\r\n })\r\n } else {\r\n this._popupContainer.option(dxPopupOptions)\r\n }\r\n },\r\n _renderCore: function(change) {\r\n if (this._popupContainer) {\r\n this._updateList(change)\r\n }\r\n },\r\n _renderTreeView: function($container, items) {\r\n var that = this;\r\n var columnChooser = this.option(\"columnChooser\");\r\n var isSelectMode = \"select\" === columnChooser.mode;\r\n var treeViewConfig = {\r\n items: items,\r\n dataStructure: \"plain\",\r\n activeStateEnabled: true,\r\n focusStateEnabled: true,\r\n hoverStateEnabled: true,\r\n itemTemplate: \"item\",\r\n showCheckBoxesMode: \"none\",\r\n rootValue: null,\r\n searchEnabled: columnChooser.allowSearch,\r\n searchTimeout: columnChooser.searchTimeout,\r\n onItemRendered: function(e) {\r\n if (e.itemData.disableCheckBox) {\r\n var $treeViewNode = (0, _renderer.default)(e.itemElement).closest(TREEVIEW_NODE_SELECTOR);\r\n var $checkBox;\r\n if ($treeViewNode.length) {\r\n $checkBox = $treeViewNode.find(CHECKBOX_SELECTOR);\r\n if ($checkBox.length) {\r\n var checkBoxInstance = $checkBox.data(\"dxCheckBox\");\r\n checkBoxInstance && checkBoxInstance.option(\"disabled\", true)\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var scrollableInstance = $container.find(\".dx-scrollable\").data(\"dxScrollable\");\r\n var scrollTop = scrollableInstance && scrollableInstance.scrollTop();\r\n if (isSelectMode && !this._columnsController.isBandColumnsUsed()) {\r\n $container.addClass(this.addWidgetPrefix(COLUMN_CHOOSER_PLAIN_CLASS))\r\n }\r\n treeViewConfig.onContentReady = function(e) {\r\n (0, _common.deferUpdate)(function() {\r\n if (scrollTop) {\r\n var scrollable = (0, _renderer.default)(e.element).find(\".dx-scrollable\").data(\"dxScrollable\");\r\n scrollable && scrollable.scrollTo({\r\n y: scrollTop\r\n })\r\n }\r\n that.renderCompleted.fire()\r\n })\r\n };\r\n if (this._isWinDevice()) {\r\n treeViewConfig.useNativeScrolling = false\r\n }(0, _extend.extend)(treeViewConfig, isSelectMode ? this._prepareSelectModeConfig() : this._prepareDragModeConfig());\r\n if (this._columnChooserList) {\r\n if (!treeViewConfig.searchEnabled) {\r\n treeViewConfig.searchValue = \"\"\r\n }\r\n this._columnChooserList.option(treeViewConfig)\r\n } else {\r\n this._columnChooserList = this._createComponent($container, _tree_view.default, treeViewConfig);\r\n $container.addClass(this.addWidgetPrefix(COLUMN_CHOOSER_LIST_CLASS))\r\n }\r\n },\r\n _prepareDragModeConfig: function() {\r\n var columnChooserOptions = this.option(\"columnChooser\");\r\n return {\r\n noDataText: columnChooserOptions.emptyPanelText,\r\n activeStateEnabled: false,\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false,\r\n itemTemplate: function(data, index, item) {\r\n (0, _renderer.default)(item).text(data.text).parent().addClass(data.cssClass).addClass(COLUMN_CHOOSER_ITEM_CLASS)\r\n }\r\n }\r\n },\r\n _prepareSelectModeConfig: function() {\r\n var that = this;\r\n var selectionChangedHandler = function(e) {\r\n var visibleColumns = that._columnsController.getVisibleColumns().filter(function(item) {\r\n return !item.command\r\n });\r\n var isLastColumnUnselected = 1 === visibleColumns.length && !e.itemData.selected;\r\n if (isLastColumnUnselected) {\r\n e.component.selectItem(e.itemElement)\r\n } else {\r\n setTimeout(function() {\r\n that._columnsController.columnOption(e.itemData.id, \"visible\", e.itemData.selected)\r\n }, CLICK_TIMEOUT)\r\n }\r\n };\r\n return {\r\n selectNodesRecursive: false,\r\n showCheckBoxesMode: \"normal\",\r\n onItemSelectionChanged: selectionChangedHandler\r\n }\r\n },\r\n _columnOptionChanged: function(e) {\r\n var changeTypes = e.changeTypes;\r\n var optionNames = e.optionNames;\r\n var isSelectMode = \"select\" === this.option(\"columnChooser.mode\");\r\n this.callBase(e);\r\n if (isSelectMode) {\r\n var needPartialRender = optionNames.visible && 1 === optionNames.length && void 0 !== e.columnIndex;\r\n var needFullRender = optionNames.showInColumnChooser || optionNames.caption || optionNames.visible || changeTypes.columns && optionNames.all;\r\n if (needPartialRender) {\r\n this.render(null, {\r\n changeType: \"selection\",\r\n columnIndex: e.columnIndex\r\n })\r\n } else {\r\n if (needFullRender) {\r\n this.render(null, \"full\")\r\n }\r\n }\r\n }\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"columnChooser\":\r\n this._initializePopupContainer();\r\n this.render(null, \"full\");\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n getColumnElements: function() {\r\n var result = [];\r\n var $node;\r\n var isSelectMode = \"select\" === this.option(\"columnChooser.mode\");\r\n var chooserColumns = this._columnsController.getChooserColumns(isSelectMode);\r\n var $content = this._popupContainer && this._popupContainer.$content();\r\n var $nodes = $content && $content.find(\".dx-treeview-node\");\r\n if ($nodes) {\r\n chooserColumns.forEach(function(column) {\r\n $node = $nodes.filter(\"[data-item-id = '\" + column.index + \"']\");\r\n var item = $node.length ? $node.children(\".\" + COLUMN_CHOOSER_ITEM_CLASS).get(0) : null;\r\n result.push(item)\r\n })\r\n }\r\n return (0, _renderer.default)(result)\r\n },\r\n getName: function() {\r\n return \"columnChooser\"\r\n },\r\n getColumns: function() {\r\n return this._columnsController.getChooserColumns()\r\n },\r\n allowDragging: function(column, sourceLocation) {\r\n var columnVisible = column && column.allowHiding && (\"columnChooser\" !== sourceLocation || !column.visible && this._columnsController.isParentColumnVisible(column.index));\r\n return this.isColumnChooserVisible() && columnVisible\r\n },\r\n getBoundingRect: function() {\r\n var that = this;\r\n var container = that._popupContainer && that._popupContainer._container();\r\n if (container && container.is(\":visible\")) {\r\n var offset = container.offset();\r\n return {\r\n left: offset.left,\r\n top: offset.top,\r\n right: offset.left + container.outerWidth(),\r\n bottom: offset.top + container.outerHeight()\r\n }\r\n }\r\n return null\r\n },\r\n showColumnChooser: function() {\r\n if (!this._popupContainer) {\r\n this._initializePopupContainer();\r\n this.render()\r\n }\r\n this._popupContainer.show();\r\n if (this._isWinDevice()) {\r\n (0, _renderer.default)(\"body\").addClass(this.addWidgetPrefix(NOTOUCH_ACTION_CLASS))\r\n }\r\n },\r\n hideColumnChooser: function() {\r\n if (this._popupContainer) {\r\n this._popupContainer.hide()\r\n }\r\n },\r\n isColumnChooserVisible: function() {\r\n var popupContainer = this._popupContainer;\r\n return popupContainer && popupContainer.option(\"visible\")\r\n },\r\n publicMethods: function() {\r\n return [\"showColumnChooser\", \"hideColumnChooser\"]\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n columnChooser: {\r\n enabled: false,\r\n allowSearch: false,\r\n searchTimeout: 500,\r\n mode: \"dragAndDrop\",\r\n width: 250,\r\n height: 260,\r\n title: _message.default.format(\"dxDataGrid-columnChooserTitle\"),\r\n emptyPanelText: _message.default.format(\"dxDataGrid-columnChooserEmptyText\"),\r\n container: void 0\r\n }\r\n }\r\n },\r\n controllers: {\r\n columnChooser: ColumnChooserController\r\n },\r\n views: {\r\n columnChooserView: ColumnChooserView\r\n },\r\n extenders: {\r\n views: {\r\n headerPanel: {\r\n _getToolbarItems: function() {\r\n var items = this.callBase();\r\n return this._appendColumnChooserItem(items)\r\n },\r\n _appendColumnChooserItem: function(items) {\r\n var that = this;\r\n var columnChooserEnabled = that.option(\"columnChooser.enabled\");\r\n if (columnChooserEnabled) {\r\n var onClickHandler = function() {\r\n that.component.getView(\"columnChooserView\").showColumnChooser()\r\n };\r\n var onInitialized = function(e) {\r\n (0, _renderer.default)(e.element).addClass(that._getToolbarButtonClass(that.addWidgetPrefix(COLUMN_CHOOSER_BUTTON_CLASS)))\r\n };\r\n var hintText = that.option(\"columnChooser.title\");\r\n var toolbarItem = {\r\n widget: \"dxButton\",\r\n options: {\r\n icon: COLUMN_CHOOSER_ICON_NAME,\r\n onClick: onClickHandler,\r\n hint: hintText,\r\n text: hintText,\r\n onInitialized: onInitialized\r\n },\r\n showText: \"inMenu\",\r\n location: \"after\",\r\n name: \"columnChooserButton\",\r\n locateInMenu: \"auto\",\r\n sortIndex: 40\r\n };\r\n items.push(toolbarItem)\r\n }\r\n return items\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"columnChooser\":\r\n this._invalidate();\r\n args.handled = true;\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n isVisible: function() {\r\n var that = this;\r\n var columnChooserEnabled = that.option(\"columnChooser.enabled\");\r\n return that.callBase() || columnChooserEnabled\r\n }\r\n }\r\n },\r\n controllers: {\r\n columns: {\r\n allowMoveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {\r\n var columnChooserMode = this.option(\"columnChooser.mode\");\r\n var isMoveColumnDisallowed = \"select\" === columnChooserMode && \"columnChooser\" === targetLocation;\r\n return isMoveColumnDisallowed ? false : this.callBase(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation)\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.virtual_scrolling.js)\r\n * Version: 20.2.5\r\n * Build date: Fri Jan 15 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiGrid_core = require(\"./ui.grid_core.virtual_scrolling_core\");\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TABLE_CLASS = \"table\";\r\nvar 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 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 {\r\n if (rowRenderingMode === SCROLLING_MODE_STANDARD) {\r\n return false\r\n }\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 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 {\r\n if (that._isLoading) {\r\n that._isLoading = false;\r\n that.loadingChanged.fire(false)\r\n }\r\n }\r\n }\r\n };\r\n var result = {\r\n init: function(dataSource) {\r\n var that = this;\r\n that.callBase.apply(that, arguments);\r\n that._items = [];\r\n that._isLoaded = true;\r\n that._virtualScrollController = new _uiGrid_core.VirtualScrollController(that.component, {\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 dataSource.pageIndex(index)\r\n },\r\n isLoading: function() {\r\n return dataSource.isLoading() && !that.isCustomLoading()\r\n },\r\n pageCount: function() {\r\n return that.pageCount()\r\n },\r\n load: function() {\r\n return 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 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 (!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 var that = this;\r\n that._isLoading = false;\r\n that.loadingChanged.fire(false);\r\n that.callBase.apply(that, arguments)\r\n },\r\n _handleDataChanged: function(e) {\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 that = this;\r\n if (!that.option(\"legacyRendering\") && isVirtualMode(that) && !operationTypes.reload && operationTypes.skip && that._renderTime < that.option(\"scrolling.renderingThreshold\")) {\r\n options.delay = void 0\r\n }\r\n that.callBase.apply(that, arguments)\r\n },\r\n items: function() {\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 (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 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 (virtualScrollController) {\r\n var d = new _deferred.Deferred;\r\n this.callBase.apply(this, arguments).done(function(r) {\r\n var delayDeferred = virtualScrollController._delayDeferred;\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 var that = this;\r\n var storeLoadOptions = options.storeLoadOptions;\r\n var dataSource = that._dataSource;\r\n if (operationTypes.reload) {\r\n that._virtualScrollController.reset();\r\n dataSource.items().length = 0;\r\n that._isLoaded = false;\r\n _updateLoading(that);\r\n that._isLoaded = true;\r\n if (isAppendMode(that)) {\r\n that.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(that.pageIndex());\r\n if (dataSource.paginate()) {\r\n options.pageIndex = that.pageIndex();\r\n storeLoadOptions.skip = that.pageIndex() * that.pageSize()\r\n }\r\n }\r\n } else {\r\n if (isAppendMode(that) && storeLoadOptions.skip && that._skipCorrection < 0) {\r\n storeLoadOptions.skip += that._skipCorrection\r\n }\r\n }\r\n return that.callBase.apply(that, arguments)\r\n },\r\n dispose: function() {\r\n this._virtualScrollController.dispose();\r\n this.callBase.apply(this, arguments)\r\n }\r\n };\r\n [\"virtualItemsCount\", \"getContentOffset\", \"getVirtualContentSize\", \"setContentSize\", \"setViewportPosition\", \"getViewportItemIndex\", \"setViewportItemIndex\", \"getItemIndexByPosition\", \"viewportSize\", \"viewportItemSize\", \"getItemSize\", \"getItemSizes\", \"pageIndex\", \"beginPageIndex\", \"endPageIndex\", \"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 getRowParent = function(row) {\r\n return (0, _renderer.default)(row).parent(\".\" + className).get(0)\r\n };\r\n var tBodies = $emptyRows.toArray().map(getRowParent).filter(function(row) {\r\n return row\r\n });\r\n if (tBodies.length) {\r\n $emptyRows = (0, _renderer.default)(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, _this = this;\r\n var dataController = this.getController(\"data\");\r\n this.callBase();\r\n dataController.pageChanged.add(function() {\r\n _this.scrollToPage(dataController.pageIndex())\r\n });\r\n null === (_dataController$state = dataController.stateLoaded) || void 0 === _dataController$state ? void 0 : _dataController$state.add(function() {\r\n _this._scrollToCurrentPageOnResize()\r\n });\r\n this._scrollToCurrentPageOnResize()\r\n },\r\n _scrollToCurrentPageOnResize: function() {\r\n var _this2 = this;\r\n var dataController = this.getController(\"data\");\r\n if (!this.option(\"legacyRendering\") && dataController.pageIndex() > 0) {\r\n var resizeHandler = function resizeHandler() {\r\n _this2.resizeCompleted.remove(resizeHandler);\r\n _this2.scrollToPage(dataController.pageIndex())\r\n };\r\n this.resizeCompleted.add(resizeHandler)\r\n }\r\n },\r\n scrollToPage: function(pageIndex) {\r\n var that = this;\r\n var dataController = that._dataController;\r\n var pageSize = dataController ? dataController.pageSize() : 0;\r\n var scrollPosition;\r\n if (isVirtualMode(that) || isAppendMode(that)) {\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 that.scrollTo({\r\n y: scrollPosition,\r\n x: that._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)) {\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 _renderContent: function(contentElement, tableElement) {\r\n var that = this;\r\n var virtualItemsCount = that._dataController.virtualItemsCount();\r\n if (virtualItemsCount && that.option(\"legacyRendering\")) {\r\n if ((0, _window.hasWindow)()) {\r\n tableElement.addClass(that.addWidgetPrefix(TABLE_CONTENT_CLASS))\r\n }\r\n if (!contentElement.children().length) {\r\n contentElement.append(tableElement)\r\n } else {\r\n contentElement.children().first().replaceWith(tableElement)\r\n }\r\n if (1 === contentElement.children(\"table\").length) {\r\n contentElement.append(that._createTable());\r\n that._contentHeight = 0\r\n }\r\n return contentElement\r\n }\r\n return that.callBase.apply(that, arguments)\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(function(rowElement) {\r\n var $rowElement = (0, _renderer.default)(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(function(_, item) {\r\n var rowOptions = (0, _renderer.default)(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 that = this;\r\n var $freeSpaceRowElements;\r\n var contentElement = that._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 = that._getBodies(tableElement);\r\n if (!that.option(\"legacyRendering\") && 1 === $tBodies.length) {\r\n that._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 = that._getFreeSpaceRowElements(contentTable);\r\n removeEmptyRows($freeSpaceRowElements, FREESPACE_CLASS);\r\n if (change.removeCount) {\r\n that._removeRowsElements(contentTable, change.removeCount, changeType)\r\n }\r\n that._restoreErrorRow(contentTable)\r\n } else {\r\n that.callBase.apply(that, arguments)\r\n }\r\n that._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 (0, _position.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 (!(0, _type.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 that = this;\r\n var dataController = that._dataController;\r\n var rowHeight = that._rowHeight || 20;\r\n dataController.viewportItemSize(rowHeight);\r\n if (!that.option(\"legacyRendering\") && (isVirtualMode(that) || isVirtualRowRendering(that))) {\r\n if (!isRender) {\r\n var rowHeights = that._getRowHeights();\r\n var correctedRowHeights = that._correctRowHeights(rowHeights);\r\n dataController.setContentSize(correctedRowHeights)\r\n }\r\n var top = dataController.getContentOffset(\"begin\");\r\n var bottom = dataController.getContentOffset(\"end\");\r\n var $tables = that.getTableElements();\r\n var $virtualRows = $tables.children(\"tbody\").children(\".\" + VIRTUAL_ROW_CLASS);\r\n removeEmptyRows($virtualRows, VIRTUAL_ROW_CLASS);\r\n $tables.each(function(index) {\r\n var isFixed = index > 0;\r\n that._isFixedTableRendering = isFixed;\r\n that._addVirtualRow((0, _renderer.default)(this), isFixed, \"top\", top);\r\n that._addVirtualRow((0, _renderer.default)(this), isFixed, \"bottom\", bottom);\r\n that._isFixedTableRendering = false\r\n })\r\n } else {\r\n (0, _common.deferUpdate)(function() {\r\n that._updateContentPositionCore()\r\n })\r\n }\r\n },\r\n _updateContentPositionCore: function() {\r\n var that = this;\r\n var contentHeight;\r\n var $tables;\r\n var $contentTable;\r\n var rowHeight = that._rowHeight || 20;\r\n var virtualItemsCount = that._dataController.virtualItemsCount();\r\n if (virtualItemsCount) {\r\n var contentElement = that._findContentElement();\r\n $tables = contentElement.children();\r\n $contentTable = $tables.eq(0);\r\n var virtualTable = $tables.eq(1);\r\n that._contentTableHeight = $contentTable[0].offsetHeight;\r\n that._dataController.viewportItemSize(rowHeight);\r\n that._dataController.setContentSize(that._contentTableHeight);\r\n contentHeight = that._dataController.getVirtualContentSize();\r\n var top = that._dataController.getContentOffset();\r\n (0, _common.deferRender)(function() {\r\n (0, _translator.move)($contentTable, {\r\n left: 0,\r\n top: top\r\n });\r\n var isRenderVirtualTableContentRequired = that._contentHeight !== contentHeight || 0 === contentHeight || !that._isTableLinesDisplaysCorrect(virtualTable) || !that._isColumnElementsEqual($contentTable.find(\"col\"), virtualTable.find(\"col\"));\r\n if (isRenderVirtualTableContentRequired) {\r\n that._contentHeight = contentHeight;\r\n that._renderVirtualTableContent(virtualTable, contentHeight)\r\n }\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 (0, _iterator.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 that = this;\r\n var columns = that._columnsController.getVisibleColumns();\r\n var html = that._createColGroup(columns).prop(\"outerHTML\");\r\n var freeSpaceCellsHtml = \"\";\r\n var columnLinesClass = that.option(\"showColumnLines\") ? COLUMN_LINES_CLASS : \"\";\r\n var createFreeSpaceRowHtml = function(height) {\r\n return \"