{"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/ui/toolbar/ui.toolbar.strategy.action_sheet.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/toolbar/ui.toolbar.menu.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/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/toolbar/ui.toolbar.strategy.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/grid_core/ui.grid_core.search.js","webpack:///./node_modules/devextreme/exporter/excel/excel.cell_alignment_helper.js","webpack:///./node_modules/devextreme/ui/toolbar/ui.toolbar.strategy.drop_down_menu.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/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/ui/toolbar.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:///./src/views/maestros/ler/list/ler-list.html","webpack:///./src/store/modules/ler-code.module.ts","webpack:///./src/shared/dtos/ler-code.ts","webpack:///./src/views/maestros/ler/list/ler-list.ts","webpack:///./src/views/maestros/ler/list/ler-list.ts?b67a","webpack:///./src/views/maestros/ler/list/ler-list.vue","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/devextreme/color.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/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","_dom_adapter","_events_engine","_guid","_component_registrator","_dom","_element","_fx","_position","_devices","_index","_overlay","_deferred","_inheritsLoose","subClass","superClass","prototype","create","constructor","_setPrototypeOf","o","p","setPrototypeOf","__proto__","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","_proto","getShowEvent","showEventOption","isObject","getShowDelay","delay","_getDefaultOptions","showEvent","closeOnOutsideClick","position","at","my","onShowing","onShown","onSubmenuCreated","onHiding","onHidden","onPositioning","submenuDirection","onLeftFirstItem","onLeftLastItem","onCloseRootSubmenu","onExpandLastSubmenu","_defaultOptionsRules","device","animation","_initActions","_actions","action","_createActionByOption","_setOptionsByReference","_optionsByReference","selectedItem","_focusInHandler","_itemContainer","_eventBindingTarget","itemsContainer","_supportedKeys","selectItem","$item","_isSelectionEnabled","space","escape","_getActiveItem","$availableItems","_getAvailableItems","$focusedItem","$hoveredItem","$hoveredItemContainer","closest","_moveFocus","location","$newTarget","$items","_getItemsByLocation","$oldTarget","$activeItemHighlighted","_prevItem","_setFocusedElement","is","first","_nextItem","_hideSubmenuHandler","_expandSubmenuHandler","getPublicElement","$activeItem","_getAriaTarget","_refreshActiveDescendant","$target","$curItem","$parentItem","parents","_hideSubmenusOnSameLevel","_hideSubmenu","_getItemData","node","_dataAdapter","getNodeByItem","isItemHasSubmenu","_hasSubmenu","$submenu","hasClass","_showSubmenu","_clean","remove","_detachShowContextMenuEvents","_getTarget","_initMarkup","_render","_renderVisibility","_addWidgetClass","_renderContentImpl","_attachShowContextMenuEvents","_attachKeyboardEvents","_keyboardListenerId","_focusTarget","_renderContextMenuOverlay","overlayOptions","_getOverlayOptions","appendTo","_$element","$overlayContent","_addCustomCssClass","_addPlatformDependentClass","_attachContextMenuEvent","_itemContextMenuHandler","stopPropagation","current","phone","eventName","addNamespace","_showContextMenuEventHandler","off","getDocument","contextMenuAction","_createAction","_show","event","validatingTargetName","handler","currentTarget","isRenderer","nodeType","isWindow","on","_hoverEndHandler","_renderDimensions","_renderContainer","$wrapper","submenuContainer","$holder","$itemsContainer","_renderSubmenuItems","$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","_isSubmenuVisible","_drawSubmenu","$expandedItems","siblings","removeClass","_hideSubmenuGroup","_hideSubmenuCore","$itemElement","show","submenuPosition","_getSubmenuPosition","stop","setup","to","_animate","$container","animate","toLowerCase","$rootItemWrapper","h","v","_updateSubmenuVisibilityOnClick","actionArgs","shouldRenderSubmenu","notCloseMenuOnItemClick","closeMenuOnClick","disabled","_updateSelectedItemOnClick","$prevSubmenu","canceled","$curSubmenu","_this5","contains","splice","_stopAnimate","_this6","_","_visibilityChanged","_optionChanged","previousValue","showing","_hide","_toggleVisibility","jQEvent","promise","Deferred","reject","_positionContextMenu","_widgetClass","_renderFocusState","_attachHoverEvents","_attachClickEvent","getRootNodes","_setAriaAttributes","_overlayContentId","setAria","role","_cleanAriaAttributes","_getContextMenuPosition","isInitialPosition","_isInitialOptionValue","positioningAction","preventDefault","_refresh","lastPosition","_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","_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","lastLevelOnly","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","registerCellFormat","cellFormat","cellFormatTag","registerFill","registerFont","registerNumberFormat","areEqual","copyCellFormat","copy","generateCellFormatsXml","cellFormatTagsAsXmlStringsArray","tag","toXml","fill","fillTag","generateFillsXml","tagsAsXmlStringsArray","font","fontTag","generateFontsXml","xmlStringsArray","_convertNumberFormatIndexToId","CUSTOM_FORMAT_ID_START_VALUE","numberFormat","ID_PROPERTY_NAME","generateNumberFormatsXml","_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","_typeof","Symbol","iterator","_element_data","_double_click","iteratorUtils","_interopRequireWildcard","_uiGrid_core3","_getRequireWildcardCache","WeakMap","cache","has","newObj","hasPropertyDescriptor","hasOwnProperty","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","_navigateTo","getPageIndexByKey","reload","fail","visibleRowIndex","isVirtualRowRenderingMode","_navigateToVirtualRow","_navigateToVisibleRow","_triggerUpdateFocusedRow","scrollToRowElement","rowsScrollController","_rowsScrollController","getIndexByKey","getItemOffset","triggerUpdateFocusedRow","y","loadedRowIndex","_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","_deleteRowCore","rowKey","visibleRows","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","_showCheckboxes","_isRecursiveSelection","_removeSelection","_initDataAdapter","_updateSearch","_repaintContainer","repaint","_updateDataAdapter","_getDataAdapterOptions","searchValue","searchMode","searchExpr","_searchEditor","editorOptions","_getSearchEditorOptions","rootNodes","_renderEmptyMessage","_fireContentReadyAction","isSearchMode","_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","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","_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","getDataSource","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","paginate","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","_uiToolbar","_action_sheet","ActionSheetStrategy","_getMenuItemTemplate","_toolbar","_hasVisibleMenuItems","_menuWidgetClass","_menuContainer","_widgetOptions","_$button","_menuButtonOptions","_toggleMenu","_menu","_menuShown","_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","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","_needSheetPr","getGroupLevel","_calculateWidth","pixelsWidth","_prepareStyleData","styles","getStyles","_colsArray","fonts","theme","_prepareCellData","_cellsArray","_createXMLRelationships","xmlRelationships","_createXMLRelationship","_getWorkbookContent","_getContentTypesContent","_generateStylesXML","folder","_zip","XML","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","_itemClickHandler","expandEventName","_getEventNameByOption","expandByClick","_expandEventHandler","select","checkboxInstance","_getCheckBoxInstance","currentState","_updateItemSelection","toggleExpandedNestedItems","state","rootItem","_toggleExpandedNestedItems","enter","asterisk","minus","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","_onSelectAllCheckboxValueChanged","before","_toggleSelectAll","toggleSelectAll","_updateItemsUI","$checkbox","_changeCheckboxValue","_disabledGetter","_toggleNodeDisabledState","toggleNodeDisabledState","checkbox","_itemOptionChanged","property","_isLastSelectedBranch","selectedNodesKeys","keyIndex","_isLastRequired","isSingleMode","getSelectedNodeKeys","_this10","selectedKeys","_fireItemSelectionChanged","needFireSelectAllChanged","initiator","_findItemElementByItem","_this11","nodeSelection","selectAllCheckbox","$parentNode","parentValue","_itemEventHandlerImpl","_extendActionArgs","_createEventHandler","_itemHoldHandler","_itemClass","_itemDataKey","clickSelector","pointerDownSelector","pointerDownEvent","$itemContainer","_itemPointerDownHandler","isDefaultPrevented","_updateSelectionToFirstItem","_updateSelectionToLastItem","_this12","_updateFocusState","_setFocusedItemTimeout","_setFocusedItem","_findNonDisabledNodes","$nodes","_nodeElements","$prevItem","prevItemElement","_getNodeItemElement","$nextItem","nextItemElement","$firstItem","$lastItem","_expandFocusedContainer","_collapseFocusedContainer","$focusedNode","_getClosestNonDisabledNode","nodeElement","collapsedNode","encodeURI","decodeURI","_this13","resolveWith","unselectItem","expandItem","collapseItem","getNodes","getTreeNodes","getSelectedNodes","_this14","getSelectedNodesKeys","selectAll","unselectAll","dataAdapter","getExpandedNodesKeys","scrollToItem","keyOrItemOrElement","_this15","nodeKeysToExpand","scrollCallback","_expandNodes","scrollToElementTopLeft","keysToExpand","_this16","resultCallback","callbacksByNodes","_uiList","TOOLBAR_MENU_ACTION_CLASS","TOOLBAR_HIDDEN_BUTTON_CLASS","TOOLBAR_HIDDEN_BUTTON_GROUP_CLASS","TOOLBAR_MENU_SECTION_CLASS","TOOLBAR_MENU_LAST_SECTION_CLASS","ToolbarMenu","ListBase","_renderSections","_getSections","_itemElements","sectionName","$section","_updateSections","$sections","itemContainer","$after","_getItemTemplateName","widget","isAction","menuTemplate","menuItemTemplate","accessibility","instance","executeKeyDown","_icon","_uiCollection_widget","_bindable_template","HierarchicalCollectionWidget","selectedExpr","disabledExpr","itemsExpr","parentIdExpr","expandedExpr","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","_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","_getPlainItems","_collectionWidget","getMenuItems","_stringifyItem","_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","$message","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","_button","abstract","TOOLBAR_MENU_CONTAINER_CLASS","TOOLBAR_MENU_BUTTON_CLASS","ToolbarStrategy","toolbar","_renderMenuButton","_renderWidget","itemClickAction","itemTemplate","_getTemplateByOption","$menu","renderMenuItems","optionGetter","overflowGetter","itemVisible","functionsAsIs","itemOverflow","_getMenuItems","_updateMenuVisibility","buttonOptions","_renderMenuButtonContainer","_$menuButtonContainer","onClick","_menuButtonClickHandler","$afterSection","_$afterSection","_buttonClass","toggleMenuVisibility","getMenuWidget","widgetOption","handleToolbarVisibilityChange","_dialog","_form","_hold","iconUtils","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","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","buttons","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","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","popupOptions","fullScreen","toolbarItems","_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","android","$editCell","_checkAndDeleteRow","confirmDelete","confirmDeleteMessage","confirmDeleteTitle","showDialogTitle","confirm","confirmResult","_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","_this21","_getRowIndicesForCascadeUpdating","skipCurrentRow","addDeferred","_this22","_prepareChange","_options$row","setCellValueResult","setCellValue","displayValueMap","_updateRowValues","updateFieldValue","forceUpdateRow","_this23","_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","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","_this24","_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","_isMenuHorizontal","_hoverStartHandler","hoverStartAction","submenu","containerOffset","vLocation","hLocation","rootOffset","offsetLeft","rootWidth","rootHeight","submenuWidth","submenuHeight","isOverlayVisible","getOverlayContent","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","_this$_footerView","_widths","_rowsView$getTableEle","headersTableElement","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","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","_isAdaptivityEnabled","$menuItems","_getSummaryItemsWidth","containerWidth","_toggleAdaptiveMode","_visibleSubmenu","_initAdaptivity","_renderHamburgerButton","_hamburger","_toggleTreeView","_toggleHamburgerActiveState","$menuItemsContainer","$adaptiveElements","_hideVisibleSubmenu","_treeView","_removeAdaptivity","_$adaptiveContainer","_treeviewItemClickHandler","_getAdaptiveOverlayOptions","rtl","_getTreeViewOptions","menuOptions","optionsToTransfer","actionsToTransfer","$hamburger","_wrapper","_getDelay","delayType","_keyboardHandler","_createSubmenu","_renderBorderElement","_getKeyboardListeners","$submenuContainer","_getSubmenuOptions","_parentKey","_clearTimeouts","getSubmenuPosition","_attachSubmenuHandlers","$submenuTarget","showSubmenuMode","onFocusedItemChanged","onSelectionChanged","_nestedItemOnSelectionChangedHandler","_nestedItemOnItemClickHandler","_nestedItemOnItemRenderedHandler","_moveMainMenuFocus","_getShowFirstSubmenuMode","_isDesktopDevice","$currentItem","$newItem","addedItems","_clearSelectionInSubmenus","_clearRootSelection","targetSubmenu","cleanAllSubmenus","isOtherItem","$selectedItem","_selectedItemClass","selectedItemData","_clearSelectedItems","$prevSelectedItem","prevSelectedItemData","$submenuOverlayContent","submenus","submenuMouseLeaveName","_submenuOnShowingHandler","_submenuOnShownHandler","_submenuOnHidingHandler","_submenuOnHiddenHandler","_submenuMouseLeaveHandler","$border","relatedTarget","_getSubmenuByRootElement","_hideSubmenuAfterTimeout","isRootItemHovered","isSubmenuItemHovered","hoveredElementFromSubMenu","isHorizontalMenu","$closestItem","mouseMoveEventName","_getItemElementByEventArgs","isSelectionActive","_isItemDisabled","_getSubmenuByElement","_itemMouseMoveHandler","_showSubmenuTimer","eventArg","_hideSubmenuTimer","_hoveredRootItem","pointers","_changeSubmenusOption","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","_$items","stringNormalizer","normalizedSearchText","$contents","_highlightSearchTextCore","$textNode","$searchTextSpan","firstContentElement","substr","after","createTextNode","_highlightSearchText","isEquals","textNodes","textNode","_highlightTimer","cellAlignmentHelper","_uiToolbar2","_drop_down_menu","MENU_INVISIBLE_CLASS","DropDownMenuStrategy","close","menuWidget","popupPosition","isMenuVisible","_toggleMenuVisibility","_config","_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","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","getVisibleIndexByColumn","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","_selectByItem","nodeToSelect","selectedKey","selectable","_renderInkRipple","_inkRipple","_toggleActiveState","showWave","hideWave","defaultValue","_initEditStrategy","Strategy","_editStrategy","_itemWrapperSelector","_showSubmenusTimeout","_getSubmenuDelay","$itemElements","_addExpandedClass","_this$option","hasIcons","firstVisibleIndex","nextGroupFirstIndex","isVisibleNode","isBeginGroup","beginGroup","_refreshItem","_itemIndexKey","hasText","hasIcon","hasSubmenu","_getItemContent","$itemContent","_postprocessRenderItem","selectedIndex","_selectedGetter","_isItemSelectable","_skipHandling","itemClickActionHandler","_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","showCloseButton","dragEnabled","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","dateBox","dxDateBox","defaultEnterKeyHandler","dxTextArea","showValidationMark","_selectors","_validation_engine","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","$overlayContainer","tooltipOptions","$buttonElement","boundaryOffset","_positionedHandler","_hideFixedGroupCell","$nextFixedRowElement","$groupCellElement","nextRowOptions","visibility","__skipPositionProcessing","isRevertButton","needRepaint","normalizedPosition","_normalizeValidationMessagePositionAndMaxWidth","_showValidationMessage","messages","revertTooltip","editorPopup","myPosition","atPosition","errorMessageText","$overlayElement","_shiftValidationMessageIfNeed","visibleTableWidth","$overlayContentElement","validationMessageWidth","needMaxWidth","boundaryNonFixedColumnsInfo","$revertContent","contentOffset","revertContentOffset","_getTooltipsSelector","invalidMessageClass","revertTooltipClass","skipValidator","updateCellState","_change$data","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","nodeKey","child","selectedItemsCount","invisibleItemsCount","isChildInvisible","childState","_markChildren","_removeNode","_addNode","_updateFields","selectRecursive","isSingleModeUnselect","_isSingleModeUnselect","selectionState","lastSelectedKey","_filterDataStructure","_createCriteria","getOperationBySearchMode","matches","lookForParents","queryByOptions","_uiToolbarStrategy","_uiToolbarStrategy2","_child_default_template","STRATEGIES","actionSheet","dropDownMenu","TOOLBAR_AUTO_HIDE_ITEM_CLASS","TOOLBAR_AUTO_HIDE_TEXT_CLASS","TOOLBAR_HIDDEN_ITEM","Toolbar","submenuType","menuContainer","dimension","_menuStrategy","_initTemplates","actionSheetItem","ChildDefaultTemplate","_renderMenu","_postProcessRenderItems","_hideOverflowItems","_getItemsWidth","_$beforeSection","_$centerSection","elementWidth","overflowItems","itemsWidth","_isMenuItem","$hiddenItems","_restoreItems","$itemMarkup","merge","_renderMenuStrategy","strategyName","_requireDropDownStrategy","strategy","_arrangeItems","_isToolbarItem","_changeMenuOption","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","_visibility_change","TOOLBAR_BUTTON_CLASS","TOOLBAR_ARIA_LABEL","HeaderPanel","_getButtonContainer","specificClass","secondClass","_getToolbarOptions","toolbarOptions","itemRenderedCallback","_toolbarOptions","$headerPanel","$toolbar","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","shouldPreventScroll","KeyboardNavigationController","_selectionController","_headerPanel","_updateFocusTimeout","_fastEditingStarted","_canceledCellPosition","elementFocused","setupFocusedView","_isNeedScroll","_focusedView","_initViewHandlers","_initDocumentHandlers","rowsViewFocusHandler","isRelatedTargetInRowsView","isCommandButton","_isEventInCurrentGrid","$focusedCell","_getFocusedCell","$rowsView","isFullUpdate","isFocusedViewCorrect","needUpdateFocus","isFocusedElementCorrect","_initPointerEventHandler","_initKeyDownHandler","_setRowsViewAttributes","_isNeedFocus","_isHiddenFocus","isCurrentRowsViewClick","isEditorOverlay","isColumnResizing","targetInsideFocusedView","_resetFocusedCell","_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","_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","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","_renderFocusByChange","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","EXPAND_ARIA_NAME","COLLAPSE_ARIA_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","widthOption","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","updateCommandAdaptiveAriaLabel","setCommandAdaptiveAriaLabel","labelName","$adaptiveCommand","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","oldKey","rowIndexDelta","getRowIndexDelta","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","_vm","_h","$createElement","_self","staticClass","attrs","_v","_s","$t","lerCodeList","rowInserted","rowUpdated","rowRemoved","initNewRow","staticRenderFns","lerCodes","hasToken","lerCode","res","commit","post","dispatch","put","apiDeleteLerCode","Format","lerCodeDetail","delete","namespaced","dynamic","addHidden","loading","$tc","getLerCodes","insertarLerCode","modificarLerCode","eliminarLerCode","components","DxDataGrid","DxSelection","DxPaging","DxHeaderFilter","DxEditing","DxColumn","DxFilterRow","DxFilterPanel","DxExport","DxColumnChooser","VCard","VCardText","VSpacer","VToolbar","VToolbarTitle","patternFillHelper","standardColorNames","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","standardColorTypes","re","process","colorString","s","hsvToRgb","hslToRgb","_round","Color","baseColor","parseColor","colorIsInvalid","normalize","g","hsv","toHsvFromRgb","hsl","toHslFromRgb","colorComponent","def","toHexFromRgb","H","S","delta","V","vMin","vInc","vDec","calculateHue","convertTo01Bounds","maxMinSum","makeColorTint","colorPart","colorTint","modifyColorTint","hueToRgb","q","isIntegerBetweenMinAndMax","highlight","alter","toHex","darken","blend","blendColor","other","getPureColor","isValidHex","hex","isValidRGB","isValidAlpha","fromHSL","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","w","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","platform","_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","self","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","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","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","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","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","byLoaded","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","DxSearchPanel","DxScrolling","DxRowDragging","DxRequiredRule","DxRemoteOperations","DxRangeRule","DxPosition","DxPopup","DxPatternRule","DxPager","DxOperationDescriptions","DxOffset","DxNumericRule","DxMy","DxMasterDetail","DxLookup","DxLoadPanel","DxLabel","DxKeyboardNavigation","DxHide","DxGroupPanel","DxGroupOperationDescriptions","DxGroupItem","DxGroupingTexts","DxGrouping","DxFormItem","DxFormat","DxForm","DxFilterPanelTexts","DxFilterOperationDescriptions","DxFilterBuilderPopup","DxFilterBuilder","DxFieldLookup","DxField","DxExportTexts","DxEmailRule","DxEditingTexts","DxDataGridHeaderFilterTexts","DxDataGridHeaderFilter","DxCustomRule","DxCustomOperation","DxCursorOffset","DxCompareRule","DxColumnLookup","DxColumnHeaderFilter","DxColumnFixingTexts","DxColumnFixing","DxCollision","DxColCountByScreen","DxButton","DxBoundaryOffset","DxAt","DxAsyncRule","DxAnimation","data_grid_1","index_1","index_2","createComponent","props","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","title","columnFixingTexts","fix","leftPosition","rightPosition","unfix","comparisonTarget","comparisonType","dataGridHeaderFilterTexts","allowExportSelectedData","excelFilterEnabled","excelWrapTextEnabled","ignoreExcelErrors","exportTexts","exportAll","exportSelectedRows","exportTo","fieldLookup","bindingOptions","onFocusIn","onFocusOut","minHeight","onResize","onResizeEnd","onResizeStart","onTitleRendered","shadingColor","titleTemplate","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","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","scale","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","pixelRatio","svgToCanvas","setTransform","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","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","_getPages","currentPage","firstValue","showMoreButton","pagesCount","_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","_getGroupValue","_correctCellIndex","_initOptions","_exportController","_getColumns","_initialColumnWidthsByColumnIndex","_selectedRowsOnly","_selectionOnly","_getSelectedItems","_getAllItems","isHeadersVisible","customizeExportData","gridCell","initialColumnWidthsByColumnIndex","selectedRowsOnly","getHeaderStyles","getGroupRowStyle","getColumnStyles","columnStyles","_getTotalCellStyleId","_this$getColumns$cell","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","_processUnExportedItems","isDetailExpandColumn","selectedRowData","getExportFormat","getDataProvider","columnsLastRowVisibleColumns","exportToExcel","_isSelectedRows","callbackList","editingChanged","_appendExportItems","exportOptions","exportItems","_renderButton","_renderExportMenu","_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","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","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","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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I,GACJC,GAAI,GACJC,GAAI,GACJzoG,GAAI,GACJ0oG,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,IAAK,GACLC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,IAAK,IACLC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,GAAI,IACJ,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,SAAU,KACV,QAAS,KACT,aAAc,KACd,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,QAAS,KACT,aAAc,KACd,QAAS,KACT,SAAU,KACV,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,SAAU,KACV,SAAU,KACV,QAAS,KACT,QAAS,KACT,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,aAAc,KACd,aAAc,KACd,cAAe,KACf,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,SAAU,KACV,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,MACT,QAAS,MACT,QAAS,MACT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","file":"js/chunk-b15e334c.347473d0.js","sourcesContent":["/**\r\n * DevExtreme (ui/shared/filtering.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _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 || this[currentSortableName]) && $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 = !allowReordering || !isDataRow;\r\n null === (_rowDragging$onDragSt = rowDragging.onDragStart) || void 0 === _rowDragging$onDragSt ? void 0 : _rowDragging$onDragSt.call(rowDragging, e)\r\n },\r\n onDragEnter: 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, allowReordering && !rowDragging.showDragIcons)\r\n }\r\n return $content\r\n },\r\n _resizeCore: function() {\r\n this.callBase.apply(this, arguments);\r\n var offset = this._dataController.getRowIndexOffset();\r\n [this._sortable, this._sortableFixed].forEach(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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _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 _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\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\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 _inheritsLoose(ContextMenu, _MenuBase);\r\n\r\n function ContextMenu() {\r\n return _MenuBase.apply(this, arguments) || this\r\n }\r\n var _proto = ContextMenu.prototype;\r\n _proto.getShowEvent = 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 _proto.getShowDelay = function(showEventOption) {\r\n return (0, _type.isObject)(showEventOption) && showEventOption.delay\r\n };\r\n _proto._getDefaultOptions = function() {\r\n return (0, _extend.extend)(_MenuBase.prototype._getDefaultOptions.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 _proto._defaultOptionsRules = function() {\r\n return _MenuBase.prototype._defaultOptionsRules.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 _proto._initActions = 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 _proto._setOptionsByReference = function() {\r\n _MenuBase.prototype._setOptionsByReference.call(this);\r\n (0, _extend.extend)(this._optionsByReference, {\r\n animation: true,\r\n selectedItem: true\r\n })\r\n };\r\n _proto._focusInHandler = function() {};\r\n _proto._itemContainer = function() {\r\n return this._overlay ? this._overlay.$content() : (0, _renderer.default)()\r\n };\r\n _proto._eventBindingTarget = function() {\r\n return this._itemContainer()\r\n };\r\n _proto.itemsContainer = function() {\r\n return this._overlay ? this._overlay.$content() : void 0\r\n };\r\n _proto._supportedKeys = 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)(_MenuBase.prototype._supportedKeys.call(this), {\r\n space: selectItem,\r\n escape: this.hide\r\n })\r\n };\r\n _proto._getActiveItem = 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 _MenuBase.prototype._getActiveItem.call(this)\r\n };\r\n _proto._moveFocus = 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 _MenuBase.prototype._moveFocus.call(this, location)\r\n }\r\n };\r\n _proto._setFocusedElement = function($element) {\r\n if ($element && 0 !== $element.length) {\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($element))\r\n }\r\n };\r\n _proto._getItemsByLocation = 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 _proto._getAriaTarget = function() {\r\n return this.$element()\r\n };\r\n _proto._refreshActiveDescendant = function() {\r\n if ((0, _type.isDefined)(this._overlay)) {\r\n var $target = this._overlay.$content();\r\n _MenuBase.prototype._refreshActiveDescendant.call(this, $target)\r\n }\r\n };\r\n _proto._hideSubmenuHandler = 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 _proto._expandSubmenuHandler = 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 _proto._clean = 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 _MenuBase.prototype._clean.call(this)\r\n };\r\n _proto._initMarkup = function() {\r\n this.$element().addClass(DX_HAS_CONTEXT_MENU_CLASS);\r\n _MenuBase.prototype._initMarkup.call(this)\r\n };\r\n _proto._render = function() {\r\n _MenuBase.prototype._render.call(this);\r\n this._renderVisibility(this.option(\"visible\"));\r\n this._addWidgetClass()\r\n };\r\n _proto._renderContentImpl = function() {\r\n this._detachShowContextMenuEvents(this._getTarget());\r\n this._attachShowContextMenuEvents()\r\n };\r\n _proto._attachKeyboardEvents = function() {\r\n !this._keyboardListenerId && this._focusTarget().length && _MenuBase.prototype._attachKeyboardEvents.call(this)\r\n };\r\n _proto._renderContextMenuOverlay = 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 _proto._itemContextMenuHandler = function(e) {\r\n _MenuBase.prototype._itemContextMenuHandler.call(this, e);\r\n e.stopPropagation()\r\n };\r\n _proto._addPlatformDependentClass = function($element) {\r\n if (_devices.default.current().phone) {\r\n $element.addClass(DX_MENU_PHONE_CLASS)\r\n }\r\n };\r\n _proto._detachShowContextMenuEvents = 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 _proto._attachShowContextMenuEvents = 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 _proto._hoverEndHandler = function(e) {\r\n _MenuBase.prototype._hoverEndHandler.call(this, e);\r\n e.stopPropagation()\r\n };\r\n _proto._renderDimensions = function() {};\r\n _proto._renderContainer = 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 = _MenuBase.prototype._renderContainer.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 _proto._renderSubmenuItems = 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 _proto._getOverlayOptions = 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 _proto._overlayShownActionHandler = function(arg) {\r\n this._actions.onShown(arg)\r\n };\r\n _proto._overlayHidingActionHandler = 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 _proto._overlayHiddenActionHandler = function(arg) {\r\n this._actions.onHidden(arg)\r\n };\r\n _proto._closeOnOutsideClickHandler = 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 _proto._getActiveItemsContainer = function(target) {\r\n return (0, _renderer.default)(target).closest(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS))\r\n };\r\n _proto._getItemsContainers = function() {\r\n return this._overlay._$content.find(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS))\r\n };\r\n _proto._searchActiveItem = function(target) {\r\n return (0, _renderer.default)(target).closest(\".\".concat(DX_MENU_ITEM_CLASS)).eq(0)\r\n };\r\n _proto._isIncludeOverlay = 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 _proto._hideAllShownChildSubmenus = 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 _proto._showSubmenu = 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 _MenuBase.prototype._showSubmenu.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 _proto._hideSubmenusOnSameLevel = 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 _proto._hideSubmenuGroup = function($submenu) {\r\n if (this._isSubmenuVisible($submenu)) {\r\n this._hideSubmenuCore($submenu)\r\n }\r\n };\r\n _proto._isSubmenuVisible = function($submenu) {\r\n return \"visible\" === $submenu.css(\"visibility\")\r\n };\r\n _proto._drawSubmenu = 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 _proto._animate = function($container, options) {\r\n _fx.default.animate($container, options)\r\n };\r\n _proto._getSubmenuPosition = 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 _proto._updateSubmenuVisibilityOnClick = 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 _proto._hideSubmenu = 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 _proto._hideSubmenuCore = 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 _proto._stopAnimate = function($container) {\r\n _fx.default.stop($container, true)\r\n };\r\n _proto._hideAllShownSubmenus = 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 _proto._visibilityChanged = function(visible) {\r\n if (visible) {\r\n this._renderContentImpl()\r\n }\r\n };\r\n _proto._optionChanged = 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 _MenuBase.prototype._optionChanged.call(this, args)\r\n }\r\n };\r\n _proto._renderVisibility = function(showing) {\r\n return showing ? this._show() : this._hide()\r\n };\r\n _proto._toggleVisibility = function() {};\r\n _proto._show = 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 _proto._setAriaAttributes = 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 _proto._cleanAriaAttributes = function() {\r\n this._overlay && this.setAria(\"id\", null, this._overlay.$content());\r\n this.setAria(\"owns\", void 0)\r\n };\r\n _proto._getTarget = function() {\r\n return this.option(\"target\") || this.option(\"position\").of || (0, _renderer.default)(_dom_adapter.default.getDocument())\r\n };\r\n _proto._getContextMenuPosition = function() {\r\n return (0, _extend.extend)({}, this.option(\"position\"), {\r\n of: this._getTarget()\r\n })\r\n };\r\n _proto._positionContextMenu = 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 _proto._refresh = function() {\r\n if (!(0, _window.hasWindow)()) {\r\n _MenuBase.prototype._refresh.call(this)\r\n } else {\r\n if (this._overlay) {\r\n var lastPosition = this._overlay.option(\"position\");\r\n _MenuBase.prototype._refresh.call(this);\r\n this._overlay && this._overlay.option(\"position\", lastPosition)\r\n } else {\r\n _MenuBase.prototype._refresh.call(this)\r\n }\r\n }\r\n };\r\n _proto._hide = 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 _proto.toggle = 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 _proto.show = function() {\r\n return this.toggle(true)\r\n };\r\n _proto.hide = function() {\r\n return this.toggle(false)\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _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.apply(this, arguments);\r\n if ($cells) {\r\n var groupCellIndex = $cells.filter(\".\" + GROUP_CELL_CLASS).index();\r\n if (groupCellIndex >= 0 && $cells.length > groupCellIndex + 1) {\r\n return $cells.slice(0, groupCellIndex + 1)\r\n }\r\n }\r\n return $cells\r\n },\r\n getTopVisibleItemIndex: function(isFloor) {\r\n var 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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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, lastLevelOnly) {\r\n var groups = _utils.default.normalizeSortingInfo(storeLoadOptions.group);\r\n var filter = [];\r\n for (var i = lastLevelOnly ? path.length - 1 : 0; i < path.length; i++) {\r\n var filterElement = [];\r\n for (var j = 0; j <= i; j++) {\r\n var selector = groups[j].selector;\r\n if (i === j && (null === path[j] || false === path[j] || true === path[j])) {\r\n if (false === path[j]) {\r\n filterElement.push([selector, \"=\", groups[j].desc ? true : null])\r\n } else {\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _element = require(\"../../core/element\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _context_menu = _interopRequireDefault(require(\"../context_menu\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar CONTEXT_MENU = \"dx-context-menu\";\r\nvar viewName = {\r\n columnHeadersView: \"header\",\r\n rowsView: \"content\",\r\n footerView: \"footer\",\r\n headerPanel: \"headerPanel\"\r\n};\r\nvar VIEW_NAMES = [\"columnHeadersView\", \"rowsView\", \"footerView\", \"headerPanel\"];\r\nvar ContextMenuController = _uiGrid_core.default.ViewController.inherit({\r\n init: function() {\r\n this.createAction(\"onContextMenuPreparing\")\r\n },\r\n getContextMenuItems: function(dxEvent) {\r\n if (!dxEvent) {\r\n return false\r\n }\r\n var that = this;\r\n var $targetElement = (0, _renderer.default)(dxEvent.target);\r\n var $element;\r\n var $targetRowElement;\r\n var $targetCellElement;\r\n var menuItems;\r\n (0, _iterator.each)(VIEW_NAMES, function() {\r\n var view = that.getView(this);\r\n $element = view && view.element();\r\n if ($element && ($element.is($targetElement) || $element.find($targetElement).length)) {\r\n $targetCellElement = $targetElement.closest(\".dx-row > td, .dx-row > tr\");\r\n $targetRowElement = $targetCellElement.parent();\r\n var rowIndex = view.getRowIndex($targetRowElement);\r\n var columnIndex = $targetCellElement[0] && $targetCellElement[0].cellIndex;\r\n var rowOptions = $targetRowElement.data(\"options\");\r\n var options = {\r\n event: dxEvent,\r\n targetElement: (0, _element.getPublicElement)($targetElement),\r\n target: viewName[this],\r\n rowIndex: rowIndex,\r\n row: view._getRows()[rowIndex],\r\n columnIndex: columnIndex,\r\n column: rowOptions && rowOptions.cells[columnIndex].column\r\n };\r\n options.items = view.getContextMenuItems && view.getContextMenuItems(options);\r\n that.executeAction(\"onContextMenuPreparing\", options);\r\n that._contextMenuPrepared(options);\r\n menuItems = options.items;\r\n if (menuItems) {\r\n return false\r\n }\r\n }\r\n });\r\n return menuItems\r\n },\r\n _contextMenuPrepared: _common.noop\r\n});\r\nvar ContextMenuView = _uiGrid_core.default.View.inherit({\r\n _renderCore: function() {\r\n var that = this;\r\n var $element = that.element().addClass(CONTEXT_MENU);\r\n this.setAria(\"role\", \"presentation\", $element);\r\n this._createComponent($element, _context_menu.default, {\r\n onPositioning: function(actionArgs) {\r\n var event = actionArgs.event;\r\n var contextMenuInstance = actionArgs.component;\r\n var items = that.getController(\"contextMenu\").getContextMenuItems(event);\r\n if (items) {\r\n contextMenuInstance.option(\"items\", items);\r\n event.stopPropagation()\r\n } else {\r\n actionArgs.cancel = true\r\n }\r\n },\r\n onItemClick: function(params) {\r\n params.itemData.onItemClick && params.itemData.onItemClick(params)\r\n },\r\n cssClass: that.getWidgetContainerClass(),\r\n target: that.component.$element()\r\n })\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n onContextMenuPreparing: null\r\n }\r\n },\r\n controllers: {\r\n contextMenu: ContextMenuController\r\n },\r\n views: {\r\n contextMenuView: ContextMenuView\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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\nvar ExcelFile = function() {\r\n function 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 var _proto = ExcelFile.prototype;\r\n _proto.registerCellFormat = 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 ExcelFile.copyCellFormat = function(source) {\r\n return _excel2.default.copy(source)\r\n };\r\n _proto.generateCellFormatsXml = 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 _proto.registerFill = 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 _proto.generateFillsXml = 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 _proto.registerFont = 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 _proto.generateFontsXml = 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 _proto._convertNumberFormatIndexToId = function(index) {\r\n var CUSTOM_FORMAT_ID_START_VALUE = 165;\r\n return CUSTOM_FORMAT_ID_START_VALUE + index\r\n };\r\n _proto.registerNumberFormat = 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 _proto.generateNumberFormatsXml = 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 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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position2 = require(\"../../core/utils/position\");\r\nvar _ui = _interopRequireDefault(require(\"../shared/ui.editor_factory_mixin\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar EDITOR_INLINE_BLOCK = \"dx-editor-inline-block\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar FOCUS_OVERLAY_CLASS = \"focus-overlay\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar FOCUSED_ELEMENT_CLASS = \"dx-focused\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar MODULE_NAMESPACE = \"dxDataGridEditorFactory\";\r\nvar UPDATE_FOCUS_EVENTS = (0, _index.addNamespace)([_pointer.default.down, \"focusin\", _click.name].join(\" \"), MODULE_NAMESPACE);\r\nvar DX_HIDDEN = \"dx-hidden\";\r\nvar EditorFactory = _uiGrid_core.default.ViewController.inherit({\r\n _getFocusedElement: function($dataGridElement) {\r\n var rowSelector = this.option(\"focusedRowEnabled\") ? \"tr[tabindex]:focus\" : \"tr[tabindex]:not(.dx-data-row):focus\";\r\n var focusedElementSelector = \"td[tabindex]:focus, \".concat(rowSelector, \", input:focus, textarea:focus, .dx-lookup-field:focus, .dx-checkbox:focus, .dx-switch:focus, .dx-dropdownbutton .dx-buttongroup:focus\");\r\n return $dataGridElement.find(focusedElementSelector)\r\n },\r\n _getFocusCellSelector: function() {\r\n return \".dx-row > td\"\r\n },\r\n _updateFocusCore: function() {\r\n var $focus = this._$focusedElement;\r\n var $dataGridElement = this.component && this.component.$element();\r\n var $focusCell;\r\n var hideBorders;\r\n if ($dataGridElement) {\r\n $focus = this._getFocusedElement($dataGridElement);\r\n if ($focus.length) {\r\n if (!$focus.hasClass(CELL_FOCUS_DISABLED_CLASS) && !$focus.hasClass(ROW_CLASS)) {\r\n $focusCell = $focus.closest(this._getFocusCellSelector() + \", .\" + CELL_FOCUS_DISABLED_CLASS);\r\n hideBorders = $focusCell.get(0) !== $focus.get(0) && $focusCell.hasClass(EDITOR_INLINE_BLOCK);\r\n $focus = $focusCell\r\n }\r\n if ($focus.length && !$focus.hasClass(CELL_FOCUS_DISABLED_CLASS)) {\r\n this.focus($focus, hideBorders);\r\n return\r\n }\r\n }\r\n }\r\n this.loseFocus()\r\n },\r\n _updateFocus: function(e) {\r\n var that = this;\r\n var isFocusOverlay = e && e.event && (0, _renderer.default)(e.event.target).hasClass(that.addWidgetPrefix(FOCUS_OVERLAY_CLASS));\r\n that._isFocusOverlay = that._isFocusOverlay || isFocusOverlay;\r\n clearTimeout(that._updateFocusTimeoutID);\r\n that._updateFocusTimeoutID = setTimeout(function() {\r\n delete that._updateFocusTimeoutID;\r\n if (!that._isFocusOverlay) {\r\n that._updateFocusCore()\r\n }\r\n that._isFocusOverlay = false\r\n })\r\n },\r\n _updateFocusOverlaySize: function($element, position) {\r\n $element.hide();\r\n var location = _position.default.calculate($element, (0, _extend.extend)({\r\n collision: \"fit\"\r\n }, position));\r\n if (location.h.oversize > 0) {\r\n $element.outerWidth($element.outerWidth() - location.h.oversize)\r\n }\r\n if (location.v.oversize > 0) {\r\n $element.outerHeight($element.outerHeight() - location.v.oversize)\r\n }\r\n $element.show()\r\n },\r\n callbackNames: function() {\r\n return [\"focused\"]\r\n },\r\n focus: function($element, hideBorder) {\r\n var that = this;\r\n if (void 0 === $element) {\r\n return that._$focusedElement\r\n } else {\r\n if ($element) {\r\n if (!$element.is(that._$focusedElement)) {\r\n that._$focusedElement && that._$focusedElement.removeClass(FOCUSED_ELEMENT_CLASS)\r\n }\r\n that._$focusedElement = $element;\r\n clearTimeout(that._focusTimeoutID);\r\n that._focusTimeoutID = setTimeout(function() {\r\n delete that._focusTimeoutID;\r\n that.renderFocusOverlay($element, hideBorder);\r\n $element.addClass(FOCUSED_ELEMENT_CLASS);\r\n that.focused.fire($element)\r\n })\r\n }\r\n }\r\n },\r\n refocus: function() {\r\n var $focus = this.focus();\r\n this.focus($focus)\r\n },\r\n renderFocusOverlay: function($element, hideBorder) {\r\n var that = this;\r\n if (!_uiGrid_core2.default.isElementInCurrentGrid(this, $element)) {\r\n return\r\n }\r\n if (!that._$focusOverlay) {\r\n that._$focusOverlay = (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(FOCUS_OVERLAY_CLASS))\r\n }\r\n if (hideBorder) {\r\n that._$focusOverlay.addClass(DX_HIDDEN)\r\n } else {\r\n if ($element.length) {\r\n var align = _browser.default.msie ? \"left bottom\" : _browser.default.mozilla ? \"right bottom\" : \"left top\";\r\n var $content = $element.closest(\".\" + that.addWidgetPrefix(CONTENT_CLASS));\r\n var elemCoord = (0, _position2.getBoundingRect)($element.get(0));\r\n that._$focusOverlay.removeClass(DX_HIDDEN).appendTo($content).outerWidth(elemCoord.right - elemCoord.left + 1).outerHeight(elemCoord.bottom - elemCoord.top + 1);\r\n var focusOverlayPosition = {\r\n precise: true,\r\n my: align,\r\n at: align,\r\n of: $element,\r\n boundary: $content.length && $content\r\n };\r\n that._updateFocusOverlaySize(that._$focusOverlay, focusOverlayPosition);\r\n _position.default.setup(that._$focusOverlay, focusOverlayPosition);\r\n that._$focusOverlay.css(\"visibility\", \"visible\")\r\n }\r\n }\r\n },\r\n resize: function() {\r\n var $focusedElement = this._$focusedElement;\r\n if ($focusedElement) {\r\n this.focus($focusedElement)\r\n }\r\n },\r\n loseFocus: function() {\r\n this._$focusedElement && this._$focusedElement.removeClass(FOCUSED_ELEMENT_CLASS);\r\n this._$focusedElement = null;\r\n this._$focusOverlay && this._$focusOverlay.addClass(DX_HIDDEN)\r\n },\r\n init: function() {\r\n this.createAction(\"onEditorPreparing\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\"\r\n });\r\n this.createAction(\"onEditorPrepared\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\"\r\n });\r\n this._updateFocusHandler = this._updateFocusHandler || this.createAction(this._updateFocus.bind(this));\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), UPDATE_FOCUS_EVENTS, this._updateFocusHandler);\r\n this._attachContainerEventHandlers()\r\n },\r\n _attachContainerEventHandlers: function() {\r\n var that = this;\r\n var $container = that.component && that.component.$element();\r\n if ($container) {\r\n _events_engine.default.on($container, (0, _index.addNamespace)(\"keydown\", MODULE_NAMESPACE), function(e) {\r\n if (\"tab\" === (0, _index.normalizeKeyName)(e)) {\r\n that._updateFocusHandler(e)\r\n }\r\n })\r\n }\r\n },\r\n dispose: function() {\r\n clearTimeout(this._focusTimeoutID);\r\n clearTimeout(this._updateFocusTimeoutID);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), UPDATE_FOCUS_EVENTS, this._updateFocusHandler)\r\n }\r\n}).include(_ui.default);\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {}\r\n },\r\n controllers: {\r\n editorFactory: EditorFactory\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (core/utils/svg.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.ColumnsView = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _element_data = require(\"../../core/element_data\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _double_click = require(\"../../events/double_click\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _style = require(\"../../core/utils/style\");\r\nvar _element = require(\"../../core/element\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar iteratorUtils = _interopRequireWildcard(require(\"../../core/utils/iterator\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _uiGrid_core3 = _interopRequireDefault(require(\"./ui.grid_core.column_state_mixin\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SCROLL_CONTAINER_CLASS = \"scroll-container\";\r\nvar GROUP_SPACE_CLASS = \"group-space\";\r\nvar CONTENT_CLASS = \"content\";\r\nvar TABLE_CLASS = \"table\";\r\nvar TABLE_FIXED_CLASS = \"table-fixed\";\r\nvar CONTENT_FIXED_CLASS = \"content-fixed\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar DETAIL_ROW_CLASS = \"dx-master-detail-row\";\r\nvar FILTER_ROW_CLASS = \"filter-row\";\r\nvar CELL_UPDATED_ANIMATION_CLASS = \"cell-updated-animation\";\r\nvar HIDDEN_COLUMNS_WIDTH = \"0.0001px\";\r\nvar CELL_HINT_VISIBLE = \"dxCellHintVisible\";\r\nvar FORM_FIELD_ITEM_CONTENT_CLASS = \"dx-field-item-content\";\r\nvar appendElementTemplate = {\r\n render: function(options) {\r\n options.container.append(options.content)\r\n }\r\n};\r\nvar subscribeToRowEvents = function(that, $table) {\r\n var touchTarget;\r\n var touchCurrentTarget;\r\n var timeoutId;\r\n\r\n function clearTouchTargets(timeout) {\r\n return setTimeout(function() {\r\n touchTarget = touchCurrentTarget = null\r\n }, timeout)\r\n }\r\n _events_engine.default.on($table, \"touchstart touchend\", \".dx-row\", function(e) {\r\n clearTimeout(timeoutId);\r\n if (\"touchstart\" === e.type) {\r\n touchTarget = e.target;\r\n touchCurrentTarget = e.currentTarget;\r\n timeoutId = clearTouchTargets(1e3)\r\n } else {\r\n timeoutId = clearTouchTargets()\r\n }\r\n });\r\n _events_engine.default.on($table, [_click.name, _double_click.name, _pointer.default.down].join(\" \"), \".dx-row\", {\r\n useNative: that._isNativeClick()\r\n }, that.createAction(function(e) {\r\n var event = e.event;\r\n if (touchTarget) {\r\n event.target = touchTarget;\r\n event.currentTarget = touchCurrentTarget\r\n }\r\n if (!(0, _renderer.default)(event.target).closest(\"a\").length) {\r\n e.rowIndex = that.getRowIndex(event.currentTarget);\r\n if (e.rowIndex >= 0) {\r\n e.rowElement = (0, _element.getPublicElement)((0, _renderer.default)(event.currentTarget));\r\n e.columns = that.getColumns();\r\n if (event.type === _pointer.default.down) {\r\n that._rowPointerDown(e)\r\n } else {\r\n if (event.type === _click.name) {\r\n that._rowClick(e)\r\n } else {\r\n that._rowDblClick(e)\r\n }\r\n }\r\n }\r\n }\r\n }))\r\n};\r\nvar getWidthStyle = function(width) {\r\n if (\"auto\" === width) {\r\n return \"\"\r\n }\r\n return (0, _type.isNumeric)(width) ? width + \"px\" : width\r\n};\r\nvar setCellWidth = function(cell, column, width) {\r\n cell.style.width = cell.style.maxWidth = \"auto\" === column.width ? \"\" : width\r\n};\r\nvar copyAttributes = function(element, newElement) {\r\n if (!element || !newElement) {\r\n return\r\n }\r\n var oldAttributes = element.attributes;\r\n var newAttributes = newElement.attributes;\r\n var i;\r\n for (i = 0; i < oldAttributes.length; i++) {\r\n var name = oldAttributes[i].nodeName;\r\n if (!newElement.hasAttribute(name)) {\r\n element.removeAttribute(name)\r\n }\r\n }\r\n for (i = 0; i < newAttributes.length; i++) {\r\n element.setAttribute(newAttributes[i].nodeName, newAttributes[i].nodeValue)\r\n }\r\n};\r\nvar ColumnsView = _uiGrid_core.default.View.inherit(_uiGrid_core3.default).inherit({\r\n _createScrollableOptions: function() {\r\n var that = this;\r\n var scrollingOptions = that.option(\"scrolling\");\r\n var useNativeScrolling = that.option(\"scrolling.useNative\");\r\n var options = (0, _extend.extend)({\r\n pushBackValue: 0\r\n }, scrollingOptions, {\r\n direction: \"both\",\r\n bounceEnabled: false,\r\n useKeyboard: false\r\n });\r\n if (void 0 === useNativeScrolling) {\r\n useNativeScrolling = true\r\n }\r\n if (\"auto\" === useNativeScrolling) {\r\n delete options.useNative;\r\n delete options.useSimulatedScrollbar\r\n } else {\r\n options.useNative = !!useNativeScrolling;\r\n options.useSimulatedScrollbar = !useNativeScrolling\r\n }\r\n return options\r\n },\r\n _updateCell: function($cell, parameters) {\r\n if (parameters.rowType) {\r\n this._cellPrepared($cell, parameters)\r\n }\r\n },\r\n _createCell: function(options) {\r\n var column = options.column;\r\n var alignment = column.alignment || (0, _position.getDefaultAlignment)(this.option(\"rtlEnabled\"));\r\n var cell = _dom_adapter.default.createElement(\"td\");\r\n cell.style.textAlign = alignment;\r\n var $cell = (0, _renderer.default)(cell);\r\n if (\"data\" === options.rowType && column.headerId && !column.type) {\r\n if (this.component.option(\"showColumnHeaders\")) {\r\n this.setAria(\"describedby\", column.headerId, $cell)\r\n }\r\n }\r\n if (column.cssClass) {\r\n $cell.addClass(column.cssClass)\r\n }\r\n if (\"expand\" === column.command) {\r\n $cell.addClass(column.cssClass);\r\n $cell.addClass(this.addWidgetPrefix(GROUP_SPACE_CLASS))\r\n }\r\n if (column.colspan > 1) {\r\n $cell.attr(\"colSpan\", column.colspan)\r\n } else {\r\n if (!column.isBand && \"auto\" !== column.visibleWidth && !this.option(\"legacyRendering\") && this.option(\"columnAutoWidth\")) {\r\n if (column.width || column.minWidth) {\r\n cell.style.minWidth = getWidthStyle(column.minWidth || column.width)\r\n }\r\n if (column.width) {\r\n setCellWidth(cell, column, getWidthStyle(column.width))\r\n }\r\n }\r\n }\r\n return $cell\r\n },\r\n _createRow: function(rowObject) {\r\n var $element = (0, _renderer.default)(\"\").addClass(ROW_CLASS);\r\n this.setAria(\"role\", \"row\", $element);\r\n return $element\r\n },\r\n _isAltRow: function(row) {\r\n return row && row.dataIndex % 2 === 1\r\n },\r\n _createTable: function(columns, isAppend) {\r\n var that = this;\r\n var $table = (0, _renderer.default)(\"\").addClass(that.addWidgetPrefix(TABLE_CLASS)).addClass(that.addWidgetPrefix(TABLE_FIXED_CLASS));\r\n if (columns && !isAppend) {\r\n $table.append(that._createColGroup(columns));\r\n if (_browser.default.safari) {\r\n $table.append((0, _renderer.default)(\"\").append(\"\"))\r\n }\r\n that.setAria(\"role\", \"presentation\", $table)\r\n } else {\r\n that.setAria(\"hidden\", true, $table)\r\n }\r\n this.setAria(\"role\", \"presentation\", (0, _renderer.default)(\"\").appendTo($table));\r\n if (isAppend) {\r\n return $table\r\n }\r\n if (_browser.default.mozilla) {\r\n _events_engine.default.on($table, \"mousedown\", \"td\", function(e) {\r\n if (e.ctrlKey) {\r\n e.preventDefault()\r\n }\r\n })\r\n }\r\n if (that.option(\"cellHintEnabled\")) {\r\n _events_engine.default.on($table, \"mousemove\", \".dx-row > td\", this.createAction(function(args) {\r\n var e = args.event;\r\n var $element = (0, _renderer.default)(e.target);\r\n var $cell = (0, _renderer.default)(e.currentTarget);\r\n var $row = $cell.parent();\r\n var isDataRow = $row.hasClass(\"dx-data-row\");\r\n var isHeaderRow = $row.hasClass(\"dx-header-row\");\r\n var isGroupRow = $row.hasClass(GROUP_ROW_CLASS);\r\n var isMasterDetailRow = $row.hasClass(DETAIL_ROW_CLASS);\r\n var isFilterRow = $row.hasClass(that.addWidgetPrefix(FILTER_ROW_CLASS));\r\n var visibleColumns = that._columnsController.getVisibleColumns();\r\n var rowOptions = $row.data(\"options\");\r\n var columnIndex = $cell.index();\r\n var cellOptions = rowOptions && rowOptions.cells && rowOptions.cells[columnIndex];\r\n var column = cellOptions ? cellOptions.column : visibleColumns[columnIndex];\r\n var msieCorrection = _browser.default.msie ? 1 : 0;\r\n if (!isMasterDetailRow && !isFilterRow && (!isDataRow || isDataRow && column && !column.cellTemplate) && (!isHeaderRow || isHeaderRow && column && !column.headerCellTemplate) && (!isGroupRow || isGroupRow && column && (void 0 === column.groupIndex || !column.groupCellTemplate))) {\r\n if ($element.data(CELL_HINT_VISIBLE)) {\r\n $element.removeAttr(\"title\");\r\n $element.data(CELL_HINT_VISIBLE, false)\r\n }\r\n var difference = $element[0].scrollWidth - $element[0].clientWidth - msieCorrection;\r\n if (difference > 0 && !(0, _type.isDefined)($element.attr(\"title\"))) {\r\n $element.attr(\"title\", $element.text());\r\n $element.data(CELL_HINT_VISIBLE, true)\r\n }\r\n }\r\n }))\r\n }\r\n var getOptions = function(event) {\r\n var $cell = (0, _renderer.default)(event.currentTarget);\r\n var $fieldItemContent = (0, _renderer.default)(event.target).closest(\".\" + FORM_FIELD_ITEM_CONTENT_CLASS);\r\n var rowOptions = $cell.parent().data(\"options\");\r\n var options = rowOptions && rowOptions.cells && rowOptions.cells[$cell.index()];\r\n if (!$cell.closest(\"table\").is(event.delegateTarget)) {\r\n return\r\n }\r\n var resultOptions = (0, _extend.extend)({}, options, {\r\n cellElement: (0, _element.getPublicElement)($cell),\r\n event: event,\r\n eventType: event.type\r\n });\r\n if ($fieldItemContent.length) {\r\n var formItemOptions = $fieldItemContent.data(\"dx-form-item\");\r\n if (formItemOptions.column) {\r\n resultOptions.column = formItemOptions.column;\r\n resultOptions.columnIndex = that._columnsController.getVisibleIndex(resultOptions.column.index)\r\n }\r\n }\r\n return resultOptions\r\n };\r\n _events_engine.default.on($table, \"mouseover\", \".dx-row > td\", function(e) {\r\n var options = getOptions(e);\r\n options && that.executeAction(\"onCellHoverChanged\", options)\r\n });\r\n _events_engine.default.on($table, \"mouseout\", \".dx-row > td\", function(e) {\r\n var options = getOptions(e);\r\n options && that.executeAction(\"onCellHoverChanged\", options)\r\n });\r\n _events_engine.default.on($table, _click.name, \".dx-row > td\", function(e) {\r\n var options = getOptions(e);\r\n options && that.executeAction(\"onCellClick\", options)\r\n });\r\n _events_engine.default.on($table, _double_click.name, \".dx-row > td\", function(e) {\r\n var options = getOptions(e);\r\n options && that.executeAction(\"onCellDblClick\", options)\r\n });\r\n subscribeToRowEvents(that, $table);\r\n return $table\r\n },\r\n _isNativeClick: _common.noop,\r\n _rowPointerDown: _common.noop,\r\n _rowClick: _common.noop,\r\n _rowDblClick: _common.noop,\r\n _createColGroup: function(columns) {\r\n var colgroupElement = (0, _renderer.default)(\"\");\r\n for (var i = 0; i < columns.length; i++) {\r\n var colspan = columns[i].colspan || 1;\r\n for (var j = 0; j < colspan; j++) {\r\n colgroupElement.append(this._createCol(columns[i]))\r\n }\r\n }\r\n return colgroupElement\r\n },\r\n _createCol: function(column) {\r\n var width = column.visibleWidth || column.width;\r\n if (\"adaptiveHidden\" === width) {\r\n width = HIDDEN_COLUMNS_WIDTH\r\n }\r\n var col = (0, _renderer.default)(\"\");\r\n (0, _style.setWidth)(col, width);\r\n return col\r\n },\r\n renderDelayedTemplates: function() {\r\n var delayedTemplates = this._delayedTemplates;\r\n var syncTemplates = delayedTemplates.filter(function(template) {\r\n return !template.async\r\n });\r\n var asyncTemplates = delayedTemplates.filter(function(template) {\r\n return template.async\r\n });\r\n this._delayedTemplates = [];\r\n this._renderDelayedTemplatesCore(syncTemplates);\r\n this._renderDelayedTemplatesCoreAsync(asyncTemplates)\r\n },\r\n _renderDelayedTemplatesCoreAsync: function(templates) {\r\n var that = this;\r\n if (templates.length) {\r\n (0, _window.getWindow)().setTimeout(function() {\r\n that._renderDelayedTemplatesCore(templates, true)\r\n })\r\n }\r\n },\r\n _renderDelayedTemplatesCore: function(templates, isAsync) {\r\n var date = new Date;\r\n while (templates.length) {\r\n var templateParameters = templates.shift();\r\n var options = templateParameters.options;\r\n var doc = _dom_adapter.default.getDocument();\r\n if (!isAsync || (0, _renderer.default)(options.container).closest(doc).length) {\r\n templateParameters.template.render(options)\r\n }\r\n if (isAsync && new Date - date > 30) {\r\n this._renderDelayedTemplatesCoreAsync(templates);\r\n break\r\n }\r\n }\r\n if (!templates.length && this._delayedTemplates.length) {\r\n this.renderDelayedTemplates()\r\n }\r\n },\r\n _processTemplate: function(template) {\r\n var that = this;\r\n var renderingTemplate;\r\n if (template && template.render && !(0, _type.isRenderer)(template)) {\r\n renderingTemplate = {\r\n allowRenderToDetachedContainer: template.allowRenderToDetachedContainer,\r\n render: function(options) {\r\n template.render(options.container, options.model);\r\n options.deferred && options.deferred.resolve()\r\n }\r\n }\r\n } else {\r\n if ((0, _type.isFunction)(template)) {\r\n renderingTemplate = {\r\n render: function(options) {\r\n var renderedTemplate = template((0, _element.getPublicElement)(options.container), options.model);\r\n if (renderedTemplate && (renderedTemplate.nodeType || (0, _type.isRenderer)(renderedTemplate))) {\r\n options.container.append(renderedTemplate)\r\n }\r\n options.deferred && options.deferred.resolve()\r\n }\r\n }\r\n } else {\r\n var templateID = (0, _type.isString)(template) ? template : (0, _renderer.default)(template).attr(\"id\");\r\n if (!templateID) {\r\n renderingTemplate = that.getTemplate(template)\r\n } else {\r\n if (!that._templatesCache[templateID]) {\r\n that._templatesCache[templateID] = that.getTemplate(template)\r\n }\r\n renderingTemplate = that._templatesCache[templateID]\r\n }\r\n }\r\n }\r\n return renderingTemplate\r\n },\r\n renderTemplate: function(container, template, options, allowRenderToDetachedContainer) {\r\n var that = this;\r\n var renderingTemplate = that._processTemplate(template, options);\r\n var column = options.column;\r\n var isDataRow = \"data\" === options.rowType;\r\n var templateDeferred = new _deferred.Deferred;\r\n var templateOptions = {\r\n container: container,\r\n model: options,\r\n deferred: templateDeferred,\r\n onRendered: function() {\r\n templateDeferred.resolve()\r\n }\r\n };\r\n if (renderingTemplate) {\r\n options.component = that.component;\r\n var async = column && (column.renderAsync && isDataRow || that.option(\"renderAsync\") && (false !== column.renderAsync && (column.command || column.showEditorAlways) && isDataRow || \"filter\" === options.rowType));\r\n if ((renderingTemplate.allowRenderToDetachedContainer || allowRenderToDetachedContainer) && !async) {\r\n renderingTemplate.render(templateOptions)\r\n } else {\r\n that._delayedTemplates.push({\r\n template: renderingTemplate,\r\n options: templateOptions,\r\n async: async\r\n })\r\n }\r\n } else {\r\n templateDeferred.reject()\r\n }\r\n return templateDeferred.promise()\r\n },\r\n _getBodies: function(tableElement) {\r\n return (0, _renderer.default)(tableElement).children(\"tbody\").not(\".dx-header\").not(\".dx-footer\")\r\n },\r\n _wrapRowIfNeed: function($table, $row) {\r\n var $tBodies = this.option(\"rowTemplate\") && this._getBodies(this._tableElement || $table);\r\n if ($tBodies && $tBodies.filter(\".\" + ROW_CLASS).length) {\r\n var $tbody = (0, _renderer.default)(\"\").addClass($row.attr(\"class\"));\r\n this.setAria(\"role\", \"presentation\", $tbody);\r\n return $tbody.append($row)\r\n }\r\n return $row\r\n },\r\n _appendRow: function($table, $row, appendTemplate) {\r\n appendTemplate = appendTemplate || appendElementTemplate;\r\n appendTemplate.render({\r\n content: $row,\r\n container: $table\r\n })\r\n },\r\n _resizeCore: function() {\r\n var scrollLeft = this._scrollLeft;\r\n if (scrollLeft >= 0) {\r\n this._scrollLeft = 0;\r\n this.scrollTo({\r\n left: scrollLeft\r\n })\r\n }\r\n },\r\n _renderCore: function(e) {\r\n var $root = this.element().parent();\r\n if (!$root || $root.parent().length) {\r\n this.renderDelayedTemplates(e)\r\n }\r\n },\r\n _renderTable: function(options) {\r\n options = options || {};\r\n options.columns = this._columnsController.getVisibleColumns();\r\n var changeType = options.change && options.change.changeType;\r\n var $table = this._createTable(options.columns, \"append\" === changeType || \"prepend\" === changeType || \"update\" === changeType);\r\n this._renderRows($table, options);\r\n return $table\r\n },\r\n _renderRows: function($table, options) {\r\n var that = this;\r\n var rows = that._getRows(options.change);\r\n var columnIndices = options.change && options.change.columnIndices || [];\r\n var changeTypes = options.change && options.change.changeTypes || [];\r\n for (var i = 0; i < rows.length; i++) {\r\n that._renderRow($table, (0, _extend.extend)({\r\n row: rows[i],\r\n columnIndices: columnIndices[i],\r\n changeType: changeTypes[i]\r\n }, options))\r\n }\r\n },\r\n _renderRow: function($table, options) {\r\n if (!options.columnIndices) {\r\n options.row.cells = []\r\n }\r\n var $row = this._createRow(options.row);\r\n var $wrappedRow = this._wrapRowIfNeed($table, $row);\r\n if (\"remove\" !== options.changeType) {\r\n this._renderCells($row, options)\r\n }\r\n this._appendRow($table, $wrappedRow);\r\n var rowOptions = (0, _extend.extend)({\r\n columns: options.columns\r\n }, options.row);\r\n this._addWatchMethod(rowOptions, options.row);\r\n this._rowPrepared($wrappedRow, rowOptions, options.row)\r\n },\r\n _needRenderCell: function(columnIndex, columnIndices) {\r\n return !columnIndices || columnIndices.indexOf(columnIndex) >= 0\r\n },\r\n _renderCells: function($row, options) {\r\n var that = this;\r\n var columnIndex = 0;\r\n var row = options.row;\r\n var columns = options.columns;\r\n for (var i = 0; i < columns.length; i++) {\r\n if (this._needRenderCell(i, options.columnIndices)) {\r\n that._renderCell($row, (0, _extend.extend)({\r\n column: columns[i],\r\n columnIndex: columnIndex,\r\n value: row.values && row.values[columnIndex],\r\n oldValue: row.oldValues && row.oldValues[columnIndex]\r\n }, options))\r\n }\r\n if (columns[i].colspan > 1) {\r\n columnIndex += columns[i].colspan\r\n } else {\r\n columnIndex++\r\n }\r\n }\r\n },\r\n _updateCells: function($rowElement, $newRowElement, columnIndices) {\r\n var $cells = $rowElement.children();\r\n var $newCells = $newRowElement.children();\r\n var highlightChanges = this.option(\"highlightChanges\");\r\n var cellUpdatedClass = this.addWidgetPrefix(CELL_UPDATED_ANIMATION_CLASS);\r\n columnIndices.forEach(function(columnIndex, index) {\r\n var $cell = $cells.eq(columnIndex);\r\n var $newCell = $newCells.eq(index);\r\n $cell.replaceWith($newCell);\r\n if (highlightChanges && !$newCell.hasClass(\"dx-command-expand\")) {\r\n $newCell.addClass(cellUpdatedClass)\r\n }\r\n });\r\n copyAttributes($rowElement.get(0), $newRowElement.get(0))\r\n },\r\n _setCellAriaAttributes: function($cell, cellOptions) {\r\n if (\"freeSpace\" !== cellOptions.rowType) {\r\n this.setAria(\"selected\", false, $cell);\r\n this.setAria(\"role\", \"gridcell\", $cell);\r\n var columnIndexOffset = this._columnsController.getColumnIndexOffset();\r\n var ariaColIndex = cellOptions.columnIndex + columnIndexOffset + 1;\r\n this.setAria(\"colindex\", ariaColIndex, $cell)\r\n }\r\n },\r\n _renderCell: function($row, options) {\r\n var cellOptions = this._getCellOptions(options);\r\n if (options.columnIndices) {\r\n if (options.row.cells) {\r\n options.row.cells[cellOptions.columnIndex] = cellOptions\r\n }\r\n } else {\r\n options.row.cells.push(cellOptions)\r\n }\r\n var $cell = this._createCell(cellOptions);\r\n this._setCellAriaAttributes($cell, cellOptions);\r\n this._renderCellContent($cell, cellOptions);\r\n $row.get(0).appendChild($cell.get(0));\r\n return $cell\r\n },\r\n _renderCellContent: function($cell, options) {\r\n var _this = this;\r\n var template = this._getCellTemplate(options);\r\n (0, _deferred.when)(!template || this.renderTemplate($cell, template, options)).done(function() {\r\n _this._updateCell($cell, options)\r\n })\r\n },\r\n _getCellTemplate: function() {},\r\n _getRows: function() {\r\n return []\r\n },\r\n _getCellOptions: function(options) {\r\n var cellOptions = {\r\n column: options.column,\r\n columnIndex: options.columnIndex,\r\n rowType: options.row.rowType,\r\n isAltRow: this._isAltRow(options.row)\r\n };\r\n this._addWatchMethod(cellOptions);\r\n return cellOptions\r\n },\r\n _addWatchMethod: function(options, source) {\r\n if (!this.option(\"repaintChangesOnly\")) {\r\n return\r\n }\r\n var watchers = [];\r\n source = source || options;\r\n source.watch = source.watch || function(getter, updateFunc) {\r\n var oldValue = getter(source.data);\r\n var watcher = function(row) {\r\n var newValue = getter(source.data);\r\n if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) {\r\n if (row) {\r\n updateFunc(newValue, oldValue)\r\n }\r\n oldValue = newValue\r\n }\r\n };\r\n watchers.push(watcher);\r\n var stopWatch = function() {\r\n var index = watchers.indexOf(watcher);\r\n if (index >= 0) {\r\n watchers.splice(index, 1)\r\n }\r\n };\r\n return stopWatch\r\n };\r\n source.update = source.update || function(row) {\r\n if (row) {\r\n this.data = options.data = row.data;\r\n this.rowIndex = options.rowIndex = row.rowIndex;\r\n this.dataIndex = options.dataIndex = row.dataIndex;\r\n this.isExpanded = options.isExpanded = row.isExpanded;\r\n if (options.row) {\r\n options.row = row\r\n }\r\n }\r\n watchers.forEach(function(watcher) {\r\n watcher(row)\r\n })\r\n };\r\n if (source !== options) {\r\n options.watch = source.watch.bind(source)\r\n }\r\n return options\r\n },\r\n _cellPrepared: function(cell, options) {\r\n options.cellElement = (0, _element.getPublicElement)((0, _renderer.default)(cell));\r\n this.executeAction(\"onCellPrepared\", options)\r\n },\r\n _rowPrepared: function($row, options) {\r\n (0, _element_data.data)($row.get(0), \"options\", options);\r\n options.rowElement = (0, _element.getPublicElement)($row);\r\n this.executeAction(\"onRowPrepared\", options)\r\n },\r\n _columnOptionChanged: function(e) {\r\n var optionNames = e.optionNames;\r\n if (_uiGrid_core2.default.checkChanges(optionNames, [\"width\", \"visibleWidth\"])) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var widths = iteratorUtils.map(visibleColumns, function(column) {\r\n var width = column.visibleWidth || column.width;\r\n return (0, _type.isDefined)(width) ? width : \"auto\"\r\n });\r\n this.setColumnWidths({\r\n widths: widths,\r\n optionNames: optionNames\r\n });\r\n return\r\n }\r\n if (!this._requireReady) {\r\n this.render()\r\n }\r\n },\r\n getCellIndex: function($cell) {\r\n var cellIndex = $cell.length ? $cell[0].cellIndex : -1;\r\n return cellIndex\r\n },\r\n getTableElements: function() {\r\n return this._tableElement || (0, _renderer.default)()\r\n },\r\n getTableElement: function() {\r\n return this._tableElement\r\n },\r\n setTableElement: function(tableElement) {\r\n this._tableElement = tableElement\r\n },\r\n optionChanged: function(args) {\r\n this.callBase(args);\r\n switch (args.name) {\r\n case \"cellHintEnabled\":\r\n case \"onCellPrepared\":\r\n case \"onRowPrepared\":\r\n case \"onCellHoverChanged\":\r\n this._invalidate(true, true);\r\n args.handled = true\r\n }\r\n },\r\n init: function() {\r\n var that = this;\r\n that._scrollLeft = -1;\r\n that._columnsController = that.getController(\"columns\");\r\n that._dataController = that.getController(\"data\");\r\n that._delayedTemplates = [];\r\n that._templatesCache = {};\r\n that.createAction(\"onCellClick\");\r\n that.createAction(\"onRowClick\");\r\n that.createAction(\"onCellDblClick\");\r\n that.createAction(\"onRowDblClick\");\r\n that.createAction(\"onCellHoverChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onCellPrepared\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\"\r\n });\r\n that.createAction(\"onRowPrepared\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\",\r\n afterExecute: function(e) {\r\n that._afterRowPrepared(e)\r\n }\r\n });\r\n that._columnsController.columnsChanged.add(that._columnOptionChanged.bind(that));\r\n that._dataController && that._dataController.changed.add(that._handleDataChanged.bind(that))\r\n },\r\n _afterRowPrepared: _common.noop,\r\n _handleDataChanged: function() {},\r\n callbackNames: function() {\r\n return [\"scrollChanged\"]\r\n },\r\n scrollTo: function(pos) {\r\n var $element = this.element();\r\n var $scrollContainer = $element && $element.children(\".\" + this.addWidgetPrefix(SCROLL_CONTAINER_CLASS)).not(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS));\r\n if ((0, _type.isDefined)(pos) && (0, _type.isDefined)(pos.left) && this._scrollLeft !== pos.left) {\r\n this._scrollLeft = pos.left;\r\n $scrollContainer && $scrollContainer.scrollLeft(pos.left)\r\n }\r\n },\r\n _wrapTableInScrollContainer: function($table) {\r\n var _this2 = this;\r\n var $scrollContainer = (0, _renderer.default)(\"
\");\r\n _events_engine.default.on($scrollContainer, \"scroll\", function() {\r\n var scrollLeft = $scrollContainer.scrollLeft();\r\n if (scrollLeft !== _this2._scrollLeft) {\r\n _this2.scrollChanged.fire({\r\n left: scrollLeft\r\n }, _this2.name)\r\n }\r\n });\r\n $scrollContainer.addClass(this.addWidgetPrefix(CONTENT_CLASS)).addClass(this.addWidgetPrefix(SCROLL_CONTAINER_CLASS)).append($table).appendTo(this.element());\r\n this.setAria(\"role\", \"presentation\", $scrollContainer);\r\n return $scrollContainer\r\n },\r\n _updateContent: function($newTableElement) {\r\n this.setTableElement($newTableElement);\r\n this._wrapTableInScrollContainer($newTableElement)\r\n },\r\n _findContentElement: _common.noop,\r\n _getWidths: function($cellElements) {\r\n var result = [];\r\n var legacyRendering = this.option(\"legacyRendering\");\r\n var width;\r\n if ($cellElements) {\r\n iteratorUtils.each($cellElements, function(index, item) {\r\n width = item.offsetWidth;\r\n if (item.getBoundingClientRect) {\r\n var clientRect = (0, _position.getBoundingRect)(item);\r\n if (clientRect.width > width - 1) {\r\n width = legacyRendering ? Math.ceil(clientRect.width) : clientRect.width\r\n }\r\n }\r\n result.push(width)\r\n })\r\n }\r\n return result\r\n },\r\n getColumnWidths: function($tableElement) {\r\n var that = this;\r\n var result = [];\r\n var $rows;\r\n var $cells;\r\n (this.option(\"forceApplyBindings\") || _common.noop)();\r\n $tableElement = $tableElement || that.getTableElement();\r\n if ($tableElement) {\r\n $rows = $tableElement.children(\"tbody:not(.dx-header)\").children();\r\n for (var i = 0; i < $rows.length; i++) {\r\n var $row = $rows.eq(i);\r\n var isRowVisible = \"none\" !== $row.get(0).style.display && !$row.hasClass(\"dx-state-invisible\");\r\n if (!$row.is(\".\" + GROUP_ROW_CLASS) && !$row.is(\".\" + DETAIL_ROW_CLASS) && isRowVisible) {\r\n $cells = $row.children(\"td\");\r\n break\r\n }\r\n }\r\n result = that._getWidths($cells)\r\n }\r\n return result\r\n },\r\n getVisibleColumnIndex: function(columnIndex, rowIndex) {\r\n return columnIndex\r\n },\r\n setColumnWidths: function(_ref) {\r\n var widths = _ref.widths,\r\n $tableElement = _ref.$tableElement,\r\n columns = _ref.columns,\r\n fixed = _ref.fixed;\r\n var $cols;\r\n var width;\r\n var minWidth;\r\n var columnIndex;\r\n var columnAutoWidth = this.option(\"columnAutoWidth\");\r\n var legacyRendering = this.option(\"legacyRendering\");\r\n $tableElement = $tableElement || this.getTableElement();\r\n if ($tableElement && $tableElement.length && widths) {\r\n columnIndex = 0;\r\n $cols = $tableElement.children(\"colgroup\").children(\"col\");\r\n (0, _style.setWidth)($cols, \"auto\");\r\n columns = columns || this.getColumns(null, $tableElement);\r\n for (var i = 0; i < columns.length; i++) {\r\n if (!legacyRendering && columnAutoWidth && !fixed) {\r\n width = columns[i].width;\r\n if (width && !columns[i].command) {\r\n width = columns[i].visibleWidth || width;\r\n width = getWidthStyle(width);\r\n minWidth = getWidthStyle(columns[i].minWidth || width);\r\n var $rows = $rows || $tableElement.children().children(\".dx-row\").not(\".\" + GROUP_ROW_CLASS).not(\".\" + DETAIL_ROW_CLASS);\r\n for (var rowIndex = 0; rowIndex < $rows.length; rowIndex++) {\r\n var visibleIndex = this.getVisibleColumnIndex(i, rowIndex);\r\n var cell = $rows[rowIndex].cells[visibleIndex];\r\n if (cell) {\r\n setCellWidth(cell, columns[i], width);\r\n cell.style.minWidth = minWidth\r\n }\r\n }\r\n }\r\n }\r\n if (columns[i].colspan) {\r\n columnIndex += columns[i].colspan;\r\n continue\r\n }\r\n width = widths[columnIndex];\r\n if (\"adaptiveHidden\" === width) {\r\n width = HIDDEN_COLUMNS_WIDTH\r\n }\r\n if (\"number\" === typeof width) {\r\n width = width.toFixed(3) + \"px\"\r\n }(0, _style.setWidth)($cols.eq(columnIndex), (0, _type.isDefined)(width) ? width : \"auto\");\r\n columnIndex++\r\n }\r\n }\r\n },\r\n getCellElements: function(rowIndex) {\r\n return this._getCellElementsCore(rowIndex)\r\n },\r\n _getCellElementsCore: function(rowIndex) {\r\n var $row = this._getRowElements().eq(rowIndex);\r\n return $row.children()\r\n },\r\n _getCellElement: function(rowIndex, columnIdentifier) {\r\n var that = this;\r\n var $cell;\r\n var $cells = that.getCellElements(rowIndex);\r\n var columnVisibleIndex = that._getVisibleColumnIndex($cells, rowIndex, columnIdentifier);\r\n if ($cells.length && columnVisibleIndex >= 0) {\r\n $cell = $cells.eq(columnVisibleIndex)\r\n }\r\n if ($cell && $cell.length) {\r\n return $cell\r\n }\r\n },\r\n _getRowElement: function(rowIndex) {\r\n var that = this;\r\n var $rowElement = (0, _renderer.default)();\r\n var $tableElements = that.getTableElements();\r\n iteratorUtils.each($tableElements, function(_, tableElement) {\r\n $rowElement = $rowElement.add(that._getRowElements((0, _renderer.default)(tableElement)).eq(rowIndex))\r\n });\r\n if ($rowElement.length) {\r\n return $rowElement\r\n }\r\n },\r\n getCellElement: function(rowIndex, columnIdentifier) {\r\n return (0, _element.getPublicElement)(this._getCellElement(rowIndex, columnIdentifier))\r\n },\r\n getRowElement: function(rowIndex) {\r\n var $rows = this._getRowElement(rowIndex);\r\n var elements = [];\r\n if ($rows && !(0, _element.getPublicElement)($rows).get) {\r\n for (var i = 0; i < $rows.length; i++) {\r\n elements.push($rows[i])\r\n }\r\n } else {\r\n elements = $rows\r\n }\r\n return elements\r\n },\r\n _getVisibleColumnIndex: function($cells, rowIndex, columnIdentifier) {\r\n if ((0, _type.isString)(columnIdentifier)) {\r\n var columnIndex = this._columnsController.columnOption(columnIdentifier, \"index\");\r\n return this._columnsController.getVisibleIndex(columnIndex)\r\n }\r\n return columnIdentifier\r\n },\r\n getColumnElements: function() {},\r\n getColumns: function(rowIndex) {\r\n return this._columnsController.getVisibleColumns(rowIndex)\r\n },\r\n getCell: function(cellPosition, rows) {\r\n var $rows = rows || this._getRowElements();\r\n var $cells;\r\n if ($rows.length > 0 && cellPosition.rowIndex >= 0) {\r\n if (\"virtual\" !== this.option(\"scrolling.mode\")) {\r\n cellPosition.rowIndex = cellPosition.rowIndex < $rows.length ? cellPosition.rowIndex : $rows.length - 1\r\n }\r\n $cells = this.getCellElements(cellPosition.rowIndex);\r\n if ($cells && $cells.length > 0) {\r\n return $cells.eq($cells.length > cellPosition.columnIndex ? cellPosition.columnIndex : $cells.length - 1)\r\n }\r\n }\r\n },\r\n getRowsCount: function() {\r\n var tableElement = this.getTableElement();\r\n if (tableElement && 1 === tableElement.length) {\r\n return tableElement[0].rows.length\r\n }\r\n return 0\r\n },\r\n _getRowElementsCore: function(tableElement) {\r\n tableElement = tableElement || this.getTableElement();\r\n if (tableElement) {\r\n var tBodies = this.option(\"rowTemplate\") && tableElement.find(\"> tbody.\" + ROW_CLASS);\r\n return tBodies && tBodies.length ? tBodies : tableElement.find(\"> tbody > .\" + ROW_CLASS + \", > .\" + ROW_CLASS)\r\n }\r\n return (0, _renderer.default)()\r\n },\r\n _getRowElements: function(tableElement) {\r\n return this._getRowElementsCore(tableElement)\r\n },\r\n getRowIndex: function($row) {\r\n return this._getRowElements().index($row)\r\n },\r\n getBoundingRect: function() {},\r\n getName: function() {},\r\n setScrollerSpacing: function(width) {\r\n var that = this;\r\n var $element = that.element();\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n $element && $element.css({\r\n paddingLeft: rtlEnabled ? width : \"\",\r\n paddingRight: !rtlEnabled ? width : \"\"\r\n })\r\n },\r\n isScrollbarVisible: function(isHorizontal) {\r\n var $element = this.element();\r\n var $tableElement = this._tableElement;\r\n if ($element && $tableElement) {\r\n return isHorizontal ? $tableElement.outerWidth() - $element.width() > 0 : $tableElement.outerHeight() - $element.height() > 0\r\n }\r\n return false\r\n }\r\n});\r\nexports.ColumnsView = ColumnsView;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.sorting_mixin.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _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(true);\r\n var lastItemIndex = dataController._getLastItemIndex();\r\n var rowIndex = Math.min(visibleIndex, lastItemIndex);\r\n var focusedRowKey = dataController.getKeyByRowIndex(rowIndex, true);\r\n if ((0, _type.isDefined)(focusedRowKey) && !_this.isRowFocused(focusedRowKey)) {\r\n _this.option(\"focusedRowKey\", focusedRowKey)\r\n }\r\n }\r\n };\r\n if (pageSize >= 0) {\r\n if (!this._isLocalRowIndex(index)) {\r\n var pageIndex = Math.floor(index / dataController.pageSize());\r\n (0, _deferred.when)(dataController.pageIndex(pageIndex), dataController.waitReady()).done(function() {\r\n setKeyByIndex()\r\n })\r\n } else {\r\n setKeyByIndex()\r\n }\r\n }\r\n },\r\n _isLocalRowIndex: function(index) {\r\n var dataController = this.getController(\"data\");\r\n var isVirtualScrolling = this.getController(\"keyboardNavigation\")._isVirtualScrolling();\r\n if (isVirtualScrolling) {\r\n var pageIndex = Math.floor(index / dataController.pageSize());\r\n var virtualItems = dataController.virtualItemsCount();\r\n var virtualItemsBegin = virtualItems ? virtualItems.begin : -1;\r\n var visibleRowsCount = dataController.getVisibleRows().length + dataController.getRowIndexOffset();\r\n var visiblePagesCount = Math.ceil(visibleRowsCount / dataController.pageSize());\r\n return virtualItemsBegin <= index && visiblePagesCount > pageIndex\r\n }\r\n return true\r\n },\r\n _setFocusedRowKeyByIndex: function(index) {\r\n var dataController = this.getController(\"data\");\r\n if (this._isValidFocusedRowIndex(index)) {\r\n var rowIndex = Math.min(index - dataController.getRowIndexOffset(), dataController.items().length - 1);\r\n var focusedRowKey = dataController.getKeyByRowIndex(rowIndex);\r\n if ((0, _type.isDefined)(focusedRowKey) && !this.isRowFocused(focusedRowKey)) {\r\n this.option(\"focusedRowKey\", focusedRowKey)\r\n }\r\n }\r\n },\r\n _focusRowByKey: function(key) {\r\n if (!(0, _type.isDefined)(key)) {\r\n this._resetFocusedRow()\r\n } else {\r\n this._navigateToRow(key, true)\r\n }\r\n },\r\n _resetFocusedRow: function() {\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var isFocusedRowKeyDefined = (0, _type.isDefined)(focusedRowKey);\r\n if (!isFocusedRowKeyDefined && this.option(\"focusedRowIndex\") < 0) {\r\n return\r\n }\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n if (isFocusedRowKeyDefined) {\r\n this.option(\"focusedRowKey\", void 0)\r\n }\r\n keyboardController.setFocusedRowIndex(-1);\r\n this.option(\"focusedRowIndex\", -1);\r\n this.getController(\"data\").updateItems({\r\n changeType: \"updateFocusedRow\",\r\n focusedRowKey: void 0\r\n });\r\n keyboardController._fireFocusedRowChanged(void 0, -1)\r\n },\r\n _isValidFocusedRowIndex: function(rowIndex) {\r\n var dataController = this.getController(\"data\");\r\n var row = dataController.getVisibleRows()[rowIndex];\r\n return !row || \"data\" === row.rowType || \"group\" === row.rowType\r\n },\r\n publicMethods: function() {\r\n return [\"navigateToRow\", \"isRowFocused\"]\r\n },\r\n navigateToRow: function(key) {\r\n if (!this.isAutoNavigateToFocusedRow()) {\r\n this.option(\"focusedRowIndex\", -1)\r\n }\r\n this._navigateToRow(key)\r\n },\r\n _navigateToRow: function(key, needFocusRow) {\r\n var that = this;\r\n var dataController = that.getController(\"data\");\r\n var isAutoNavigate = that.isAutoNavigateToFocusedRow();\r\n var d = new _deferred.Deferred;\r\n if (void 0 === key || !dataController.dataSource()) {\r\n return d.reject().promise()\r\n }\r\n var rowIndexByKey = that.getFocusedRowIndexByKey(key);\r\n if (!isAutoNavigate && needFocusRow || rowIndexByKey >= 0) {\r\n that._navigateTo(key, d, needFocusRow)\r\n } else {\r\n dataController.getPageIndexByKey(key).done(function(pageIndex) {\r\n if (pageIndex < 0) {\r\n d.resolve(-1);\r\n return\r\n }\r\n if (pageIndex === dataController.pageIndex()) {\r\n dataController.reload().done(function() {\r\n if (that.isRowFocused(key)) {\r\n d.resolve(that.getFocusedRowIndexByKey(key))\r\n } else {\r\n that._navigateTo(key, d, needFocusRow)\r\n }\r\n }).fail(d.reject)\r\n } else {\r\n dataController.pageIndex(pageIndex).done(function() {\r\n that._navigateTo(key, d, needFocusRow)\r\n }).fail(d.reject)\r\n }\r\n }).fail(d.reject)\r\n }\r\n return d.promise()\r\n },\r\n _navigateTo: function(key, deferred, needFocusRow) {\r\n var visibleRowIndex = this.getController(\"data\").getRowIndexByKey(key);\r\n var isVirtualRowRenderingMode = \"virtual\" === this.option(\"scrolling.rowRenderingMode\");\r\n var isAutoNavigate = this.isAutoNavigateToFocusedRow();\r\n if (isAutoNavigate && isVirtualRowRenderingMode && visibleRowIndex < 0) {\r\n this._navigateToVirtualRow(key, deferred, needFocusRow)\r\n } else {\r\n this._navigateToVisibleRow(key, deferred, needFocusRow)\r\n }\r\n },\r\n _navigateToVisibleRow: function(key, deferred, needFocusRow) {\r\n if (needFocusRow) {\r\n this._triggerUpdateFocusedRow(key, deferred)\r\n } else {\r\n this.getView(\"rowsView\").scrollToRowElement(key)\r\n }\r\n },\r\n _navigateToVirtualRow: function(key, deferred, needFocusRow) {\r\n var that = this;\r\n var dataController = this.getController(\"data\");\r\n var rowsScrollController = dataController._rowsScrollController;\r\n var rowIndex = _uiGrid_core2.default.getIndexByKey(key, dataController.items(true));\r\n var scrollable = that.getView(\"rowsView\").getScrollable();\r\n if (rowsScrollController && scrollable && rowIndex >= 0) {\r\n var focusedRowIndex = rowIndex + dataController.getRowIndexOffset(true);\r\n var offset = rowsScrollController.getItemOffset(focusedRowIndex);\r\n if (needFocusRow) {\r\n var triggerUpdateFocusedRow = function triggerUpdateFocusedRow() {\r\n that.component.off(\"contentReady\", triggerUpdateFocusedRow);\r\n that._triggerUpdateFocusedRow(key, deferred)\r\n };\r\n that.component.on(\"contentReady\", triggerUpdateFocusedRow)\r\n }\r\n scrollable.scrollTo({\r\n y: offset\r\n })\r\n }\r\n },\r\n _triggerUpdateFocusedRow: function(key, deferred) {\r\n var dataController = this.getController(\"data\");\r\n var focusedRowIndex = this.getFocusedRowIndexByKey(key);\r\n if (this._isValidFocusedRowIndex(focusedRowIndex)) {\r\n if (this.option(\"focusedRowEnabled\")) {\r\n dataController.updateItems({\r\n changeType: \"updateFocusedRow\",\r\n focusedRowKey: key\r\n })\r\n } else {\r\n this.getView(\"rowsView\").scrollToRowElement(key)\r\n }\r\n this.getController(\"keyboardNavigation\").setFocusedRowIndex(focusedRowIndex);\r\n deferred && deferred.resolve(focusedRowIndex)\r\n } else {\r\n deferred && deferred.resolve(-1)\r\n }\r\n },\r\n getFocusedRowIndexByKey: function(key) {\r\n var dataController = this.getController(\"data\");\r\n var loadedRowIndex = dataController.getRowIndexByKey(key, true);\r\n return loadedRowIndex >= 0 ? loadedRowIndex + dataController.getRowIndexOffset(true) : -1\r\n },\r\n _focusRowByKeyOrIndex: function() {\r\n var _this2 = this;\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var currentFocusedRowIndex = this.option(\"focusedRowIndex\");\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var dataController = this.getController(\"data\");\r\n if ((0, _type.isDefined)(focusedRowKey)) {\r\n var visibleRowIndex = dataController.getRowIndexByKey(focusedRowKey);\r\n if (visibleRowIndex >= 0) {\r\n if (keyboardController._isVirtualScrolling()) {\r\n currentFocusedRowIndex = visibleRowIndex + dataController.getRowIndexOffset()\r\n }\r\n keyboardController.setFocusedRowIndex(currentFocusedRowIndex);\r\n this._triggerUpdateFocusedRow(focusedRowKey)\r\n } else {\r\n this._navigateToRow(focusedRowKey, true).done(function(focusedRowIndex) {\r\n if (currentFocusedRowIndex >= 0 && focusedRowIndex < 0) {\r\n _this2._focusRowByIndex()\r\n }\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 editing: {\r\n _deleteRowCore: function(rowIndex) {\r\n var _this5 = this;\r\n var deferred = this.callBase.apply(this, arguments);\r\n var dataController = this.getController(\"data\");\r\n var rowKey = dataController.getKeyByRowIndex(rowIndex);\r\n deferred.done(function() {\r\n var rowIndex = dataController.getRowIndexByKey(rowKey);\r\n var visibleRows = dataController.getVisibleRows();\r\n if (rowIndex === -1 && !visibleRows.length) {\r\n _this5.getController(\"focus\")._resetFocusedRow()\r\n }\r\n })\r\n }\r\n }\r\n },\r\n views: {\r\n rowsView: {\r\n _createRow: function(row) {\r\n var $row = this.callBase(row);\r\n if (this.option(\"focusedRowEnabled\") && row) {\r\n if (this.getController(\"focus\").isRowFocused(row.key)) {\r\n $row.addClass(ROW_FOCUSED_CLASS)\r\n }\r\n }\r\n return $row\r\n },\r\n _checkRowKeys: function(options) {\r\n this.callBase.apply(this, arguments);\r\n if (this.option(\"focusedRowEnabled\") && this.option(\"dataSource\")) {\r\n var store = this._dataController.store();\r\n if (store && !store.key()) {\r\n this._dataController.fireError(\"E1042\", \"Row focusing\")\r\n }\r\n }\r\n },\r\n _update: function(change) {\r\n if (\"updateFocusedRow\" === change.changeType) {\r\n if (this.option(\"focusedRowEnabled\")) {\r\n this.getController(\"focus\").updateFocusedRow(change)\r\n }\r\n } else {\r\n this.callBase(change)\r\n }\r\n },\r\n updateFocusElementTabIndex: function($cellElements, preventScroll) {\r\n if (this.option(\"focusedRowEnabled\")) {\r\n this._setFocusedRowElementTabIndex(preventScroll)\r\n } else {\r\n this.callBase($cellElements)\r\n }\r\n },\r\n _setFocusedRowElementTabIndex: function(preventScroll) {\r\n var _this6 = this;\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var tabIndex = this.option(\"tabIndex\") || 0;\r\n var dataController = this._dataController;\r\n var columnsController = this._columnsController;\r\n var rowIndex = dataController.getRowIndexByKey(focusedRowKey);\r\n var columnIndex = this.option(\"focusedColumnIndex\");\r\n var $row = this._findRowElementForTabIndex();\r\n if (!(0, _type.isDefined)(this._scrollToFocusOnResize)) {\r\n this._scrollToFocusOnResize = function() {\r\n _this6.scrollToElementVertically(_this6._findRowElementForTabIndex());\r\n _this6.resizeCompleted.remove(_this6._scrollToFocusOnResize)\r\n }\r\n }\r\n $row.attr(\"tabIndex\", tabIndex);\r\n if (rowIndex >= 0 && !preventScroll) {\r\n if (columnIndex < 0) {\r\n columnIndex = 0\r\n }\r\n rowIndex += dataController.getRowIndexOffset();\r\n columnIndex += columnsController.getColumnIndexOffset();\r\n this.getController(\"keyboardNavigation\").setFocusedCellPosition(rowIndex, columnIndex);\r\n if (this.getController(\"focus\").isAutoNavigateToFocusedRow()) {\r\n var dataSource = dataController.dataSource();\r\n var operationTypes = dataSource && dataSource.operationTypes();\r\n if (operationTypes && !operationTypes.paging && !dataController.isPagingByRendering()) {\r\n this.resizeCompleted.remove(this._scrollToFocusOnResize);\r\n this.resizeCompleted.add(this._scrollToFocusOnResize)\r\n }\r\n }\r\n }\r\n },\r\n _findRowElementForTabIndex: function() {\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var rowIndex = this._dataController.getRowIndexByKey(focusedRowKey);\r\n return (0, _renderer.default)(this.getRowElement(rowIndex >= 0 ? rowIndex : 0))\r\n },\r\n scrollToRowElement: function(key) {\r\n var rowIndex = this.getController(\"data\").getRowIndexByKey(key);\r\n var $row = (0, _renderer.default)(this.getRow(rowIndex));\r\n this.scrollToElementVertically($row)\r\n },\r\n scrollToElementVertically: function($row) {\r\n var scrollable = this.getScrollable();\r\n if (scrollable) {\r\n var position = scrollable.getScrollElementPosition($row, \"vertical\");\r\n scrollable.scrollTo({\r\n top: position\r\n })\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.virtual_columns.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiGrid_core = require(\"./ui.grid_core.columns_view\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core2 = require(\"./ui.grid_core.accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar CELL_CONTENT_CLASS = \"text-content\";\r\nvar HEADERS_CLASS = \"headers\";\r\nvar NOWRAP_CLASS = \"nowrap\";\r\nvar ROW_CLASS_SELECTOR = \".dx-row\";\r\nvar HEADER_ROW_CLASS = \"dx-header-row\";\r\nvar COLUMN_LINES_CLASS = \"dx-column-lines\";\r\nvar CONTEXT_MENU_SORT_ASC_ICON = \"context-menu-sort-asc\";\r\nvar CONTEXT_MENU_SORT_DESC_ICON = \"context-menu-sort-desc\";\r\nvar CONTEXT_MENU_SORT_NONE_ICON = \"context-menu-sort-none\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar VISIBILITY_HIDDEN_CLASS = \"dx-visibility-hidden\";\r\nvar TEXT_CONTENT_ALIGNMENT_CLASS_PREFIX = \"dx-text-content-alignment-\";\r\nvar SORT_INDICATOR_CLASS = \"dx-sort-indicator\";\r\nvar SORT_INDEX_INDICATOR_CLASS = \"dx-sort-index-indicator\";\r\nvar HEADER_FILTER_CLASS_SELECTOR = \".dx-header-filter\";\r\nvar HEADER_FILTER_INDICATOR_CLASS = \"dx-header-filter-indicator\";\r\nvar MULTI_ROW_HEADER_CLASS = \"dx-header-multi-row\";\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n showColumnHeaders: true,\r\n cellHintEnabled: true\r\n }\r\n },\r\n views: {\r\n columnHeadersView: _uiGrid_core.ColumnsView.inherit(function() {\r\n var createCellContent = function(that, $cell, options) {\r\n var $cellContent = (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(CELL_CONTENT_CLASS));\r\n that.setAria(\"role\", \"presentation\", $cellContent);\r\n addCssClassesToCellContent(that, $cell, options.column, $cellContent);\r\n var showColumnLines = that.option(\"showColumnLines\");\r\n var contentAlignment = that.getController(\"columns\").getHeaderContentAlignment(options.column.alignment);\r\n return $cellContent[showColumnLines || \"right\" === contentAlignment ? \"appendTo\" : \"prependTo\"]($cell)\r\n };\r\n\r\n function addCssClassesToCellContent(that, $cell, column, $cellContent) {\r\n var $indicatorElements = that._getIndicatorElements($cell, true);\r\n var $visibleIndicatorElements = that._getIndicatorElements($cell);\r\n var indicatorCount = $indicatorElements && $indicatorElements.length;\r\n var columnAlignment = that._getColumnAlignment(column.alignment);\r\n var sortIndicatorClassName = \".\".concat(that._getIndicatorClassName(\"sort\"));\r\n var sortIndexIndicatorClassName = \".\".concat(that._getIndicatorClassName(\"sortIndex\"));\r\n var $sortIndicator = $visibleIndicatorElements.filter(sortIndicatorClassName);\r\n var $sortIndexIndicator = $visibleIndicatorElements.children().filter(sortIndexIndicatorClassName);\r\n $cellContent = $cellContent || $cell.children(\".\" + that.addWidgetPrefix(CELL_CONTENT_CLASS));\r\n $cellContent.toggleClass(TEXT_CONTENT_ALIGNMENT_CLASS_PREFIX + columnAlignment, indicatorCount > 0).toggleClass(TEXT_CONTENT_ALIGNMENT_CLASS_PREFIX + (\"left\" === columnAlignment ? \"right\" : \"left\"), indicatorCount > 0 && \"center\" === column.alignment).toggleClass(SORT_INDICATOR_CLASS, !!$sortIndicator.length).toggleClass(SORT_INDEX_INDICATOR_CLASS, !!$sortIndexIndicator.length).toggleClass(HEADER_FILTER_INDICATOR_CLASS, !!$visibleIndicatorElements.filter(\".\" + that._getIndicatorClassName(\"headerFilter\")).length)\r\n }\r\n return {\r\n _createTable: function() {\r\n var $table = this.callBase.apply(this, arguments);\r\n _events_engine.default.on($table, \"mousedown selectstart\", this.createAction(function(e) {\r\n var event = e.event;\r\n if (event.shiftKey) {\r\n event.preventDefault()\r\n }\r\n }));\r\n return $table\r\n },\r\n _isLegacyKeyboardNavigation: function() {\r\n return this.option(\"useLegacyKeyboardNavigation\")\r\n },\r\n _getDefaultTemplate: function(column) {\r\n var that = this;\r\n return function($container, options) {\r\n var $content = column.command ? $container : createCellContent(that, $container, options);\r\n var caption = \"expand\" !== column.command && column.caption;\r\n if (caption) {\r\n $content.text(caption)\r\n } else {\r\n if (column.command) {\r\n $container.html(\" \")\r\n }\r\n }\r\n }\r\n },\r\n _getHeaderTemplate: function(column) {\r\n return column.headerCellTemplate || {\r\n allowRenderToDetachedContainer: true,\r\n render: this._getDefaultTemplate(column)\r\n }\r\n },\r\n _processTemplate: function(template, options) {\r\n var that = this;\r\n var resultTemplate;\r\n var column = options.column;\r\n var renderingTemplate = that.callBase(template);\r\n if (\"header\" === options.rowType && renderingTemplate && column.headerCellTemplate && !column.command) {\r\n resultTemplate = {\r\n render: function(options) {\r\n var $content = createCellContent(that, options.container, options.model);\r\n renderingTemplate.render((0, _extend.extend)({}, options, {\r\n container: $content\r\n }))\r\n }\r\n }\r\n } else {\r\n resultTemplate = renderingTemplate\r\n }\r\n return resultTemplate\r\n },\r\n _handleDataChanged: function(e) {\r\n if (\"refresh\" !== e.changeType) {\r\n return\r\n }\r\n if (this._isGroupingChanged || this._requireReady) {\r\n this._isGroupingChanged = false;\r\n this.render()\r\n }\r\n },\r\n _renderCell: function($row, options) {\r\n var $cell = this.callBase($row, options);\r\n if (\"header\" === options.row.rowType) {\r\n $cell.addClass(CELL_FOCUS_DISABLED_CLASS);\r\n if (!this._isLegacyKeyboardNavigation()) {\r\n if (options.column && !options.column.type) {\r\n $cell.attr(\"tabindex\", this.option(\"tabindex\") || 0)\r\n }\r\n }\r\n }\r\n return $cell\r\n },\r\n _setCellAriaAttributes: function($cell, cellOptions) {\r\n this.callBase($cell, cellOptions);\r\n if (\"header\" === cellOptions.rowType) {\r\n this.setAria(\"role\", \"columnheader\", $cell);\r\n if (cellOptions.column && !cellOptions.column.command && !cellOptions.column.isBand) {\r\n $cell.attr(\"id\", cellOptions.column.headerId);\r\n this.setAria(\"label\", _message.default.format(\"dxDataGrid-ariaColumn\") + \" \" + cellOptions.column.caption, $cell)\r\n }\r\n }\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row).toggleClass(COLUMN_LINES_CLASS, this.option(\"showColumnLines\"));\r\n if (\"header\" === row.rowType) {\r\n $row.addClass(HEADER_ROW_CLASS);\r\n if (!this._isLegacyKeyboardNavigation()) {\r\n (0, _uiGrid_core2.registerKeyboardAction)(\"columnHeaders\", this, $row, \"td\", this._handleActionKeyDown.bind(this))\r\n }\r\n }\r\n return $row\r\n },\r\n _handleActionKeyDown: function(args) {\r\n var event = args.event;\r\n var $target = (0, _renderer.default)(event.target);\r\n this._lastActionElement = event.target;\r\n if ($target.is(HEADER_FILTER_CLASS_SELECTOR)) {\r\n var headerFilterController = this.getController(\"headerFilter\");\r\n var $column = $target.closest(\"td\");\r\n var columnIndex = this.getColumnIndexByElement($column);\r\n if (columnIndex >= 0) {\r\n headerFilterController.showHeaderFilterMenu(columnIndex, false)\r\n }\r\n } else {\r\n var $row = $target.closest(ROW_CLASS_SELECTOR);\r\n this._processHeaderAction(event, $row)\r\n }\r\n event.preventDefault()\r\n },\r\n _renderCore: function() {\r\n var that = this;\r\n var $container = that.element();\r\n if (that._tableElement && !that._dataController.isLoaded() && !that._hasRowElements) {\r\n return\r\n }\r\n $container.addClass(that.addWidgetPrefix(HEADERS_CLASS)).toggleClass(that.addWidgetPrefix(NOWRAP_CLASS), !that.option(\"wordWrapEnabled\")).empty();\r\n that.setAria(\"role\", \"presentation\", $container);\r\n that._updateContent(that._renderTable());\r\n if (that.getRowCount() > 1) {\r\n $container.addClass(MULTI_ROW_HEADER_CLASS)\r\n }\r\n that.callBase.apply(that, arguments)\r\n },\r\n _renderRows: function() {\r\n var that = this;\r\n if (that._dataController.isLoaded() || that._hasRowElements) {\r\n that.callBase.apply(that, arguments);\r\n that._hasRowElements = true\r\n }\r\n },\r\n _getRowVisibleColumns: function(rowIndex) {\r\n return this._columnsController.getVisibleColumns(rowIndex)\r\n },\r\n _renderRow: function($table, options) {\r\n options.columns = this._getRowVisibleColumns(options.row.rowIndex);\r\n this.callBase($table, options)\r\n },\r\n _createCell: function(options) {\r\n var column = options.column;\r\n var $cellElement = this.callBase.apply(this, arguments);\r\n column.rowspan > 1 && \"header\" === options.rowType && $cellElement.attr(\"rowSpan\", column.rowspan);\r\n return $cellElement\r\n },\r\n _getRows: function() {\r\n var result = [];\r\n var rowCount = this.getRowCount();\r\n if (this.option(\"showColumnHeaders\")) {\r\n for (var i = 0; i < rowCount; i++) {\r\n result.push({\r\n rowType: \"header\",\r\n rowIndex: i\r\n })\r\n }\r\n }\r\n return result\r\n },\r\n _getCellTemplate: function(options) {\r\n if (\"header\" === options.rowType) {\r\n return this._getHeaderTemplate(options.column)\r\n }\r\n },\r\n _columnOptionChanged: function(e) {\r\n var changeTypes = e.changeTypes;\r\n var optionNames = e.optionNames;\r\n if (changeTypes.grouping) {\r\n this._isGroupingChanged = true;\r\n return\r\n }\r\n this.callBase(e);\r\n if (optionNames.width || optionNames.visible) {\r\n this.resizeCompleted.fire()\r\n }\r\n },\r\n _isElementVisible: function(elementOptions) {\r\n return elementOptions && elementOptions.visible\r\n },\r\n _alignCaptionByCenter: function($cell) {\r\n var $indicatorsContainer = this._getIndicatorContainer($cell, true);\r\n if ($indicatorsContainer && $indicatorsContainer.length) {\r\n $indicatorsContainer.filter(\".\" + VISIBILITY_HIDDEN_CLASS).remove();\r\n $indicatorsContainer = this._getIndicatorContainer($cell);\r\n $indicatorsContainer.clone().addClass(VISIBILITY_HIDDEN_CLASS).css(\"float\", \"\").insertBefore($cell.children(\".\" + this.addWidgetPrefix(CELL_CONTENT_CLASS)))\r\n }\r\n },\r\n _updateCell: function($cell, options) {\r\n if (\"header\" === options.rowType && \"center\" === options.column.alignment) {\r\n this._alignCaptionByCenter($cell)\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _updateIndicator: function($cell, column, indicatorName) {\r\n var $indicatorElement = this.callBase.apply(this, arguments);\r\n if (\"center\" === column.alignment) {\r\n this._alignCaptionByCenter($cell)\r\n }\r\n addCssClassesToCellContent(this, $cell, column);\r\n return $indicatorElement\r\n },\r\n _getIndicatorContainer: function($cell, returnAll) {\r\n var $indicatorsContainer = this.callBase($cell);\r\n return returnAll ? $indicatorsContainer : $indicatorsContainer.filter(\":not(.\" + VISIBILITY_HIDDEN_CLASS + \")\")\r\n },\r\n _isSortableElement: function() {\r\n return true\r\n },\r\n getHeadersRowHeight: function() {\r\n var $tableElement = this.getTableElement();\r\n var $headerRows = $tableElement && $tableElement.find(\".\" + HEADER_ROW_CLASS);\r\n return $headerRows && $headerRows.toArray().reduce(function(sum, headerRow) {\r\n return sum + (0, _renderer.default)(headerRow).height()\r\n }, 0) || 0\r\n },\r\n getHeaderElement: function(index) {\r\n var columnElements = this.getColumnElements();\r\n return columnElements && columnElements.eq(index)\r\n },\r\n getColumnElements: function(index, bandColumnIndex) {\r\n var that = this;\r\n var $cellElement;\r\n var columnsController = that._columnsController;\r\n var rowCount = that.getRowCount();\r\n if (that.option(\"showColumnHeaders\")) {\r\n if (rowCount > 1 && (!(0, _type.isDefined)(index) || (0, _type.isDefined)(bandColumnIndex))) {\r\n var result = [];\r\n var visibleColumns = (0, _type.isDefined)(bandColumnIndex) ? columnsController.getChildrenByBandColumn(bandColumnIndex, true) : columnsController.getVisibleColumns();\r\n (0, _iterator.each)(visibleColumns, function(_, column) {\r\n var rowIndex = (0, _type.isDefined)(index) ? index : columnsController.getRowIndex(column.index);\r\n $cellElement = that._getCellElement(rowIndex, columnsController.getVisibleIndex(column.index, rowIndex));\r\n $cellElement && result.push($cellElement.get(0))\r\n });\r\n return (0, _renderer.default)(result)\r\n } else {\r\n if (!index || index < rowCount) {\r\n return that.getCellElements(index || 0)\r\n }\r\n }\r\n }\r\n },\r\n getColumnIndexByElement: function($cell) {\r\n var cellIndex = this.getCellIndex($cell);\r\n var $row = $cell.closest(\".dx-row\");\r\n var rowIndex = $row[0].rowIndex;\r\n var column = this.getColumns(rowIndex)[cellIndex];\r\n return column ? column.index : -1\r\n },\r\n getVisibleColumnIndex: function(columnIndex, rowIndex) {\r\n var column = this.getColumns()[columnIndex];\r\n return column ? this._columnsController.getVisibleIndex(column.index, rowIndex) : -1\r\n },\r\n getColumnWidths: function() {\r\n var $columnElements = this.getColumnElements();\r\n if ($columnElements && $columnElements.length) {\r\n return this._getWidths($columnElements)\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n allowDragging: function(column, sourceLocation, draggingPanels) {\r\n var i;\r\n var draggableColumnCount = 0;\r\n var rowIndex = column && this._columnsController.getRowIndex(column.index);\r\n var columns = this.getColumns(0 === rowIndex ? 0 : null);\r\n var canHideColumn = (null === column || void 0 === column ? void 0 : column.allowHiding) && columns.length > 1;\r\n var allowDrag = function(column) {\r\n return column.allowReordering || column.allowGrouping || column.allowHiding\r\n };\r\n for (i = 0; i < columns.length; i++) {\r\n if (allowDrag(columns[i])) {\r\n draggableColumnCount++\r\n }\r\n }\r\n if (draggableColumnCount <= 1 && !canHideColumn) {\r\n return false\r\n } else {\r\n if (!draggingPanels) {\r\n return (this.option(\"allowColumnReordering\") || this._columnsController.isColumnOptionUsed(\"allowReordering\")) && column && column.allowReordering\r\n }\r\n }\r\n for (i = 0; i < draggingPanels.length; i++) {\r\n var draggingPanel = draggingPanels[i];\r\n if (draggingPanel && draggingPanel.allowDragging(column, sourceLocation)) {\r\n return true\r\n }\r\n }\r\n return false\r\n },\r\n getBoundingRect: function() {\r\n var that = this;\r\n var $columnElements = that.getColumnElements();\r\n if ($columnElements && $columnElements.length) {\r\n var offset = that.getTableElement().offset();\r\n return {\r\n top: offset.top\r\n }\r\n }\r\n return null\r\n },\r\n getName: function() {\r\n return \"headers\"\r\n },\r\n getColumnCount: function() {\r\n var $columnElements = this.getColumnElements();\r\n return $columnElements ? $columnElements.length : 0\r\n },\r\n isVisible: function() {\r\n return this.option(\"showColumnHeaders\")\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"showColumnHeaders\":\r\n case \"wordWrapEnabled\":\r\n case \"showColumnLines\":\r\n that._invalidate(true, true);\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n },\r\n getHeight: function() {\r\n return this.getElementHeight()\r\n },\r\n getContextMenuItems: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n if (options.row && (\"header\" === options.row.rowType || \"detailAdaptive\" === options.row.rowType)) {\r\n var sortingOptions = that.option(\"sorting\");\r\n if (sortingOptions && \"none\" !== sortingOptions.mode && column && column.allowSorting) {\r\n var onItemClick = function(params) {\r\n setTimeout(function() {\r\n that._columnsController.changeSortOrder(column.index, params.itemData.value)\r\n })\r\n };\r\n return [{\r\n text: sortingOptions.ascendingText,\r\n value: \"asc\",\r\n disabled: \"asc\" === column.sortOrder,\r\n icon: CONTEXT_MENU_SORT_ASC_ICON,\r\n onItemClick: onItemClick\r\n }, {\r\n text: sortingOptions.descendingText,\r\n value: \"desc\",\r\n disabled: \"desc\" === column.sortOrder,\r\n icon: CONTEXT_MENU_SORT_DESC_ICON,\r\n onItemClick: onItemClick\r\n }, {\r\n text: sortingOptions.clearText,\r\n value: \"none\",\r\n disabled: !column.sortOrder,\r\n icon: CONTEXT_MENU_SORT_NONE_ICON,\r\n onItemClick: onItemClick\r\n }]\r\n }\r\n }\r\n },\r\n getRowCount: function() {\r\n return this._columnsController && this._columnsController.getRowCount()\r\n },\r\n setRowsOpacity: function(columnIndex, value, rowIndex) {\r\n var that = this;\r\n var i;\r\n var columnElements;\r\n var rowCount = that.getRowCount();\r\n var columns = that._columnsController.getColumns();\r\n var column = columns && columns[columnIndex];\r\n var columnID = column && column.isBand && column.index;\r\n var setColumnOpacity = function(index, column) {\r\n if (column.ownerBand === columnID) {\r\n columnElements.eq(index).css({\r\n opacity: value\r\n });\r\n if (column.isBand) {\r\n that.setRowsOpacity(column.index, value, i + 1)\r\n }\r\n }\r\n };\r\n if ((0, _type.isDefined)(columnID)) {\r\n rowIndex = rowIndex || 0;\r\n for (i = rowIndex; i < rowCount; i++) {\r\n columnElements = that.getCellElements(i);\r\n (0, _iterator.each)(that.getColumns(i), setColumnOpacity)\r\n }\r\n }\r\n }\r\n }\r\n }())\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/filter_builder/filter_builder.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _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, criteria, groupLevel + 1).appendTo($groupContent)\r\n } else {\r\n if ((0, _utils2.isCondition)(innerCriteria)) {\r\n this._createConditionElement(innerCriteria, criteria).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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _uiData_grid = _interopRequireDefault(require(\"../data_grid/ui.data_grid.core\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\r\nvar _array_utils = require(\"../../data/array_utils\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _uiData_grid.default.Controller.inherit(function() {\r\n function cloneItems(items, groupCount) {\r\n if (items) {\r\n items = items.slice(0);\r\n if (groupCount) {\r\n for (var i = 0; i < items.length; i++) {\r\n items[i] = (0, _extend.extend)({\r\n key: items[i].key\r\n }, items[i]);\r\n items[i].items = cloneItems(items[i].items, groupCount - 1)\r\n }\r\n }\r\n }\r\n return items\r\n }\r\n\r\n function calculateOperationTypes(loadOptions, lastLoadOptions, isFullReload) {\r\n var operationTypes = {\r\n reload: true,\r\n fullReload: true\r\n };\r\n if (lastLoadOptions) {\r\n operationTypes = {\r\n sorting: !_uiData_grid.default.equalSortParameters(loadOptions.sort, lastLoadOptions.sort),\r\n grouping: !_uiData_grid.default.equalSortParameters(loadOptions.group, lastLoadOptions.group, true),\r\n groupExpanding: !_uiData_grid.default.equalSortParameters(loadOptions.group, lastLoadOptions.group) || lastLoadOptions.groupExpand,\r\n filtering: !_uiData_grid.default.equalFilterParameters(loadOptions.filter, lastLoadOptions.filter),\r\n pageIndex: loadOptions.pageIndex !== lastLoadOptions.pageIndex,\r\n skip: loadOptions.skip !== lastLoadOptions.skip,\r\n take: loadOptions.take !== lastLoadOptions.take,\r\n fullReload: isFullReload\r\n };\r\n operationTypes.reload = isFullReload || operationTypes.sorting || operationTypes.grouping || operationTypes.filtering;\r\n operationTypes.paging = operationTypes.pageIndex || operationTypes.take\r\n }\r\n return operationTypes\r\n }\r\n\r\n function executeTask(action, timeout) {\r\n if ((0, _type.isDefined)(timeout)) {\r\n (0, _common.executeAsync)(action, timeout)\r\n } else {\r\n action()\r\n }\r\n }\r\n\r\n function createEmptyPagesData() {\r\n return {\r\n pages: {}\r\n }\r\n }\r\n\r\n function getPageDataFromCache(options) {\r\n return options.cachedPagesData.pages[options.pageIndex]\r\n }\r\n\r\n function setPageDataToCache(options, data) {\r\n var pageIndex = options.pageIndex;\r\n if (void 0 !== pageIndex) {\r\n options.cachedPagesData.pages[pageIndex] = data\r\n }\r\n }\r\n return {\r\n init: function(dataSource, remoteOperations) {\r\n var that = this;\r\n that._dataSource = dataSource;\r\n that._remoteOperations = remoteOperations || {};\r\n that._isLastPage = !dataSource.isLastPage();\r\n that._hasLastPage = false;\r\n that._currentTotalCount = 0;\r\n that._cachedPagesData = createEmptyPagesData();\r\n that._lastOperationTypes = {};\r\n that._eventsStrategy = dataSource._eventsStrategy;\r\n that._skipCorrection = 0;\r\n that._isLoadingAll = false;\r\n that.changed = (0, _callbacks.default)();\r\n that.loadingChanged = (0, _callbacks.default)();\r\n that.loadError = (0, _callbacks.default)();\r\n that.customizeStoreLoadOptions = (0, _callbacks.default)();\r\n that.changing = (0, _callbacks.default)();\r\n that._dataChangedHandler = that._handleDataChanged.bind(that);\r\n that._dataLoadingHandler = that._handleDataLoading.bind(that);\r\n that._dataLoadedHandler = that._handleDataLoaded.bind(that);\r\n that._loadingChangedHandler = that._handleLoadingChanged.bind(that);\r\n that._loadErrorHandler = that._handleLoadError.bind(that);\r\n that._pushHandler = that._handlePush.bind(that);\r\n that._changingHandler = that._handleChanging.bind(that);\r\n dataSource.on(\"changed\", that._dataChangedHandler);\r\n dataSource.on(\"customizeStoreLoadOptions\", that._dataLoadingHandler);\r\n dataSource.on(\"customizeLoadResult\", that._dataLoadedHandler);\r\n dataSource.on(\"loadingChanged\", that._loadingChangedHandler);\r\n dataSource.on(\"loadError\", that._loadErrorHandler);\r\n dataSource.on(\"changing\", that._changingHandler);\r\n dataSource.store().on(\"push\", that._pushHandler);\r\n (0, _iterator.each)(dataSource, function(memberName, member) {\r\n if (!that[memberName] && (0, _type.isFunction)(member)) {\r\n that[memberName] = function() {\r\n return this._dataSource[memberName].apply(this._dataSource, arguments)\r\n }\r\n }\r\n })\r\n },\r\n remoteOperations: function() {\r\n return this._remoteOperations\r\n },\r\n dispose: function(isSharedDataSource) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var store = dataSource.store();\r\n dataSource.off(\"changed\", that._dataChangedHandler);\r\n dataSource.off(\"customizeStoreLoadOptions\", that._dataLoadingHandler);\r\n dataSource.off(\"customizeLoadResult\", that._dataLoadedHandler);\r\n dataSource.off(\"loadingChanged\", that._loadingChangedHandler);\r\n dataSource.off(\"loadError\", that._loadErrorHandler);\r\n dataSource.off(\"changing\", that._changingHandler);\r\n store && store.off(\"push\", that._pushHandler);\r\n if (!isSharedDataSource) {\r\n dataSource.dispose()\r\n }\r\n },\r\n refresh: function(options, operationTypes) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n if (operationTypes.reload) {\r\n that.resetCurrentTotalCount();\r\n that._isLastPage = !dataSource.paginate();\r\n that._hasLastPage = that._isLastPage\r\n }\r\n },\r\n resetCurrentTotalCount: function() {\r\n this._currentTotalCount = 0;\r\n this._skipCorrection = 0\r\n },\r\n resetCache: function() {\r\n this._cachedStoreData = void 0;\r\n this._cachedPagingData = void 0\r\n },\r\n resetPagesCache: function() {\r\n this._cachedPagesData = createEmptyPagesData()\r\n },\r\n _needClearStoreDataCache: function() {\r\n var remoteOperations = this.remoteOperations();\r\n var operationTypes = calculateOperationTypes(this._lastLoadOptions || {}, {});\r\n var isLocalOperations = Object.keys(remoteOperations).every(function(operationName) {\r\n return !operationTypes[operationName] || !remoteOperations[operationName]\r\n });\r\n return !isLocalOperations\r\n },\r\n push: function(changes, fromStore) {\r\n var store = this.store();\r\n if (this._needClearStoreDataCache()) {\r\n this._cachedStoreData = void 0\r\n }\r\n this._cachedPagingData = void 0;\r\n this.resetPagesCache(true);\r\n if (this._cachedStoreData) {\r\n (0, _array_utils.applyBatch)({\r\n keyInfo: store,\r\n data: this._cachedStoreData,\r\n changes: changes\r\n })\r\n }\r\n if (!fromStore) {\r\n this._applyBatch(changes)\r\n }\r\n },\r\n getDataIndexGetter: function() {\r\n var _this = this;\r\n if (!this._dataIndexGetter) {\r\n var indexByKey;\r\n var storeData;\r\n var store = this.store();\r\n this._dataIndexGetter = function(data) {\r\n var isCacheUpdated = storeData && storeData !== _this._cachedStoreData;\r\n if (!indexByKey || isCacheUpdated) {\r\n storeData = _this._cachedStoreData || [];\r\n indexByKey = {};\r\n for (var i = 0; i < storeData.length; i++) {\r\n indexByKey[(0, _common.getKeyHash)(store.keyOf(storeData[i]))] = i\r\n }\r\n }\r\n return indexByKey[(0, _common.getKeyHash)(store.keyOf(data))]\r\n }\r\n }\r\n return this._dataIndexGetter\r\n },\r\n _getKeyInfo: function() {\r\n return this.store()\r\n },\r\n _applyBatch: function(changes) {\r\n var _this2 = this;\r\n var keyInfo = this._getKeyInfo();\r\n var dataSource = this._dataSource;\r\n var groupCount = _uiData_grid.default.normalizeSortingInfo(this.group()).length;\r\n var totalCount = this.totalCount();\r\n var isVirtualMode = \"virtual\" === this.option(\"scrolling.mode\");\r\n changes = changes.filter(function(change) {\r\n return !dataSource.paginate() || \"insert\" !== change.type || void 0 !== change.index\r\n });\r\n var getItemCount = function() {\r\n return groupCount ? _this2.itemsCount() : _this2._items.length\r\n };\r\n var oldItemCount = getItemCount();\r\n (0, _array_utils.applyBatch)({\r\n keyInfo: keyInfo,\r\n data: this._items,\r\n changes: changes,\r\n groupCount: groupCount,\r\n useInsertIndex: true\r\n });\r\n (0, _array_utils.applyBatch)({\r\n keyInfo: keyInfo,\r\n data: dataSource.items(),\r\n changes: changes,\r\n groupCount: groupCount,\r\n useInsertIndex: true\r\n });\r\n if (this._currentTotalCount > 0 || isVirtualMode && totalCount === oldItemCount) {\r\n this._skipCorrection += getItemCount() - oldItemCount\r\n }\r\n changes.splice(0, changes.length)\r\n },\r\n _handlePush: function(changes) {\r\n this.push(changes, true)\r\n },\r\n _handleChanging: function(e) {\r\n this.changing.fire(e);\r\n this._applyBatch(e.changes)\r\n },\r\n _needCleanCacheByOperation: function(operationType, remoteOperations) {\r\n var operationTypesByOrder = [\"filtering\", \"sorting\", \"paging\"];\r\n var operationTypeIndex = operationTypesByOrder.indexOf(operationType);\r\n var currentOperationTypes = operationTypeIndex >= 0 ? operationTypesByOrder.slice(operationTypeIndex) : [operationType];\r\n return currentOperationTypes.some(function(operationType) {\r\n return remoteOperations[operationType]\r\n })\r\n },\r\n _customizeRemoteOperations: function(options, operationTypes) {\r\n var that = this;\r\n var cachedStoreData = that._cachedStoreData;\r\n var cachedPagingData = that._cachedPagingData;\r\n var cachedPagesData = that._cachedPagesData;\r\n if (options.storeLoadOptions.filter && !options.remoteOperations.filtering || options.storeLoadOptions.sort && !options.remoteOperations.sorting) {\r\n options.remoteOperations = {\r\n filtering: options.remoteOperations.filtering\r\n }\r\n }\r\n if (operationTypes.fullReload) {\r\n cachedStoreData = void 0;\r\n cachedPagingData = void 0;\r\n cachedPagesData = createEmptyPagesData()\r\n } else {\r\n if (operationTypes.reload) {\r\n cachedPagingData = void 0;\r\n cachedPagesData = createEmptyPagesData()\r\n } else {\r\n if (operationTypes.take || operationTypes.groupExpanding) {\r\n cachedPagesData = createEmptyPagesData()\r\n }\r\n }(0, _iterator.each)(operationTypes, function(operationType, value) {\r\n if (value && that._needCleanCacheByOperation(operationType, options.remoteOperations)) {\r\n cachedStoreData = void 0;\r\n cachedPagingData = void 0\r\n }\r\n })\r\n }\r\n if (cachedPagingData) {\r\n options.remoteOperations.paging = false\r\n }\r\n options.cachedStoreData = cachedStoreData;\r\n options.cachedPagingData = cachedPagingData;\r\n options.cachedPagesData = cachedPagesData;\r\n if (!options.isCustomLoading) {\r\n that._cachedStoreData = cachedStoreData;\r\n that._cachedPagingData = cachedPagingData;\r\n that._cachedPagesData = cachedPagesData\r\n }\r\n },\r\n _handleDataLoading: function(options) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var lastLoadOptions = that._lastLoadOptions;\r\n that.customizeStoreLoadOptions.fire(options);\r\n options.delay = this.option(\"loadingTimeout\");\r\n options.originalStoreLoadOptions = options.storeLoadOptions;\r\n options.remoteOperations = (0, _extend.extend)({}, this.remoteOperations());\r\n var isFullReload = !that.isLoaded() && !that._isRefreshing;\r\n if (that.option(\"integrationOptions.renderedOnServer\") && !that.isLoaded()) {\r\n options.delay = void 0\r\n }\r\n var loadOptions = (0, _extend.extend)({\r\n pageIndex: that.pageIndex()\r\n }, options.storeLoadOptions);\r\n var operationTypes = calculateOperationTypes(loadOptions, lastLoadOptions, isFullReload);\r\n that._customizeRemoteOperations(options, operationTypes);\r\n if (!options.isCustomLoading) {\r\n var isRefreshing = that._isRefreshing;\r\n options.pageIndex = dataSource.pageIndex();\r\n options.lastLoadOptions = loadOptions;\r\n options.operationTypes = operationTypes;\r\n that._loadingOperationTypes = operationTypes;\r\n that._isRefreshing = true;\r\n (0, _deferred.when)(isRefreshing || that._isRefreshed || that.refresh(options, operationTypes)).done(function() {\r\n if (that._lastOperationId === options.operationId) {\r\n that._isRefreshed = true;\r\n that.load().always(function() {\r\n that._isRefreshed = false\r\n })\r\n }\r\n }).fail(function() {\r\n dataSource.cancel(options.operationId)\r\n }).always(function() {\r\n that._isRefreshing = false\r\n });\r\n dataSource.cancel(that._lastOperationId);\r\n that._lastOperationId = options.operationId;\r\n if (that._isRefreshing) {\r\n dataSource.cancel(that._lastOperationId)\r\n }\r\n }\r\n this._handleDataLoadingCore(options)\r\n },\r\n _handleDataLoadingCore: function(options) {\r\n var remoteOperations = options.remoteOperations;\r\n options.loadOptions = {};\r\n var cachedExtra = options.cachedPagesData.extra;\r\n var localLoadOptionNames = {\r\n filter: !remoteOperations.filtering,\r\n sort: !remoteOperations.sorting,\r\n group: !remoteOperations.grouping,\r\n summary: !remoteOperations.summary,\r\n skip: !remoteOperations.paging,\r\n take: !remoteOperations.paging,\r\n requireTotalCount: cachedExtra && \"totalCount\" in cachedExtra || !remoteOperations.paging\r\n };\r\n (0, _iterator.each)(options.storeLoadOptions, function(optionName, optionValue) {\r\n if (localLoadOptionNames[optionName]) {\r\n options.loadOptions[optionName] = optionValue;\r\n delete options.storeLoadOptions[optionName]\r\n }\r\n });\r\n if (cachedExtra) {\r\n options.extra = cachedExtra\r\n }\r\n options.data = getPageDataFromCache(options) || options.cachedStoreData\r\n },\r\n _handleDataLoaded: function(options) {\r\n var _this3 = this;\r\n var loadOptions = options.loadOptions;\r\n var localPaging = options.remoteOperations && !options.remoteOperations.paging;\r\n var cachedPagesData = options.cachedPagesData;\r\n var storeLoadOptions = options.storeLoadOptions;\r\n var needCache = false !== this.option(\"cacheEnabled\") && storeLoadOptions;\r\n var needPageCache = needCache && !options.isCustomLoading && cachedPagesData && (!localPaging || storeLoadOptions.group) && !this.option(\"legacyRendering\");\r\n var needPagingCache = needCache && localPaging;\r\n var needStoreCache = needPagingCache && !options.isCustomLoading;\r\n if (!loadOptions) {\r\n this._dataSource.cancel(options.operationId);\r\n return\r\n }\r\n if (options.lastLoadOptions) {\r\n this._lastLoadOptions = options.lastLoadOptions;\r\n Object.keys(options.operationTypes).forEach(function(operationType) {\r\n _this3._lastOperationTypes[operationType] = _this3._lastOperationTypes[operationType] || options.operationTypes[operationType]\r\n })\r\n }\r\n if (localPaging) {\r\n options.skip = loadOptions.skip;\r\n options.take = loadOptions.take;\r\n delete loadOptions.skip;\r\n delete loadOptions.take\r\n }\r\n if (loadOptions.group) {\r\n loadOptions.group = options.group || loadOptions.group\r\n }\r\n var groupCount = _uiData_grid.default.normalizeSortingInfo(storeLoadOptions.group || loadOptions.group).length;\r\n if (!needPageCache || !getPageDataFromCache(options)) {\r\n if (needPagingCache && options.cachedPagingData) {\r\n options.data = cloneItems(options.cachedPagingData, groupCount)\r\n } else {\r\n if (needStoreCache) {\r\n if (!this._cachedStoreData) {\r\n this._cachedStoreData = cloneItems(options.data, _uiData_grid.default.normalizeSortingInfo(storeLoadOptions.group).length)\r\n } else {\r\n if (options.mergeStoreLoadData) {\r\n options.data = this._cachedStoreData = this._cachedStoreData.concat(options.data)\r\n }\r\n }\r\n }\r\n new _array_store.default(options.data).load(loadOptions).done(function(data) {\r\n options.data = data;\r\n if (needStoreCache) {\r\n _this3._cachedPagingData = cloneItems(options.data, groupCount)\r\n }\r\n }).fail(function(error) {\r\n options.data = (new _deferred.Deferred).reject(error)\r\n })\r\n }\r\n if (loadOptions.requireTotalCount && localPaging) {\r\n options.extra = (0, _type.isPlainObject)(options.extra) ? options.extra : {};\r\n options.extra.totalCount = options.data.length\r\n }\r\n if (options.extra && options.extra.totalCount >= 0 && (false === storeLoadOptions.requireTotalCount || false === loadOptions.requireTotalCount)) {\r\n options.extra.totalCount = -1\r\n }\r\n this._handleDataLoadedCore(options);\r\n if (needPageCache) {\r\n cachedPagesData.extra = cachedPagesData.extra || (0, _extend.extend)({}, options.extra);\r\n (0, _deferred.when)(options.data).done(function(data) {\r\n setPageDataToCache(options, cloneItems(data, groupCount))\r\n })\r\n }\r\n }\r\n options.storeLoadOptions = options.originalStoreLoadOptions\r\n },\r\n _handleDataLoadedCore: function(options) {\r\n if (options.remoteOperations && !options.remoteOperations.paging && Array.isArray(options.data)) {\r\n if (void 0 !== options.skip) {\r\n options.data = options.data.slice(options.skip)\r\n }\r\n if (void 0 !== options.take) {\r\n options.data = options.data.slice(0, options.take)\r\n }\r\n }\r\n },\r\n _handleLoadingChanged: function(isLoading) {\r\n this.loadingChanged.fire(isLoading)\r\n },\r\n _handleLoadError: function(error) {\r\n this.loadError.fire(error);\r\n this.changed.fire({\r\n changeType: \"loadError\",\r\n error: error\r\n })\r\n },\r\n _handleDataChanged: function(args) {\r\n var that = this;\r\n var currentTotalCount;\r\n var dataSource = that._dataSource;\r\n var isLoading = false;\r\n var itemsCount = that.itemsCount();\r\n that._isLastPage = !itemsCount || !that.pageSize() || itemsCount < that.pageSize();\r\n if (that._isLastPage) {\r\n that._hasLastPage = true\r\n }\r\n if (dataSource.totalCount() >= 0) {\r\n if (dataSource.pageIndex() >= that.pageCount()) {\r\n dataSource.pageIndex(that.pageCount() - 1);\r\n that.pageIndex(dataSource.pageIndex());\r\n that.resetPagesCache();\r\n dataSource.load();\r\n isLoading = true\r\n }\r\n } else {\r\n if (!args || (0, _type.isDefined)(args.changeType)) {\r\n currentTotalCount = dataSource.pageIndex() * that.pageSize() + itemsCount;\r\n that._currentTotalCount = Math.max(that._currentTotalCount, currentTotalCount);\r\n if (0 === itemsCount && dataSource.pageIndex() >= that.pageCount()) {\r\n dataSource.pageIndex(that.pageCount() - 1);\r\n if (\"infinite\" !== that.option(\"scrolling.mode\")) {\r\n dataSource.load();\r\n isLoading = true\r\n }\r\n }\r\n }\r\n }\r\n if (!isLoading) {\r\n that._operationTypes = that._lastOperationTypes;\r\n that._lastOperationTypes = {};\r\n that.component._optionCache = {};\r\n that.changed.fire(args);\r\n that.component._optionCache = void 0\r\n }\r\n },\r\n _scheduleCustomLoadCallbacks: function(deferred) {\r\n var that = this;\r\n that._isCustomLoading = true;\r\n deferred.always(function() {\r\n that._isCustomLoading = false\r\n })\r\n },\r\n loadingOperationTypes: function() {\r\n return this._loadingOperationTypes\r\n },\r\n operationTypes: function() {\r\n return this._operationTypes\r\n },\r\n lastLoadOptions: function() {\r\n return this._lastLoadOptions || {}\r\n },\r\n isLastPage: function() {\r\n return this._isLastPage\r\n },\r\n totalCount: function() {\r\n return parseInt((this._currentTotalCount || this._dataSource.totalCount()) + this._skipCorrection)\r\n },\r\n itemsCount: function() {\r\n return this._dataSource.items().length\r\n },\r\n totalItemsCount: function() {\r\n return this.totalCount()\r\n },\r\n pageSize: function() {\r\n var dataSource = this._dataSource;\r\n if (!arguments.length && !dataSource.paginate()) {\r\n return 0\r\n }\r\n return dataSource.pageSize.apply(dataSource, arguments)\r\n },\r\n pageCount: function() {\r\n var that = this;\r\n var count = that.totalItemsCount() - that._skipCorrection;\r\n var pageSize = that.pageSize();\r\n if (pageSize && count > 0) {\r\n return Math.max(1, Math.ceil(count / pageSize))\r\n }\r\n return 1\r\n },\r\n hasKnownLastPage: function() {\r\n return this._hasLastPage || this._dataSource.totalCount() >= 0\r\n },\r\n loadFromStore: function(loadOptions, store) {\r\n var dataSource = this._dataSource;\r\n var d = new _deferred.Deferred;\r\n if (!dataSource) {\r\n return\r\n }\r\n store = store || dataSource.store();\r\n store.load(loadOptions).done(function(data, extra) {\r\n if (data && !Array.isArray(data) && Array.isArray(data.data)) {\r\n extra = data;\r\n data = data.data\r\n }\r\n d.resolve(data, extra)\r\n }).fail(d.reject);\r\n return d\r\n },\r\n isCustomLoading: function() {\r\n return !!this._isCustomLoading\r\n },\r\n load: function(options) {\r\n var _this4 = this;\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var d = new _deferred.Deferred;\r\n if (options) {\r\n var store = dataSource.store();\r\n var dataSourceLoadOptions = dataSource.loadOptions();\r\n var loadResult = {\r\n storeLoadOptions: options,\r\n isCustomLoading: true\r\n };\r\n (0, _iterator.each)(store._customLoadOptions() || [], function(_, optionName) {\r\n if (!(optionName in loadResult.storeLoadOptions)) {\r\n loadResult.storeLoadOptions[optionName] = dataSourceLoadOptions[optionName]\r\n }\r\n });\r\n this._isLoadingAll = options.isLoadingAll;\r\n that._scheduleCustomLoadCallbacks(d);\r\n dataSource._scheduleLoadCallbacks(d);\r\n that._handleDataLoading(loadResult);\r\n executeTask(function() {\r\n if (!dataSource.store()) {\r\n return d.reject(\"canceled\")\r\n }(0, _deferred.when)(loadResult.data || that.loadFromStore(loadResult.storeLoadOptions)).done(function(data, extra) {\r\n loadResult.data = data;\r\n loadResult.extra = extra || {};\r\n that._handleDataLoaded(loadResult);\r\n if (options.requireTotalCount && void 0 === loadResult.extra.totalCount) {\r\n loadResult.extra.totalCount = store.totalCount(loadResult.storeLoadOptions)\r\n }(0, _deferred.when)(loadResult.data, loadResult.extra.totalCount).done(function(data, totalCount) {\r\n loadResult.extra.totalCount = totalCount;\r\n d.resolve(data, loadResult.extra)\r\n }).fail(d.reject)\r\n }).fail(d.reject)\r\n }, that.option(\"loadingTimeout\"));\r\n return d.fail(function() {\r\n that._eventsStrategy.fireEvent(\"loadError\", arguments)\r\n }).always(function() {\r\n _this4._isLoadingAll = false\r\n }).promise()\r\n } else {\r\n return dataSource.load()\r\n }\r\n },\r\n reload: function(full) {\r\n return full ? this._dataSource.reload() : this._dataSource.load()\r\n },\r\n getCachedStoreData: function() {\r\n return this._cachedStoreData\r\n }\r\n }\r\n}());\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.focus.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.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\").css(\"maxWidth\", isBestFit ? 0 : \"\")\r\n }\r\n }\r\n }\r\n }\r\n },\r\n views: {\r\n rowsView: function() {\r\n return {\r\n _getCellTemplate: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n var editingController = that.getController(\"editing\");\r\n var isEditRow = editingController && editingController.isEditRow(options.rowIndex);\r\n var template;\r\n if (\"detail\" === column.command && !isEditRow) {\r\n template = that.option(\"masterDetail.template\") || {\r\n allowRenderToDetachedContainer: false,\r\n render: that._getDefaultTemplate(column)\r\n }\r\n } else {\r\n template = that.callBase.apply(that, arguments)\r\n }\r\n return template\r\n },\r\n _isDetailRow: function(row) {\r\n return row && row.rowType && 0 === row.rowType.indexOf(\"detail\")\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row);\r\n if (row && this._isDetailRow(row)) {\r\n this.option(\"showRowLines\") && $row.addClass(ROW_LINES_CLASS);\r\n $row.addClass(MASTER_DETAIL_ROW_CLASS);\r\n if ((0, _type.isDefined)(row.visible)) {\r\n $row.toggle(row.visible)\r\n }\r\n }\r\n return $row\r\n },\r\n _renderCells: function($row, options) {\r\n var row = options.row;\r\n var $detailCell;\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n if (row.rowType && this._isDetailRow(row)) {\r\n if (this._needRenderCell(0, options.columnIndices)) {\r\n $detailCell = this._renderCell($row, {\r\n value: null,\r\n row: row,\r\n rowIndex: row.rowIndex,\r\n column: {\r\n command: \"detail\"\r\n },\r\n columnIndex: 0\r\n });\r\n $detailCell.addClass(CELL_FOCUS_DISABLED_CLASS).addClass(MASTER_DETAIL_CELL_CLASS).attr(\"colSpan\", visibleColumns.length)\r\n }\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n }\r\n }\r\n }()\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/excel/excel.tag_helper.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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 (ui/toolbar/ui.toolbar.strategy.action_sheet.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiToolbar = _interopRequireDefault(require(\"./ui.toolbar.strategy\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _action_sheet = _interopRequireDefault(require(\"../action_sheet\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar ActionSheetStrategy = _uiToolbar.default.inherit({\r\n NAME: \"actionSheet\",\r\n _getMenuItemTemplate: function() {\r\n return this._toolbar._getTemplate(\"actionSheetItem\")\r\n },\r\n render: function() {\r\n if (!this._hasVisibleMenuItems()) {\r\n return\r\n }\r\n this.callBase()\r\n },\r\n _menuWidgetClass: function() {\r\n return _action_sheet.default\r\n },\r\n _menuContainer: function() {\r\n return this._toolbar.$element()\r\n },\r\n _widgetOptions: function() {\r\n return (0, _extend.extend)({}, this.callBase(), {\r\n target: this._$button,\r\n showTitle: false\r\n })\r\n },\r\n _menuButtonOptions: function() {\r\n return (0, _extend.extend)({}, this.callBase(), {\r\n icon: \"overflow\"\r\n })\r\n },\r\n _toggleMenu: function() {\r\n this.callBase.apply(this, arguments);\r\n this._menu.toggle(this._menuShown);\r\n this._menuShown = false\r\n }\r\n});\r\nvar _default = ActionSheetStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (exporter/excel_creator.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _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 var $focusedElement = (0, _renderer.default)(_this.option(\"focusedElement\"));\r\n var checkboxInstance = _this._getCheckBoxInstance($focusedElement);\r\n if (!checkboxInstance.option(\"disabled\")) {\r\n var currentState = checkboxInstance.option(\"value\");\r\n _this._updateItemSelection(!currentState, $focusedElement.find(\".\" + ITEM_CLASS).get(0), true)\r\n }\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 _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 if (!selectAllExists) {\r\n this._createSelectAllValueChangedAction();\r\n this._renderSelectAllItem()\r\n }\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: this._onSelectAllCheckboxValueChanged.bind(this)\r\n });\r\n this._toggleSelectedClass(this._$selectAllItem, value);\r\n $container.before(this._$selectAllItem)\r\n },\r\n _onSelectAllCheckboxValueChanged: function(args) {\r\n this._toggleSelectAll(args);\r\n this._fireSelectAllValueChanged(args.value)\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 || false === node.visible) {\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 this._getCheckBoxInstance($node).option(\"value\", true)\r\n }\r\n return false\r\n }\r\n if (value && this._isSingleSelection()) {\r\n var selectedKeys = this.getSelectedNodeKeys();\r\n (0, _iterator.each)(selectedKeys, function(index, key) {\r\n _this10._dataAdapter.toggleSelection(key, false);\r\n _this10._updateItemsUI();\r\n _this10._fireItemSelectionChanged(_this10._getNode(key))\r\n })\r\n }\r\n this._dataAdapter.toggleSelection(node.internalFields.key, value);\r\n var isAllSelected = this._dataAdapter.isAllSelected();\r\n var needFireSelectAllChanged = this._selectAllEnabled() && this._$selectAllItem.dxCheckBox(\"instance\").option(\"value\") !== isAllSelected;\r\n this._updateItemsUI();\r\n this._fireItemSelectionChanged(node, dxEvent);\r\n this._fireSelectionChanged();\r\n if (needFireSelectAllChanged) {\r\n this._fireSelectAllValueChanged(isAllSelected)\r\n }\r\n return true\r\n },\r\n _fireItemSelectionChanged: function(node, dxEvent) {\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 },\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 _this11._getCheckBoxInstance($node).option(\"value\", nodeSelection)\r\n }\r\n });\r\n if (this._selectAllEnabled()) {\r\n var selectAllCheckbox = this._$selectAllItem.dxCheckBox(\"instance\");\r\n selectAllCheckbox._setOptionWithoutOptionChange(\"onValueChanged\", void 0);\r\n selectAllCheckbox.option(\"value\", this._dataAdapter.isAllSelected());\r\n selectAllCheckbox._setOptionWithoutOptionChange(\"onValueChanged\", this._onSelectAllCheckboxValueChanged.bind(this))\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/toolbar/ui.toolbar.menu.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiList = require(\"../list/ui.list.base\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TOOLBAR_MENU_ACTION_CLASS = \"dx-toolbar-menu-action\";\r\nvar TOOLBAR_HIDDEN_BUTTON_CLASS = \"dx-toolbar-hidden-button\";\r\nvar TOOLBAR_HIDDEN_BUTTON_GROUP_CLASS = \"dx-toolbar-hidden-button-group\";\r\nvar TOOLBAR_MENU_SECTION_CLASS = \"dx-toolbar-menu-section\";\r\nvar TOOLBAR_MENU_LAST_SECTION_CLASS = \"dx-toolbar-menu-last-section\";\r\nvar ToolbarMenu = _uiList.ListBase.inherit({\r\n _activeStateUnit: \".\" + TOOLBAR_MENU_ACTION_CLASS,\r\n _initMarkup: function() {\r\n this._renderSections();\r\n this.callBase()\r\n },\r\n _getSections: function() {\r\n return this._itemContainer().children()\r\n },\r\n _itemElements: function() {\r\n return this._getSections().children(this._itemSelector())\r\n },\r\n _renderSections: function() {\r\n var that = this;\r\n var $container = this._itemContainer();\r\n (0, _iterator.each)([\"before\", \"center\", \"after\", \"menu\"], function() {\r\n var sectionName = \"_$\" + this + \"Section\";\r\n var $section = that[sectionName];\r\n if (!$section) {\r\n that[sectionName] = $section = (0, _renderer.default)(\"
    \").addClass(TOOLBAR_MENU_SECTION_CLASS)\r\n }\r\n $section.appendTo($container)\r\n })\r\n },\r\n _renderItems: function() {\r\n this.callBase.apply(this, arguments);\r\n this._updateSections()\r\n },\r\n _updateSections: function() {\r\n var $sections = this.$element().find(\".\" + TOOLBAR_MENU_SECTION_CLASS);\r\n $sections.removeClass(TOOLBAR_MENU_LAST_SECTION_CLASS);\r\n $sections.not(\":empty\").eq(-1).addClass(TOOLBAR_MENU_LAST_SECTION_CLASS)\r\n },\r\n _renderItem: function(index, item, itemContainer, $after) {\r\n var location = item.location || \"menu\";\r\n var $container = this[\"_$\" + location + \"Section\"];\r\n var itemElement = this.callBase(index, item, $container, $after);\r\n if (this._getItemTemplateName({\r\n itemData: item\r\n })) {\r\n itemElement.addClass(\"dx-toolbar-menu-custom\")\r\n }\r\n if (\"menu\" === location || \"dxButton\" === item.widget || \"dxButtonGroup\" === item.widget || item.isAction) {\r\n itemElement.addClass(TOOLBAR_MENU_ACTION_CLASS)\r\n }\r\n if (\"dxButton\" === item.widget) {\r\n itemElement.addClass(TOOLBAR_HIDDEN_BUTTON_CLASS)\r\n }\r\n if (\"dxButtonGroup\" === item.widget) {\r\n itemElement.addClass(TOOLBAR_HIDDEN_BUTTON_GROUP_CLASS)\r\n }\r\n itemElement.addClass(item.cssClass);\r\n return itemElement\r\n },\r\n _getItemTemplateName: function(args) {\r\n var template = this.callBase(args);\r\n var data = args.itemData;\r\n var menuTemplate = data && data.menuItemTemplate;\r\n return menuTemplate || template\r\n },\r\n _itemClickHandler: function(e, args, config) {\r\n if ((0, _renderer.default)(e.target).closest(\".\" + TOOLBAR_MENU_ACTION_CLASS).length) {\r\n this.callBase(e, args, config)\r\n }\r\n },\r\n _clean: function() {\r\n this._getSections().empty();\r\n this.callBase()\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxToolbarMenu\", ToolbarMenu);\r\nvar _default = ToolbarMenu;\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.registerKeyboardAction = void 0;\r\nvar accessibility = _interopRequireWildcard(require(\"../../ui/shared/accessibility\"));\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\nvar registerKeyboardAction = function(viewName, instance, $element, selector, action) {\r\n var keyboardController = instance.getController(\"keyboardNavigation\");\r\n if (instance.option(\"useLegacyKeyboardNavigation\") || keyboardController && !keyboardController.isKeyboardEnabled()) {\r\n return\r\n }\r\n var executeKeyDown = function(args) {\r\n instance.executeAction(\"onKeyDown\", args)\r\n };\r\n instance.createAction(\"onKeyDown\");\r\n accessibility.registerKeyboardAction(viewName, instance, $element, selector, action, executeKeyDown)\r\n};\r\nexports.registerKeyboardAction = registerKeyboardAction;\r\n","/**\r\n * DevExtreme (ui/hierarchical_collection/ui.hierarchical_collection_widget.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _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/grid_core/ui.grid_core.columns_resizing_reordering.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _drag = require(\"../../events/drag\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _swatch_container = _interopRequireDefault(require(\"../widget/swatch_container\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COLUMNS_SEPARATOR_CLASS = \"columns-separator\";\r\nvar COLUMNS_SEPARATOR_TRANSPARENT = \"columns-separator-transparent\";\r\nvar DRAGGING_HEADER_CLASS = \"drag-header\";\r\nvar CELL_CONTENT_CLASS = \"text-content\";\r\nvar HEADERS_DRAG_ACTION_CLASS = \"drag-action\";\r\nvar TRACKER_CLASS = \"tracker\";\r\nvar HEADERS_DROP_HIGHLIGHT_CLASS = \"drop-highlight\";\r\nvar BLOCK_SEPARATOR_CLASS = \"dx-block-separator\";\r\nvar HEADER_ROW_CLASS = \"dx-header-row\";\r\nvar WIDGET_CLASS = \"dx-widget\";\r\nvar DRAGGING_COMMAND_CELL_CLASS = \"dx-drag-command-cell\";\r\nvar MODULE_NAMESPACE = \"dxDataGridResizingReordering\";\r\nvar COLUMNS_SEPARATOR_TOUCH_TRACKER_WIDTH = 10;\r\nvar DRAGGING_DELTA = 5;\r\nvar COLUMN_OPACITY = .5;\r\nvar allowResizing = function(that) {\r\n return that.option(\"allowColumnResizing\") || that.getController(\"columns\").isColumnOptionUsed(\"allowResizing\")\r\n};\r\nvar allowReordering = function(that) {\r\n return that.option(\"allowColumnReordering\") || that.getController(\"columns\").isColumnOptionUsed(\"allowReordering\")\r\n};\r\nvar TrackerView = _uiGrid_core.default.View.inherit({\r\n _renderCore: function() {\r\n this.callBase();\r\n this.element().addClass(this.addWidgetPrefix(TRACKER_CLASS));\r\n this.hide()\r\n },\r\n _unsubscribeFromCallback: function() {\r\n if (this._positionChanged) {\r\n this._tablePositionController.positionChanged.remove(this._positionChanged)\r\n }\r\n },\r\n _subscribeToCallback: function() {\r\n var that = this;\r\n that._positionChanged = function(position) {\r\n var $element = that.element();\r\n if ($element && $element.hasClass(that.addWidgetPrefix(TRACKER_CLASS))) {\r\n $element.css({\r\n top: position.top\r\n });\r\n $element.height(position.height)\r\n }\r\n };\r\n this._tablePositionController.positionChanged.add(that._positionChanged)\r\n },\r\n optionChanged: function(args) {\r\n if (\"allowColumnResizing\" === args.name) {\r\n this._unsubscribeFromCallback();\r\n if (args.value) {\r\n this._subscribeToCallback();\r\n this._invalidate()\r\n }\r\n }\r\n this.callBase(args)\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._tablePositionController = this.getController(\"tablePosition\");\r\n this._subscribeToCallback()\r\n },\r\n isVisible: function() {\r\n return allowResizing(this)\r\n },\r\n show: function() {\r\n this.element().show()\r\n },\r\n hide: function() {\r\n this.element() && this.element().hide()\r\n },\r\n setHeight: function(value) {\r\n this.element().height(value)\r\n },\r\n dispose: function() {\r\n this._unsubscribeFromCallback();\r\n this.callBase()\r\n }\r\n});\r\nvar SeparatorView = _uiGrid_core.default.View.inherit({\r\n _renderSeparator: function() {},\r\n _renderCore: function(options) {\r\n this.callBase(options);\r\n this._isShown = true;\r\n this._renderSeparator();\r\n this.hide()\r\n },\r\n show: function() {\r\n this._isShown = true\r\n },\r\n hide: function() {\r\n this._isShown = false\r\n },\r\n height: function(value) {\r\n var $element = this.element();\r\n if ($element) {\r\n if ((0, _type.isDefined)(value)) {\r\n $element.height(value)\r\n } else {\r\n return $element.height()\r\n }\r\n }\r\n },\r\n width: function(value) {\r\n var $element = this.element();\r\n if ($element) {\r\n if ((0, _type.isDefined)(value)) {\r\n $element.width(value)\r\n } else {\r\n return $element.width()\r\n }\r\n }\r\n }\r\n});\r\nvar ColumnsSeparatorView = SeparatorView.inherit({\r\n _renderSeparator: function() {\r\n this.callBase();\r\n var $element = this.element();\r\n $element.addClass(this.addWidgetPrefix(COLUMNS_SEPARATOR_CLASS))\r\n },\r\n _subscribeToCallback: function() {\r\n var that = this;\r\n var $element;\r\n that._positionChanged = function(position) {\r\n $element = that.element();\r\n if ($element) {\r\n $element.css({\r\n top: position.top\r\n });\r\n $element.height(position.height)\r\n }\r\n };\r\n that._tablePositionController.positionChanged.add(that._positionChanged)\r\n },\r\n _unsubscribeFromCallback: function() {\r\n this._positionChanged && this._tablePositionController.positionChanged.remove(this._positionChanged)\r\n },\r\n _init: function() {\r\n this._isTransparent = allowResizing(this);\r\n if (this.isVisible()) {\r\n this._subscribeToCallback()\r\n }\r\n },\r\n isVisible: function() {\r\n return this.option(\"showColumnHeaders\") && (allowReordering(this) || allowResizing(this))\r\n },\r\n optionChanged: function(args) {\r\n if (\"allowColumnResizing\" === args.name) {\r\n if (args.value) {\r\n this._init();\r\n this._invalidate();\r\n this.hide(true)\r\n } else {\r\n this._unsubscribeFromCallback();\r\n this._isTransparent = allowResizing(this);\r\n this.hide(true)\r\n }\r\n }\r\n this.callBase(args)\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._tablePositionController = this.getController(\"tablePosition\");\r\n this._init()\r\n },\r\n show: function() {\r\n var that = this;\r\n var $element = this.element();\r\n if ($element && !that._isShown) {\r\n if (that._isTransparent) {\r\n $element.removeClass(that.addWidgetPrefix(COLUMNS_SEPARATOR_TRANSPARENT))\r\n } else {\r\n $element.show()\r\n }\r\n }\r\n this.callBase()\r\n },\r\n hide: function(force) {\r\n var $element = this.element();\r\n var columnsSeparatorTransparent = this.addWidgetPrefix(COLUMNS_SEPARATOR_TRANSPARENT);\r\n if ($element && (this._isShown || force)) {\r\n if (this._isTransparent) {\r\n $element.addClass(columnsSeparatorTransparent);\r\n $element.css(\"left\", \"\");\r\n $element.show()\r\n } else {\r\n if ($element.hasClass(columnsSeparatorTransparent)) {\r\n $element.removeClass(columnsSeparatorTransparent)\r\n }\r\n $element.hide()\r\n }\r\n }\r\n this.callBase()\r\n },\r\n moveByX: function(outerX) {\r\n var $element = this.element();\r\n if ($element) {\r\n $element.css(\"left\", outerX - this._parentElement().offset().left)\r\n }\r\n },\r\n changeCursor: function(cursorName) {\r\n cursorName = (0, _type.isDefined)(cursorName) ? cursorName : \"\";\r\n var $element = this.element();\r\n if ($element) {\r\n $element.css(\"cursor\", cursorName)\r\n }\r\n },\r\n dispose: function() {\r\n this._unsubscribeFromCallback();\r\n this.callBase()\r\n }\r\n});\r\nvar BlockSeparatorView = SeparatorView.inherit({\r\n init: function() {\r\n var that = this;\r\n this.callBase();\r\n this.getController(\"data\").loadingChanged.add(function(isLoading) {\r\n if (!isLoading) {\r\n that.hide()\r\n }\r\n })\r\n },\r\n _renderSeparator: function() {\r\n this.callBase();\r\n this.element().addClass(BLOCK_SEPARATOR_CLASS).html(\" \")\r\n },\r\n hide: function() {\r\n var that = this;\r\n var $parent = this._parentElement();\r\n var $element = this.element();\r\n if ($element && this._isShown) {\r\n $element.css(\"display\", \"none\")\r\n }\r\n if ($parent && !$parent.children(\".\" + BLOCK_SEPARATOR_CLASS).length) {\r\n $parent.prepend(that.element())\r\n }\r\n that.callBase()\r\n },\r\n isVisible: function() {\r\n var groupPanelOptions = this.option(\"groupPanel\");\r\n var columnChooserOptions = this.option(\"columnChooser\");\r\n return groupPanelOptions && groupPanelOptions.visible || columnChooserOptions && columnChooserOptions.enabled\r\n },\r\n show: function(targetLocation) {\r\n var that = this;\r\n var $element = this.element();\r\n var startAnimate = function(toOptions) {\r\n _fx.default.stop($element, true);\r\n _fx.default.animate($element, {\r\n type: \"slide\",\r\n from: {\r\n width: 0,\r\n display: toOptions.display\r\n },\r\n to: toOptions,\r\n duration: 300,\r\n easing: \"swing\"\r\n })\r\n };\r\n if ($element && !that._isShown) {\r\n switch (targetLocation) {\r\n case \"group\":\r\n startAnimate({\r\n width: \"50px\",\r\n display: \"inline-block\"\r\n });\r\n break;\r\n case \"columnChooser\":\r\n startAnimate({\r\n width: \"100%\",\r\n display: \"block\"\r\n });\r\n break;\r\n default:\r\n $element.css(\"display\", \"\")\r\n }\r\n }\r\n that.callBase()\r\n }\r\n});\r\nvar DraggingHeaderView = _uiGrid_core.default.View.inherit({\r\n _isDragging: false,\r\n isDragging: function() {\r\n return this._isDragging\r\n },\r\n _getDraggingPanelByPos: function(pos) {\r\n var that = this;\r\n var result;\r\n (0, _iterator.each)(that._dragOptions.draggingPanels, function(index, draggingPanel) {\r\n if (draggingPanel) {\r\n var boundingRect = draggingPanel.getBoundingRect();\r\n if (boundingRect && (void 0 === boundingRect.bottom || pos.y < boundingRect.bottom) && (void 0 === boundingRect.top || pos.y > boundingRect.top) && (void 0 === boundingRect.left || pos.x > boundingRect.left) && (void 0 === boundingRect.right || pos.x < boundingRect.right)) {\r\n result = draggingPanel;\r\n return false\r\n }\r\n }\r\n });\r\n return result\r\n },\r\n _renderCore: function() {\r\n this.element().addClass(this.addWidgetPrefix(DRAGGING_HEADER_CLASS) + \" \" + this.addWidgetPrefix(CELL_CONTENT_CLASS) + \" \" + WIDGET_CLASS).hide()\r\n },\r\n _resetTargetColumnOptions: function() {\r\n var params = this._dropOptions;\r\n params.targetColumnIndex = -1;\r\n delete params.targetColumnElement;\r\n delete params.isLast;\r\n delete params.posX;\r\n delete params.posY\r\n },\r\n _getVisibleIndexObject: function(rowIndex, visibleIndex) {\r\n if ((0, _type.isDefined)(rowIndex)) {\r\n return {\r\n columnIndex: visibleIndex,\r\n rowIndex: rowIndex\r\n }\r\n }\r\n return visibleIndex\r\n },\r\n dispose: function() {\r\n var element = this.element();\r\n this._dragOptions = null;\r\n element && element.parent().find(\".\" + this.addWidgetPrefix(DRAGGING_HEADER_CLASS)).remove()\r\n },\r\n isVisible: function() {\r\n var columnsController = this.getController(\"columns\");\r\n var commonColumnSettings = columnsController.getCommonSettings();\r\n return this.option(\"showColumnHeaders\") && (allowReordering(this) || commonColumnSettings.allowGrouping || commonColumnSettings.allowHiding)\r\n },\r\n init: function() {\r\n var that = this;\r\n this.callBase();\r\n this._controller = this.getController(\"draggingHeader\");\r\n this._columnsResizerViewController = this.getController(\"columnsResizer\");\r\n this.getController(\"data\").loadingChanged.add(function(isLoading) {\r\n var element = that.element();\r\n if (!isLoading && element) {\r\n element.hide()\r\n }\r\n })\r\n },\r\n dragHeader: function(options) {\r\n var that = this;\r\n var columnElement = options.columnElement;\r\n var isCommandColumn = !!options.sourceColumn.type;\r\n that._isDragging = true;\r\n that._dragOptions = options;\r\n that._dropOptions = {\r\n sourceIndex: options.index,\r\n sourceColumnIndex: that._getVisibleIndexObject(options.rowIndex, options.columnIndex),\r\n sourceColumnElement: options.columnElement,\r\n sourceLocation: options.sourceLocation\r\n };\r\n var document = _dom_adapter.default.getDocument();\r\n that._onSelectStart = document.onselectstart;\r\n document.onselectstart = function() {\r\n return false\r\n };\r\n that._controller.drag(that._dropOptions);\r\n that.element().css({\r\n textAlign: columnElement && columnElement.css(\"textAlign\"),\r\n height: columnElement && (isCommandColumn && columnElement.get(0).clientHeight || columnElement.height()),\r\n width: columnElement && (isCommandColumn && columnElement.get(0).clientWidth || columnElement.width()),\r\n whiteSpace: columnElement && columnElement.css(\"whiteSpace\")\r\n }).addClass(that.addWidgetPrefix(HEADERS_DRAG_ACTION_CLASS)).toggleClass(DRAGGING_COMMAND_CELL_CLASS, isCommandColumn).text(isCommandColumn ? \"\" : options.sourceColumn.caption);\r\n that.element().appendTo(_swatch_container.default.getSwatchContainer(columnElement))\r\n },\r\n moveHeader: function(args) {\r\n var e = args.event;\r\n var that = e.data.that;\r\n var eventData = (0, _index.eventData)(e);\r\n var isResizing = that._columnsResizerViewController ? that._columnsResizerViewController.isResizing() : false;\r\n var dragOptions = that._dragOptions;\r\n if (that._isDragging && !isResizing) {\r\n var $element = that.element();\r\n var moveDeltaX = Math.abs(eventData.x - dragOptions.columnElement.offset().left - dragOptions.deltaX);\r\n var moveDeltaY = Math.abs(eventData.y - dragOptions.columnElement.offset().top - dragOptions.deltaY);\r\n if ($element.is(\":visible\") || moveDeltaX > DRAGGING_DELTA || moveDeltaY > DRAGGING_DELTA) {\r\n $element.show();\r\n var newLeft = eventData.x - dragOptions.deltaX;\r\n var newTop = eventData.y - dragOptions.deltaY;\r\n $element.css({\r\n left: newLeft,\r\n top: newTop\r\n });\r\n that.dockHeader(eventData)\r\n }\r\n e.preventDefault()\r\n }\r\n },\r\n dockHeader: function(eventData) {\r\n var that = this;\r\n var targetDraggingPanel = that._getDraggingPanelByPos(eventData);\r\n var controller = that._controller;\r\n var params = that._dropOptions;\r\n var dragOptions = that._dragOptions;\r\n if (targetDraggingPanel) {\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n var isVerticalOrientation = \"columnChooser\" === targetDraggingPanel.getName();\r\n var axisName = isVerticalOrientation ? \"y\" : \"x\";\r\n var targetLocation = targetDraggingPanel.getName();\r\n var rowIndex = \"headers\" === targetLocation ? dragOptions.rowIndex : void 0;\r\n var sourceColumn = dragOptions.sourceColumn;\r\n var columnElements = targetDraggingPanel.getColumnElements(rowIndex, null === sourceColumn || void 0 === sourceColumn ? void 0 : sourceColumn.ownerBand) || [];\r\n var pointsByTarget = dragOptions.pointsByTarget = dragOptions.pointsByTarget || {};\r\n var pointsByColumns = \"columnChooser\" === targetLocation ? [] : pointsByTarget[targetLocation] || controller._generatePointsByColumns((0, _extend.extend)({}, dragOptions, {\r\n targetDraggingPanel: targetDraggingPanel,\r\n columns: targetDraggingPanel.getColumns(rowIndex),\r\n columnElements: columnElements,\r\n isVerticalOrientation: isVerticalOrientation,\r\n startColumnIndex: \"headers\" === targetLocation && (0, _renderer.default)(columnElements[0]).index()\r\n }));\r\n pointsByTarget[targetLocation] = pointsByColumns;\r\n params.targetLocation = targetLocation;\r\n if (pointsByColumns.length > 0) {\r\n for (var i = 0; i < pointsByColumns.length; i++) {\r\n var centerPosition = pointsByColumns[i + 1] && (pointsByColumns[i][axisName] + pointsByColumns[i + 1][axisName]) / 2;\r\n if (void 0 === centerPosition || (rtlEnabled && \"x\" === axisName ? eventData[axisName] > centerPosition : eventData[axisName] < centerPosition)) {\r\n params.targetColumnIndex = that._getVisibleIndexObject(rowIndex, pointsByColumns[i].columnIndex);\r\n if (columnElements[i]) {\r\n params.targetColumnElement = columnElements.eq(i);\r\n params.isLast = false\r\n } else {\r\n params.targetColumnElement = columnElements.last();\r\n params.isLast = true\r\n }\r\n params.posX = pointsByColumns[i].x;\r\n params.posY = pointsByColumns[i].y;\r\n controller.dock(params);\r\n break\r\n }\r\n }\r\n } else {\r\n that._resetTargetColumnOptions();\r\n controller.dock(params)\r\n }\r\n }\r\n },\r\n dropHeader: function(args) {\r\n var e = args.event;\r\n var that = e.data.that;\r\n var controller = that._controller;\r\n that.element().hide();\r\n if (controller && that._isDragging) {\r\n controller.drop(that._dropOptions)\r\n }\r\n that.element().appendTo(that._parentElement());\r\n that._dragOptions = null;\r\n that._dropOptions = null;\r\n that._isDragging = false;\r\n _dom_adapter.default.getDocument().onselectstart = that._onSelectStart || null\r\n }\r\n});\r\nvar isNextColumnResizingMode = function(that) {\r\n return \"widget\" !== that.option(\"columnResizingMode\")\r\n};\r\nvar ColumnsResizerViewController = _uiGrid_core.default.ViewController.inherit({\r\n _isHeadersRowArea: function(posY) {\r\n if (this._columnHeadersView) {\r\n var element = this._columnHeadersView.element();\r\n if (element) {\r\n var offsetTop = element.offset().top;\r\n var headersRowHeight = this._columnHeadersView.getHeadersRowHeight();\r\n return posY >= offsetTop && posY <= offsetTop + headersRowHeight\r\n }\r\n }\r\n return false\r\n },\r\n _isRtlParentStyle: function() {\r\n var _this$_$parentContain;\r\n return this.option(\"rtlEnabled\") && \"rtl\" === (null === (_this$_$parentContain = this._$parentContainer) || void 0 === _this$_$parentContain ? void 0 : _this$_$parentContain.parent().css(\"direction\"))\r\n },\r\n _pointCreated: function(point, cellsLength, columns) {\r\n var isNextColumnMode = isNextColumnResizingMode(this);\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var isRtlParentStyle = this._isRtlParentStyle();\r\n var firstPointColumnIndex = !isNextColumnMode && rtlEnabled && !isRtlParentStyle ? 0 : 1;\r\n if (point.index >= firstPointColumnIndex && point.index < cellsLength + (!isNextColumnMode && (!rtlEnabled || isRtlParentStyle) ? 1 : 0)) {\r\n point.columnIndex -= firstPointColumnIndex;\r\n var currentColumn = columns[point.columnIndex] || {};\r\n var nextColumn = columns[point.columnIndex + 1] || {};\r\n return !(isNextColumnMode ? currentColumn.allowResizing && nextColumn.allowResizing : currentColumn.allowResizing)\r\n }\r\n return true\r\n },\r\n _getTargetPoint: function(pointsByColumns, currentX, deltaX) {\r\n if (pointsByColumns) {\r\n for (var i = 0; i < pointsByColumns.length; i++) {\r\n if (pointsByColumns[i].x === pointsByColumns[0].x && pointsByColumns[i + 1] && pointsByColumns[i].x === pointsByColumns[i + 1].x) {\r\n continue\r\n }\r\n if (pointsByColumns[i].x - deltaX <= currentX && currentX <= pointsByColumns[i].x + deltaX) {\r\n return pointsByColumns[i]\r\n }\r\n }\r\n }\r\n return null\r\n },\r\n _moveSeparator: function(args) {\r\n var e = args.event;\r\n var that = e.data;\r\n var columnsSeparatorWidth = that._columnsSeparatorView.width();\r\n var isNextColumnMode = isNextColumnResizingMode(that);\r\n var deltaX = columnsSeparatorWidth / 2;\r\n var parentOffset = that._$parentContainer.offset();\r\n var parentOffsetLeft = parentOffset.left;\r\n var eventData = (0, _index.eventData)(e);\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n var isRtlParentStyle = this._isRtlParentStyle();\r\n if (that._isResizing && that._resizingInfo) {\r\n if ((parentOffsetLeft <= eventData.x || !isNextColumnMode && isRtlParentStyle) && (!isNextColumnMode || eventData.x <= parentOffsetLeft + that._$parentContainer.width())) {\r\n if (that._updateColumnsWidthIfNeeded(eventData.x)) {\r\n var $cell = that._columnHeadersView.getColumnElements().eq(that._resizingInfo.currentColumnIndex);\r\n var cell = $cell[0];\r\n if (cell) {\r\n var outerWidth = cell.getBoundingClientRect().width;\r\n that._columnsSeparatorView.moveByX($cell.offset().left + ((isNextColumnMode || isRtlParentStyle) && rtlEnabled ? 0 : outerWidth));\r\n that._tablePositionController.update(that._targetPoint.y);\r\n e.preventDefault()\r\n }\r\n }\r\n }\r\n } else {\r\n if (that._isHeadersRowArea(eventData.y)) {\r\n if (that._previousParentOffset) {\r\n if (that._previousParentOffset.left !== parentOffset.left || that._previousParentOffset.top !== parentOffset.top) {\r\n that.pointsByColumns(null)\r\n }\r\n }\r\n that._targetPoint = that._getTargetPoint(that.pointsByColumns(), eventData.x, columnsSeparatorWidth);\r\n that._previousParentOffset = parentOffset;\r\n that._isReadyResizing = false;\r\n if (that._targetPoint) {\r\n that._columnsSeparatorView.changeCursor(\"col-resize\");\r\n that._columnsSeparatorView.moveByX(that._targetPoint.x - deltaX);\r\n that._tablePositionController.update(that._targetPoint.y);\r\n that._isReadyResizing = true;\r\n e.preventDefault()\r\n } else {\r\n that._columnsSeparatorView.changeCursor()\r\n }\r\n } else {\r\n that.pointsByColumns(null);\r\n that._isReadyResizing = false;\r\n that._columnsSeparatorView.changeCursor()\r\n }\r\n }\r\n },\r\n _endResizing: function(args) {\r\n var e = args.event;\r\n var that = e.data;\r\n if (that._isResizing) {\r\n that.pointsByColumns(null);\r\n that._resizingInfo = null;\r\n that._columnsSeparatorView.hide();\r\n that._columnsSeparatorView.changeCursor();\r\n that._trackerView.hide();\r\n that._isReadyResizing = false;\r\n that._isResizing = false\r\n }\r\n },\r\n _getNextColumnIndex: function(currentColumnIndex) {\r\n return currentColumnIndex + 1\r\n },\r\n _setupResizingInfo: function(posX) {\r\n var that = this;\r\n var currentColumnIndex = that._targetPoint.columnIndex;\r\n var nextColumnIndex = that._getNextColumnIndex(currentColumnIndex);\r\n var currentHeader = that._columnHeadersView.getHeaderElement(currentColumnIndex);\r\n var nextHeader = that._columnHeadersView.getHeaderElement(nextColumnIndex);\r\n that._resizingInfo = {\r\n startPosX: posX,\r\n currentColumnIndex: currentColumnIndex,\r\n currentColumnWidth: currentHeader && currentHeader.length > 0 ? (0, _position.getBoundingRect)(currentHeader[0]).width : 0,\r\n nextColumnIndex: nextColumnIndex,\r\n nextColumnWidth: nextHeader && nextHeader.length > 0 ? (0, _position.getBoundingRect)(nextHeader[0]).width : 0\r\n }\r\n },\r\n _startResizing: function(args) {\r\n var e = args.event;\r\n var that = e.data;\r\n var eventData = (0, _index.eventData)(e);\r\n if ((0, _index.isTouchEvent)(e)) {\r\n if (that._isHeadersRowArea(eventData.y)) {\r\n that._targetPoint = that._getTargetPoint(that.pointsByColumns(), eventData.x, COLUMNS_SEPARATOR_TOUCH_TRACKER_WIDTH);\r\n if (that._targetPoint) {\r\n that._columnsSeparatorView.moveByX(that._targetPoint.x - that._columnsSeparatorView.width() / 2);\r\n that._isReadyResizing = true\r\n }\r\n } else {\r\n that._isReadyResizing = false\r\n }\r\n }\r\n if (that._isReadyResizing) {\r\n that._setupResizingInfo(eventData.x);\r\n that._isResizing = true;\r\n that._tablePositionController.update(that._targetPoint.y);\r\n that._columnsSeparatorView.show();\r\n that._trackerView.show();\r\n var scrollable = that.component.getScrollable();\r\n if (scrollable && that._isRtlParentStyle()) {\r\n that._scrollRight = scrollable.$content().width() - scrollable._container().width() - scrollable.scrollLeft()\r\n }\r\n e.preventDefault();\r\n e.stopPropagation()\r\n }\r\n if (this.isResizing()) {\r\n this.getController(\"editorFactory\").loseFocus()\r\n }\r\n },\r\n _generatePointsByColumns: function() {\r\n var that = this;\r\n var columns = that._columnsController ? that._columnsController.getVisibleColumns() : [];\r\n var cells = that._columnHeadersView.getColumnElements();\r\n var pointsByColumns = [];\r\n if (cells && cells.length > 0) {\r\n pointsByColumns = _uiGrid_core2.default.getPointsByColumns(cells, function(point) {\r\n return that._pointCreated(point, cells.length, columns)\r\n })\r\n }\r\n that._pointsByColumns = pointsByColumns\r\n },\r\n _unsubscribeFromEvents: function() {\r\n this._moveSeparatorHandler && _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.move, MODULE_NAMESPACE), this._moveSeparatorHandler);\r\n this._startResizingHandler && _events_engine.default.off(this._$parentContainer, (0, _index.addNamespace)(_pointer.default.down, MODULE_NAMESPACE), this._startResizingHandler);\r\n if (this._endResizingHandler) {\r\n _events_engine.default.off(this._columnsSeparatorView.element(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this._endResizingHandler);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this._endResizingHandler)\r\n }\r\n },\r\n _subscribeToEvents: function() {\r\n this._moveSeparatorHandler = this.createAction(this._moveSeparator);\r\n this._startResizingHandler = this.createAction(this._startResizing);\r\n this._endResizingHandler = this.createAction(this._endResizing);\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.move, MODULE_NAMESPACE), this, this._moveSeparatorHandler);\r\n _events_engine.default.on(this._$parentContainer, (0, _index.addNamespace)(_pointer.default.down, MODULE_NAMESPACE), this, this._startResizingHandler);\r\n _events_engine.default.on(this._columnsSeparatorView.element(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this, this._endResizingHandler);\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this, this._endResizingHandler)\r\n },\r\n _updateColumnsWidthIfNeeded: function(posX) {\r\n var deltaX;\r\n var needUpdate = false;\r\n var nextCellWidth;\r\n var resizingInfo = this._resizingInfo;\r\n var columnsController = this._columnsController;\r\n var visibleColumns = columnsController.getVisibleColumns();\r\n var columnsSeparatorWidth = this._columnsSeparatorView.width();\r\n var contentWidth = this._rowsView.contentWidth();\r\n var isNextColumnMode = isNextColumnResizingMode(this);\r\n var adaptColumnWidthByRatio = isNextColumnMode && this.option(\"adaptColumnWidthByRatio\") && !this.option(\"columnAutoWidth\");\r\n var minWidth;\r\n var nextColumn;\r\n var cellWidth;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var isRtlParentStyle = this._isRtlParentStyle();\r\n\r\n function isPercentWidth(width) {\r\n return (0, _type.isString)(width) && \"%\" === width.slice(-1)\r\n }\r\n\r\n function setColumnWidth(column, columnWidth, contentWidth, adaptColumnWidthByRatio) {\r\n if (column) {\r\n var oldColumnWidth = column.width;\r\n if (oldColumnWidth) {\r\n adaptColumnWidthByRatio = isPercentWidth(oldColumnWidth)\r\n }\r\n if (adaptColumnWidthByRatio) {\r\n column && columnsController.columnOption(column.index, \"visibleWidth\", columnWidth);\r\n column && columnsController.columnOption(column.index, \"width\", (columnWidth / contentWidth * 100).toFixed(3) + \"%\")\r\n } else {\r\n column && columnsController.columnOption(column.index, \"visibleWidth\", null);\r\n column && columnsController.columnOption(column.index, \"width\", columnWidth)\r\n }\r\n }\r\n }\r\n\r\n function correctContentWidth(contentWidth, visibleColumns) {\r\n var allColumnsHaveWidth = visibleColumns.every(function(column) {\r\n return column.width\r\n });\r\n if (allColumnsHaveWidth) {\r\n var totalPercent = visibleColumns.reduce(function(sum, column) {\r\n if (isPercentWidth(column.width)) {\r\n sum += parseFloat(column.width)\r\n }\r\n return sum\r\n }, 0);\r\n if (totalPercent > 100) {\r\n contentWidth = contentWidth / totalPercent * 100\r\n }\r\n }\r\n return contentWidth\r\n }\r\n deltaX = posX - resizingInfo.startPosX;\r\n if ((isNextColumnMode || isRtlParentStyle) && rtlEnabled) {\r\n deltaX = -deltaX\r\n }\r\n cellWidth = resizingInfo.currentColumnWidth + deltaX;\r\n var column = visibleColumns[resizingInfo.currentColumnIndex];\r\n minWidth = column && column.minWidth || columnsSeparatorWidth;\r\n needUpdate = cellWidth >= minWidth;\r\n if (isNextColumnMode) {\r\n nextCellWidth = resizingInfo.nextColumnWidth - deltaX;\r\n nextColumn = visibleColumns[resizingInfo.nextColumnIndex];\r\n minWidth = nextColumn && nextColumn.minWidth || columnsSeparatorWidth;\r\n needUpdate = needUpdate && nextCellWidth >= minWidth\r\n }\r\n if (needUpdate) {\r\n columnsController.beginUpdate();\r\n cellWidth = Math.floor(cellWidth);\r\n contentWidth = correctContentWidth(contentWidth, visibleColumns);\r\n setColumnWidth(column, cellWidth, contentWidth, adaptColumnWidthByRatio);\r\n if (isNextColumnMode) {\r\n nextCellWidth = Math.floor(nextCellWidth);\r\n setColumnWidth(nextColumn, nextCellWidth, contentWidth, adaptColumnWidthByRatio)\r\n } else {\r\n var columnWidths = this._columnHeadersView.getColumnWidths();\r\n columnWidths[resizingInfo.currentColumnIndex] = cellWidth;\r\n var hasScroll = columnWidths.reduce(function(totalWidth, width) {\r\n return totalWidth + width\r\n }, 0) > this._rowsView.contentWidth();\r\n if (!hasScroll) {\r\n var lastColumnIndex = _uiGrid_core2.default.getLastResizableColumnIndex(visibleColumns);\r\n if (lastColumnIndex >= 0) {\r\n columnsController.columnOption(visibleColumns[lastColumnIndex].index, \"visibleWidth\", \"auto\")\r\n }\r\n }\r\n for (var i = 0; i < columnWidths.length; i++) {\r\n if (visibleColumns[i] && visibleColumns[i] !== column && void 0 === visibleColumns[i].width) {\r\n columnsController.columnOption(visibleColumns[i].index, \"width\", columnWidths[i])\r\n }\r\n }\r\n }\r\n columnsController.endUpdate();\r\n if (!isNextColumnMode) {\r\n this.component.updateDimensions();\r\n var scrollable = this.component.getScrollable();\r\n if (scrollable && isRtlParentStyle) {\r\n var left = scrollable.$content().width() - scrollable._container().width() - this._scrollRight;\r\n scrollable.scrollTo({\r\n left: left\r\n })\r\n }\r\n }\r\n }\r\n return needUpdate\r\n },\r\n _subscribeToCallback: function(callback, handler) {\r\n callback.add(handler);\r\n this._subscribesToCallbacks.push({\r\n callback: callback,\r\n handler: handler\r\n })\r\n },\r\n _unsubscribeFromCallbacks: function() {\r\n for (var i = 0; i < this._subscribesToCallbacks.length; i++) {\r\n var subscribe = this._subscribesToCallbacks[i];\r\n subscribe.callback.remove(subscribe.handler)\r\n }\r\n this._subscribesToCallbacks = []\r\n },\r\n _unsubscribes: function() {\r\n this._unsubscribeFromEvents();\r\n this._unsubscribeFromCallbacks()\r\n },\r\n _init: function() {\r\n var that = this;\r\n var generatePointsByColumnsHandler = function() {\r\n if (!that._isResizing) {\r\n that.pointsByColumns(null)\r\n }\r\n };\r\n var generatePointsByColumnsScrollHandler = function(offset) {\r\n if (that._scrollLeft !== offset.left) {\r\n that._scrollLeft = offset.left;\r\n that.pointsByColumns(null)\r\n }\r\n };\r\n that._columnsSeparatorView = that.getView(\"columnsSeparatorView\");\r\n that._columnHeadersView = that.getView(\"columnHeadersView\");\r\n that._trackerView = that.getView(\"trackerView\");\r\n that._rowsView = that.getView(\"rowsView\");\r\n that._columnsController = that.getController(\"columns\");\r\n that._tablePositionController = that.getController(\"tablePosition\");\r\n that._$parentContainer = that.component.$element();\r\n that._subscribeToCallback(that._columnHeadersView.renderCompleted, generatePointsByColumnsHandler);\r\n that._subscribeToCallback(that._columnHeadersView.resizeCompleted, generatePointsByColumnsHandler);\r\n that._subscribeToCallback(that._columnsSeparatorView.renderCompleted, function() {\r\n that._unsubscribeFromEvents();\r\n that._subscribeToEvents()\r\n });\r\n that._subscribeToCallback(that._rowsView.renderCompleted, function() {\r\n that._rowsView.scrollChanged.remove(generatePointsByColumnsScrollHandler);\r\n that._rowsView.scrollChanged.add(generatePointsByColumnsScrollHandler)\r\n });\r\n var previousScrollbarVisibility = 0 !== that._rowsView.getScrollbarWidth();\r\n var previousTableHeight = 0;\r\n that._subscribeToCallback(that.getController(\"tablePosition\").positionChanged, function(e) {\r\n if (that._isResizing && !that._rowsView.isResizing) {\r\n var scrollbarVisibility = 0 !== that._rowsView.getScrollbarWidth();\r\n if (previousScrollbarVisibility !== scrollbarVisibility || previousTableHeight && previousTableHeight !== e.height) {\r\n previousScrollbarVisibility = scrollbarVisibility;\r\n previousTableHeight = e.height;\r\n that.component.updateDimensions()\r\n } else {\r\n that._rowsView.updateFreeSpaceRowHeight()\r\n }\r\n }\r\n previousTableHeight = e.height\r\n })\r\n },\r\n optionChanged: function(args) {\r\n this.callBase(args);\r\n if (\"allowColumnResizing\" === args.name) {\r\n if (args.value) {\r\n this._init();\r\n this._subscribeToEvents()\r\n } else {\r\n this._unsubscribes()\r\n }\r\n }\r\n },\r\n isResizing: function() {\r\n return this._isResizing\r\n },\r\n init: function() {\r\n this._subscribesToCallbacks = [];\r\n if (allowResizing(this)) {\r\n this._init()\r\n }\r\n },\r\n pointsByColumns: function(value) {\r\n if (void 0 !== value) {\r\n this._pointsByColumns = value\r\n } else {\r\n if (!this._pointsByColumns) {\r\n this._generatePointsByColumns()\r\n }\r\n return this._pointsByColumns\r\n }\r\n },\r\n dispose: function() {\r\n this._unsubscribes();\r\n this.callBase()\r\n }\r\n});\r\nvar TablePositionViewController = _uiGrid_core.default.ViewController.inherit({\r\n update: function(top) {\r\n var that = this;\r\n var params = {};\r\n var $element = that._columnHeadersView.element();\r\n var offset = $element && $element.offset();\r\n var offsetTop = offset && offset.top || 0;\r\n var diffOffsetTop = (0, _type.isDefined)(top) ? Math.abs(top - offsetTop) : 0;\r\n var columnsHeadersHeight = that._columnHeadersView ? that._columnHeadersView.getHeight() : 0;\r\n var scrollBarWidth = that._rowsView.getScrollbarWidth(true);\r\n var rowsHeight = that._rowsView ? that._rowsView.height() - scrollBarWidth : 0;\r\n var columnsResizerController = that.component.getController(\"columnsResizer\");\r\n var draggingHeaderView = that.component.getView(\"draggingHeaderView\");\r\n params.height = columnsHeadersHeight;\r\n var isDraggingOrResizing = false !== columnsResizerController.isResizing() || draggingHeaderView.isDragging();\r\n if (isDraggingOrResizing) {\r\n params.height += rowsHeight - diffOffsetTop\r\n }\r\n if (null !== top && $element && $element.length) {\r\n params.top = $element[0].offsetTop + diffOffsetTop\r\n }\r\n that.positionChanged.fire(params)\r\n },\r\n init: function() {\r\n var that = this;\r\n that.callBase();\r\n that._columnHeadersView = this.getView(\"columnHeadersView\");\r\n that._rowsView = this.getView(\"rowsView\");\r\n that._pagerView = this.getView(\"pagerView\");\r\n that._rowsView.resizeCompleted.add(function() {\r\n if (that.option(\"allowColumnResizing\")) {\r\n var targetPoint = that.getController(\"columnsResizer\")._targetPoint;\r\n that.update(targetPoint ? targetPoint.y : null)\r\n }\r\n })\r\n },\r\n ctor: function(component) {\r\n this.callBase(component);\r\n this.positionChanged = (0, _callbacks.default)()\r\n }\r\n});\r\nvar DraggingHeaderViewController = _uiGrid_core.default.ViewController.inherit({\r\n _generatePointsByColumns: function(options) {\r\n var that = this;\r\n return _uiGrid_core2.default.getPointsByColumns(options.columnElements, function(point) {\r\n return that._pointCreated(point, options.columns, options.targetDraggingPanel.getName(), options.sourceColumn)\r\n }, options.isVerticalOrientation, options.startColumnIndex)\r\n },\r\n _pointCreated: function(point, columns, location, sourceColumn) {\r\n var targetColumn = columns[point.columnIndex];\r\n var prevColumn = columns[point.columnIndex - 1];\r\n switch (location) {\r\n case \"columnChooser\":\r\n return true;\r\n case \"headers\":\r\n return sourceColumn && !sourceColumn.allowReordering || (!targetColumn || !targetColumn.allowReordering) && (!prevColumn || !prevColumn.allowReordering);\r\n default:\r\n return 0 === columns.length\r\n }\r\n },\r\n _subscribeToEvents: function(draggingHeader, draggingPanels) {\r\n var that = this;\r\n (0, _iterator.each)(draggingPanels, function(_, draggingPanel) {\r\n if (draggingPanel) {\r\n var columns;\r\n var rowCount = draggingPanel.getRowCount ? draggingPanel.getRowCount() : 1;\r\n var nameDraggingPanel = draggingPanel.getName();\r\n var subscribeToEvents = function(index, columnElement) {\r\n if (!columnElement) {\r\n return\r\n }\r\n var $columnElement = (0, _renderer.default)(columnElement);\r\n var column = columns[index];\r\n if (draggingPanel.allowDragging(column, nameDraggingPanel, draggingPanels)) {\r\n $columnElement.addClass(that.addWidgetPrefix(HEADERS_DRAG_ACTION_CLASS));\r\n _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.start, MODULE_NAMESPACE), that.createAction(function(args) {\r\n var e = args.event;\r\n var eventData = (0, _index.eventData)(e);\r\n draggingHeader.dragHeader({\r\n deltaX: eventData.x - (0, _renderer.default)(e.currentTarget).offset().left,\r\n deltaY: eventData.y - (0, _renderer.default)(e.currentTarget).offset().top,\r\n sourceColumn: column,\r\n index: column.index,\r\n columnIndex: index,\r\n columnElement: $columnElement,\r\n sourceLocation: nameDraggingPanel,\r\n draggingPanels: draggingPanels,\r\n rowIndex: that._columnsController.getRowIndex(column.index, true)\r\n })\r\n }));\r\n _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.move, MODULE_NAMESPACE), {\r\n that: draggingHeader\r\n }, that.createAction(draggingHeader.moveHeader));\r\n _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.end, MODULE_NAMESPACE), {\r\n that: draggingHeader\r\n }, that.createAction(draggingHeader.dropHeader))\r\n }\r\n };\r\n for (var i = 0; i < rowCount; i++) {\r\n var columnElements = draggingPanel.getColumnElements(i) || [];\r\n if (columnElements.length) {\r\n columns = draggingPanel.getColumns(i) || [];\r\n (0, _iterator.each)(columnElements, subscribeToEvents)\r\n }\r\n }\r\n }\r\n })\r\n },\r\n _unsubscribeFromEvents: function(draggingHeader, draggingPanels) {\r\n var that = this;\r\n (0, _iterator.each)(draggingPanels, function(_, draggingPanel) {\r\n if (draggingPanel) {\r\n var columnElements = draggingPanel.getColumnElements() || [];\r\n (0, _iterator.each)(columnElements, function(index, columnElement) {\r\n var $columnElement = (0, _renderer.default)(columnElement);\r\n _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.start, MODULE_NAMESPACE));\r\n _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.move, MODULE_NAMESPACE));\r\n _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.end, MODULE_NAMESPACE));\r\n $columnElement.removeClass(that.addWidgetPrefix(HEADERS_DRAG_ACTION_CLASS))\r\n })\r\n }\r\n })\r\n },\r\n _getSeparator: function(targetLocation) {\r\n return \"headers\" === targetLocation ? this._columnsSeparatorView : this._blockSeparatorView\r\n },\r\n hideSeparators: function(type) {\r\n var blockSeparator = this._blockSeparatorView;\r\n var columnsSeparator = this._columnsSeparatorView;\r\n this._animationColumnIndex = null;\r\n blockSeparator && blockSeparator.hide();\r\n \"block\" !== type && columnsSeparator && columnsSeparator.hide()\r\n },\r\n init: function() {\r\n var that = this;\r\n that.callBase();\r\n that._columnsController = that.getController(\"columns\");\r\n that._columnHeadersView = that.getView(\"columnHeadersView\");\r\n that._columnsSeparatorView = that.getView(\"columnsSeparatorView\");\r\n that._draggingHeaderView = that.getView(\"draggingHeaderView\");\r\n that._rowsView = that.getView(\"rowsView\");\r\n that._blockSeparatorView = that.getView(\"blockSeparatorView\");\r\n that._headerPanelView = that.getView(\"headerPanel\");\r\n that._columnChooserView = that.getView(\"columnChooserView\");\r\n var subscribeToEvents = function() {\r\n if (that._draggingHeaderView) {\r\n var draggingPanels = [that._columnChooserView, that._columnHeadersView, that._headerPanelView];\r\n that._unsubscribeFromEvents(that._draggingHeaderView, draggingPanels);\r\n that._subscribeToEvents(that._draggingHeaderView, draggingPanels)\r\n }\r\n };\r\n that._columnHeadersView.renderCompleted.add(subscribeToEvents);\r\n that._headerPanelView && that._headerPanelView.renderCompleted.add(subscribeToEvents);\r\n that._columnChooserView && that._columnChooserView.renderCompleted.add(subscribeToEvents)\r\n },\r\n allowDrop: function(parameters) {\r\n return this._columnsController.allowMoveColumn(parameters.sourceColumnIndex, parameters.targetColumnIndex, parameters.sourceLocation, parameters.targetLocation)\r\n },\r\n drag: function(parameters) {\r\n var sourceIndex = parameters.sourceIndex;\r\n var sourceLocation = parameters.sourceLocation;\r\n var sourceColumnElement = parameters.sourceColumnElement;\r\n var headersView = this._columnHeadersView;\r\n var rowsView = this._rowsView;\r\n if (sourceColumnElement) {\r\n sourceColumnElement.css({\r\n opacity: COLUMN_OPACITY\r\n });\r\n if (\"headers\" === sourceLocation) {\r\n headersView && headersView.setRowsOpacity(sourceIndex, COLUMN_OPACITY);\r\n rowsView && rowsView.setRowsOpacity(sourceIndex, COLUMN_OPACITY)\r\n }\r\n }\r\n },\r\n dock: function(parameters) {\r\n var that = this;\r\n var targetColumnIndex = (0, _type.isObject)(parameters.targetColumnIndex) ? parameters.targetColumnIndex.columnIndex : parameters.targetColumnIndex;\r\n var sourceLocation = parameters.sourceLocation;\r\n var targetLocation = parameters.targetLocation;\r\n var separator = that._getSeparator(targetLocation);\r\n var hasTargetVisibleIndex = targetColumnIndex >= 0;\r\n var showSeparator = function() {\r\n if (that._animationColumnIndex !== targetColumnIndex) {\r\n that.hideSeparators();\r\n separator.element()[parameters.isLast ? \"insertAfter\" : \"insertBefore\"](parameters.targetColumnElement);\r\n that._animationColumnIndex = targetColumnIndex;\r\n separator.show(targetLocation)\r\n }\r\n };\r\n that._columnHeadersView.element().find(\".\" + HEADER_ROW_CLASS).toggleClass(that.addWidgetPrefix(HEADERS_DROP_HIGHLIGHT_CLASS), \"headers\" !== sourceLocation && \"headers\" === targetLocation && !hasTargetVisibleIndex);\r\n if (separator) {\r\n if (that.allowDrop(parameters) && hasTargetVisibleIndex) {\r\n if (\"group\" === targetLocation || \"columnChooser\" === targetLocation) {\r\n showSeparator()\r\n } else {\r\n that.hideSeparators(\"block\");\r\n that.getController(\"tablePosition\").update(parameters.posY);\r\n separator.moveByX(parameters.posX - separator.width());\r\n separator.show()\r\n }\r\n } else {\r\n that.hideSeparators()\r\n }\r\n }\r\n },\r\n drop: function(parameters) {\r\n var sourceColumnElement = parameters.sourceColumnElement;\r\n if (sourceColumnElement) {\r\n sourceColumnElement.css({\r\n opacity: \"\"\r\n });\r\n this._columnHeadersView.setRowsOpacity(parameters.sourceIndex, \"\");\r\n this._rowsView.setRowsOpacity(parameters.sourceIndex, \"\");\r\n this._columnHeadersView.element().find(\".\" + HEADER_ROW_CLASS).removeClass(this.addWidgetPrefix(HEADERS_DROP_HIGHLIGHT_CLASS))\r\n }\r\n if (this.allowDrop(parameters)) {\r\n var separator = this._getSeparator(parameters.targetLocation);\r\n if (separator) {\r\n separator.hide()\r\n }\r\n this._columnsController.moveColumn(parameters.sourceColumnIndex, parameters.targetColumnIndex, parameters.sourceLocation, parameters.targetLocation)\r\n }\r\n },\r\n dispose: function() {\r\n if (this._draggingHeaderView) {\r\n this._unsubscribeFromEvents(this._draggingHeaderView, [this._columnChooserView, this._columnHeadersView, this._headerPanelView])\r\n }\r\n }\r\n});\r\nvar _default = {\r\n views: {\r\n columnsSeparatorView: ColumnsSeparatorView,\r\n blockSeparatorView: BlockSeparatorView,\r\n draggingHeaderView: DraggingHeaderView,\r\n trackerView: TrackerView\r\n },\r\n controllers: {\r\n draggingHeader: DraggingHeaderViewController,\r\n tablePosition: TablePositionViewController,\r\n columnsResizer: ColumnsResizerViewController\r\n },\r\n extenders: {\r\n views: {\r\n rowsView: {\r\n _needUpdateRowHeight: function(itemCount) {\r\n var wordWrapEnabled = this.option(\"wordWrapEnabled\");\r\n var columnsResizerController = this.getController(\"columnsResizer\");\r\n var isResizing = columnsResizerController.isResizing();\r\n return this.callBase.apply(this, arguments) || itemCount > 0 && wordWrapEnabled && isResizing\r\n }\r\n }\r\n },\r\n controllers: {\r\n editorFactory: {\r\n renderFocusOverlay: function() {\r\n if (this.getController(\"columnsResizer\").isResizing()) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.grouping.expanded.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar 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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _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 _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\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\nvar MenuBaseEditStrategy = function(_PlainEditStrategy) {\r\n _inheritsLoose(MenuBaseEditStrategy, _PlainEditStrategy);\r\n\r\n function MenuBaseEditStrategy() {\r\n return _PlainEditStrategy.apply(this, arguments) || this\r\n }\r\n var _proto = MenuBaseEditStrategy.prototype;\r\n _proto._getPlainItems = 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 _proto._stringifyItem = 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 _proto._getTemplateString = 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 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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _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 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 var pageIndex = !isVirtualMode(this) && that.pageIndex() >= that.pageCount() ? that.pageCount() - 1 : that.pageIndex();\r\n that._rowPageIndex = Math.ceil(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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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, pixelRatio) {\r\n var svgToCanvas = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : convertSvgToCanvas;\r\n var canvas = createCanvas(width, height, margin);\r\n var context = canvas.getContext(\"2d\");\r\n context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\r\n var svgElem = (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 pixelRatio = window.devicePixelRatio || 1;\r\n var mimeType = \"image/\" + options.format;\r\n var width = options.width * pixelRatio;\r\n var height = options.height * pixelRatio;\r\n var backgroundColor = options.backgroundColor;\r\n if ((0, _type.isFunction)(options.__parseAttributesFn)) {\r\n parseAttributes = options.__parseAttributesFn\r\n }\r\n return getCanvasFromSvg(markup, width, height, backgroundColor, options.margin, pixelRatio, 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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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 ANY_REGEXP = /./g;\r\nvar excelFormatConverter = {\r\n _applyPrecision: function(format, precision) {\r\n var result;\r\n var i;\r\n if (precision > 0) {\r\n result = \"decimal\" !== format ? \".\" : \"\";\r\n for (i = 0; i < precision; i++) {\r\n result += \"0\"\r\n }\r\n return result\r\n }\r\n return \"\"\r\n },\r\n _hasArabicDigits: function(text) {\r\n var code;\r\n for (var i = 0; i < text.length; i++) {\r\n code = text.charCodeAt(i);\r\n if (code >= ARABIC_ZERO_CODE && code < ARABIC_ZERO_CODE + 10) {\r\n return true\r\n }\r\n }\r\n return false\r\n },\r\n _convertDateFormatToOpenXml: function(format) {\r\n return format.split(\"/\").join(\"\\\\/\").split(\"'\").map(function(datePart, index) {\r\n if (index % 2 === 0) {\r\n return datePart.replace(PERIOD_REGEXP, \"AM/PM\").replace(DO_REGEXP, \"d\").replace(DAY_REGEXP, \"d\").replace(STANDALONE_MONTH_REGEXP, \"M\").replace(HOUR_REGEXP, \"H\").split(\"[\").join(\"\\\\[\").split(\"]\").join(\"\\\\]\")\r\n }\r\n if (datePart) {\r\n return datePart.replace(ANY_REGEXP, \"\\\\$&\")\r\n }\r\n return \"'\"\r\n }).join(\"\")\r\n },\r\n _convertDateFormat: function(format) {\r\n var formattedValue = (_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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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 }, true),\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _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 var pagesCount = count === firstValue + PAGES_LIMITER ? PAGES_LIMITER - 1 : PAGES_LIMITER;\r\n for (i = 1; i <= pagesCount; 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.css(\"display\", \"\");\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.css(\"display\", \"none\");\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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\n\r\nfunction _toConsumableArray(arr) {\r\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n if (!o) {\r\n return\r\n }\r\n if (\"string\" === typeof o) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n var n = Object.prototype.toString.call(o).slice(8, -1);\r\n if (\"Object\" === n && o.constructor) {\r\n n = o.constructor.name\r\n }\r\n if (\"Map\" === n || \"Set\" === n) {\r\n return Array.from(o)\r\n }\r\n if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n if (\"undefined\" !== typeof Symbol && null != iter[Symbol.iterator] || null != iter[\"@@iterator\"]) {\r\n return Array.from(iter)\r\n }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return _arrayLikeToArray(arr)\r\n }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n if (null == len || len > arr.length) {\r\n len = arr.length\r\n }\r\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i]\r\n }\r\n return arr2\r\n}\r\nvar 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 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 getHeaderStyles: function() {\r\n return [{\r\n bold: true,\r\n alignment: \"center\",\r\n wrapText: true\r\n }, {\r\n bold: true,\r\n alignment: \"left\",\r\n wrapText: true\r\n }, {\r\n bold: true,\r\n alignment: \"right\",\r\n wrapText: true\r\n }]\r\n },\r\n getGroupRowStyle: function() {\r\n return {\r\n bold: true,\r\n wrapText: false,\r\n alignment: (0, _position.getDefaultAlignment)(this._options.rtlEnabled)\r\n }\r\n },\r\n getColumnStyles: function() {\r\n var wrapTextEnabled = this._options.wrapTextEnabled;\r\n var columnStyles = [];\r\n this.getColumns().forEach(function(column) {\r\n columnStyles.push({\r\n alignment: column.alignment || \"left\",\r\n format: column.format,\r\n wrapText: wrapTextEnabled,\r\n dataType: column.dataType\r\n })\r\n });\r\n return columnStyles\r\n },\r\n getStyles: function() {\r\n return [].concat(_toConsumableArray(this.getHeaderStyles()), _toConsumableArray(this.getColumnStyles()), [this.getGroupRowStyle()])\r\n },\r\n _getTotalCellStyleId: function(cellIndex) {\r\n var _this$getColumns$cell;\r\n var alignment = (null === (_this$getColumns$cell = this.getColumns()[cellIndex]) || void 0 === _this$getColumns$cell ? void 0 : _this$getColumns$cell.alignment) || \"right\";\r\n return this.getHeaderStyles().map(function(style) {\r\n return style.alignment\r\n }).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 this.getHeaderStyles().length + this.getColumns().length\r\n } else {\r\n return cellIndex + this.getHeaderStyles().length\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 value;\r\n var column;\r\n var result = {\r\n cellSourceData: {},\r\n value: value\r\n };\r\n var columns = this.getColumns();\r\n var correctedCellIndex = this._correctCellIndex(cellIndex);\r\n if (rowIndex < this.getHeaderRowCount()) {\r\n var columnsRow = this.getColumns(true)[rowIndex];\r\n column = columnsRow[cellIndex];\r\n result.cellSourceData.rowType = \"header\";\r\n result.cellSourceData.column = column && column.gridColumn;\r\n result.value = column && column.caption\r\n } else {\r\n rowIndex -= this.getHeaderRowCount();\r\n var item = this._options.items.length && this._options.items[rowIndex];\r\n if (item) {\r\n var itemValues = item.values;\r\n result.cellSourceData.rowType = item.rowType;\r\n result.cellSourceData.column = columns[cellIndex] && columns[cellIndex].gridColumn;\r\n switch (item.rowType) {\r\n case \"groupFooter\":\r\n case \"totalFooter\":\r\n if (correctedCellIndex < itemValues.length) {\r\n value = itemValues[correctedCellIndex];\r\n if ((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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _wheel = require(\"../../events/core/wheel\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.utils\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _translator = require(\"../../animation/translator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar CONTENT_CLASS = \"content\";\r\nvar CONTENT_FIXED_CLASS = \"content-fixed\";\r\nvar MASTER_DETAIL_CELL_CLASS = \"dx-master-detail-cell\";\r\nvar FIRST_CELL_CLASS = \"dx-first-cell\";\r\nvar LAST_CELL_CLASS = \"dx-last-cell\";\r\nvar HOVER_STATE_CLASS = \"dx-state-hover\";\r\nvar FIXED_COL_CLASS = \"dx-col-fixed\";\r\nvar FIXED_COLUMNS_CLASS = \"dx-fixed-columns\";\r\nvar POINTER_EVENTS_NONE_CLASS = \"dx-pointer-events-none\";\r\nvar COMMAND_TRANSPARENT = \"transparent\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar getTransparentColumnIndex = function(fixedColumns) {\r\n var transparentColumnIndex = -1;\r\n (0, _iterator.each)(fixedColumns, function(index, column) {\r\n if (column.command === COMMAND_TRANSPARENT) {\r\n transparentColumnIndex = index;\r\n return false\r\n }\r\n });\r\n return transparentColumnIndex\r\n};\r\nvar normalizeColumnWidths = function(fixedColumns, widths, fixedWidths) {\r\n var fixedColumnIndex = 0;\r\n if (fixedColumns && widths && fixedWidths) {\r\n for (var i = 0; i < fixedColumns.length; i++) {\r\n if (fixedColumns[i].command === COMMAND_TRANSPARENT) {\r\n fixedColumnIndex += fixedColumns[i].colspan\r\n } else {\r\n if (widths[fixedColumnIndex] < fixedWidths[i]) {\r\n widths[fixedColumnIndex] = fixedWidths[i]\r\n }\r\n fixedColumnIndex++\r\n }\r\n }\r\n }\r\n return widths\r\n};\r\nvar baseFixedColumns = {\r\n init: function() {\r\n this.callBase();\r\n this._isFixedTableRendering = false;\r\n this._isFixedColumns = false\r\n },\r\n _createCol: function(column) {\r\n return this.callBase(column).toggleClass(FIXED_COL_CLASS, !!(this._isFixedTableRendering && (column.fixed || column.command && column.command !== COMMAND_TRANSPARENT)))\r\n },\r\n _correctColumnIndicesForFixedColumns: function(fixedColumns, change) {\r\n var transparentColumnIndex = getTransparentColumnIndex(fixedColumns);\r\n var transparentColspan = fixedColumns[transparentColumnIndex].colspan;\r\n var columnIndices = change && change.columnIndices;\r\n if (columnIndices) {\r\n change.columnIndices = columnIndices.map(function(columnIndices) {\r\n if (columnIndices) {\r\n return columnIndices.map(function(columnIndex) {\r\n if (columnIndex < transparentColumnIndex) {\r\n return columnIndex\r\n } else {\r\n if (columnIndex >= transparentColumnIndex + transparentColspan) {\r\n return columnIndex - transparentColspan + 1\r\n }\r\n }\r\n return -1\r\n }).filter(function(columnIndex) {\r\n return columnIndex >= 0\r\n })\r\n }\r\n })\r\n }\r\n },\r\n _renderTable: function(options) {\r\n var that = this;\r\n var $fixedTable;\r\n var fixedColumns = that.getFixedColumns();\r\n that._isFixedColumns = !!fixedColumns.length;\r\n var $table = that.callBase(options);\r\n if (that._isFixedColumns) {\r\n that._isFixedTableRendering = true;\r\n var change = options && options.change;\r\n var columnIndices = change && change.columnIndices;\r\n that._correctColumnIndicesForFixedColumns(fixedColumns, change);\r\n $fixedTable = that._createTable(fixedColumns);\r\n that._renderRows($fixedTable, (0, _extend.extend)({}, options, {\r\n columns: fixedColumns\r\n }));\r\n that._updateContent($fixedTable, change);\r\n if (columnIndices) {\r\n change.columnIndices = columnIndices\r\n }\r\n that._isFixedTableRendering = false\r\n } else {\r\n that._fixedTableElement && that._fixedTableElement.parent().remove();\r\n that._fixedTableElement = null\r\n }\r\n return $table\r\n },\r\n _renderRow: function($table, options) {\r\n var fixedCorrection;\r\n var cells = options.row.cells;\r\n this.callBase.apply(this, arguments);\r\n if (this._isFixedTableRendering && cells && cells.length) {\r\n fixedCorrection = 0;\r\n var fixedCells = options.row.cells || [];\r\n cells = cells.slice();\r\n options.row.cells = cells;\r\n for (var i = 0; i < fixedCells.length; i++) {\r\n if (fixedCells[i].column && fixedCells[i].column.command === COMMAND_TRANSPARENT) {\r\n fixedCorrection = (fixedCells[i].column.colspan || 1) - 1;\r\n continue\r\n }\r\n cells[i + fixedCorrection] = fixedCells[i]\r\n }\r\n }\r\n },\r\n _createCell: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n var columnCommand = column && column.command;\r\n var rowType = options.rowType;\r\n var $cell = that.callBase.apply(that, arguments);\r\n var fixedColumns;\r\n var prevFixedColumn;\r\n var transparentColumnIndex;\r\n if (that._isFixedTableRendering || \"filter\" === rowType) {\r\n fixedColumns = that.getFixedColumns();\r\n transparentColumnIndex = getTransparentColumnIndex(fixedColumns);\r\n prevFixedColumn = fixedColumns[transparentColumnIndex - 1]\r\n }\r\n if (that._isFixedTableRendering) {\r\n if (columnCommand === COMMAND_TRANSPARENT) {\r\n $cell.addClass(POINTER_EVENTS_NONE_CLASS).toggleClass(FIRST_CELL_CLASS, 0 === transparentColumnIndex || prevFixedColumn && \"expand\" === prevFixedColumn.command).toggleClass(LAST_CELL_CLASS, fixedColumns.length && transparentColumnIndex === fixedColumns.length - 1);\r\n if (\"freeSpace\" !== rowType) {\r\n _uiGrid_core.default.setEmptyText($cell)\r\n }\r\n }\r\n } else {\r\n if (\"filter\" === rowType) {\r\n $cell.toggleClass(FIRST_CELL_CLASS, options.columnIndex === transparentColumnIndex)\r\n }\r\n }\r\n var isRowAltStyle = that.option(\"rowAlternationEnabled\") && options.isAltRow;\r\n if (_browser.default.mozilla && options.column.fixed && \"group\" !== options.rowType && !isRowAltStyle) {\r\n $cell.addClass(FIXED_COL_CLASS)\r\n }\r\n return $cell\r\n },\r\n _wrapTableInScrollContainer: function() {\r\n var $scrollContainer = this.callBase.apply(this, arguments);\r\n if (this._isFixedTableRendering) {\r\n $scrollContainer.addClass(this.addWidgetPrefix(CONTENT_FIXED_CLASS))\r\n }\r\n return $scrollContainer\r\n },\r\n _renderCellContent: function($cell, options) {\r\n var that = this;\r\n var isEmptyCell;\r\n var column = options.column;\r\n var isFixedTableRendering = that._isFixedTableRendering;\r\n var isGroupCell = \"group\" === options.rowType && (0, _type.isDefined)(column.groupIndex);\r\n if (isFixedTableRendering && isGroupCell && !column.command && !column.groupCellTemplate) {\r\n $cell.css(\"pointerEvents\", \"none\")\r\n }\r\n if (!isFixedTableRendering && that._isFixedColumns) {\r\n isEmptyCell = column.fixed || column.command && false !== column.fixed;\r\n if (isGroupCell) {\r\n isEmptyCell = false;\r\n if (options.row.summaryCells && options.row.summaryCells.length) {\r\n var columns = that._columnsController.getVisibleColumns();\r\n var alignByFixedColumnCellCount = that._getAlignByColumnCellCount ? that._getAlignByColumnCellCount(column.colspan, {\r\n columns: columns,\r\n row: options.row,\r\n isFixed: true\r\n }) : 0;\r\n if (alignByFixedColumnCellCount > 0) {\r\n var transparentColumnIndex = getTransparentColumnIndex(that._columnsController.getFixedColumns());\r\n isEmptyCell = columns.length - alignByFixedColumnCellCount < transparentColumnIndex\r\n }\r\n }\r\n }\r\n if (isEmptyCell) {\r\n if (that.option(\"legacyRendering\") || column.command && \"buttons\" !== column.type || \"group\" === options.rowType) {\r\n $cell.html(\" \").addClass(column.cssClass);\r\n return\r\n } else {\r\n $cell.addClass(\"dx-hidden-cell\")\r\n }\r\n }\r\n }\r\n if (column.command !== COMMAND_TRANSPARENT) {\r\n that.callBase($cell, options)\r\n }\r\n },\r\n _getCellElementsCore: function(rowIndex) {\r\n var _this = this;\r\n var cellElements = this.callBase.apply(this, arguments);\r\n var isGroupRow = cellElements.parent().hasClass(GROUP_ROW_CLASS);\r\n var index = \"columnHeadersView\" === this.name ? rowIndex : void 0;\r\n if (this._fixedTableElement && cellElements) {\r\n var fixedColumns = this.getFixedColumns(index);\r\n var fixedCellElements = this._getRowElements(this._fixedTableElement).eq(rowIndex).children(\"td\");\r\n (0, _iterator.each)(fixedCellElements, function(columnIndex, cell) {\r\n if (isGroupRow) {\r\n if (cellElements[columnIndex] && \"hidden\" !== cell.style.visibility) {\r\n cellElements[columnIndex] = cell\r\n }\r\n } else {\r\n var fixedColumn = fixedColumns[columnIndex];\r\n if (fixedColumn) {\r\n if (fixedColumn.command === COMMAND_TRANSPARENT) {\r\n if (fixedCellElements.eq(columnIndex).hasClass(MASTER_DETAIL_CELL_CLASS)) {\r\n cellElements[columnIndex] = cell || cellElements[columnIndex]\r\n }\r\n } else {\r\n var fixedColumnIndex = _this._columnsController.getVisibleIndexByColumn(fixedColumn, rowIndex);\r\n cellElements[fixedColumnIndex] = cell || cellElements[fixedColumnIndex]\r\n }\r\n }\r\n }\r\n })\r\n }\r\n return cellElements\r\n },\r\n getColumnWidths: function() {\r\n var that = this;\r\n var fixedWidths;\r\n var result = that.callBase();\r\n var fixedColumns = that.getFixedColumns();\r\n if (that._fixedTableElement && result.length) {\r\n fixedWidths = that.callBase(that._fixedTableElement)\r\n }\r\n return normalizeColumnWidths(fixedColumns, result, fixedWidths)\r\n },\r\n getTableElement: function() {\r\n var tableElement = this._isFixedTableRendering ? this._fixedTableElement : this.callBase();\r\n return tableElement\r\n },\r\n setTableElement: function(tableElement) {\r\n if (this._isFixedTableRendering) {\r\n this._fixedTableElement = tableElement.addClass(POINTER_EVENTS_NONE_CLASS)\r\n } else {\r\n this.callBase(tableElement)\r\n }\r\n },\r\n getColumns: function(rowIndex, $tableElement) {\r\n $tableElement = $tableElement || this.getTableElement();\r\n if (this._isFixedTableRendering || $tableElement && $tableElement.closest(\"table\").parent(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS)).length) {\r\n return this.getFixedColumns(rowIndex)\r\n }\r\n return this.callBase(rowIndex, $tableElement)\r\n },\r\n getRowIndex: function($row) {\r\n var $fixedTable = this._fixedTableElement;\r\n if ($fixedTable && $fixedTable.find($row).length) {\r\n return this._getRowElements($fixedTable).index($row)\r\n }\r\n return this.callBase($row)\r\n },\r\n getTableElements: function() {\r\n var result = this.callBase.apply(this, arguments);\r\n if (this._fixedTableElement) {\r\n result = (0, _renderer.default)([result.get(0), this._fixedTableElement.get(0)])\r\n }\r\n return result\r\n },\r\n getFixedColumns: function(rowIndex) {\r\n return this._columnsController.getFixedColumns(rowIndex)\r\n },\r\n getFixedColumnsOffset: function() {\r\n var offset = {\r\n left: 0,\r\n right: 0\r\n };\r\n var $transparentColumn;\r\n if (this._fixedTableElement) {\r\n $transparentColumn = this.getTransparentColumnElement();\r\n var positionTransparentColumn = $transparentColumn.position();\r\n offset = {\r\n left: positionTransparentColumn.left,\r\n right: this.element().outerWidth(true) - ($transparentColumn.outerWidth(true) + positionTransparentColumn.left)\r\n }\r\n }\r\n return offset\r\n },\r\n getTransparentColumnElement: function() {\r\n return this._fixedTableElement && this._fixedTableElement.find(\".\" + POINTER_EVENTS_NONE_CLASS).first()\r\n },\r\n getFixedTableElement: function() {\r\n return this._fixedTableElement\r\n },\r\n isFixedColumns: function() {\r\n return this._isFixedColumns\r\n },\r\n _resizeCore: function() {\r\n this.callBase();\r\n this.synchronizeRows()\r\n },\r\n setColumnWidths: function(options) {\r\n var columns;\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var widths = options.widths;\r\n var isWidthsSynchronized = widths && widths.length && (0, _type.isDefined)(visibleColumns[0].visibleWidth);\r\n var optionNames = options.optionNames;\r\n var isColumnWidthChanged = optionNames && optionNames.width;\r\n var useVisibleColumns = false;\r\n this.callBase.apply(this, arguments);\r\n if (this._fixedTableElement) {\r\n if (this.option(\"legacyRendering\")) {\r\n useVisibleColumns = widths && widths.length && !this.isScrollbarVisible(true)\r\n } else {\r\n var hasAutoWidth = widths && widths.some(function(width) {\r\n return \"auto\" === width\r\n });\r\n useVisibleColumns = hasAutoWidth && (!isWidthsSynchronized || !this.isScrollbarVisible(true))\r\n }\r\n if (useVisibleColumns) {\r\n columns = visibleColumns\r\n }\r\n this.callBase((0, _extend.extend)({}, options, {\r\n $tableElement: this._fixedTableElement,\r\n columns: columns,\r\n fixed: true\r\n }))\r\n }\r\n if (isWidthsSynchronized || isColumnWidthChanged && this.option(\"wordWrapEnabled\")) {\r\n this.synchronizeRows()\r\n }\r\n },\r\n _createColGroup: function(columns) {\r\n if (!this.option(\"legacyRendering\") && this._isFixedTableRendering && !this.option(\"columnAutoWidth\")) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var useVisibleColumns = visibleColumns.filter(function(column) {\r\n return !column.width\r\n }).length;\r\n if (useVisibleColumns) {\r\n columns = visibleColumns\r\n }\r\n }\r\n return this.callBase(columns)\r\n },\r\n _getClientHeight: function(element) {\r\n var boundingClientRectElement = element.getBoundingClientRect && (0, _position.getBoundingRect)(element);\r\n return boundingClientRectElement && boundingClientRectElement.height ? boundingClientRectElement.height : element.clientHeight\r\n },\r\n synchronizeRows: function() {\r\n var that = this;\r\n var rowHeights = [];\r\n var fixedRowHeights = [];\r\n var rowIndex;\r\n var $rowElements;\r\n var $fixedRowElements;\r\n var $contentElement;\r\n if (that._isFixedColumns && that._tableElement && that._fixedTableElement) {\r\n var heightTable = that._getClientHeight(that._tableElement.get(0));\r\n var heightFixedTable = that._getClientHeight(that._fixedTableElement.get(0));\r\n $rowElements = that._getRowElements(that._tableElement);\r\n $fixedRowElements = that._getRowElements(that._fixedTableElement);\r\n $contentElement = that._findContentElement();\r\n if (heightTable !== heightFixedTable) {\r\n $contentElement && $contentElement.css(\"height\", heightTable);\r\n $rowElements.css(\"height\", \"\");\r\n $fixedRowElements.css(\"height\", \"\");\r\n for (rowIndex = 0; rowIndex < $rowElements.length; rowIndex++) {\r\n rowHeights.push(that._getClientHeight($rowElements.get(rowIndex)));\r\n fixedRowHeights.push(that._getClientHeight($fixedRowElements.get(rowIndex)))\r\n }\r\n for (rowIndex = 0; rowIndex < $rowElements.length; rowIndex++) {\r\n var rowHeight = rowHeights[rowIndex];\r\n var fixedRowHeight = fixedRowHeights[rowIndex];\r\n if (rowHeight > fixedRowHeight) {\r\n $fixedRowElements.eq(rowIndex).css(\"height\", rowHeight)\r\n } else {\r\n if (rowHeight < fixedRowHeight) {\r\n $rowElements.eq(rowIndex).css(\"height\", fixedRowHeight)\r\n }\r\n }\r\n }\r\n $contentElement && $contentElement.css(\"height\", \"\")\r\n }\r\n }\r\n },\r\n setScrollerSpacing: function(width) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n this.callBase(width);\r\n this.element().children(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS)).css({\r\n paddingLeft: rtlEnabled ? width : \"\",\r\n paddingRight: !rtlEnabled ? width : \"\"\r\n })\r\n }\r\n};\r\nvar ColumnHeadersViewFixedColumnsExtender = (0, _extend.extend)({}, baseFixedColumns, {\r\n _getRowVisibleColumns: function(rowIndex) {\r\n if (this._isFixedTableRendering) {\r\n return this.getFixedColumns(rowIndex)\r\n }\r\n return this.callBase(rowIndex)\r\n },\r\n getContextMenuItems: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n var columnFixingOptions = that.option(\"columnFixing\");\r\n var items = that.callBase(options);\r\n if (options.row && \"header\" === options.row.rowType) {\r\n if (column && column.allowFixing) {\r\n var onItemClick = function(params) {\r\n switch (params.itemData.value) {\r\n case \"none\":\r\n that._columnsController.columnOption(column.index, \"fixed\", false);\r\n break;\r\n case \"left\":\r\n that._columnsController.columnOption(column.index, {\r\n fixed: true,\r\n fixedPosition: \"left\"\r\n });\r\n break;\r\n case \"right\":\r\n that._columnsController.columnOption(column.index, {\r\n fixed: true,\r\n fixedPosition: \"right\"\r\n })\r\n }\r\n };\r\n items = items || [];\r\n items.push({\r\n text: columnFixingOptions.texts.fix,\r\n beginGroup: true,\r\n items: [{\r\n text: columnFixingOptions.texts.leftPosition,\r\n value: \"left\",\r\n disabled: column.fixed && (!column.fixedPosition || \"left\" === column.fixedPosition),\r\n onItemClick: onItemClick\r\n }, {\r\n text: columnFixingOptions.texts.rightPosition,\r\n value: \"right\",\r\n disabled: column.fixed && \"right\" === column.fixedPosition,\r\n onItemClick: onItemClick\r\n }]\r\n }, {\r\n text: columnFixingOptions.texts.unfix,\r\n value: \"none\",\r\n disabled: !column.fixed,\r\n onItemClick: onItemClick\r\n })\r\n }\r\n }\r\n return items\r\n },\r\n getFixedColumnElements: function(rowIndex) {\r\n var that = this;\r\n if ((0, _type.isDefined)(rowIndex)) {\r\n return this._fixedTableElement && this._getRowElements(this._fixedTableElement).eq(rowIndex).children()\r\n }\r\n var columnElements = that.getColumnElements();\r\n var $transparentColumnElement = that.getTransparentColumnElement();\r\n if (columnElements && $transparentColumnElement && $transparentColumnElement.length) {\r\n var transparentColumnIndex = getTransparentColumnIndex(that.getFixedColumns());\r\n columnElements.splice(transparentColumnIndex, $transparentColumnElement.get(0).colSpan, $transparentColumnElement.get(0))\r\n }\r\n return columnElements\r\n },\r\n getColumnWidths: function() {\r\n var that = this;\r\n var fixedWidths;\r\n var result = that.callBase();\r\n var $fixedColumnElements = that.getFixedColumnElements();\r\n var fixedColumns = that.getFixedColumns();\r\n if (that._fixedTableElement) {\r\n if ($fixedColumnElements && $fixedColumnElements.length) {\r\n fixedWidths = that._getWidths($fixedColumnElements)\r\n } else {\r\n fixedWidths = that.callBase(that._fixedTableElement)\r\n }\r\n }\r\n return normalizeColumnWidths(fixedColumns, result, fixedWidths)\r\n }\r\n});\r\nvar RowsViewFixedColumnsExtender = (0, _extend.extend)({}, baseFixedColumns, {\r\n _detachHoverEvents: function() {\r\n this._fixedTableElement && _events_engine.default.off(this._fixedTableElement, \"mouseover mouseout\", \".dx-data-row\");\r\n this._tableElement && _events_engine.default.off(this._tableElement, \"mouseover mouseout\", \".dx-data-row\")\r\n },\r\n _attachHoverEvents: function() {\r\n var that = this;\r\n var attachHoverEvent = function($table) {\r\n _events_engine.default.on($table, \"mouseover mouseout\", \".dx-data-row\", that.createAction(function(args) {\r\n var event = args.event;\r\n var rowIndex = that.getRowIndex((0, _renderer.default)(event.target).closest(\".dx-row\"));\r\n var isHover = \"mouseover\" === event.type;\r\n if (rowIndex >= 0) {\r\n that._tableElement && that._getRowElements(that._tableElement).eq(rowIndex).toggleClass(HOVER_STATE_CLASS, isHover);\r\n that._fixedTableElement && that._getRowElements(that._fixedTableElement).eq(rowIndex).toggleClass(HOVER_STATE_CLASS, isHover)\r\n }\r\n }))\r\n };\r\n if (that._fixedTableElement && that._tableElement) {\r\n attachHoverEvent(that._fixedTableElement);\r\n attachHoverEvent(that._tableElement)\r\n }\r\n },\r\n _findContentElement: function() {\r\n var that = this;\r\n var $content;\r\n var scrollTop;\r\n var contentClass = that.addWidgetPrefix(CONTENT_CLASS);\r\n var element = that.element();\r\n var scrollDelay = _browser.default.mozilla ? 60 : 0;\r\n if (element && that._isFixedTableRendering) {\r\n $content = element.children(\".\" + contentClass);\r\n var scrollable = that.getScrollable();\r\n if (!$content.length && scrollable) {\r\n $content = (0, _renderer.default)(\"
\").addClass(contentClass);\r\n _events_engine.default.on($content, \"scroll\", function(e) {\r\n clearTimeout(that._fixedScrollTimeout);\r\n that._fixedScrollTimeout = setTimeout(function() {\r\n scrollTop = (0, _renderer.default)(e.target).scrollTop();\r\n scrollable.scrollTo({\r\n y: scrollTop\r\n })\r\n }, scrollDelay)\r\n });\r\n _events_engine.default.on($content, _wheel.name, function(e) {\r\n var $nearestScrollable = (0, _renderer.default)(e.target).closest(\".dx-scrollable\");\r\n if (scrollable && scrollable.$element().is($nearestScrollable)) {\r\n scrollTop = scrollable.scrollTop();\r\n scrollable.scrollTo({\r\n y: scrollTop - e.delta\r\n });\r\n if (scrollable.scrollTop() > 0 && scrollable.scrollTop() + scrollable.clientHeight() < scrollable.scrollHeight() + that.getScrollbarWidth()) {\r\n return false\r\n }\r\n }\r\n });\r\n $content.appendTo(element)\r\n }\r\n return $content\r\n }\r\n return that.callBase()\r\n },\r\n _updateScrollable: function() {\r\n this.callBase();\r\n var scrollable = this.getScrollable();\r\n var scrollTop = scrollable && scrollable.scrollOffset().top;\r\n this._updateFixedTablePosition(scrollTop)\r\n },\r\n _renderContent: function(contentElement, tableElement) {\r\n if (this._isFixedTableRendering) {\r\n return contentElement.empty().addClass(this.addWidgetPrefix(CONTENT_CLASS) + \" \" + this.addWidgetPrefix(CONTENT_FIXED_CLASS)).append(tableElement)\r\n }\r\n return this.callBase(contentElement, tableElement)\r\n },\r\n _getGroupCellOptions: function(options) {\r\n if (this._isFixedTableRendering) {\r\n return this.callBase((0, _extend.extend)({}, options, {\r\n columns: this._columnsController.getVisibleColumns()\r\n }))\r\n }\r\n return this.callBase(options)\r\n },\r\n _renderGroupedCells: function($row, options) {\r\n return this.callBase($row, (0, _extend.extend)({}, options, {\r\n columns: this._columnsController.getVisibleColumns()\r\n }))\r\n },\r\n _renderGroupSummaryCells: function($row, options) {\r\n if (this._isFixedTableRendering) {\r\n this.callBase($row, (0, _extend.extend)({}, options, {\r\n columns: this._columnsController.getVisibleColumns()\r\n }))\r\n } else {\r\n this.callBase($row, options)\r\n }\r\n },\r\n _hasAlignByColumnSummaryItems: function(columnIndex, options) {\r\n var result = this.callBase.apply(this, arguments);\r\n var column = options.columns[columnIndex];\r\n if (options.isFixed) {\r\n return column.fixed && (result || \"right\" === column.fixedPosition)\r\n }\r\n return result && !column.fixed\r\n },\r\n _renderGroupSummaryCellsCore: function($groupCell, options, groupCellColSpan, alignByColumnCellCount) {\r\n var alignByFixedColumnCellCount;\r\n if (this._isFixedTableRendering) {\r\n options.isFixed = true;\r\n alignByFixedColumnCellCount = this._getAlignByColumnCellCount(groupCellColSpan, options);\r\n options.isFixed = false;\r\n var startColumnIndex = options.columns.length - alignByFixedColumnCellCount;\r\n options = (0, _extend.extend)({}, options, {\r\n columns: this.getFixedColumns()\r\n });\r\n var transparentColumnIndex = getTransparentColumnIndex(options.columns);\r\n if (startColumnIndex < transparentColumnIndex) {\r\n alignByFixedColumnCellCount -= options.columns[transparentColumnIndex].colspan - 1 || 0;\r\n groupCellColSpan -= options.columns[transparentColumnIndex].colspan - 1 || 0\r\n } else {\r\n if (alignByColumnCellCount > 0) {\r\n $groupCell.css(\"visibility\", \"hidden\")\r\n }\r\n }\r\n alignByColumnCellCount = alignByFixedColumnCellCount\r\n }\r\n this.callBase($groupCell, options, groupCellColSpan, alignByColumnCellCount)\r\n },\r\n _getSummaryCellIndex: function(columnIndex, columns) {\r\n if (this._isFixedTableRendering) {\r\n var transparentColumnIndex = getTransparentColumnIndex(columns);\r\n if (columnIndex > transparentColumnIndex) {\r\n columnIndex += columns[transparentColumnIndex].colspan - 1\r\n }\r\n return columnIndex\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _renderCore: function(change) {\r\n this._detachHoverEvents();\r\n this.callBase(change);\r\n var isFixedColumns = this._isFixedColumns;\r\n this.element().toggleClass(FIXED_COLUMNS_CLASS, isFixedColumns);\r\n if (this.option(\"hoverStateEnabled\") && isFixedColumns) {\r\n this._attachHoverEvents()\r\n }\r\n },\r\n setRowsOpacity: function(columnIndex, value) {\r\n this.callBase(columnIndex, value);\r\n var $rows = this._getRowElements(this._fixedTableElement);\r\n this._setRowsOpacityCore($rows, this.getFixedColumns(), columnIndex, value)\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n that.callBase(args);\r\n if (\"hoverStateEnabled\" === args.name && that._isFixedColumns) {\r\n args.value ? this._attachHoverEvents() : this._detachHoverEvents()\r\n }\r\n },\r\n getCellIndex: function($cell) {\r\n var $fixedTable = this._fixedTableElement;\r\n var cellIndex = 0;\r\n if ($fixedTable && $cell.is(\"td\") && $cell.closest($fixedTable).length) {\r\n var columns = this.getFixedColumns();\r\n (0, _iterator.each)(columns, function(index, column) {\r\n if (index === $cell[0].cellIndex) {\r\n return false\r\n }\r\n if (column.colspan) {\r\n cellIndex += column.colspan;\r\n return\r\n }\r\n cellIndex++\r\n });\r\n return cellIndex\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _updateFixedTablePosition: function(scrollTop, needFocus) {\r\n if (this._fixedTableElement && this._tableElement) {\r\n var $focusedElement;\r\n var editorFactory = this.getController(\"editorFactory\");\r\n this._fixedTableElement.parent().scrollTop(scrollTop);\r\n if (needFocus && editorFactory) {\r\n $focusedElement = editorFactory.focus();\r\n $focusedElement && editorFactory.focus($focusedElement)\r\n }\r\n }\r\n },\r\n setScrollerSpacing: function(vWidth, hWidth) {\r\n var that = this;\r\n var styles = {\r\n marginBottom: 0\r\n };\r\n var $fixedContent = that.element().children(\".\" + this.addWidgetPrefix(CONTENT_FIXED_CLASS));\r\n if ($fixedContent.length && that._fixedTableElement) {\r\n $fixedContent.css(styles);\r\n that._fixedTableElement.css(styles);\r\n styles[that.option(\"rtlEnabled\") ? \"marginLeft\" : \"marginRight\"] = vWidth;\r\n styles.marginBottom = hWidth;\r\n var useNativeScrolling = that._scrollable && that._scrollable.option(\"useNative\");\r\n (useNativeScrolling ? $fixedContent : that._fixedTableElement).css(styles)\r\n }\r\n },\r\n _getElasticScrollTop: function(e) {\r\n var elasticScrollTop = 0;\r\n var scrollbarWidth = this.getScrollbarWidth(true);\r\n if (e.scrollOffset.top < 0) {\r\n elasticScrollTop = -e.scrollOffset.top\r\n } else {\r\n if (e.reachedBottom) {\r\n var scrollableContent = this._findContentElement();\r\n var scrollableContainer = e.component._container();\r\n var maxScrollTop = Math.max(scrollableContent.height() + scrollbarWidth - scrollableContainer.height(), 0);\r\n elasticScrollTop = maxScrollTop - e.scrollOffset.top\r\n }\r\n }\r\n return elasticScrollTop\r\n },\r\n _applyElasticScrolling: function(e) {\r\n if (this._fixedTableElement) {\r\n var elasticScrollTop = this._getElasticScrollTop(e);\r\n if (0 !== Math.ceil(elasticScrollTop)) {\r\n (0, _translator.move)(this._fixedTableElement, {\r\n top: elasticScrollTop\r\n })\r\n } else {\r\n this._fixedTableElement.css(\"transform\", \"\")\r\n }\r\n }\r\n },\r\n _handleScroll: function(e) {\r\n this._updateFixedTablePosition(e.scrollOffset.top, true);\r\n this._applyElasticScrolling(e);\r\n this.callBase(e)\r\n },\r\n _updateContentPosition: function(isRender) {\r\n this.callBase.apply(this, arguments);\r\n if (!isRender) {\r\n this._updateFixedTablePosition(this._scrollTop)\r\n }\r\n },\r\n _afterRowPrepared: function(e) {\r\n if (this._isFixedTableRendering) {\r\n return\r\n }\r\n this.callBase(e)\r\n },\r\n _scrollToElement: function($element) {\r\n this.callBase($element, this.getFixedColumnsOffset())\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n clearTimeout(this._fixedScrollTimeout)\r\n }\r\n});\r\nvar FooterViewFixedColumnsExtender = baseFixedColumns;\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n columnFixing: {\r\n enabled: false,\r\n texts: {\r\n fix: _message.default.format(\"dxDataGrid-columnFixingFix\"),\r\n unfix: _message.default.format(\"dxDataGrid-columnFixingUnfix\"),\r\n leftPosition: _message.default.format(\"dxDataGrid-columnFixingLeftPosition\"),\r\n rightPosition: _message.default.format(\"dxDataGrid-columnFixingRightPosition\")\r\n }\r\n }\r\n }\r\n },\r\n extenders: {\r\n views: {\r\n columnHeadersView: ColumnHeadersViewFixedColumnsExtender,\r\n rowsView: RowsViewFixedColumnsExtender,\r\n footerView: FooterViewFixedColumnsExtender\r\n },\r\n controllers: function() {\r\n var normalizeColumnIndicesByPoints = function(columns, fixedColumns, pointsByColumns) {\r\n var transparentColumnIndex = getTransparentColumnIndex(fixedColumns);\r\n var correctIndex = columns.length - fixedColumns.length;\r\n (0, _iterator.each)(pointsByColumns, function(_, point) {\r\n if (point.index > transparentColumnIndex) {\r\n point.columnIndex += correctIndex;\r\n point.index += correctIndex\r\n }\r\n });\r\n return pointsByColumns\r\n };\r\n return {\r\n draggingHeader: {\r\n _generatePointsByColumns: function(options) {\r\n var visibleColumns = options.columns;\r\n var targetDraggingPanel = options.targetDraggingPanel;\r\n if (targetDraggingPanel && \"headers\" === targetDraggingPanel.getName() && targetDraggingPanel.isFixedColumns()) {\r\n if (options.sourceColumn.fixed) {\r\n if (!options.rowIndex) {\r\n options.columnElements = targetDraggingPanel.getFixedColumnElements(0)\r\n }\r\n options.columns = targetDraggingPanel.getFixedColumns(options.rowIndex);\r\n var pointsByColumns = this.callBase(options);\r\n normalizeColumnIndicesByPoints(visibleColumns, options.columns, pointsByColumns);\r\n return pointsByColumns\r\n }\r\n }\r\n return this.callBase(options)\r\n },\r\n _pointCreated: function(point, columns, location, sourceColumn) {\r\n var result = this.callBase.apply(this, arguments);\r\n var targetColumn = columns[point.columnIndex];\r\n var $transparentColumn = this._columnHeadersView.getTransparentColumnElement();\r\n if (!result && \"headers\" === location && $transparentColumn && $transparentColumn.length) {\r\n var boundingRect = (0, _position.getBoundingRect)($transparentColumn.get(0));\r\n if (sourceColumn && sourceColumn.fixed) {\r\n return \"right\" === sourceColumn.fixedPosition ? point.x < boundingRect.right : point.x > boundingRect.left\r\n } else {\r\n if (targetColumn && targetColumn.fixed && \"right\" !== targetColumn.fixedPosition) {\r\n return true\r\n }\r\n return point.x < boundingRect.left || point.x > boundingRect.right\r\n }\r\n }\r\n return result\r\n }\r\n },\r\n columnsResizer: {\r\n _generatePointsByColumns: function() {\r\n var that = this;\r\n var columnsController = that._columnsController;\r\n var columns = columnsController && that._columnsController.getVisibleColumns();\r\n var fixedColumns = columnsController && that._columnsController.getFixedColumns();\r\n var cells = that._columnHeadersView.getFixedColumnElements();\r\n var pointsByFixedColumns = [];\r\n that.callBase();\r\n if (cells && cells.length > 0) {\r\n pointsByFixedColumns = _uiGrid_core.default.getPointsByColumns(cells, function(point) {\r\n return that._pointCreated(point, cells.length, fixedColumns)\r\n });\r\n that._pointsByFixedColumns = normalizeColumnIndicesByPoints(columns, fixedColumns, pointsByFixedColumns)\r\n }\r\n },\r\n _pointCreated: function(point, cellsLength, columns) {\r\n var isWidgetResizingMode = \"widget\" === this.option(\"columnResizingMode\");\r\n if (point.index > 0 && point.index < cellsLength) {\r\n var currentColumn = columns[point.columnIndex - 1] || {};\r\n var nextColumn = columns[point.columnIndex] || {};\r\n if (currentColumn.fixed || nextColumn.fixed) {\r\n point.columnIndex -= 1;\r\n return !((currentColumn.allowResizing || currentColumn.command === COMMAND_TRANSPARENT) && (isWidgetResizingMode || nextColumn.allowResizing || nextColumn.command === COMMAND_TRANSPARENT))\r\n }\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _getTargetPoint: function(pointsByColumns, currentX, deltaX) {\r\n var $transparentColumn = this._columnHeadersView.getTransparentColumnElement();\r\n if ($transparentColumn && $transparentColumn.length) {\r\n var boundingRect = (0, _position.getBoundingRect)($transparentColumn.get(0));\r\n if (currentX <= boundingRect.left || currentX >= boundingRect.right) {\r\n return this.callBase(this._pointsByFixedColumns, currentX, deltaX)\r\n }\r\n }\r\n return this.callBase(pointsByColumns, currentX, deltaX)\r\n }\r\n }\r\n }\r\n }()\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.pager.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _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 (ui/filter_builder/between.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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/toolbar/ui.toolbar.strategy.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar abstract = _class.default.abstract;\r\nvar TOOLBAR_MENU_CONTAINER_CLASS = \"dx-toolbar-menu-container\";\r\nvar TOOLBAR_MENU_BUTTON_CLASS = \"dx-toolbar-menu-button\";\r\nvar ToolbarStrategy = _class.default.inherit({\r\n ctor: function(toolbar) {\r\n this._toolbar = toolbar\r\n },\r\n render: function() {\r\n this._renderMenuButton();\r\n this._renderWidget()\r\n },\r\n _widgetOptions: function() {\r\n var itemClickAction = this._toolbar._createActionByOption(\"onItemClick\");\r\n return {\r\n itemTemplate: this._getMenuItemTemplate.bind(this),\r\n onItemClick: function(e) {\r\n this._toggleMenu(false, true);\r\n itemClickAction(e)\r\n }.bind(this)\r\n }\r\n },\r\n _getMenuItemTemplate: function() {\r\n return this._toolbar._getTemplateByOption(\"menuItemTemplate\")\r\n },\r\n _renderWidget: function() {\r\n var $menu = (0, _renderer.default)(\"
\").appendTo(this._menuContainer());\r\n this._menu = this._toolbar._createComponent($menu, this._menuWidgetClass(), this._widgetOptions());\r\n this.renderMenuItems()\r\n },\r\n _menuContainer: abstract,\r\n _menuWidgetClass: abstract,\r\n _hasVisibleMenuItems: function(items) {\r\n var menuItems = items || this._toolbar.option(\"items\");\r\n var result = false;\r\n var optionGetter = (0, _data.compileGetter)(\"visible\");\r\n var overflowGetter = (0, _data.compileGetter)(\"locateInMenu\");\r\n (0, _iterator.each)(menuItems, function(index, item) {\r\n var itemVisible = optionGetter(item, {\r\n functionsAsIs: true\r\n });\r\n var itemOverflow = overflowGetter(item, {\r\n functionsAsIs: true\r\n });\r\n if (false !== itemVisible && (\"auto\" === itemOverflow || \"always\" === itemOverflow) || \"menu\" === item.location) {\r\n result = true\r\n }\r\n });\r\n return result\r\n },\r\n _getMenuItems: function() {\r\n return this._toolbar._getMenuItems()\r\n },\r\n _updateMenuVisibility: _common.noop,\r\n _renderMenuButton: function() {\r\n var buttonOptions = this._menuButtonOptions();\r\n this._renderMenuButtonContainer();\r\n this._$button = (0, _renderer.default)(\"
\").appendTo(this._$menuButtonContainer).addClass(TOOLBAR_MENU_BUTTON_CLASS);\r\n this._toolbar._createComponent(this._$button, _button.default, buttonOptions)\r\n },\r\n _menuButtonOptions: function() {\r\n return {\r\n onClick: this._menuButtonClickHandler.bind(this)\r\n }\r\n },\r\n _menuButtonClickHandler: function() {\r\n this._toggleMenu(!this._menuShown, true)\r\n },\r\n _renderMenuButtonContainer: function() {\r\n var $afterSection = this._toolbar._$afterSection;\r\n this._$menuButtonContainer = (0, _renderer.default)(\"
\").appendTo($afterSection).addClass(this._toolbar._buttonClass()).addClass(TOOLBAR_MENU_CONTAINER_CLASS)\r\n },\r\n renderMenuItems: function() {\r\n this._menu && this._menu.option(\"items\", this._getMenuItems())\r\n },\r\n toggleMenuVisibility: function(visible, animate) {\r\n this._menu && this._toggleMenu(visible, animate)\r\n },\r\n _toggleMenu: function(visible) {\r\n this._menuShown = visible\r\n },\r\n getMenuWidget: function() {\r\n return this._menu\r\n },\r\n widgetOption: function(name, value) {\r\n this._menu && this._menu.option(name, value)\r\n },\r\n handleToolbarVisibilityChange: _common.noop\r\n});\r\nvar _default = ToolbarStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.editing.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.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 && null != iter[Symbol.iterator] || null != iter[\"@@iterator\"]) {\r\n return Array.from(iter)\r\n }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return _arrayLikeToArray(arr)\r\n }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n if (null == len || len > arr.length) {\r\n len = arr.length\r\n }\r\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i]\r\n }\r\n return arr2\r\n}\r\nvar EDIT_FORM_CLASS = \"edit-form\";\r\nvar EDIT_FORM_ITEM_CLASS = \"edit-form-item\";\r\nvar FOCUS_OVERLAY_CLASS = \"focus-overlay\";\r\nvar READONLY_CLASS = \"readonly\";\r\nvar EDIT_POPUP_CLASS = \"edit-popup\";\r\nvar FORM_BUTTONS_CONTAINER_CLASS = \"form-buttons-container\";\r\nvar ADD_ROW_BUTTON_CLASS = \"addrow-button\";\r\nvar DROPDOWN_EDITOR_OVERLAY_CLASS = \"dx-dropdowneditor-overlay\";\r\nvar LINK_CLASS = \"dx-link\";\r\nvar EDITOR_CELL_CLASS = \"dx-editor-cell\";\r\nvar ROW_SELECTED = \"dx-selection\";\r\nvar EDIT_ROW = \"dx-edit-row\";\r\nvar EDIT_BUTTON_CLASS = \"dx-edit-button\";\r\nvar COMMAND_EDIT_CLASS = \"dx-command-edit\";\r\nvar COMMAND_EDIT_WITH_ICONS_CLASS = COMMAND_EDIT_CLASS + \"-with-icons\";\r\nvar SCROLLABLE_CONTAINER_CLASS = \"dx-scrollable-container\";\r\nvar BUTTON_CLASS = \"dx-button\";\r\nvar INSERT_INDEX = \"__DX_INSERT_INDEX__\";\r\nvar ROW_CLASS = \"dx-row\";\r\nvar ROW_REMOVED = \"dx-row-removed\";\r\nvar ROW_INSERTED = \"dx-row-inserted\";\r\nvar ROW_MODIFIED = \"dx-row-modified\";\r\nvar CELL_MODIFIED = \"dx-cell-modified\";\r\nvar EDITING_NAMESPACE = \"dxDataGridEditing\";\r\nvar DATA_ROW_CLASS = \"dx-data-row\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar EDITORS_INPUT_SELECTOR = \"input:not([type='hidden'])\";\r\nvar FOCUSABLE_ELEMENT_SELECTOR = \"[tabindex], \" + EDITORS_INPUT_SELECTOR;\r\nvar EDIT_MODE_BATCH = \"batch\";\r\nvar EDIT_MODE_ROW = \"row\";\r\nvar EDIT_MODE_CELL = \"cell\";\r\nvar EDIT_MODE_FORM = \"form\";\r\nvar EDIT_MODE_POPUP = \"popup\";\r\nvar DATA_EDIT_DATA_INSERT_TYPE = \"insert\";\r\nvar DATA_EDIT_DATA_UPDATE_TYPE = \"update\";\r\nvar DATA_EDIT_DATA_REMOVE_TYPE = \"remove\";\r\nvar DEFAULT_START_EDIT_ACTION = \"click\";\r\nvar EDIT_MODES = [EDIT_MODE_BATCH, EDIT_MODE_ROW, EDIT_MODE_CELL, EDIT_MODE_FORM, EDIT_MODE_POPUP];\r\nvar ROW_BASED_MODES = [EDIT_MODE_ROW, EDIT_MODE_FORM, EDIT_MODE_POPUP];\r\nvar CELL_BASED_MODES = [EDIT_MODE_BATCH, EDIT_MODE_CELL];\r\nvar FORM_BASED_MODES = [EDIT_MODE_FORM, EDIT_MODE_POPUP];\r\nvar MODES_WITH_DELAYED_FOCUS = [EDIT_MODE_ROW, EDIT_MODE_FORM];\r\nvar TARGET_COMPONENT_NAME = \"targetComponent\";\r\nvar EDIT_LINK_CLASS = {\r\n save: \"dx-link-save\",\r\n cancel: \"dx-link-cancel\",\r\n edit: \"dx-link-edit\",\r\n undelete: \"dx-link-undelete\",\r\n \"delete\": \"dx-link-delete\",\r\n add: \"dx-link-add\"\r\n};\r\nvar EDIT_ICON_CLASS = {\r\n save: \"save\",\r\n cancel: \"revert\",\r\n edit: \"edit\",\r\n undelete: \"revert\",\r\n \"delete\": \"trash\",\r\n add: \"add\"\r\n};\r\nvar METHOD_NAMES = {\r\n edit: \"editRow\",\r\n \"delete\": \"deleteRow\",\r\n undelete: \"undeleteRow\",\r\n save: \"saveEditData\",\r\n cancel: \"cancelEditData\",\r\n add: \"addRowByRowIndex\"\r\n};\r\nvar ACTION_OPTION_NAMES = {\r\n add: \"allowAdding\",\r\n edit: \"allowUpdating\",\r\n \"delete\": \"allowDeleting\"\r\n};\r\nvar BUTTON_NAMES = [\"edit\", \"save\", \"cancel\", \"delete\", \"undelete\"];\r\nvar EDITING_POPUP_OPTION_NAME = \"editing.popup\";\r\nvar EDITING_CHANGES_OPTION_NAME = \"editing.changes\";\r\nvar EDITING_EDITROWKEY_OPTION_NAME = \"editing.editRowKey\";\r\nvar EDITING_EDITCOLUMNNAME_OPTION_NAME = \"editing.editColumnName\";\r\nvar createFailureHandler = function(deferred) {\r\n return function(arg) {\r\n var error = arg instanceof Error ? arg : new Error(arg && String(arg) || \"Unknown error\");\r\n deferred.reject(error)\r\n }\r\n};\r\nvar _getEditMode = function(that) {\r\n var editMode = that.option(\"editing.mode\");\r\n if (EDIT_MODES.indexOf(editMode) !== -1) {\r\n return editMode\r\n }\r\n return EDIT_MODE_ROW\r\n};\r\nvar _isRowEditMode = function(that) {\r\n var editMode = _getEditMode(that);\r\n return ROW_BASED_MODES.indexOf(editMode) !== -1\r\n};\r\nvar isEditingCell = function(isEditRow, cellOptions) {\r\n return cellOptions.isEditing || isEditRow && cellOptions.column.allowEditing\r\n};\r\nvar isEditingOrShowEditorAlwaysDataCell = function(isEditRow, cellOptions) {\r\n var isCommandCell = !!cellOptions.column.command;\r\n var isEditing = isEditingCell(isEditRow, cellOptions);\r\n var isEditorCell = !isCommandCell && (isEditing || cellOptions.column.showEditorAlways);\r\n return \"data\" === cellOptions.rowType && isEditorCell\r\n};\r\nvar EditingController = _uiGrid_core.default.ViewController.inherit(function() {\r\n var getDefaultEditorTemplate = function(that) {\r\n return function(container, options) {\r\n var $editor = (0, _renderer.default)(\"
\").appendTo(container);\r\n that.getController(\"editorFactory\").createEditor($editor, (0, _extend.extend)({}, options.column, {\r\n value: options.value,\r\n setValue: options.setValue,\r\n row: options.row,\r\n parentType: \"dataRow\",\r\n width: null,\r\n readOnly: !options.setValue,\r\n isOnForm: options.isOnForm,\r\n id: options.id\r\n }))\r\n }\r\n };\r\n var getEditingTexts = function(options) {\r\n var editingTexts = options.component.option(\"editing.texts\") || {};\r\n return {\r\n save: editingTexts.saveRowChanges,\r\n cancel: editingTexts.cancelRowChanges,\r\n edit: editingTexts.editRow,\r\n undelete: editingTexts.undeleteRow,\r\n \"delete\": editingTexts.deleteRow,\r\n add: editingTexts.addRowToNode\r\n }\r\n };\r\n var getButtonIndex = function(buttons, name) {\r\n var result = -1;\r\n buttons.some(function(button, index) {\r\n if (getButtonName(button) === name) {\r\n result = index;\r\n return true\r\n }\r\n });\r\n return result\r\n };\r\n\r\n function getButtonName(button) {\r\n return (0, _type.isObject)(button) ? button.name : button\r\n }\r\n var getEditorType = function(item) {\r\n var column = item.column;\r\n return item.isCustomEditorType ? item.editorType : column.formItem && column.formItem.editorType\r\n };\r\n var forEachFormItems = function forEachFormItems(items, callBack) {\r\n items.forEach(function(item) {\r\n if (item.items || item.tabs) {\r\n forEachFormItems(item.items || item.tabs, callBack)\r\n } else {\r\n callBack(item)\r\n }\r\n })\r\n };\r\n return {\r\n init: function() {\r\n var that = this;\r\n that._columnsController = that.getController(\"columns\");\r\n that._dataController = that.getController(\"data\");\r\n that._rowsView = that.getView(\"rowsView\");\r\n that._editForm = null;\r\n that._updateEditFormDeferred = null;\r\n that._lastOperation = null;\r\n if (that._deferreds) {\r\n that._deferreds.forEach(function(d) {\r\n return d.reject(\"cancel\")\r\n })\r\n }\r\n that._deferreds = [];\r\n if (!that._dataChangedHandler) {\r\n that._dataChangedHandler = that._handleDataChanged.bind(that);\r\n that._dataController.changed.add(that._dataChangedHandler)\r\n }\r\n if (!that._saveEditorHandler) {\r\n that.createAction(\"onInitNewRow\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowInserting\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowInserted\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onEditingStart\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowUpdating\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowUpdated\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowRemoving\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onRowRemoved\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onSaved\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onSaving\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onEditCanceling\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n that.createAction(\"onEditCanceled\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n var $pointerDownTarget;\r\n var isResizing;\r\n that._pointerUpEditorHandler = function() {\r\n var _that$getController;\r\n isResizing = null === (_that$getController = that.getController(\"columnsResizer\")) || void 0 === _that$getController ? void 0 : _that$getController.isResizing()\r\n };\r\n that._pointerDownEditorHandler = function(e) {\r\n return $pointerDownTarget = (0, _renderer.default)(e.target)\r\n };\r\n that._saveEditorHandler = that.createAction(function(e) {\r\n var event = e.event;\r\n var $target = (0, _renderer.default)(event.target);\r\n var targetComponent = event[TARGET_COMPONENT_NAME];\r\n if ($pointerDownTarget && $pointerDownTarget.is(\"input\") && !$pointerDownTarget.is($target)) {\r\n return\r\n }\r\n\r\n function checkEditorPopup($element) {\r\n return $element && !!$element.closest(\".\".concat(DROPDOWN_EDITOR_OVERLAY_CLASS)).length\r\n }\r\n if (!_isRowEditMode(that) && !that._editCellInProgress) {\r\n var isEditorPopup = checkEditorPopup($target) || checkEditorPopup(null === targetComponent || void 0 === targetComponent ? void 0 : targetComponent.$element());\r\n var isDomElement = !!$target.closest((0, _window.getWindow)().document).length;\r\n var isAnotherComponent = targetComponent && !targetComponent._disposed && targetComponent !== that.component;\r\n var isAddRowButton = !!$target.closest(\".\".concat(that.addWidgetPrefix(ADD_ROW_BUTTON_CLASS))).length;\r\n var isFocusOverlay = $target.hasClass(that.addWidgetPrefix(FOCUS_OVERLAY_CLASS));\r\n var isCellEditMode = _getEditMode(that) === EDIT_MODE_CELL;\r\n if (!isResizing && !isEditorPopup && !isFocusOverlay && !(isAddRowButton && isCellEditMode && that.isEditing()) && (isDomElement || isAnotherComponent)) {\r\n that._closeEditItem.bind(that)($target)\r\n }\r\n }\r\n });\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), _pointer.default.up, that._pointerUpEditorHandler);\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), _pointer.default.down, that._pointerDownEditorHandler);\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), _click.name, that._saveEditorHandler)\r\n }\r\n that._updateEditColumn();\r\n that._updateEditButtons();\r\n if (!this._internalState) {\r\n this._internalState = []\r\n }\r\n this.component._optionsByReference[EDITING_EDITROWKEY_OPTION_NAME] = true;\r\n this.component._optionsByReference[EDITING_CHANGES_OPTION_NAME] = true\r\n },\r\n getChanges: function() {\r\n return this.option(EDITING_CHANGES_OPTION_NAME)\r\n },\r\n resetChanges: function() {\r\n var changes = this.getChanges();\r\n var needReset = null === changes || void 0 === changes ? void 0 : changes.length;\r\n if (needReset) {\r\n this._silentOption(EDITING_CHANGES_OPTION_NAME, [])\r\n }\r\n },\r\n _getInternalData: function(key) {\r\n return this._internalState.filter(function(item) {\r\n return 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 var key = changes[index].key;\r\n this._removeInternalData(key);\r\n changes.splice(index, 1);\r\n this._silentOption(EDITING_CHANGES_OPTION_NAME, changes);\r\n if ((0, _common.equalByValue)(this.option(EDITING_EDITROWKEY_OPTION_NAME), key)) {\r\n this._resetEditIndices()\r\n }\r\n }\r\n },\r\n executeOperation: function(deferred, func) {\r\n var _this10 = this;\r\n this._lastOperation && this._lastOperation.reject();\r\n this._lastOperation = deferred;\r\n this.waitForDeferredOperations().done(function() {\r\n if (\"rejected\" === deferred.state()) {\r\n return\r\n }\r\n func();\r\n _this10._lastOperation = null\r\n }).fail(function() {\r\n deferred.reject();\r\n _this10._lastOperation = null\r\n })\r\n },\r\n waitForDeferredOperations: function() {\r\n return _deferred.when.apply(void 0, _toConsumableArray(this._deferreds))\r\n },\r\n editCell: function(rowIndex, columnIndex) {\r\n return this._editCell({\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n })\r\n },\r\n _editCell: function(options) {\r\n var _this11 = this;\r\n var d = new _deferred.Deferred;\r\n var coreResult;\r\n this.executeOperation(d, function() {\r\n coreResult = _this11._editCellCore(options);\r\n (0, _deferred.when)(coreResult).done(d.resolve).fail(d.reject)\r\n });\r\n return void 0 !== coreResult ? coreResult : d.promise()\r\n },\r\n _getNormalizedEditCellOptions: function(_ref) {\r\n var oldColumnIndex = _ref.oldColumnIndex,\r\n oldRowIndex = _ref.oldRowIndex,\r\n columnIndex = _ref.columnIndex,\r\n rowIndex = _ref.rowIndex;\r\n var columnsController = this._columnsController;\r\n var visibleColumns = columnsController.getVisibleColumns();\r\n var items = this._dataController.items();\r\n var item = items[rowIndex];\r\n var oldColumn;\r\n if ((0, _type.isDefined)(oldColumnIndex)) {\r\n oldColumn = visibleColumns[oldColumnIndex]\r\n } else {\r\n oldColumn = this._getEditColumn()\r\n }\r\n if (!(0, _type.isDefined)(oldRowIndex)) {\r\n oldRowIndex = this._getVisibleEditRowIndex()\r\n }\r\n if ((0, _type.isString)(columnIndex)) {\r\n columnIndex = columnsController.columnOption(columnIndex, \"index\");\r\n columnIndex = columnsController.getVisibleIndex(columnIndex)\r\n }\r\n var column = visibleColumns[columnIndex];\r\n return {\r\n oldColumn: oldColumn,\r\n columnIndex: columnIndex,\r\n oldRowIndex: oldRowIndex,\r\n rowIndex: rowIndex,\r\n column: column,\r\n item: item\r\n }\r\n },\r\n _editCellCore: function(options) {\r\n var _this12 = this;\r\n var dataController = this._dataController;\r\n var isEditByOptionChanged = (0, _type.isDefined)(options.oldColumnIndex) || (0, _type.isDefined)(options.oldRowIndex);\r\n var _this$_getNormalizedE = this._getNormalizedEditCellOptions(options),\r\n columnIndex = _this$_getNormalizedE.columnIndex,\r\n rowIndex = _this$_getNormalizedE.rowIndex,\r\n column = _this$_getNormalizedE.column,\r\n item = _this$_getNormalizedE.item;\r\n var params = {\r\n data: null === item || void 0 === item ? void 0 : item.data,\r\n cancel: false,\r\n column: column\r\n };\r\n if (void 0 === item.key) {\r\n this._dataController.fireError(\"E1043\");\r\n return\r\n }\r\n if (column && item && (\"data\" === item.rowType || \"detailAdaptive\" === item.rowType) && !item.removed && !_isRowEditMode(this)) {\r\n if (!isEditByOptionChanged && this.isEditCell(rowIndex, columnIndex)) {\r\n return true\r\n }\r\n var editRowIndex = rowIndex + dataController.getRowIndexOffset();\r\n return (0, _deferred.when)(this._beforeEditCell(rowIndex, columnIndex, item)).done(function(cancel) {\r\n if (cancel) {\r\n return\r\n }\r\n if (!_this12._prepareEditCell(params, item, columnIndex, editRowIndex)) {\r\n _this12._processCanceledEditingCell()\r\n }\r\n })\r\n }\r\n return false\r\n },\r\n _processCanceledEditingCell: function() {},\r\n _prepareEditCell: function(params, item, editColumnIndex, editRowIndex) {\r\n if (!item.isNewRow) {\r\n params.key = item.key\r\n }\r\n if (this._isEditingStart(params)) {\r\n return false\r\n }\r\n this._pageIndex = this._dataController.pageIndex();\r\n this._setEditRowKey(item.key);\r\n this._setEditColumnNameByIndex(editColumnIndex);\r\n if (!params.column.showEditorAlways) {\r\n 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 this._needFocusEditor = true;\r\n if (!column || !column.showEditorAlways || oldColumn && !oldColumn.showEditorAlways) {\r\n this._editCellInProgress = true;\r\n this.getController(\"editorFactory\").loseFocus();\r\n this._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [oldEditRowIndex, this._getVisibleEditRowIndex()]\r\n })\r\n } else {\r\n if (column !== oldColumn) {\r\n this._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: []\r\n })\r\n }\r\n }\r\n },\r\n _delayedInputFocus: function($cell, beforeFocusCallback, callBeforeFocusCallbackAlways) {\r\n var that = this;\r\n\r\n function inputFocus() {\r\n if (beforeFocusCallback) {\r\n beforeFocusCallback()\r\n }\r\n if ($cell) {\r\n var $focusableElement = $cell.find(FOCUSABLE_ELEMENT_SELECTOR).first();\r\n _uiGrid_core2.default.focusAndSelectElement(that, $focusableElement)\r\n }\r\n that._beforeFocusCallback = null\r\n }\r\n if (_devices.default.real().ios || _devices.default.real().android) {\r\n inputFocus()\r\n } else {\r\n if (that._beforeFocusCallback) {\r\n that._beforeFocusCallback()\r\n }\r\n clearTimeout(that._inputFocusTimeoutID);\r\n if (callBeforeFocusCallbackAlways) {\r\n that._beforeFocusCallback = beforeFocusCallback\r\n }\r\n that._inputFocusTimeoutID = setTimeout(inputFocus)\r\n }\r\n },\r\n _focusEditingCell: function(beforeFocusCallback, $editCell, callBeforeFocusCallbackAlways) {\r\n var that = this;\r\n var rowsView = that.getView(\"rowsView\");\r\n var editColumnIndex = this._getVisibleEditColumnIndex();\r\n $editCell = $editCell || rowsView && rowsView._getCellElement(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 var rowKey = this._dataController.getKeyByRowIndex(rowIndex);\r\n this.closeEditCell(null, isNewRow).always(function() {\r\n rowIndex = _this13._dataController.getRowIndexByKey(rowKey);\r\n _this13._checkAndDeleteRow(rowIndex)\r\n })\r\n } else {\r\n this._checkAndDeleteRow(rowIndex)\r\n }\r\n },\r\n _checkAndDeleteRow: function(rowIndex) {\r\n var that = this;\r\n var editingOptions = that.option(\"editing\");\r\n var editingTexts = editingOptions && editingOptions.texts;\r\n var isBatchMode = editingOptions && editingOptions.mode === EDIT_MODE_BATCH;\r\n var confirmDelete = editingOptions && editingOptions.confirmDelete;\r\n var confirmDeleteMessage = editingTexts && editingTexts.confirmDeleteMessage;\r\n var item = that._dataController.items()[rowIndex];\r\n var allowDeleting = isBatchMode || !that.isEditing() || item.isNewRow;\r\n if (item && allowDeleting) {\r\n if (isBatchMode || !confirmDelete || !confirmDeleteMessage) {\r\n that._deleteRowCore(rowIndex)\r\n } else {\r\n var confirmDeleteTitle = editingTexts && editingTexts.confirmDeleteTitle;\r\n var showDialogTitle = (0, _type.isDefined)(confirmDeleteTitle) && confirmDeleteTitle.length > 0;\r\n (0, _dialog.confirm)(confirmDeleteMessage, confirmDeleteTitle, showDialogTitle).done(function(confirmResult) {\r\n if (confirmResult) {\r\n that._deleteRowCore(rowIndex)\r\n }\r\n })\r\n }\r\n }\r\n },\r\n _deleteRowCore: function(rowIndex) {\r\n var dataController = this._dataController;\r\n var item = dataController.items()[rowIndex];\r\n var key = item && item.key;\r\n var oldEditRowIndex = this._getVisibleEditRowIndex();\r\n var isBatchMode = this.option(\"editing.mode\") === EDIT_MODE_BATCH;\r\n this.refresh();\r\n var changes = this.getChanges();\r\n var editIndex = _uiGrid_core2.default.getIndexByKey(key, changes);\r\n if (editIndex >= 0) {\r\n if (changes[editIndex].type === DATA_EDIT_DATA_INSERT_TYPE) {\r\n this._removeChange(editIndex)\r\n } else {\r\n this._addChange({\r\n key: key,\r\n type: DATA_EDIT_DATA_REMOVE_TYPE\r\n })\r\n }\r\n } else {\r\n this._addChange({\r\n key: key,\r\n oldData: item.data,\r\n type: DATA_EDIT_DATA_REMOVE_TYPE\r\n })\r\n }\r\n if (isBatchMode) {\r\n dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [oldEditRowIndex, rowIndex]\r\n });\r\n return (new _deferred.Deferred).resolve()\r\n }\r\n return this.saveEditData()\r\n },\r\n undeleteRow: function(rowIndex) {\r\n var that = this;\r\n var dataController = that._dataController;\r\n var item = dataController.items()[rowIndex];\r\n var oldEditRowIndex = that._getVisibleEditRowIndex();\r\n var key = item && item.key;\r\n var changes = this.getChanges();\r\n if (item) {\r\n var editIndex = _uiGrid_core2.default.getIndexByKey(key, changes);\r\n if (editIndex >= 0) {\r\n var data = changes[editIndex].data;\r\n if ((0, _type.isEmptyObject)(data)) {\r\n that._removeChange(editIndex)\r\n } else {\r\n that._addChange({\r\n key: key,\r\n type: DATA_EDIT_DATA_UPDATE_TYPE\r\n })\r\n }\r\n dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [oldEditRowIndex, rowIndex]\r\n })\r\n }\r\n }\r\n },\r\n _fireOnSaving: function() {\r\n var _this14 = this;\r\n var onSavingParams = {\r\n cancel: false,\r\n promise: null,\r\n changes: _toConsumableArray(this.getChanges())\r\n };\r\n this.executeAction(\"onSaving\", onSavingParams);\r\n var d = new _deferred.Deferred;\r\n (0, _deferred.when)((0, _deferred.fromPromise)(onSavingParams.promise)).done(function() {\r\n d.resolve(onSavingParams)\r\n }).fail(function(arg) {\r\n createFailureHandler(d);\r\n _this14._fireDataErrorOccurred(arg);\r\n d.resolve({\r\n cancel: true\r\n })\r\n });\r\n return d\r\n },\r\n _executeEditingAction: function(actionName, params, func) {\r\n if (this.component._disposed) {\r\n return null\r\n }\r\n var deferred = new _deferred.Deferred;\r\n this.executeAction(actionName, params);\r\n (0, _deferred.when)((0, _deferred.fromPromise)(params.cancel)).done(function(cancel) {\r\n if (cancel) {\r\n setTimeout(function() {\r\n deferred.resolve(\"cancel\")\r\n })\r\n } else {\r\n func(params).done(deferred.resolve).fail(createFailureHandler(deferred))\r\n }\r\n }).fail(createFailureHandler(deferred));\r\n return deferred\r\n },\r\n _processChanges: function(deferreds, results, dataChanges, changes) {\r\n var _this15 = this;\r\n var store = this._dataController.store();\r\n (0, _iterator.each)(changes, function(index, change) {\r\n var oldData = _this15._getOldData(change.key);\r\n var data = change.data,\r\n type = change.type;\r\n var changeCopy = _objectSpread({}, change);\r\n var deferred;\r\n var params;\r\n if (_this15._beforeSaveEditData(change, index)) {\r\n return\r\n }\r\n switch (type) {\r\n case DATA_EDIT_DATA_REMOVE_TYPE:\r\n params = {\r\n data: oldData,\r\n key: change.key,\r\n cancel: false\r\n };\r\n deferred = _this15._executeEditingAction(\"onRowRemoving\", params, function() {\r\n return store.remove(change.key).done(function(key) {\r\n dataChanges.push({\r\n type: \"remove\",\r\n key: key\r\n })\r\n })\r\n });\r\n break;\r\n case DATA_EDIT_DATA_INSERT_TYPE:\r\n params = {\r\n data: data,\r\n cancel: false\r\n };\r\n deferred = _this15._executeEditingAction(\"onRowInserting\", params, function() {\r\n return store.insert(params.data).done(function(data, key) {\r\n if ((0, _type.isDefined)(key)) {\r\n changeCopy.key = key\r\n }\r\n if (data && (0, _type.isObject)(data) && data !== params.data) {\r\n changeCopy.data = data\r\n }\r\n dataChanges.push({\r\n type: \"insert\",\r\n data: data,\r\n index: 0\r\n })\r\n })\r\n });\r\n break;\r\n case DATA_EDIT_DATA_UPDATE_TYPE:\r\n params = {\r\n newData: data,\r\n oldData: oldData,\r\n key: change.key,\r\n cancel: false\r\n };\r\n deferred = _this15._executeEditingAction(\"onRowUpdating\", params, function() {\r\n return store.update(change.key, params.newData).done(function(data, key) {\r\n if (data && (0, _type.isObject)(data) && data !== params.newData) {\r\n changeCopy.data = data\r\n }\r\n dataChanges.push({\r\n type: \"update\",\r\n key: key,\r\n data: data\r\n })\r\n })\r\n })\r\n }\r\n changes[index] = changeCopy;\r\n if (deferred) {\r\n var doneDeferred = new _deferred.Deferred;\r\n deferred.always(function(data) {\r\n results.push({\r\n key: change.key,\r\n result: data\r\n })\r\n }).always(doneDeferred.resolve);\r\n deferreds.push(doneDeferred.promise())\r\n }\r\n })\r\n },\r\n _processSaveEditDataResult: function(results) {\r\n var that = this;\r\n var hasSavedData = false;\r\n var editMode = _getEditMode(that);\r\n var changes = _toConsumableArray(this.getChanges());\r\n var changesLength = changes.length;\r\n for (var i = 0; i < results.length; i++) {\r\n var arg = results[i].result;\r\n var cancel = \"cancel\" === arg;\r\n var editIndex = _uiGrid_core2.default.getIndexByKey(results[i].key, changes);\r\n var change = changes[editIndex];\r\n var isError = arg && arg instanceof Error;\r\n if (isError) {\r\n if (change) {\r\n this._addInternalData({\r\n key: change.key,\r\n error: arg\r\n })\r\n }\r\n that._fireDataErrorOccurred(arg);\r\n if (editMode !== EDIT_MODE_BATCH) {\r\n if ((null === change || void 0 === change ? void 0 : change.type) === DATA_EDIT_DATA_REMOVE_TYPE) {\r\n if (editIndex >= 0) {\r\n changes.splice(editIndex, 1)\r\n }\r\n }\r\n break\r\n }\r\n } else {\r\n if (!cancel || !change || editMode !== EDIT_MODE_BATCH && change.type === DATA_EDIT_DATA_REMOVE_TYPE) {\r\n if (editIndex >= 0) {\r\n changes.splice(editIndex, 1)\r\n }\r\n hasSavedData = !cancel\r\n }\r\n }\r\n }\r\n if (changes.length < changesLength) {\r\n this._silentOption(EDITING_CHANGES_OPTION_NAME, changes)\r\n }\r\n return hasSavedData\r\n },\r\n _fireSaveEditDataEvents: function(changes) {\r\n var that = this;\r\n (0, _iterator.each)(changes, function(_, _ref2) {\r\n var data = _ref2.data,\r\n key = _ref2.key,\r\n type = _ref2.type;\r\n var internalData = that._addInternalData({\r\n key: key\r\n });\r\n var params = {\r\n key: key,\r\n data: data\r\n };\r\n if (internalData.error) {\r\n params.error = internalData.error\r\n }\r\n switch (type) {\r\n case DATA_EDIT_DATA_REMOVE_TYPE:\r\n that.executeAction(\"onRowRemoved\", (0, _extend.extend)({}, params, {\r\n data: internalData.oldData\r\n }));\r\n break;\r\n case DATA_EDIT_DATA_INSERT_TYPE:\r\n that.executeAction(\"onRowInserted\", params);\r\n break;\r\n case DATA_EDIT_DATA_UPDATE_TYPE:\r\n that.executeAction(\"onRowUpdated\", params)\r\n }\r\n });\r\n this.executeAction(\"onSaved\", {\r\n changes: changes\r\n })\r\n },\r\n saveEditData: function() {\r\n var _this16 = this;\r\n var deferred = new _deferred.Deferred;\r\n this.waitForDeferredOperations().done(function() {\r\n if (_this16.isSaving()) {\r\n _this16._resolveAfterSave(deferred);\r\n return\r\n }(0, _deferred.when)(_this16._beforeSaveEditData()).done(function(cancel) {\r\n if (cancel) {\r\n _this16._resolveAfterSave(deferred, {\r\n cancel: cancel\r\n });\r\n return\r\n }\r\n _this16._saving = true;\r\n _this16._saveEditDataInner().always(function() {\r\n _this16._saving = false\r\n }).done(deferred.resolve).fail(deferred.reject)\r\n }).fail(deferred.reject)\r\n }).fail(deferred.reject);\r\n return deferred.promise()\r\n },\r\n _resolveAfterSave: function(deferred) {\r\n var _ref3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\r\n cancel = _ref3.cancel,\r\n error = _ref3.error;\r\n (0, _deferred.when)(this._afterSaveEditData(cancel)).done(function() {\r\n deferred.resolve(error)\r\n }).fail(deferred.reject)\r\n },\r\n _saveEditDataInner: function() {\r\n var _this17 = this;\r\n var results = [];\r\n var deferreds = [];\r\n var dataChanges = [];\r\n var dataController = this._dataController;\r\n var dataSource = dataController.dataSource();\r\n var result = new _deferred.Deferred;\r\n (0, _deferred.when)(this._fireOnSaving()).done(function(_ref4) {\r\n var cancel = _ref4.cancel,\r\n changes = _ref4.changes;\r\n if (cancel) {\r\n return result.resolve().promise()\r\n }\r\n _this17._processChanges(deferreds, results, dataChanges, changes);\r\n if (deferreds.length) {\r\n null === dataSource || void 0 === dataSource ? void 0 : dataSource.beginLoading();\r\n _deferred.when.apply(void 0, deferreds).done(function() {\r\n if (_this17._processSaveEditDataResult(results)) {\r\n _this17._endSaving(dataChanges, changes, result)\r\n } else {\r\n null === dataSource || void 0 === dataSource ? void 0 : dataSource.endLoading();\r\n result.resolve()\r\n }\r\n }).fail(function(error) {\r\n null === dataSource || void 0 === dataSource ? void 0 : dataSource.endLoading();\r\n result.resolve(error)\r\n });\r\n return result.always(function() {\r\n _this17._focusEditingCell()\r\n }).promise()\r\n }\r\n _this17._cancelSaving(result)\r\n }).fail(result.reject);\r\n return result.promise()\r\n },\r\n _resetModifiedClassCells: function(changes) {\r\n var _this18 = this;\r\n var editMode = _getEditMode(this);\r\n if (editMode === EDIT_MODE_BATCH) {\r\n var columnsCount = this._columnsController.getVisibleColumns().length;\r\n changes.forEach(function(_ref5) {\r\n var key = _ref5.key;\r\n var rowIndex = _this18._dataController.getRowIndexByKey(key);\r\n if (rowIndex !== -1) {\r\n for (var columnIndex = 0; columnIndex < columnsCount; columnIndex++) {\r\n _this18._rowsView._getCellElement(rowIndex, columnIndex).removeClass(CELL_MODIFIED)\r\n }\r\n }\r\n })\r\n }\r\n },\r\n _endSaving: function(dataChanges, changes, deferred) {\r\n var _changes$;\r\n var editMode = _getEditMode(this);\r\n var dataSource = this._dataController.dataSource();\r\n if (editMode !== EDIT_MODE_CELL) {\r\n this._resetModifiedClassCells(changes);\r\n this._resetEditIndices()\r\n } else {\r\n if (\"update\" !== (null === (_changes$ = changes[0]) || void 0 === _changes$ ? void 0 : _changes$.type)) {\r\n this._resetEditIndices()\r\n }\r\n }\r\n if (editMode === EDIT_MODE_POPUP && this._editPopup) {\r\n this._editPopup.hide()\r\n }\r\n null === dataSource || void 0 === dataSource ? void 0 : dataSource.endLoading();\r\n this._refreshDataAfterSave(dataChanges, changes, deferred)\r\n },\r\n _cancelSaving: function(result) {\r\n var editMode = _getEditMode(this);\r\n var dataController = this._dataController;\r\n if (_isRowEditMode(this)) {\r\n if (!this.hasChanges()) {\r\n this._cancelEditDataCore()\r\n }\r\n } else {\r\n if (this.isCellOrBatchEditMode()) {\r\n if (editMode !== EDIT_MODE_CELL) {\r\n this._resetEditIndices()\r\n }\r\n dataController.updateItems()\r\n } else {\r\n this._focusEditingCell()\r\n }\r\n }\r\n this.executeAction(\"onSaved\", {\r\n changes: []\r\n });\r\n this._resolveAfterSave(result)\r\n },\r\n _refreshDataAfterSave: function(dataChanges, changes, deferred) {\r\n var _this19 = this;\r\n var dataController = this._dataController;\r\n var refreshMode = this.option(\"editing.refreshMode\");\r\n var isFullRefresh = \"reshape\" !== refreshMode && \"repaint\" !== refreshMode;\r\n if (!isFullRefresh) {\r\n dataController.push(dataChanges)\r\n }(0, _deferred.when)(dataController.refresh({\r\n selection: isFullRefresh,\r\n reload: isFullRefresh,\r\n load: \"reshape\" === refreshMode,\r\n changesOnly: this.option(\"repaintChangesOnly\")\r\n })).always(function() {\r\n _this19._fireSaveEditDataEvents(changes)\r\n }).done(function() {\r\n _this19._resolveAfterSave(deferred)\r\n }).fail(function(error) {\r\n _this19._resolveAfterSave(deferred, {\r\n error: error\r\n })\r\n })\r\n },\r\n isSaving: function() {\r\n return this._saving\r\n },\r\n _updateEditColumn: function() {\r\n var that = this;\r\n var isEditColumnVisible = that._isEditColumnVisible();\r\n var useIcons = that.option(\"editing.useIcons\");\r\n var cssClass = COMMAND_EDIT_CLASS + (useIcons ? \" \" + COMMAND_EDIT_WITH_ICONS_CLASS : \"\");\r\n that._columnsController.addCommandColumn({\r\n type: \"buttons\",\r\n command: \"edit\",\r\n visible: isEditColumnVisible,\r\n cssClass: cssClass,\r\n width: \"auto\",\r\n alignment: \"center\",\r\n cellTemplate: that._getEditCommandCellTemplate(),\r\n fixedPosition: \"right\"\r\n });\r\n that._columnsController.columnOption(\"command:edit\", {\r\n visible: isEditColumnVisible,\r\n cssClass: cssClass\r\n })\r\n },\r\n _isEditColumnVisible: function() {\r\n var that = this;\r\n var editingOptions = that.option(\"editing\");\r\n if (editingOptions) {\r\n var editMode = _getEditMode(that);\r\n var isVisibleWithCurrentEditMode = false;\r\n switch (editMode) {\r\n case EDIT_MODE_ROW:\r\n isVisibleWithCurrentEditMode = editingOptions.allowUpdating || editingOptions.allowAdding;\r\n break;\r\n case EDIT_MODE_FORM:\r\n case EDIT_MODE_POPUP:\r\n isVisibleWithCurrentEditMode = editingOptions.allowUpdating\r\n }\r\n return editingOptions.allowDeleting || isVisibleWithCurrentEditMode\r\n }\r\n },\r\n _updateEditButtons: function() {\r\n var that = this;\r\n var headerPanel = that.getView(\"headerPanel\");\r\n var hasChanges = that.hasChanges();\r\n if (headerPanel) {\r\n headerPanel.setToolbarItemDisabled(\"saveButton\", !hasChanges);\r\n headerPanel.setToolbarItemDisabled(\"revertButton\", !hasChanges)\r\n }\r\n },\r\n _applyModified: function($element) {\r\n $element && $element.addClass(CELL_MODIFIED)\r\n },\r\n _beforeCloseEditCellInBatchMode: function() {},\r\n cancelEditData: function() {\r\n var changes = this.getChanges();\r\n var params = {\r\n cancel: false,\r\n changes: changes\r\n };\r\n this.executeAction(\"onEditCanceling\", params);\r\n if (!params.cancel) {\r\n this._cancelEditDataCore();\r\n this.executeAction(\"onEditCanceled\", {\r\n changes: changes\r\n })\r\n }\r\n },\r\n _cancelEditDataCore: function() {\r\n var editMode = _getEditMode(this);\r\n var rowIndex = this._getVisibleEditRowIndex();\r\n var dataController = this._dataController;\r\n this._beforeCancelEditData();\r\n this.init();\r\n this.resetChanges();\r\n this._resetEditColumnName();\r\n this._resetEditRowKey();\r\n if (ROW_BASED_MODES.indexOf(editMode) !== -1 && rowIndex >= 0) {\r\n dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: [rowIndex, rowIndex + 1]\r\n })\r\n } else {\r\n dataController.updateItems({\r\n repaintChangesOnly: this.option(\"repaintChangesOnly\")\r\n })\r\n }\r\n if (editMode === EDIT_MODE_POPUP) {\r\n this._hideEditPopup()\r\n }\r\n },\r\n _hideEditPopup: function() {\r\n this._editPopup && this._editPopup.option(\"visible\", false)\r\n },\r\n hasEditData: function() {\r\n return this.hasChanges()\r\n },\r\n closeEditCell: function(isError, withoutSaveEditData) {\r\n var _this20 = this;\r\n var that = this;\r\n var result = (0, _deferred.when)();\r\n var oldEditRowIndex = that._getVisibleEditRowIndex();\r\n if (!_isRowEditMode(that)) {\r\n var deferred = new _deferred.Deferred;\r\n result = new _deferred.Deferred;\r\n this.executeOperation(deferred, function() {\r\n _this20._closeEditCellCore(isError, oldEditRowIndex, withoutSaveEditData).always(result.resolve)\r\n })\r\n }\r\n return result.promise()\r\n },\r\n _closeEditCellCore: function(isError, oldEditRowIndex, withoutSaveEditData) {\r\n var _this21 = this;\r\n var editMode = _getEditMode(this);\r\n var dataController = this._dataController;\r\n var deferred = new _deferred.Deferred;\r\n var promise = deferred.promise();\r\n if (editMode === EDIT_MODE_CELL && this.hasChanges()) {\r\n if (!withoutSaveEditData) {\r\n this.saveEditData().done(function(error) {\r\n if (!_this21.hasChanges()) {\r\n _this21.closeEditCell(!!error).always(deferred.resolve);\r\n return\r\n }\r\n deferred.resolve()\r\n });\r\n return promise\r\n }\r\n } else {\r\n if (oldEditRowIndex >= 0) {\r\n var rowIndices = [oldEditRowIndex];\r\n this._resetEditRowKey();\r\n this._resetEditColumnName();\r\n this._beforeCloseEditCellInBatchMode(rowIndices);\r\n if (!isError) {\r\n dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: rowIndices\r\n })\r\n }\r\n }\r\n }\r\n deferred.resolve();\r\n return promise\r\n },\r\n update: function(changeType) {\r\n var that = this;\r\n var dataController = that._dataController;\r\n if (dataController && that._pageIndex !== dataController.pageIndex()) {\r\n if (\"refresh\" === changeType) {\r\n that.refresh(true)\r\n }\r\n that._pageIndex = dataController.pageIndex()\r\n }\r\n that._updateEditButtons()\r\n },\r\n _getRowIndicesForCascadeUpdating: function(row, skipCurrentRow) {\r\n return skipCurrentRow ? [] : [row.rowIndex]\r\n },\r\n addDeferred: function(deferred) {\r\n var _this22 = this;\r\n if (this._deferreds.indexOf(deferred) < 0) {\r\n this._deferreds.push(deferred);\r\n deferred.always(function() {\r\n var index = _this22._deferreds.indexOf(deferred);\r\n if (index >= 0) {\r\n _this22._deferreds.splice(index, 1)\r\n }\r\n })\r\n }\r\n },\r\n _prepareChange: function(options, value, text) {\r\n var _options$row;\r\n var that = this;\r\n var newData = {};\r\n var oldData = null === (_options$row = options.row) || void 0 === _options$row ? void 0 : _options$row.data;\r\n var rowKey = options.key;\r\n var $cellElement = (0, _renderer.default)(options.cellElement);\r\n var editMode = _getEditMode(that);\r\n var deferred = new _deferred.Deferred;\r\n if (void 0 !== rowKey) {\r\n if (editMode === EDIT_MODE_BATCH) {\r\n that._applyModified($cellElement, options)\r\n }\r\n options.value = value;\r\n var setCellValueResult = (0, _deferred.fromPromise)(options.column.setCellValue(newData, value, (0, _extend.extend)(true, {}, oldData), text));\r\n setCellValueResult.done(function() {\r\n deferred.resolve({\r\n data: newData,\r\n key: rowKey,\r\n oldData: oldData,\r\n type: DATA_EDIT_DATA_UPDATE_TYPE\r\n })\r\n }).fail(createFailureHandler(deferred)).fail(function(arg) {\r\n return that._fireDataErrorOccurred(arg)\r\n });\r\n if ((0, _type.isDefined)(text) && options.column.displayValueMap) {\r\n options.column.displayValueMap[value] = text\r\n }\r\n that._updateRowValues(options);\r\n that.addDeferred(deferred)\r\n }\r\n return deferred\r\n },\r\n _updateRowValues: function(options) {\r\n if (options.values) {\r\n var dataController = this._dataController;\r\n var rowIndex = dataController.getRowIndexByKey(options.key);\r\n var row = dataController.getVisibleRows()[rowIndex];\r\n if (row) {\r\n options.values = row.values\r\n }\r\n options.values[options.columnIndex] = options.value\r\n }\r\n },\r\n updateFieldValue: function(options, value, text, forceUpdateRow) {\r\n var _this23 = this;\r\n var rowKey = options.key;\r\n var deferred = new _deferred.Deferred;\r\n if (void 0 === rowKey) {\r\n this._dataController.fireError(\"E1043\")\r\n }\r\n if (options.column.setCellValue) {\r\n this._prepareChange(options, value, text).done(function(params) {\r\n (0, _deferred.when)(_this23._applyChange(options, params, forceUpdateRow)).always(function() {\r\n deferred.resolve()\r\n })\r\n })\r\n } else {\r\n deferred.resolve()\r\n }\r\n return deferred.promise()\r\n },\r\n _focusPreviousEditingCellIfNeed: function(options) {\r\n var that = this;\r\n if (that.hasEditData() && !that.isEditCell(options.rowIndex, options.columnIndex)) {\r\n that._focusEditingCell();\r\n that._updateEditRow(options.row, true);\r\n return true\r\n }\r\n },\r\n _needUpdateRow: function(column) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n if (!column) {\r\n column = this._getEditColumn()\r\n }\r\n var isCustomSetCellValue = column && column.setCellValue !== column.defaultSetCellValue;\r\n var isCustomCalculateCellValue = visibleColumns.some(function(visibleColumn) {\r\n return visibleColumn.calculateCellValue !== visibleColumn.defaultCalculateCellValue\r\n });\r\n return isCustomSetCellValue || isCustomCalculateCellValue\r\n },\r\n _applyChange: function(options, params, forceUpdateRow) {\r\n var that = this;\r\n var editMode = _getEditMode(that);\r\n var isCustomSetCellValue = options.column.setCellValue !== options.column.defaultSetCellValue;\r\n var showEditorAlways = options.column.showEditorAlways;\r\n var isUpdateInCellMode = editMode === EDIT_MODE_CELL && options.row && !options.row.isNewRow;\r\n var focusPreviousEditingCell = showEditorAlways && !forceUpdateRow && isUpdateInCellMode && that.hasEditData() && !that.isEditCell(options.rowIndex, options.columnIndex);\r\n if (focusPreviousEditingCell) {\r\n that._focusEditingCell();\r\n that._updateEditRow(options.row, true, isCustomSetCellValue);\r\n return\r\n }\r\n that._addChange(params, options.row);\r\n that._updateEditButtons();\r\n if (showEditorAlways && !forceUpdateRow) {\r\n if (isUpdateInCellMode) {\r\n that._setEditRowKey(options.row.key, true);\r\n that._setEditColumnNameByIndex(options.columnIndex, true);\r\n return that.saveEditData()\r\n } else {\r\n if (editMode === EDIT_MODE_BATCH) {\r\n forceUpdateRow = that._needUpdateRow(options.column)\r\n }\r\n }\r\n }\r\n var row = options.row;\r\n if (row) {\r\n if (forceUpdateRow || isCustomSetCellValue) {\r\n that._updateEditRow(row, forceUpdateRow, isCustomSetCellValue)\r\n } else {\r\n if (row.update) {\r\n row.update()\r\n }\r\n }\r\n }\r\n },\r\n _updateEditRowCore: function(row, skipCurrentRow, isCustomSetCellValue) {\r\n var that = this;\r\n var editForm = that._editForm;\r\n var editMode = _getEditMode(that);\r\n if (editMode === EDIT_MODE_POPUP) {\r\n if (that.option(\"repaintChangesOnly\")) {\r\n row.update && row.update(row)\r\n } else {\r\n if (editForm) {\r\n that._updateEditFormDeferred = (new _deferred.Deferred).done(function() {\r\n return editForm.repaint()\r\n });\r\n if (!that._updateLockCount) {\r\n that._updateEditFormDeferred.resolve()\r\n }\r\n }\r\n }\r\n } else {\r\n that._dataController.updateItems({\r\n changeType: \"update\",\r\n rowIndices: that._getRowIndicesForCascadeUpdating(row, skipCurrentRow)\r\n })\r\n }\r\n },\r\n _endUpdateCore: function() {\r\n this._updateEditFormDeferred && this._updateEditFormDeferred.resolve()\r\n },\r\n _updateEditRow: function(row, forceUpdateRow, isCustomSetCellValue) {\r\n var that = this;\r\n if (forceUpdateRow || !_isRowEditMode(that)) {\r\n that._updateEditRowCore(row, !forceUpdateRow, isCustomSetCellValue);\r\n if (!forceUpdateRow) {\r\n that._focusEditingCell()\r\n }\r\n } else {\r\n var deferred = new _deferred.Deferred;\r\n that.addDeferred(deferred);\r\n setTimeout(function() {\r\n var $focusedElement = (0, _renderer.default)(_dom_adapter.default.getActiveElement());\r\n var columnIndex = that._rowsView.getCellIndex($focusedElement, row.rowIndex);\r\n var focusedElement = $focusedElement.get(0);\r\n var selectionRange = _uiGrid_core2.default.getSelectionRange(focusedElement);\r\n that._updateEditRowCore(row, false, isCustomSetCellValue);\r\n if (columnIndex >= 0) {\r\n var $focusedItem = that._rowsView._getCellElement(row.rowIndex, columnIndex);\r\n that._delayedInputFocus($focusedItem, function() {\r\n setTimeout(function() {\r\n focusedElement = _dom_adapter.default.getActiveElement();\r\n if (selectionRange.selectionStart >= 0) {\r\n _uiGrid_core2.default.setSelectionRange(focusedElement, selectionRange)\r\n }\r\n })\r\n })\r\n }\r\n deferred.resolve()\r\n })\r\n }\r\n },\r\n _addChange: function(options, row) {\r\n var changes = _toConsumableArray(this.getChanges());\r\n var index = _uiGrid_core2.default.getIndexByKey(options.key, changes);\r\n if (index < 0) {\r\n index = changes.length;\r\n this._addInternalData({\r\n key: options.key,\r\n oldData: options.oldData\r\n });\r\n delete options.oldData;\r\n changes.push(options)\r\n }\r\n var change = _objectSpread({}, changes[index]);\r\n if (change) {\r\n if (options.data) {\r\n change.data = (0, _array_utils.createObjectWithChanges)(change.data, options.data)\r\n }\r\n if ((!change.type || !options.data) && options.type) {\r\n change.type = options.type\r\n }\r\n if (row) {\r\n row.oldData = this._getOldData(row.key);\r\n row.data = (0, _array_utils.createObjectWithChanges)(row.data, options.data)\r\n }\r\n }\r\n changes[index] = change;\r\n this._silentOption(EDITING_CHANGES_OPTION_NAME, changes);\r\n return index\r\n },\r\n _getFormEditItemTemplate: function(cellOptions, column) {\r\n return column.editCellTemplate || getDefaultEditorTemplate(this)\r\n },\r\n renderFormEditTemplate: function(detailCellOptions, item, form, container, isReadOnly) {\r\n var that = this;\r\n var $container = (0, _renderer.default)(container);\r\n var column = item.column;\r\n var editorType = getEditorType(item);\r\n var rowData = null === detailCellOptions || void 0 === detailCellOptions ? void 0 : detailCellOptions.row.data;\r\n var cellOptions = (0, _extend.extend)({}, detailCellOptions, {\r\n data: rowData,\r\n cellElement: null,\r\n isOnForm: true,\r\n item: item,\r\n column: (0, _extend.extend)({}, column, {\r\n editorType: editorType,\r\n editorOptions: item.editorOptions\r\n }),\r\n id: form.getItemID(item.name || item.dataField),\r\n columnIndex: column.index,\r\n setValue: !isReadOnly && column.allowEditing && function(value) {\r\n that.updateFieldValue(cellOptions, value)\r\n }\r\n });\r\n cellOptions.value = column.calculateCellValue(rowData);\r\n var template = that._getFormEditItemTemplate.bind(that)(cellOptions, column);\r\n that._rowsView.renderTemplate($container, template, cellOptions, !!$container.closest((0, _window.getWindow)().document).length).done(function() {\r\n that._rowsView._updateCell($container, cellOptions)\r\n });\r\n return cellOptions\r\n },\r\n getFormEditorTemplate: function(cellOptions, item) {\r\n var that = this;\r\n var column = this.component.columnOption(item.dataField);\r\n return function(options, container) {\r\n var $container = (0, _renderer.default)(container);\r\n cellOptions.row.watch && cellOptions.row.watch(function() {\r\n return column.selector(cellOptions.row.data)\r\n }, function() {\r\n var _validator;\r\n var $editorElement = $container.find(\".dx-widget\").first();\r\n var validator = $editorElement.data(\"dxValidator\");\r\n var validatorOptions = null === (_validator = validator) || void 0 === _validator ? void 0 : _validator.option();\r\n $container.contents().remove();\r\n cellOptions = that.renderFormEditTemplate.bind(that)(cellOptions, item, options.component, $container);\r\n $editorElement = $container.find(\".dx-widget\").first();\r\n validator = $editorElement.data(\"dxValidator\");\r\n if (validatorOptions && !validator) {\r\n $editorElement.dxValidator({\r\n validationRules: validatorOptions.validationRules,\r\n validationGroup: validatorOptions.validationGroup,\r\n dataGetter: validatorOptions.dataGetter\r\n })\r\n }\r\n });\r\n cellOptions = that.renderFormEditTemplate.bind(that)(cellOptions, item, options.component, $container)\r\n }\r\n },\r\n getEditFormOptions: function(detailOptions) {\r\n var userCustomizeItem = this.option(\"editing.form.customizeItem\");\r\n var editFormItemClass = this.addWidgetPrefix(EDIT_FORM_ITEM_CLASS);\r\n var items = this.option(\"editing.form.items\");\r\n var isCustomEditorType = {};\r\n var that = this;\r\n if (!items) {\r\n var columns = this.getController(\"columns\").getColumns();\r\n items = [];\r\n (0, _iterator.each)(columns, function(_, column) {\r\n if (!column.isBand && !column.type) {\r\n items.push({\r\n column: column,\r\n name: column.name,\r\n dataField: column.dataField\r\n })\r\n }\r\n })\r\n } else {\r\n forEachFormItems(items, function(item) {\r\n var itemId = (null === item || void 0 === item ? void 0 : item.name) || (null === item || void 0 === item ? void 0 : item.dataField);\r\n if (itemId) {\r\n isCustomEditorType[itemId] = !!item.editorType\r\n }\r\n })\r\n }\r\n return {\r\n items: items,\r\n formID: \"dx-\" + new _guid.default,\r\n customizeItem: function(item) {\r\n var column;\r\n var itemId = item.name || item.dataField;\r\n if (item.column || itemId) {\r\n column = item.column || that._columnsController.columnOption(item.name ? \"name:\" + item.name : \"dataField:\" + item.dataField)\r\n }\r\n if (column) {\r\n item.label = item.label || {};\r\n item.label.text = item.label.text || column.caption;\r\n item.template = item.template || that.getFormEditorTemplate(detailOptions, item);\r\n item.column = column;\r\n item.isCustomEditorType = isCustomEditorType[itemId];\r\n if (column.formItem) {\r\n (0, _extend.extend)(item, column.formItem)\r\n }\r\n if (void 0 === item.isRequired && column.validationRules) {\r\n item.isRequired = column.validationRules.some(function(rule) {\r\n return \"required\" === rule.type\r\n });\r\n item.validationRules = []\r\n }\r\n var itemVisible = (0, _type.isDefined)(item.visible) ? item.visible : true;\r\n if (!that._firstFormItem && itemVisible) {\r\n that._firstFormItem = item\r\n }\r\n }\r\n userCustomizeItem && userCustomizeItem.call(this, item);\r\n item.cssClass = (0, _type.isString)(item.cssClass) ? item.cssClass + \" \" + editFormItemClass : editFormItemClass\r\n }\r\n }\r\n },\r\n getEditFormTemplate: function() {\r\n var that = this;\r\n return function($container, detailOptions, renderFormOnly) {\r\n var editFormOptions = that.option(\"editing.form\");\r\n var baseEditFormOptions = that.getEditFormOptions(detailOptions);\r\n that._firstFormItem = void 0;\r\n that._editForm = that._createComponent((0, _renderer.default)(\"
\").appendTo($container), _form.default, (0, _extend.extend)({}, editFormOptions, baseEditFormOptions));\r\n if (!renderFormOnly) {\r\n var $buttonsContainer = (0, _renderer.default)(\"
\").addClass(that.addWidgetPrefix(FORM_BUTTONS_CONTAINER_CLASS)).appendTo($container);\r\n that._createComponent((0, _renderer.default)(\"
\").appendTo($buttonsContainer), _button.default, that._getSaveButtonConfig());\r\n that._createComponent((0, _renderer.default)(\"
\").appendTo($buttonsContainer), _button.default, that._getCancelButtonConfig())\r\n }\r\n that._editForm.on(\"contentReady\", function() {\r\n that._editPopup && that._editPopup.repaint()\r\n })\r\n }\r\n },\r\n getColumnTemplate: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n var rowIndex = options.row && options.row.rowIndex;\r\n var template;\r\n var isRowMode = _isRowEditMode(that);\r\n var isRowEditing = that.isEditRow(rowIndex);\r\n var isCellEditing = that.isEditCell(rowIndex, options.columnIndex);\r\n var editingStartOptions;\r\n if ((column.showEditorAlways || column.setCellValue && (isRowEditing && column.allowEditing || isCellEditing)) && (\"data\" === options.rowType || \"detailAdaptive\" === options.rowType) && !column.command) {\r\n var allowUpdating = that.allowUpdating(options);\r\n if (((allowUpdating || isRowEditing) && column.allowEditing || isCellEditing) && (isRowMode && isRowEditing || !isRowMode)) {\r\n if (column.showEditorAlways && !isRowMode) {\r\n editingStartOptions = {\r\n cancel: false,\r\n key: options.row.isNewRow ? void 0 : options.row.key,\r\n data: options.row.data,\r\n column: column\r\n };\r\n that._isEditingStart(editingStartOptions)\r\n }\r\n if (!editingStartOptions || !editingStartOptions.cancel) {\r\n options.setValue = function(value, text) {\r\n that.updateFieldValue(options, value, text)\r\n }\r\n }\r\n }\r\n template = column.editCellTemplate || getDefaultEditorTemplate(that)\r\n } else {\r\n if (\"detail\" === column.command && \"detail\" === options.rowType && isRowEditing) {\r\n template = that.getEditFormTemplate(options)\r\n }\r\n }\r\n return template\r\n },\r\n _createButton: function($container, button, options) {\r\n var that = this;\r\n var icon = EDIT_ICON_CLASS[button.name];\r\n var useIcons = that.option(\"editing.useIcons\");\r\n var $button = (0, _renderer.default)(\"\").attr(\"href\", \"#\").addClass(LINK_CLASS).addClass(button.cssClass);\r\n if (button.template) {\r\n that._rowsView.renderTemplate($container, button.template, options, true)\r\n } else {\r\n if (useIcons && icon || button.icon) {\r\n icon = button.icon || icon;\r\n var iconType = iconUtils.getImageSourceType(icon);\r\n if (\"image\" === iconType || \"svg\" === iconType) {\r\n $button = iconUtils.getImageContainer(icon).addClass(button.cssClass)\r\n } else {\r\n $button.addClass(\"dx-icon\" + (\"dxIcon\" === iconType ? \"-\" : \" \") + icon).attr(\"title\", button.text)\r\n }\r\n $button.addClass(\"dx-link-icon\");\r\n $container.addClass(COMMAND_EDIT_WITH_ICONS_CLASS);\r\n var localizationName = this.getButtonLocalizationNames()[button.name];\r\n localizationName && $button.attr(\"aria-label\", _message.default.format(localizationName))\r\n } else {\r\n $button.text(button.text)\r\n }\r\n if ((0, _type.isDefined)(button.hint)) {\r\n $button.attr(\"title\", button.hint)\r\n }\r\n _events_engine.default.on($button, (0, _index.addNamespace)(\"click\", EDITING_NAMESPACE), that.createAction(function(e) {\r\n button.onClick.call(button, (0, _extend.extend)({}, e, {\r\n row: options.row,\r\n column: options.column\r\n }));\r\n e.event.preventDefault();\r\n e.event.stopPropagation()\r\n }));\r\n $container.append($button, \" \")\r\n }\r\n },\r\n getButtonLocalizationNames: function() {\r\n return {\r\n edit: \"dxDataGrid-editingEditRow\",\r\n save: \"dxDataGrid-editingSaveRowChanges\",\r\n \"delete\": \"dxDataGrid-editingDeleteRow\",\r\n undelete: \"dxDataGrid-editingUndeleteRow\",\r\n cancel: \"dxDataGrid-editingCancelRowChanges\"\r\n }\r\n },\r\n prepareEditButtons: function(headerPanel) {\r\n var that = this;\r\n var editingOptions = that.option(\"editing\") || {};\r\n var editingTexts = that.option(\"editing.texts\") || {};\r\n var titleButtonTextByClassNames = {\r\n revert: editingTexts.cancelAllChanges,\r\n save: editingTexts.saveAllChanges,\r\n addRow: editingTexts.addRow\r\n };\r\n var classNameButtonByNames = {\r\n revert: \"cancel\",\r\n save: \"save\",\r\n addRow: \"addrow\"\r\n };\r\n var buttonItems = [];\r\n var prepareButtonItem = function(name, methodName, sortIndex) {\r\n var className = classNameButtonByNames[name];\r\n var onInitialized = function(e) {\r\n (0, _renderer.default)(e.element).addClass(headerPanel._getToolbarButtonClass(EDIT_BUTTON_CLASS + \" \" + that.addWidgetPrefix(className) + \"-button\"))\r\n };\r\n var hintText = titleButtonTextByClassNames[name];\r\n var isButtonDisabled = (\"save\" === className || \"cancel\" === className) && !that.hasChanges();\r\n return {\r\n widget: \"dxButton\",\r\n options: {\r\n onInitialized: onInitialized,\r\n icon: \"edit-button-\" + className,\r\n disabled: isButtonDisabled,\r\n onClick: function() {\r\n setTimeout(function() {\r\n that[methodName]()\r\n })\r\n },\r\n text: hintText,\r\n hint: hintText\r\n },\r\n showText: \"inMenu\",\r\n name: name + \"Button\",\r\n location: \"after\",\r\n locateInMenu: \"auto\",\r\n sortIndex: sortIndex\r\n }\r\n };\r\n if (editingOptions.allowAdding) {\r\n buttonItems.push(prepareButtonItem(\"addRow\", \"addRow\", 20))\r\n }\r\n if ((editingOptions.allowUpdating || editingOptions.allowAdding || editingOptions.allowDeleting) && _getEditMode(that) === EDIT_MODE_BATCH) {\r\n buttonItems.push(prepareButtonItem(\"save\", \"saveEditData\", 21));\r\n buttonItems.push(prepareButtonItem(\"revert\", \"cancelEditData\", 22))\r\n }\r\n return buttonItems\r\n },\r\n highlightDataCell: function($cell, parameters) {\r\n var cellModified = this.isCellModified(parameters);\r\n cellModified && parameters.column.setCellValue && $cell.addClass(CELL_MODIFIED)\r\n },\r\n _afterInsertRow: function() {},\r\n _beforeSaveEditData: function(change) {\r\n if (change && !(0, _type.isDefined)(change.key) && (0, _type.isDefined)(change.type)) {\r\n return true\r\n }\r\n },\r\n _afterSaveEditData: function() {},\r\n _beforeCancelEditData: function() {},\r\n _allowEditAction: function(actionName, options) {\r\n var allowEditAction = this.option(\"editing.\" + actionName);\r\n if ((0, _type.isFunction)(allowEditAction)) {\r\n allowEditAction = allowEditAction({\r\n component: this.component,\r\n row: options.row\r\n })\r\n }\r\n return allowEditAction\r\n },\r\n allowUpdating: function(options, eventName) {\r\n var startEditAction = this.option(\"editing.startEditAction\") || DEFAULT_START_EDIT_ACTION;\r\n var needCallback = arguments.length > 1 ? startEditAction === eventName || \"down\" === eventName : true;\r\n return needCallback && this._allowEditAction(\"allowUpdating\", options)\r\n },\r\n allowDeleting: function(options) {\r\n return this._allowEditAction(\"allowDeleting\", options)\r\n },\r\n isCellModified: function(parameters) {\r\n var columnIndex = parameters.columnIndex;\r\n var modifiedValues = parameters.row && (parameters.row.isNewRow ? parameters.row.values : parameters.row.modifiedValues);\r\n return !!modifiedValues && void 0 !== modifiedValues[columnIndex]\r\n }\r\n }\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 _this24 = this;\r\n this._pointerDownTimeout = setTimeout(function() {\r\n _this24._editCellByClick(e, \"down\")\r\n })\r\n },\r\n _rowClick: function(e) {\r\n var isEditForm = (0, _renderer.default)(e.rowElement).hasClass(this.addWidgetPrefix(EDIT_FORM_CLASS));\r\n e.event[TARGET_COMPONENT_NAME] = this.component;\r\n if (!this._editCellByClick(e, \"click\") && !isEditForm) {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _rowDblClick: function(e) {\r\n if (!this._editCellByClick(e, \"dblClick\")) {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _cellPrepared: function($cell, parameters) {\r\n var editingController = this._editingController;\r\n var isCommandCell = !!parameters.column.command;\r\n var isEditableCell = parameters.setValue;\r\n var isEditRow = editingController.isEditRow(parameters.rowIndex);\r\n var isEditing = isEditingCell(isEditRow, parameters);\r\n if (isEditingOrShowEditorAlwaysDataCell(isEditRow, parameters)) {\r\n var alignment = parameters.column.alignment;\r\n $cell.toggleClass(this.addWidgetPrefix(READONLY_CLASS), !isEditableCell).toggleClass(CELL_FOCUS_DISABLED_CLASS, !isEditableCell);\r\n if (alignment) {\r\n $cell.find(EDITORS_INPUT_SELECTOR).first().css(\"textAlign\", alignment)\r\n }\r\n }\r\n if (isEditing) {\r\n this._editCellPrepared($cell)\r\n }\r\n if (parameters.column && !isCommandCell) {\r\n editingController.highlightDataCell($cell, parameters)\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _editCellPrepared: function($cell) {},\r\n _formItemPrepared: function() {},\r\n _isFormItem: function(parameters) {\r\n var isDetailRow = \"detail\" === parameters.rowType || \"detailAdaptive\" === parameters.rowType;\r\n var isPopupEditing = \"data\" === parameters.rowType && \"popup\" === _getEditMode(this);\r\n return (isDetailRow || isPopupEditing) && parameters.item\r\n },\r\n _updateCell: function($cell, parameters) {\r\n if (this._isFormItem(parameters)) {\r\n this._formItemPrepared(parameters, $cell)\r\n } else {\r\n this.callBase($cell, parameters)\r\n }\r\n },\r\n _update: function(change) {\r\n this.callBase(change);\r\n if (\"updateSelection\" === change.changeType) {\r\n this.getTableElements().children(\"tbody\").children(\".\" + EDIT_ROW).removeClass(ROW_SELECTED)\r\n }\r\n },\r\n _getCellOptions: function(options) {\r\n var cellOptions = this.callBase(options);\r\n cellOptions.isEditing = this._editingController.isEditCell(cellOptions.rowIndex, cellOptions.columnIndex);\r\n return cellOptions\r\n },\r\n _createCell: function(options) {\r\n var $cell = this.callBase(options);\r\n var isEditRow = this._editingController.isEditRow(options.rowIndex);\r\n isEditingOrShowEditorAlwaysDataCell(isEditRow, options) && $cell.addClass(EDITOR_CELL_CLASS);\r\n return $cell\r\n },\r\n _renderCellContent: function($cell, options) {\r\n if (\"data\" === options.rowType && _getEditMode(this) === EDIT_MODE_POPUP && false === options.row.visible) {\r\n return\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n cellValue: function(rowIndex, columnIdentifier, value, text) {\r\n var cellOptions = this.getCellOptions(rowIndex, columnIdentifier);\r\n if (cellOptions) {\r\n if (void 0 === value) {\r\n return cellOptions.value\r\n } else {\r\n this._editingController.updateFieldValue(cellOptions, value, text, true)\r\n }\r\n }\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n clearTimeout(this._pointerDownTimeout)\r\n },\r\n _renderCore: function() {\r\n this.callBase.apply(this, arguments);\r\n this._editingController._focusEditorIfNeed()\r\n }\r\n },\r\n headerPanel: {\r\n _getToolbarItems: function() {\r\n var items = this.callBase();\r\n var editButtonItems = this.getController(\"editing\").prepareEditButtons(this);\r\n return editButtonItems.concat(items)\r\n },\r\n optionChanged: function(args) {\r\n var fullName = args.fullName;\r\n switch (args.name) {\r\n case \"editing\":\r\n var excludedOptions = [EDITING_POPUP_OPTION_NAME, EDITING_CHANGES_OPTION_NAME, EDITING_EDITCOLUMNNAME_OPTION_NAME, EDITING_EDITROWKEY_OPTION_NAME];\r\n var shouldInvalidate = fullName && !excludedOptions.some(function(optionName) {\r\n return optionName === fullName\r\n });\r\n shouldInvalidate && this._invalidate();\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n isVisible: function() {\r\n var that = this;\r\n var editingOptions = that.getController(\"editing\").option(\"editing\");\r\n return that.callBase() || editingOptions && (editingOptions.allowAdding || (editingOptions.allowUpdating || editingOptions.allowDeleting) && editingOptions.mode === EDIT_MODE_BATCH)\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/menu/ui.submenu.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _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 _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\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\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 _inheritsLoose(Submenu, _ContextMenu);\r\n\r\n function Submenu() {\r\n return _ContextMenu.apply(this, arguments) || this\r\n }\r\n var _proto = Submenu.prototype;\r\n _proto._getDefaultOptions = function() {\r\n return (0, _extend.extend)(_ContextMenu.prototype._getDefaultOptions.call(this), {\r\n orientation: \"horizontal\",\r\n tabIndex: null,\r\n onHoverStart: _common.noop\r\n })\r\n };\r\n _proto._initDataAdapter = function() {\r\n this._dataAdapter = this.option(\"_dataAdapter\");\r\n if (!this._dataAdapter) {\r\n _ContextMenu.prototype._initDataAdapter.call(this)\r\n }\r\n };\r\n _proto._renderContentImpl = function() {\r\n this._renderContextMenuOverlay();\r\n _ContextMenu.prototype._renderContentImpl.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 _proto._renderDelimiter = function() {\r\n this.$contentDelimiter = (0, _renderer.default)(\"
\").appendTo(this._itemContainer()).addClass(DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS)\r\n };\r\n _proto._getOverlayOptions = function() {\r\n return (0, _extend.extend)(_ContextMenu.prototype._getOverlayOptions.call(this), {\r\n onPositioned: this._overlayPositionedActionHandler.bind(this)\r\n })\r\n };\r\n _proto._overlayPositionedActionHandler = function(arg) {\r\n this._showDelimiter(arg)\r\n };\r\n _proto._hoverEndHandler = function(e) {\r\n _ContextMenu.prototype._hoverEndHandler.call(this, e);\r\n this._toggleFocusClass(false, e.currentTarget)\r\n };\r\n _proto._isMenuHorizontal = function() {\r\n return \"horizontal\" === this.option(\"orientation\")\r\n };\r\n _proto._hoverStartHandler = function(e) {\r\n var hoverStartAction = this.option(\"onHoverStart\");\r\n hoverStartAction(e);\r\n _ContextMenu.prototype._hoverStartHandler.call(this, e);\r\n this._toggleFocusClass(true, e.currentTarget)\r\n };\r\n _proto._drawSubmenu = function($rootItem) {\r\n this._actions.onShowing({\r\n rootItem: (0, _element.getPublicElement)($rootItem),\r\n submenu: this\r\n });\r\n _ContextMenu.prototype._drawSubmenu.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 _proto._hideSubmenu = 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 _ContextMenu.prototype._hideSubmenu.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 _proto._showDelimiter = 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 _proto._getContextMenuPosition = function() {\r\n return this.option(\"position\")\r\n };\r\n _proto.isOverlayVisible = function() {\r\n return this._overlay.option(\"visible\")\r\n };\r\n _proto.getOverlayContent = function() {\r\n return this._overlay.$content()\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.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 var _this$_footerView;\r\n var rowsView = this._rowsView;\r\n var columnHeadersView = this._columnHeadersView;\r\n if (!this.option(\"legacyRendering\")) {\r\n var _widths;\r\n var widths = rowsView.getColumnWidths();\r\n if (!(null !== (_widths = widths) && void 0 !== _widths && _widths.length)) {\r\n var _rowsView$getTableEle;\r\n var headersTableElement = columnHeadersView.getTableElement();\r\n columnHeadersView.setTableElement(null === (_rowsView$getTableEle = rowsView.getTableElement()) || void 0 === _rowsView$getTableEle ? void 0 : _rowsView$getTableEle.children(\".dx-header\"));\r\n widths = columnHeadersView.getColumnWidths();\r\n columnHeadersView.setTableElement(headersTableElement)\r\n }\r\n return widths\r\n }\r\n var rowsColumnWidths = rowsView.getColumnWidths();\r\n var headerColumnWidths = null === columnHeadersView || void 0 === columnHeadersView ? void 0 : columnHeadersView.getColumnWidths();\r\n var footerColumnWidths = null === (_this$_footerView = this._footerView) || void 0 === _this$_footerView ? void 0 : _this$_footerView.getColumnWidths();\r\n var resultWidths = mergeArraysByMaxValue(rowsColumnWidths, headerColumnWidths);\r\n resultWidths = mergeArraysByMaxValue(resultWidths, footerColumnWidths);\r\n return resultWidths\r\n },\r\n _setVisibleWidths: function(visibleColumns, widths) {\r\n var columnsController = this._columnsController;\r\n columnsController.beginUpdate();\r\n (0, _iterator.each)(visibleColumns, function(index, column) {\r\n var columnId = columnsController.getColumnId(column);\r\n columnsController.columnOption(columnId, \"visibleWidth\", widths[index])\r\n });\r\n columnsController.endUpdate()\r\n },\r\n _toggleBestFitModeForView: function(view, className, isBestFit) {\r\n var _this = this;\r\n if (!view || !view.isVisible()) {\r\n return\r\n }\r\n var $rowsTables = this._rowsView.getTableElements();\r\n var $viewTables = view.getTableElements();\r\n (0, _iterator.each)($rowsTables, function(index, tableElement) {\r\n var $tableBody;\r\n var $rowsTable = (0, _renderer.default)(tableElement);\r\n var $viewTable = $viewTables.eq(index);\r\n if ($viewTable && $viewTable.length) {\r\n if (isBestFit) {\r\n $tableBody = $viewTable.children(\"tbody\").appendTo($rowsTable)\r\n } else {\r\n $tableBody = $rowsTable.children(\".\" + className).appendTo($viewTable)\r\n }\r\n $tableBody.toggleClass(className, isBestFit);\r\n $tableBody.toggleClass(_this.addWidgetPrefix(\"best-fit\"), isBestFit)\r\n }\r\n })\r\n },\r\n _toggleBestFitMode: function(isBestFit) {\r\n var $element = this.component.$element();\r\n var that = this;\r\n if (!that.option(\"legacyRendering\")) {\r\n var $rowsTable = that._rowsView.getTableElement();\r\n var $rowsFixedTable = that._rowsView.getTableElements().eq(1);\r\n if (!$rowsTable) {\r\n return\r\n }\r\n $rowsTable.css(\"tableLayout\", isBestFit ? \"auto\" : \"fixed\");\r\n $rowsTable.children(\"colgroup\").css(\"display\", isBestFit ? \"none\" : \"\");\r\n $rowsFixedTable.toggleClass(this.addWidgetPrefix(TABLE_FIXED_CLASS), !isBestFit);\r\n that._toggleBestFitModeForView(that._columnHeadersView, \"dx-header\", isBestFit);\r\n that._toggleBestFitModeForView(that._footerView, \"dx-footer\", isBestFit);\r\n if (that._needStretch()) {\r\n $rowsTable.get(0).style.width = isBestFit ? \"auto\" : \"\"\r\n }\r\n if (_browser.default.msie && 11 === parseInt(_browser.default.version)) {\r\n $rowsTable.find(\".\" + this.addWidgetPrefix(TABLE_FIXED_CLASS)).each(function() {\r\n this.style.width = isBestFit ? \"10px\" : \"\"\r\n })\r\n }\r\n } else {\r\n $element.find(\".\" + this.addWidgetPrefix(TABLE_CLASS)).toggleClass(this.addWidgetPrefix(TABLE_FIXED_CLASS), !isBestFit);\r\n $element.find(EDITORS_INPUT_SELECTOR).toggleClass(HIDDEN_CLASS, isBestFit);\r\n $element.find(\".dx-group-cell\").toggleClass(HIDDEN_CLASS, isBestFit);\r\n $element.find(\".dx-header-row .\" + this.addWidgetPrefix(TEXT_CONTENT_CLASS)).css(\"maxWidth\", \"\")\r\n }\r\n },\r\n _synchronizeColumns: function() {\r\n var that = this;\r\n var columnsController = that._columnsController;\r\n var visibleColumns = columnsController.getVisibleColumns();\r\n var columnAutoWidth = that.option(\"columnAutoWidth\");\r\n var legacyRendering = that.option(\"legacyRendering\");\r\n var needBestFit = that._needBestFit();\r\n var hasMinWidth = false;\r\n var resetBestFitMode;\r\n var isColumnWidthsCorrected = false;\r\n var resultWidths = [];\r\n var focusedElement;\r\n var selectionRange;\r\n var normalizeWidthsByExpandColumns = function() {\r\n var expandColumnWidth;\r\n (0, _iterator.each)(visibleColumns, function(index, column) {\r\n if (\"groupExpand\" === column.type) {\r\n expandColumnWidth = resultWidths[index]\r\n }\r\n });\r\n (0, _iterator.each)(visibleColumns, function(index, column) {\r\n if (\"groupExpand\" === column.type && expandColumnWidth) {\r\n resultWidths[index] = expandColumnWidth\r\n }\r\n })\r\n };\r\n !needBestFit && (0, _iterator.each)(visibleColumns, function(index, column) {\r\n if (\"auto\" === column.width || legacyRendering && column.fixed) {\r\n needBestFit = true;\r\n return false\r\n }\r\n });\r\n (0, _iterator.each)(visibleColumns, function(index, column) {\r\n if (column.minWidth) {\r\n hasMinWidth = true;\r\n return false\r\n }\r\n });\r\n that._setVisibleWidths(visibleColumns, []);\r\n if (needBestFit) {\r\n focusedElement = _dom_adapter.default.getActiveElement();\r\n selectionRange = _uiGrid_core2.default.getSelectionRange(focusedElement);\r\n that._toggleBestFitMode(true);\r\n resetBestFitMode = true\r\n }(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 Math.ceil(result)\r\n },\r\n updateSize: function($rootElement) {\r\n var that = this;\r\n var $groupElement;\r\n var width;\r\n var importantMarginClass = that.addWidgetPrefix(IMPORTANT_MARGIN_CLASS);\r\n if (void 0 === that._hasHeight && $rootElement && $rootElement.is(\":visible\") && $rootElement.width()) {\r\n $groupElement = $rootElement.children(\".\" + that.getWidgetContainerClass());\r\n if ($groupElement.length) {\r\n $groupElement.detach()\r\n }\r\n that._hasHeight = !!getContainerHeight($rootElement);\r\n width = $rootElement.width();\r\n $rootElement.addClass(importantMarginClass);\r\n that._hasWidth = $rootElement.width() === width;\r\n $rootElement.removeClass(importantMarginClass);\r\n if ($groupElement.length) {\r\n $groupElement.appendTo($rootElement)\r\n }\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"resize\", \"updateDimensions\"]\r\n },\r\n resize: function() {\r\n return !this.component._requireResize && this.updateDimensions()\r\n },\r\n updateDimensions: function(checkSize) {\r\n var that = this;\r\n that._initPostRenderHandlers();\r\n if (!that._checkSize(checkSize)) {\r\n return\r\n }\r\n var prevResult = that._resizeDeferred;\r\n var result = that._resizeDeferred = new _deferred.Deferred;\r\n (0, _deferred.when)(prevResult).always(function() {\r\n (0, _common.deferRender)(function() {\r\n if (that._dataController.isLoaded()) {\r\n that._synchronizeColumns()\r\n }\r\n that._resetGroupElementHeight();\r\n (0, _common.deferUpdate)(function() {\r\n (0, _common.deferRender)(function() {\r\n (0, _common.deferUpdate)(function() {\r\n that._updateDimensionsCore()\r\n })\r\n })\r\n })\r\n }).done(result.resolve).fail(result.reject)\r\n });\r\n return result.promise()\r\n },\r\n _resetGroupElementHeight: function() {\r\n var groupElement = this.component.$element().children().get(0);\r\n var scrollable = this._rowsView.getScrollable();\r\n if (groupElement && groupElement.style.height && (!scrollable || !scrollable.scrollTop())) {\r\n groupElement.style.height = \"\"\r\n }\r\n },\r\n _checkSize: function(checkSize) {\r\n var $rootElement = this.component.$element();\r\n if (checkSize && (this._lastWidth === $rootElement.width() && this._lastHeight === $rootElement.height() || !$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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _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 _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\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\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 _inheritsLoose(Menu, _MenuBase);\r\n\r\n function Menu() {\r\n return _MenuBase.apply(this, arguments) || this\r\n }\r\n var _proto = Menu.prototype;\r\n _proto._getDefaultOptions = function() {\r\n return (0, _extend.extend)(_MenuBase.prototype._getDefaultOptions.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 _proto._setOptionsByReference = function() {\r\n _MenuBase.prototype._setOptionsByReference.call(this);\r\n (0, _extend.extend)(this._optionsByReference, {\r\n animation: true,\r\n selectedItem: true\r\n })\r\n };\r\n _proto._itemElements = function() {\r\n var rootMenuElements = _MenuBase.prototype._itemElements.call(this);\r\n var submenuElements = this._submenuItemElements();\r\n return rootMenuElements.add(submenuElements)\r\n };\r\n _proto._submenuItemElements = 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 _proto._focusTarget = function() {\r\n return this.$element()\r\n };\r\n _proto._isMenuHorizontal = function() {\r\n return \"horizontal\" === this.option(\"orientation\")\r\n };\r\n _proto._moveFocus = 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 _MenuBase.prototype._moveFocus.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 _proto._getItemsNavigationOperation = 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 _proto._getKeyboardNavigationAction = 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 _proto._clean = function() {\r\n _MenuBase.prototype._clean.call(this);\r\n this.option(\"templatesRenderAsynchronously\") && clearTimeout(this._resizeEventTimer)\r\n };\r\n _proto._visibilityChanged = 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 _proto._isAdaptivityEnabled = function() {\r\n return this.option(\"adaptivityEnabled\") && \"horizontal\" === this.option(\"orientation\")\r\n };\r\n _proto._updateItemsWidthCache = 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 _proto._dimensionChanged = 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 _proto._init = function() {\r\n _MenuBase.prototype._init.call(this);\r\n this._submenus = []\r\n };\r\n _proto._initActions = 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 _proto._initMarkup = function() {\r\n this._visibleSubmenu = null;\r\n this.$element().addClass(DX_MENU_CLASS);\r\n _MenuBase.prototype._initMarkup.call(this);\r\n this.setAria(\"role\", \"menubar\")\r\n };\r\n _proto._render = function() {\r\n _MenuBase.prototype._render.call(this);\r\n this._initAdaptivity()\r\n };\r\n _proto._renderHamburgerButton = 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 _proto._toggleTreeView = 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 _proto._toggleHamburgerActiveState = function(state) {\r\n this._hamburger && this._hamburger.$element().toggleClass(DX_STATE_ACTIVE_CLASS, state)\r\n };\r\n _proto._toggleAdaptiveMode = 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 _proto._removeAdaptivity = 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 _proto._treeviewItemClickHandler = 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 _proto._getAdaptiveOverlayOptions = 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 _proto._getTreeViewOptions = 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 _proto._initAdaptivity = 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 _proto._getDelay = 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 _proto._keyboardHandler = function(e) {\r\n return _MenuBase.prototype._keyboardHandler.call(this, e, !!this._visibleSubmenu)\r\n };\r\n _proto._renderContainer = 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 _MenuBase.prototype._renderContainer.call(this, $wrapper)\r\n };\r\n _proto._renderSubmenuItems = 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 _proto._getKeyboardListeners = function() {\r\n return _MenuBase.prototype._getKeyboardListeners.call(this).concat(this._visibleSubmenu)\r\n };\r\n _proto._createSubmenu = 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 _proto._getSubmenuOptions = 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 _proto._getShowFirstSubmenuMode = 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 _proto._moveMainMenuFocus = 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 _proto._nestedItemOnSelectionChangedHandler = 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 _proto._clearSelectionInSubmenus = 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 _proto._clearRootSelection = 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 _proto._nestedItemOnItemClickHandler = function(e) {\r\n this._actions.onItemClick(e)\r\n };\r\n _proto._nestedItemOnItemRenderedHandler = function(e) {\r\n this._actions.onItemRendered(e)\r\n };\r\n _proto._attachSubmenuHandlers = 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 _proto._submenuOnShowingHandler = 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 _proto._submenuOnShownHandler = 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 _proto._submenuOnHidingHandler = 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 _proto._submenuOnHiddenHandler = 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 _proto._submenuMouseLeaveHandler = 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 _proto._hideSubmenuAfterTimeout = 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 _proto._getSubmenuByRootElement = 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 _proto.getSubmenuPosition = 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 _proto._renderBorderElement = function($item) {\r\n (0, _renderer.default)(\"
\").appendTo($item).addClass(DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS).hide()\r\n };\r\n _proto._itemPointerDownHandler = 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 _MenuBase.prototype._itemPointerDownHandler.call(this, e)\r\n };\r\n _proto._hoverStartHandler = 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 _proto._hoverEndHandler = 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 _MenuBase.prototype._hoverEndHandler.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 _proto._hideVisibleSubmenu = 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 _proto._showSubmenu = 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 _proto._hideSubmenu = 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 _proto._itemMouseMoveHandler = 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 _proto._clearTimeouts = function() {\r\n clearTimeout(this._hideSubmenuTimer);\r\n clearTimeout(this._showSubmenuTimer)\r\n };\r\n _proto._getSubmenuByElement = 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 _proto._updateSubmenuVisibilityOnClick = 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 _proto._optionChanged = 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 _MenuBase.prototype._optionChanged.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 _MenuBase.prototype._optionChanged.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 _MenuBase.prototype._optionChanged.call(this, args)\r\n }\r\n };\r\n _proto._changeSubmenusOption = 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 _proto.selectItem = function(itemElement) {\r\n this._hideSubmenu(this._visibleSubmenu);\r\n _MenuBase.prototype.selectItem.call(this, itemElement)\r\n };\r\n _proto.unselectItem = function(itemElement) {\r\n this._hideSubmenu(this._visibleSubmenu);\r\n _MenuBase.prototype.selectItem.call(this, itemElement)\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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/grid_core/ui.grid_core.search.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _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(\"\".concat(that.component.NAME, \"-ariaSearchInGrid\"))\r\n }\r\n }\r\n });\r\n that.resize()\r\n },\r\n name: \"searchPanel\",\r\n location: \"after\",\r\n locateInMenu: \"never\",\r\n sortIndex: 40\r\n };\r\n items.push(toolbarItem)\r\n }\r\n return items\r\n },\r\n getSearchTextEditor: function() {\r\n var that = this;\r\n var $element = that.element();\r\n var $searchPanel = $element.find(\".\" + that.addWidgetPrefix(SEARCH_PANEL_CLASS)).filter(function() {\r\n return (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 _$items;\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 = null !== (_$items = $items) && void 0 !== _$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) && !parameters.isOnForm) {\r\n if (this.option(\"templatesRenderAsynchronously\")) {\r\n if (!this._searchParams.length) {\r\n clearTimeout(this._highlightTimer);\r\n this._highlightTimer = setTimeout(function() {\r\n this._searchParams.forEach(function(params) {\r\n this._highlightSearchText.apply(this, params)\r\n }.bind(this));\r\n this._searchParams = []\r\n }.bind(this))\r\n }\r\n this._searchParams.push([$cell, isEquals, column])\r\n } else {\r\n this._highlightSearchText($cell, isEquals, column)\r\n }\r\n }\r\n this.callBase($cell, parameters)\r\n },\r\n dispose: function() {\r\n clearTimeout(this._highlightTimer);\r\n this.callBase()\r\n }\r\n }\r\n }\r\n }\r\n};\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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/toolbar/ui.toolbar.strategy.drop_down_menu.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiToolbar = _interopRequireDefault(require(\"./ui.toolbar.strategy\"));\r\nvar _uiToolbar2 = _interopRequireDefault(require(\"./ui.toolbar.menu\"));\r\nvar _drop_down_menu = _interopRequireDefault(require(\"../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 MENU_INVISIBLE_CLASS = \"dx-state-invisible\";\r\nvar DropDownMenuStrategy = _uiToolbar.default.inherit({\r\n NAME: \"dropDownMenu\",\r\n render: function() {\r\n if (!this._hasVisibleMenuItems()) {\r\n return\r\n }\r\n this._renderMenuButtonContainer();\r\n this._renderWidget()\r\n },\r\n renderMenuItems: function() {\r\n if (!this._menu) {\r\n this.render()\r\n }\r\n this.callBase();\r\n if (this._menu && !this._menu.option(\"items\").length) {\r\n this._menu.close()\r\n }\r\n },\r\n _menuWidgetClass: function() {\r\n return _drop_down_menu.default\r\n },\r\n _widgetOptions: function() {\r\n var that = this;\r\n return (0, _extend.extend)(this.callBase(), {\r\n deferRendering: true,\r\n container: that._toolbar.option(\"menuContainer\"),\r\n menuWidget: _uiToolbar2.default,\r\n onOptionChanged: function(e) {\r\n if (\"items\" === e.name) {\r\n that._updateMenuVisibility(e.value)\r\n }\r\n },\r\n popupPosition: {\r\n at: \"bottom right\",\r\n my: \"top right\"\r\n }\r\n })\r\n },\r\n _updateMenuVisibility: function(menuItems) {\r\n var items = menuItems || this._getMenuItems();\r\n var isMenuVisible = items.length && this._hasVisibleMenuItems(items);\r\n this._toggleMenuVisibility(isMenuVisible)\r\n },\r\n _toggleMenuVisibility: function(value) {\r\n if (!this._menuContainer()) {\r\n return\r\n }\r\n this._menuContainer().toggleClass(MENU_INVISIBLE_CLASS, !value)\r\n },\r\n _menuContainer: function() {\r\n return this._$menuButtonContainer\r\n }\r\n});\r\nvar _default = DropDownMenuStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.columns_controller.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _variable_wrapper = _interopRequireDefault(require(\"../../core/utils/variable_wrapper\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _config = _interopRequireDefault(require(\"../../core/config\"));\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _abstract_store = _interopRequireDefault(require(\"../../data/abstract_store\"));\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _utils = require(\"../../data/data_source/utils\");\r\nvar _filtering = _interopRequireDefault(require(\"../shared/filtering\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n if (enumerableOnly) {\r\n symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })\r\n }\r\n keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n })\r\n } else {\r\n if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n } else {\r\n ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar USER_STATE_FIELD_NAMES_15_1 = [\"filterValues\", \"filterType\", \"fixed\", \"fixedPosition\"];\r\nvar USER_STATE_FIELD_NAMES = [\"visibleIndex\", \"dataField\", \"name\", \"dataType\", \"width\", \"visible\", \"sortOrder\", \"lastSortOrder\", \"sortIndex\", \"groupIndex\", \"filterValue\", \"selectedFilterOperation\", \"added\"].concat(USER_STATE_FIELD_NAMES_15_1);\r\nvar IGNORE_COLUMN_OPTION_NAMES = {\r\n visibleWidth: true,\r\n bestFitWidth: true,\r\n bufferedFilterValue: true\r\n};\r\nvar COMMAND_EXPAND_CLASS = \"dx-command-expand\";\r\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\r\nvar GROUP_COMMAND_COLUMN_NAME = \"groupExpand\";\r\nvar regExp = /columns\\[(\\d+)\\]\\.?/gi;\r\nvar globalColumnId = 1;\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n commonColumnSettings: {\r\n allowFiltering: true,\r\n allowHiding: true,\r\n allowSorting: true,\r\n allowEditing: true,\r\n encodeHtml: true,\r\n trueText: _message.default.format(\"dxDataGrid-trueText\"),\r\n falseText: _message.default.format(\"dxDataGrid-falseText\")\r\n },\r\n allowColumnReordering: false,\r\n allowColumnResizing: false,\r\n columnResizingMode: \"nextColumn\",\r\n columnMinWidth: void 0,\r\n columnWidth: void 0,\r\n adaptColumnWidthByRatio: true,\r\n columns: void 0,\r\n regenerateColumnsByVisibleItems: false,\r\n customizeColumns: null,\r\n dateSerializationFormat: void 0\r\n }\r\n },\r\n controllers: {\r\n columns: _uiGrid_core.default.Controller.inherit(function() {\r\n var DEFAULT_COLUMN_OPTIONS = {\r\n visible: true,\r\n showInColumnChooser: true\r\n };\r\n var DATATYPE_OPERATIONS = {\r\n number: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"between\"],\r\n string: [\"contains\", \"notcontains\", \"startswith\", \"endswith\", \"=\", \"<>\"],\r\n date: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"between\"],\r\n datetime: [\"=\", \"<>\", \"<\", \">\", \"<=\", \">=\", \"between\"]\r\n };\r\n var COLUMN_INDEX_OPTIONS = {\r\n visibleIndex: true,\r\n groupIndex: true,\r\n grouped: true,\r\n sortIndex: true,\r\n sortOrder: true\r\n };\r\n var GROUP_LOCATION = \"group\";\r\n var COLUMN_CHOOSER_LOCATION = \"columnChooser\";\r\n var setFilterOperationsAsDefaultValues = function(column) {\r\n column.filterOperations = column.defaultFilterOperations\r\n };\r\n var createColumn = function(that, columnOptions, userStateColumnOptions, bandColumn) {\r\n var commonColumnOptions = {};\r\n if (columnOptions) {\r\n if ((0, _type.isString)(columnOptions)) {\r\n columnOptions = {\r\n dataField: columnOptions\r\n }\r\n }\r\n that.setName(columnOptions);\r\n var result = {};\r\n if (columnOptions.command) {\r\n result = (0, _object.deepExtendArraySafe)(commonColumnOptions, columnOptions)\r\n } else {\r\n commonColumnOptions = that.getCommonSettings(columnOptions);\r\n if (userStateColumnOptions && userStateColumnOptions.name && userStateColumnOptions.dataField) {\r\n columnOptions = (0, _extend.extend)({}, columnOptions, {\r\n dataField: userStateColumnOptions.dataField\r\n })\r\n }\r\n var calculatedColumnOptions = that._createCalculatedColumnOptions(columnOptions, bandColumn);\r\n if (!columnOptions.type) {\r\n result = {\r\n headerId: \"dx-col-\".concat(globalColumnId++)\r\n }\r\n }\r\n result = (0, _object.deepExtendArraySafe)(result, DEFAULT_COLUMN_OPTIONS);\r\n (0, _object.deepExtendArraySafe)(result, commonColumnOptions);\r\n (0, _object.deepExtendArraySafe)(result, calculatedColumnOptions);\r\n (0, _object.deepExtendArraySafe)(result, columnOptions);\r\n (0, _object.deepExtendArraySafe)(result, {\r\n selector: null\r\n })\r\n }\r\n if (columnOptions.filterOperations === columnOptions.defaultFilterOperations) {\r\n setFilterOperationsAsDefaultValues(result)\r\n }\r\n return result\r\n }\r\n };\r\n var createColumnsFromOptions = function createColumnsFromOptions(that, columnsOptions, bandColumn) {\r\n var result = [];\r\n if (columnsOptions) {\r\n (0, _iterator.each)(columnsOptions, function(index, columnOptions) {\r\n var userStateColumnOptions = that._columnsUserState && checkUserStateColumn(columnOptions, that._columnsUserState[index]) && that._columnsUserState[index];\r\n var column = createColumn(that, columnOptions, userStateColumnOptions, bandColumn);\r\n if (column) {\r\n if (bandColumn) {\r\n column.ownerBand = bandColumn\r\n }\r\n result.push(column);\r\n if (column.columns) {\r\n result = result.concat(createColumnsFromOptions(that, column.columns, column));\r\n delete column.columns;\r\n column.hasColumns = true\r\n }\r\n }\r\n })\r\n }\r\n return result\r\n };\r\n var getParentBandColumns = function(columnIndex, columnParentByIndex) {\r\n var result = [];\r\n var parent = columnParentByIndex[columnIndex];\r\n while (parent) {\r\n result.unshift(parent);\r\n columnIndex = parent.index;\r\n parent = columnParentByIndex[columnIndex]\r\n }\r\n return result\r\n };\r\n var _getChildrenByBandColumn = function(columnIndex, columnChildrenByIndex, recursive) {\r\n var result = [];\r\n var children = columnChildrenByIndex[columnIndex];\r\n if (children) {\r\n for (var i = 0; i < children.length; i++) {\r\n var column = children[i];\r\n if (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped) {\r\n result.push(column);\r\n if (recursive && column.isBand) {\r\n result = result.concat(_getChildrenByBandColumn(column.index, columnChildrenByIndex, recursive))\r\n }\r\n }\r\n }\r\n }\r\n return result\r\n };\r\n var getColumnByIndexes = function(that, columnIndexes) {\r\n var result;\r\n var columns;\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var callbackFilter = function(column) {\r\n var ownerBand = result ? result.index : void 0;\r\n return column.ownerBand === ownerBand\r\n };\r\n if (bandColumnsCache.isPlain) {\r\n result = that._columns[columnIndexes[0]]\r\n } else {\r\n columns = that._columns.filter(callbackFilter);\r\n for (var i = 0; i < columnIndexes.length; i++) {\r\n result = columns[columnIndexes[i]];\r\n if (result) {\r\n columns = that._columns.filter(callbackFilter)\r\n }\r\n }\r\n }\r\n return result\r\n };\r\n var getColumnFullPath = function(that, column) {\r\n var result = [];\r\n var columns;\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var callbackFilter = function(item) {\r\n return item.ownerBand === column.ownerBand\r\n };\r\n if (bandColumnsCache.isPlain) {\r\n var columnIndex = that._columns.indexOf(column);\r\n if (columnIndex >= 0) {\r\n result = [\"columns[\".concat(columnIndex, \"]\")]\r\n }\r\n } else {\r\n columns = that._columns.filter(callbackFilter);\r\n while (columns.length && columns.indexOf(column) !== -1) {\r\n result.unshift(\"columns[\".concat(columns.indexOf(column), \"]\"));\r\n column = bandColumnsCache.columnParentByIndex[column.index];\r\n columns = column ? that._columns.filter(callbackFilter) : []\r\n }\r\n }\r\n return result.join(\".\")\r\n };\r\n var calculateColspan = function calculateColspan(that, columnID) {\r\n var colspan = 0;\r\n var columns = that.getChildrenByBandColumn(columnID, true);\r\n (0, _iterator.each)(columns, function(_, column) {\r\n if (column.isBand) {\r\n column.colspan = column.colspan || calculateColspan(that, column.index);\r\n colspan += column.colspan || 1\r\n } else {\r\n colspan += 1\r\n }\r\n });\r\n return colspan\r\n };\r\n var processBandColumns = function(that, columns, bandColumnsCache) {\r\n var rowspan;\r\n for (var i = 0; i < columns.length; i++) {\r\n var column = columns[i];\r\n if (column.visible || column.command) {\r\n if (column.isBand) {\r\n column.colspan = column.colspan || calculateColspan(that, column.index)\r\n }\r\n if (!column.isBand || !column.colspan) {\r\n rowspan = that.getRowCount();\r\n if (!column.command && (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped)) {\r\n rowspan -= getParentBandColumns(column.index, bandColumnsCache.columnParentByIndex).length\r\n }\r\n if (rowspan > 1) {\r\n column.rowspan = rowspan\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var getValueDataType = function(value) {\r\n var dataType = (0, _type.type)(value);\r\n if (\"string\" !== dataType && \"boolean\" !== dataType && \"number\" !== dataType && \"date\" !== dataType && \"object\" !== dataType) {\r\n dataType = void 0\r\n }\r\n return dataType\r\n };\r\n var getSerializationFormat = function(dataType, value) {\r\n switch (dataType) {\r\n case \"date\":\r\n case \"datetime\":\r\n return _date_serialization.default.getDateSerializationFormat(value);\r\n case \"number\":\r\n if ((0, _type.isString)(value)) {\r\n return \"string\"\r\n }\r\n if ((0, _type.isNumeric)(value)) {\r\n return null\r\n }\r\n }\r\n };\r\n var updateSerializers = function(options, dataType) {\r\n if (!options.deserializeValue) {\r\n if (_uiGrid_core2.default.isDateType(dataType)) {\r\n options.deserializeValue = function(value) {\r\n return _date_serialization.default.deserializeDate(value)\r\n };\r\n options.serializeValue = function(value) {\r\n return (0, _type.isString)(value) ? value : _date_serialization.default.serializeDate(value, this.serializationFormat)\r\n }\r\n }\r\n if (\"number\" === dataType) {\r\n options.deserializeValue = function(value) {\r\n var parsedValue = parseFloat(value);\r\n return isNaN(parsedValue) ? value : parsedValue\r\n };\r\n options.serializeValue = function(value, target) {\r\n if (\"filter\" === target) {\r\n return value\r\n }\r\n return (0, _type.isDefined)(value) && \"string\" === this.serializationFormat ? value.toString() : value\r\n }\r\n }\r\n }\r\n };\r\n var getAlignmentByDataType = function(dataType, isRTL) {\r\n switch (dataType) {\r\n case \"number\":\r\n return \"right\";\r\n case \"boolean\":\r\n return \"center\";\r\n default:\r\n return (0, _position.getDefaultAlignment)(isRTL)\r\n }\r\n };\r\n var customizeTextForBooleanDataType = function(e) {\r\n if (true === e.value) {\r\n return this.trueText || \"true\"\r\n } else {\r\n if (false === e.value) {\r\n return this.falseText || \"false\"\r\n } else {\r\n return e.valueText || \"\"\r\n }\r\n }\r\n };\r\n var getCustomizeTextByDataType = function(dataType) {\r\n if (\"boolean\" === dataType) {\r\n return customizeTextForBooleanDataType\r\n }\r\n };\r\n var createColumnsFromDataSource = function(that, dataSource) {\r\n var firstItems = that._getFirstItems(dataSource);\r\n var fieldName;\r\n var processedFields = {};\r\n var result = [];\r\n for (var i = 0; i < firstItems.length; i++) {\r\n if (firstItems[i]) {\r\n for (fieldName in firstItems[i]) {\r\n if (!(0, _type.isFunction)(firstItems[i][fieldName]) || _variable_wrapper.default.isWrapped(firstItems[i][fieldName])) {\r\n processedFields[fieldName] = true\r\n }\r\n }\r\n }\r\n }\r\n for (fieldName in processedFields) {\r\n if (0 !== fieldName.indexOf(\"__\")) {\r\n var column = createColumn(that, fieldName);\r\n result.push(column)\r\n }\r\n }\r\n return result\r\n };\r\n var updateColumnIndexes = function(that) {\r\n (0, _iterator.each)(that._columns, function(index, column) {\r\n column.index = index\r\n });\r\n (0, _iterator.each)(that._columns, function(index, column) {\r\n if ((0, _type.isObject)(column.ownerBand)) {\r\n column.ownerBand = column.ownerBand.index\r\n }\r\n });\r\n (0, _iterator.each)(that._commandColumns, function(index, column) {\r\n column.index = -(index + 1)\r\n })\r\n };\r\n var updateColumnGroupIndexes = function(that, currentColumn) {\r\n (0, _array.normalizeIndexes)(that._columns, \"groupIndex\", currentColumn, function(column) {\r\n var grouped = column.grouped;\r\n delete column.grouped;\r\n return grouped\r\n })\r\n };\r\n var updateColumnSortIndexes = function(that, currentColumn) {\r\n (0, _iterator.each)(that._columns, function(index, column) {\r\n if ((0, _type.isDefined)(column.sortIndex) && !isSortOrderValid(column.sortOrder)) {\r\n delete column.sortIndex\r\n }\r\n });\r\n (0, _array.normalizeIndexes)(that._columns, \"sortIndex\", currentColumn, function(column) {\r\n return !(0, _type.isDefined)(column.groupIndex) && isSortOrderValid(column.sortOrder)\r\n })\r\n };\r\n var updateColumnVisibleIndexes = function(that, currentColumn) {\r\n var key;\r\n var column;\r\n var bandColumns = {};\r\n var result = [];\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var columns = that._columns.filter(function(column) {\r\n return !column.command\r\n });\r\n for (var i = 0; i < columns.length; i++) {\r\n column = columns[i];\r\n var parentBandColumns = getParentBandColumns(i, bandColumnsCache.columnParentByIndex);\r\n if (parentBandColumns.length) {\r\n var bandColumnIndex = parentBandColumns[parentBandColumns.length - 1].index;\r\n bandColumns[bandColumnIndex] = bandColumns[bandColumnIndex] || [];\r\n bandColumns[bandColumnIndex].push(column)\r\n } else {\r\n result.push(column)\r\n }\r\n }\r\n for (key in bandColumns) {\r\n (0, _array.normalizeIndexes)(bandColumns[key], \"visibleIndex\", currentColumn)\r\n }(0, _array.normalizeIndexes)(result, \"visibleIndex\", currentColumn)\r\n };\r\n var getColumnIndexByVisibleIndex = function(that, visibleIndex, location) {\r\n var rowIndex = (0, _type.isObject)(visibleIndex) ? visibleIndex.rowIndex : null;\r\n var columns = location === GROUP_LOCATION ? that.getGroupColumns() : location === COLUMN_CHOOSER_LOCATION ? that.getChooserColumns() : that.getVisibleColumns(rowIndex);\r\n var column;\r\n visibleIndex = (0, _type.isObject)(visibleIndex) ? visibleIndex.columnIndex : visibleIndex;\r\n column = columns[visibleIndex];\r\n if (column && column.type === GROUP_COMMAND_COLUMN_NAME) {\r\n column = that._columns.filter(function(col) {\r\n return column.type === col.type\r\n })[0] || column\r\n }\r\n return column && (0, _type.isDefined)(column.index) ? column.index : -1\r\n };\r\n var moveColumnToGroup = function(that, column, groupIndex) {\r\n var groupColumns = that.getGroupColumns();\r\n var i;\r\n if (groupIndex >= 0) {\r\n for (i = 0; i < groupColumns.length; i++) {\r\n if (groupColumns[i].groupIndex >= groupIndex) {\r\n groupColumns[i].groupIndex++\r\n }\r\n }\r\n } else {\r\n groupIndex = 0;\r\n for (i = 0; i < groupColumns.length; i++) {\r\n groupIndex = Math.max(groupIndex, groupColumns[i].groupIndex + 1)\r\n }\r\n }\r\n return groupIndex\r\n };\r\n\r\n function checkUserStateColumn(column, userStateColumn) {\r\n return column && userStateColumn && (userStateColumn.name === column.name || !column.name) && (userStateColumn.dataField === column.dataField || column.name)\r\n }\r\n var applyUserState = function(that) {\r\n var columnsUserState = that._columnsUserState;\r\n var ignoreColumnOptionNames = that._ignoreColumnOptionNames || [];\r\n var columns = that._columns;\r\n var columnCountById = {};\r\n var resultColumns = [];\r\n var allColumnsHaveState = true;\r\n var userStateColumnIndexes = [];\r\n var column;\r\n var userStateColumnIndex;\r\n var i;\r\n\r\n function applyFieldsState(column, userStateColumn) {\r\n if (!userStateColumn) {\r\n return\r\n }\r\n for (var index = 0; index < USER_STATE_FIELD_NAMES.length; index++) {\r\n var fieldName = USER_STATE_FIELD_NAMES[index];\r\n if ((0, _array.inArray)(fieldName, ignoreColumnOptionNames) >= 0) {\r\n continue\r\n }\r\n if (\"dataType\" === fieldName) {\r\n column[fieldName] = column[fieldName] || userStateColumn[fieldName]\r\n } else {\r\n if ((0, _array.inArray)(fieldName, USER_STATE_FIELD_NAMES_15_1) >= 0) {\r\n if (fieldName in userStateColumn) {\r\n column[fieldName] = userStateColumn[fieldName]\r\n }\r\n } else {\r\n if (\"selectedFilterOperation\" === fieldName && userStateColumn[fieldName]) {\r\n column.defaultSelectedFilterOperation = column[fieldName] || null\r\n }\r\n column[fieldName] = userStateColumn[fieldName]\r\n }\r\n }\r\n }\r\n }\r\n\r\n function findUserStateColumn(columnsUserState, column) {\r\n var id = column.name || column.dataField;\r\n var count = columnCountById[id] || 0;\r\n for (var j = 0; j < columnsUserState.length; j++) {\r\n if (checkUserStateColumn(column, columnsUserState[j])) {\r\n if (count) {\r\n count--\r\n } else {\r\n columnCountById[id] = columnCountById[id] || 0;\r\n columnCountById[id]++;\r\n return j\r\n }\r\n }\r\n }\r\n return -1\r\n }\r\n if (columnsUserState) {\r\n for (i = 0; i < columns.length; i++) {\r\n userStateColumnIndex = findUserStateColumn(columnsUserState, columns[i]);\r\n allColumnsHaveState = allColumnsHaveState && userStateColumnIndex >= 0;\r\n userStateColumnIndexes.push(userStateColumnIndex)\r\n }\r\n for (i = 0; i < columns.length; i++) {\r\n column = columns[i];\r\n userStateColumnIndex = userStateColumnIndexes[i];\r\n if (that._hasUserState || allColumnsHaveState) {\r\n applyFieldsState(column, columnsUserState[userStateColumnIndex])\r\n }\r\n if (userStateColumnIndex >= 0 && (0, _type.isDefined)(columnsUserState[userStateColumnIndex].initialIndex)) {\r\n resultColumns[userStateColumnIndex] = column\r\n } else {\r\n resultColumns.push(column)\r\n }\r\n }\r\n var hasAddedBands = false;\r\n for (i = 0; i < columnsUserState.length; i++) {\r\n var columnUserState = columnsUserState[i];\r\n if (columnUserState.added && findUserStateColumn(columns, columnUserState) < 0) {\r\n column = createColumn(that, columnUserState.added);\r\n applyFieldsState(column, columnUserState);\r\n resultColumns.push(column);\r\n if (columnUserState.added.columns) {\r\n hasAddedBands = true\r\n }\r\n }\r\n }\r\n if (hasAddedBands) {\r\n updateColumnIndexes(that);\r\n resultColumns = createColumnsFromOptions(that, resultColumns)\r\n }\r\n assignColumns(that, resultColumns)\r\n }\r\n };\r\n var updateIndexes = function(that, column) {\r\n updateColumnIndexes(that);\r\n updateColumnGroupIndexes(that, column);\r\n updateColumnSortIndexes(that, column);\r\n resetBandColumnsCache(that);\r\n updateColumnVisibleIndexes(that, column)\r\n };\r\n var resetColumnsCache = function(that) {\r\n that.resetColumnsCache()\r\n };\r\n\r\n function assignColumns(that, columns) {\r\n that._columns = columns;\r\n resetColumnsCache(that);\r\n that.updateColumnDataTypes()\r\n }\r\n var updateColumnChanges = function(that, changeType, optionName, columnIndex) {\r\n var columnChanges = that._columnChanges || {\r\n optionNames: {\r\n length: 0\r\n },\r\n changeTypes: {\r\n length: 0\r\n },\r\n columnIndex: columnIndex\r\n };\r\n optionName = optionName || \"all\";\r\n optionName = optionName.split(\".\")[0];\r\n var changeTypes = columnChanges.changeTypes;\r\n if (changeType && !changeTypes[changeType]) {\r\n changeTypes[changeType] = true;\r\n changeTypes.length++\r\n }\r\n var optionNames = columnChanges.optionNames;\r\n if (optionName && !optionNames[optionName]) {\r\n optionNames[optionName] = true;\r\n optionNames.length++\r\n }\r\n if (void 0 === columnIndex || columnIndex !== columnChanges.columnIndex) {\r\n delete columnChanges.columnIndex\r\n }\r\n that._columnChanges = columnChanges;\r\n resetColumnsCache(that)\r\n };\r\n var fireColumnsChanged = function(that) {\r\n var onColumnsChanging = that.option(\"onColumnsChanging\");\r\n var columnChanges = that._columnChanges;\r\n var reinitOptionNames = [\"dataField\", \"lookup\", \"dataType\", \"columns\"];\r\n var needReinit = function(options) {\r\n return options && reinitOptionNames.some(function(name) {\r\n return options[name]\r\n })\r\n };\r\n if (that.isInitialized() && !that._updateLockCount && columnChanges) {\r\n if (onColumnsChanging) {\r\n that._updateLockCount++;\r\n onColumnsChanging((0, _extend.extend)({\r\n component: that.component\r\n }, columnChanges));\r\n that._updateLockCount--\r\n }\r\n that._columnChanges = void 0;\r\n if (needReinit(columnChanges.optionNames)) {\r\n that.reinit()\r\n } else {\r\n that.columnsChanged.fire(columnChanges)\r\n }\r\n }\r\n };\r\n var updateSortOrderWhenGrouping = function(that, column, groupIndex, prevGroupIndex) {\r\n var columnWasGrouped = prevGroupIndex >= 0;\r\n if (groupIndex >= 0) {\r\n if (!columnWasGrouped) {\r\n column.lastSortOrder = column.sortOrder\r\n }\r\n } else {\r\n var sortMode = that.option(\"sorting.mode\");\r\n var sortOrder = column.lastSortOrder;\r\n if (\"single\" === sortMode) {\r\n var sortedByAnotherColumn = that._columns.some(function(col) {\r\n return col !== column && (0, _type.isDefined)(col.sortIndex)\r\n });\r\n if (sortedByAnotherColumn) {\r\n sortOrder = void 0\r\n }\r\n }\r\n column.sortOrder = sortOrder\r\n }\r\n };\r\n var fireOptionChanged = function(that, options) {\r\n var value = options.value;\r\n var optionName = options.optionName;\r\n var prevValue = options.prevValue;\r\n var fullOptionName = options.fullOptionName;\r\n var fullOptionPath = \"\".concat(fullOptionName, \".\").concat(optionName);\r\n if (!IGNORE_COLUMN_OPTION_NAMES[optionName] && that._skipProcessingColumnsChange !== fullOptionPath) {\r\n that._skipProcessingColumnsChange = fullOptionPath;\r\n that.component._notifyOptionChanged(fullOptionPath, value, prevValue);\r\n that._skipProcessingColumnsChange = false\r\n }\r\n };\r\n var columnOptionCore = function(that, column, optionName, value, notFireEvent) {\r\n var optionGetter = (0, _data.compileGetter)(optionName);\r\n var columnIndex = column.index;\r\n var columns;\r\n var changeType;\r\n var initialColumn;\r\n if (3 === arguments.length) {\r\n return optionGetter(column, {\r\n functionsAsIs: true\r\n })\r\n }\r\n var prevValue = optionGetter(column, {\r\n functionsAsIs: true\r\n });\r\n if (prevValue !== value) {\r\n if (\"groupIndex\" === optionName || \"calculateGroupValue\" === optionName) {\r\n changeType = \"grouping\";\r\n updateSortOrderWhenGrouping(that, column, value, prevValue)\r\n } else {\r\n if (\"sortIndex\" === optionName || \"sortOrder\" === optionName || \"calculateSortValue\" === optionName) {\r\n changeType = \"sorting\"\r\n } else {\r\n changeType = \"columns\"\r\n }\r\n }\r\n var optionSetter = (0, _data.compileSetter)(optionName);\r\n optionSetter(column, value, {\r\n functionsAsIs: true\r\n });\r\n var fullOptionName = getColumnFullPath(that, column);\r\n if (COLUMN_INDEX_OPTIONS[optionName]) {\r\n updateIndexes(that, column);\r\n value = optionGetter(column)\r\n }\r\n if (\"name\" === optionName || \"allowEditing\" === optionName) {\r\n that._checkColumns()\r\n }\r\n fullOptionName && fireOptionChanged(that, {\r\n fullOptionName: fullOptionName,\r\n optionName: optionName,\r\n value: value,\r\n prevValue: prevValue\r\n });\r\n if (!(0, _type.isDefined)(prevValue) && !(0, _type.isDefined)(value) && 0 !== optionName.indexOf(\"buffer\")) {\r\n notFireEvent = true\r\n }\r\n if (!notFireEvent) {\r\n if ((0, _array.inArray)(optionName, USER_STATE_FIELD_NAMES) < 0 && \"visibleWidth\" !== optionName) {\r\n columns = that.option(\"columns\");\r\n initialColumn = that.getColumnByPath(fullOptionName, columns);\r\n if ((0, _type.isString)(initialColumn)) {\r\n initialColumn = columns[columnIndex] = {\r\n dataField: initialColumn\r\n }\r\n }\r\n if (initialColumn && checkUserStateColumn(initialColumn, column)) {\r\n optionSetter(initialColumn, value, {\r\n functionsAsIs: true\r\n })\r\n }\r\n }\r\n updateColumnChanges(that, changeType, optionName, columnIndex)\r\n } else {\r\n resetColumnsCache(that)\r\n }\r\n }\r\n };\r\n\r\n function isSortOrderValid(sortOrder) {\r\n return \"asc\" === sortOrder || \"desc\" === sortOrder\r\n }\r\n var addExpandColumn = function(that) {\r\n var options = that._getExpandColumnOptions();\r\n that.addCommandColumn(options)\r\n };\r\n var defaultSetCellValue = function(data, value) {\r\n var path = this.dataField.split(\".\");\r\n var dotCount = path.length - 1;\r\n if (this.serializeValue) {\r\n value = this.serializeValue(value)\r\n }\r\n for (var i = 0; i < dotCount; i++) {\r\n var name = path[i];\r\n data = data[name] = data[name] || {}\r\n }\r\n data[path[dotCount]] = value\r\n };\r\n var getDataColumns = function getDataColumns(columns, rowIndex, bandColumnID) {\r\n var result = [];\r\n rowIndex = rowIndex || 0;\r\n columns[rowIndex] && (0, _iterator.each)(columns[rowIndex], function(_, column) {\r\n if (column.ownerBand === bandColumnID || column.type === GROUP_COMMAND_COLUMN_NAME) {\r\n if (!column.isBand || !column.colspan) {\r\n if (!column.command || rowIndex < 1) {\r\n result.push(column)\r\n }\r\n } else {\r\n result.push.apply(result, getDataColumns(columns, rowIndex + 1, column.index))\r\n }\r\n }\r\n });\r\n return result\r\n };\r\n var _getRowCount = function(that) {\r\n var rowCount = 1;\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var columnParentByIndex = bandColumnsCache.columnParentByIndex;\r\n that._columns.forEach(function(column) {\r\n var parents = getParentBandColumns(column.index, columnParentByIndex);\r\n var invisibleParents = parents.filter(function(column) {\r\n return !column.visible\r\n });\r\n if (column.visible && !invisibleParents.length) {\r\n rowCount = Math.max(rowCount, parents.length + 1)\r\n }\r\n });\r\n return rowCount\r\n };\r\n var isCustomCommandColumn = function(that, commandColumn) {\r\n return !!that._columns.filter(function(column) {\r\n return column.type === commandColumn.type\r\n }).length\r\n };\r\n var getFixedPosition = function(that, column) {\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n if (column.command && !isCustomCommandColumn(that, column) || !column.fixedPosition) {\r\n return rtlEnabled ? \"right\" : \"left\"\r\n }\r\n return column.fixedPosition\r\n };\r\n var processExpandColumns = function(columns, expandColumns, type, columnIndex) {\r\n var customColumnIndex;\r\n var rowCount = this.getRowCount();\r\n var rowspan = columns[columnIndex] && columns[columnIndex].rowspan;\r\n var expandColumnsByType = expandColumns.filter(function(column) {\r\n return column.type === type\r\n });\r\n columns.forEach(function(column, index) {\r\n if (column.type === type) {\r\n customColumnIndex = index;\r\n rowspan = columns[index + 1] ? columns[index + 1].rowspan : rowCount\r\n }\r\n });\r\n if (rowspan > 1) {\r\n expandColumnsByType = (0, _iterator.map)(expandColumnsByType, function(expandColumn) {\r\n return (0, _extend.extend)({}, expandColumn, {\r\n rowspan: rowspan\r\n })\r\n })\r\n }\r\n expandColumnsByType.unshift.apply(expandColumnsByType, (0, _type.isDefined)(customColumnIndex) ? [customColumnIndex, 1] : [columnIndex, 0]);\r\n columns.splice.apply(columns, expandColumnsByType);\r\n return rowspan || 1\r\n };\r\n var digitsCount = function(number) {\r\n var i;\r\n for (i = 0; number > 1; i++) {\r\n number /= 10\r\n }\r\n return i\r\n };\r\n var numberToString = function(number, digitsCount) {\r\n var str = number ? number.toString() : \"0\";\r\n while (str.length < digitsCount) {\r\n str = \"0\" + str\r\n }\r\n return str\r\n };\r\n var mergeColumns = function(that, columns, commandColumns, needToExtend) {\r\n var column;\r\n var commandColumnIndex;\r\n var result = columns.slice().map(function(column) {\r\n return (0, _extend.extend)({}, column)\r\n });\r\n var isColumnFixing = that._isColumnFixing();\r\n var defaultCommandColumns = commandColumns.slice().map(function(column) {\r\n return (0, _extend.extend)({\r\n fixed: isColumnFixing\r\n }, column)\r\n });\r\n var getCommandColumnIndex = function(column) {\r\n return commandColumns.reduce(function(result, commandColumn, index) {\r\n var columnType = needToExtend && column.type === GROUP_COMMAND_COLUMN_NAME ? \"expand\" : column.type;\r\n return commandColumn.type === columnType || commandColumn.command === column.command ? index : result\r\n }, -1)\r\n };\r\n var callbackFilter = function(commandColumn) {\r\n return commandColumn.command !== commandColumns[commandColumnIndex].command\r\n };\r\n for (var i = 0; i < columns.length; i++) {\r\n column = columns[i];\r\n commandColumnIndex = column && (column.type || column.command) ? getCommandColumnIndex(column) : -1;\r\n if (commandColumnIndex >= 0) {\r\n if (needToExtend) {\r\n result[i] = (0, _extend.extend)({\r\n fixed: isColumnFixing\r\n }, commandColumns[commandColumnIndex], column);\r\n if (column.type !== GROUP_COMMAND_COLUMN_NAME) {\r\n defaultCommandColumns = defaultCommandColumns.filter(callbackFilter)\r\n }\r\n } else {\r\n var columnOptions = {\r\n visibleIndex: column.visibleIndex,\r\n index: column.index,\r\n headerId: column.headerId,\r\n allowFixing: 0 === column.groupIndex,\r\n allowReordering: 0 === column.groupIndex,\r\n groupIndex: column.groupIndex\r\n };\r\n result[i] = (0, _extend.extend)({}, column, commandColumns[commandColumnIndex], column.type === GROUP_COMMAND_COLUMN_NAME && columnOptions)\r\n }\r\n }\r\n }\r\n if (columns.length && needToExtend && defaultCommandColumns.length) {\r\n result = result.concat(defaultCommandColumns)\r\n }\r\n return result\r\n };\r\n var isColumnFixed = function(that, column) {\r\n return (0, _type.isDefined)(column.fixed) || !column.type ? column.fixed : that._isColumnFixing()\r\n };\r\n var convertOwnerBandToColumnReference = function(columns) {\r\n columns.forEach(function(column) {\r\n if ((0, _type.isDefined)(column.ownerBand)) {\r\n column.ownerBand = columns[column.ownerBand]\r\n }\r\n })\r\n };\r\n var resetBandColumnsCache = function(that) {\r\n that._bandColumnsCache = void 0\r\n };\r\n var findColumn = function(columns, identifier) {\r\n var identifierOptionName = (0, _type.isString)(identifier) && identifier.substr(0, identifier.indexOf(\":\"));\r\n var column;\r\n if (void 0 === identifier) {\r\n return\r\n }\r\n if (identifierOptionName) {\r\n identifier = identifier.substr(identifierOptionName.length + 1)\r\n }\r\n if (identifierOptionName) {\r\n column = columns.filter(function(column) {\r\n return \"\" + column[identifierOptionName] === identifier\r\n })[0]\r\n } else {\r\n [\"index\", \"name\", \"dataField\", \"caption\"].some(function(optionName) {\r\n column = columns.filter(function(column) {\r\n return column[optionName] === identifier\r\n })[0];\r\n return !!column\r\n })\r\n }\r\n return column\r\n };\r\n return {\r\n _getExpandColumnOptions: function() {\r\n return {\r\n type: \"expand\",\r\n command: \"expand\",\r\n width: \"auto\",\r\n cssClass: COMMAND_EXPAND_CLASS,\r\n allowEditing: false,\r\n allowGrouping: false,\r\n allowSorting: false,\r\n allowResizing: false,\r\n allowReordering: false,\r\n allowHiding: false\r\n }\r\n },\r\n _getFirstItems: function(dataSource) {\r\n var groupsCount;\r\n var items = [];\r\n var getFirstItemsCore = function getFirstItemsCore(items, groupsCount) {\r\n if (!items || !groupsCount) {\r\n return items\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n var childItems = getFirstItemsCore(items[i].items || items[i].collapsedItems, groupsCount - 1);\r\n if (childItems && childItems.length) {\r\n return childItems\r\n }\r\n }\r\n };\r\n if (dataSource && dataSource.items().length > 0) {\r\n groupsCount = _uiGrid_core2.default.normalizeSortingInfo(dataSource.group()).length;\r\n items = getFirstItemsCore(dataSource.items(), groupsCount) || []\r\n }\r\n return items\r\n },\r\n _endUpdateCore: function() {\r\n !this._skipProcessingColumnsChange && fireColumnsChanged(this)\r\n },\r\n init: function() {\r\n var that = this;\r\n var columns = that.option(\"columns\");\r\n that._commandColumns = that._commandColumns || [];\r\n that._columns = that._columns || [];\r\n that._isColumnsFromOptions = !!columns;\r\n if (that._isColumnsFromOptions) {\r\n assignColumns(that, columns ? createColumnsFromOptions(that, columns) : []);\r\n applyUserState(that)\r\n } else {\r\n assignColumns(that, that._columnsUserState ? createColumnsFromOptions(that, that._columnsUserState) : that._columns)\r\n }\r\n addExpandColumn(that);\r\n if (that._dataSourceApplied) {\r\n that.applyDataSource(that._dataSource, true)\r\n } else {\r\n updateIndexes(that)\r\n }\r\n that._checkColumns()\r\n },\r\n callbackNames: function() {\r\n return [\"columnsChanged\"]\r\n },\r\n getColumnByPath: function(path, columns) {\r\n var that = this;\r\n var column;\r\n var columnIndexes = [];\r\n path.replace(regExp, function(_, columnIndex) {\r\n columnIndexes.push(parseInt(columnIndex));\r\n return \"\"\r\n });\r\n if (columnIndexes.length) {\r\n if (columns) {\r\n column = columnIndexes.reduce(function(column, index) {\r\n return column && column.columns && column.columns[index]\r\n }, {\r\n columns: columns\r\n })\r\n } else {\r\n column = getColumnByIndexes(that, columnIndexes)\r\n }\r\n }\r\n return column\r\n },\r\n optionChanged: function(args) {\r\n var needUpdateRequireResize;\r\n switch (args.name) {\r\n case \"adaptColumnWidthByRatio\":\r\n args.handled = true;\r\n break;\r\n case \"dataSource\":\r\n if (args.value !== args.previousValue && !this.option(\"columns\") && (!Array.isArray(args.value) || !Array.isArray(args.previousValue))) {\r\n this._columns = []\r\n }\r\n break;\r\n case \"columns\":\r\n needUpdateRequireResize = this._skipProcessingColumnsChange;\r\n args.handled = true;\r\n if (!this._skipProcessingColumnsChange) {\r\n if (args.name === args.fullName) {\r\n this._columnsUserState = null;\r\n this._ignoreColumnOptionNames = null;\r\n this.init()\r\n } else {\r\n this._columnOptionChanged(args);\r\n needUpdateRequireResize = true\r\n }\r\n }\r\n if (needUpdateRequireResize) {\r\n this._updateRequireResize(args)\r\n }\r\n break;\r\n case \"commonColumnSettings\":\r\n case \"columnAutoWidth\":\r\n case \"allowColumnResizing\":\r\n case \"allowColumnReordering\":\r\n case \"columnFixing\":\r\n case \"grouping\":\r\n case \"groupPanel\":\r\n case \"regenerateColumnsByVisibleItems\":\r\n case \"customizeColumns\":\r\n case \"editing\":\r\n case \"columnHidingEnabled\":\r\n case \"dateSerializationFormat\":\r\n case \"columnResizingMode\":\r\n case \"columnMinWidth\":\r\n case \"columnWidth\":\r\n var _args$fullName, _args$fullName2, _args$fullName3, _args$fullName4, _args$fullName5;\r\n args.handled = true;\r\n var ignoreColumnOptionNames = \"columnWidth\" === args.fullName && [\"width\"];\r\n var isEditingPopup = 0 === (null === (_args$fullName = args.fullName) || void 0 === _args$fullName ? void 0 : _args$fullName.indexOf(\"editing.popup\"));\r\n var isEditingForm = 0 === (null === (_args$fullName2 = args.fullName) || void 0 === _args$fullName2 ? void 0 : _args$fullName2.indexOf(\"editing.form\"));\r\n var isEditRowKey = 0 === (null === (_args$fullName3 = args.fullName) || void 0 === _args$fullName3 ? void 0 : _args$fullName3.indexOf(\"editing.editRowKey\"));\r\n var isEditColumnName = 0 === (null === (_args$fullName4 = args.fullName) || void 0 === _args$fullName4 ? void 0 : _args$fullName4.indexOf(\"editing.editColumnName\"));\r\n var isChanges = 0 === (null === (_args$fullName5 = args.fullName) || void 0 === _args$fullName5 ? void 0 : _args$fullName5.indexOf(\"editing.changes\"));\r\n var needReinit = !isEditingPopup && !isEditingForm && !isEditRowKey && !isChanges && !isEditColumnName;\r\n if (needReinit) {\r\n this.reinit(ignoreColumnOptionNames)\r\n }\r\n break;\r\n case \"rtlEnabled\":\r\n this.reinit();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _columnOptionChanged: function(args) {\r\n var columnOptionValue = {};\r\n var column = this.getColumnByPath(args.fullName);\r\n var columnOptionName = args.fullName.replace(regExp, \"\");\r\n if (column) {\r\n if (columnOptionName) {\r\n columnOptionValue[columnOptionName] = args.value\r\n } else {\r\n columnOptionValue = args.value\r\n }\r\n this._skipProcessingColumnsChange = args.fullName;\r\n this.columnOption(column.index, columnOptionValue);\r\n this._skipProcessingColumnsChange = false\r\n }\r\n },\r\n _updateRequireResize: function(args) {\r\n var component = this.component;\r\n if (\"width\" === args.fullName.replace(regExp, \"\") && component._updateLockCount) {\r\n component._requireResize = true\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"addColumn\", \"deleteColumn\", \"columnOption\", \"columnCount\", \"clearSorting\", \"clearGrouping\", \"getVisibleColumns\", \"getVisibleColumnIndex\"]\r\n },\r\n applyDataSource: function(dataSource, forceApplying) {\r\n var that = this;\r\n var isDataSourceLoaded = dataSource && dataSource.isLoaded();\r\n that._dataSource = dataSource;\r\n if (!that._dataSourceApplied || 0 === that._dataSourceColumnsCount || forceApplying || that.option(\"regenerateColumnsByVisibleItems\")) {\r\n if (isDataSourceLoaded) {\r\n if (!that._isColumnsFromOptions) {\r\n var columnsFromDataSource = createColumnsFromDataSource(that, dataSource);\r\n if (columnsFromDataSource.length) {\r\n assignColumns(that, columnsFromDataSource);\r\n that._dataSourceColumnsCount = that._columns.length;\r\n applyUserState(that)\r\n }\r\n }\r\n return that.updateColumns(dataSource, forceApplying)\r\n } else {\r\n that._dataSourceApplied = false\r\n }\r\n } else {\r\n if (isDataSourceLoaded && !that.isAllDataTypesDefined(true) && that.updateColumnDataTypes(dataSource)) {\r\n updateColumnChanges(that, \"columns\");\r\n fireColumnsChanged(that);\r\n return (new _deferred.Deferred).reject().promise()\r\n }\r\n }\r\n },\r\n reset: function() {\r\n this._dataSourceApplied = false;\r\n this._dataSourceColumnsCount = void 0;\r\n this.reinit()\r\n },\r\n resetColumnsCache: function() {\r\n var that = this;\r\n that._visibleColumns = void 0;\r\n that._fixedColumns = void 0;\r\n that._rowCount = void 0;\r\n resetBandColumnsCache(that)\r\n },\r\n reinit: function(ignoreColumnOptionNames) {\r\n this._columnsUserState = this.getUserState();\r\n this._ignoreColumnOptionNames = ignoreColumnOptionNames || null;\r\n this.init();\r\n if (ignoreColumnOptionNames) {\r\n this._ignoreColumnOptionNames = null\r\n }\r\n },\r\n isInitialized: function() {\r\n return !!this._columns.length || !!this.option(\"columns\")\r\n },\r\n isDataSourceApplied: function() {\r\n return this._dataSourceApplied\r\n },\r\n getCommonSettings: function(column) {\r\n var commonColumnSettings = (!column || !column.type) && this.option(\"commonColumnSettings\") || {};\r\n var groupingOptions = this.option(\"grouping\") || {};\r\n var groupPanelOptions = this.option(\"groupPanel\") || {};\r\n return (0, _extend.extend)({\r\n allowFixing: this.option(\"columnFixing.enabled\"),\r\n allowResizing: this.option(\"allowColumnResizing\") || void 0,\r\n allowReordering: this.option(\"allowColumnReordering\"),\r\n minWidth: this.option(\"columnMinWidth\"),\r\n width: this.option(\"columnWidth\"),\r\n autoExpandGroup: groupingOptions.autoExpandAll,\r\n allowCollapsing: groupingOptions.allowCollapsing,\r\n allowGrouping: groupPanelOptions.allowColumnDragging && groupPanelOptions.visible || groupingOptions.contextMenuEnabled\r\n }, commonColumnSettings)\r\n },\r\n isColumnOptionUsed: function(optionName) {\r\n for (var i = 0; i < this._columns.length; i++) {\r\n if (this._columns[i][optionName]) {\r\n return true\r\n }\r\n }\r\n },\r\n isAllDataTypesDefined: function(checkSerializers) {\r\n var columns = this._columns;\r\n if (!columns.length) {\r\n return false\r\n }\r\n for (var i = 0; i < columns.length; i++) {\r\n if (!columns[i].dataField && columns[i].calculateCellValue === columns[i].defaultCalculateCellValue) {\r\n continue\r\n }\r\n if (!columns[i].dataType || checkSerializers && columns[i].deserializeValue && void 0 === columns[i].serializationFormat) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n getColumns: function() {\r\n return this._columns\r\n },\r\n isBandColumnsUsed: function() {\r\n return this.getColumns().some(function(column) {\r\n return column.isBand\r\n })\r\n },\r\n getGroupColumns: function() {\r\n var result = [];\r\n (0, _iterator.each)(this._columns, function() {\r\n var column = this;\r\n if ((0, _type.isDefined)(column.groupIndex)) {\r\n result[column.groupIndex] = column\r\n }\r\n });\r\n return result\r\n },\r\n getVisibleColumns: function(rowIndex) {\r\n this._visibleColumns = this._visibleColumns || this._getVisibleColumnsCore();\r\n rowIndex = (0, _type.isDefined)(rowIndex) ? rowIndex : this._visibleColumns.length - 1;\r\n return this._visibleColumns[rowIndex] || []\r\n },\r\n getFixedColumns: function(rowIndex) {\r\n this._fixedColumns = this._fixedColumns || this._getFixedColumnsCore();\r\n rowIndex = (0, _type.isDefined)(rowIndex) ? rowIndex : this._fixedColumns.length - 1;\r\n return this._fixedColumns[rowIndex] || []\r\n },\r\n getFilteringColumns: function() {\r\n return this.getColumns().filter(function(item) {\r\n return (item.dataField || item.name) && (item.allowFiltering || item.allowHeaderFiltering)\r\n }).map(function(item) {\r\n var field = (0, _extend.extend)(true, {}, item);\r\n if (!(0, _type.isDefined)(field.dataField)) {\r\n field.dataField = field.name\r\n }\r\n field.filterOperations = item.filterOperations !== item.defaultFilterOperations ? field.filterOperations : null;\r\n return field\r\n })\r\n },\r\n getColumnIndexOffset: function() {\r\n return 0\r\n },\r\n _getFixedColumnsCore: function() {\r\n var that = this;\r\n var result = [];\r\n var rowCount = that.getRowCount();\r\n var isColumnFixing = that._isColumnFixing();\r\n var transparentColumn = {\r\n command: \"transparent\"\r\n };\r\n var transparentColspan = 0;\r\n var notFixedColumnCount;\r\n var transparentColumnIndex;\r\n var lastFixedPosition;\r\n if (isColumnFixing) {\r\n for (var i = 0; i <= rowCount; i++) {\r\n notFixedColumnCount = 0;\r\n lastFixedPosition = null;\r\n transparentColumnIndex = null;\r\n var visibleColumns = that.getVisibleColumns(i, true);\r\n for (var j = 0; j < visibleColumns.length; j++) {\r\n var prevColumn = visibleColumns[j - 1];\r\n var column = visibleColumns[j];\r\n if (!column.fixed) {\r\n if (0 === i) {\r\n if (column.isBand && column.colspan) {\r\n transparentColspan += column.colspan\r\n } else {\r\n transparentColspan++\r\n }\r\n }\r\n notFixedColumnCount++;\r\n if (!(0, _type.isDefined)(transparentColumnIndex)) {\r\n transparentColumnIndex = j\r\n }\r\n } else {\r\n if (prevColumn && prevColumn.fixed && getFixedPosition(that, prevColumn) !== getFixedPosition(that, column)) {\r\n if (!(0, _type.isDefined)(transparentColumnIndex)) {\r\n transparentColumnIndex = j\r\n }\r\n } else {\r\n lastFixedPosition = column.fixedPosition\r\n }\r\n }\r\n }\r\n if (0 === i && (0 === notFixedColumnCount || notFixedColumnCount >= visibleColumns.length)) {\r\n return []\r\n }\r\n if (!(0, _type.isDefined)(transparentColumnIndex)) {\r\n transparentColumnIndex = \"right\" === lastFixedPosition ? 0 : visibleColumns.length\r\n }\r\n result[i] = visibleColumns.slice(0);\r\n if (!transparentColumn.colspan) {\r\n transparentColumn.colspan = transparentColspan\r\n }\r\n result[i].splice(transparentColumnIndex, notFixedColumnCount, transparentColumn)\r\n }\r\n }\r\n return result.map(function(columns) {\r\n return columns.map(function(column) {\r\n var newColumn = _objectSpread({}, column);\r\n if (newColumn.headerId) {\r\n newColumn.headerId += \"-fixed\"\r\n }\r\n return newColumn\r\n })\r\n })\r\n },\r\n _isColumnFixing: function() {\r\n var isColumnFixing = this.option(\"columnFixing.enabled\");\r\n !isColumnFixing && (0, _iterator.each)(this._columns, function(_, column) {\r\n if (column.fixed) {\r\n isColumnFixing = true;\r\n return false\r\n }\r\n });\r\n return isColumnFixing\r\n },\r\n _getExpandColumnsCore: function() {\r\n return this.getGroupColumns()\r\n },\r\n getExpandColumns: function() {\r\n var expandColumns = this._getExpandColumnsCore();\r\n var expandColumn;\r\n var firstGroupColumn = expandColumns.filter(function(column) {\r\n return 0 === column.groupIndex\r\n })[0];\r\n var isFixedFirstGroupColumn = firstGroupColumn && firstGroupColumn.fixed;\r\n var isColumnFixing = this._isColumnFixing();\r\n if (expandColumns.length) {\r\n expandColumn = this.columnOption(\"command:expand\")\r\n }\r\n expandColumns = (0, _iterator.map)(expandColumns, function(column) {\r\n return (0, _extend.extend)({}, column, {\r\n visibleWidth: null,\r\n minWidth: null,\r\n cellTemplate: !(0, _type.isDefined)(column.groupIndex) ? column.cellTemplate : null,\r\n headerCellTemplate: null,\r\n fixed: !(0, _type.isDefined)(column.groupIndex) || !isFixedFirstGroupColumn ? isColumnFixing : true\r\n }, expandColumn, {\r\n index: column.index,\r\n type: column.type || GROUP_COMMAND_COLUMN_NAME\r\n })\r\n });\r\n return expandColumns\r\n },\r\n getBandColumnsCache: function() {\r\n if (!this._bandColumnsCache) {\r\n var columns = this._columns;\r\n var columnChildrenByIndex = {};\r\n var columnParentByIndex = {};\r\n var isPlain = true;\r\n columns.forEach(function(column) {\r\n var parentIndex = column.ownerBand;\r\n var parent = columns[parentIndex];\r\n if (column.hasColumns) {\r\n isPlain = false\r\n }\r\n if (column.colspan) {\r\n column.colspan = void 0\r\n }\r\n if (column.rowspan) {\r\n column.rowspan = void 0\r\n }\r\n if (parent) {\r\n columnParentByIndex[column.index] = parent\r\n } else {\r\n parentIndex = -1\r\n }\r\n columnChildrenByIndex[parentIndex] = columnChildrenByIndex[parentIndex] || [];\r\n columnChildrenByIndex[parentIndex].push(column)\r\n });\r\n this._bandColumnsCache = {\r\n isPlain: isPlain,\r\n columnChildrenByIndex: columnChildrenByIndex,\r\n columnParentByIndex: columnParentByIndex\r\n }\r\n }\r\n return this._bandColumnsCache\r\n },\r\n _isColumnVisible: function(column) {\r\n return column.visible && this.isParentColumnVisible(column.index)\r\n },\r\n _getVisibleColumnsCore: function() {\r\n var that = this;\r\n var i;\r\n var result = [];\r\n var rowspanGroupColumns = 0;\r\n var rowspanExpandColumns = 0;\r\n var rowCount = that.getRowCount();\r\n var positiveIndexedColumns = [];\r\n var negativeIndexedColumns = [];\r\n var notGroupedColumnsCount = 0;\r\n var isFixedToEnd;\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var expandColumns = mergeColumns(that, that.getExpandColumns(), that._columns);\r\n var columns = mergeColumns(that, that._columns, that._commandColumns, true);\r\n var columnDigitsCount = digitsCount(columns.length);\r\n processBandColumns(that, columns, bandColumnsCache);\r\n for (i = 0; i < rowCount; i++) {\r\n result[i] = [];\r\n negativeIndexedColumns[i] = [{}];\r\n positiveIndexedColumns[i] = [{}, {}, {}]\r\n }(0, _iterator.each)(columns, function() {\r\n var column = this;\r\n var visibleIndex = column.visibleIndex;\r\n var indexedColumns;\r\n var parentBandColumns = getParentBandColumns(column.index, bandColumnsCache.columnParentByIndex);\r\n var visible = that._isColumnVisible(column);\r\n if (visible && (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped)) {\r\n var rowIndex = parentBandColumns.length;\r\n if (visibleIndex < 0) {\r\n visibleIndex = -visibleIndex;\r\n indexedColumns = negativeIndexedColumns[rowIndex]\r\n } else {\r\n column.fixed = parentBandColumns.length ? parentBandColumns[0].fixed : column.fixed;\r\n column.fixedPosition = parentBandColumns.length ? parentBandColumns[0].fixedPosition : column.fixedPosition;\r\n if (column.fixed) {\r\n isFixedToEnd = \"right\" === column.fixedPosition;\r\n if (rtlEnabled && (!column.command || isCustomCommandColumn(that, column))) {\r\n isFixedToEnd = !isFixedToEnd\r\n }\r\n if (isFixedToEnd) {\r\n indexedColumns = positiveIndexedColumns[rowIndex][2]\r\n } else {\r\n indexedColumns = positiveIndexedColumns[rowIndex][0]\r\n }\r\n } else {\r\n indexedColumns = positiveIndexedColumns[rowIndex][1]\r\n }\r\n }\r\n if (parentBandColumns.length) {\r\n visibleIndex = numberToString(visibleIndex, columnDigitsCount);\r\n for (i = parentBandColumns.length - 1; i >= 0; i--) {\r\n visibleIndex = numberToString(parentBandColumns[i].visibleIndex, columnDigitsCount) + visibleIndex\r\n }\r\n }\r\n indexedColumns[visibleIndex] = indexedColumns[visibleIndex] || [];\r\n indexedColumns[visibleIndex].push(column);\r\n notGroupedColumnsCount++\r\n }\r\n });\r\n (0, _iterator.each)(result, function(rowIndex) {\r\n (0, _object.orderEach)(negativeIndexedColumns[rowIndex], function(_, columns) {\r\n result[rowIndex].unshift.apply(result[rowIndex], columns)\r\n });\r\n var firstPositiveIndexColumn = result[rowIndex].length;\r\n (0, _iterator.each)(positiveIndexedColumns[rowIndex], function(index, columnsByFixing) {\r\n (0, _object.orderEach)(columnsByFixing, function(_, columnsByVisibleIndex) {\r\n result[rowIndex].push.apply(result[rowIndex], columnsByVisibleIndex)\r\n })\r\n });\r\n if (rowspanExpandColumns < rowIndex + 1) {\r\n rowspanExpandColumns += processExpandColumns.call(that, result[rowIndex], expandColumns, \"detailExpand\", firstPositiveIndexColumn)\r\n }\r\n if (rowspanGroupColumns < rowIndex + 1) {\r\n rowspanGroupColumns += processExpandColumns.call(that, result[rowIndex], expandColumns, GROUP_COMMAND_COLUMN_NAME, firstPositiveIndexColumn)\r\n }\r\n });\r\n result.push(getDataColumns(result));\r\n if (!notGroupedColumnsCount && that._columns.length) {\r\n result[rowCount].push({\r\n command: \"empty\"\r\n })\r\n }\r\n return result\r\n },\r\n getInvisibleColumns: function(columns, bandColumnIndex) {\r\n var that = this;\r\n var result = [];\r\n var hiddenColumnsByBand;\r\n columns = columns || that._columns;\r\n (0, _iterator.each)(columns, function(_, column) {\r\n if (column.ownerBand !== bandColumnIndex) {\r\n return\r\n }\r\n if (column.isBand) {\r\n if (!column.visible) {\r\n hiddenColumnsByBand = that.getChildrenByBandColumn(column.index)\r\n } else {\r\n hiddenColumnsByBand = that.getInvisibleColumns(that.getChildrenByBandColumn(column.index), column.index)\r\n }\r\n if (hiddenColumnsByBand.length) {\r\n result.push(column);\r\n result = result.concat(hiddenColumnsByBand)\r\n }\r\n return\r\n }\r\n if (!column.visible) {\r\n result.push(column)\r\n }\r\n });\r\n return result\r\n },\r\n getChooserColumns: function(getAllColumns) {\r\n var columns = getAllColumns ? this.getColumns() : this.getInvisibleColumns();\r\n return (0, _common.grep)(columns, function(column) {\r\n return column.showInColumnChooser\r\n })\r\n },\r\n allowMoveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {\r\n var that = this;\r\n var columnIndex = getColumnIndexByVisibleIndex(that, fromVisibleIndex, sourceLocation);\r\n var sourceColumn = that._columns[columnIndex];\r\n if (sourceColumn && (sourceColumn.allowReordering || sourceColumn.allowGrouping || sourceColumn.allowHiding)) {\r\n if (sourceLocation === targetLocation) {\r\n if (sourceLocation === COLUMN_CHOOSER_LOCATION) {\r\n return false\r\n }\r\n fromVisibleIndex = (0, _type.isObject)(fromVisibleIndex) ? fromVisibleIndex.columnIndex : fromVisibleIndex;\r\n toVisibleIndex = (0, _type.isObject)(toVisibleIndex) ? toVisibleIndex.columnIndex : toVisibleIndex;\r\n return fromVisibleIndex !== toVisibleIndex && fromVisibleIndex + 1 !== toVisibleIndex\r\n } else {\r\n if (sourceLocation === GROUP_LOCATION && targetLocation !== COLUMN_CHOOSER_LOCATION || targetLocation === GROUP_LOCATION) {\r\n return sourceColumn && sourceColumn.allowGrouping\r\n } else {\r\n if (sourceLocation === COLUMN_CHOOSER_LOCATION || targetLocation === COLUMN_CHOOSER_LOCATION) {\r\n return sourceColumn && sourceColumn.allowHiding\r\n }\r\n }\r\n }\r\n return true\r\n }\r\n return false\r\n },\r\n moveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {\r\n var that = this;\r\n var options = {};\r\n var prevGroupIndex;\r\n var fromIndex = getColumnIndexByVisibleIndex(that, fromVisibleIndex, sourceLocation);\r\n var toIndex = getColumnIndexByVisibleIndex(that, toVisibleIndex, targetLocation);\r\n var targetGroupIndex;\r\n if (fromIndex >= 0) {\r\n var column = that._columns[fromIndex];\r\n toVisibleIndex = (0, _type.isObject)(toVisibleIndex) ? toVisibleIndex.columnIndex : toVisibleIndex;\r\n targetGroupIndex = toIndex >= 0 ? that._columns[toIndex].groupIndex : -1;\r\n if ((0, _type.isDefined)(column.groupIndex) && sourceLocation === GROUP_LOCATION) {\r\n if (targetGroupIndex > column.groupIndex) {\r\n targetGroupIndex--\r\n }\r\n if (targetLocation !== GROUP_LOCATION) {\r\n options.groupIndex = void 0\r\n } else {\r\n prevGroupIndex = column.groupIndex;\r\n delete column.groupIndex;\r\n updateColumnGroupIndexes(that)\r\n }\r\n }\r\n if (targetLocation === GROUP_LOCATION) {\r\n options.groupIndex = moveColumnToGroup(that, column, targetGroupIndex);\r\n column.groupIndex = prevGroupIndex\r\n } else {\r\n if (toVisibleIndex >= 0) {\r\n var targetColumn = that._columns[toIndex];\r\n if (!targetColumn || column.ownerBand !== targetColumn.ownerBand) {\r\n options.visibleIndex = MAX_SAFE_INTEGER\r\n } else {\r\n if (isColumnFixed(that, column) ^ isColumnFixed(that, targetColumn)) {\r\n options.visibleIndex = MAX_SAFE_INTEGER\r\n } else {\r\n options.visibleIndex = targetColumn.visibleIndex\r\n }\r\n }\r\n }\r\n }\r\n var isVisible = targetLocation !== COLUMN_CHOOSER_LOCATION;\r\n if (column.visible !== isVisible) {\r\n options.visible = isVisible\r\n }\r\n that.columnOption(column.index, options)\r\n }\r\n },\r\n changeSortOrder: function(columnIndex, sortOrder) {\r\n var that = this;\r\n var options = {};\r\n var sortingOptions = that.option(\"sorting\");\r\n var sortingMode = sortingOptions && sortingOptions.mode;\r\n var needResetSorting = \"single\" === sortingMode || !sortOrder;\r\n var allowSorting = \"single\" === sortingMode || \"multiple\" === sortingMode;\r\n var column = that._columns[columnIndex];\r\n var nextSortOrder = function(column) {\r\n if (\"ctrl\" === sortOrder) {\r\n if (!(\"sortOrder\" in column && \"sortIndex\" in column)) {\r\n return false\r\n }\r\n options.sortOrder = void 0;\r\n options.sortIndex = void 0\r\n } else {\r\n if ((0, _type.isDefined)(column.groupIndex) || (0, _type.isDefined)(column.sortIndex)) {\r\n options.sortOrder = \"desc\" === column.sortOrder ? \"asc\" : \"desc\"\r\n } else {\r\n options.sortOrder = \"asc\"\r\n }\r\n }\r\n return true\r\n };\r\n if (allowSorting && column && column.allowSorting) {\r\n if (needResetSorting && !(0, _type.isDefined)(column.groupIndex)) {\r\n (0, _iterator.each)(that._columns, function(index) {\r\n if (index !== columnIndex && this.sortOrder) {\r\n if (!(0, _type.isDefined)(this.groupIndex)) {\r\n delete this.sortOrder\r\n }\r\n delete this.sortIndex\r\n }\r\n })\r\n }\r\n if (isSortOrderValid(sortOrder)) {\r\n if (column.sortOrder !== sortOrder) {\r\n options.sortOrder = sortOrder\r\n }\r\n } else {\r\n if (\"none\" === sortOrder) {\r\n if (column.sortOrder) {\r\n options.sortIndex = void 0;\r\n options.sortOrder = void 0\r\n }\r\n } else {\r\n nextSortOrder(column)\r\n }\r\n }\r\n }\r\n that.columnOption(column.index, options)\r\n },\r\n getSortDataSourceParameters: function(useLocalSelector) {\r\n var that = this;\r\n var sortColumns = [];\r\n var sort = [];\r\n (0, _iterator.each)(that._columns, function() {\r\n if ((this.dataField || this.selector || this.calculateCellValue) && (0, _type.isDefined)(this.sortIndex) && !(0, _type.isDefined)(this.groupIndex)) {\r\n sortColumns[this.sortIndex] = this\r\n }\r\n });\r\n (0, _iterator.each)(sortColumns, function() {\r\n var sortOrder = this && this.sortOrder;\r\n if (isSortOrderValid(sortOrder)) {\r\n var sortItem = {\r\n selector: this.calculateSortValue || this.displayField || this.calculateDisplayValue || useLocalSelector && this.selector || this.dataField || this.calculateCellValue,\r\n desc: \"desc\" === this.sortOrder\r\n };\r\n if (this.sortingMethod) {\r\n sortItem.compare = this.sortingMethod.bind(this)\r\n }\r\n sort.push(sortItem)\r\n }\r\n });\r\n return sort.length > 0 ? sort : null\r\n },\r\n getGroupDataSourceParameters: function(useLocalSelector) {\r\n var group = [];\r\n (0, _iterator.each)(this.getGroupColumns(), function() {\r\n var selector = this.calculateGroupValue || this.displayField || this.calculateDisplayValue || useLocalSelector && this.selector || this.dataField || this.calculateCellValue;\r\n if (selector) {\r\n var groupItem = {\r\n selector: selector,\r\n desc: \"desc\" === this.sortOrder,\r\n isExpanded: !!this.autoExpandGroup\r\n };\r\n if (this.sortingMethod) {\r\n groupItem.compare = this.sortingMethod.bind(this)\r\n }\r\n group.push(groupItem)\r\n }\r\n });\r\n return group.length > 0 ? group : null\r\n },\r\n refresh: function(updateNewLookupsOnly) {\r\n var deferreds = [];\r\n (0, _iterator.each)(this._columns, function() {\r\n var lookup = this.lookup;\r\n if (lookup && !this.calculateDisplayValue) {\r\n if (updateNewLookupsOnly && lookup.valueMap) {\r\n return\r\n }\r\n if (lookup.update) {\r\n deferreds.push(lookup.update())\r\n }\r\n }\r\n });\r\n return _deferred.when.apply(_renderer.default, deferreds).done(resetColumnsCache.bind(null, this))\r\n },\r\n _updateColumnOptions: function(column, columnIndex) {\r\n column.selector = column.selector || function(data) {\r\n return column.calculateCellValue(data)\r\n };\r\n (0, _iterator.each)([\"calculateSortValue\", \"calculateGroupValue\", \"calculateDisplayValue\"], function(_, calculateCallbackName) {\r\n var calculateCallback = column[calculateCallbackName];\r\n if ((0, _type.isFunction)(calculateCallback) && !calculateCallback.originalCallback) {\r\n column[calculateCallbackName] = function(data) {\r\n return calculateCallback.call(column, data)\r\n };\r\n column[calculateCallbackName].originalCallback = calculateCallback;\r\n column[calculateCallbackName].columnIndex = columnIndex\r\n }\r\n });\r\n if ((0, _type.isString)(column.calculateDisplayValue)) {\r\n column.displayField = column.calculateDisplayValue;\r\n column.calculateDisplayValue = (0, _data.compileGetter)(column.displayField)\r\n }\r\n if (column.calculateDisplayValue) {\r\n column.displayValueMap = column.displayValueMap || {}\r\n }\r\n updateSerializers(column, column.dataType);\r\n var lookup = column.lookup;\r\n if (lookup) {\r\n updateSerializers(lookup, lookup.dataType)\r\n }\r\n var dataType = lookup ? lookup.dataType : column.dataType;\r\n if (dataType) {\r\n column.alignment = column.alignment || getAlignmentByDataType(dataType, this.option(\"rtlEnabled\"));\r\n column.format = column.format || _uiGrid_core2.default.getFormatByDataType(dataType);\r\n column.customizeText = column.customizeText || getCustomizeTextByDataType(dataType);\r\n column.defaultFilterOperations = column.defaultFilterOperations || !lookup && DATATYPE_OPERATIONS[dataType] || [];\r\n if (!(0, _type.isDefined)(column.filterOperations)) {\r\n setFilterOperationsAsDefaultValues(column)\r\n }\r\n column.defaultFilterOperation = column.filterOperations && column.filterOperations[0] || \"=\";\r\n column.showEditorAlways = (0, _type.isDefined)(column.showEditorAlways) ? column.showEditorAlways : \"boolean\" === dataType && !column.cellTemplate\r\n }\r\n },\r\n updateColumnDataTypes: function(dataSource) {\r\n var that = this;\r\n var dateSerializationFormat = that.option(\"dateSerializationFormat\");\r\n var firstItems = that._getFirstItems(dataSource);\r\n var isColumnDataTypesUpdated = false;\r\n (0, _iterator.each)(that._columns, function(index, column) {\r\n var i;\r\n var value;\r\n var dataType;\r\n var lookupDataType;\r\n var valueDataType;\r\n var lookup = column.lookup;\r\n if (_uiGrid_core2.default.isDateType(column.dataType) && void 0 === column.serializationFormat) {\r\n column.serializationFormat = dateSerializationFormat\r\n }\r\n if (lookup && _uiGrid_core2.default.isDateType(lookup.dataType) && void 0 === column.serializationFormat) {\r\n lookup.serializationFormat = dateSerializationFormat\r\n }\r\n if (column.calculateCellValue && firstItems.length) {\r\n if (!column.dataType || lookup && !lookup.dataType) {\r\n for (i = 0; i < firstItems.length; i++) {\r\n value = column.calculateCellValue(firstItems[i]);\r\n if (!column.dataType) {\r\n valueDataType = getValueDataType(value);\r\n dataType = dataType || valueDataType;\r\n if (dataType && valueDataType && dataType !== valueDataType) {\r\n dataType = \"string\"\r\n }\r\n }\r\n if (lookup && !lookup.dataType) {\r\n valueDataType = getValueDataType(_uiGrid_core2.default.getDisplayValue(column, value, firstItems[i]));\r\n lookupDataType = lookupDataType || valueDataType;\r\n if (lookupDataType && valueDataType && lookupDataType !== valueDataType) {\r\n lookupDataType = \"string\"\r\n }\r\n }\r\n }\r\n if (dataType || lookupDataType) {\r\n if (dataType) {\r\n column.dataType = dataType\r\n }\r\n if (lookup && lookupDataType) {\r\n lookup.dataType = lookupDataType\r\n }\r\n isColumnDataTypesUpdated = true\r\n }\r\n }\r\n if (void 0 === column.serializationFormat || lookup && void 0 === lookup.serializationFormat) {\r\n for (i = 0; i < firstItems.length; i++) {\r\n value = column.calculateCellValue(firstItems[i], true);\r\n if (void 0 === column.serializationFormat) {\r\n column.serializationFormat = getSerializationFormat(column.dataType, value)\r\n }\r\n if (lookup && void 0 === lookup.serializationFormat) {\r\n lookup.serializationFormat = getSerializationFormat(lookup.dataType, lookup.calculateCellValue(value, true))\r\n }\r\n }\r\n }\r\n }\r\n that._updateColumnOptions(column, index)\r\n });\r\n return isColumnDataTypesUpdated\r\n },\r\n _customizeColumns: function(columns) {\r\n var that = this;\r\n var customizeColumns = that.option(\"customizeColumns\");\r\n if (customizeColumns) {\r\n var hasOwnerBand = columns.some(function(column) {\r\n return (0, _type.isObject)(column.ownerBand)\r\n });\r\n if (hasOwnerBand) {\r\n updateIndexes(that)\r\n }\r\n customizeColumns(columns);\r\n assignColumns(that, createColumnsFromOptions(that, columns))\r\n }\r\n },\r\n updateColumns: function(dataSource, forceApplying) {\r\n var _this = this;\r\n if (!forceApplying) {\r\n this.updateSortingGrouping(dataSource)\r\n }\r\n if (!dataSource || dataSource.isLoaded()) {\r\n var sortParameters = dataSource ? dataSource.sort() || [] : this.getSortDataSourceParameters();\r\n var groupParameters = dataSource ? dataSource.group() || [] : this.getGroupDataSourceParameters();\r\n var filterParameters = null === dataSource || void 0 === dataSource ? void 0 : dataSource.lastLoadOptions().filter;\r\n this._customizeColumns(this._columns);\r\n updateIndexes(this);\r\n var columns = this._columns;\r\n return (0, _deferred.when)(this.refresh(true)).always(function() {\r\n if (_this._columns !== columns) {\r\n return\r\n }\r\n _this._updateChanges(dataSource, {\r\n sorting: sortParameters,\r\n grouping: groupParameters,\r\n filtering: filterParameters\r\n });\r\n fireColumnsChanged(_this)\r\n })\r\n }\r\n },\r\n _updateChanges: function(dataSource, parameters) {\r\n if (dataSource) {\r\n this.updateColumnDataTypes(dataSource);\r\n this._dataSourceApplied = true\r\n }\r\n if (!_uiGrid_core2.default.equalSortParameters(parameters.sorting, this.getSortDataSourceParameters())) {\r\n updateColumnChanges(this, \"sorting\")\r\n }\r\n if (!_uiGrid_core2.default.equalSortParameters(parameters.grouping, this.getGroupDataSourceParameters())) {\r\n updateColumnChanges(this, \"grouping\")\r\n }\r\n var dataController = this.getController(\"data\");\r\n if (dataController && !_uiGrid_core2.default.equalFilterParameters(parameters.filtering, dataController.getCombinedFilter())) {\r\n updateColumnChanges(this, \"filtering\")\r\n }\r\n updateColumnChanges(this, \"columns\")\r\n },\r\n updateSortingGrouping: function(dataSource, fromDataSource) {\r\n var that = this;\r\n var sortParameters;\r\n var isColumnsChanged;\r\n var updateSortGroupParameterIndexes = function(columns, sortParameters, indexParameterName) {\r\n (0, _iterator.each)(columns, function(index, column) {\r\n delete column[indexParameterName];\r\n if (sortParameters) {\r\n for (var i = 0; i < sortParameters.length; i++) {\r\n var selector = sortParameters[i].selector;\r\n var isExpanded = sortParameters[i].isExpanded;\r\n if (selector === column.dataField || selector === column.name || selector === column.selector || selector === column.calculateCellValue || selector === column.calculateGroupValue || selector === column.calculateDisplayValue) {\r\n column.sortOrder = column.sortOrder || (sortParameters[i].desc ? \"desc\" : \"asc\");\r\n if (void 0 !== isExpanded) {\r\n column.autoExpandGroup = isExpanded\r\n }\r\n column[indexParameterName] = i;\r\n break\r\n }\r\n }\r\n }\r\n })\r\n };\r\n if (dataSource) {\r\n sortParameters = _uiGrid_core2.default.normalizeSortingInfo(dataSource.sort());\r\n var groupParameters = _uiGrid_core2.default.normalizeSortingInfo(dataSource.group());\r\n var columnsGroupParameters = that.getGroupDataSourceParameters();\r\n var columnsSortParameters = that.getSortDataSourceParameters();\r\n if (!that._columns.length) {\r\n (0, _iterator.each)(groupParameters, function(index, group) {\r\n that._columns.push(group.selector)\r\n });\r\n (0, _iterator.each)(sortParameters, function(index, sort) {\r\n that._columns.push(sort.selector)\r\n });\r\n assignColumns(that, createColumnsFromOptions(that, that._columns))\r\n }\r\n if ((fromDataSource || !columnsGroupParameters && !that._hasUserState) && !_uiGrid_core2.default.equalSortParameters(groupParameters, columnsGroupParameters)) {\r\n updateSortGroupParameterIndexes(that._columns, groupParameters, \"groupIndex\");\r\n if (fromDataSource) {\r\n updateColumnChanges(that, \"grouping\");\r\n isColumnsChanged = true\r\n }\r\n }\r\n if ((fromDataSource || !columnsSortParameters && !that._hasUserState) && !_uiGrid_core2.default.equalSortParameters(sortParameters, columnsSortParameters)) {\r\n updateSortGroupParameterIndexes(that._columns, sortParameters, \"sortIndex\");\r\n if (fromDataSource) {\r\n updateColumnChanges(that, \"sorting\");\r\n isColumnsChanged = true\r\n }\r\n }\r\n if (isColumnsChanged) {\r\n fireColumnsChanged(that)\r\n }\r\n }\r\n },\r\n updateFilter: function(filter, remoteFiltering, columnIndex, filterValue) {\r\n var that = this;\r\n if (!Array.isArray(filter)) {\r\n return filter\r\n }\r\n filter = (0, _extend.extend)([], filter);\r\n columnIndex = void 0 !== filter.columnIndex ? filter.columnIndex : columnIndex;\r\n filterValue = void 0 !== filter.filterValue ? filter.filterValue : filterValue;\r\n if ((0, _type.isString)(filter[0]) && \"!\" !== filter[0]) {\r\n var column = that.columnOption(filter[0]);\r\n if (remoteFiltering) {\r\n if ((0, _config.default)().forceIsoDateParsing && column && column.serializeValue && filter.length > 1) {\r\n filter[filter.length - 1] = column.serializeValue(filter[filter.length - 1], \"filter\")\r\n }\r\n } else {\r\n if (column && column.selector) {\r\n filter[0] = column.selector;\r\n filter[0].columnIndex = column.index\r\n }\r\n }\r\n } else {\r\n if ((0, _type.isFunction)(filter[0])) {\r\n filter[0].columnIndex = columnIndex;\r\n filter[0].filterValue = filterValue\r\n }\r\n }\r\n for (var i = 0; i < filter.length; i++) {\r\n filter[i] = that.updateFilter(filter[i], remoteFiltering, columnIndex, filterValue)\r\n }\r\n return filter\r\n },\r\n columnCount: function() {\r\n return this._columns ? this._columns.length : 0\r\n },\r\n columnOption: function(identifier, option, value, notFireEvent) {\r\n var that = this;\r\n var columns = that._columns.concat(that._commandColumns);\r\n var column = findColumn(columns, identifier);\r\n if (column) {\r\n if (1 === arguments.length) {\r\n return (0, _extend.extend)({}, column)\r\n }\r\n if ((0, _type.isString)(option)) {\r\n if (2 === arguments.length) {\r\n return columnOptionCore(that, column, option)\r\n } else {\r\n columnOptionCore(that, column, option, value, notFireEvent)\r\n }\r\n } else {\r\n if ((0, _type.isObject)(option)) {\r\n (0, _iterator.each)(option, function(optionName, value) {\r\n columnOptionCore(that, column, optionName, value, notFireEvent)\r\n })\r\n }\r\n }\r\n fireColumnsChanged(that)\r\n }\r\n },\r\n clearSorting: function() {\r\n var that = this;\r\n var columnCount = this.columnCount();\r\n that.beginUpdate();\r\n for (var i = 0; i < columnCount; i++) {\r\n that.columnOption(i, \"sortOrder\", void 0)\r\n }\r\n that.endUpdate()\r\n },\r\n clearGrouping: function() {\r\n var that = this;\r\n var columnCount = this.columnCount();\r\n that.beginUpdate();\r\n for (var i = 0; i < columnCount; i++) {\r\n that.columnOption(i, \"groupIndex\", void 0)\r\n }\r\n that.endUpdate()\r\n },\r\n getVisibleIndex: function(index, rowIndex) {\r\n var columns = this.getVisibleColumns(rowIndex);\r\n for (var i = columns.length - 1; i >= 0; i--) {\r\n if (columns[i].index === index) {\r\n return i\r\n }\r\n }\r\n return -1\r\n },\r\n getVisibleIndexByColumn: function(column, rowIndex) {\r\n var visibleColumns = this.getVisibleColumns(rowIndex);\r\n var visibleColumn = visibleColumns.filter(function(col) {\r\n return col.index === column.index && col.command === column.command\r\n })[0];\r\n return visibleColumns.indexOf(visibleColumn)\r\n },\r\n getVisibleColumnIndex: function(id, rowIndex) {\r\n var index = this.columnOption(id, \"index\");\r\n return this.getVisibleIndex(index, rowIndex)\r\n },\r\n addColumn: function(options) {\r\n var that = this;\r\n var column = createColumn(that, options);\r\n var index = that._columns.length;\r\n that._columns.push(column);\r\n if (column.isBand) {\r\n that._columns = createColumnsFromOptions(that, that._columns);\r\n column = that._columns[index]\r\n }\r\n column.added = options;\r\n updateIndexes(that, column);\r\n that.updateColumns(that._dataSource);\r\n that._checkColumns()\r\n },\r\n deleteColumn: function(id) {\r\n var that = this;\r\n var column = that.columnOption(id);\r\n if (column && column.index >= 0) {\r\n convertOwnerBandToColumnReference(that._columns);\r\n that._columns.splice(column.index, 1);\r\n if (column.isBand) {\r\n var childIndexes = that.getChildrenByBandColumn(column.index).map(function(column) {\r\n return column.index\r\n });\r\n that._columns = that._columns.filter(function(column) {\r\n return childIndexes.indexOf(column.index) < 0\r\n })\r\n }\r\n updateIndexes(that);\r\n that.updateColumns(that._dataSource)\r\n }\r\n },\r\n addCommandColumn: function(options) {\r\n var commandColumn = this._commandColumns.filter(function(column) {\r\n return column.command === options.command\r\n })[0];\r\n if (!commandColumn) {\r\n commandColumn = options;\r\n this._commandColumns.push(commandColumn)\r\n }\r\n },\r\n getUserState: function() {\r\n var columns = this._columns;\r\n var result = [];\r\n var i;\r\n\r\n function handleStateField(index, value) {\r\n if (void 0 !== columns[i][value]) {\r\n result[i][value] = columns[i][value]\r\n }\r\n }\r\n for (i = 0; i < columns.length; i++) {\r\n result[i] = {};\r\n (0, _iterator.each)(USER_STATE_FIELD_NAMES, handleStateField)\r\n }\r\n return result\r\n },\r\n setName: function(column) {\r\n var dataField = column.dataField;\r\n if (!(0, _type.isDefined)(column.name) && (0, _type.isDefined)(dataField)) {\r\n column.name = dataField\r\n }\r\n },\r\n setUserState: function(state) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var ignoreColumnOptionNames = that.option(\"stateStoring.ignoreColumnOptionNames\");\r\n null === state || void 0 === state ? void 0 : state.forEach(this.setName);\r\n if (!ignoreColumnOptionNames) {\r\n ignoreColumnOptionNames = [];\r\n var commonColumnSettings = that.getCommonSettings();\r\n if (!that.option(\"columnChooser.enabled\")) {\r\n ignoreColumnOptionNames.push(\"visible\")\r\n }\r\n if (\"none\" === that.option(\"sorting.mode\")) {\r\n ignoreColumnOptionNames.push(\"sortIndex\", \"sortOrder\")\r\n }\r\n if (!commonColumnSettings.allowGrouping) {\r\n ignoreColumnOptionNames.push(\"groupIndex\")\r\n }\r\n if (!commonColumnSettings.allowFixing) {\r\n ignoreColumnOptionNames.push(\"fixed\", \"fixedPosition\")\r\n }\r\n if (!commonColumnSettings.allowResizing) {\r\n ignoreColumnOptionNames.push(\"width\", \"visibleWidth\")\r\n }\r\n var isFilterPanelHidden = !that.option(\"filterPanel.visible\");\r\n if (!that.option(\"filterRow.visible\") && isFilterPanelHidden) {\r\n ignoreColumnOptionNames.push(\"filterValue\", \"selectedFilterOperation\")\r\n }\r\n if (!that.option(\"headerFilter.visible\") && isFilterPanelHidden) {\r\n ignoreColumnOptionNames.push(\"filterValues\", \"filterType\")\r\n }\r\n }\r\n that._columnsUserState = state;\r\n that._ignoreColumnOptionNames = ignoreColumnOptionNames;\r\n that._hasUserState = !!state;\r\n updateColumnChanges(that, \"filtering\");\r\n that.init();\r\n if (dataSource) {\r\n dataSource.sort(that.getSortDataSourceParameters());\r\n dataSource.group(that.getGroupDataSourceParameters())\r\n }\r\n },\r\n _checkColumns: function() {\r\n var usedNames = {};\r\n var hasEditableColumnWithoutName = false;\r\n var duplicatedNames = [];\r\n this._columns.forEach(function(column) {\r\n var _column$columns;\r\n var name = column.name;\r\n var isBand = null === (_column$columns = column.columns) || void 0 === _column$columns ? void 0 : _column$columns.length;\r\n var isEditable = column.allowEditing && (column.dataField || column.setCellValue) && !isBand;\r\n if (name) {\r\n if (usedNames[name]) {\r\n duplicatedNames.push('\"'.concat(name, '\"'))\r\n }\r\n usedNames[name] = true\r\n } else {\r\n if (isEditable) {\r\n hasEditableColumnWithoutName = true\r\n }\r\n }\r\n });\r\n if (duplicatedNames.length) {\r\n _ui.default.log(\"E1059\", duplicatedNames.join(\", \"))\r\n }\r\n if (hasEditableColumnWithoutName) {\r\n _ui.default.log(\"E1060\")\r\n }\r\n },\r\n _createCalculatedColumnOptions: function(columnOptions, bandColumn) {\r\n var calculatedColumnOptions = {};\r\n var dataField = columnOptions.dataField;\r\n if (Array.isArray(columnOptions.columns) && columnOptions.columns.length || columnOptions.isBand) {\r\n calculatedColumnOptions.isBand = true;\r\n dataField = null\r\n }\r\n if (dataField) {\r\n if ((0, _type.isString)(dataField)) {\r\n var getter = (0, _data.compileGetter)(dataField);\r\n calculatedColumnOptions = {\r\n caption: (0, _inflector.captionize)(dataField),\r\n calculateCellValue: function(data, skipDeserialization) {\r\n var value = getter(data);\r\n return this.deserializeValue && !skipDeserialization ? this.deserializeValue(value) : value\r\n },\r\n setCellValue: defaultSetCellValue,\r\n parseValue: function(text) {\r\n var column = this;\r\n var result;\r\n var parsedValue;\r\n if (\"number\" === column.dataType) {\r\n if ((0, _type.isString)(text) && column.format) {\r\n parsedValue = _number.default.parse(text);\r\n if ((0, _type.isNumeric)(parsedValue)) {\r\n result = parsedValue\r\n }\r\n } else {\r\n if ((0, _type.isDefined)(text) && (0, _type.isNumeric)(text)) {\r\n result = Number(text)\r\n }\r\n }\r\n } else {\r\n if (\"boolean\" === column.dataType) {\r\n if (text === column.trueText) {\r\n result = true\r\n } else {\r\n if (text === column.falseText) {\r\n result = false\r\n }\r\n }\r\n } else {\r\n if (_uiGrid_core2.default.isDateType(column.dataType)) {\r\n parsedValue = _date.default.parse(text, column.format);\r\n if (parsedValue) {\r\n result = parsedValue\r\n }\r\n } else {\r\n result = text\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n }\r\n }\r\n calculatedColumnOptions.allowFiltering = true\r\n } else {\r\n calculatedColumnOptions.allowFiltering = !!columnOptions.calculateFilterExpression\r\n }\r\n calculatedColumnOptions.calculateFilterExpression = function() {\r\n return _filtering.default.defaultCalculateFilterExpression.apply(this, arguments)\r\n };\r\n calculatedColumnOptions.createFilterExpression = function(filterValue) {\r\n var result;\r\n if (this.calculateFilterExpression) {\r\n result = this.calculateFilterExpression.apply(this, arguments)\r\n }\r\n if ((0, _type.isFunction)(result)) {\r\n result = [result, \"=\", true]\r\n }\r\n if (result) {\r\n result.columnIndex = this.index;\r\n result.filterValue = filterValue\r\n }\r\n return result\r\n };\r\n if (!dataField || !(0, _type.isString)(dataField)) {\r\n (0, _extend.extend)(true, calculatedColumnOptions, {\r\n allowSorting: false,\r\n allowGrouping: false,\r\n calculateCellValue: function() {\r\n return null\r\n }\r\n })\r\n }\r\n if (bandColumn) {\r\n calculatedColumnOptions.allowFixing = false\r\n }\r\n if (columnOptions.dataType) {\r\n calculatedColumnOptions.userDataType = columnOptions.dataType\r\n }\r\n if (columnOptions.selectedFilterOperation && !(\"defaultSelectedFilterOperation\" in calculatedColumnOptions)) {\r\n calculatedColumnOptions.defaultSelectedFilterOperation = columnOptions.selectedFilterOperation\r\n }\r\n if (columnOptions.lookup) {\r\n calculatedColumnOptions.lookup = {\r\n calculateCellValue: function(value, skipDeserialization) {\r\n if (this.valueExpr) {\r\n value = this.valueMap && this.valueMap[value]\r\n }\r\n return this.deserializeValue && !skipDeserialization ? this.deserializeValue(value) : value\r\n },\r\n updateValueMap: function() {\r\n this.valueMap = {};\r\n if (this.items) {\r\n var calculateValue = (0, _data.compileGetter)(this.valueExpr);\r\n var calculateDisplayValue = (0, _data.compileGetter)(this.displayExpr);\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n var displayValue = calculateDisplayValue(item);\r\n this.valueMap[calculateValue(item)] = displayValue;\r\n this.dataType = this.dataType || getValueDataType(displayValue);\r\n }\r\n }\r\n },\r\n update: function() {\r\n var that = this;\r\n var dataSource = that.dataSource;\r\n if (dataSource) {\r\n if ((0, _type.isFunction)(dataSource) && !_variable_wrapper.default.isWrapped(dataSource)) {\r\n dataSource = dataSource({})\r\n }\r\n if ((0, _type.isPlainObject)(dataSource) || dataSource instanceof _abstract_store.default || Array.isArray(dataSource)) {\r\n if (that.valueExpr) {\r\n var dataSourceOptions = (0, _utils.normalizeDataSourceOptions)(dataSource);\r\n dataSourceOptions.paginate = false;\r\n dataSource = new _data_source.DataSource(dataSourceOptions);\r\n return dataSource.load().done(function(data) {\r\n that.items = data;\r\n that.updateValueMap && that.updateValueMap()\r\n })\r\n }\r\n } else {\r\n _ui.default.log(\"E1016\")\r\n }\r\n } else {\r\n that.updateValueMap && that.updateValueMap()\r\n }\r\n }\r\n }\r\n }\r\n calculatedColumnOptions.resizedCallbacks = (0, _callbacks.default)();\r\n if (columnOptions.resized) {\r\n calculatedColumnOptions.resizedCallbacks.add(columnOptions.resized.bind(columnOptions))\r\n }(0, _iterator.each)(calculatedColumnOptions, function(optionName) {\r\n if ((0, _type.isFunction)(calculatedColumnOptions[optionName]) && 0 !== optionName.indexOf(\"default\")) {\r\n var defaultOptionName = \"default\" + optionName.charAt(0).toUpperCase() + optionName.substr(1);\r\n calculatedColumnOptions[defaultOptionName] = calculatedColumnOptions[optionName]\r\n }\r\n });\r\n return calculatedColumnOptions\r\n },\r\n getRowCount: function() {\r\n this._rowCount = this._rowCount || _getRowCount(this);\r\n return this._rowCount\r\n },\r\n getRowIndex: function(columnIndex, alwaysGetRowIndex) {\r\n var column = this._columns[columnIndex];\r\n var bandColumnsCache = this.getBandColumnsCache();\r\n return column && (alwaysGetRowIndex || column.visible && !(column.command || (0, _type.isDefined)(column.groupIndex))) ? getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex).length : 0\r\n },\r\n getChildrenByBandColumn: function(bandColumnIndex, onlyVisibleDirectChildren) {\r\n var that = this;\r\n var bandColumnsCache = that.getBandColumnsCache();\r\n var result = _getChildrenByBandColumn(bandColumnIndex, bandColumnsCache.columnChildrenByIndex, !onlyVisibleDirectChildren);\r\n if (onlyVisibleDirectChildren) {\r\n return result.filter(function(column) {\r\n return column.visible && !column.command\r\n }).sort(function(column1, column2) {\r\n return column1.visibleIndex - column2.visibleIndex\r\n })\r\n }\r\n return result\r\n },\r\n isParentBandColumn: function(columnIndex, bandColumnIndex) {\r\n var result = false;\r\n var column = this._columns[columnIndex];\r\n var bandColumnsCache = this.getBandColumnsCache();\r\n var parentBandColumns = column && getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex);\r\n if (parentBandColumns) {\r\n (0, _iterator.each)(parentBandColumns, function(_, bandColumn) {\r\n if (bandColumn.index === bandColumnIndex) {\r\n result = true;\r\n return false\r\n }\r\n })\r\n }\r\n return result\r\n },\r\n isParentColumnVisible: function(columnIndex) {\r\n var result = true;\r\n var bandColumnsCache = this.getBandColumnsCache();\r\n var bandColumns = columnIndex >= 0 && getParentBandColumns(columnIndex, bandColumnsCache.columnParentByIndex);\r\n bandColumns && (0, _iterator.each)(bandColumns, function(_, bandColumn) {\r\n result = result && bandColumn.visible;\r\n return result\r\n });\r\n return result\r\n },\r\n getColumnId: function(column) {\r\n if (column.command && column.type === GROUP_COMMAND_COLUMN_NAME) {\r\n if (isCustomCommandColumn(this, column)) {\r\n return \"type:\" + column.type\r\n }\r\n return \"command:\" + column.command\r\n }\r\n return column.index\r\n },\r\n getCustomizeTextByDataType: getCustomizeTextByDataType,\r\n getHeaderContentAlignment: function(columnAlignment) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n if (rtlEnabled) {\r\n return \"left\" === columnAlignment ? \"right\" : \"left\"\r\n }\r\n return columnAlignment\r\n }\r\n }\r\n }())\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/context_menu/ui.menu_base.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _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 _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\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\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 _inheritsLoose(MenuBase, _HierarchicalCollecti);\r\n\r\n function MenuBase() {\r\n return _HierarchicalCollecti.apply(this, arguments) || this\r\n }\r\n var _proto = MenuBase.prototype;\r\n _proto._getDefaultOptions = function() {\r\n return (0, _extend.extend)(_HierarchicalCollecti.prototype._getDefaultOptions.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 _proto._itemDataKey = function() {\r\n return \"dxMenuItemDataKey\"\r\n };\r\n _proto._itemClass = function() {\r\n return ITEM_CLASS\r\n };\r\n _proto._setAriaSelected = function() {};\r\n _proto._selectedItemClass = function() {\r\n return DX_MENU_SELECTED_ITEM_CLASS\r\n };\r\n _proto._widgetClass = function() {\r\n return DX_MENU_BASE_CLASS\r\n };\r\n _proto._focusTarget = function() {\r\n return this._itemContainer()\r\n };\r\n _proto._clean = function() {\r\n this.option(\"focusedElement\", null);\r\n _HierarchicalCollecti.prototype._clean.call(this)\r\n };\r\n _proto._supportedKeys = 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)(_HierarchicalCollecti.prototype._supportedKeys.call(this), {\r\n space: selectItem,\r\n pageUp: _common.noop,\r\n pageDown: _common.noop\r\n })\r\n };\r\n _proto._isSelectionEnabled = function() {\r\n return this.option(\"selectionMode\") === SINGLE_SELECTION_MODE\r\n };\r\n _proto._init = function() {\r\n this._activeStateUnit = \".\".concat(ITEM_CLASS);\r\n _HierarchicalCollecti.prototype._init.call(this);\r\n this._renderSelectedItem();\r\n this._initActions()\r\n };\r\n _proto._getTextContainer = 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 _proto._getPopoutContainer = 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 _proto._getDataAdapterOptions = 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 _proto._selectByItem = 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 _proto._renderSelectedItem = 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 _proto._initActions = function() {};\r\n _proto._initMarkup = function() {\r\n _HierarchicalCollecti.prototype._initMarkup.call(this);\r\n this._addCustomCssClass(this.$element());\r\n this.option(\"useInkRipple\") && this._renderInkRipple()\r\n };\r\n _proto._renderInkRipple = function() {\r\n this._inkRipple = (0, _utils.render)()\r\n };\r\n _proto._toggleActiveState = function($element, value, e) {\r\n _HierarchicalCollecti.prototype._toggleActiveState.apply(this, arguments);\r\n if (!this._inkRipple) {\r\n return\r\n }\r\n var config = {\r\n element: $element,\r\n event: e\r\n };\r\n if (value) {\r\n this._inkRipple.showWave(config)\r\n } else {\r\n this._inkRipple.hideWave(config)\r\n }\r\n };\r\n _proto._getShowSubmenuMode = 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 _proto._initSelectedItems = function() {};\r\n _proto._isDesktopDevice = function() {\r\n return \"desktop\" === _devices.default.real().deviceType\r\n };\r\n _proto._initEditStrategy = function() {\r\n var Strategy = _uiMenu_baseEdit.default;\r\n this._editStrategy = new Strategy(this)\r\n };\r\n _proto._addCustomCssClass = function($element) {\r\n $element.addClass(this.option(\"cssClass\"))\r\n };\r\n _proto._itemWrapperSelector = function() {\r\n return \".\".concat(DX_MENU_ITEM_WRAPPER_CLASS)\r\n };\r\n _proto._hoverStartHandler = 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 _proto._getAvailableItems = function($itemElements) {\r\n return _HierarchicalCollecti.prototype._getAvailableItems.call(this, $itemElements).filter(function() {\r\n return \"hidden\" !== (0, _renderer.default)(this).css(\"visibility\")\r\n })\r\n };\r\n _proto._isItemDisabled = function($item) {\r\n return this._disabledGetter($item.data(this._itemDataKey()))\r\n };\r\n _proto._showSubmenu = function($itemElement) {\r\n this._addExpandedClass($itemElement)\r\n };\r\n _proto._addExpandedClass = function(itemElement) {\r\n (0, _renderer.default)(itemElement).addClass(DX_MENU_ITEM_EXPANDED_CLASS)\r\n };\r\n _proto._getSubmenuDelay = 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 _proto._getItemElementByEventArgs = 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 _proto._hoverEndHandler = function() {\r\n clearTimeout(this._showSubmenusTimeout)\r\n };\r\n _proto._hasSubmenu = function(node) {\r\n return node && node.internalFields.childrenKeys.length\r\n };\r\n _proto._renderContentImpl = function() {\r\n this._renderItems(this._dataAdapter.getRootNodes())\r\n };\r\n _proto._renderItems = 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 _proto._renderContainer = 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 _proto._createDOMElement = 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 _proto._renderItem = 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 = _HierarchicalCollecti.prototype._renderItem.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 _proto._renderItemFrame = function(index, itemData, $itemContainer) {\r\n var $itemFrame = $itemContainer.children(\".\".concat(ITEM_CLASS));\r\n return $itemFrame.length ? $itemFrame : _HierarchicalCollecti.prototype._renderItemFrame.apply(this, arguments)\r\n };\r\n _proto._refreshItem = 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 _proto._addContentClasses = 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 _proto._getItemContent = function($itemFrame) {\r\n var $itemContent = _HierarchicalCollecti.prototype._getItemContent.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 _proto._postprocessRenderItem = 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 _proto._isItemSelectable = function(item) {\r\n return false !== item.selectable\r\n };\r\n _proto._renderSeparator = function($itemsContainer) {\r\n (0, _renderer.default)(\"
  • \").appendTo($itemsContainer).addClass(DX_MENU_SEPARATOR_CLASS)\r\n };\r\n _proto._itemClickHandler = 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 _proto._updateSubmenuVisibilityOnClick = 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 _proto._updateSelectedItemOnClick = 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 _proto._isItemSelectionAllowed = 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 _proto._isContainerEmpty = function() {\r\n return this._itemContainer().is(\":empty\")\r\n };\r\n _proto._syncSelectionOptions = function() {\r\n return (0, _common.asyncNoop)()\r\n };\r\n _proto._optionChanged = 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 _HierarchicalCollecti.prototype._optionChanged.call(this, args)\r\n }\r\n };\r\n _proto._toggleItemSelection = 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 _proto._getElementByItem = 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 _proto._updateSelectedItems = function(oldSelection, newSelection) {\r\n if (oldSelection || newSelection) {\r\n this._fireSelectionChangeEvent(newSelection, oldSelection)\r\n }\r\n };\r\n _proto._fireSelectionChangeEvent = 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 _proto.selectItem = 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 _proto.unselectItem = 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 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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _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 var dateBox = $editorElement.dxDateBox(\"instance\");\r\n var defaultEnterKeyHandler = dateBox._supportedKeys().enter;\r\n dateBox.registerKeyHandler(\"enter\", function(e) {\r\n if (dateBox.option(\"opened\")) {\r\n defaultEnterKeyHandler(e)\r\n }\r\n return true\r\n })\r\n }\r\n if (\"dxTextArea\" === options.editorName) {\r\n $editorElement.dxTextArea(\"instance\").registerKeyHandler(\"enter\", function(event) {\r\n if (\"enter\" === (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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiGrid_core = _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 _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 && null != iter[Symbol.iterator] || null != iter[\"@@iterator\"]) {\r\n return Array.from(iter)\r\n }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return _arrayLikeToArray(arr)\r\n }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n if (null == len || len > arr.length) {\r\n len = arr.length\r\n }\r\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i]\r\n }\r\n return arr2\r\n}\r\nvar 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 (0, _common.equalByValue)(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, true);\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 && (0, _common.equalByValue)(this._currentCellValidator.option(\"validationGroup\").key, rowKey) && this._currentCellValidator.option(\"dataGetter\")().column.index === columnIndex\r\n },\r\n validateCell: function(validator) {\r\n var cellParams = {\r\n rowKey: validator.option(\"validationGroup\").key,\r\n columnIndex: validator.option(\"dataGetter\")().column.index\r\n };\r\n var validationResult = this.getCellValidationResult(cellParams);\r\n var stateRestored = validationResultIsValid(validationResult);\r\n if (!stateRestored) {\r\n validationResult = validator.validate()\r\n }\r\n var deferred = new _deferred.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 var $overlayContainer = $container.closest(\".\".concat(this.addWidgetPrefix(CONTENT_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 width: \"auto\",\r\n height: \"auto\",\r\n target: $container,\r\n shading: false,\r\n container: $overlayContainer,\r\n propagateOutsideClick: true,\r\n closeOnOutsideClick: false,\r\n closeOnTargetScroll: false,\r\n contentTemplate: 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 offset: \"1 0\",\r\n collision: \"flip\",\r\n boundaryOffset: \"0 0\",\r\n boundary: this._rowsView.element()\r\n },\r\n onPositioned: this._positionedHandler.bind(this)\r\n };\r\n return new _overlay.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 = 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 _change$data;\r\n var $focus = null === $element || void 0 === $element ? void 0 : $element.closest(this._getFocusCellSelector());\r\n var $cell = null !== $focus && void 0 !== $focus && $focus.is(\"td\") ? $focus : null;\r\n var rowOptions = null === $focus || void 0 === $focus ? void 0 : $focus.closest(\".dx-row\").data(\"options\");\r\n var change = rowOptions ? this.getController(\"editing\").getChangeByKey(rowOptions.key) : null;\r\n var column = $cell && this.getController(\"columns\").getVisibleColumns()[$cell.index()];\r\n var isCellModified = void 0 !== (null === change || void 0 === change ? void 0 : null === (_change$data = change.data) || void 0 === _change$data ? void 0 : _change$data[null === column || void 0 === column ? void 0 : column.name]) && !this._editingController.isSaving();\r\n var revertTooltip;\r\n if ((null === validationResult || void 0 === validationResult ? void 0 : validationResult.status) === VALIDATION_STATUS.invalid || isCellModified) {\r\n if (this._editingController.getEditMode() === EDIT_MODE_CELL) {\r\n revertTooltip = this._showRevertButton($focus)\r\n }\r\n }\r\n var showValidationMessage = validationResult && validationResult.status === VALIDATION_STATUS.invalid;\r\n if (showValidationMessage && $cell && column && validationResult && validationResult.brokenRules) {\r\n var errorMessages = [];\r\n validationResult.brokenRules.forEach(function(rule) {\r\n errorMessages.push(rule.message)\r\n });\r\n this._showValidationMessage($focus, errorMessages, column.alignment || \"left\", revertTooltip)\r\n }!hideBorder && this._rowsView.element() && this._rowsView.updateFreeSpaceRowHeight()\r\n },\r\n focus: function($element, hideBorder) {\r\n 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 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 var column = validationResult.validator.option(\"dataGetter\")().column;\r\n if (change && column && !validatingController.isCurrentValidatorProcessing({\r\n rowKey: change.key,\r\n columnIndex: column.index\r\n })) {\r\n return\r\n }\r\n if (validationResult.status === VALIDATION_STATUS.invalid) {\r\n hideBorder = true\r\n }\r\n _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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/grid_core/ui.grid_core.state_storing.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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\") && void 0 !== state.focusedRowKey) {\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COLUMN_INDICATORS_CLASS = \"dx-column-indicators\";\r\nvar GROUP_PANEL_ITEM_CLASS = \"dx-group-panel-item\";\r\nvar _default = {\r\n _applyColumnState: function(options) {\r\n var _that$component;\r\n var that = this;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var columnAlignment = that._getColumnAlignment(options.column.alignment, rtlEnabled);\r\n var parameters = (0, _extend.extend)(true, {\r\n columnAlignment: columnAlignment\r\n }, options);\r\n var isGroupPanelItem = parameters.rootElement.hasClass(GROUP_PANEL_ITEM_CLASS);\r\n var $indicatorsContainer = that._createIndicatorContainer(parameters, isGroupPanelItem);\r\n var $span = (0, _renderer.default)(\"\").addClass(that._getIndicatorClassName(options.name));\r\n var columnsController = null === (_that$component = that.component) || void 0 === _that$component ? void 0 : _that$component.getController(\"columns\");\r\n var indicatorAlignment = (null === columnsController || void 0 === columnsController ? void 0 : columnsController.getHeaderContentAlignment(columnAlignment)) || columnAlignment;\r\n parameters.container = $indicatorsContainer;\r\n parameters.indicator = $span;\r\n that._renderIndicator(parameters);\r\n $indicatorsContainer[(isGroupPanelItem || !options.showColumnLines) && \"left\" === indicatorAlignment ? \"appendTo\" : \"prependTo\"](options.rootElement);\r\n return $span\r\n },\r\n _getIndicatorClassName: _common.noop,\r\n _getColumnAlignment: function(alignment, rtlEnabled) {\r\n rtlEnabled = rtlEnabled || this.option(\"rtlEnabled\");\r\n return alignment && \"center\" !== alignment ? alignment : (0, _position.getDefaultAlignment)(rtlEnabled)\r\n },\r\n _createIndicatorContainer: function(options, ignoreIndicatorAlignment) {\r\n var $indicatorsContainer = this._getIndicatorContainer(options.rootElement);\r\n var indicatorAlignment = \"left\" === options.columnAlignment ? \"right\" : \"left\";\r\n if (!$indicatorsContainer.length) {\r\n $indicatorsContainer = (0, _renderer.default)(\"
    \").addClass(COLUMN_INDICATORS_CLASS)\r\n }\r\n this.setAria(\"role\", \"presentation\", $indicatorsContainer);\r\n return $indicatorsContainer.css(\"float\", options.showColumnLines && !ignoreIndicatorAlignment ? indicatorAlignment : null)\r\n },\r\n _getIndicatorContainer: function($cell) {\r\n return $cell && $cell.find(\".\" + COLUMN_INDICATORS_CLASS)\r\n },\r\n _getIndicatorElements: function($cell) {\r\n var $indicatorContainer = this._getIndicatorContainer($cell);\r\n return $indicatorContainer && $indicatorContainer.children()\r\n },\r\n _renderIndicator: function(options) {\r\n var $container = options.container;\r\n var $indicator = options.indicator;\r\n $container && $indicator && $container.append($indicator)\r\n },\r\n _updateIndicators: function(indicatorName) {\r\n var that = this;\r\n var columns = that.getColumns();\r\n var $cells = that.getColumnElements();\r\n var $cell;\r\n if (!$cells || columns.length !== $cells.length) {\r\n return\r\n }\r\n for (var i = 0; i < columns.length; i++) {\r\n $cell = $cells.eq(i);\r\n that._updateIndicator($cell, columns[i], indicatorName);\r\n var rowOptions = $cell.parent().data(\"options\");\r\n if (rowOptions && rowOptions.cells) {\r\n rowOptions.cells[$cell.index()].column = columns[i]\r\n }\r\n }\r\n },\r\n _updateIndicator: function($cell, column, indicatorName) {\r\n if (!column.command) {\r\n return this._applyColumnState({\r\n name: indicatorName,\r\n rootElement: $cell,\r\n column: column,\r\n showColumnLines: this.option(\"showColumnLines\")\r\n })\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/hierarchical_collection/ui.data_adapter.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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 (ui/toolbar.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _uiToolbarStrategy = _interopRequireDefault(require(\"./toolbar/ui.toolbar.strategy.action_sheet\"));\r\nvar _uiToolbarStrategy2 = _interopRequireDefault(require(\"./toolbar/ui.toolbar.strategy.drop_down_menu\"));\r\nvar _uiToolbar = _interopRequireDefault(require(\"./toolbar/ui.toolbar.base\"));\r\nvar _child_default_template = require(\"../core/templates/child_default_template\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar STRATEGIES = {\r\n actionSheet: _uiToolbarStrategy.default,\r\n dropDownMenu: _uiToolbarStrategy2.default\r\n};\r\nvar TOOLBAR_AUTO_HIDE_ITEM_CLASS = \"dx-toolbar-item-auto-hide\";\r\nvar TOOLBAR_AUTO_HIDE_TEXT_CLASS = \"dx-toolbar-text-auto-hide\";\r\nvar TOOLBAR_HIDDEN_ITEM = \"dx-toolbar-item-invisible\";\r\nvar Toolbar = _uiToolbar.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n menuItemTemplate: \"menuItem\",\r\n submenuType: \"dropDownMenu\",\r\n menuContainer: void 0\r\n })\r\n },\r\n _dimensionChanged: function(dimension) {\r\n if (\"height\" === dimension) {\r\n return\r\n }\r\n this._menuStrategy.toggleMenuVisibility(false, true);\r\n this.callBase();\r\n this._menuStrategy.renderMenuItems()\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n actionSheetItem: new _child_default_template.ChildDefaultTemplate(\"item\")\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderMenu()\r\n },\r\n _postProcessRenderItems: function() {\r\n var _this = this;\r\n this._hideOverflowItems();\r\n this._menuStrategy._updateMenuVisibility();\r\n this.callBase();\r\n (0, _common.deferRender)(function() {\r\n _this._menuStrategy.renderMenuItems()\r\n })\r\n },\r\n _renderItem: function(index, item, itemContainer, $after) {\r\n var itemElement = this.callBase(index, item, itemContainer, $after);\r\n if (\"auto\" === item.locateInMenu) {\r\n itemElement.addClass(TOOLBAR_AUTO_HIDE_ITEM_CLASS)\r\n }\r\n if (\"dxButton\" === item.widget && \"inMenu\" === item.showText) {\r\n itemElement.toggleClass(TOOLBAR_AUTO_HIDE_TEXT_CLASS)\r\n }\r\n return itemElement\r\n },\r\n _getItemsWidth: function() {\r\n return this._getSummaryItemsWidth([this._$beforeSection, this._$centerSection, this._$afterSection])\r\n },\r\n _hideOverflowItems: function(elementWidth) {\r\n var overflowItems = this.$element().find(\".\" + TOOLBAR_AUTO_HIDE_ITEM_CLASS);\r\n if (!overflowItems.length) {\r\n return\r\n }\r\n elementWidth = elementWidth || this.$element().width();\r\n (0, _renderer.default)(overflowItems).removeClass(TOOLBAR_HIDDEN_ITEM);\r\n var itemsWidth = this._getItemsWidth();\r\n while (overflowItems.length && elementWidth < itemsWidth) {\r\n var $item = overflowItems.eq(-1);\r\n itemsWidth -= $item.outerWidth();\r\n $item.addClass(TOOLBAR_HIDDEN_ITEM);\r\n overflowItems.splice(-1, 1)\r\n }\r\n },\r\n _getMenuItems: function() {\r\n var that = this;\r\n var menuItems = (0, _common.grep)(this.option(\"items\") || [], function(item) {\r\n return that._isMenuItem(item)\r\n });\r\n var $hiddenItems = this._itemContainer().children(\".\" + TOOLBAR_AUTO_HIDE_ITEM_CLASS + \".\" + TOOLBAR_HIDDEN_ITEM).not(\".dx-state-invisible\");\r\n this._restoreItems = this._restoreItems || [];\r\n var overflowItems = [].slice.call($hiddenItems).map(function(item) {\r\n var itemData = that._getItemData(item);\r\n var $itemContainer = (0, _renderer.default)(item).children();\r\n var $itemMarkup = $itemContainer.children();\r\n return (0, _extend.extend)({\r\n menuItemTemplate: function() {\r\n that._restoreItems.push({\r\n container: $itemContainer,\r\n item: $itemMarkup\r\n });\r\n var $container = (0, _renderer.default)(\"
    \").addClass(TOOLBAR_AUTO_HIDE_ITEM_CLASS);\r\n return $container.append($itemMarkup)\r\n }\r\n }, itemData)\r\n });\r\n return (0, _array.merge)(overflowItems, menuItems)\r\n },\r\n _getToolbarItems: function() {\r\n var that = this;\r\n return (0, _common.grep)(this.option(\"items\") || [], function(item) {\r\n return !that._isMenuItem(item)\r\n })\r\n },\r\n _renderMenu: function() {\r\n var _this2 = this;\r\n this._renderMenuStrategy();\r\n (0, _common.deferRender)(function() {\r\n _this2._menuStrategy.render()\r\n })\r\n },\r\n _renderMenuStrategy: function() {\r\n var strategyName = this.option(\"submenuType\");\r\n if (this._requireDropDownStrategy()) {\r\n strategyName = \"dropDownMenu\"\r\n }\r\n var strategy = STRATEGIES[strategyName];\r\n if (!(this._menuStrategy && this._menuStrategy.NAME === strategyName)) {\r\n this._menuStrategy = new strategy(this)\r\n }\r\n },\r\n _requireDropDownStrategy: function() {\r\n var items = this.option(\"items\") || [];\r\n var result = false;\r\n (0, _iterator.each)(items, function(index, item) {\r\n if (\"auto\" === item.locateInMenu) {\r\n result = true\r\n } else {\r\n if (\"always\" === item.locateInMenu && item.widget) {\r\n result = true\r\n }\r\n }\r\n });\r\n return result\r\n },\r\n _arrangeItems: function() {\r\n if (this.$element().is(\":hidden\")) {\r\n return\r\n }\r\n this._$centerSection.css({\r\n margin: \"0 auto\",\r\n \"float\": \"none\"\r\n });\r\n (0, _iterator.each)(this._restoreItems || [], function(_, obj) {\r\n (0, _renderer.default)(obj.container).append(obj.item)\r\n });\r\n this._restoreItems = [];\r\n var elementWidth = this.$element().width();\r\n this._hideOverflowItems(elementWidth);\r\n this.callBase(elementWidth)\r\n },\r\n _itemOptionChanged: function(item, property, value) {\r\n if (this._isMenuItem(item)) {\r\n this._menuStrategy.renderMenuItems()\r\n } else {\r\n if (this._isToolbarItem(item)) {\r\n this.callBase(item, property, value)\r\n } else {\r\n this.callBase(item, property, value);\r\n this._menuStrategy.renderMenuItems()\r\n }\r\n }\r\n if (\"location\" === property) {\r\n this.repaint()\r\n }\r\n },\r\n _isMenuItem: function(itemData) {\r\n return \"menu\" === itemData.location || \"always\" === itemData.locateInMenu\r\n },\r\n _isToolbarItem: function(itemData) {\r\n return void 0 === itemData.location || \"never\" === itemData.locateInMenu\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name;\r\n var value = args.value;\r\n switch (name) {\r\n case \"submenuType\":\r\n this._invalidate();\r\n break;\r\n case \"visible\":\r\n this.callBase.apply(this, arguments);\r\n this._menuStrategy.handleToolbarVisibilityChange(value);\r\n break;\r\n case \"menuItemTemplate\":\r\n this._changeMenuOption(\"itemTemplate\", this._getTemplate(value));\r\n break;\r\n case \"onItemClick\":\r\n this._changeMenuOption(name, value);\r\n this.callBase.apply(this, arguments);\r\n break;\r\n case \"menuContainer\":\r\n this._changeMenuOption(\"container\", value);\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _changeMenuOption: function(name, value) {\r\n this._menuStrategy.widgetOption(name, value)\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxToolbar\", Toolbar);\r\nvar _default = Toolbar;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (localization/language_codes.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _toolbar = _interopRequireDefault(require(\"../toolbar\"));\r\nvar _uiGrid_core = require(\"./ui.grid_core.columns_view\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _visibility_change = require(\"../../events/visibility_change\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nrequire(\"../drop_down_menu\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar HEADER_PANEL_CLASS = \"header-panel\";\r\nvar TOOLBAR_BUTTON_CLASS = \"toolbar-button\";\r\nvar TOOLBAR_ARIA_LABEL = \"-ariaToolbar\";\r\nvar HeaderPanel = _uiGrid_core.ColumnsView.inherit({\r\n _getToolbarItems: function() {\r\n return []\r\n },\r\n _getButtonContainer: function() {\r\n return (0, _renderer.default)(\"
    \").addClass(this.addWidgetPrefix(TOOLBAR_BUTTON_CLASS))\r\n },\r\n _getToolbarButtonClass: function(specificClass) {\r\n var secondClass = specificClass ? \" \" + specificClass : \"\";\r\n return this.addWidgetPrefix(TOOLBAR_BUTTON_CLASS) + secondClass\r\n },\r\n _getToolbarOptions: function() {\r\n var options = {\r\n toolbarOptions: {\r\n items: this._getToolbarItems(),\r\n onItemRendered: function(e) {\r\n var itemRenderedCallback = e.itemData.onItemRendered;\r\n if (itemRenderedCallback) {\r\n itemRenderedCallback(e)\r\n }\r\n }\r\n }\r\n };\r\n this.executeAction(\"onToolbarPreparing\", options);\r\n if (options.toolbarOptions && !(0, _type.isDefined)(options.toolbarOptions.visible)) {\r\n var toolbarItems = options.toolbarOptions.items;\r\n options.toolbarOptions.visible = !!(toolbarItems && toolbarItems.length)\r\n }\r\n return options.toolbarOptions\r\n },\r\n _renderCore: function() {\r\n if (!this._toolbar) {\r\n var $headerPanel = this.element();\r\n $headerPanel.addClass(this.addWidgetPrefix(HEADER_PANEL_CLASS));\r\n var label = _message.default.format(this.component.NAME + TOOLBAR_ARIA_LABEL);\r\n var $toolbar = (0, _renderer.default)(\"
    \").attr(\"aria-label\", label).appendTo($headerPanel);\r\n this._toolbar = this._createComponent($toolbar, _toolbar.default, this._toolbarOptions)\r\n } else {\r\n this._toolbar.option(this._toolbarOptions)\r\n }\r\n },\r\n _columnOptionChanged: _common.noop,\r\n _handleDataChanged: function() {\r\n if (this._requireReady) {\r\n this.render()\r\n }\r\n },\r\n init: function() {\r\n this.callBase();\r\n this.createAction(\"onToolbarPreparing\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n render: function() {\r\n this._toolbarOptions = this._getToolbarOptions();\r\n this.callBase.apply(this, arguments)\r\n },\r\n setToolbarItemDisabled: function(name, optionValue) {\r\n var toolbarInstance = this._toolbar;\r\n if (toolbarInstance) {\r\n var items = toolbarInstance.option(\"items\") || [];\r\n var itemIndex = items.indexOf(items.filter(function(item) {\r\n return item.name === name\r\n })[0]);\r\n if (itemIndex >= 0) {\r\n var itemOptionPrefix = \"items[\" + itemIndex + \"]\";\r\n if (toolbarInstance.option(itemOptionPrefix + \".options\")) {\r\n toolbarInstance.option(itemOptionPrefix + \".options.disabled\", optionValue)\r\n } else {\r\n toolbarInstance.option(itemOptionPrefix + \".disabled\", optionValue)\r\n }\r\n }\r\n }\r\n },\r\n updateToolbarDimensions: function() {\r\n if (this._toolbar) {\r\n (0, _visibility_change.triggerResizeEvent)(this.getHeaderPanel())\r\n }\r\n },\r\n getHeaderPanel: function() {\r\n return this.element()\r\n },\r\n getHeight: function() {\r\n return this.getElementHeight()\r\n },\r\n optionChanged: function(args) {\r\n if (\"onToolbarPreparing\" === args.name) {\r\n this._invalidate();\r\n args.handled = true\r\n }\r\n this.callBase(args)\r\n },\r\n isVisible: function() {\r\n return this._toolbarOptions && this._toolbarOptions.visible\r\n },\r\n allowDragging: _common.noop\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {}\r\n },\r\n views: {\r\n headerPanel: HeaderPanel\r\n },\r\n extenders: {\r\n controllers: {\r\n resizing: {\r\n _updateDimensionsCore: function() {\r\n this.callBase.apply(this, arguments);\r\n this.getView(\"headerPanel\").updateToolbarDimensions()\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.filter_row.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.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\n\r\nfunction shouldPreventScroll(that) {\r\n var keyboardController = that.getController(\"keyboardNavigation\");\r\n return keyboardController._isVirtualScrolling() ? that.option(\"focusedRowIndex\") === keyboardController.getRowIndex() : false\r\n}\r\nvar KeyboardNavigationController = _uiGrid_core.default.ViewController.inherit({\r\n init: function() {\r\n var _this = this;\r\n this._dataController = this.getController(\"data\");\r\n this._selectionController = this.getController(\"selection\");\r\n this._editingController = this.getController(\"editing\");\r\n this._headerPanel = this.getView(\"headerPanel\");\r\n this._columnsController = this.getController(\"columns\");\r\n this._editorFactory = this.getController(\"editorFactory\");\r\n if (this.isKeyboardEnabled()) {\r\n accessibility.subscribeVisibilityChange();\r\n this._updateFocusTimeout = null;\r\n this._fastEditingStarted = false;\r\n this._focusedCellPosition = {};\r\n this._canceledCellPosition = null;\r\n var elementFocused = function($element) {\r\n _this.setupFocusedView();\r\n if (_this._isNeedScroll) {\r\n if ($element.is(\":visible\") && _this._focusedView && _this._focusedView.getScrollable) {\r\n _this._focusedView._scrollToElement($element);\r\n _this._isNeedScroll = false\r\n }\r\n }\r\n };\r\n this._editorFactory.focused.add(elementFocused);\r\n this._initViewHandlers();\r\n this._initDocumentHandlers();\r\n this.createAction(\"onKeyDown\")\r\n }\r\n },\r\n _initViewHandlers: function() {\r\n var _this2 = this;\r\n var rowsView = this.getView(\"rowsView\");\r\n var rowsViewFocusHandler = function(event) {\r\n var $element = (0, _renderer.default)(event.target);\r\n var isRelatedTargetInRowsView = (0, _renderer.default)(event.relatedTarget).closest(rowsView.element()).length;\r\n var isCommandButton = $element.hasClass(\"dx-link\");\r\n if (isCommandButton && !isRelatedTargetInRowsView && _this2._isEventInCurrentGrid(event)) {\r\n var $focusedCell = _this2._getFocusedCell();\r\n $focusedCell = !isElementDefined($focusedCell) ? rowsView.getCellElements(0).filter(\"[tabindex]\").eq(0) : $focusedCell;\r\n if (!$element.closest($focusedCell).length) {\r\n event.preventDefault();\r\n _events_engine.default.trigger($focusedCell, \"focus\")\r\n }\r\n }\r\n };\r\n rowsView.renderCompleted.add(function(e) {\r\n var $rowsView = rowsView.element();\r\n var isFullUpdate = !e || \"refresh\" === e.changeType;\r\n var isFocusedViewCorrect = _this2._focusedView && _this2._focusedView.name === rowsView.name;\r\n var needUpdateFocus = false;\r\n var isAppend = e && (\"append\" === e.changeType || \"prepend\" === e.changeType);\r\n var $focusedElement = (0, _renderer.default)(\":focus\");\r\n var isFocusedElementCorrect = !$focusedElement.length || $focusedElement.closest($rowsView).length || _browser.default.msie && $focusedElement.is(\"body\");\r\n _events_engine.default.off($rowsView, \"focusin\", rowsViewFocusHandler);\r\n _events_engine.default.on($rowsView, \"focusin\", rowsViewFocusHandler);\r\n _this2._initPointerEventHandler();\r\n _this2._initKeyDownHandler();\r\n _this2._setRowsViewAttributes();\r\n if (isFocusedViewCorrect && isFocusedElementCorrect) {\r\n needUpdateFocus = _this2._isNeedFocus ? !isAppend : _this2._isHiddenFocus && isFullUpdate;\r\n needUpdateFocus && _this2._updateFocus(true)\r\n }\r\n })\r\n },\r\n _initDocumentHandlers: function() {\r\n var _this3 = this;\r\n var document = _dom_adapter.default.getDocument();\r\n this._documentClickHandler = this.createAction(function(e) {\r\n var $target = (0, _renderer.default)(e.event.target);\r\n var isCurrentRowsViewClick = _this3._isEventInCurrentGrid(e.event) && $target.closest(\".\".concat(_this3.addWidgetPrefix(ROWS_VIEW_CLASS))).length;\r\n var isEditorOverlay = $target.closest(\".\".concat(DROPDOWN_EDITOR_OVERLAY_CLASS)).length;\r\n var columnsResizerController = _this3.getController(\"columnsResizer\");\r\n var isColumnResizing = !!columnsResizerController && columnsResizerController.isResizing();\r\n if (!isCurrentRowsViewClick && !isEditorOverlay && !isColumnResizing) {\r\n var targetInsideFocusedView = _this3._focusedView ? $target.parents().filter(_this3._focusedView.element()).length > 0 : false;\r\n !targetInsideFocusedView && _this3._resetFocusedCell(true);\r\n _this3._resetFocusedView()\r\n }\r\n });\r\n _events_engine.default.on(document, (0, _index.addNamespace)(_pointer.default.down, \"dxDataGridKeyboardNavigation\"), this._documentClickHandler)\r\n },\r\n _setRowsViewAttributes: function() {\r\n var $rowsView = this._getRowsViewElement();\r\n var isGridEmpty = !this._dataController.getVisibleRows().length;\r\n if (isGridEmpty) {\r\n this._applyTabIndexToElement($rowsView)\r\n }\r\n },\r\n _initPointerEventHandler: function() {\r\n var pointerEventName = !isMobile() ? _pointer.default.down : _click.name;\r\n var clickSelector = \".\".concat(ROW_CLASS, \" > td, .\").concat(ROW_CLASS);\r\n var $rowsView = this._getRowsViewElement();\r\n if (!(0, _type.isDefined)(this._pointerEventAction)) {\r\n this._pointerEventAction = this.createAction(this._pointerEventHandler)\r\n }\r\n _events_engine.default.off($rowsView, (0, _index.addNamespace)(pointerEventName, \"dxDataGridKeyboardNavigation\"), this._pointerEventAction);\r\n _events_engine.default.on($rowsView, (0, _index.addNamespace)(pointerEventName, \"dxDataGridKeyboardNavigation\"), clickSelector, this._pointerEventAction)\r\n },\r\n _initKeyDownHandler: function() {\r\n var _this4 = this;\r\n var $rowsView = this._getRowsViewElement();\r\n _short.keyboard.off(this._keyDownListener);\r\n this._keyDownListener = _short.keyboard.on($rowsView, null, function(e) {\r\n return _this4._keyDownHandler(e)\r\n })\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n this._resetFocusedView();\r\n _short.keyboard.off(this._keyDownListener);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.down, \"dxDataGridKeyboardNavigation\"), this._documentClickHandler);\r\n clearTimeout(this._updateFocusTimeout);\r\n accessibility.unsubscribeVisibilityChange()\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"keyboardNavigation\":\r\n case \"useLegacyKeyboardNavigation\":\r\n args.handled = true;\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n },\r\n isRowFocusType: function() {\r\n return this.focusType === FOCUS_TYPE_ROW\r\n },\r\n isCellFocusType: function() {\r\n return this.focusType === FOCUS_TYPE_CELL\r\n },\r\n setRowFocusType: function() {\r\n if (this.option(\"focusedRowEnabled\")) {\r\n this.focusType = FOCUS_TYPE_ROW\r\n }\r\n },\r\n setCellFocusType: function() {\r\n this.focusType = FOCUS_TYPE_CELL\r\n },\r\n _keyDownHandler: function(e) {\r\n var isEditing = this._editingController.isEditing();\r\n var needStopPropagation = true;\r\n var originalEvent = e.originalEvent;\r\n var isHandled = this._processOnKeyDown(e);\r\n if (originalEvent.isDefaultPrevented()) {\r\n return\r\n }\r\n this._isNeedFocus = true;\r\n this._isNeedScroll = true;\r\n this._updateFocusedCellPositionByTarget(originalEvent.target);\r\n if (!isHandled) {\r\n switch (e.keyName) {\r\n case \"leftArrow\":\r\n case \"rightArrow\":\r\n this._leftRightKeysHandler(e, isEditing);\r\n break;\r\n case \"upArrow\":\r\n case \"downArrow\":\r\n if (e.ctrl) {\r\n accessibility.selectView(\"rowsView\", this, originalEvent)\r\n } else {\r\n this._upDownKeysHandler(e, isEditing)\r\n }\r\n break;\r\n case \"pageUp\":\r\n case \"pageDown\":\r\n this._pageUpDownKeyHandler(e);\r\n break;\r\n case \"space\":\r\n this._spaceKeyHandler(e, isEditing);\r\n break;\r\n case \"A\":\r\n if (e.ctrl) {\r\n this._ctrlAKeyHandler(e, isEditing)\r\n } else {\r\n this._beginFastEditing(e.originalEvent)\r\n }\r\n break;\r\n case \"tab\":\r\n this._tabKeyHandler(e, isEditing);\r\n break;\r\n case \"enter\":\r\n this._enterKeyHandler(e, isEditing);\r\n break;\r\n case \"escape\":\r\n this._escapeKeyHandler(e, isEditing);\r\n break;\r\n case \"F\":\r\n if (e.ctrl) {\r\n this._ctrlFKeyHandler(e)\r\n } else {\r\n this._beginFastEditing(e.originalEvent)\r\n }\r\n break;\r\n case \"F2\":\r\n this._f2KeyHandler();\r\n break;\r\n case \"del\":\r\n case \"backspace\":\r\n if (this._isFastEditingAllowed() && !this._isFastEditingStarted()) {\r\n this._beginFastEditing(originalEvent, true)\r\n }\r\n break;\r\n default:\r\n if (!this._beginFastEditing(originalEvent)) {\r\n this._isNeedFocus = false;\r\n this._isNeedScroll = false;\r\n needStopPropagation = false\r\n }\r\n }\r\n if (needStopPropagation) {\r\n originalEvent.stopPropagation()\r\n }\r\n }\r\n },\r\n _processOnKeyDown: function(eventArgs) {\r\n var originalEvent = eventArgs.originalEvent;\r\n var args = {\r\n handled: false,\r\n event: originalEvent\r\n };\r\n this.executeAction(\"onKeyDown\", args);\r\n eventArgs.ctrl = originalEvent.ctrlKey;\r\n eventArgs.alt = originalEvent.altKey;\r\n eventArgs.shift = originalEvent.shiftKey;\r\n return !!args.handled\r\n },\r\n _closeEditCell: function() {\r\n var _this5 = this;\r\n setTimeout(function() {\r\n _this5._editingController.closeEditCell()\r\n })\r\n },\r\n _leftRightKeysHandler: function(eventArgs, isEditing) {\r\n var rowIndex = this.getVisibleRowIndex();\r\n var $event = eventArgs.originalEvent;\r\n var $row = this._focusedView && this._focusedView.getRow(rowIndex);\r\n var directionCode = this._getDirectionCodeByKey(eventArgs.keyName);\r\n var isEditingNavigationMode = this._isFastEditingStarted();\r\n var allowNavigate = (!isEditing || isEditingNavigationMode) && isDataRow($row);\r\n if (allowNavigate) {\r\n this.setCellFocusType();\r\n isEditingNavigationMode && this._closeEditCell();\r\n if (this._isVirtualColumnRender()) {\r\n this._processVirtualHorizontalPosition(directionCode)\r\n }\r\n var $cell = this._getNextCell(directionCode);\r\n if (isElementDefined($cell)) {\r\n this._arrowKeysHandlerFocusCell($event, $cell, directionCode)\r\n }\r\n $event && $event.preventDefault()\r\n }\r\n },\r\n _upDownKeysHandler: function(eventArgs, isEditing) {\r\n var rowIndex = this._focusedCellPosition.rowIndex;\r\n var visibleRowIndex = this.getVisibleRowIndex();\r\n var $row = this._focusedView && this._focusedView.getRow(visibleRowIndex);\r\n var $event = eventArgs.originalEvent;\r\n var isUpArrow = \"upArrow\" === eventArgs.keyName;\r\n var dataSource = this._dataController.dataSource();\r\n var isEditingNavigationMode = this._isFastEditingStarted();\r\n var allowNavigate = (!isEditing || isEditingNavigationMode) && $row && !isDetailRow($row);\r\n if (allowNavigate) {\r\n isEditingNavigationMode && this._closeEditCell();\r\n if (!this._navigateNextCell($event, eventArgs.keyName)) {\r\n if (this._isVirtualRowRender() && isUpArrow && dataSource && !dataSource.isLoading()) {\r\n var rowHeight = $row.outerHeight();\r\n rowIndex = this._focusedCellPosition.rowIndex - 1;\r\n this._scrollBy(0, -rowHeight, rowIndex, $event)\r\n }\r\n }\r\n $event && $event.preventDefault()\r\n }\r\n },\r\n _pageUpDownKeyHandler: function(eventArgs) {\r\n var pageIndex = this._dataController.pageIndex();\r\n var pageCount = this._dataController.pageCount();\r\n var pagingEnabled = this.option(\"paging.enabled\");\r\n var isPageUp = \"pageUp\" === eventArgs.keyName;\r\n var pageStep = isPageUp ? -1 : 1;\r\n var scrollable = this.getView(\"rowsView\").getScrollable();\r\n if (pagingEnabled && !this._isVirtualScrolling()) {\r\n if ((isPageUp ? pageIndex > 0 : pageIndex < pageCount - 1) && !this._isVirtualScrolling()) {\r\n this._dataController.pageIndex(pageIndex + pageStep);\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n } else {\r\n if (scrollable && scrollable._container().height() < scrollable.$content().height()) {\r\n this._scrollBy(0, scrollable._container().height() * pageStep);\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n }\r\n },\r\n _spaceKeyHandler: function(eventArgs, isEditing) {\r\n var rowIndex = this.getVisibleRowIndex();\r\n var $target = (0, _renderer.default)(eventArgs.originalEvent && eventArgs.originalEvent.target);\r\n if (this.option(\"selection\") && \"none\" !== this.option(\"selection\").mode && !isEditing) {\r\n var isFocusedRowElement = \"row\" === this._getElementType($target) && this.isRowFocusType() && isDataRow($target);\r\n var isFocusedSelectionCell = $target.hasClass(COMMAND_SELECT_CLASS);\r\n if (isFocusedSelectionCell && \"onClick\" === this.option(\"selection.showCheckBoxesMode\")) {\r\n this._selectionController.startSelectionWithCheckboxes()\r\n }\r\n if (isFocusedRowElement || $target.parent().hasClass(DATA_ROW_CLASS) || $target.hasClass(this.addWidgetPrefix(ROWS_VIEW_CLASS))) {\r\n this._selectionController.changeItemSelection(rowIndex, {\r\n shift: eventArgs.shift,\r\n control: eventArgs.ctrl\r\n });\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n } else {\r\n this._beginFastEditing(eventArgs.originalEvent)\r\n }\r\n },\r\n _ctrlAKeyHandler: function(eventArgs, isEditing) {\r\n if (!isEditing && eventArgs.ctrl && !eventArgs.alt && \"multiple\" === this.option(\"selection.mode\") && this.option(\"selection.allowSelectAll\")) {\r\n this._selectionController.selectAll();\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n },\r\n _tabKeyHandler: function(eventArgs, isEditing) {\r\n var editingOptions = this.option(\"editing\");\r\n var direction = eventArgs.shift ? \"previous\" : \"next\";\r\n var isCellPositionDefined = (0, _type.isDefined)(this._focusedCellPosition) && !(0, _type.isEmptyObject)(this._focusedCellPosition);\r\n var isOriginalHandlerRequired = !isCellPositionDefined || !eventArgs.shift && this._isLastValidCell(this._focusedCellPosition) || eventArgs.shift && this._isFirstValidCell(this._focusedCellPosition);\r\n var eventTarget = eventArgs.originalEvent.target;\r\n var focusedViewElement = this._focusedView && this._focusedView.element();\r\n if (this._handleTabKeyOnMasterDetailCell(eventTarget, direction)) {\r\n return\r\n }(0, _renderer.default)(focusedViewElement).addClass(FOCUS_STATE_CLASS);\r\n if (editingOptions && eventTarget && !isOriginalHandlerRequired) {\r\n if ((0, _renderer.default)(eventTarget).hasClass(this.addWidgetPrefix(ROWS_VIEW_CLASS))) {\r\n this._resetFocusedCell()\r\n }\r\n if (this._isVirtualColumnRender()) {\r\n this._processVirtualHorizontalPosition(direction)\r\n }\r\n if (isEditing) {\r\n if (!this._editingCellTabHandler(eventArgs, direction)) {\r\n return\r\n }\r\n } else {\r\n if (this._targetCellTabHandler(eventArgs, direction)) {\r\n isOriginalHandlerRequired = true\r\n }\r\n }\r\n }\r\n if (isOriginalHandlerRequired) {\r\n this._editorFactory.loseFocus();\r\n if (this._editingController.isEditing() && !this._isRowEditMode()) {\r\n this._resetFocusedCell(true);\r\n this._resetFocusedView();\r\n this._closeEditCell()\r\n }\r\n } else {\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n },\r\n _getMaxHorizontalOffset: function() {\r\n var scrollable = this.component.getScrollable();\r\n var rowsView = this.getView(\"rowsView\");\r\n var offset = scrollable ? scrollable.scrollWidth() - (0, _renderer.default)(rowsView.element()).width() : 0;\r\n return offset\r\n },\r\n _isColumnRendered: function(columnIndex) {\r\n var allVisibleColumns = this._columnsController.getVisibleColumns(null, true);\r\n var renderedVisibleColumns = this._columnsController.getVisibleColumns();\r\n var column = allVisibleColumns[columnIndex];\r\n var result = false;\r\n if (column) {\r\n result = renderedVisibleColumns.indexOf(column) >= 0\r\n }\r\n return result\r\n },\r\n _isFixedColumn: function(columnIndex) {\r\n var allVisibleColumns = this._columnsController.getVisibleColumns(null, true);\r\n var column = allVisibleColumns[columnIndex];\r\n return !!column && !!column.fixed\r\n },\r\n _isColumnVirtual: function(columnIndex) {\r\n var localColumnIndex = columnIndex - this._columnsController.getColumnIndexOffset();\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var column = visibleColumns[localColumnIndex];\r\n return !!column && \"virtual\" === column.command\r\n },\r\n _processVirtualHorizontalPosition: function(direction) {\r\n var scrollable = this.component.getScrollable();\r\n var columnIndex = this.getColumnIndex();\r\n var nextColumnIndex;\r\n var horizontalScrollPosition = 0;\r\n var needToScroll = false;\r\n switch (direction) {\r\n case \"next\":\r\n case \"nextInRow\":\r\n var columnsCount = this._getVisibleColumnCount();\r\n nextColumnIndex = columnIndex + 1;\r\n horizontalScrollPosition = this.option(\"rtlEnabled\") ? this._getMaxHorizontalOffset() : 0;\r\n if (\"next\" === direction) {\r\n needToScroll = columnsCount === nextColumnIndex || this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)\r\n } else {\r\n needToScroll = columnsCount > nextColumnIndex && this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)\r\n }\r\n break;\r\n case \"previous\":\r\n case \"previousInRow\":\r\n nextColumnIndex = columnIndex - 1;\r\n horizontalScrollPosition = this.option(\"rtlEnabled\") ? 0 : this._getMaxHorizontalOffset();\r\n if (\"previous\" === direction) {\r\n var columnIndexOffset = this._columnsController.getColumnIndexOffset();\r\n var leftEdgePosition = nextColumnIndex < 0 && 0 === columnIndexOffset;\r\n needToScroll = leftEdgePosition || this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)\r\n } else {\r\n needToScroll = nextColumnIndex >= 0 && this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)\r\n }\r\n }\r\n if (needToScroll) {\r\n scrollable.scrollTo({\r\n left: horizontalScrollPosition\r\n })\r\n } else {\r\n if ((0, _type.isDefined)(nextColumnIndex) && (0, _type.isDefined)(direction) && this._isColumnVirtual(nextColumnIndex)) {\r\n horizontalScrollPosition = this._getHorizontalScrollPositionOffset(direction);\r\n 0 !== horizontalScrollPosition && scrollable.scrollBy({\r\n left: horizontalScrollPosition,\r\n top: 0\r\n })\r\n }\r\n }\r\n },\r\n _getHorizontalScrollPositionOffset: function(direction) {\r\n var positionOffset = 0;\r\n var $currentCell = this._getCell(this._focusedCellPosition);\r\n var currentCellWidth = $currentCell && $currentCell.outerWidth();\r\n if (currentCellWidth > 0) {\r\n var rtlMultiplier = this.option(\"rtlEnabled\") ? -1 : 1;\r\n positionOffset = \"nextInRow\" === direction || \"next\" === direction ? currentCellWidth * rtlMultiplier : currentCellWidth * rtlMultiplier * -1\r\n }\r\n return positionOffset\r\n },\r\n _editingCellTabHandler: function(eventArgs, direction) {\r\n var eventTarget = eventArgs.originalEvent.target;\r\n var $cell = this._getCellElementFromTarget(eventTarget);\r\n var isEditingAllowed;\r\n var $event = eventArgs.originalEvent;\r\n var elementType = this._getElementType(eventTarget);\r\n if ($cell.is(COMMAND_CELL_SELECTOR)) {\r\n return !this._targetCellTabHandler(eventArgs, direction)\r\n }\r\n this._updateFocusedCellPosition($cell);\r\n var nextCellInfo = this._getNextCellByTabKey($event, direction, elementType);\r\n $cell = nextCellInfo.$cell;\r\n if (!$cell || this._handleTabKeyOnMasterDetailCell($cell, direction)) {\r\n return false\r\n }\r\n var columnsController = this._columnsController;\r\n var cellIndex = this.getView(\"rowsView\").getCellIndex($cell);\r\n var columnIndex = cellIndex + columnsController.getColumnIndexOffset();\r\n var column = columnsController.getVisibleColumns(null, true)[columnIndex];\r\n var $row = $cell && $cell.parent();\r\n var rowIndex = this._getRowIndex($row);\r\n var row = this._dataController.items()[rowIndex];\r\n var editingController = this._editingController;\r\n if (column && column.allowEditing) {\r\n var _isDataRow = !row || \"data\" === row.rowType;\r\n isEditingAllowed = editingController.allowUpdating({\r\n row: row\r\n }) ? _isDataRow : row && row.isNewRow\r\n }\r\n if (!isEditingAllowed) {\r\n this._closeEditCell()\r\n }\r\n if (this._focusCell($cell, !nextCellInfo.isHighlighted)) {\r\n if (!this._isRowEditMode() && isEditingAllowed) {\r\n this._editFocusedCell()\r\n } else {\r\n this._focusInteractiveElement($cell, eventArgs.shift)\r\n }\r\n }\r\n return true\r\n },\r\n _targetCellTabHandler: function(eventArgs, direction) {\r\n var $event = eventArgs.originalEvent;\r\n var eventTarget = $event.target;\r\n var $cell = this._getCellElementFromTarget(eventTarget);\r\n var $lastInteractiveElement = this._getInteractiveElement($cell, !eventArgs.shift);\r\n var isOriginalHandlerRequired = false;\r\n var elementType;\r\n if (!isEditorCell(this, $cell) && $lastInteractiveElement.length && eventTarget !== $lastInteractiveElement.get(0)) {\r\n isOriginalHandlerRequired = true\r\n } else {\r\n if (void 0 === this._focusedCellPosition.rowIndex && (0, _renderer.default)(eventTarget).hasClass(ROW_CLASS)) {\r\n this._updateFocusedCellPosition($cell)\r\n }\r\n elementType = this._getElementType(eventTarget);\r\n if (this.isRowFocusType()) {\r\n this.setCellFocusType();\r\n if (\"row\" === elementType && isDataRow((0, _renderer.default)(eventTarget))) {\r\n eventTarget = this.getFirstValidCellInRow((0, _renderer.default)(eventTarget));\r\n elementType = this._getElementType(eventTarget)\r\n }\r\n }\r\n var nextCellInfo = this._getNextCellByTabKey($event, direction, elementType);\r\n $cell = nextCellInfo.$cell;\r\n if (!$cell) {\r\n return false\r\n }\r\n $cell = this._checkNewLineTransition($event, $cell);\r\n if (!$cell) {\r\n return false\r\n }\r\n this._focusCell($cell, !nextCellInfo.isHighlighted);\r\n if (!isEditorCell(this, $cell)) {\r\n this._focusInteractiveElement($cell, eventArgs.shift)\r\n }\r\n }\r\n return isOriginalHandlerRequired\r\n },\r\n _getNextCellByTabKey: function($event, direction, elementType) {\r\n var $cell = this._getNextCell(direction, elementType);\r\n var args = $cell && this._fireFocusedCellChanging($event, $cell, true);\r\n if (!args || args.cancel) {\r\n return {}\r\n }\r\n if (args.$newCellElement) {\r\n $cell = args.$newCellElement\r\n }\r\n return {\r\n $cell: $cell,\r\n isHighlighted: args.isHighlighted\r\n }\r\n },\r\n _checkNewLineTransition: function($event, $cell) {\r\n var rowIndex = this.getVisibleRowIndex();\r\n var $row = $cell.parent();\r\n if (rowIndex !== this._getRowIndex($row)) {\r\n var cellPosition = this._getCellPosition($cell);\r\n var args = this._fireFocusedRowChanging($event, $row);\r\n if (args.cancel) {\r\n return\r\n }\r\n if (args.rowIndexChanged) {\r\n this.setFocusedColumnIndex(cellPosition.columnIndex);\r\n $cell = this._getFocusedCell()\r\n }\r\n }\r\n return $cell\r\n },\r\n _enterKeyHandler: function(eventArgs, isEditing) {\r\n var $cell = this._getFocusedCell();\r\n var rowIndex = this.getVisibleRowIndex();\r\n var $row = this._focusedView && this._focusedView.getRow(rowIndex);\r\n if (this.option(\"grouping.allowCollapsing\") && isGroupRow($row) || this.option(\"masterDetail.enabled\") && $cell && $cell.hasClass(COMMAND_EXPAND_CLASS)) {\r\n var key = this._dataController.getKeyByRowIndex(rowIndex);\r\n var item = this._dataController.items()[rowIndex];\r\n if (void 0 !== key && item && item.data && !item.data.isContinuation) {\r\n this._dataController.changeRowExpand(key)\r\n }\r\n } else {\r\n this._processEnterKeyForDataCell(eventArgs, isEditing)\r\n }\r\n },\r\n _processEnterKeyForDataCell: function(eventArgs, isEditing) {\r\n var direction = this._getEnterKeyDirection(eventArgs);\r\n var allowEditingOnEnterKey = this._allowEditingOnEnterKey();\r\n if (isEditing || !allowEditingOnEnterKey && direction) {\r\n this._handleEnterKeyEditingCell(eventArgs.originalEvent);\r\n if (\"next\" === direction || \"previous\" === direction) {\r\n this._targetCellTabHandler(eventArgs, direction)\r\n } else {\r\n if (\"upArrow\" === direction || \"downArrow\" === direction) {\r\n this._navigateNextCell(eventArgs.originalEvent, direction)\r\n }\r\n }\r\n } else {\r\n if (allowEditingOnEnterKey) {\r\n this._startEditing(eventArgs)\r\n }\r\n }\r\n },\r\n _getEnterKeyDirection: function(eventArgs) {\r\n var enterKeyDirection = this.option(\"keyboardNavigation.enterKeyDirection\");\r\n var isShift = eventArgs.shift;\r\n if (\"column\" === enterKeyDirection) {\r\n return isShift ? \"upArrow\" : \"downArrow\"\r\n }\r\n if (\"row\" === enterKeyDirection) {\r\n return isShift ? \"previous\" : \"next\"\r\n }\r\n },\r\n _handleEnterKeyEditingCell: function(event) {\r\n var target = event.target;\r\n var $cell = this._getCellElementFromTarget(target);\r\n var isRowEditMode = this._isRowEditMode();\r\n this._updateFocusedCellPosition($cell);\r\n if (isRowEditMode) {\r\n this._focusEditFormCell($cell);\r\n setTimeout(this._editingController.saveEditData.bind(this._editingController))\r\n } else {\r\n _events_engine.default.trigger((0, _renderer.default)(target), \"change\");\r\n this._closeEditCell();\r\n event.preventDefault()\r\n }\r\n },\r\n _escapeKeyHandler: function(eventArgs, isEditing) {\r\n var $cell = this._getCellElementFromTarget(eventArgs.originalEvent.target);\r\n if (isEditing) {\r\n this._updateFocusedCellPosition($cell);\r\n if (!this._isRowEditMode()) {\r\n if (\"cell\" === this._editingController.getEditMode()) {\r\n this._editingController.cancelEditData()\r\n } else {\r\n this._closeEditCell()\r\n }\r\n } else {\r\n this._focusEditFormCell($cell);\r\n this._editingController.cancelEditData();\r\n if (0 === this._dataController.items().length) {\r\n this._resetFocusedCell();\r\n this._editorFactory.loseFocus()\r\n }\r\n }\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n },\r\n _ctrlFKeyHandler: function(eventArgs) {\r\n if (this.option(\"searchPanel.visible\")) {\r\n var searchTextEditor = this._headerPanel.getSearchTextEditor();\r\n if (searchTextEditor) {\r\n searchTextEditor.focus();\r\n eventArgs.originalEvent.preventDefault()\r\n }\r\n }\r\n },\r\n _f2KeyHandler: function() {\r\n var isEditing = this._editingController.isEditing();\r\n var rowIndex = this.getVisibleRowIndex();\r\n var $row = this._focusedView && this._focusedView.getRow(rowIndex);\r\n if (!isEditing && isDataRow($row)) {\r\n this._startEditing()\r\n }\r\n },\r\n _navigateNextCell: function($event, keyCode) {\r\n var $cell = this._getNextCell(keyCode);\r\n var directionCode = this._getDirectionCodeByKey(keyCode);\r\n var isCellValid = $cell && this._isCellValid($cell);\r\n var result = isCellValid ? this._arrowKeysHandlerFocusCell($event, $cell, directionCode) : false;\r\n return result\r\n },\r\n _arrowKeysHandlerFocusCell: function($event, $nextCell, direction) {\r\n var isVerticalDirection = \"prevRow\" === direction || \"nextRow\" === direction;\r\n var args = this._fireFocusChangingEvents($event, $nextCell, isVerticalDirection, true);\r\n $nextCell = args.$newCellElement;\r\n if (!args.cancel && this._isCellValid($nextCell)) {\r\n this._focus($nextCell, !args.isHighlighted);\r\n return true\r\n }\r\n return false\r\n },\r\n _beginFastEditing: function(originalEvent, isDeleting) {\r\n if (!this._isFastEditingAllowed() || originalEvent.altKey || originalEvent.ctrlKey || this._editingController.isEditing()) {\r\n return false\r\n }\r\n if (isDeleting) {\r\n this._startEditing(originalEvent, FAST_EDITING_DELETE_KEY)\r\n } else {\r\n var key = originalEvent.key;\r\n var keyCode = originalEvent.keyCode || originalEvent.which;\r\n var fastEditingKey = key || keyCode && String.fromCharCode(keyCode);\r\n if (fastEditingKey && (1 === fastEditingKey.length || fastEditingKey === FAST_EDITING_DELETE_KEY)) {\r\n this._startEditing(originalEvent, fastEditingKey)\r\n }\r\n }\r\n return true\r\n },\r\n _pointerEventHandler: function(e) {\r\n var event = e.event || e;\r\n var $target = (0, _renderer.default)(event.currentTarget);\r\n var rowsView = this.getView(\"rowsView\");\r\n var focusedViewElement = rowsView && rowsView.element();\r\n var $parent = $target.parent();\r\n var isInteractiveElement = (0, _renderer.default)(event.target).is(INTERACTIVE_ELEMENTS_SELECTOR);\r\n var isRevertButton = !!(0, _renderer.default)(event.target).closest(\".\".concat(REVERT_BUTTON_CLASS)).length;\r\n var isExpandCommandCell = $target.hasClass(COMMAND_EXPAND_CLASS);\r\n if (!this._isEventInCurrentGrid(event)) {\r\n return\r\n }\r\n if (!isRevertButton && (this._isCellValid($target, !isInteractiveElement) || isExpandCommandCell)) {\r\n $target = this._isInsideEditForm($target) ? (0, _renderer.default)(event.target) : $target;\r\n this._focusView();\r\n (0, _renderer.default)(focusedViewElement).removeClass(FOCUS_STATE_CLASS);\r\n if ($parent.hasClass(FREESPACE_ROW_CLASS)) {\r\n this._updateFocusedCellPosition($target);\r\n this._applyTabIndexToElement(this._focusedView.element());\r\n this._focusedView.focus()\r\n } else {\r\n if (!this._isMasterDetailCell($target)) {\r\n this._clickTargetCellHandler(event, $target)\r\n } else {\r\n this._updateFocusedCellPosition($target)\r\n }\r\n }\r\n } else {\r\n if ($target.is(\"td\")) {\r\n this._resetFocusedCell()\r\n }\r\n }\r\n },\r\n _clickTargetCellHandler: function(event, $cell) {\r\n var columnIndex = this.getView(\"rowsView\").getCellIndex($cell);\r\n var column = this._columnsController.getVisibleColumns()[columnIndex];\r\n var isCellEditMode = this._isCellEditMode();\r\n this.setCellFocusType();\r\n var args = this._fireFocusChangingEvents(event, $cell, true);\r\n $cell = args.$newCellElement;\r\n if (!args.cancel) {\r\n if (args.resetFocusedRow) {\r\n this.getController(\"focus\")._resetFocusedRow();\r\n return\r\n }\r\n if (args.rowIndexChanged) {\r\n $cell = this._getFocusedCell()\r\n }\r\n if (!args.isHighlighted && !isCellEditMode) {\r\n this.setRowFocusType()\r\n }\r\n this._updateFocusedCellPosition($cell);\r\n if (this._allowRowUpdating() && isCellEditMode && column && column.allowEditing) {\r\n this._isNeedFocus = false;\r\n this._isHiddenFocus = false\r\n } else {\r\n var $target = event && (0, _renderer.default)(event.target).closest(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 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 editingController = _this6._editingController;\r\n var isCellEditMode = editingController.getEditMode() === EDIT_MODE_CELL;\r\n if (!_this6.option(\"repaintChangesOnly\") && isCellEditMode && editingController.hasChanges()) {\r\n editingController._focusEditingCell();\r\n return\r\n }\r\n var $cell = _this6._getFocusedCell();\r\n var isEditing = editingController.isEditing();\r\n if ($cell && !(_this6._isMasterDetailCell($cell) && !_this6._isRowEditMode())) {\r\n if (_this6._hasSkipRow($cell.parent())) {\r\n var direction = _this6._focusedCellPosition && _this6._focusedCellPosition.rowIndex > 0 ? \"upArrow\" : \"downArrow\";\r\n $cell = _this6._getNextCell(direction)\r\n }\r\n if (isElementDefined($cell)) {\r\n if (isRenderView && !isEditing && _this6._checkCellOverlapped($cell)) {\r\n return\r\n }\r\n if ($cell.is(\"td\") || $cell.hasClass(_this6.addWidgetPrefix(EDIT_FORM_ITEM_CLASS))) {\r\n var isCommandCell = $cell.is(COMMAND_CELL_SELECTOR);\r\n var $focusedElementInsideCell = $cell.find(\":focus\");\r\n var isFocusedElementDefined = isElementDefined($focusedElementInsideCell);\r\n if ((isRenderView || !isCommandCell) && _this6._editorFactory.focus()) {\r\n if (isCommandCell && isFocusedElementDefined) {\r\n _uiGrid_core2.default.focusAndSelectElement(_this6, $focusedElementInsideCell);\r\n return\r\n }!isFocusedElementDefined && _this6._focus($cell)\r\n } else {\r\n if (!isFocusedElementDefined && (_this6._isNeedFocus || _this6._isHiddenFocus)) {\r\n _this6._focus($cell, _this6._isHiddenFocus)\r\n }\r\n }\r\n if (isEditing) {\r\n _this6._focusInteractiveElement.bind(_this6)($cell)\r\n }\r\n } else {\r\n _events_engine.default.trigger($cell, \"focus\")\r\n }\r\n }\r\n }\r\n })\r\n },\r\n _checkCellOverlapped: function($cell) {\r\n var cellOffset = $cell.offset();\r\n var hasScrollable = this.component.getScrollable && this.component.getScrollable();\r\n var isOverlapped = false;\r\n if (hasScrollable) {\r\n if (cellOffset.left < 0) {\r\n isOverlapped = $cell.width() + cellOffset.left <= 0\r\n } else {\r\n if (cellOffset.top < 0) {\r\n isOverlapped = $cell.height() + cellOffset.top <= 0\r\n }\r\n }\r\n }\r\n return isOverlapped\r\n },\r\n _getFocusedCell: function() {\r\n return (0, _renderer.default)(this._getCell(this._focusedCellPosition))\r\n },\r\n _updateFocusedCellPositionByTarget: function(target) {\r\n var _this$_focusedCellPos;\r\n var elementType = this._getElementType(target);\r\n if (\"row\" === elementType && (0, _type.isDefined)(null === (_this$_focusedCellPos = this._focusedCellPosition) || void 0 === _this$_focusedCellPos ? void 0 : _this$_focusedCellPos.columnIndex)) {\r\n var $row = (0, _renderer.default)(target);\r\n this._focusedView && isGroupRow($row) && this.setFocusedRowIndex(this._getRowIndex($row))\r\n } else {\r\n this._updateFocusedCellPosition(this._getCellElementFromTarget(target))\r\n }\r\n },\r\n _updateFocusedCellPosition: function($cell, direction) {\r\n var position = this._getCellPosition($cell, direction);\r\n if (position) {\r\n if (!$cell.length || position.rowIndex >= 0 && position.columnIndex >= 0) {\r\n this.setFocusedCellPosition(position.rowIndex, position.columnIndex)\r\n }\r\n }\r\n return position\r\n },\r\n _getFocusedColumnIndexOffset: function(columnIndex) {\r\n var offset = 0;\r\n var column = this._columnsController.getVisibleColumns()[columnIndex];\r\n if (column && column.fixed) {\r\n offset = this._getFixedColumnIndexOffset(column)\r\n } else {\r\n if (columnIndex >= 0) {\r\n offset = this._columnsController.getColumnIndexOffset()\r\n }\r\n }\r\n return offset\r\n },\r\n _getFixedColumnIndexOffset: function(column) {\r\n var offset = isFixedColumnIndexOffsetRequired(this, column) ? this._getVisibleColumnCount() - this._columnsController.getVisibleColumns().length : 0;\r\n return offset\r\n },\r\n _getCellPosition: function($cell, direction) {\r\n var columnIndex;\r\n var $row = isElementDefined($cell) && $cell.closest(\"tr\");\r\n var rowsView = this.getView(\"rowsView\");\r\n if (isElementDefined($row)) {\r\n var rowIndex = this._getRowIndex($row);\r\n columnIndex = rowsView.getCellIndex($cell, rowIndex);\r\n columnIndex += this._getFocusedColumnIndexOffset(columnIndex);\r\n if (direction) {\r\n columnIndex = \"previous\" === direction ? columnIndex - 1 : columnIndex + 1;\r\n columnIndex = this._applyColumnIndexBoundaries(columnIndex)\r\n }\r\n return {\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n }\r\n }\r\n },\r\n _focusCell: function($cell, isDisabled) {\r\n if (this._isCellValid($cell)) {\r\n this._focus($cell, isDisabled);\r\n return true\r\n }\r\n },\r\n _focusEditFormCell: function($cell) {\r\n if ($cell.hasClass(MASTER_DETAIL_CELL_CLASS)) {\r\n this._editorFactory.focus($cell, true)\r\n }\r\n },\r\n _resetFocusedCell: function(preventScroll) {\r\n var _this$_focusedView;\r\n var $cell = this._getFocusedCell();\r\n isElementDefined($cell) && $cell.removeAttr(\"tabindex\");\r\n this._isNeedFocus = false;\r\n this._isNeedScroll = false;\r\n this._focusedCellPosition = {};\r\n clearTimeout(this._updateFocusTimeout);\r\n null === (_this$_focusedView = this._focusedView) || void 0 === _this$_focusedView ? void 0 : _this$_focusedView.renderFocusState(preventScroll)\r\n },\r\n restoreFocusableElement: function(rowIndex, $event) {\r\n var that = this;\r\n var args;\r\n var $rowElement;\r\n var isUpArrow = (0, _type.isDefined)(rowIndex);\r\n var rowsView = that.getView(\"rowsView\");\r\n var $rowsViewElement = rowsView.element();\r\n var columnIndex = that._focusedCellPosition.columnIndex;\r\n var rowIndexOffset = that._dataController.getRowIndexOffset();\r\n rowIndex = isUpArrow ? rowIndex : rowsView.getTopVisibleItemIndex() + rowIndexOffset;\r\n if (!isUpArrow) {\r\n that._editorFactory.loseFocus();\r\n that._applyTabIndexToElement($rowsViewElement);\r\n _events_engine.default.trigger($rowsViewElement, \"focus\")\r\n } else {\r\n $rowElement = rowsView.getRow(rowIndex - rowIndexOffset);\r\n args = that._fireFocusedRowChanging($event, $rowElement);\r\n if (!args.cancel && args.rowIndexChanged) {\r\n rowIndex = args.newRowIndex\r\n }\r\n }\r\n if (!isUpArrow || !args.cancel) {\r\n that.setFocusedCellPosition(rowIndex, columnIndex)\r\n }\r\n isUpArrow && that._updateFocus()\r\n },\r\n _getNewPositionByCode: function(cellPosition, elementType, code) {\r\n var columnIndex = cellPosition.columnIndex;\r\n var rowIndex = cellPosition.rowIndex;\r\n var visibleColumnsCount;\r\n if (void 0 === cellPosition.rowIndex && \"next\" === code) {\r\n return {\r\n columnIndex: 0,\r\n rowIndex: 0\r\n }\r\n }\r\n switch (code) {\r\n case \"nextInRow\":\r\n case \"next\":\r\n visibleColumnsCount = this._getVisibleColumnCount();\r\n if (columnIndex < visibleColumnsCount - 1 && \"row\" !== elementType && this._hasValidCellAfterPosition({\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex\r\n })) {\r\n columnIndex++\r\n } else {\r\n if (!this._isLastRow(rowIndex) && \"next\" === code) {\r\n columnIndex = 0;\r\n rowIndex++\r\n }\r\n }\r\n break;\r\n case \"previousInRow\":\r\n case \"previous\":\r\n if (columnIndex > 0 && \"row\" !== elementType && this._hasValidCellBeforePosition({\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex\r\n })) {\r\n columnIndex--\r\n } else {\r\n if (rowIndex > 0 && \"previous\" === code) {\r\n rowIndex--;\r\n visibleColumnsCount = this._getVisibleColumnCount();\r\n columnIndex = visibleColumnsCount - 1\r\n }\r\n }\r\n break;\r\n case \"upArrow\":\r\n rowIndex = rowIndex > 0 ? rowIndex - 1 : rowIndex;\r\n break;\r\n case \"downArrow\":\r\n rowIndex = !this._isLastRow(rowIndex) ? rowIndex + 1 : rowIndex\r\n }\r\n return {\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex\r\n }\r\n },\r\n setFocusedCellPosition: function(rowIndex, columnIndex) {\r\n this.setFocusedRowIndex(rowIndex);\r\n this.setFocusedColumnIndex(columnIndex)\r\n },\r\n setFocusedRowIndex: function(rowIndex) {\r\n if (!this._focusedCellPosition) {\r\n this._focusedCellPosition = {}\r\n }\r\n this._focusedCellPosition.rowIndex = rowIndex\r\n },\r\n setFocusedColumnIndex: function(columnIndex) {\r\n if (!this._focusedCellPosition) {\r\n this._focusedCellPosition = {}\r\n }\r\n this._focusedCellPosition.columnIndex = columnIndex\r\n },\r\n getRowIndex: function() {\r\n return this._focusedCellPosition ? this._focusedCellPosition.rowIndex : -1\r\n },\r\n getColumnIndex: function() {\r\n return this._focusedCellPosition ? this._focusedCellPosition.columnIndex : -1\r\n },\r\n getVisibleRowIndex: function() {\r\n var rowIndex = this._focusedCellPosition && this._focusedCellPosition.rowIndex;\r\n if (!(0, _type.isDefined)(rowIndex)) {\r\n return -1\r\n }\r\n return rowIndex - this._dataController.getRowIndexOffset()\r\n },\r\n getVisibleColumnIndex: function() {\r\n var columnIndex = this._focusedCellPosition && this._focusedCellPosition.columnIndex;\r\n if (!(0, _type.isDefined)(columnIndex)) {\r\n return -1\r\n }\r\n return columnIndex - this._columnsController.getColumnIndexOffset()\r\n },\r\n _applyColumnIndexBoundaries: function(columnIndex) {\r\n var visibleColumnsCount = this._getVisibleColumnCount();\r\n if (columnIndex < 0) {\r\n columnIndex = 0\r\n } else {\r\n if (columnIndex >= visibleColumnsCount) {\r\n columnIndex = visibleColumnsCount - 1\r\n }\r\n }\r\n return columnIndex\r\n },\r\n _isCellByPositionValid: function(cellPosition) {\r\n var $cell = (0, _renderer.default)(this._getCell(cellPosition));\r\n return this._isCellValid($cell)\r\n },\r\n _isLastRow: function(rowIndex) {\r\n 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 this._renderFocusByChange(change)\r\n },\r\n _renderFocusByChange: function(change) {\r\n if (!change || !change.repaintChangesOnly) {\r\n var preventScroll = shouldPreventScroll(this);\r\n this.renderFocusState(preventScroll)\r\n }\r\n },\r\n _renderCore: function(change) {\r\n this.callBase.apply(this, arguments);\r\n this._renderFocusByChange(change)\r\n },\r\n _editCellPrepared: function($cell) {\r\n var editorInstance = this._getEditorInstance($cell);\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var isEditingNavigationMode = keyboardController && keyboardController._isFastEditingStarted();\r\n if (editorInstance && isEditingNavigationMode) {\r\n this._handleEditingNavigationMode(editorInstance)\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _handleEditingNavigationMode: function(editorInstance) {\r\n [\"downArrow\", \"upArrow\"].forEach(function(keyName) {\r\n var originalKeyHandler = editorInstance._supportedKeys()[keyName];\r\n editorInstance.registerKeyHandler(keyName, function(e) {\r\n var isDropDownOpened = \"true\" === editorInstance._input().attr(\"aria-expanded\");\r\n if (isDropDownOpened) {\r\n return originalKeyHandler && originalKeyHandler.call(editorInstance, e)\r\n }\r\n })\r\n });\r\n editorInstance.registerKeyHandler(\"leftArrow\", _common.noop);\r\n editorInstance.registerKeyHandler(\"rightArrow\", _common.noop);\r\n var isDateBoxWithMask = editorInstance.NAME === DATEBOX_WIDGET_NAME && editorInstance.option(\"useMaskBehavior\");\r\n if (isDateBoxWithMask) {\r\n editorInstance.registerKeyHandler(\"enter\", _common.noop)\r\n }\r\n },\r\n _getEditorInstance: function($cell) {\r\n var $editor = $cell.find(\".dx-texteditor\").eq(0);\r\n return _uiGrid_core2.default.getWidgetInstance($editor)\r\n }\r\n }\r\n },\r\n controllers: {\r\n editing: {\r\n editCell: function(rowIndex, columnIndex) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n if (keyboardController._processCanceledEditCellPosition(rowIndex, columnIndex)) {\r\n return false\r\n }\r\n var isCellEditing = this.callBase(rowIndex, columnIndex);\r\n if (isCellEditing) {\r\n keyboardController.setupFocusedView()\r\n }\r\n return isCellEditing\r\n },\r\n editRow: function(rowIndex) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n var visibleColumnIndex = keyboardController.getVisibleColumnIndex();\r\n var column = this._columnsController.getVisibleColumns()[visibleColumnIndex];\r\n if (column && column.type || this.option(\"editing.mode\") === EDIT_MODE_FORM) {\r\n keyboardController._resetFocusedCell()\r\n }\r\n this.callBase(rowIndex)\r\n },\r\n addRow: function(parentKey) {\r\n var keyboardController = this.getController(\"keyboardNavigation\");\r\n keyboardController.setupFocusedView();\r\n keyboardController.setCellFocusType();\r\n return this.callBase.apply(this, arguments)\r\n },\r\n getFocusedCellInRow: function(rowIndex) {\r\n var keyboardNavigationController = this.getController(\"keyboardNavigation\");\r\n var $cell = this.callBase(rowIndex);\r\n if (keyboardNavigationController.isKeyboardEnabled() && keyboardNavigationController._focusedCellPosition.rowIndex === rowIndex) {\r\n var $focusedCell = keyboardNavigationController._getFocusedCell();\r\n if (isElementDefined($focusedCell) && !$focusedCell.hasClass(COMMAND_EDIT_CLASS)) {\r\n $cell = $focusedCell\r\n }\r\n }\r\n return $cell\r\n },\r\n _processCanceledEditingCell: function() {\r\n var _this8 = this;\r\n this.closeEditCell().done(function() {\r\n var keyboardNavigation = _this8.getController(\"keyboardNavigation\");\r\n keyboardNavigation._updateFocus()\r\n })\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._keyboardNavigationController = this.getController(\"keyboardNavigation\")\r\n },\r\n closeEditCell: function() {\r\n var keyboardNavigation = this._keyboardNavigationController;\r\n keyboardNavigation._fastEditingStarted = false;\r\n var result = this.callBase.apply(this, arguments);\r\n keyboardNavigation._updateFocus();\r\n return result\r\n },\r\n _delayedInputFocus: function() {\r\n this._keyboardNavigationController._isNeedScroll = true;\r\n this.callBase.apply(this, arguments)\r\n },\r\n _isEditingStart: function() {\r\n var keyboardNavigation = this.getController(\"keyboardNavigation\");\r\n var cancel = this.callBase.apply(this, arguments);\r\n if (cancel && !keyboardNavigation._isNeedFocus) {\r\n var $cell = keyboardNavigation._getFocusedCell();\r\n keyboardNavigation._focus($cell, true)\r\n }\r\n return cancel;\r\n }\r\n },\r\n data: {\r\n _correctRowIndices: function(getRowIndexCorrection) {\r\n var that = this;\r\n var keyboardNavigationController = that.getController(\"keyboardNavigation\");\r\n var editorFactory = that.getController(\"editorFactory\");\r\n var focusedCellPosition = keyboardNavigationController._focusedCellPosition;\r\n that.callBase.apply(that, arguments);\r\n if (focusedCellPosition && focusedCellPosition.rowIndex >= 0) {\r\n var focusedRowIndexCorrection = getRowIndexCorrection(focusedCellPosition.rowIndex);\r\n if (focusedRowIndexCorrection) {\r\n focusedCellPosition.rowIndex += focusedRowIndexCorrection;\r\n editorFactory.refocus()\r\n }\r\n }\r\n }\r\n },\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _click = require(\"../../events/click\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _form = _interopRequireDefault(require(\"../form\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _themes = require(\"../themes\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COLUMN_HEADERS_VIEW = \"columnHeadersView\";\r\nvar ROWS_VIEW = \"rowsView\";\r\nvar FOOTER_VIEW = \"footerView\";\r\nvar COLUMN_VIEWS = [COLUMN_HEADERS_VIEW, ROWS_VIEW, FOOTER_VIEW];\r\nvar ADAPTIVE_NAMESPACE = \"dxDataGridAdaptivity\";\r\nvar HIDDEN_COLUMNS_WIDTH = \"adaptiveHidden\";\r\nvar ADAPTIVE_ROW_TYPE = \"detailAdaptive\";\r\nvar FORM_ITEM_CONTENT_CLASS = \"dx-field-item-content\";\r\nvar FORM_ITEM_MODIFIED = \"dx-item-modified\";\r\nvar HIDDEN_COLUMN_CLASS = \"hidden-column\";\r\nvar ADAPTIVE_COLUMN_BUTTON_CLASS = \"adaptive-more\";\r\nvar ADAPTIVE_COLUMN_NAME_CLASS = \"dx-command-adaptive\";\r\nvar COMMAND_ADAPTIVE_HIDDEN_CLASS = \"dx-command-adaptive-hidden\";\r\nvar ADAPTIVE_DETAIL_ROW_CLASS = \"dx-adaptive-detail-row\";\r\nvar ADAPTIVE_ITEM_TEXT_CLASS = \"dx-adaptive-item-text\";\r\nvar MASTER_DETAIL_CELL_CLASS = \"dx-master-detail-cell\";\r\nvar LAST_DATA_CELL_CLASS = \"dx-last-data-cell\";\r\nvar ADAPTIVE_COLUMN_NAME = \"adaptive\";\r\nvar EDIT_MODE_BATCH = \"batch\";\r\nvar EDIT_MODE_ROW = \"row\";\r\nvar EDIT_MODE_FORM = \"form\";\r\nvar EDIT_MODE_POPUP = \"popup\";\r\nvar REVERT_TOOLTIP_CLASS = \"revert-tooltip\";\r\nvar GROUP_CELL_CLASS = \"dx-group-cell\";\r\nvar GROUP_ROW_CLASS = \"dx-group-row\";\r\nvar EXPAND_ARIA_NAME = \"dxDataGrid-ariaAdaptiveExpand\";\r\nvar COLLAPSE_ARIA_NAME = \"dxDataGrid-ariaAdaptiveCollapse\";\r\n\r\nfunction getColumnId(that, column) {\r\n return that._columnsController.getColumnId(column)\r\n}\r\n\r\nfunction getDataCellElements($row) {\r\n return $row.find(\"td:not(.dx-datagrid-hidden-column):not([class*='dx-command-'])\")\r\n}\r\n\r\nfunction adaptiveCellTemplate(container, options) {\r\n var $adaptiveColumnButton;\r\n var $container = (0, _renderer.default)(container);\r\n var adaptiveColumnsController = options.component.getController(\"adaptiveColumns\");\r\n if (\"data\" === options.rowType) {\r\n $adaptiveColumnButton = (0, _renderer.default)(\"\").addClass(adaptiveColumnsController.addWidgetPrefix(ADAPTIVE_COLUMN_BUTTON_CLASS));\r\n _events_engine.default.on($adaptiveColumnButton, (0, _index.addNamespace)(_click.name, ADAPTIVE_NAMESPACE), adaptiveColumnsController.createAction(function() {\r\n adaptiveColumnsController.toggleExpandAdaptiveDetailRow(options.key)\r\n }));\r\n $adaptiveColumnButton.appendTo($container)\r\n } else {\r\n _uiGrid_core2.default.setEmptyText($container)\r\n }\r\n}\r\nvar AdaptiveColumnsController = _uiGrid_core.default.ViewController.inherit({\r\n _isRowEditMode: function() {\r\n var editMode = this._getEditMode();\r\n return editMode === EDIT_MODE_ROW\r\n },\r\n _isItemModified: function(item, cellOptions) {\r\n var columnIndex = this._columnsController.getVisibleIndex(item.column.index);\r\n var rowIndex = this._dataController.getRowIndexByKey(cellOptions.key);\r\n var row = this._dataController.items()[rowIndex + 1];\r\n return row && row.modifiedValues && (0, _type.isDefined)(row.modifiedValues[columnIndex])\r\n },\r\n _renderFormViewTemplate: function(item, cellOptions, $container) {\r\n var that = this;\r\n var column = item.column;\r\n var focusAction = that.createAction(function() {\r\n _events_engine.default.trigger($container, _click.name)\r\n });\r\n var value = column.calculateCellValue(cellOptions.data);\r\n var displayValue = _uiGrid_core2.default.getDisplayValue(column, value, cellOptions.data, cellOptions.rowType);\r\n var text = _uiGrid_core2.default.formatValue(displayValue, column);\r\n var isCellOrBatchEditMode = this._editingController.isCellOrBatchEditMode();\r\n var rowsView = that._rowsView;\r\n if (column.allowEditing && that.getController(\"keyboardNavigation\").isKeyboardEnabled()) {\r\n $container.attr(\"tabIndex\", that.option(\"tabIndex\"));\r\n if (isCellOrBatchEditMode) {\r\n _events_engine.default.off($container, \"focus\", focusAction);\r\n _events_engine.default.on($container, \"focus\", focusAction)\r\n }\r\n }\r\n if (column.cellTemplate) {\r\n var templateOptions = (0, _extend.extend)({}, cellOptions, {\r\n value: value,\r\n displayValue: displayValue,\r\n text: text,\r\n column: column\r\n });\r\n var isDomElement = !!$container.closest((0, _window.getWindow)().document).length;\r\n rowsView.renderTemplate($container, column.cellTemplate, templateOptions, isDomElement).done(function() {\r\n rowsView._cellPrepared($container, cellOptions)\r\n })\r\n } else {\r\n var container = $container.get(0);\r\n if (column.encodeHtml) {\r\n container.textContent = text\r\n } else {\r\n container.innerHTML = text\r\n }\r\n $container.addClass(ADAPTIVE_ITEM_TEXT_CLASS);\r\n if (!(0, _type.isDefined)(text) || \"\" === text) {\r\n $container.html(\" \")\r\n }\r\n if (!that._isRowEditMode()) {\r\n if (that._isItemModified(item, cellOptions)) {\r\n $container.addClass(FORM_ITEM_MODIFIED)\r\n }\r\n }\r\n rowsView._cellPrepared($container, cellOptions)\r\n }\r\n },\r\n _getTemplate: function(item, cellOptions) {\r\n var that = this;\r\n var column = item.column;\r\n var editingController = this.getController(\"editing\");\r\n return function(options, container) {\r\n var $container = (0, _renderer.default)(container);\r\n var columnIndex = that._columnsController.getVisibleIndex(column.index);\r\n var templateOptions = (0, _extend.extend)({}, cellOptions);\r\n var renderFormTemplate = function() {\r\n var isItemEdited = that._isItemEdited(item);\r\n templateOptions.value = cellOptions.row.values[columnIndex];\r\n if (isItemEdited || column.showEditorAlways) {\r\n editingController.renderFormEditTemplate(templateOptions, item, options.component, $container, !isItemEdited)\r\n } else {\r\n templateOptions.column = column;\r\n templateOptions.columnIndex = columnIndex;\r\n that._renderFormViewTemplate(item, templateOptions, $container)\r\n }\r\n };\r\n renderFormTemplate();\r\n templateOptions.watch && templateOptions.watch(function() {\r\n return {\r\n isItemEdited: that._isItemEdited(item),\r\n value: cellOptions.row.values[columnIndex]\r\n }\r\n }, function() {\r\n $container.contents().remove();\r\n $container.removeClass(ADAPTIVE_ITEM_TEXT_CLASS);\r\n renderFormTemplate()\r\n })\r\n }\r\n },\r\n _isVisibleColumnsValid: function(visibleColumns) {\r\n var getCommandColumnsCount = function() {\r\n var result = 0;\r\n for (var j = 0; j < visibleColumns.length; j++) {\r\n var visibleColumn = visibleColumns[j];\r\n if (visibleColumn.command) {\r\n result++\r\n }\r\n }\r\n return result\r\n };\r\n if (visibleColumns < 2) {\r\n return false\r\n }\r\n if (visibleColumns.length - getCommandColumnsCount() <= 1) {\r\n return false\r\n }\r\n return true\r\n },\r\n _calculatePercentWidths: function(widths, visibleColumns) {\r\n var that = this;\r\n var percentWidths = 0;\r\n visibleColumns.forEach(function(item, index) {\r\n if (widths[index] !== HIDDEN_COLUMNS_WIDTH) {\r\n percentWidths += that._getItemPercentWidth(item)\r\n }\r\n });\r\n return percentWidths\r\n },\r\n _isPercentWidth: function(width) {\r\n return (0, _type.isString)(width) && \"%\" === width.slice(-1)\r\n },\r\n _isColumnHidden: function(column) {\r\n return this._hiddenColumns.filter(function(hiddenColumn) {\r\n return hiddenColumn.index === column.index\r\n }).length > 0\r\n },\r\n _getAverageColumnsWidth: function(containerWidth, columns, columnsCanFit) {\r\n var that = this;\r\n var fixedColumnsWidth = 0;\r\n var columnsWithoutFixedWidthCount = 0;\r\n columns.forEach(function(column) {\r\n if (!that._isColumnHidden(column)) {\r\n var width = column.width;\r\n if ((0, _type.isDefined)(width) && !isNaN(parseFloat(width))) {\r\n fixedColumnsWidth += that._isPercentWidth(width) ? that._calculatePercentWidth({\r\n visibleIndex: column.visibleIndex,\r\n columnsCount: columns.length,\r\n columnsCanFit: columnsCanFit,\r\n bestFitWidth: column.bestFitWidth,\r\n columnWidth: width,\r\n containerWidth: containerWidth\r\n }) : parseFloat(width)\r\n } else {\r\n columnsWithoutFixedWidthCount++\r\n }\r\n }\r\n });\r\n return (containerWidth - fixedColumnsWidth) / columnsWithoutFixedWidthCount\r\n },\r\n _calculateColumnWidth: function(column, containerWidth, contentColumns, columnsCanFit) {\r\n var columnId = getColumnId(this, column);\r\n var widthOption = this._columnsController.columnOption(columnId, \"width\");\r\n var bestFitWidth = this._columnsController.columnOption(columnId, \"bestFitWidth\");\r\n var columnsCount = contentColumns.length;\r\n var colWidth;\r\n if (widthOption && \"auto\" !== widthOption) {\r\n if (this._isPercentWidth(widthOption)) {\r\n colWidth = this._calculatePercentWidth({\r\n visibleIndex: column.visibleIndex,\r\n columnsCount: columnsCount,\r\n columnsCanFit: columnsCanFit,\r\n bestFitWidth: bestFitWidth,\r\n columnWidth: widthOption,\r\n containerWidth: containerWidth\r\n })\r\n } else {\r\n return widthOption\r\n }\r\n } else {\r\n var columnAutoWidth = this.option(\"columnAutoWidth\");\r\n colWidth = columnAutoWidth || !!column.command ? bestFitWidth : this._getAverageColumnsWidth(containerWidth, contentColumns, columnsCanFit)\r\n }\r\n return colWidth\r\n },\r\n _calculatePercentWidth: function(options) {\r\n var columnFitted = options.visibleIndex < options.columnsCount - 1 && options.columnsCanFit;\r\n var partialWidth = options.containerWidth * parseFloat(options.columnWidth) / 100;\r\n var resultWidth = options.columnsCanFit && partialWidth < options.bestFitWidth ? options.bestFitWidth : partialWidth;\r\n return columnFitted ? options.containerWidth * parseFloat(options.columnWidth) / 100 : resultWidth\r\n },\r\n _getNotTruncatedColumnWidth: function(column, containerWidth, contentColumns, columnsCanFit) {\r\n var columnId = getColumnId(this, column);\r\n var widthOption = this._columnsController.columnOption(columnId, \"width\");\r\n var bestFitWidth = this._columnsController.columnOption(columnId, \"bestFitWidth\");\r\n if (widthOption && \"auto\" !== widthOption && !this._isPercentWidth(widthOption)) {\r\n return parseFloat(widthOption)\r\n }\r\n var colWidth = this._calculateColumnWidth(column, containerWidth, contentColumns, columnsCanFit);\r\n return colWidth < bestFitWidth ? null : colWidth\r\n },\r\n _getItemPercentWidth: function(item) {\r\n var result = 0;\r\n if (item.width && this._isPercentWidth(item.width)) {\r\n result = parseFloat(item.width)\r\n }\r\n return result\r\n },\r\n _getCommandColumnsWidth: function() {\r\n var that = this;\r\n var columns = that._columnsController.getVisibleColumns();\r\n var colWidth = 0;\r\n (0, _iterator.each)(columns, function(index, column) {\r\n if (column.index < 0 || column.command) {\r\n colWidth += that._columnsController.columnOption(getColumnId(that, column), \"bestFitWidth\") || 0\r\n }\r\n });\r\n return colWidth\r\n },\r\n _isItemEdited: function(item) {\r\n if (this.isFormEditMode()) {\r\n return false\r\n }\r\n if (this._isRowEditMode()) {\r\n var editRowKey = this.option(\"editing.editRowKey\");\r\n if ((0, _common.equalByValue)(editRowKey, this._dataController.adaptiveExpandedKey())) {\r\n return true\r\n }\r\n } else {\r\n var rowIndex = this._dataController.getRowIndexByKey(this._dataController.adaptiveExpandedKey()) + 1;\r\n var columnIndex = this._columnsController.getVisibleIndex(item.column.index);\r\n return this._editingController.isEditCell(rowIndex, columnIndex)\r\n }\r\n },\r\n _getFormItemsByHiddenColumns: function(hiddenColumns) {\r\n var items = [];\r\n (0, _iterator.each)(hiddenColumns, function(_, column) {\r\n items.push({\r\n column: column,\r\n name: column.name,\r\n dataField: column.dataField,\r\n visibleIndex: column.visibleIndex\r\n })\r\n });\r\n return items\r\n },\r\n _getAdaptiveColumnVisibleIndex: function(visibleColumns) {\r\n for (var i = 0; i < visibleColumns.length; i++) {\r\n var column = visibleColumns[i];\r\n if (column.command === ADAPTIVE_COLUMN_NAME) {\r\n return i\r\n }\r\n }\r\n },\r\n _hideAdaptiveColumn: function(resultWidths, visibleColumns) {\r\n var visibleIndex = this._getAdaptiveColumnVisibleIndex(visibleColumns);\r\n if ((0, _type.isDefined)(visibleIndex)) {\r\n resultWidths[visibleIndex] = HIDDEN_COLUMNS_WIDTH;\r\n this._hideVisibleColumn({\r\n isCommandColumn: true,\r\n visibleIndex: visibleIndex\r\n })\r\n }\r\n },\r\n _showHiddenCellsInView: function(_ref) {\r\n var $cells = _ref.$cells,\r\n isCommandColumn = _ref.isCommandColumn;\r\n var cssClassNameToRemove = isCommandColumn ? COMMAND_ADAPTIVE_HIDDEN_CLASS : this.addWidgetPrefix(HIDDEN_COLUMN_CLASS);\r\n $cells.removeClass(cssClassNameToRemove)\r\n },\r\n _showHiddenColumns: function() {\r\n for (var i = 0; i < COLUMN_VIEWS.length; i++) {\r\n var view = this.getView(COLUMN_VIEWS[i]);\r\n if (view && view.isVisible() && view.element()) {\r\n var viewName = view.name;\r\n var $hiddenCommandCells = view.element().find(\".\" + COMMAND_ADAPTIVE_HIDDEN_CLASS);\r\n this._showHiddenCellsInView({\r\n viewName: viewName,\r\n $cells: $hiddenCommandCells,\r\n isCommandColumn: true\r\n });\r\n var $hiddenCells = view.element().find(\".\" + this.addWidgetPrefix(HIDDEN_COLUMN_CLASS));\r\n this._showHiddenCellsInView({\r\n viewName: viewName,\r\n $cells: $hiddenCells\r\n })\r\n }\r\n }\r\n },\r\n _isCellValid: function($cell) {\r\n return $cell && $cell.length && !$cell.hasClass(MASTER_DETAIL_CELL_CLASS) && !$cell.hasClass(GROUP_CELL_CLASS)\r\n },\r\n _hideVisibleColumn: function(_ref2) {\r\n var isCommandColumn = _ref2.isCommandColumn,\r\n visibleIndex = _ref2.visibleIndex;\r\n var that = this;\r\n COLUMN_VIEWS.forEach(function(viewName) {\r\n var view = that.getView(viewName);\r\n view && that._hideVisibleColumnInView({\r\n view: view,\r\n isCommandColumn: isCommandColumn,\r\n visibleIndex: visibleIndex\r\n })\r\n })\r\n },\r\n _hideVisibleColumnInView: function(_ref3) {\r\n var view = _ref3.view,\r\n isCommandColumn = _ref3.isCommandColumn,\r\n visibleIndex = _ref3.visibleIndex;\r\n var viewName = view.name;\r\n var $cellElement;\r\n var column = this._columnsController.getVisibleColumns()[visibleIndex];\r\n var editFormRowIndex = this._editingController && this._editingController.getEditFormRowIndex();\r\n if (view && view.isVisible() && column) {\r\n var rowsCount = view.getRowsCount();\r\n var $rowElements = view._getRowElements();\r\n for (var rowIndex = 0; rowIndex < rowsCount; rowIndex++) {\r\n var cancelClassAdding = rowIndex === editFormRowIndex && viewName === ROWS_VIEW && \"popup\" !== this.option(\"editing.mode\");\r\n if (!cancelClassAdding) {\r\n var currentVisibleIndex = viewName === COLUMN_HEADERS_VIEW ? this._columnsController.getVisibleIndex(column.index, rowIndex) : visibleIndex;\r\n if (currentVisibleIndex >= 0) {\r\n var $rowElement = $rowElements.eq(rowIndex);\r\n $cellElement = this._findCellElementInRow($rowElement, currentVisibleIndex);\r\n this._isCellValid($cellElement) && this._hideVisibleCellInView({\r\n viewName: viewName,\r\n isCommandColumn: isCommandColumn,\r\n $cell: $cellElement\r\n })\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _findCellElementInRow: function($rowElement, visibleColumnIndex) {\r\n var $rowCells = $rowElement.children();\r\n var visibleIndex = visibleColumnIndex;\r\n var cellIsInsideGroup = false;\r\n if ($rowElement.hasClass(GROUP_ROW_CLASS)) {\r\n var $groupCell = $rowElement.find(\".\".concat(GROUP_CELL_CLASS));\r\n var colSpan = $groupCell.attr(\"colspan\");\r\n if ($groupCell.length && (0, _type.isDefined)(colSpan)) {\r\n var groupCellLength = parseInt(colSpan);\r\n var endGroupIndex = $groupCell.index() + groupCellLength - 1;\r\n if (visibleColumnIndex > endGroupIndex) {\r\n visibleIndex = visibleColumnIndex - groupCellLength + 1\r\n } else {\r\n cellIsInsideGroup = true\r\n }\r\n }\r\n }\r\n var $cellElement = !cellIsInsideGroup ? $rowCells.eq(visibleIndex) : void 0;\r\n return $cellElement\r\n },\r\n _hideVisibleCellInView: function(_ref4) {\r\n var $cell = _ref4.$cell,\r\n isCommandColumn = _ref4.isCommandColumn;\r\n var cssClassNameToAdd = isCommandColumn ? COMMAND_ADAPTIVE_HIDDEN_CLASS : this.addWidgetPrefix(HIDDEN_COLUMN_CLASS);\r\n $cell.addClass(cssClassNameToAdd)\r\n },\r\n _getEditMode: function() {\r\n return this._editingController.getEditMode()\r\n },\r\n isFormEditMode: function() {\r\n var editMode = this._getEditMode();\r\n return editMode === EDIT_MODE_FORM || editMode === EDIT_MODE_POPUP\r\n },\r\n hideRedundantColumns: function(resultWidths, visibleColumns, hiddenQueue) {\r\n var that = this;\r\n this._hiddenColumns = [];\r\n if (that._isVisibleColumnsValid(visibleColumns) && hiddenQueue.length) {\r\n var totalWidth = 0;\r\n var $rootElement = that.component.$element();\r\n var rootElementWidth = $rootElement.width() - that._getCommandColumnsWidth();\r\n var getVisibleContentColumns = function() {\r\n var _this = this;\r\n return visibleColumns.filter(function(item) {\r\n return !item.command && 0 === _this._hiddenColumns.filter(function(i) {\r\n return i.index === item.index\r\n }).length\r\n })\r\n }.bind(this);\r\n var visibleContentColumns = getVisibleContentColumns();\r\n var contentColumnsCount = visibleContentColumns.length;\r\n var i;\r\n var hasHiddenColumns;\r\n var needHideColumn;\r\n do {\r\n needHideColumn = false;\r\n totalWidth = 0;\r\n var percentWidths = that._calculatePercentWidths(resultWidths, visibleColumns);\r\n var columnsCanFit = percentWidths < 100 && 0 !== percentWidths;\r\n for (i = 0; i < visibleColumns.length; i++) {\r\n var visibleColumn = visibleColumns[i];\r\n var columnWidth = that._getNotTruncatedColumnWidth(visibleColumn, rootElementWidth, visibleContentColumns, columnsCanFit);\r\n var columnId = getColumnId(that, visibleColumn);\r\n var widthOption = that._columnsController.columnOption(columnId, \"width\");\r\n var minWidth = that._columnsController.columnOption(columnId, \"minWidth\");\r\n var columnBestFitWidth = that._columnsController.columnOption(columnId, \"bestFitWidth\");\r\n if (resultWidths[i] === HIDDEN_COLUMNS_WIDTH) {\r\n hasHiddenColumns = true;\r\n continue\r\n }\r\n if (!columnWidth && !visibleColumn.command && !visibleColumn.fixed) {\r\n needHideColumn = true;\r\n break\r\n }\r\n if (!widthOption || \"auto\" === widthOption) {\r\n columnWidth = Math.max(columnBestFitWidth || 0, minWidth || 0)\r\n }\r\n if (visibleColumn.command !== ADAPTIVE_COLUMN_NAME || hasHiddenColumns) {\r\n totalWidth += columnWidth\r\n }\r\n }\r\n needHideColumn = needHideColumn || totalWidth > $rootElement.width();\r\n if (needHideColumn) {\r\n var column = hiddenQueue.pop();\r\n var visibleIndex = that._columnsController.getVisibleIndex(column.index);\r\n rootElementWidth += that._calculateColumnWidth(column, rootElementWidth, visibleContentColumns, columnsCanFit);\r\n that._hideVisibleColumn({\r\n visibleIndex: visibleIndex\r\n });\r\n resultWidths[visibleIndex] = HIDDEN_COLUMNS_WIDTH;\r\n this._hiddenColumns.push(column);\r\n visibleContentColumns = getVisibleContentColumns()\r\n }\r\n } while (needHideColumn && visibleContentColumns.length > 1 && hiddenQueue.length);\r\n if (contentColumnsCount === visibleContentColumns.length) {\r\n that._hideAdaptiveColumn(resultWidths, visibleColumns)\r\n }\r\n } else {\r\n that._hideAdaptiveColumn(resultWidths, visibleColumns)\r\n }\r\n },\r\n getItemContentByColumnIndex: function(visibleColumnIndex) {\r\n var $itemContent;\r\n for (var i = 0; i < this._$itemContents.length; i++) {\r\n $itemContent = this._$itemContents.eq(i);\r\n var item = $itemContent.data(\"dx-form-item\");\r\n if (item && item.column && this._columnsController.getVisibleIndex(item.column.index) === visibleColumnIndex) {\r\n return $itemContent\r\n }\r\n }\r\n },\r\n toggleExpandAdaptiveDetailRow: function(key, alwaysExpanded) {\r\n if (!(this.isFormEditMode() && this._editingController.isEditing())) {\r\n this.getController(\"data\").toggleExpandAdaptiveDetailRow(key, alwaysExpanded)\r\n }\r\n },\r\n createFormByHiddenColumns: function(container, options) {\r\n var that = this;\r\n var $container = (0, _renderer.default)(container);\r\n var userFormOptions = {\r\n items: that._getFormItemsByHiddenColumns(that._hiddenColumns),\r\n formID: \"dx-\" + new _guid.default\r\n };\r\n var defaultFormOptions = (0, _themes.isMaterial)() ? {\r\n colCount: 2\r\n } : {};\r\n this.executeAction(\"onAdaptiveDetailRowPreparing\", {\r\n formOptions: userFormOptions\r\n });\r\n that._$itemContents = null;\r\n that._form = that._createComponent((0, _renderer.default)(\"
    \").appendTo($container), _form.default, (0, _extend.extend)(defaultFormOptions, userFormOptions, {\r\n customizeItem: function(item) {\r\n var column = item.column || that._columnsController.columnOption(item.name || item.dataField);\r\n if (column) {\r\n item.label = item.label || {};\r\n item.label.text = item.label.text || column.caption;\r\n item.column = column;\r\n item.template = that._getTemplate(item, options, that.updateForm.bind(that))\r\n }\r\n userFormOptions.customizeItem && userFormOptions.customizeItem.call(this, item)\r\n },\r\n onContentReady: function(e) {\r\n userFormOptions.onContentReady && userFormOptions.onContentReady.call(this, e);\r\n that._$itemContents = $container.find(\".\" + FORM_ITEM_CONTENT_CLASS)\r\n }\r\n }))\r\n },\r\n hasAdaptiveDetailRowExpanded: function() {\r\n return (0, _type.isDefined)(this._dataController.adaptiveExpandedKey())\r\n },\r\n updateForm: function(hiddenColumns) {\r\n if (this.hasAdaptiveDetailRowExpanded()) {\r\n if (this._form && (0, _type.isDefined)(this._form._contentReadyAction)) {\r\n if (hiddenColumns && hiddenColumns.length) {\r\n this._form.option(\"items\", this._getFormItemsByHiddenColumns(hiddenColumns))\r\n } else {\r\n this._form.repaint()\r\n }\r\n }\r\n }\r\n },\r\n updateHidingQueue: function(columns) {\r\n var that = this;\r\n var hideableColumns = columns.filter(function(column) {\r\n return column.visible && !column.type && !column.fixed && !((0, _type.isDefined)(column.groupIndex) && column.groupIndex >= 0)\r\n });\r\n var columnsHasHidingPriority;\r\n var i;\r\n that._hidingColumnsQueue = [];\r\n if (that.option(\"allowColumnResizing\") && \"widget\" === that.option(\"columnResizingMode\")) {\r\n return that._hidingColumnsQueue\r\n }\r\n for (i = 0; i < hideableColumns.length; i++) {\r\n if ((0, _type.isDefined)(hideableColumns[i].hidingPriority) && hideableColumns[i].hidingPriority >= 0) {\r\n columnsHasHidingPriority = true;\r\n that._hidingColumnsQueue[hideableColumns[i].hidingPriority] = hideableColumns[i]\r\n }\r\n }\r\n if (columnsHasHidingPriority) {\r\n that._hidingColumnsQueue.reverse()\r\n } else {\r\n if (that.option(\"columnHidingEnabled\")) {\r\n for (i = 0; i < hideableColumns.length; i++) {\r\n var visibleIndex = that._columnsController.getVisibleIndex(hideableColumns[i].index);\r\n that._hidingColumnsQueue[visibleIndex] = hideableColumns[i]\r\n }\r\n }\r\n }\r\n that._hidingColumnsQueue = that._hidingColumnsQueue.filter(Object);\r\n return that._hidingColumnsQueue\r\n },\r\n getHiddenColumns: function() {\r\n return this._hiddenColumns\r\n },\r\n hasHiddenColumns: function() {\r\n return this._hiddenColumns.length > 0\r\n },\r\n getHidingColumnsQueue: function() {\r\n return this._hidingColumnsQueue\r\n },\r\n init: function() {\r\n var that = this;\r\n that._columnsController = that.getController(\"columns\");\r\n that._dataController = that.getController(\"data\");\r\n that._rowsView = that.getView(\"rowsView\");\r\n that._columnsController.addCommandColumn({\r\n type: ADAPTIVE_COLUMN_NAME,\r\n command: ADAPTIVE_COLUMN_NAME,\r\n visible: true,\r\n adaptiveHidden: true,\r\n cssClass: ADAPTIVE_COLUMN_NAME_CLASS,\r\n alignment: \"center\",\r\n width: \"auto\",\r\n cellTemplate: adaptiveCellTemplate,\r\n fixedPosition: \"right\"\r\n });\r\n that._columnsController.columnsChanged.add(function() {\r\n var isAdaptiveVisible = !!that.updateHidingQueue(that._columnsController.getColumns()).length;\r\n that._columnsController.columnOption(\"command:adaptive\", \"adaptiveHidden\", !isAdaptiveVisible, true)\r\n });\r\n that._editingController = that.getController(\"editing\");\r\n that._hidingColumnsQueue = [];\r\n that._hiddenColumns = [];\r\n that.createAction(\"onAdaptiveDetailRowPreparing\");\r\n that.callBase()\r\n },\r\n optionChanged: function(args) {\r\n if (\"columnHidingEnabled\" === args.name) {\r\n this._columnsController.columnOption(\"command:adaptive\", \"adaptiveHidden\", !args.value)\r\n }\r\n this.callBase(args)\r\n },\r\n publicMethods: function() {\r\n return [\"isAdaptiveDetailRowExpanded\", \"expandAdaptiveDetailRow\", \"collapseAdaptiveDetailRow\"]\r\n },\r\n isAdaptiveDetailRowExpanded: function(key) {\r\n return this._dataController.adaptiveExpandedKey() && (0, _common.equalByValue)(this._dataController.adaptiveExpandedKey(), key)\r\n },\r\n expandAdaptiveDetailRow: function(key) {\r\n if (!this.hasAdaptiveDetailRowExpanded()) {\r\n this.toggleExpandAdaptiveDetailRow(key)\r\n }\r\n },\r\n collapseAdaptiveDetailRow: function() {\r\n if (this.hasAdaptiveDetailRowExpanded()) {\r\n this.toggleExpandAdaptiveDetailRow()\r\n }\r\n },\r\n updateCommandAdaptiveAriaLabel: function(key, label) {\r\n var rowIndex = this._dataController.getRowIndexByKey(key);\r\n if (rowIndex === -1) {\r\n return\r\n }\r\n var $row = (0, _renderer.default)(this.component.getRowElement(rowIndex));\r\n this.setCommandAdaptiveAriaLabel($row, label)\r\n },\r\n setCommandAdaptiveAriaLabel: function($row, labelName) {\r\n var $adaptiveCommand = $row.find(\".dx-command-adaptive\");\r\n $adaptiveCommand.attr(\"aria-label\", _message.default.format(labelName))\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n columnHidingEnabled: false,\r\n onAdaptiveDetailRowPreparing: null\r\n }\r\n },\r\n controllers: {\r\n adaptiveColumns: AdaptiveColumnsController\r\n },\r\n extenders: {\r\n views: {\r\n rowsView: {\r\n _getCellTemplate: function(options) {\r\n var that = this;\r\n var column = options.column;\r\n if (options.rowType === ADAPTIVE_ROW_TYPE && \"detail\" === column.command) {\r\n return function(container, options) {\r\n that._adaptiveColumnsController.createFormByHiddenColumns((0, _renderer.default)(container), options)\r\n }\r\n }\r\n return that.callBase(options)\r\n },\r\n _createRow: function(row) {\r\n var $row = this.callBase(row);\r\n if (row && row.rowType === ADAPTIVE_ROW_TYPE && row.key === this._dataController.adaptiveExpandedKey()) {\r\n $row.addClass(ADAPTIVE_DETAIL_ROW_CLASS)\r\n }\r\n return $row\r\n },\r\n _renderCells: function($row, options) {\r\n this.callBase($row, options);\r\n var adaptiveColumnsController = this._adaptiveColumnsController;\r\n var hidingColumnsQueueLength = adaptiveColumnsController.getHidingColumnsQueue().length;\r\n var hiddenColumnsLength = adaptiveColumnsController.getHiddenColumns().length;\r\n if (hidingColumnsQueueLength && !hiddenColumnsLength) {\r\n getDataCellElements($row).last().addClass(LAST_DATA_CELL_CLASS)\r\n }\r\n if (\"data\" === options.row.rowType) {\r\n adaptiveColumnsController.setCommandAdaptiveAriaLabel($row, EXPAND_ARIA_NAME)\r\n }\r\n },\r\n _getColumnIndexByElementCore: function($element) {\r\n var $itemContent = $element.closest(\".\" + FORM_ITEM_CONTENT_CLASS);\r\n if ($itemContent.length && $itemContent.closest(this.component.$element()).length) {\r\n var formItem = $itemContent.length ? $itemContent.first().data(\"dx-form-item\") : null;\r\n return formItem && formItem.column && this._columnsController.getVisibleIndex(formItem.column.index)\r\n } else {\r\n return this.callBase($element)\r\n }\r\n },\r\n _cellPrepared: function($cell, options) {\r\n this.callBase.apply(this, arguments);\r\n if (options.row.rowType !== ADAPTIVE_ROW_TYPE && options.column.visibleWidth === HIDDEN_COLUMNS_WIDTH) {\r\n $cell.addClass(this.addWidgetPrefix(HIDDEN_COLUMN_CLASS))\r\n }\r\n },\r\n _getCellElement: function(rowIndex, columnIdentifier) {\r\n var item = this._dataController.items()[rowIndex];\r\n if (item && item.rowType === ADAPTIVE_ROW_TYPE) {\r\n return this._adaptiveColumnsController.getItemContentByColumnIndex(columnIdentifier)\r\n } else {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n },\r\n getContextMenuItems: function(options) {\r\n if (options.row && \"detailAdaptive\" === options.row.rowType) {\r\n var view = this.component.getView(\"columnHeadersView\");\r\n var formItem = (0, _renderer.default)(options.targetElement).closest(\".dx-field-item-label\").next().data(\"dx-form-item\");\r\n options.column = formItem ? formItem.column : options.column;\r\n return view.getContextMenuItems && view.getContextMenuItems(options)\r\n }\r\n return this.callBase && this.callBase(options)\r\n },\r\n isClickableElement: function($target) {\r\n var isClickable = this.callBase ? this.callBase($target) : false;\r\n return isClickable || !!$target.closest(\".\" + ADAPTIVE_COLUMN_NAME_CLASS).length\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._adaptiveColumnsController = this.getController(\"adaptiveColumns\")\r\n }\r\n }\r\n },\r\n controllers: {\r\n \"export\": {\r\n _updateColumnWidth: function(column, width) {\r\n this.callBase(column, column.visibleWidth === HIDDEN_COLUMNS_WIDTH ? column.bestFitWidth : width)\r\n }\r\n },\r\n columnsResizer: {\r\n _pointCreated: function(point, cellsLength, columns) {\r\n var result = this.callBase(point, cellsLength, columns);\r\n var currentColumn = columns[point.columnIndex] || {};\r\n var nextColumnIndex = this._getNextColumnIndex(point.columnIndex);\r\n var nextColumn = columns[nextColumnIndex] || {};\r\n var hasHiddenColumnsOnly = nextColumnIndex !== point.columnIndex + 1 && nextColumn.command;\r\n var hasAdaptiveHiddenWidth = currentColumn.visibleWidth === HIDDEN_COLUMNS_WIDTH || hasHiddenColumnsOnly;\r\n return result || hasAdaptiveHiddenWidth\r\n },\r\n _getNextColumnIndex: function(currentColumnIndex) {\r\n var visibleColumns = this._columnsController.getVisibleColumns();\r\n var index = this.callBase(currentColumnIndex);\r\n while (visibleColumns[index] && visibleColumns[index].visibleWidth === HIDDEN_COLUMNS_WIDTH) {\r\n index++\r\n }\r\n return index\r\n }\r\n },\r\n draggingHeader: {\r\n _pointCreated: function(point, columns, location, sourceColumn) {\r\n var result = this.callBase(point, columns, location, sourceColumn);\r\n var column = columns[point.columnIndex - 1] || {};\r\n var hasAdaptiveHiddenWidth = column.visibleWidth === HIDDEN_COLUMNS_WIDTH;\r\n return result || hasAdaptiveHiddenWidth\r\n }\r\n },\r\n editing: {\r\n _isRowEditMode: function() {\r\n return this.getEditMode() === EDIT_MODE_ROW\r\n },\r\n _getFormEditItemTemplate: function(cellOptions, column) {\r\n if (this.getEditMode() !== EDIT_MODE_ROW && \"detailAdaptive\" === cellOptions.rowType) {\r\n cellOptions.columnIndex = this._columnsController.getVisibleIndex(column.index);\r\n return this.getColumnTemplate(cellOptions)\r\n }\r\n return this.callBase(cellOptions, column)\r\n },\r\n _closeEditItem: function($targetElement) {\r\n var $itemContents = $targetElement.closest(\".\" + FORM_ITEM_CONTENT_CLASS);\r\n var rowIndex = this._dataController.getRowIndexByKey(this._dataController.adaptiveExpandedKey()) + 1;\r\n var formItem = $itemContents.length ? $itemContents.first().data(\"dx-form-item\") : null;\r\n var columnIndex = formItem && formItem.column && this._columnsController.getVisibleIndex(formItem.column.index);\r\n if (!this.isEditCell(rowIndex, columnIndex)) {\r\n this.callBase($targetElement)\r\n }\r\n },\r\n _beforeUpdateItems: function(rowIndices, rowIndex) {\r\n if (!this._adaptiveController.isFormEditMode() && this._adaptiveController.hasHiddenColumns()) {\r\n var items = this._dataController.items();\r\n var item = items[rowIndex];\r\n var oldExpandRowIndex = _uiGrid_core2.default.getIndexByKey(this._dataController.adaptiveExpandedKey(), items);\r\n this._isForceRowAdaptiveExpand = !this._adaptiveController.hasAdaptiveDetailRowExpanded();\r\n if (oldExpandRowIndex >= 0) {\r\n rowIndices.push(oldExpandRowIndex + 1)\r\n }\r\n rowIndices.push(rowIndex + 1);\r\n this._dataController.adaptiveExpandedKey(item.key)\r\n }\r\n },\r\n _afterInsertRow: function(options) {\r\n this.callBase(options);\r\n if (this._adaptiveController.hasHiddenColumns()) {\r\n this._adaptiveController.toggleExpandAdaptiveDetailRow(options.key, this.isRowEditMode());\r\n this._isForceRowAdaptiveExpand = true\r\n }\r\n },\r\n _collapseAdaptiveDetailRow: function() {\r\n if (this._isRowEditMode() && this._isForceRowAdaptiveExpand) {\r\n this._adaptiveController.collapseAdaptiveDetailRow();\r\n this._isForceRowAdaptiveExpand = false\r\n }\r\n },\r\n _cancelEditAdaptiveDetailRow: function() {\r\n if (this._adaptiveController.hasHiddenColumns()) {\r\n this._collapseAdaptiveDetailRow()\r\n }\r\n },\r\n _afterSaveEditData: function() {\r\n var _this2 = this;\r\n this.callBase.apply(this, arguments);\r\n var deferred = new _deferred.Deferred;\r\n if (this._isRowEditMode() && this._adaptiveController.hasHiddenColumns()) {\r\n (0, _deferred.when)(this.getController(\"validating\").validate(true)).done(function(isValid) {\r\n if (isValid) {\r\n _this2._cancelEditAdaptiveDetailRow()\r\n }\r\n deferred.resolve()\r\n })\r\n } else {\r\n deferred.resolve()\r\n }\r\n return deferred.promise()\r\n },\r\n _beforeCancelEditData: function() {\r\n this.callBase();\r\n this._cancelEditAdaptiveDetailRow()\r\n },\r\n _getRowIndicesForCascadeUpdating: function(row) {\r\n var rowIndices = this.callBase.apply(this, arguments);\r\n if (this._adaptiveController.isAdaptiveDetailRowExpanded(row.key)) {\r\n rowIndices.push(row.rowType === ADAPTIVE_ROW_TYPE ? row.rowIndex - 1 : row.rowIndex + 1)\r\n }\r\n return rowIndices\r\n },\r\n _beforeCloseEditCellInBatchMode: function(rowIndices) {\r\n var expandedKey = this._dataController._adaptiveExpandedKey;\r\n if (expandedKey) {\r\n var rowIndex = _uiGrid_core2.default.getIndexByKey(expandedKey, this._dataController.items());\r\n if (rowIndex > -1) {\r\n rowIndices.unshift(rowIndex)\r\n }\r\n }\r\n },\r\n editRow: function(rowIndex) {\r\n if (this._adaptiveController.isFormEditMode()) {\r\n this._adaptiveController.collapseAdaptiveDetailRow()\r\n }\r\n this.callBase(rowIndex)\r\n },\r\n deleteRow: function(rowIndex) {\r\n var rowKey = this._dataController.getKeyByRowIndex(rowIndex);\r\n if (this.getEditMode() === EDIT_MODE_BATCH && this._adaptiveController.isAdaptiveDetailRowExpanded(rowKey)) {\r\n this._adaptiveController.collapseAdaptiveDetailRow()\r\n }\r\n this.callBase(rowIndex)\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._adaptiveController = this.getController(\"adaptiveColumns\")\r\n }\r\n },\r\n resizing: {\r\n _needBestFit: function() {\r\n return this.callBase() || !!this._adaptiveColumnsController.getHidingColumnsQueue().length\r\n },\r\n _updateScrollableForIE: function() {\r\n var that = this;\r\n if (_browser.default.msie && parseInt(_browser.default.version) <= 11) {\r\n this._updateScrollableTimeoutID = setTimeout(function() {\r\n that.getView(\"rowsView\")._updateScrollable()\r\n })\r\n }\r\n },\r\n _correctColumnWidths: function(resultWidths, visibleColumns) {\r\n var adaptiveController = this._adaptiveColumnsController;\r\n var columnAutoWidth = this.option(\"columnAutoWidth\");\r\n var oldHiddenColumns = adaptiveController.getHiddenColumns();\r\n var hidingColumnsQueue = adaptiveController.updateHidingQueue(this._columnsController.getColumns());\r\n adaptiveController.hideRedundantColumns(resultWidths, visibleColumns, hidingColumnsQueue);\r\n var hiddenColumns = adaptiveController.getHiddenColumns();\r\n if (adaptiveController.hasAdaptiveDetailRowExpanded()) {\r\n if (oldHiddenColumns.length !== hiddenColumns.length) {\r\n adaptiveController.updateForm(hiddenColumns)\r\n }\r\n }!hiddenColumns.length && adaptiveController.collapseAdaptiveDetailRow();\r\n if (columnAutoWidth && hidingColumnsQueue.length && !hiddenColumns.length) {\r\n this._updateScrollableForIE()\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _toggleBestFitMode: function(isBestFit) {\r\n isBestFit && this._adaptiveColumnsController._showHiddenColumns();\r\n this.callBase(isBestFit)\r\n },\r\n _needStretch: function() {\r\n var adaptiveColumnsController = this._adaptiveColumnsController;\r\n return this.callBase.apply(this, arguments) || adaptiveColumnsController.getHidingColumnsQueue().length || adaptiveColumnsController.hasHiddenColumns()\r\n },\r\n init: function() {\r\n this._adaptiveColumnsController = this.getController(\"adaptiveColumns\");\r\n this.callBase()\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n clearTimeout(this._updateScrollableTimeoutID)\r\n }\r\n },\r\n data: {\r\n _processItems: function(items, change) {\r\n var that = this;\r\n var changeType = change.changeType;\r\n items = that.callBase.apply(that, arguments);\r\n if (\"loadingAll\" === changeType || !(0, _type.isDefined)(that._adaptiveExpandedKey)) {\r\n return items\r\n }\r\n var expandRowIndex = _uiGrid_core2.default.getIndexByKey(that._adaptiveExpandedKey, items);\r\n if (expandRowIndex >= 0) {\r\n var item = items[expandRowIndex];\r\n items.splice(expandRowIndex + 1, 0, {\r\n visible: true,\r\n rowType: ADAPTIVE_ROW_TYPE,\r\n key: item.key,\r\n data: item.data,\r\n node: item.node,\r\n modifiedValues: item.modifiedValues,\r\n isNewRow: item.isNewRow,\r\n values: item.values\r\n })\r\n } else {\r\n if (\"refresh\" === changeType) {\r\n that._adaptiveExpandedKey = void 0\r\n }\r\n }\r\n return items\r\n },\r\n _getRowIndicesForExpand: function(key) {\r\n var rowIndices = this.callBase.apply(this, arguments);\r\n if (this.getController(\"adaptiveColumns\").isAdaptiveDetailRowExpanded(key)) {\r\n var lastRowIndex = rowIndices[rowIndices.length - 1];\r\n rowIndices.push(lastRowIndex + 1)\r\n }\r\n return rowIndices\r\n },\r\n adaptiveExpandedKey: function(value) {\r\n if ((0, _type.isDefined)(value)) {\r\n this._adaptiveExpandedKey = value\r\n } else {\r\n return this._adaptiveExpandedKey\r\n }\r\n },\r\n toggleExpandAdaptiveDetailRow: function(key, alwaysExpanded) {\r\n var that = this;\r\n var oldExpandLoadedRowIndex = _uiGrid_core2.default.getIndexByKey(that._adaptiveExpandedKey, that._items);\r\n var newExpandLoadedRowIndex = _uiGrid_core2.default.getIndexByKey(key, that._items);\r\n if (oldExpandLoadedRowIndex >= 0 && oldExpandLoadedRowIndex === newExpandLoadedRowIndex && !alwaysExpanded) {\r\n key = void 0;\r\n newExpandLoadedRowIndex = -1\r\n }\r\n var oldKey = that._adaptiveExpandedKey;\r\n that._adaptiveExpandedKey = key;\r\n if (oldExpandLoadedRowIndex >= 0) {\r\n oldExpandLoadedRowIndex++\r\n }\r\n if (newExpandLoadedRowIndex >= 0) {\r\n newExpandLoadedRowIndex++\r\n }\r\n var rowIndexDelta = that.getRowIndexDelta();\r\n that.updateItems({\r\n allowInvisibleRowIndices: true,\r\n changeType: \"update\",\r\n rowIndices: [oldExpandLoadedRowIndex - rowIndexDelta, newExpandLoadedRowIndex - rowIndexDelta]\r\n });\r\n var adaptiveColumnsController = this.getController(\"adaptiveColumns\");\r\n adaptiveColumnsController.updateCommandAdaptiveAriaLabel(key, COLLAPSE_ARIA_NAME);\r\n adaptiveColumnsController.updateCommandAdaptiveAriaLabel(oldKey, EXPAND_ARIA_NAME)\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._adaptiveExpandedKey = void 0\r\n }\r\n },\r\n editorFactory: {\r\n _getFocusCellSelector: function() {\r\n return this.callBase() + \", .dx-adaptive-detail-row .dx-field-item > .dx-field-item-content\"\r\n },\r\n _getTooltipsSelector: function() {\r\n return this.callBase() + \", .dx-field-item-content .\" + this.addWidgetPrefix(REVERT_TOOLTIP_CLASS)\r\n }\r\n },\r\n columns: {\r\n _isColumnVisible: function(column) {\r\n return this.callBase(column) && !column.adaptiveHidden\r\n }\r\n },\r\n keyboardNavigation: {\r\n _isCellValid: function($cell) {\r\n return this.callBase.apply(this, arguments) && !$cell.hasClass(this.addWidgetPrefix(HIDDEN_COLUMN_CLASS))\r\n },\r\n _processNextCellInMasterDetail: function($nextCell) {\r\n this.callBase($nextCell);\r\n var isCellOrBatchMode = this._editingController.isCellOrBatchEditMode();\r\n if (!this._isInsideEditForm($nextCell) && $nextCell && isCellOrBatchMode) {\r\n var focusHandler = function focusHandler() {\r\n _events_engine.default.off($nextCell, \"focus\", focusHandler);\r\n _events_engine.default.trigger($nextCell, \"dxclick\")\r\n };\r\n _events_engine.default.on($nextCell, \"focus\", focusHandler)\r\n }\r\n },\r\n _handleTabKeyOnMasterDetailCell: function(eventTarget, direction) {\r\n var result = this.callBase(eventTarget, direction);\r\n var $currentCell = this._getFocusedCell();\r\n var $row = $currentCell && $currentCell.parent();\r\n if (!result && $row && $row.length) {\r\n var $dataCells = getDataCellElements($row);\r\n var $targetCell = \"next\" === direction ? $dataCells.last() : $dataCells.first();\r\n var rowIndex = $row.get(0).rowIndex;\r\n var adaptiveController = this._adaptiveController;\r\n var key = this._dataController.getKeyByRowIndex(\"next\" === direction ? rowIndex : rowIndex - 1);\r\n var isCellElementsEquals = $currentCell && $targetCell && $currentCell.get(0) === $targetCell.get(0);\r\n return adaptiveController.isAdaptiveDetailRowExpanded(key) && isCellElementsEquals\r\n }\r\n return result\r\n },\r\n init: function() {\r\n this.callBase();\r\n this._adaptiveController = this.getController(\"adaptiveColumns\")\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/data_grid/ui.data_grid.editor_factory.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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 var valueText = \"\";\r\n if (result) {\r\n valueText = lookup.displayExpr ? (0, _data.compileGetter)(lookup.displayExpr)(result) : result\r\n }\r\n if (field.customizeText) {\r\n valueText = field.customizeText({\r\n value: value,\r\n valueText: valueText\r\n })\r\n }\r\n handler(valueText)\r\n }).fail(function() {\r\n handler(\"\")\r\n })\r\n }\r\n}\r\n\r\nfunction getPrimitiveValueText(field, value, customOperation, target) {\r\n var valueText;\r\n if (true === value) {\r\n valueText = field.trueText || _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _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(true)\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"card-form\",attrs:{\"id\":\"ler_table\"}},[_c('div',{staticClass:\"div-form\"},[_c('div',{staticClass:\"form-template\"},[_c('v-card-text',[_c('v-toolbar',{staticClass:\"toolbar-devExtreme-table\"},[_c('v-toolbar-title',[_c('h1',[_vm._v(\" \"+_vm._s(_vm.$t('maestro-configuracion.codigo-ler'))+\" \")])]),_c('v-spacer')],1),_c('dx-data-grid',{attrs:{\"data-source\":_vm.lerCodeList,\"columns\":_vm.columns,\"show-borders\":true,\"key-expr\":\"id\"},on:{\"row-inserted\":_vm.rowInserted,\"row-updated\":_vm.rowUpdated,\"row-removed\":_vm.rowRemoved,\"init-new-row\":_vm.initNewRow}},[_c('dx-paging',{attrs:{\"page-size\":_vm.pageSize}}),_c('dx-selection'),_c('dx-header-filter',{attrs:{\"visible\":true}}),_c('dx-filter-row',{attrs:{\"visible\":true}}),_c('dx-filter-panel',{attrs:{\"visible\":true}}),_c('dx-export',{attrs:{\"enabled\":true,\"file-name\":\"LerCodes\"}}),_c('dx-editing',{attrs:{\"allow-updating\":true,\"allow-deleting\":true,\"allow-adding\":true,\"mode\":\"row\",\"use-icons\":true}}),_c('dx-column-chooser',{attrs:{\"enabled\":true}})],1)],1)],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { getModule, Module, VuexModule, Mutation, Action } from 'vuex-module-decorators';\nimport { store } from '@/iti-core-vue';\nimport { LerCode } from '@/shared/dtos/ler-code';\nimport { itiTokenService } from '@/iti-core-vue/services/iti-token-service';\nimport { ItiString, itiHttpService } from '@/iti-core-vue';\nimport { API } from '@/shared/api';\n\n\n\n@Module({\n namespaced: true,\n name: 'LerCodeModule',\n store,\n dynamic: true,\n})\n\nclass LerCodeModule extends VuexModule implements BaseModule {\n public lerCodes: LerCode[] = [];\n\n @Mutation\n public resetState(): void {\n this.lerCodes = [];\n }\n\n @Action\n public async getLerCodes() {\n if (!itiTokenService.hasToken()) { return; }\n const res = await itiHttpService.get(API.lerCode);\n this.context.commit('updateLerCodes', res);\n }\n\n @Mutation\n public updateLerCodes(items: LerCode[]) {\n this.lerCodes = items;\n }\n\n @Action\n public async insertarLerCode(item: LerCode){\n if (!itiTokenService.hasToken()) { return; }\n const res = await itiHttpService.post(API.lerCode, item, false);\n this.context.dispatch('getLerCodes');\n }\n\n @Action\n public async modificarLerCode(item: LerCode){\n if (!itiTokenService.hasToken()) { return; }\n try{\n const res = await itiHttpService.put(API.lerCode, item, false);\n } catch {\n // ..\n }\n this.context.dispatch('getLerCodes');\n }\n\n @Action\n public async eliminarLerCode(id: number){\n if (!itiTokenService.hasToken()) { return; }\n const apiDeleteLerCode = ItiString.Format(API.lerCodeDetail, id);\n const res = await itiHttpService.delete(apiDeleteLerCode, id, false);\n this.context.dispatch('getLerCodes');\n } \n}\n\nexport default getModule(LerCodeModule);","import { ItiBaseDto } from '@/iti-core-vue';\n\nexport class LerCode extends ItiBaseDto {\n public code !: string;\n public description !: string;\n}","import { Component, Vue } from 'vue-property-decorator';\nimport lerCodeModule from '@/store/modules/ler-code.module'\nimport { LerCode } from '@/shared/dtos/ler-code';\nimport DxDataGrid, { DxSelection, DxPaging, DxHeaderFilter, DxEditing, DxColumn, DxFilterRow, DxFilterPanel, DxExport, DxColumnChooser } from 'devextreme-vue/data-grid';\n\n\n\n@Component({\n components: {\n DxDataGrid,\n DxSelection,\n DxPaging,\n DxHeaderFilter,\n DxEditing,\n DxColumn,\n DxFilterRow,\n DxFilterPanel,\n DxExport,\n DxColumnChooser\n },\n})\n\nexport default class LerLista extends Vue {\n\n public pageSize: number = 15;\n public maxWidth: number = 500;\n public addHidden = true;\n public loading = false;\n public search = '';\n public lerCode: LerCode = new LerCode();\n\n public get lerCodeList() {\n return lerCodeModule.lerCodes;\n }\n\n public get columns() {\n return [\n { dataField: 'id', allowEditing: false },\n { dataField: 'code', caption: this.$tc('maestro-configuracion.codigo'), allowEditing: true },\n { dataField: 'description', caption: this.$tc('maestro-configuracion.descripcion'), allowEditing: true},\n ]\n }\n\n public mounted() {\n lerCodeModule.getLerCodes();\n }\n\n public rowInserted(e: any){\n lerCodeModule.insertarLerCode(e.data);\n }\n\n public rowUpdated(e: any){\n lerCodeModule.modificarLerCode(e.data);\n }\n \n public rowRemoved(e: any){\n lerCodeModule.eliminarLerCode(e.key);\n }\n\n public initNewRow(e: any){\n e.data.id = 0;\n }\n}","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/eslint-loader/index.js??ref--13-0!./ler-list.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/eslint-loader/index.js??ref--13-0!./ler-list.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ler-list.html?vue&type=template&id=35a36040&\"\nimport script from \"./ler-list.ts?vue&type=script&lang=ts&\"\nexport * from \"./ler-list.ts?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VCard,VCardText,VSpacer,VToolbar,VToolbarTitle})\n","/**\r\n * DevExtreme (exporter/excel/excel.pattern_fill_helper.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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","/**\r\n * DevExtreme (color.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar standardColorNames = {\r\n aliceblue: \"f0f8ff\",\r\n antiquewhite: \"faebd7\",\r\n aqua: \"00ffff\",\r\n aquamarine: \"7fffd4\",\r\n azure: \"f0ffff\",\r\n beige: \"f5f5dc\",\r\n bisque: \"ffe4c4\",\r\n black: \"000000\",\r\n blanchedalmond: \"ffebcd\",\r\n blue: \"0000ff\",\r\n blueviolet: \"8a2be2\",\r\n brown: \"a52a2a\",\r\n burlywood: \"deb887\",\r\n cadetblue: \"5f9ea0\",\r\n chartreuse: \"7fff00\",\r\n chocolate: \"d2691e\",\r\n coral: \"ff7f50\",\r\n cornflowerblue: \"6495ed\",\r\n cornsilk: \"fff8dc\",\r\n crimson: \"dc143c\",\r\n cyan: \"00ffff\",\r\n darkblue: \"00008b\",\r\n darkcyan: \"008b8b\",\r\n darkgoldenrod: \"b8860b\",\r\n darkgray: \"a9a9a9\",\r\n darkgreen: \"006400\",\r\n darkkhaki: \"bdb76b\",\r\n darkmagenta: \"8b008b\",\r\n darkolivegreen: \"556b2f\",\r\n darkorange: \"ff8c00\",\r\n darkorchid: \"9932cc\",\r\n darkred: \"8b0000\",\r\n darksalmon: \"e9967a\",\r\n darkseagreen: \"8fbc8f\",\r\n darkslateblue: \"483d8b\",\r\n darkslategray: \"2f4f4f\",\r\n darkturquoise: \"00ced1\",\r\n darkviolet: \"9400d3\",\r\n deeppink: \"ff1493\",\r\n deepskyblue: \"00bfff\",\r\n dimgray: \"696969\",\r\n dodgerblue: \"1e90ff\",\r\n feldspar: \"d19275\",\r\n firebrick: \"b22222\",\r\n floralwhite: \"fffaf0\",\r\n forestgreen: \"228b22\",\r\n fuchsia: \"ff00ff\",\r\n gainsboro: \"dcdcdc\",\r\n ghostwhite: \"f8f8ff\",\r\n gold: \"ffd700\",\r\n goldenrod: \"daa520\",\r\n gray: \"808080\",\r\n green: \"008000\",\r\n greenyellow: \"adff2f\",\r\n honeydew: \"f0fff0\",\r\n hotpink: \"ff69b4\",\r\n indianred: \"cd5c5c\",\r\n indigo: \"4b0082\",\r\n ivory: \"fffff0\",\r\n khaki: \"f0e68c\",\r\n lavender: \"e6e6fa\",\r\n lavenderblush: \"fff0f5\",\r\n lawngreen: \"7cfc00\",\r\n lemonchiffon: \"fffacd\",\r\n lightblue: \"add8e6\",\r\n lightcoral: \"f08080\",\r\n lightcyan: \"e0ffff\",\r\n lightgoldenrodyellow: \"fafad2\",\r\n lightgrey: \"d3d3d3\",\r\n lightgreen: \"90ee90\",\r\n lightpink: \"ffb6c1\",\r\n lightsalmon: \"ffa07a\",\r\n lightseagreen: \"20b2aa\",\r\n lightskyblue: \"87cefa\",\r\n lightslateblue: \"8470ff\",\r\n lightslategray: \"778899\",\r\n lightsteelblue: \"b0c4de\",\r\n lightyellow: \"ffffe0\",\r\n lime: \"00ff00\",\r\n limegreen: \"32cd32\",\r\n linen: \"faf0e6\",\r\n magenta: \"ff00ff\",\r\n maroon: \"800000\",\r\n mediumaquamarine: \"66cdaa\",\r\n mediumblue: \"0000cd\",\r\n mediumorchid: \"ba55d3\",\r\n mediumpurple: \"9370d8\",\r\n mediumseagreen: \"3cb371\",\r\n mediumslateblue: \"7b68ee\",\r\n mediumspringgreen: \"00fa9a\",\r\n mediumturquoise: \"48d1cc\",\r\n mediumvioletred: \"c71585\",\r\n midnightblue: \"191970\",\r\n mintcream: \"f5fffa\",\r\n mistyrose: \"ffe4e1\",\r\n moccasin: \"ffe4b5\",\r\n navajowhite: \"ffdead\",\r\n navy: \"000080\",\r\n oldlace: \"fdf5e6\",\r\n olive: \"808000\",\r\n olivedrab: \"6b8e23\",\r\n orange: \"ffa500\",\r\n orangered: \"ff4500\",\r\n orchid: \"da70d6\",\r\n palegoldenrod: \"eee8aa\",\r\n palegreen: \"98fb98\",\r\n paleturquoise: \"afeeee\",\r\n palevioletred: \"d87093\",\r\n papayawhip: \"ffefd5\",\r\n peachpuff: \"ffdab9\",\r\n peru: \"cd853f\",\r\n pink: \"ffc0cb\",\r\n plum: \"dda0dd\",\r\n powderblue: \"b0e0e6\",\r\n purple: \"800080\",\r\n rebeccapurple: \"663399\",\r\n red: \"ff0000\",\r\n rosybrown: \"bc8f8f\",\r\n royalblue: \"4169e1\",\r\n saddlebrown: \"8b4513\",\r\n salmon: \"fa8072\",\r\n sandybrown: \"f4a460\",\r\n seagreen: \"2e8b57\",\r\n seashell: \"fff5ee\",\r\n sienna: \"a0522d\",\r\n silver: \"c0c0c0\",\r\n skyblue: \"87ceeb\",\r\n slateblue: \"6a5acd\",\r\n slategray: \"708090\",\r\n snow: \"fffafa\",\r\n springgreen: \"00ff7f\",\r\n steelblue: \"4682b4\",\r\n tan: \"d2b48c\",\r\n teal: \"008080\",\r\n thistle: \"d8bfd8\",\r\n tomato: \"ff6347\",\r\n turquoise: \"40e0d0\",\r\n violet: \"ee82ee\",\r\n violetred: \"d02090\",\r\n wheat: \"f5deb3\",\r\n white: \"ffffff\",\r\n whitesmoke: \"f5f5f5\",\r\n yellow: \"ffff00\",\r\n yellowgreen: \"9acd32\"\r\n};\r\nvar standardColorTypes = [{\r\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\r\n process: function(colorString) {\r\n return [parseInt(colorString[1], 10), parseInt(colorString[2], 10), parseInt(colorString[3], 10)]\r\n }\r\n}, {\r\n re: /^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d*\\.*\\d+)\\)$/,\r\n process: function(colorString) {\r\n return [parseInt(colorString[1], 10), parseInt(colorString[2], 10), parseInt(colorString[3], 10), parseFloat(colorString[4])]\r\n }\r\n}, {\r\n re: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/,\r\n process: function(colorString) {\r\n return [parseInt(colorString[1], 16), parseInt(colorString[2], 16), parseInt(colorString[3], 16)]\r\n }\r\n}, {\r\n re: /^#([a-f0-9]{1})([a-f0-9]{1})([a-f0-9]{1})$/,\r\n process: function(colorString) {\r\n return [parseInt(colorString[1] + colorString[1], 16), parseInt(colorString[2] + colorString[2], 16), parseInt(colorString[3] + colorString[3], 16)]\r\n }\r\n}, {\r\n re: /^hsv\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\r\n process: function(colorString) {\r\n var h = parseInt(colorString[1], 10);\r\n var s = parseInt(colorString[2], 10);\r\n var v = parseInt(colorString[3], 10);\r\n var rgb = hsvToRgb(h, s, v);\r\n return [rgb[0], rgb[1], rgb[2], 1, [h, s, v]]\r\n }\r\n}, {\r\n re: /^hsl\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\r\n process: function(colorString) {\r\n var h = parseInt(colorString[1], 10);\r\n var s = parseInt(colorString[2], 10);\r\n var l = parseInt(colorString[3], 10);\r\n var rgb = hslToRgb(h, s, l);\r\n return [rgb[0], rgb[1], rgb[2], 1, null, [h, s, l]]\r\n }\r\n}];\r\nvar _round = Math.round;\r\n\r\nfunction Color(value) {\r\n this.baseColor = value;\r\n var color;\r\n if (value) {\r\n color = String(value).toLowerCase().replace(/ /g, \"\");\r\n color = standardColorNames[color] ? \"#\" + standardColorNames[color] : color;\r\n color = parseColor(color)\r\n }\r\n if (!color) {\r\n this.colorIsInvalid = true\r\n }\r\n color = color || {};\r\n this.r = normalize(color[0]);\r\n this.g = normalize(color[1]);\r\n this.b = normalize(color[2]);\r\n this.a = normalize(color[3], 1, 1);\r\n if (color[4]) {\r\n this.hsv = {\r\n h: color[4][0],\r\n s: color[4][1],\r\n v: color[4][2]\r\n }\r\n } else {\r\n this.hsv = toHsvFromRgb(this.r, this.g, this.b)\r\n }\r\n if (color[5]) {\r\n this.hsl = {\r\n h: color[5][0],\r\n s: color[5][1],\r\n l: color[5][2]\r\n }\r\n } else {\r\n this.hsl = toHslFromRgb(this.r, this.g, this.b)\r\n }\r\n}\r\n\r\nfunction parseColor(color) {\r\n if (\"transparent\" === color) {\r\n return [0, 0, 0, 0]\r\n }\r\n var i = 0;\r\n var ii = standardColorTypes.length;\r\n var str;\r\n for (; i < ii; ++i) {\r\n str = standardColorTypes[i].re.exec(color);\r\n if (str) {\r\n return standardColorTypes[i].process(str)\r\n }\r\n }\r\n return null\r\n}\r\n\r\nfunction normalize(colorComponent, def, max) {\r\n def = def || 0;\r\n max = max || 255;\r\n return colorComponent < 0 || isNaN(colorComponent) ? def : colorComponent > max ? max : colorComponent\r\n}\r\n\r\nfunction toHexFromRgb(r, g, b) {\r\n return \"#\" + (16777216 | r << 16 | g << 8 | b).toString(16).slice(1)\r\n}\r\n\r\nfunction toHsvFromRgb(r, g, b) {\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var delta = max - min;\r\n var H;\r\n var S;\r\n var V = max;\r\n S = 0 === max ? 0 : 1 - min / max;\r\n if (max === min) {\r\n H = 0\r\n } else {\r\n switch (max) {\r\n case r:\r\n H = 60 * ((g - b) / delta);\r\n if (g < b) {\r\n H += 360\r\n }\r\n break;\r\n case g:\r\n H = 60 * ((b - r) / delta) + 120;\r\n break;\r\n case b:\r\n H = 60 * ((r - g) / delta) + 240\r\n }\r\n }\r\n S *= 100;\r\n V *= 100 / 255;\r\n return {\r\n h: Math.round(H),\r\n s: Math.round(S),\r\n v: Math.round(V)\r\n }\r\n}\r\n\r\nfunction hsvToRgb(h, s, v) {\r\n var index = Math.floor(h % 360 / 60);\r\n var vMin = (100 - s) * v / 100;\r\n var a = (v - vMin) * (h % 60 / 60);\r\n var vInc = vMin + a;\r\n var vDec = v - a;\r\n var r;\r\n var g;\r\n var b;\r\n switch (index) {\r\n case 0:\r\n r = v;\r\n g = vInc;\r\n b = vMin;\r\n break;\r\n case 1:\r\n r = vDec;\r\n g = v;\r\n b = vMin;\r\n break;\r\n case 2:\r\n r = vMin;\r\n g = v;\r\n b = vInc;\r\n break;\r\n case 3:\r\n r = vMin;\r\n g = vDec;\r\n b = v;\r\n break;\r\n case 4:\r\n r = vInc;\r\n g = vMin;\r\n b = v;\r\n break;\r\n case 5:\r\n r = v;\r\n g = vMin;\r\n b = vDec\r\n }\r\n return [Math.round(2.55 * r), Math.round(2.55 * g), Math.round(2.55 * b)]\r\n}\r\n\r\nfunction calculateHue(r, g, b, delta) {\r\n var max = Math.max(r, g, b);\r\n switch (max) {\r\n case r:\r\n return (g - b) / delta + (g < b ? 6 : 0);\r\n case g:\r\n return (b - r) / delta + 2;\r\n case b:\r\n return (r - g) / delta + 4\r\n }\r\n}\r\n\r\nfunction toHslFromRgb(r, g, b) {\r\n r = convertTo01Bounds(r, 255);\r\n g = convertTo01Bounds(g, 255);\r\n b = convertTo01Bounds(b, 255);\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var maxMinSum = max + min;\r\n var h;\r\n var s;\r\n var l = maxMinSum / 2;\r\n if (max === min) {\r\n h = s = 0\r\n } else {\r\n var delta = max - min;\r\n if (l > .5) {\r\n s = delta / (2 - maxMinSum)\r\n } else {\r\n s = delta / maxMinSum\r\n }\r\n h = calculateHue(r, g, b, delta);\r\n h /= 6\r\n }\r\n return {\r\n h: _round(360 * h),\r\n s: _round(100 * s),\r\n l: _round(100 * l)\r\n }\r\n}\r\n\r\nfunction makeColorTint(colorPart, h) {\r\n var colorTint = h;\r\n if (\"r\" === colorPart) {\r\n colorTint = h + 1 / 3\r\n }\r\n if (\"b\" === colorPart) {\r\n colorTint = h - 1 / 3\r\n }\r\n return colorTint\r\n}\r\n\r\nfunction modifyColorTint(colorTint) {\r\n if (colorTint < 0) {\r\n colorTint += 1\r\n }\r\n if (colorTint > 1) {\r\n colorTint -= 1\r\n }\r\n return colorTint\r\n}\r\n\r\nfunction hueToRgb(p, q, colorTint) {\r\n colorTint = modifyColorTint(colorTint);\r\n if (colorTint < 1 / 6) {\r\n return p + 6 * (q - p) * colorTint\r\n }\r\n if (colorTint < .5) {\r\n return q\r\n }\r\n if (colorTint < 2 / 3) {\r\n return p + (q - p) * (2 / 3 - colorTint) * 6\r\n }\r\n return p\r\n}\r\n\r\nfunction hslToRgb(h, s, l) {\r\n var r;\r\n var g;\r\n var b;\r\n h = convertTo01Bounds(h, 360);\r\n s = convertTo01Bounds(s, 100);\r\n l = convertTo01Bounds(l, 100);\r\n if (0 === s) {\r\n r = g = b = l\r\n } else {\r\n var q = l < .5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hueToRgb(p, q, makeColorTint(\"r\", h));\r\n g = hueToRgb(p, q, makeColorTint(\"g\", h));\r\n b = hueToRgb(p, q, makeColorTint(\"b\", h))\r\n }\r\n return [_round(255 * r), _round(255 * g), _round(255 * b)]\r\n}\r\n\r\nfunction convertTo01Bounds(n, max) {\r\n n = Math.min(max, Math.max(0, parseFloat(n)));\r\n if (Math.abs(n - max) < 1e-6) {\r\n return 1\r\n }\r\n return n % max / parseFloat(max)\r\n}\r\n\r\nfunction isIntegerBetweenMinAndMax(number, min, max) {\r\n min = min || 0;\r\n max = max || 255;\r\n if (number % 1 !== 0 || number < min || number > max || \"number\" !== typeof number || isNaN(number)) {\r\n return false\r\n }\r\n return true\r\n}\r\nColor.prototype = {\r\n constructor: Color,\r\n highlight: function(step) {\r\n step = step || 10;\r\n return this.alter(step).toHex()\r\n },\r\n darken: function(step) {\r\n step = step || 10;\r\n return this.alter(-step).toHex()\r\n },\r\n alter: function(step) {\r\n var result = new Color;\r\n result.r = normalize(this.r + step);\r\n result.g = normalize(this.g + step);\r\n result.b = normalize(this.b + step);\r\n return result\r\n },\r\n blend: function(blendColor, opacity) {\r\n var other = blendColor instanceof Color ? blendColor : new Color(blendColor);\r\n var result = new Color;\r\n result.r = normalize(_round(this.r * (1 - opacity) + other.r * opacity));\r\n result.g = normalize(_round(this.g * (1 - opacity) + other.g * opacity));\r\n result.b = normalize(_round(this.b * (1 - opacity) + other.b * opacity));\r\n return result\r\n },\r\n toHex: function() {\r\n return toHexFromRgb(this.r, this.g, this.b)\r\n },\r\n getPureColor: function() {\r\n var rgb = hsvToRgb(this.hsv.h, 100, 100);\r\n return new Color(\"rgb(\" + rgb.join(\",\") + \")\")\r\n },\r\n isValidHex: function(hex) {\r\n return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex)\r\n },\r\n isValidRGB: function(r, g, b) {\r\n if (!isIntegerBetweenMinAndMax(r) || !isIntegerBetweenMinAndMax(g) || !isIntegerBetweenMinAndMax(b)) {\r\n return false\r\n }\r\n return true\r\n },\r\n isValidAlpha: function(a) {\r\n if (isNaN(a) || a < 0 || a > 1 || \"number\" !== typeof a) {\r\n return false\r\n }\r\n return true\r\n },\r\n colorIsInvalid: false,\r\n fromHSL: function(hsl) {\r\n var color = new Color;\r\n var rgb = hslToRgb(hsl.h, hsl.s, hsl.l);\r\n color.r = rgb[0];\r\n color.g = rgb[1];\r\n color.b = rgb[2];\r\n return color\r\n }\r\n};\r\nvar _default = Color;\r\nexports.default = _default;\r\nmodule.exports = exports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"./ui.grid_core.utils\"));\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\r\nvar _custom_store = _interopRequireDefault(require(\"../../data/custom_store\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _data_helper = _interopRequireDefault(require(\"../../data_helper\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _array_compare = require(\"../../core/utils/array_compare\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n loadingTimeout: 0,\r\n dataSource: null,\r\n cacheEnabled: true,\r\n repaintChangesOnly: false,\r\n highlightChanges: false,\r\n onDataErrorOccurred: null,\r\n remoteOperations: \"auto\",\r\n paging: {\r\n enabled: true,\r\n pageSize: void 0,\r\n pageIndex: void 0\r\n }\r\n }\r\n },\r\n controllers: {\r\n data: _uiGrid_core.default.Controller.inherit({}).include(_data_helper.default).inherit(function() {\r\n var changePaging = function(that, optionName, value) {\r\n var dataSource = that._dataSource;\r\n if (dataSource) {\r\n if (void 0 !== value) {\r\n if (dataSource[optionName]() !== value) {\r\n if (\"pageSize\" === optionName) {\r\n dataSource.pageIndex(0)\r\n }\r\n dataSource[optionName](value);\r\n that._skipProcessingPagingChange = true;\r\n that.option(\"paging.\" + optionName, value);\r\n that._skipProcessingPagingChange = false;\r\n return dataSource[\"pageIndex\" === optionName ? \"load\" : \"reload\"]().done(that.pageChanged.fire.bind(that.pageChanged))\r\n }\r\n return (0, _deferred.Deferred)().resolve().promise()\r\n }\r\n return dataSource[optionName]()\r\n }\r\n return 0\r\n };\r\n var members = {\r\n init: function() {\r\n var _this = this;\r\n var that = this;\r\n that._items = [];\r\n that._columnsController = that.getController(\"columns\");\r\n that._currentOperationTypes = null;\r\n that._dataChangedHandler = function(e) {\r\n that._currentOperationTypes = _this._dataSource.operationTypes();\r\n that._handleDataChanged(e);\r\n that._currentOperationTypes = null\r\n };\r\n that._columnsChangedHandler = that._handleColumnsChanged.bind(that);\r\n that._loadingChangedHandler = that._handleLoadingChanged.bind(that);\r\n that._loadErrorHandler = that._handleLoadError.bind(that);\r\n that._customizeStoreLoadOptionsHandler = that._handleCustomizeStoreLoadOptions.bind(that);\r\n that._changingHandler = that._handleChanging.bind(that);\r\n that._columnsController.columnsChanged.add(that._columnsChangedHandler);\r\n that._isLoading = false;\r\n that._isCustomLoading = false;\r\n that._repaintChangesOnly = void 0;\r\n that._changes = [];\r\n that.createAction(\"onDataErrorOccurred\");\r\n that.dataErrorOccurred.add(function(error) {\r\n return that.executeAction(\"onDataErrorOccurred\", {\r\n error: error\r\n })\r\n });\r\n that._refreshDataSource()\r\n },\r\n callbackNames: function() {\r\n return [\"changed\", \"loadingChanged\", \"dataErrorOccurred\", \"pageChanged\", \"dataSourceChanged\"]\r\n },\r\n callbackFlags: function(name) {\r\n if (\"dataErrorOccurred\" === name) {\r\n return {\r\n stopOnFalse: true\r\n }\r\n }\r\n },\r\n publicMethods: function() {\r\n return [\"beginCustomLoading\", \"endCustomLoading\", \"refresh\", \"filter\", \"clearFilter\", \"getCombinedFilter\", \"keyOf\", \"byKey\", \"getDataByKeys\", \"pageIndex\", \"pageSize\", \"pageCount\", \"totalCount\", \"_disposeDataSource\", \"getKeyByRowIndex\", \"getRowIndexByKey\", \"getDataSource\", \"getVisibleRows\", \"repaintRows\"]\r\n },\r\n reset: function() {\r\n this._columnsController.reset();\r\n this._items = [];\r\n this._refreshDataSource()\r\n },\r\n optionChanged: function(args) {\r\n var that = this;\r\n var dataSource;\r\n\r\n function handled() {\r\n args.handled = true\r\n }\r\n if (\"dataSource\" === args.name && args.name === args.fullName && (args.value === args.previousValue || that.option(\"columns\") && Array.isArray(args.value) && Array.isArray(args.previousValue))) {\r\n if (args.value !== args.previousValue) {\r\n var store = that.store();\r\n if (store) {\r\n store._array = args.value\r\n }\r\n }\r\n handled();\r\n that.refresh(that.option(\"repaintChangesOnly\"));\r\n return\r\n }\r\n switch (args.name) {\r\n case \"cacheEnabled\":\r\n case \"repaintChangesOnly\":\r\n case \"highlightChanges\":\r\n case \"loadingTimeout\":\r\n handled();\r\n break;\r\n case \"remoteOperations\":\r\n case \"keyExpr\":\r\n case \"dataSource\":\r\n case \"scrolling\":\r\n handled();\r\n that.reset();\r\n break;\r\n case \"paging\":\r\n dataSource = that.dataSource();\r\n if (dataSource && that._setPagingOptions(dataSource)) {\r\n dataSource.load().done(that.pageChanged.fire.bind(that.pageChanged))\r\n }\r\n handled();\r\n break;\r\n case \"rtlEnabled\":\r\n that.reset();\r\n break;\r\n case \"columns\":\r\n dataSource = that.dataSource();\r\n if (dataSource && dataSource.isLoading() && args.name === args.fullName) {\r\n this._useSortingGroupingFromColumns = true;\r\n dataSource.load()\r\n }\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n },\r\n isReady: function() {\r\n return !this._isLoading\r\n },\r\n getDataSource: function() {\r\n return this._dataSource && this._dataSource._dataSource\r\n },\r\n getCombinedFilter: function(returnDataField) {\r\n return this.combinedFilter(void 0, returnDataField)\r\n },\r\n combinedFilter: function(filter, returnDataField) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var columnsController = that._columnsController;\r\n if (dataSource) {\r\n if (void 0 === filter) {\r\n filter = dataSource.filter()\r\n }\r\n var additionalFilter = that._calculateAdditionalFilter();\r\n if (additionalFilter) {\r\n if (columnsController.isDataSourceApplied() || columnsController.isAllDataTypesDefined()) {\r\n filter = _uiGrid_core2.default.combineFilters([additionalFilter, filter])\r\n }\r\n }\r\n filter = columnsController.updateFilter(filter, returnDataField || dataSource.remoteOperations().filtering)\r\n }\r\n return filter\r\n },\r\n waitReady: function() {\r\n if (this._updateLockCount) {\r\n this._readyDeferred = new _deferred.Deferred;\r\n return this._readyDeferred\r\n }\r\n return (0, _deferred.when)()\r\n },\r\n _endUpdateCore: function() {\r\n var changes = this._changes;\r\n if (changes.length) {\r\n this._changes = [];\r\n var repaintChangesOnly = changes.every(function(change) {\r\n return change.repaintChangesOnly\r\n });\r\n this.updateItems(1 === changes.length ? changes[0] : {\r\n repaintChangesOnly: repaintChangesOnly\r\n })\r\n }\r\n if (this._readyDeferred) {\r\n this._readyDeferred.resolve();\r\n this._readyDeferred = null\r\n }\r\n },\r\n _handleCustomizeStoreLoadOptions: function(e) {\r\n var columnsController = this._columnsController;\r\n var dataSource = this._dataSource;\r\n var storeLoadOptions = e.storeLoadOptions;\r\n if (e.isCustomLoading && !storeLoadOptions.isLoadingAll) {\r\n return\r\n }\r\n storeLoadOptions.filter = this.combinedFilter(storeLoadOptions.filter);\r\n if (!columnsController.isDataSourceApplied()) {\r\n columnsController.updateColumnDataTypes(dataSource)\r\n }\r\n this._columnsUpdating = true;\r\n columnsController.updateSortingGrouping(dataSource, !this._useSortingGroupingFromColumns);\r\n this._columnsUpdating = false;\r\n storeLoadOptions.sort = columnsController.getSortDataSourceParameters();\r\n storeLoadOptions.group = columnsController.getGroupDataSourceParameters();\r\n dataSource.sort(storeLoadOptions.sort);\r\n dataSource.group(storeLoadOptions.group);\r\n storeLoadOptions.sort = columnsController.getSortDataSourceParameters(!dataSource.remoteOperations().sorting);\r\n e.group = columnsController.getGroupDataSourceParameters(!dataSource.remoteOperations().grouping)\r\n },\r\n _handleColumnsChanged: function(e) {\r\n var that = this;\r\n var changeTypes = e.changeTypes;\r\n var optionNames = e.optionNames;\r\n var filterValue;\r\n var filterValues;\r\n var filterApplied;\r\n var updateItemsHandler = function updateItemsHandler() {\r\n that._columnsController.columnsChanged.remove(updateItemsHandler);\r\n that.updateItems()\r\n };\r\n if (changeTypes.sorting || changeTypes.grouping) {\r\n if (that._dataSource && !that._columnsUpdating) {\r\n that._dataSource.group(that._columnsController.getGroupDataSourceParameters());\r\n that._dataSource.sort(that._columnsController.getSortDataSourceParameters());\r\n that.reload()\r\n }\r\n } else {\r\n if (changeTypes.columns) {\r\n if (optionNames.filterValues || optionNames.filterValue || optionNames.selectedFilterOperation) {\r\n filterValue = that._columnsController.columnOption(e.columnIndex, \"filterValue\");\r\n filterValues = that._columnsController.columnOption(e.columnIndex, \"filterValues\");\r\n if (Array.isArray(filterValues) || void 0 === e.columnIndex || (0, _type.isDefined)(filterValue) || !optionNames.selectedFilterOperation || optionNames.filterValue) {\r\n that._applyFilter();\r\n filterApplied = true\r\n }\r\n }\r\n if (!that._needApplyFilter && !_uiGrid_core2.default.checkChanges(optionNames, [\"width\", \"visibleWidth\", \"filterValue\", \"bufferedFilterValue\", \"selectedFilterOperation\", \"filterValues\", \"filterType\"])) {\r\n that._columnsController.columnsChanged.add(updateItemsHandler)\r\n }\r\n if ((0, _type.isDefined)(optionNames.visible)) {\r\n var column = that._columnsController.columnOption(e.columnIndex);\r\n if (column && ((0, _type.isDefined)(column.filterValue) || (0, _type.isDefined)(column.filterValues))) {\r\n that._applyFilter();\r\n filterApplied = true\r\n }\r\n }\r\n }\r\n }\r\n if (!filterApplied && changeTypes.filtering) {\r\n that.reload()\r\n }\r\n },\r\n _handleDataChanged: function(e) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var columnsController = that._columnsController;\r\n var isAsyncDataSourceApplying = false;\r\n this._useSortingGroupingFromColumns = false;\r\n if (dataSource && !that._isDataSourceApplying) {\r\n that._isDataSourceApplying = true;\r\n (0, _deferred.when)(that._columnsController.applyDataSource(dataSource)).done(function() {\r\n if (that._isLoading) {\r\n that._handleLoadingChanged(false)\r\n }\r\n if (isAsyncDataSourceApplying && e && e.isDelayed) {\r\n e.isDelayed = false\r\n }\r\n that._isDataSourceApplying = false;\r\n var hasAdditionalFilter = function() {\r\n var additionalFilter = that._calculateAdditionalFilter();\r\n return additionalFilter && additionalFilter.length\r\n };\r\n var needApplyFilter = that._needApplyFilter;\r\n that._needApplyFilter = false;\r\n if (needApplyFilter && !that._isAllDataTypesDefined && hasAdditionalFilter()) {\r\n _ui.default.log(\"W1005\", that.component.NAME);\r\n that._applyFilter()\r\n } else {\r\n that.updateItems(e, true)\r\n }\r\n }).fail(function() {\r\n that._isDataSourceApplying = false\r\n });\r\n if (that._isDataSourceApplying) {\r\n isAsyncDataSourceApplying = true;\r\n that._handleLoadingChanged(true)\r\n }\r\n that._needApplyFilter = !that._columnsController.isDataSourceApplied();\r\n that._isAllDataTypesDefined = columnsController.isAllDataTypesDefined()\r\n }\r\n },\r\n _handleLoadingChanged: function(isLoading) {\r\n this._isLoading = isLoading;\r\n this._fireLoadingChanged()\r\n },\r\n _handleLoadError: function(e) {\r\n this.dataErrorOccurred.fire(e)\r\n },\r\n fireError: function() {\r\n this.dataErrorOccurred.fire(_ui.default.Error.apply(_ui.default, arguments))\r\n },\r\n _setPagingOptions: function(dataSource) {\r\n var pageIndex = this.option(\"paging.pageIndex\");\r\n var pageSize = this.option(\"paging.pageSize\");\r\n var pagingEnabled = this.option(\"paging.enabled\");\r\n var scrollingMode = this.option(\"scrolling.mode\");\r\n var appendMode = \"infinite\" === scrollingMode;\r\n var virtualMode = \"virtual\" === scrollingMode;\r\n var paginate = pagingEnabled || virtualMode || appendMode;\r\n var isChanged = false;\r\n dataSource.requireTotalCount(!appendMode);\r\n if (void 0 !== pagingEnabled && dataSource.paginate() !== paginate) {\r\n dataSource.paginate(paginate);\r\n isChanged = true\r\n }\r\n if (void 0 !== pageSize && dataSource.pageSize() !== pageSize) {\r\n dataSource.pageSize(pageSize);\r\n isChanged = true\r\n }\r\n if (void 0 !== pageIndex && dataSource.pageIndex() !== pageIndex) {\r\n dataSource.pageIndex(pageIndex);\r\n isChanged = true\r\n }\r\n return isChanged\r\n },\r\n _getSpecificDataSourceOption: function() {\r\n var dataSource = this.option(\"dataSource\");\r\n if (Array.isArray(dataSource)) {\r\n return {\r\n store: {\r\n type: \"array\",\r\n data: dataSource,\r\n key: this.option(\"keyExpr\")\r\n }\r\n }\r\n }\r\n return dataSource\r\n },\r\n _initDataSource: function() {\r\n var that = this;\r\n var dataSource = this.option(\"dataSource\");\r\n var oldDataSource = this._dataSource;\r\n that.callBase();\r\n dataSource = that._dataSource;\r\n that._useSortingGroupingFromColumns = true;\r\n if (dataSource) {\r\n that._setPagingOptions(dataSource);\r\n that.setDataSource(dataSource)\r\n } else {\r\n if (oldDataSource) {\r\n that.updateItems()\r\n }\r\n }\r\n },\r\n _loadDataSource: function() {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var result = new _deferred.Deferred;\r\n (0, _deferred.when)(this._columnsController.refresh(true)).always(function() {\r\n if (dataSource) {\r\n dataSource.load().done(result.resolve).fail(result.reject)\r\n } else {\r\n result.resolve()\r\n }\r\n });\r\n return result.promise()\r\n },\r\n _beforeProcessItems: function(items) {\r\n return items.slice(0)\r\n },\r\n getRowIndexDelta: function() {\r\n return 0\r\n },\r\n _processItems: function(items, change) {\r\n var that = this;\r\n var rowIndexDelta = that.getRowIndexDelta();\r\n var changeType = change.changeType;\r\n var visibleColumns = that._columnsController.getVisibleColumns(null, \"loadingAll\" === changeType);\r\n var visibleItems = that._items;\r\n var lastVisibleItem = \"append\" === changeType && visibleItems.length > 0 ? visibleItems[visibleItems.length - 1] : null;\r\n var dataIndex = (0, _type.isDefined)(null === lastVisibleItem || void 0 === lastVisibleItem ? void 0 : lastVisibleItem.dataIndex) ? lastVisibleItem.dataIndex + 1 : 0;\r\n var options = {\r\n visibleColumns: visibleColumns,\r\n dataIndex: dataIndex\r\n };\r\n var result = [];\r\n (0, _iterator.each)(items, function(index, item) {\r\n if ((0, _type.isDefined)(item)) {\r\n options.rowIndex = index - rowIndexDelta;\r\n item = that._processItem(item, options);\r\n result.push(item)\r\n }\r\n });\r\n return result\r\n },\r\n _processItem: function(item, options) {\r\n item = this._generateDataItem(item, options);\r\n item = this._processDataItem(item, options);\r\n item.dataIndex = options.dataIndex++;\r\n return item\r\n },\r\n _generateDataItem: function(data) {\r\n return {\r\n rowType: \"data\",\r\n data: data,\r\n key: this.keyOf(data)\r\n }\r\n },\r\n _processDataItem: function(dataItem, options) {\r\n dataItem.values = this.generateDataValues(dataItem.data, options.visibleColumns);\r\n return dataItem\r\n },\r\n generateDataValues: function(data, columns, isModified) {\r\n var values = [];\r\n var value;\r\n for (var i = 0; i < columns.length; i++) {\r\n var column = columns[i];\r\n value = isModified ? void 0 : null;\r\n if (!column.command) {\r\n if (column.calculateCellValue) {\r\n value = column.calculateCellValue(data)\r\n } else {\r\n if (column.dataField) {\r\n value = data[column.dataField]\r\n }\r\n }\r\n }\r\n values.push(value)\r\n }\r\n return values\r\n },\r\n _applyChange: function(change) {\r\n var that = this;\r\n if (\"update\" === change.changeType) {\r\n that._applyChangeUpdate(change)\r\n } else {\r\n if (that.items().length && change.repaintChangesOnly && \"refresh\" === change.changeType) {\r\n that._applyChangesOnly(change)\r\n } else {\r\n if (\"refresh\" === change.changeType) {\r\n that._applyChangeFull(change)\r\n }\r\n }\r\n }\r\n },\r\n _applyChangeFull: function(change) {\r\n this._items = change.items.slice(0)\r\n },\r\n _getRowIndices: function(change) {\r\n var rowIndices = change.rowIndices.slice(0);\r\n var rowIndexDelta = this.getRowIndexDelta();\r\n rowIndices.sort(function(a, b) {\r\n return a - b\r\n });\r\n for (var i = 0; i < rowIndices.length; i++) {\r\n var correctedRowIndex = rowIndices[i];\r\n if (change.allowInvisibleRowIndices) {\r\n correctedRowIndex += rowIndexDelta\r\n }\r\n if (correctedRowIndex < 0) {\r\n rowIndices.splice(i, 1);\r\n i--\r\n }\r\n }\r\n return rowIndices\r\n },\r\n _applyChangeUpdate: function(change) {\r\n var that = this;\r\n var items = change.items;\r\n var rowIndices = that._getRowIndices(change);\r\n var rowIndexDelta = that.getRowIndexDelta();\r\n var repaintChangesOnly = that.option(\"repaintChangesOnly\");\r\n var prevIndex = -1;\r\n var rowIndexCorrection = 0;\r\n var changeType;\r\n change.items = [];\r\n change.rowIndices = [];\r\n change.columnIndices = [];\r\n change.changeTypes = [];\r\n var equalItems = function(item1, item2, strict) {\r\n var result = item1 && item2 && (0, _common.equalByValue)(item1.key, item2.key);\r\n if (result && strict) {\r\n result = item1.rowType === item2.rowType && (\"detail\" !== item2.rowType || item1.isEditing === item2.isEditing)\r\n }\r\n return result\r\n };\r\n (0, _iterator.each)(rowIndices, function(index, rowIndex) {\r\n var columnIndices;\r\n rowIndex += rowIndexCorrection + rowIndexDelta;\r\n if (prevIndex === rowIndex) {\r\n return\r\n }\r\n prevIndex = rowIndex;\r\n var oldItem = that._items[rowIndex];\r\n var oldNextItem = that._items[rowIndex + 1];\r\n var newItem = items[rowIndex];\r\n var newNextItem = items[rowIndex + 1];\r\n var strict = equalItems(oldItem, oldNextItem) || equalItems(newItem, newNextItem);\r\n if (newItem) {\r\n newItem.rowIndex = rowIndex;\r\n change.items.push(newItem)\r\n }\r\n if (oldItem && newItem && equalItems(oldItem, newItem, strict)) {\r\n changeType = \"update\";\r\n that._items[rowIndex] = newItem;\r\n if (oldItem.visible !== newItem.visible) {\r\n change.items.splice(-1, 1, {\r\n visible: newItem.visible\r\n })\r\n } else {\r\n if (repaintChangesOnly && !change.isFullUpdate) {\r\n columnIndices = that._partialUpdateRow(oldItem, newItem, rowIndex - rowIndexDelta)\r\n }\r\n }\r\n } else {\r\n if (newItem && !oldItem || newNextItem && equalItems(oldItem, newNextItem, strict)) {\r\n changeType = \"insert\";\r\n that._items.splice(rowIndex, 0, newItem);\r\n rowIndexCorrection++\r\n } else {\r\n if (oldItem && !newItem || oldNextItem && equalItems(newItem, oldNextItem, strict)) {\r\n changeType = \"remove\";\r\n that._items.splice(rowIndex, 1);\r\n rowIndexCorrection--;\r\n prevIndex = -1\r\n } else {\r\n if (newItem) {\r\n changeType = \"update\";\r\n that._items[rowIndex] = newItem\r\n } else {\r\n return\r\n }\r\n }\r\n }\r\n }\r\n change.rowIndices.push(rowIndex - rowIndexDelta);\r\n change.changeTypes.push(changeType);\r\n change.columnIndices.push(columnIndices)\r\n })\r\n },\r\n _isCellChanged: function(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) {\r\n if (JSON.stringify(oldRow.values[columnIndex]) !== JSON.stringify(newRow.values[columnIndex])) {\r\n return true\r\n }\r\n\r\n function isCellModified(row, columnIndex) {\r\n return row.modifiedValues ? void 0 !== row.modifiedValues[columnIndex] : false\r\n }\r\n if (isCellModified(oldRow, columnIndex) !== isCellModified(newRow, columnIndex)) {\r\n return true\r\n }\r\n return false\r\n },\r\n _getChangedColumnIndices: function(oldItem, newItem, visibleRowIndex, isLiveUpdate) {\r\n if (oldItem.rowType === newItem.rowType && \"group\" !== newItem.rowType && \"groupFooter\" !== newItem.rowType) {\r\n var columnIndices = [];\r\n if (\"detail\" !== newItem.rowType) {\r\n for (var columnIndex = 0; columnIndex < oldItem.values.length; columnIndex++) {\r\n if (this._isCellChanged(oldItem, newItem, visibleRowIndex, columnIndex, isLiveUpdate)) {\r\n columnIndices.push(columnIndex)\r\n }\r\n }\r\n }\r\n return columnIndices\r\n }\r\n },\r\n _partialUpdateRow: function(oldItem, newItem, visibleRowIndex, isLiveUpdate) {\r\n var changedColumnIndices = this._getChangedColumnIndices(oldItem, newItem, visibleRowIndex, isLiveUpdate);\r\n if (changedColumnIndices) {\r\n oldItem.cells && oldItem.cells.forEach(function(cell, columnIndex) {\r\n var isCellChanged = changedColumnIndices.indexOf(columnIndex) >= 0;\r\n if (!isCellChanged && cell && cell.update) {\r\n cell.update(newItem)\r\n }\r\n });\r\n newItem.update = oldItem.update;\r\n newItem.watch = oldItem.watch;\r\n newItem.cells = oldItem.cells;\r\n if (isLiveUpdate) {\r\n newItem.oldValues = oldItem.values\r\n }\r\n oldItem.update && oldItem.update(newItem)\r\n }\r\n return changedColumnIndices\r\n },\r\n _isItemEquals: function(item1, item2) {\r\n if (JSON.stringify(item1.values) !== JSON.stringify(item2.values)) {\r\n return false\r\n }\r\n var compareFields = [\"modified\", \"isNewRow\", \"removed\", \"isEditing\"];\r\n if (compareFields.some(function(field) {\r\n return item1[field] !== item2[field]\r\n })) {\r\n return false\r\n }\r\n if (\"group\" === item1.rowType || \"groupFooter\" === item1.rowType) {\r\n var _item1$data, _item2$data, _item1$data2, _item2$data2;\r\n var expandedMatch = item1.isExpanded === item2.isExpanded;\r\n var summaryCellsMatch = JSON.stringify(item1.summaryCells) === JSON.stringify(item2.summaryCells);\r\n var continuationMatch = (null === (_item1$data = item1.data) || void 0 === _item1$data ? void 0 : _item1$data.isContinuation) === (null === (_item2$data = item2.data) || void 0 === _item2$data ? void 0 : _item2$data.isContinuation) && (null === (_item1$data2 = item1.data) || void 0 === _item1$data2 ? void 0 : _item1$data2.isContinuationOnNextPage) === (null === (_item2$data2 = item2.data) || void 0 === _item2$data2 ? void 0 : _item2$data2.isContinuationOnNextPage);\r\n if (!expandedMatch || !summaryCellsMatch || !continuationMatch) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n _applyChangesOnly: function(change) {\r\n var _this2 = this;\r\n var rowIndices = [];\r\n var columnIndices = [];\r\n var changeTypes = [];\r\n var items = [];\r\n var newIndexByKey = {};\r\n\r\n function getRowKey(row) {\r\n if (row) {\r\n return row.rowType + \",\" + JSON.stringify(row.key)\r\n }\r\n }\r\n var isItemEquals = function(item1, item2) {\r\n if (!_this2._isItemEquals(item1, item2)) {\r\n return false\r\n }\r\n if (item1.cells) {\r\n item1.update && item1.update(item2);\r\n item1.cells.forEach(function(cell) {\r\n if (cell && cell.update) {\r\n cell.update(item2)\r\n }\r\n })\r\n }\r\n return true\r\n };\r\n var oldItems = this._items.slice();\r\n change.items.forEach(function(item, index) {\r\n var key = getRowKey(item);\r\n newIndexByKey[key] = index;\r\n item.rowIndex = index\r\n });\r\n var result = (0, _array_compare.findChanges)(oldItems, change.items, getRowKey, isItemEquals);\r\n if (!result) {\r\n this._applyChangeFull(change);\r\n return\r\n }\r\n result.forEach(function(change) {\r\n switch (change.type) {\r\n case \"update\":\r\n var index = change.index;\r\n var newItem = change.data;\r\n var oldItem = change.oldItem;\r\n var changedColumnIndices = _this2._partialUpdateRow(oldItem, newItem, index, true);\r\n rowIndices.push(index);\r\n changeTypes.push(\"update\");\r\n items.push(newItem);\r\n _this2._items[index] = newItem;\r\n columnIndices.push(changedColumnIndices);\r\n break;\r\n case \"insert\":\r\n rowIndices.push(change.index);\r\n changeTypes.push(\"insert\");\r\n items.push(change.data);\r\n columnIndices.push(void 0);\r\n _this2._items.splice(change.index, 0, change.data);\r\n break;\r\n case \"remove\":\r\n rowIndices.push(change.index);\r\n changeTypes.push(\"remove\");\r\n _this2._items.splice(change.index, 1);\r\n items.push(change.oldItem);\r\n columnIndices.push(void 0)\r\n }\r\n });\r\n change.repaintChangesOnly = true;\r\n change.changeType = \"update\";\r\n change.rowIndices = rowIndices;\r\n change.columnIndices = columnIndices;\r\n change.changeTypes = changeTypes;\r\n change.items = items;\r\n if (oldItems.length) {\r\n change.isLiveUpdate = true\r\n }\r\n this._correctRowIndices(function(rowIndex) {\r\n var oldItem = oldItems[rowIndex];\r\n var key = getRowKey(oldItem);\r\n var newRowIndex = newIndexByKey[key];\r\n return newRowIndex >= 0 ? newRowIndex - rowIndex : 0\r\n })\r\n },\r\n _correctRowIndices: _common.noop,\r\n _updateItemsCore: function(change) {\r\n var that = this;\r\n var items;\r\n var dataSource = that._dataSource;\r\n var changeType = change.changeType || \"refresh\";\r\n change.changeType = changeType;\r\n if (dataSource) {\r\n items = change.items || dataSource.items();\r\n items = that._beforeProcessItems(items);\r\n items = that._processItems(items, change);\r\n change.items = items;\r\n var oldItems = that._items.length === items.length && that._items;\r\n that._applyChange(change);\r\n var rowIndexDelta = that.getRowIndexDelta();\r\n (0, _iterator.each)(that._items, function(index, item) {\r\n item.rowIndex = index - rowIndexDelta;\r\n if (oldItems) {\r\n item.cells = oldItems[index].cells || []\r\n }\r\n })\r\n } else {\r\n that._items = []\r\n }\r\n },\r\n _handleChanging: function(e) {\r\n var that = this;\r\n var rows = that.getVisibleRows();\r\n var dataSource = that.dataSource();\r\n if (dataSource) {\r\n e.changes.forEach(function(change) {\r\n if (\"insert\" === change.type && change.index >= 0) {\r\n var dataIndex = 0;\r\n for (var i = 0; i < change.index; i++) {\r\n var row = rows[i];\r\n if (row && (\"data\" === row.rowType || \"group\" === row.rowType)) {\r\n dataIndex++\r\n }\r\n }\r\n change.index = dataIndex\r\n }\r\n })\r\n }\r\n },\r\n updateItems: function(change, isDataChanged) {\r\n change = change || {};\r\n var that = this;\r\n if (void 0 !== that._repaintChangesOnly) {\r\n change.repaintChangesOnly = that._repaintChangesOnly\r\n } else {\r\n if (change.changes) {\r\n change.repaintChangesOnly = that.option(\"repaintChangesOnly\")\r\n } else {\r\n if (isDataChanged) {\r\n var operationTypes = that.dataSource().operationTypes();\r\n change.repaintChangesOnly = operationTypes && !operationTypes.grouping && !operationTypes.filtering && that.option(\"repaintChangesOnly\");\r\n change.isDataChanged = true;\r\n if (operationTypes && (operationTypes.reload || operationTypes.paging || operationTypes.groupExpanding)) {\r\n change.needUpdateDimensions = true\r\n }\r\n }\r\n }\r\n }\r\n if (that._updateLockCount) {\r\n that._changes.push(change);\r\n return\r\n }\r\n that._updateItemsCore(change);\r\n if (change.cancel) {\r\n return\r\n }\r\n that._fireChanged(change)\r\n },\r\n loadingOperationTypes: function() {\r\n var dataSource = this.dataSource();\r\n return dataSource && dataSource.loadingOperationTypes() || {}\r\n },\r\n _fireChanged: function(change) {\r\n var _this3 = this;\r\n if (this._currentOperationTypes) {\r\n change.operationTypes = this._currentOperationTypes;\r\n this._currentOperationTypes = null\r\n }(0, _common.deferRender)(function() {\r\n _this3.changed.fire(change)\r\n })\r\n },\r\n isLoading: function() {\r\n return this._isLoading || this._isCustomLoading\r\n },\r\n _fireLoadingChanged: function() {\r\n this.loadingChanged.fire(this.isLoading(), this._loadingText)\r\n },\r\n _calculateAdditionalFilter: function() {\r\n return null\r\n },\r\n _applyFilter: function() {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n if (dataSource) {\r\n dataSource.pageIndex(0);\r\n return that.reload().done(that.pageChanged.fire.bind(that.pageChanged))\r\n }\r\n },\r\n filter: function filter(filterExpr) {\r\n var dataSource = this._dataSource;\r\n var filter = dataSource && dataSource.filter();\r\n if (0 === arguments.length) {\r\n return filter\r\n }\r\n filterExpr = arguments.length > 1 ? Array.prototype.slice.call(arguments, 0) : filterExpr;\r\n if (_uiGrid_core2.default.equalFilterParameters(filter, filterExpr)) {\r\n return\r\n }\r\n if (dataSource) {\r\n dataSource.filter(filterExpr)\r\n }\r\n this._applyFilter()\r\n },\r\n clearFilter: function(filterName) {\r\n var that = this;\r\n var columnsController = that._columnsController;\r\n var clearColumnOption = function(optionName) {\r\n var columnCount = columnsController.columnCount();\r\n for (var index = 0; index < columnCount; index++) {\r\n columnsController.columnOption(index, optionName, void 0)\r\n }\r\n };\r\n that.component.beginUpdate();\r\n if (arguments.length > 0) {\r\n switch (filterName) {\r\n case \"dataSource\":\r\n that.filter(null);\r\n break;\r\n case \"search\":\r\n that.searchByText(\"\");\r\n break;\r\n case \"header\":\r\n clearColumnOption(\"filterValues\");\r\n break;\r\n case \"row\":\r\n clearColumnOption(\"filterValue\")\r\n }\r\n } else {\r\n that.filter(null);\r\n that.searchByText(\"\");\r\n clearColumnOption(\"filterValue\");\r\n clearColumnOption(\"bufferedFilterValue\");\r\n clearColumnOption(\"filterValues\")\r\n }\r\n that.component.endUpdate()\r\n },\r\n _fireDataSourceChanged: function() {\r\n var that = this;\r\n var changedHandler = function changedHandler() {\r\n that.changed.remove(changedHandler);\r\n that.dataSourceChanged.fire()\r\n };\r\n that.changed.add(changedHandler)\r\n },\r\n _getDataSourceAdapter: _common.noop,\r\n _createDataSourceAdapterCore: function(dataSource, remoteOperations) {\r\n var dataSourceAdapterProvider = this._getDataSourceAdapter();\r\n var dataSourceAdapter = dataSourceAdapterProvider.create(this.component);\r\n dataSourceAdapter.init(dataSource, remoteOperations);\r\n return dataSourceAdapter\r\n },\r\n isLocalStore: function(store) {\r\n store = store || this.store();\r\n return store instanceof _array_store.default\r\n },\r\n isCustomStore: function(store) {\r\n store = store || this.store();\r\n return store instanceof _custom_store.default\r\n },\r\n _createDataSourceAdapter: function(dataSource) {\r\n var remoteOperations = this.option(\"remoteOperations\");\r\n var store = dataSource.store();\r\n var enabledRemoteOperations = {\r\n filtering: true,\r\n sorting: true,\r\n paging: true,\r\n grouping: true,\r\n summary: true\r\n };\r\n if (remoteOperations && remoteOperations.groupPaging) {\r\n remoteOperations = (0, _extend.extend)({}, enabledRemoteOperations, remoteOperations)\r\n }\r\n if (\"auto\" === remoteOperations) {\r\n remoteOperations = this.isLocalStore(store) || this.isCustomStore(store) ? {} : {\r\n filtering: true,\r\n sorting: true,\r\n paging: true\r\n }\r\n }\r\n if (true === remoteOperations) {\r\n remoteOperations = enabledRemoteOperations\r\n }\r\n return this._createDataSourceAdapterCore(dataSource, remoteOperations)\r\n },\r\n setDataSource: function(dataSource) {\r\n var that = this;\r\n var oldDataSource = that._dataSource;\r\n if (!dataSource && oldDataSource) {\r\n oldDataSource.cancelAll();\r\n oldDataSource.changed.remove(that._dataChangedHandler);\r\n oldDataSource.loadingChanged.remove(that._loadingChangedHandler);\r\n oldDataSource.loadError.remove(that._loadErrorHandler);\r\n oldDataSource.customizeStoreLoadOptions.remove(that._customizeStoreLoadOptionsHandler);\r\n oldDataSource.changing.remove(that._changingHandler);\r\n oldDataSource.dispose(that._isSharedDataSource)\r\n }\r\n if (dataSource) {\r\n dataSource = that._createDataSourceAdapter(dataSource)\r\n }\r\n that._dataSource = dataSource;\r\n if (dataSource) {\r\n that._fireDataSourceChanged();\r\n that._isLoading = !dataSource.isLoaded();\r\n that._needApplyFilter = true;\r\n that._isAllDataTypesDefined = that._columnsController.isAllDataTypesDefined();\r\n dataSource.changed.add(that._dataChangedHandler);\r\n dataSource.loadingChanged.add(that._loadingChangedHandler);\r\n dataSource.loadError.add(that._loadErrorHandler);\r\n dataSource.customizeStoreLoadOptions.add(that._customizeStoreLoadOptionsHandler);\r\n dataSource.changing.add(that._changingHandler)\r\n }\r\n },\r\n items: function() {\r\n return this._items\r\n },\r\n isEmpty: function() {\r\n return !this.items().length\r\n },\r\n pageCount: function() {\r\n return this._dataSource ? this._dataSource.pageCount() : 1\r\n },\r\n dataSource: function() {\r\n return this._dataSource\r\n },\r\n store: function() {\r\n var dataSource = this._dataSource;\r\n return dataSource && dataSource.store()\r\n },\r\n loadAll: function(data) {\r\n var that = this;\r\n var d = new _deferred.Deferred;\r\n var dataSource = that._dataSource;\r\n if (dataSource) {\r\n if (data) {\r\n var options = {\r\n data: data,\r\n isCustomLoading: true,\r\n storeLoadOptions: {\r\n isLoadingAll: true\r\n },\r\n loadOptions: {\r\n filter: that.getCombinedFilter(),\r\n group: dataSource.group(),\r\n sort: dataSource.sort()\r\n }\r\n };\r\n dataSource._handleDataLoaded(options);\r\n (0, _deferred.when)(options.data).done(function(data) {\r\n data = that._beforeProcessItems(data);\r\n d.resolve(that._processItems(data, {\r\n changeType: \"loadingAll\"\r\n }), options.extra && options.extra.summary)\r\n }).fail(d.reject)\r\n } else {\r\n if (!dataSource.isLoading()) {\r\n var loadOptions = (0, _extend.extend)({}, dataSource.loadOptions(), {\r\n isLoadingAll: true,\r\n requireTotalCount: false\r\n });\r\n dataSource.load(loadOptions).done(function(items, extra) {\r\n items = that._beforeProcessItems(items);\r\n items = that._processItems(items, {\r\n changeType: \"loadingAll\"\r\n });\r\n d.resolve(items, extra && extra.summary)\r\n }).fail(d.reject)\r\n } else {\r\n d.reject()\r\n }\r\n }\r\n } else {\r\n d.resolve([])\r\n }\r\n return d\r\n },\r\n getKeyByRowIndex: function(rowIndex, byLoaded) {\r\n var item = this.items(byLoaded)[rowIndex];\r\n if (item) {\r\n return item.key\r\n }\r\n },\r\n getRowIndexByKey: function(key, byLoaded) {\r\n return _uiGrid_core2.default.getIndexByKey(key, this.items(byLoaded))\r\n },\r\n keyOf: function(data) {\r\n var store = this.store();\r\n if (store) {\r\n return store.keyOf(data)\r\n }\r\n },\r\n byKey: function(key) {\r\n var store = this.store();\r\n var rowIndex = this.getRowIndexByKey(key);\r\n var result;\r\n if (!store) {\r\n return\r\n }\r\n if (rowIndex >= 0) {\r\n result = (new _deferred.Deferred).resolve(this.items()[rowIndex].data)\r\n }\r\n return result || store.byKey(key)\r\n },\r\n key: function() {\r\n var store = this.store();\r\n if (store) {\r\n return store.key()\r\n }\r\n },\r\n getRowIndexOffset: function() {\r\n return 0\r\n },\r\n getDataByKeys: function(rowKeys) {\r\n var that = this;\r\n var result = new _deferred.Deferred;\r\n var deferreds = [];\r\n var data = [];\r\n (0, _iterator.each)(rowKeys, function(index, key) {\r\n deferreds.push(that.byKey(key).done(function(keyData) {\r\n data[index] = keyData\r\n }))\r\n });\r\n _deferred.when.apply(_renderer.default, deferreds).always(function() {\r\n result.resolve(data)\r\n });\r\n return result\r\n },\r\n pageIndex: function(value) {\r\n return changePaging(this, \"pageIndex\", value)\r\n },\r\n pageSize: function(value) {\r\n return changePaging(this, \"pageSize\", value)\r\n },\r\n beginCustomLoading: function(messageText) {\r\n this._isCustomLoading = true;\r\n this._loadingText = messageText || \"\";\r\n this._fireLoadingChanged()\r\n },\r\n endCustomLoading: function() {\r\n this._isCustomLoading = false;\r\n this._loadingText = void 0;\r\n this._fireLoadingChanged()\r\n },\r\n refresh: function(options) {\r\n if (true === options) {\r\n options = {\r\n reload: true,\r\n changesOnly: true\r\n }\r\n } else {\r\n if (!options) {\r\n options = {\r\n lookup: true,\r\n selection: true,\r\n reload: true\r\n }\r\n }\r\n }\r\n var that = this;\r\n var dataSource = that.getDataSource();\r\n var changesOnly = options.changesOnly;\r\n var d = new _deferred.Deferred;\r\n var customizeLoadResult = function() {\r\n that._repaintChangesOnly = !!changesOnly\r\n };\r\n (0, _deferred.when)(!options.lookup || that._columnsController.refresh()).always(function() {\r\n if (options.load || options.reload) {\r\n dataSource && dataSource.on(\"customizeLoadResult\", customizeLoadResult);\r\n (0, _deferred.when)(that.reload(options.reload, changesOnly)).always(function() {\r\n dataSource && dataSource.off(\"customizeLoadResult\", customizeLoadResult);\r\n that._repaintChangesOnly = void 0\r\n }).done(d.resolve).fail(d.reject)\r\n } else {\r\n that.updateItems({\r\n repaintChangesOnly: options.changesOnly\r\n });\r\n d.resolve()\r\n }\r\n });\r\n return d.promise()\r\n },\r\n getVisibleRows: function() {\r\n return this.items()\r\n },\r\n _disposeDataSource: function() {\r\n this.setDataSource(null)\r\n },\r\n dispose: function() {\r\n this._disposeDataSource();\r\n this.callBase.apply(this, arguments)\r\n },\r\n repaintRows: function(rowIndexes, changesOnly) {\r\n rowIndexes = Array.isArray(rowIndexes) ? rowIndexes : [rowIndexes];\r\n if (rowIndexes.length > 1 || (0, _type.isDefined)(rowIndexes[0])) {\r\n this.updateItems({\r\n changeType: \"update\",\r\n rowIndices: rowIndexes,\r\n isFullUpdate: !changesOnly\r\n })\r\n }\r\n },\r\n skipProcessingPagingChange: function(fullName) {\r\n return this._skipProcessingPagingChange && (\"paging.pageIndex\" === fullName || \"paging.pageSize\" === fullName)\r\n },\r\n getUserState: function() {\r\n return {\r\n searchText: this.option(\"searchPanel.text\"),\r\n pageIndex: this.pageIndex(),\r\n pageSize: this.pageSize()\r\n }\r\n },\r\n getCachedStoreData: function() {\r\n return this._dataSource && this._dataSource.getCachedStoreData()\r\n }\r\n };\r\n _uiGrid_core2.default.proxyMethod(members, \"load\");\r\n _uiGrid_core2.default.proxyMethod(members, \"reload\");\r\n _uiGrid_core2.default.proxyMethod(members, \"push\");\r\n _uiGrid_core2.default.proxyMethod(members, \"itemsCount\", 0);\r\n _uiGrid_core2.default.proxyMethod(members, \"totalItemsCount\", 0);\r\n _uiGrid_core2.default.proxyMethod(members, \"hasKnownLastPage\", true);\r\n _uiGrid_core2.default.proxyMethod(members, \"isLoaded\", true);\r\n _uiGrid_core2.default.proxyMethod(members, \"totalCount\", 0);\r\n return members\r\n }())\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.sorting.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\n * Build date: Thu Apr 22 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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"./ui.grid_core.modules\"));\r\nvar _uiGrid_core2 = require(\"./ui.grid_core.columns_view\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _themes = require(\"../themes\");\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _tree_view = _interopRequireDefault(require(\"../tree_view\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COLUMN_CHOOSER_CLASS = \"column-chooser\";\r\nvar COLUMN_CHOOSER_BUTTON_CLASS = \"column-chooser-button\";\r\nvar NOTOUCH_ACTION_CLASS = \"notouch-action\";\r\nvar COLUMN_CHOOSER_LIST_CLASS = \"column-chooser-list\";\r\nvar COLUMN_CHOOSER_PLAIN_CLASS = \"column-chooser-plain\";\r\nvar COLUMN_CHOOSER_DRAG_CLASS = \"column-chooser-mode-drag\";\r\nvar COLUMN_CHOOSER_SELECT_CLASS = \"column-chooser-mode-select\";\r\nvar COLUMN_CHOOSER_ICON_NAME = \"column-chooser\";\r\nvar COLUMN_CHOOSER_ITEM_CLASS = \"dx-column-chooser-item\";\r\nvar TREEVIEW_NODE_SELECTOR = \".dx-treeview-node\";\r\nvar CHECKBOX_SELECTOR = \".dx-checkbox\";\r\nvar CLICK_TIMEOUT = 300;\r\nvar processItems = function(that, chooserColumns) {\r\n var items = [];\r\n var isSelectMode = \"select\" === that.option(\"columnChooser.mode\");\r\n if (chooserColumns.length) {\r\n (0, _iterator.each)(chooserColumns, function(index, column) {\r\n var item = {\r\n text: column.caption,\r\n cssClass: column.cssClass,\r\n allowHiding: column.allowHiding,\r\n expanded: true,\r\n id: column.index,\r\n disabled: false,\r\n disableCheckBox: false === column.allowHiding,\r\n parentId: (0, _type.isDefined)(column.ownerBand) ? column.ownerBand : null\r\n };\r\n if (isSelectMode) {\r\n item.selected = column.visible\r\n }\r\n items.push(item)\r\n })\r\n }\r\n return items\r\n};\r\nvar ColumnChooserController = _uiGrid_core.default.ViewController.inherit({\r\n renderShowColumnChooserButton: function($element) {\r\n var that = this;\r\n var columnChooserButtonClass = that.addWidgetPrefix(COLUMN_CHOOSER_BUTTON_CLASS);\r\n var columnChooserEnabled = that.option(\"columnChooser.enabled\");\r\n var $showColumnChooserButton = $element.find(\".\" + columnChooserButtonClass);\r\n var $columnChooserButton;\r\n if (columnChooserEnabled) {\r\n if (!$showColumnChooserButton.length) {\r\n $columnChooserButton = (0, _renderer.default)(\"
    \").addClass(columnChooserButtonClass).appendTo($element);\r\n that._createComponent($columnChooserButton, _button.default, {\r\n icon: COLUMN_CHOOSER_ICON_NAME,\r\n onClick: function() {\r\n that.getView(\"columnChooserView\").showColumnChooser()\r\n },\r\n hint: that.option(\"columnChooser.title\"),\r\n integrationOptions: {}\r\n })\r\n } else {\r\n $showColumnChooserButton.show()\r\n }\r\n } else {\r\n $showColumnChooserButton.hide()\r\n }\r\n },\r\n getPosition: function() {\r\n var rowsView = this.getView(\"rowsView\");\r\n return {\r\n my: \"right bottom\",\r\n at: \"right bottom\",\r\n of: rowsView && rowsView.element(),\r\n collision: \"fit\",\r\n offset: \"-2 -2\",\r\n boundaryOffset: \"2 2\"\r\n }\r\n }\r\n});\r\nvar ColumnChooserView = _uiGrid_core2.ColumnsView.inherit({\r\n _resizeCore: _common.noop,\r\n _isWinDevice: function() {\r\n return !!_devices.default.real().win\r\n },\r\n _updateList: function(change) {\r\n var items;\r\n var $popupContent = this._popupContainer.$content();\r\n var isSelectMode = \"select\" === this.option(\"columnChooser.mode\");\r\n var columnChooserList = this._columnChooserList;\r\n var chooserColumns = this._columnsController.getChooserColumns(isSelectMode);\r\n if (isSelectMode && columnChooserList && change && \"selection\" === change.changeType) {\r\n items = processItems(this, chooserColumns);\r\n for (var i = 0; i < items.length; i++) {\r\n var selected = items[i].selected;\r\n var id = items[i].id;\r\n if (id === change.columnIndex) {\r\n if (selected) {\r\n columnChooserList.selectItem(id, selected)\r\n } else {\r\n columnChooserList.unselectItem(id, selected)\r\n }\r\n }\r\n }\r\n } else {\r\n if (!isSelectMode || !columnChooserList || \"full\" === change) {\r\n this._popupContainer._wrapper().toggleClass(this.addWidgetPrefix(COLUMN_CHOOSER_DRAG_CLASS), !isSelectMode).toggleClass(this.addWidgetPrefix(COLUMN_CHOOSER_SELECT_CLASS), isSelectMode);\r\n items = processItems(this, chooserColumns);\r\n this._renderTreeView($popupContent, items)\r\n }\r\n }\r\n },\r\n _initializePopupContainer: function() {\r\n var that = this;\r\n var $element = that.element().addClass(that.addWidgetPrefix(COLUMN_CHOOSER_CLASS));\r\n var columnChooserOptions = that.option(\"columnChooser\");\r\n var themeName = (0, _themes.current)();\r\n var isGenericTheme = (0, _themes.isGeneric)(themeName);\r\n var isMaterial = (0, _themes.isMaterial)(themeName);\r\n var dxPopupOptions = {\r\n visible: false,\r\n shading: false,\r\n showCloseButton: false,\r\n dragEnabled: true,\r\n resizeEnabled: true,\r\n toolbarItems: [{\r\n text: columnChooserOptions.title,\r\n toolbar: \"top\",\r\n location: isGenericTheme || isMaterial ? \"before\" : \"center\"\r\n }],\r\n position: that.getController(\"columnChooser\").getPosition(),\r\n width: columnChooserOptions.width,\r\n height: columnChooserOptions.height,\r\n rtlEnabled: that.option(\"rtlEnabled\"),\r\n onHidden: function() {\r\n if (that._isWinDevice()) {\r\n (0, _renderer.default)(\"body\").removeClass(that.addWidgetPrefix(NOTOUCH_ACTION_CLASS))\r\n }\r\n },\r\n container: columnChooserOptions.container\r\n };\r\n if (isGenericTheme || isMaterial) {\r\n (0, _extend.extend)(dxPopupOptions, {\r\n showCloseButton: true\r\n })\r\n } else {\r\n dxPopupOptions.toolbarItems[dxPopupOptions.toolbarItems.length] = {\r\n shortcut: \"cancel\"\r\n }\r\n }\r\n if (!(0, _type.isDefined)(this._popupContainer)) {\r\n that._popupContainer = that._createComponent($element, _popup.default, dxPopupOptions);\r\n that._popupContainer.on(\"optionChanged\", function(args) {\r\n if (\"visible\" === args.name) {\r\n that.renderCompleted.fire()\r\n }\r\n })\r\n } else {\r\n this._popupContainer.option(dxPopupOptions)\r\n }\r\n },\r\n _renderCore: function(change) {\r\n if (this._popupContainer) {\r\n this._updateList(change)\r\n }\r\n },\r\n _renderTreeView: function($container, items) {\r\n var that = this;\r\n var columnChooser = this.option(\"columnChooser\");\r\n var isSelectMode = \"select\" === columnChooser.mode;\r\n var treeViewConfig = {\r\n items: items,\r\n dataStructure: \"plain\",\r\n activeStateEnabled: true,\r\n focusStateEnabled: true,\r\n hoverStateEnabled: true,\r\n itemTemplate: \"item\",\r\n showCheckBoxesMode: \"none\",\r\n rootValue: null,\r\n searchEnabled: columnChooser.allowSearch,\r\n searchTimeout: columnChooser.searchTimeout,\r\n onItemRendered: function(e) {\r\n if (e.itemData.disableCheckBox) {\r\n var $treeViewNode = (0, _renderer.default)(e.itemElement).closest(TREEVIEW_NODE_SELECTOR);\r\n var $checkBox;\r\n if ($treeViewNode.length) {\r\n $checkBox = $treeViewNode.find(CHECKBOX_SELECTOR);\r\n if ($checkBox.length) {\r\n var checkBoxInstance = $checkBox.data(\"dxCheckBox\");\r\n checkBoxInstance && checkBoxInstance.option(\"disabled\", true)\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var scrollableInstance = $container.find(\".dx-scrollable\").data(\"dxScrollable\");\r\n var scrollTop = scrollableInstance && scrollableInstance.scrollTop();\r\n if (isSelectMode && !this._columnsController.isBandColumnsUsed()) {\r\n $container.addClass(this.addWidgetPrefix(COLUMN_CHOOSER_PLAIN_CLASS))\r\n }\r\n treeViewConfig.onContentReady = function(e) {\r\n (0, _common.deferUpdate)(function() {\r\n if (scrollTop) {\r\n var scrollable = (0, _renderer.default)(e.element).find(\".dx-scrollable\").data(\"dxScrollable\");\r\n scrollable && scrollable.scrollTo({\r\n y: scrollTop\r\n })\r\n }\r\n that.renderCompleted.fire()\r\n })\r\n };\r\n if (this._isWinDevice()) {\r\n treeViewConfig.useNativeScrolling = false\r\n }(0, _extend.extend)(treeViewConfig, isSelectMode ? this._prepareSelectModeConfig() : this._prepareDragModeConfig());\r\n if (this._columnChooserList) {\r\n if (!treeViewConfig.searchEnabled) {\r\n treeViewConfig.searchValue = \"\"\r\n }\r\n this._columnChooserList.option(treeViewConfig)\r\n } else {\r\n this._columnChooserList = this._createComponent($container, _tree_view.default, treeViewConfig);\r\n $container.addClass(this.addWidgetPrefix(COLUMN_CHOOSER_LIST_CLASS))\r\n }\r\n },\r\n _prepareDragModeConfig: function() {\r\n var columnChooserOptions = this.option(\"columnChooser\");\r\n return {\r\n noDataText: columnChooserOptions.emptyPanelText,\r\n activeStateEnabled: false,\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false,\r\n itemTemplate: function(data, index, item) {\r\n (0, _renderer.default)(item).text(data.text).parent().addClass(data.cssClass).addClass(COLUMN_CHOOSER_ITEM_CLASS)\r\n }\r\n }\r\n },\r\n _prepareSelectModeConfig: function() {\r\n var that = this;\r\n var selectionChangedHandler = function(e) {\r\n var visibleColumns = that._columnsController.getVisibleColumns().filter(function(item) {\r\n return !item.command\r\n });\r\n var isLastColumnUnselected = 1 === visibleColumns.length && !e.itemData.selected;\r\n if (isLastColumnUnselected) {\r\n e.component.selectItem(e.itemElement)\r\n } else {\r\n setTimeout(function() {\r\n that._columnsController.columnOption(e.itemData.id, \"visible\", e.itemData.selected)\r\n }, CLICK_TIMEOUT)\r\n }\r\n };\r\n return {\r\n selectNodesRecursive: false,\r\n showCheckBoxesMode: \"normal\",\r\n onItemSelectionChanged: selectionChangedHandler\r\n }\r\n },\r\n _columnOptionChanged: function(e) {\r\n var changeTypes = e.changeTypes;\r\n var optionNames = e.optionNames;\r\n var isSelectMode = \"select\" === this.option(\"columnChooser.mode\");\r\n this.callBase(e);\r\n if (isSelectMode) {\r\n var needPartialRender = optionNames.visible && 1 === optionNames.length && void 0 !== e.columnIndex;\r\n var needFullRender = optionNames.showInColumnChooser || optionNames.caption || optionNames.visible || changeTypes.columns && optionNames.all;\r\n if (needPartialRender) {\r\n this.render(null, {\r\n changeType: \"selection\",\r\n columnIndex: e.columnIndex\r\n })\r\n } else {\r\n if (needFullRender) {\r\n this.render(null, \"full\")\r\n }\r\n }\r\n }\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"columnChooser\":\r\n this._initializePopupContainer();\r\n this.render(null, \"full\");\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n getColumnElements: function() {\r\n var result = [];\r\n var $node;\r\n var isSelectMode = \"select\" === this.option(\"columnChooser.mode\");\r\n var chooserColumns = this._columnsController.getChooserColumns(isSelectMode);\r\n var $content = this._popupContainer && this._popupContainer.$content();\r\n var $nodes = $content && $content.find(\".dx-treeview-node\");\r\n if ($nodes) {\r\n chooserColumns.forEach(function(column) {\r\n $node = $nodes.filter(\"[data-item-id = '\" + column.index + \"']\");\r\n var item = $node.length ? $node.children(\".\" + COLUMN_CHOOSER_ITEM_CLASS).get(0) : null;\r\n result.push(item)\r\n })\r\n }\r\n return (0, _renderer.default)(result)\r\n },\r\n getName: function() {\r\n return \"columnChooser\"\r\n },\r\n getColumns: function() {\r\n return this._columnsController.getChooserColumns()\r\n },\r\n allowDragging: function(column, sourceLocation) {\r\n var columnVisible = column && column.allowHiding && (\"columnChooser\" !== sourceLocation || !column.visible && this._columnsController.isParentColumnVisible(column.index));\r\n return this.isColumnChooserVisible() && columnVisible\r\n },\r\n getBoundingRect: function() {\r\n var that = this;\r\n var container = that._popupContainer && that._popupContainer._container();\r\n if (container && container.is(\":visible\")) {\r\n var offset = container.offset();\r\n return {\r\n left: offset.left,\r\n top: offset.top,\r\n right: offset.left + container.outerWidth(),\r\n bottom: offset.top + container.outerHeight()\r\n }\r\n }\r\n return null\r\n },\r\n showColumnChooser: function() {\r\n if (!this._popupContainer) {\r\n this._initializePopupContainer();\r\n this.render()\r\n }\r\n this._popupContainer.show();\r\n if (this._isWinDevice()) {\r\n (0, _renderer.default)(\"body\").addClass(this.addWidgetPrefix(NOTOUCH_ACTION_CLASS))\r\n }\r\n },\r\n hideColumnChooser: function() {\r\n if (this._popupContainer) {\r\n this._popupContainer.hide()\r\n }\r\n },\r\n isColumnChooserVisible: function() {\r\n var popupContainer = this._popupContainer;\r\n return popupContainer && popupContainer.option(\"visible\")\r\n },\r\n publicMethods: function() {\r\n return [\"showColumnChooser\", \"hideColumnChooser\"]\r\n }\r\n});\r\nvar _default = {\r\n defaultOptions: function() {\r\n return {\r\n columnChooser: {\r\n enabled: false,\r\n allowSearch: false,\r\n searchTimeout: 500,\r\n mode: \"dragAndDrop\",\r\n width: 250,\r\n height: 260,\r\n title: _message.default.format(\"dxDataGrid-columnChooserTitle\"),\r\n emptyPanelText: _message.default.format(\"dxDataGrid-columnChooserEmptyText\"),\r\n container: void 0\r\n }\r\n }\r\n },\r\n controllers: {\r\n columnChooser: ColumnChooserController\r\n },\r\n views: {\r\n columnChooserView: ColumnChooserView\r\n },\r\n extenders: {\r\n views: {\r\n headerPanel: {\r\n _getToolbarItems: function() {\r\n var items = this.callBase();\r\n return this._appendColumnChooserItem(items)\r\n },\r\n _appendColumnChooserItem: function(items) {\r\n var that = this;\r\n var columnChooserEnabled = that.option(\"columnChooser.enabled\");\r\n if (columnChooserEnabled) {\r\n var onClickHandler = function() {\r\n that.component.getView(\"columnChooserView\").showColumnChooser()\r\n };\r\n var onInitialized = function(e) {\r\n (0, _renderer.default)(e.element).addClass(that._getToolbarButtonClass(that.addWidgetPrefix(COLUMN_CHOOSER_BUTTON_CLASS)))\r\n };\r\n var hintText = that.option(\"columnChooser.title\");\r\n var toolbarItem = {\r\n widget: \"dxButton\",\r\n options: {\r\n icon: COLUMN_CHOOSER_ICON_NAME,\r\n onClick: onClickHandler,\r\n hint: hintText,\r\n text: hintText,\r\n onInitialized: onInitialized\r\n },\r\n showText: \"inMenu\",\r\n location: \"after\",\r\n name: \"columnChooserButton\",\r\n locateInMenu: \"auto\",\r\n sortIndex: 40\r\n };\r\n items.push(toolbarItem)\r\n }\r\n return items\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"columnChooser\":\r\n this._invalidate();\r\n args.handled = true;\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n isVisible: function() {\r\n var that = this;\r\n var columnChooserEnabled = that.option(\"columnChooser.enabled\");\r\n return that.callBase() || columnChooserEnabled\r\n }\r\n }\r\n },\r\n controllers: {\r\n columns: {\r\n allowMoveColumn: function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {\r\n var columnChooserMode = this.option(\"columnChooser.mode\");\r\n var isMoveColumnDisallowed = \"select\" === columnChooserMode && \"columnChooser\" === targetLocation;\r\n return isMoveColumnDisallowed ? false : this.callBase(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation)\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/grid_core/ui.grid_core.virtual_scrolling.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _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 dataController.dataSourceChanged.add(function() {\r\n !_this._scrollTop && _this._scrollToCurrentPageOnResize()\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 \"