{"version":3,"sources":["webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.mask.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.mask.parts.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.base.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.strategy.date_view.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_view.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_view_roller.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.strategy.native.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.strategy.calendar_with_time.js","webpack:///./node_modules/devextreme/ui/date_box/ui.time_view.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.strategy.list.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.base.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.column_headers.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.columns_controller.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.data_controller.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.sorting.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.rows.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.context_menu.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.error_handling.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.grid_view.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.header_panel.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.state_storing.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.selection.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.column_chooser.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.grouping.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.grouping.expanded.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.grouping.collapsed.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.master_detail.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.editing.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.editor_factory.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.validating.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.virtual_scrolling.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.filter_row.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.header_filter.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.filter_sync.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.filter_builder.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.filter_panel.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.search.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.pager.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.columns_resizing_reordering.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.keyboard_navigation.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.summary.js","webpack:///./node_modules/devextreme/ui/data_grid/aggregate_calculator.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.column_fixing.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.adaptivity.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.virtual_columns.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.export.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.focus.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.row_dragging.js","webpack:///./node_modules/devextreme/ui/defer_rendering.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_utils.js","webpack:///./node_modules/devextreme/ui/date_box.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.strategy.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.data_source_adapter.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.core.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.utils.js","webpack:///./node_modules/devextreme/ui/data_grid.js","webpack:///./node_modules/devextreme/ui/date_box/ui.date_box.strategy.calendar.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.js","webpack:///./node_modules/devextreme/ui/data_grid/ui.data_grid.grouping.core.js"],"names":["exports","default","_component_registrator","_interopRequireDefault","_uiDate_box","obj","__esModule","_default","module","_index","_type","_dom","_extend","_math","_events_engine","_uiDate_boxMask","_date","_date2","_date3","_number","_devices","_browser","inherit","_supportedKeys","e","_this","this","originalHandlers","callBase","callOriginalHandler","originalHandler","normalizeKeyName","apply","applyHandler","maskHandler","_shouldUseOriginalHandler","extend","del","event","_revertPart","_isAllSelected","preventDefault","backspace","home","_selectFirstPart","end","_selectLastPart","escape","_revertChanges","enter","_enterHandler","leftArrow","_selectNextPart","rightArrow","upArrow","_upDownArrowHandler","downArrow","isNotDeletingInCalendar","option","indexOf","_useMaskBehavior","altKey","step","_setNewDateIfEmpty","originalValue","_getActivePartValue","_initialMaskValue","delta","_loadMaskValue","_partIncrease","_getDefaultOptions","useMaskBehavior","emptyDateValue","Date","_isSingleCharKey","_ref","originalEvent","ctrl","alt","key","data","length","_isSingleDigitKey","_e$originalEvent","parseInt","_useBeforeInputEvent","device","real","android","version","_keyboardHandler","_this2","result","chrome","code","replace","_processInputKey","_maskInputHandler","_renderSelectedPart","_maskBeforeInputHandler","_this3","inputType","isBackwardDeletion","direction","_keyPressHandler","_renderDisplayText","_getDisplayedText","_maskValue","_activePartIndex","isNaN","_searchString","_searchNumber","caret","_caret","start","_getFormatPattern","_formatPattern","format","_strategy","getDisplayFormat","isLDMLPattern","isString","_getPatternByFormat","getFormat","value","_renderDateParts","_partLimitsReached","max","maxLimitLength","String","formatLength","_getActivePartProp","maxSearchLength","Math","min","isLengthExceeded","_searchValue","isValueOverflowed","char","_getActivePartLimits","substr","_setActivePartValue","limits","startString","toLowerCase","endLimit","i","_clearSearchValue","actual","_prepareRegExpInfo","_regExpInfo","getRegExpInfo","flags","regexp","convertedRegExp","convertDigits","source","RegExp","_initMaskState","_renderMask","_detachMaskEvents","_clearMaskState","_attachMaskEvents","text","_dateParts","renderDateParts","_input","is","off","_this4","on","addNamespace","_maskClickHandler","bind","_maskPasteHandler","_maskCompositionEndHandler","_onMouseWheel","arguments","_disposed","index","fitIntoRange","isStub","isBoundaryIndex","_getRealLimitsPattern","lockOtherParts","limitFunction","dateValue","getter","isFunction","_addLeadingZeroes","zeroes","match","setter","inRange","property","dateOption","_saveMaskValue","setHours","_this$_getActivePartL2","limitDelta","newValue","_applyLimits","limitBase","limitClosest","_ref2","sign","getDatePartIndexByPosition","isDefined","_this5","msie","val","newText","_replaceSelectedText","clipboardText","date","parse","_isDateValid","isDate","_isValueDirty","getTime","_fireChangeEvent","trigger","_focusOutHandler","isDefaultPrevented","_valueChangeEventHandler","_saveValueChangeEvent","_optionChanged","args","name","reset","_clean","_common","monthGetter","getMonth","monthSetter","day","getDate","monthLimits","getLimits","setMonth","_getLimits","newDay","setDate","PATTERN_GETTERS","a","getHours","E","y","M","L","d","H","h","m","s","S","PATTERN_SETTERS","getPatternSetters","hours","isPM","getDay","currentYear","getFullYear","valueLength","setFullYear","getPatternGetter","patternChar","regExpInfo","exec","sections","pattern","patterns","push","noop","forcedPattern","dM","getAmPm","dateParts","position","caretInGroup","_window","_iterator","_version","_support","_config","_ui","_date_serialization","_ui2","_message","_uiDate_boxStrategy","_uiDate_boxStrategy2","_uiDate_boxStrategy3","_uiDate_boxStrategy4","_uiDate_boxStrategy5","window","getWindow","PICKER_TYPE","calendar","rollers","list","TYPE","datetime","time","STRATEGY_NAME","STRATEGY_CLASSES","Calendar","DateView","Native","CalendarWithTime","List","DateBox","supportedKeys","_renderButtonContainers","customizeButtons","type","showAnalogClock","dateSerializationFormat","displayFormat","interval","disabledDates","pickerType","invalidDateMessage","dateOutOfRangeMessage","applyButtonText","adaptivityEnabled","calendarOptions","useHiddenSubmitElement","_defaultOptionsRules","concat","platform","options","buttonsLocation","native","currentDevice","realDevice","deviceType","compare","_initOptions","_userOptions","_updatePickerOptions","_pickerType","_init","_initStrategy","getDefaultOptions","_toLowerCaseFirstLetter","string","charAt","strategyName","_getStrategyName","_getFormatType","strategy","NAME","currentType","isTime","test","_initMarkup","$element","addClass","_refreshFormatClass","_refreshPickerTypeClass","renderInputMinMax","_render","_formatValidationIcon","_renderDimensions","toggleClass","_dimensionChanged","_this$_strategy$_upda","_this$_strategy","_popup","_updatePopupHeight","call","each","_","item","removeClass","DATEBOX_CLASS","hasWindow","inputElement","get","isRtlEnabled","clearButtonWidth","_getClearButtonWidth","longestElementDimensions","_getLongestElementDimensions","curWidth","parseFloat","getComputedStyle","width","shouldHideValidationIcon","style","_storedPadding","leftPadding","rightPadding","paddingLeft","paddingRight","_isClearButtonVisible","clearButtonElement","find","longestValue","getLongestDate","getMonthNames","getDayNames","$input","$longestValueElement","createTextElementHiddenCopy","storedPadding","appendTo","elementWidth","necessaryWidth","remove","_getKeyboardListeners","getKeyboardListener","_renderPopup","_wrapper","_renderPopupWrapper","_popupConfig","popupConfig","title","_getPopupTitle","dragEnabled","classPostfixes","DATEBOX_WRAPPER_CLASS","_renderPopupContent","renderPopupContent","_getFirstPopupElement","getFirstPopupElement","_getLastPopupElement","getLastPopupElement","_popupShowingHandler","popupShowingHandler","_popupShownHandler","renderOpenedState","_popupHiddenHandler","popupHiddenHandler","_visibilityChanged","visible","_clearValueHandler","_readOnlyPropValue","_isNativeType","_renderValue","renderValue","_setSubmitValue","submitFormat","SUBMIT_FORMATS_MAP","submitValue","serializeDate","toStandardDateFormat","_getSubmitElement","displayedText","mode","_getFormatByMode","FORMATS_MAP","currentValue","parsedDate","_getParsedDate","_getDateByDefault","mergeDates","_applyInternalValidation","isValid","useCurrentDateByDefault","getDefaultDate","parsedText","getParsedText","hasText","isDateInRange","dateInRange","validationMessage","validationError","editorSpecific","message","_applyCustomValidation","validationRequest","fire","editor","_serializeDate","_isValueChanged","oldValue","_isTextChanged","_renderProps","attr","_renderOpenedState","isAdaptivityChanged","_refreshStrategy","placeholder","_renderPlaceholder","dispose","_refresh","_applyButtonHandler","getValue","_this$_applyInternalV","_dispose","_this$_strategy2","_invalidate","_updateValue","_renderInputValue","textChangedHandler","_getSerializationFormat","forceIsoDateParsing","isNumeric","getDateSerializationFormat","dxEvent","isValueChanged","optionName","deserializeDate","serializationFormat","_renderer","openOnFieldClick","dateBox","config","toolbarItems","_popupToolbarItemsConfig","onInitialized","defaultOptionsRules","height","_device","_device2","phone","maxWidth","maxHeight","collision","my","at","of","_renderWidget","_widget","popup","_getPopup","_getWidgetOptions","element","$content","_createWidget","_getWidgetContainer","_getWidgetName","_getCurrentDate","dateBoxValue","minDate","maxDate","now","ONE_YEAR","onDisposing","_editor","ROLLER_TYPE","_valueOption","_getDefaultDate","MIN_DATEVIEW_DEFAULT_DATE","MAX_DATEVIEW_DEFAULT_DATE","applyCompactClass","_toggleFormatClasses","_toggleCompactClass","currentFormat","previousFormat","DATEVIEW_CLASS","_$wrapper","_renderContentImpl","_renderRollers","_$rollersContainer","empty","_createRollerConfigs","_rollers","that","_rollerConfigs","$roller","DATEVIEW_ROLLER_CLASS","_createComponent","items","displayItems","selectedIndex","showScrollbar","onStart","roller","component","_toggleActive","_setActiveRoller","onEnd","onClick","_setRollerState","onSelectedIndexChanged","getFormatParts","forEach","partName","_createRollerConfig","componentName","componentInfo","DATE_COMPONENTS_INFO","valueRange","_calculateRollerConfigValueRange","startValue","endValue","formatter","curDate","setValue","valueItems","getIndex","currentRoller","activeRoller","toggleActiveState","_updateRollersPosition","correctIndex","rollerValue","currentDate","getMaxMonthDay","normalizedDate","normalizeDate","_refreshRollers","_refreshRoller","rollerType","rollerConfig","toString","minYear","sameYear","minMonth","maxYear","maxMonth","minHour","maxHour","previousValue","_click","_fx","_translator","DateViewRoller","useNative","bounceEnabled","showOnClick","scrollByContent","_renderSelectedItemFrame","_renderContainerClick","_renderItems","_renderSelectedValue","_renderItemsClick","_renderWheelEvent","_wrapAction","_endActionHandler","_renderSelectedIndexChanged","_selectedIndexChanged","_createActionByOption","_$container","_isWheelScrolled","eventName","clickAction","actionName","callback","originalAction","$items","_$content","add","append","_$items","update","_fitIndex","_moveTo","top","_getItemPosition","_renderActiveStateItem","itemCount","round","_itemHeight","itemSelector","_getItemSelector","_itemClickHandler","_itemElementIndex","currentTarget","itemElement","_itemElements","_shouldScrollToNeighborItem","targetLocation","_normalizeLocation","location","_location","x","left","_isVisible","_prepareDirections","_animation","stop","animate","duration","to","floor","complete","resetPosition","handleMove","_validate","validate","_fitSelectedIndexInRange","itemsCount","_isInNullNeighborhood","_getSelectedIndexAfterScroll","currentSelectedIndex","dy","_getNewSelectedIndex","ratio","newSelectedIndex","first","state","_fireSelectedIndexChanged","_refreshSelectedIndex","fitIndex","_array","split","_isTextInput","fromStandardDateFormat","prop","_getDateBoxType","inArray","SUPPORTED_FORMATS","dropDownButton","getButton","click","_box","applyValueMode","_is24HourFormat","is24HourFormat","_getContouredValue","viewDate","_updateDateTime","_timeView","_showClock","_isShrinkView","use24HourFormat","onValueChanged","_valueChangedHandler","stylingMode","registerKeyHandler","_escapeHandler","_isSmallScreen","clearTimeout","_repaintTimer","setTimeout","repaint","isAdaptiveMode","currentAdaptiveMode","_currentAdaptiveMode","preventDefaultValue","normalizeTime","_getBoxItems","shrink","baseSize","$popupContent","crossAlign","itemTemplate","$container","_attachTabHandler","calendarPopupConfig","onShowing","clockMinWidth","css","_hourBox","shiftKey","focus","_preventFocusOnPopup","target","hasClass","_hasFocusClass","getMinutes","getSeconds","getMilliseconds","_removeMinWidthTimer","_number_box","_select_box","rotateArrow","$arrow","angle","offset","cssRotate","TimeView","_arrowOffset","_getValue","_renderBox","_updateTime","$box","template","_renderClock","_renderField","__","container","_$hourArrow","_$minuteArrow","setAria","_updateClock","hourArrowAngle","minuteArrowAngle","is12HourFormat","getTimeSeparator","_minuteBox","_format12","_createHourBox","_createMinuteBox","_createFormat12Box","align","_onHourBoxValueChanged","onKeyboardHandled","opts","_getNumberBoxConfig","_isPM","newHours","_convertMaxHourToMin","maxHoursValue","newMinutes","setMinutes","periodNames","getPeriodNames","valueExpr","displayExpr","_ref3","_refreshFormat12","_silentEditorValueUpdate","_suppressValueChangeAction","_resumeValueChangeAction","showSpinButtons","displayValueFormatter","_normalizeHours","_updateField","_list","_utils","BOUNDARY_VALUES","tab","close","space","_refreshItems","_timeListItemTemplate","onItemClick","_listItemClickHandler","tabIndex","onFocusedItemChanged","_refreshActiveDescendant","selectionMode","actionValue","_widgetItems","_getTimeListItems","_setSelectedItemsByValue","_asyncScrollTimeout","_scrollToSelectedItem","dateIndex","_getDateIndex","scrollToItem","n","_areDatesEqual","second","_getBoundaryDate","minutes","ONE_DAY","abs","ONE_MINUTE","_getRangeItems","rangeDuration","rangeItems","boundary","boundaryValue","ensureDefined","itemData","seconds","year","month","setSeconds","dropDownOptionsHeight","getSizeValue","_setPopupOption","popupHeight","outerHeight","_timeList","updateDimensions","_console","_uiData_grid","_themes","registerModulesOrder","DataGrid","_activeStateUnit","modules","defaultOptions","_setDeprecatedOptions","_deprecatedOptions","useKeyboard","since","alias","showRowLines","isMaterial","showColumnLines","headerFilter","editing","useIcons","webkit","loadingTimeout","loadPanel","animation","show","easing","from","opacity","grouping","expandMode","processModules","callModuleItemsMethod","handled","getView","render","_renderContent","deferRender","_getTemplate","templateName","logger","warn","isReady","getController","beginUpdate","endUpdate","_controllers","_views","registerModule","ColumnHeadersView","_uiGrid_core","views","columnHeadersView","commonColumnSettings","allowExporting","controllers","DataController","_uiData_grid2","_getDataSourceAdapter","_getSpecificDataSourceOption","dataSource","Array","isArray","log","RowsView","rowsView","HeaderPanel","headerPanel","ColumnChooserView","ColumnChooserController","columnChooser","columnChooserView","GroupingHeaderPanelExtender","_uiData_gridGrouping","_uiData_gridGrouping2","_deferred","_accessibility","GroupingDataSourceAdapterExtender","init","_initGroupingHelper","_grouping","isAutoExpandAll","isFocusedRowEnabled","remoteOperations","filtering","sorting","paging","GroupingHelper","totalItemsCount","totalCount","_dataSource","group","requireTotalCount","totalCountCorrection","allowCollapseAll","isGroupItemCountable","isRowExpanded","groupInfo","findGroupInfo","isExpanded","collapseAll","groupIndex","_collapseExpandAll","expandAll","isExpand","groups","normalizeSortingInfo","foreachGroups","parents","resetPagesCache","refresh","changeRowExpand","path","beginLoading","_lastLoadOptions","groupExpand","_changeRowExpandCore","always","endLoading","_hasGroupLevelsExpandState","_customizeRemoteOperations","operationTypes","storeLoadOptions","isCustomLoading","groupPaging","resetCache","_handleDataLoading","handleDataLoading","_handleDataLoaded","handleDataLoaded","_handleDataLoadedCore","handleDataLoadedCore","GroupingDataControllerExtender","createAction","_beforeProcessItems","groupColumns","_columnsController","getGroupColumns","_processGroupItems","_processItem","rowType","_processGroupItem","dataIndex","groupsCount","groupedColumns","column","scrollingMode","collectContinuationItems","resultItems","values","isContinuation","slice","deserializeValue","calculateDisplayValue","pop","publicMethods","pageIndex","reload","expanded","executeAction","cancel","Deferred","resolve","when","done","load","fail","reject","expandRow","collapseRow","optionChanged","onGroupingMenuItemClick","params","columnsController","columnOption","dataField","clearGrouping","_getToolbarItems","_appendGroupingItem","_isGroupPanelVisible","isRendered","toolbarItem","$groupPanel","_updateGroupPanelContent","registerKeyboardAction","_handleActionKeyDown","onItemRendered","renderCompleted","locateInMenu","sortIndex","$target","groupColumnIndex","closest","columnIndex","showHeaderFilterMenu","_processGroupItemAction","isVisible","groupPanelOptions","current","_renderGroupPanelItems","groupColumn","_createGroupPanelItem","restoreFocus","$rootElement","$groupPanelItem","cssClass","caption","setTabIndex","_columnOptionChanged","_requireReady","checkChanges","optionNames","$toolbarElement","allowColumnDragging","emptyPanelText","updateToolbarDimensions","allowDragging","allowGrouping","getColumnElements","getColumns","getBoundingRect","bottom","getName","getContextMenuItems","contextMenuEnabled","$groupedColumnElement","targetElement","isColumnGrouped","groupingTexts","ungroup","disabled","ungroupAll","GroupingRowsViewExtender","row","_rowClick","isGroupRowStateChanged","isExpandButtonClicked","_changeGroupRowState","dataController","rowIndex","allowCollapsing","columnHeadersViewExtender","command","groupByThisColumn","beginGroup","showWhenGrouped","autoExpandAll","texts","groupContinuesMessage","groupContinuedMessage","groupPanel","extenders","columns","_getExpandColumnOptions","cellTemplate","getExpandCellTemplate","_data","_store_helper","_query","foreachCollapsedGroups","correctSkipLoadOption","pathEquals","updateGroupOffsets","getGroupCount","loadTotalCount","loadOptions","skip","take","extra","updateOffsets","skipCorrection","resultSkip","count","path1","path2","keysEqual","additionalGroupInfo","groupCount","collapsedGroups","collapsedItemsCount","skipFirstItem","sorts","sort","arrangeSortingInfo","removeGroupLoadOption","filter","filterElement","j","selector","combineFilters","createNotGroupFilter","appendCollapsedPath","collapsedGroup","keyValue","pathValue","toComparable","splice","query","multiLevelGroup","enumerate","groupedData","pathIndex","processGroupItems","removeLastItemsCount","needRemoveFirstItem","collapsedItems","offsetInfo","isContinuationOnNextPage","updateTotalItemsCount","itemsCountCorrection","groupCountQuery","beginPageIndex","dataSourceItems","pageSize","createGroupFilter","addGroupInfo","_eventsStrategy","fireEvent","groupOffsetQuery","createOffsetFilter","_errors","getContinuationGroupCount","groupOffset","groupSize","pageOffset","foreachExpandedGroups","updateGroups","expandedInfo","isLastGroupExpanded","paths","lastCount","updateGroupInfoItem","isLastGroupLevel","_isGroupExpanded","updateGroupInfos","loadedGroupCount","parentIndex","skips","isGroupExpanded","getTotalOffset","groupInfos","totalOffset","childrenTotalCount","applyContinuationToGroupItem","groupLevel","expandedItemIndex","takes","isLastExpandedItem","isFirstExpandedItem","lastExpandedItemSkip","isItemsTruncatedByTake","isDataDeferred","makeDataDeferred","loadGroupItems","currentGroupCount","currentGroupIndex","fillSkipTakeInExpandedInfo","currentGroup","deferreds","requireGroupCount","groupSummary","select","loadResult","loadFromStore","loadExpandedGroups","expandedFilters","expandedPath","isLoadingAll","isPagingLocal","isLastLevelGroupItemsPagingLocal","sortLastLevelGroupItems","expandedItems","loadLastLevelGroupItems","loadGroupTotalCount","isGrouping","isFinite","errors","Error","isVirtualPaging","_isVirtualPaging","_updatePagingOptions","skipChildrenTotalCount","takeCorrection","parentTakeCorrection","continuationGroupCount","skipContinuationGroupCount","groupInfoCount","childrenGroupInfoCount","unshift","remoteGroupPaging","lastLoadOptions","remotePaging","isLastGroup","_processPaging","_processSkips","firstItem","children","_processTakes","lastItem","maxTakeCount","parent","oldGroups","_group","handleGroup","editingController","_editingController","dataSourceAdapter","TrackerView","ColumnsResizerViewController","TablePositionViewController","ColumnsSeparatorView","DraggingHeaderViewController","DraggingHeaderView","draggingHeaderView","draggingHeader","columnsSeparatorView","tablePosition","columnsResizer","trackerView","FooterView","renderSummaryCell","_aggregate_calculator","cell","$cell","summaryItems","$summaryItems","summaryItem","alignment","getSummaryText","summaryTexts","getSummaryCellOptions","totalItem","summaryCells","getGroupAggregates","summary","aggregates","recalculateWhileEditing","ColumnsView","_getRows","_dataController","footerItems","_getCellOptions","_renderCellContent","_renderCore","change","columnIndices","_updateContent","_renderTable","$newTable","changeType","$row","getTableElement","$newRow","_updateCells","changeTypes","visibleWidth","_handleDataChanged","repaintChangesOnly","totalColumnIndices","getHeight","getElementHeight","calculateAggregates","sortGroupsBySummary","SummaryDataSourceAdapterExtender","_totalAggregates","_summaryGetter","summaryGetter","_summary","totalAggregates","sortByGroupsInfo","sortByGroups","groupedItems","toArray","forEachGroup","itemsPath","SummaryDataSourceAdapterClientExtender","calculator","insertedData","getInsertedData","applyAddedData","map","removedData","getRemovedData","applyRemovedData","updatedData","updatedItems","Object","defineProperty","set","groupAggregates","calculate","sortGroupsBySummaryCore","sortBy","desc","thenBy","sortedItems","totalSummary","cachedExtra","cachedPagesData","isPlainObject","groupItems","totalItems","calculateCustomSummary","skipEmptyValues","sum","getFormatter","sumOtherColumn","minOtherColumn","maxOtherColumn","avg","avgOtherColumn","sortByGroupSummaryInfo","footerView","_isDataColumn","_isGroupFooterVisible","groupItem","showInColumn","showInGroupFooter","isGroupFooterVisible","summaryGroupItems","afterGroupColumnIndex","visibleColumns","visibleIndex","prevColumn","_calculateSummaryCells","alignByColumn","calculateTargetColumnIndex","summaryCellsByColumns","summaryIndex","valueFormat","aggregate","summaryType","getFormatByDataType","dataType","columnCaption","isEmptyObject","_getSummaryCells","summaryTotalItems","getVisibleColumns","_updateItemsCore","_footerItems","oldSummaryCells","summaryCell","JSON","stringify","_prepareUnsavedDataSelector","getUpdatedData","_prepareAggregateSelector","aggregator","Number","_getAggregates","commonSkipEmptyValues","calculateCellValue","compileGetter","summaryProcess","seed","totalValue","finalize","_addSortInfo","sortOrder","_findSummaryItem","summaryItemIndex","_getSummarySortByGroups","groupSummaryItems","_createDataSourceAdapterCore","currentRemoteOperations","_getSummaryOptions","totalSummaryItems","methods","getTotalSummaryValue","summaryItemName","_refreshSummary","isSaving","changesOnly","_addChange","_removeChange","cancelEditData","_createRow","_renderCells","_renderGroupSummaryCells","_hasAlignByColumnSummaryItems","_getAlignByColumnCellCount","groupCellColSpan","alignByColumnCellCount","$groupCell","last","_renderGroupSummaryCellsCore","_renderCell","_getSummaryCellIndex","_getCellTemplate","parameters","_class","depthFirstSearch","depth","root","array","normalizeAggregate","aggregators","ctor","_groupLevel","_groupAggregates","_totals","_calculateTotals","_calculateGroups","_aggregate","_accumulate","level","_seed","_finalize","maxLevel","currentLevel","seedFn","stepFn","finalizeFn","node","innerNode","NaN","aggregateIndex","results","fin","ExportController","DataProvider","_position","_exporter","_button","_context_menu","_toConsumableArray","arr","_arrayLikeToArray","_arrayWithoutHoles","iter","Symbol","iterator","_iterableToArray","o","minLen","prototype","constructor","_unsupportedIterableToArray","TypeError","_nonIterableSpread","len","arr2","_getGroupValue","_options","getDisplayValue","formatValue","getGroupRowSummaryText","_correctCellIndex","cellIndex","exportController","_exportController","excelWrapTextEnabled","_getColumns","_initialColumnWidthsByColumnIndex","_selectedRowsOnly","_selectionOnly","_getSelectedItems","_getAllItems","getVisibleIndex","isHeadersVisible","customizeExportData","rtlEnabled","wrapTextEnabled","customizeExcelCell","hasCustomizeExcelCell","cellSourceData","gridCell","initialColumnWidthsByColumnIndex","selectedRowsOnly","getHeaderStyles","bold","wrapText","getGroupRowStyle","getDefaultAlignment","getColumnStyles","columnStyles","getStyles","_getTotalCellStyleId","_this$getColumns$cell","getStyleId","getHeaderRowCount","isTotalCell","isGroupRow","getColumnsByAllRows","getColumnsWidths","c","getRowsCount","getGroupLevel","getCellType","customizeText","lookup","ready","_convertFromGridGroupSummaryItems","gridGroupSummaryItems","getCellData","isExcelJS","correctedCellIndex","gridColumn","itemValues","totalSummaryItemName","_value","displayValue","getCustomizeTextByDataType","correctCellIndex","isSummaryAlignByColumn","getCellMerging","colspan","exportColspan","rowspan","getFrozenArea","ViewController","include","_getEmptyCell","_updateColumnWidth","rowCount","getRowCount","currentHeaderRow","columnWidthsByColumnIndex","_updateLockCount","columnWidths","_getColumnWidths","_headersView","_rowsView","_i","_needColumnExporting","currentColspan","_calculateExportColspan","_prepareItems","isBand","childColumns","getChildrenByBandColumn","reduce","childColumn","_getFooterSummaryItems","isTotal","estimatedItemsCount","itemsLength","_hasSummaryGroupFooters","_getItemsWithSummaryGroupFooters","sourceItems","beforeGroupFooterItems","groupFooterItems","_updateGroupValuesWithSummaryByColumn","summaryValues","groupColumnCount","k","merge","_processUnExportedItems","isDetailExpandColumn","loadAll","selectedRowData","getSelectedRowsData","headersView","getColumnWidths","excludeValidators","callbackNames","getExportFormat","getDataProvider","columnsLastRowVisibleColumns","exportToExcel","selectionOnly","export","fileName","proxyUrl","autoFilterEnabled","ignoreErrors","exportingAction","getAction","exportedAction","fileSavingAction","excel","getData","_isSelectedRows","selectionOnlyChanged","enabled","excelFilterEnabled","allowExportSelectedData","ignoreExcelErrors","exportTo","exportAll","exportSelectedRows","callbackList","_updateEditButtons","editingChanged","hasChanges","_appendExportItems","exportOptions","exportItems","_renderButton","_renderExportMenu","menuItemTemplate","_renderList","allowExportSelected","_correctItemsPosition","withText","buttonOptions","_getButtonOptions","$buttonContainer","_getButtonContainer","wrapperNode","wrapInner","hint","_renderFakeButton","exportSelected","scrollingEnabled","iconName","$icon","$text","$button","BUTTON_CLASS","$toolbarItem","itemA","itemB","menuItems","icon","$menuContainer","_contextMenu","showEvent","_$parent","boundaryOffset","_isExportButtonVisible","setToolbarItemDisabled","MAX_SAFE_INTEGER","isRowClick","keyboardNavigation","isKeyboardEnabled","_isFocusedRowInsideGroup","focusedRowKey","getRowIndexByKey","focusedRow","getVisibleRows","getGroupDataSourceParameters","_getGroupPath","groupPath","_expandGroupByPath","promise","_calculateGlobalRowIndexByGroupedData","_generateFilterByKey","deferred","isGroupKey","_concatWithCombinedFilter","_calculateExpandedRowGlobalIndex","_calculateGlobalRowIndexByFlatData","groupFilter","isVirtualScrolling","equalByValue","dataOffset","groupContinuationCount","_transition_executor","_dom_adapter","_visibility_change","_load_indicator","ACTIONS","DeferRendering","showLoadIndicator","renderWhen","staggerItemSelector","onRendered","onShown","_getAnonymousTemplateName","transitionExecutor","TransitionExecutor","_initElement","_initRender","_$initialContent","clone","contents","_initActions","doRender","_renderDeferredContent","isPromise","fromPromise","_actions","action","_initContent","_setLoadingState","_abortRenderTask","_renderTask","executeAsync","_renderImpl","shownArgs","rejectWith","_isElementInViewport","rect","right","innerHeight","getDocumentElement","clientHeight","innerWidth","clientWidth","_animate","animatePromise","renderedArgs","contentTemplate","_templateManager","anonymousTemplateName","noModel","_setRenderedState","_isRendered","hasCustomLoadIndicator","_showLoadIndicator","_$loadIndicator","triggerShownEvent","_renderOrAnimate","renderContent","abort","_typeof","newDate","DATE_COMPONENTS","TIME_COMPONENTS","dateUtils","FORMATS_INFO","getStandardPattern","components","standardPattern","dateParser","valueOf","formatInfo","getLongestCaptionIndex","captionArray","longestIndex","longestCaptionLength","formatUsesMonthName","formatUsesDayName","monthNames","dayNames","stringFormat","formatType","getStringFormat","longestDate","setMilliseconds","formatDate","milliseconds","abstract","widgetOption","widgetName","widgetOptions","_this$_getPopup","dataSourceAdapterType","extender","create","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","configurable","writable","_calendar","homeEndHandler","viewValue","lastActionElement","_lastActionElement","_view","onCellClick","_cellClickHandler","_injectComponent","onContouredChanged","hasFocus","func","splitPair","_isCalendarVisible","widget","toolbar","_toTodayView","prevValue","sameDate","lastLevelOnly","currentFilter","findGroupInfoByKey","getGroupInfoIndexByOffset","groupsInfo","hash","leftIndex","rightIndex","middleIndex","_groupsInfo","_totalCountCorrection","calculateItemsCount","childrenAtFirst","updateParentOffsets","foreachGroupsCore","callbackResults","executeCallback","callbackResult","currentParents","_updateGroupInfoOffsets","b","groupInfoData","cleanGroupsInfo"],"mappings":"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","file":"vendors~601e5762.649f9491c8575cb372f9.bundle.js","sourcesContent":["/**\r\n * DevExtreme (ui/date_box/ui.date_box.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 _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _uiDate_box = _interopRequireDefault(require(\"./ui.date_box.mask\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}(0, _component_registrator.default)(\"dxDateBox\", _uiDate_box.default);\r\nvar _default = _uiDate_box.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.mask.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 _index = require(\"../../events/utils/index\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _dom = require(\"../../core/utils/dom\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _uiDate_boxMask = require(\"./ui.date_box.mask.parts\");\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _date2 = require(\"../../localization/ldml/date.parser\");\r\nvar _date3 = require(\"../../localization/ldml/date.format\");\r\nvar _uiDate_box = _interopRequireDefault(require(\"./ui.date_box.base\"));\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\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 MASK_EVENT_NAMESPACE = \"dateBoxMask\";\r\nvar FORWARD = 1;\r\nvar BACKWARD = -1;\r\nvar DateBoxMask = _uiDate_box.default.inherit({\r\n _supportedKeys: function(e) {\r\n var _this = this;\r\n var originalHandlers = this.callBase(e);\r\n var callOriginalHandler = function(e) {\r\n var originalHandler = originalHandlers[(0, _index.normalizeKeyName)(e)];\r\n return originalHandler && originalHandler.apply(_this, [e])\r\n };\r\n var applyHandler = function(e, maskHandler) {\r\n if (_this._shouldUseOriginalHandler(e)) {\r\n return callOriginalHandler.apply(_this, [e])\r\n } else {\r\n return maskHandler.apply(_this, [e])\r\n }\r\n };\r\n return (0, _extend.extend)({}, originalHandlers, {\r\n del: function(e) {\r\n return applyHandler(e, function(event) {\r\n _this._revertPart(FORWARD);\r\n _this._isAllSelected() || event.preventDefault()\r\n })\r\n },\r\n backspace: function(e) {\r\n return applyHandler(e, function(event) {\r\n _this._revertPart(BACKWARD);\r\n _this._isAllSelected() || event.preventDefault()\r\n })\r\n },\r\n home: function(e) {\r\n return applyHandler(e, function(event) {\r\n _this._selectFirstPart();\r\n event.preventDefault()\r\n })\r\n },\r\n end: function(e) {\r\n return applyHandler(e, function(event) {\r\n _this._selectLastPart();\r\n event.preventDefault()\r\n })\r\n },\r\n escape: function(e) {\r\n return applyHandler(e, function(event) {\r\n _this._revertChanges(event)\r\n })\r\n },\r\n enter: function(e) {\r\n return applyHandler(e, function(event) {\r\n _this._enterHandler(event)\r\n })\r\n },\r\n leftArrow: function(e) {\r\n return applyHandler(e, function(event) {\r\n _this._selectNextPart(BACKWARD);\r\n event.preventDefault()\r\n })\r\n },\r\n rightArrow: function(e) {\r\n return applyHandler(e, function(event) {\r\n _this._selectNextPart(FORWARD);\r\n event.preventDefault()\r\n })\r\n },\r\n upArrow: function(e) {\r\n return applyHandler(e, function(event) {\r\n _this._upDownArrowHandler(FORWARD);\r\n event.preventDefault()\r\n })\r\n },\r\n downArrow: function(e) {\r\n return applyHandler(e, function(event) {\r\n _this._upDownArrowHandler(BACKWARD);\r\n event.preventDefault()\r\n })\r\n }\r\n })\r\n },\r\n _shouldUseOriginalHandler: function(e) {\r\n var keysToHandleByMask = [\"backspace\", \"del\"];\r\n var isNotDeletingInCalendar = this.option(\"opened\") && e && keysToHandleByMask.indexOf((0, _index.normalizeKeyName)(e)) === -1;\r\n return !this._useMaskBehavior() || isNotDeletingInCalendar || e && e.altKey\r\n },\r\n _upDownArrowHandler: function(step) {\r\n this._setNewDateIfEmpty();\r\n var originalValue = this._getActivePartValue(this._initialMaskValue);\r\n var currentValue = this._getActivePartValue();\r\n var delta = currentValue - originalValue;\r\n this._loadMaskValue(this._initialMaskValue);\r\n this._partIncrease(delta + step, true)\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n useMaskBehavior: false,\r\n emptyDateValue: new Date(2e3, 0, 1, 0, 0, 0)\r\n })\r\n },\r\n _isSingleCharKey: function(_ref) {\r\n var originalEvent = _ref.originalEvent,\r\n ctrl = _ref.ctrl,\r\n alt = _ref.alt;\r\n var key = originalEvent.data || (\"space\" === (0, _index.normalizeKeyName)(originalEvent) ? \" \" : originalEvent.key);\r\n return \"string\" === typeof key && 1 === key.length && !ctrl && !alt\r\n },\r\n _isSingleDigitKey: function(e) {\r\n var _e$originalEvent;\r\n var data = null === (_e$originalEvent = e.originalEvent) || void 0 === _e$originalEvent ? void 0 : _e$originalEvent.data;\r\n return 1 === (null === data || void 0 === data ? void 0 : data.length) && parseInt(data, 10)\r\n },\r\n _useBeforeInputEvent: function() {\r\n var device = _devices.default.real();\r\n return device.android && device.version[0] > 4\r\n },\r\n _keyboardHandler: function(e) {\r\n var _this2 = this;\r\n var key = e.originalEvent.key;\r\n var result = this.callBase(e);\r\n if (!this._useMaskBehavior() || this._useBeforeInputEvent()) {\r\n return result\r\n }\r\n if (_browser.default.chrome && \"Process\" === e.key && 0 === e.code.indexOf(\"Digit\")) {\r\n key = e.code.replace(\"Digit\", \"\");\r\n this._processInputKey(key);\r\n this._maskInputHandler = function() {\r\n _this2._renderSelectedPart()\r\n }\r\n } else {\r\n if (this._isSingleCharKey(e)) {\r\n this._processInputKey(key);\r\n e.originalEvent.preventDefault()\r\n }\r\n }\r\n return result\r\n },\r\n _maskBeforeInputHandler: function(e) {\r\n var _this3 = this;\r\n this._maskInputHandler = null;\r\n var inputType = e.originalEvent.inputType;\r\n if (\"insertCompositionText\" === inputType) {\r\n this._maskInputHandler = function() {\r\n _this3._renderSelectedPart()\r\n }\r\n }\r\n var isBackwardDeletion = \"deleteContentBackward\" === inputType;\r\n var isForwardDeletion = \"deleteContentForward\" === inputType;\r\n if (isBackwardDeletion || isForwardDeletion) {\r\n var direction = isBackwardDeletion ? BACKWARD : FORWARD;\r\n this._maskInputHandler = function() {\r\n _this3._revertPart();\r\n _this3._selectNextPart(direction)\r\n }\r\n }\r\n if (!this._useMaskBehavior() || !this._isSingleCharKey(e)) {\r\n return\r\n }\r\n var key = e.originalEvent.data;\r\n this._processInputKey(key);\r\n e.preventDefault();\r\n return true\r\n },\r\n _keyPressHandler: function(e) {\r\n var event = e.originalEvent;\r\n if (\"insertCompositionText\" === (null === event || void 0 === event ? void 0 : event.inputType) && this._isSingleDigitKey(e)) {\r\n this._processInputKey(event.data);\r\n this._renderDisplayText(this._getDisplayedText(this._maskValue));\r\n this._selectNextPart()\r\n }\r\n this.callBase(e);\r\n if (this._maskInputHandler) {\r\n this._maskInputHandler();\r\n this._maskInputHandler = null\r\n }\r\n },\r\n _processInputKey: function(key) {\r\n if (this._isAllSelected()) {\r\n this._activePartIndex = 0\r\n }\r\n this._setNewDateIfEmpty();\r\n if (isNaN(parseInt(key))) {\r\n this._searchString(key)\r\n } else {\r\n this._searchNumber(key)\r\n }\r\n },\r\n _isAllSelected: function() {\r\n var caret = this._caret();\r\n return caret.end - caret.start === this.option(\"text\").length\r\n },\r\n _getFormatPattern: function() {\r\n if (this._formatPattern) {\r\n return this._formatPattern\r\n }\r\n var format = this._strategy.getDisplayFormat(this.option(\"displayFormat\"));\r\n var isLDMLPattern = (0, _type.isString)(format) && !_date.default._getPatternByFormat(format);\r\n if (isLDMLPattern) {\r\n this._formatPattern = format\r\n } else {\r\n this._formatPattern = (0, _date3.getFormat)(function(value) {\r\n return _date.default.format(value, format)\r\n })\r\n }\r\n return this._formatPattern\r\n },\r\n _setNewDateIfEmpty: function() {\r\n if (!this._maskValue) {\r\n var value = \"time\" === this.option(\"type\") ? new Date(null) : new Date;\r\n this._maskValue = value;\r\n this._initialMaskValue = value;\r\n this._renderDateParts()\r\n }\r\n },\r\n _partLimitsReached: function(max) {\r\n var maxLimitLength = String(max).length;\r\n var formatLength = this._getActivePartProp(\"pattern\").length;\r\n var isShortFormat = 1 === formatLength;\r\n var maxSearchLength = isShortFormat ? maxLimitLength : Math.min(formatLength, maxLimitLength);\r\n var isLengthExceeded = this._searchValue.length === maxSearchLength;\r\n var isValueOverflowed = parseInt(this._searchValue + \"0\") > max;\r\n return isLengthExceeded || isValueOverflowed\r\n },\r\n _searchNumber: function(char) {\r\n var _this$_getActivePartL = this._getActivePartLimits(),\r\n max = _this$_getActivePartL.max;\r\n var maxLimitLength = String(max).length;\r\n this._searchValue = (this._searchValue + char).substr(-maxLimitLength);\r\n if (isNaN(this._searchValue)) {\r\n this._searchValue = char\r\n }\r\n this._setActivePartValue(this._searchValue);\r\n if (this._partLimitsReached(max)) {\r\n this._selectNextPart(FORWARD)\r\n }\r\n },\r\n _searchString: function(char) {\r\n if (!isNaN(parseInt(this._getActivePartProp(\"text\")))) {\r\n return\r\n }\r\n var limits = this._getActivePartProp(\"limits\")(this._maskValue);\r\n var startString = this._searchValue + char.toLowerCase();\r\n var endLimit = limits.max - limits.min;\r\n for (var i = 0; i <= endLimit; i++) {\r\n this._loadMaskValue(this._initialMaskValue);\r\n this._partIncrease(i + 1);\r\n if (0 === this._getActivePartProp(\"text\").toLowerCase().indexOf(startString)) {\r\n this._searchValue = startString;\r\n return\r\n }\r\n }\r\n this._setNewDateIfEmpty();\r\n if (this._searchValue) {\r\n this._clearSearchValue();\r\n this._searchString(char)\r\n }\r\n },\r\n _clearSearchValue: function() {\r\n this._searchValue = \"\"\r\n },\r\n _revertPart: function(direction) {\r\n if (!this._isAllSelected()) {\r\n var actual = this._getActivePartValue(this.option(\"emptyDateValue\"));\r\n this._setActivePartValue(actual);\r\n this._selectNextPart(direction)\r\n }\r\n this._clearSearchValue()\r\n },\r\n _useMaskBehavior: function() {\r\n return this.option(\"useMaskBehavior\") && \"text\" === this.option(\"mode\")\r\n },\r\n _prepareRegExpInfo: function() {\r\n this._regExpInfo = (0, _date2.getRegExpInfo)(this._getFormatPattern(), _date.default);\r\n var regExp = this._regExpInfo.regexp;\r\n var flags = regExp.flags;\r\n var convertedRegExp = _number.default.convertDigits(this._regExpInfo.regexp.source, false);\r\n this._regExpInfo.regexp = RegExp(convertedRegExp, flags)\r\n },\r\n _initMaskState: function() {\r\n this._activePartIndex = 0;\r\n this._formatPattern = null;\r\n this._prepareRegExpInfo();\r\n this._loadMaskValue()\r\n },\r\n _renderMask: function() {\r\n this.callBase();\r\n this._detachMaskEvents();\r\n this._clearMaskState();\r\n if (this._useMaskBehavior()) {\r\n this._attachMaskEvents();\r\n this._initMaskState();\r\n this._renderDateParts()\r\n }\r\n },\r\n _renderDateParts: function() {\r\n if (!this._useMaskBehavior()) {\r\n return\r\n }\r\n var text = this.option(\"text\") || this._getDisplayedText(this._maskValue);\r\n if (text) {\r\n this._dateParts = (0, _uiDate_boxMask.renderDateParts)(text, this._regExpInfo);\r\n if (!this._input().is(\":hidden\")) {\r\n this._selectNextPart()\r\n }\r\n }\r\n },\r\n _detachMaskEvents: function() {\r\n _events_engine.default.off(this._input(), \".\" + MASK_EVENT_NAMESPACE)\r\n },\r\n _attachMaskEvents: function() {\r\n var _this4 = this;\r\n _events_engine.default.on(this._input(), (0, _index.addNamespace)(\"dxclick\", MASK_EVENT_NAMESPACE), this._maskClickHandler.bind(this));\r\n _events_engine.default.on(this._input(), (0, _index.addNamespace)(\"paste\", MASK_EVENT_NAMESPACE), this._maskPasteHandler.bind(this));\r\n _events_engine.default.on(this._input(), (0, _index.addNamespace)(\"drop\", MASK_EVENT_NAMESPACE), function() {\r\n _this4._renderSelectedPart()\r\n });\r\n _events_engine.default.on(this._input(), (0, _index.addNamespace)(\"compositionend\", MASK_EVENT_NAMESPACE), this._maskCompositionEndHandler.bind(this));\r\n if (this._useBeforeInputEvent()) {\r\n _events_engine.default.on(this._input(), (0, _index.addNamespace)(\"beforeinput\", MASK_EVENT_NAMESPACE), this._maskBeforeInputHandler.bind(this))\r\n }\r\n },\r\n _renderSelectedPart: function() {\r\n this._renderDisplayText(this._getDisplayedText(this._maskValue));\r\n this._selectNextPart()\r\n },\r\n _selectLastPart: function() {\r\n if (this.option(\"text\")) {\r\n this._activePartIndex = this._dateParts.length;\r\n this._selectNextPart(BACKWARD)\r\n }\r\n },\r\n _selectFirstPart: function() {\r\n if (this.option(\"text\")) {\r\n this._activePartIndex = -1;\r\n this._selectNextPart(FORWARD)\r\n }\r\n },\r\n _onMouseWheel: function(e) {\r\n if (this._useMaskBehavior()) {\r\n this._partIncrease(e.delta > 0 ? FORWARD : BACKWARD, e)\r\n }\r\n },\r\n _selectNextPart: function() {\r\n var step = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;\r\n if (!this.option(\"text\") || this._disposed) {\r\n return\r\n }\r\n if (step) {\r\n this._initialMaskValue = new Date(this._maskValue)\r\n }\r\n var index = (0, _math.fitIntoRange)(this._activePartIndex + step, 0, this._dateParts.length - 1);\r\n if (this._dateParts[index].isStub) {\r\n var isBoundaryIndex = 0 === index && step < 0 || index === this._dateParts.length - 1 && step > 0;\r\n if (!isBoundaryIndex) {\r\n this._selectNextPart(step >= 0 ? step + 1 : step - 1);\r\n return\r\n } else {\r\n index = this._activePartIndex\r\n }\r\n }\r\n if (this._activePartIndex !== index) {\r\n this._clearSearchValue()\r\n }\r\n this._activePartIndex = index;\r\n this._caret(this._getActivePartProp(\"caret\"))\r\n },\r\n _getRealLimitsPattern: function() {\r\n if (\"d\" === this._getActivePartProp(\"pattern\")[0]) {\r\n return \"dM\"\r\n }\r\n },\r\n _getActivePartLimits: function(lockOtherParts) {\r\n var limitFunction = this._getActivePartProp(\"limits\");\r\n return limitFunction(this._maskValue, lockOtherParts && this._getRealLimitsPattern())\r\n },\r\n _getActivePartValue: function(dateValue) {\r\n dateValue = dateValue || this._maskValue;\r\n var getter = this._getActivePartProp(\"getter\");\r\n return (0, _type.isFunction)(getter) ? getter(dateValue) : dateValue[getter]()\r\n },\r\n _addLeadingZeroes: function(value) {\r\n var zeroes = this._searchValue.match(/^0+/);\r\n var limits = this._getActivePartLimits();\r\n var maxLimitLength = String(limits.max).length;\r\n return ((zeroes && zeroes[0] || \"\") + String(value)).substr(-maxLimitLength)\r\n },\r\n _setActivePartValue: function(value, dateValue) {\r\n dateValue = dateValue || this._maskValue;\r\n var setter = this._getActivePartProp(\"setter\");\r\n var limits = this._getActivePartLimits();\r\n value = (0, _math.inRange)(value, limits.min, limits.max) ? value : value % 10;\r\n value = this._addLeadingZeroes((0, _math.fitIntoRange)(value, limits.min, limits.max));\r\n (0, _type.isFunction)(setter) ? setter(dateValue, value): dateValue[setter](value);\r\n this._renderDisplayText(this._getDisplayedText(dateValue));\r\n this._renderDateParts()\r\n },\r\n _getActivePartProp: function(property) {\r\n if (!this._dateParts || !this._dateParts[this._activePartIndex]) {\r\n return\r\n }\r\n return this._dateParts[this._activePartIndex][property]\r\n },\r\n _loadMaskValue: function() {\r\n var value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.dateOption(\"value\");\r\n this._maskValue = value && new Date(value);\r\n this._initialMaskValue = value && new Date(value)\r\n },\r\n _saveMaskValue: function() {\r\n var value = this._maskValue && new Date(this._maskValue);\r\n if (value && \"date\" === this.option(\"type\")) {\r\n value.setHours(0, 0, 0, 0)\r\n }\r\n this._initialMaskValue = new Date(value);\r\n this.dateOption(\"value\", value)\r\n },\r\n _revertChanges: function() {\r\n this._loadMaskValue();\r\n this._renderDisplayText(this._getDisplayedText(this._maskValue));\r\n this._renderDateParts()\r\n },\r\n _renderDisplayText: function(text) {\r\n this.callBase(text);\r\n if (this._useMaskBehavior()) {\r\n this.option(\"text\", text)\r\n }\r\n },\r\n _partIncrease: function(step, lockOtherParts) {\r\n this._setNewDateIfEmpty();\r\n var _this$_getActivePartL2 = this._getActivePartLimits(lockOtherParts),\r\n max = _this$_getActivePartL2.max,\r\n min = _this$_getActivePartL2.min;\r\n var limitDelta = max - min;\r\n if (1 === limitDelta) {\r\n limitDelta++\r\n }\r\n var newValue = step + this._getActivePartValue();\r\n if (newValue > max) {\r\n newValue = this._applyLimits(newValue, {\r\n limitBase: min,\r\n limitClosest: max,\r\n limitDelta: limitDelta\r\n })\r\n } else {\r\n if (newValue < min) {\r\n newValue = this._applyLimits(newValue, {\r\n limitBase: max,\r\n limitClosest: min,\r\n limitDelta: limitDelta\r\n })\r\n }\r\n }\r\n this._setActivePartValue(newValue)\r\n },\r\n _applyLimits: function(newValue, _ref2) {\r\n var limitBase = _ref2.limitBase,\r\n limitClosest = _ref2.limitClosest,\r\n limitDelta = _ref2.limitDelta;\r\n var delta = (newValue - limitClosest) % limitDelta;\r\n return delta ? limitBase + delta - 1 * (0, _math.sign)(delta) : limitClosest\r\n },\r\n _maskClickHandler: function() {\r\n if (this.option(\"text\")) {\r\n this._activePartIndex = (0, _uiDate_boxMask.getDatePartIndexByPosition)(this._dateParts, this._caret().start);\r\n if ((0, _type.isDefined)(this._activePartIndex)) {\r\n this._caret(this._getActivePartProp(\"caret\"))\r\n } else {\r\n this._selectLastPart()\r\n }\r\n }\r\n },\r\n _maskCompositionEndHandler: function(e) {\r\n var _this5 = this;\r\n if (_browser.default.msie && this._isSingleDigitKey(e)) {\r\n var key = e.originalEvent.data;\r\n this._processInputKey(key)\r\n } else {\r\n this._input().val(this._getDisplayedText(this._maskValue));\r\n this._selectNextPart();\r\n this._maskInputHandler = function() {\r\n _this5._renderSelectedPart()\r\n }\r\n }\r\n },\r\n _maskPasteHandler: function(e) {\r\n var newText = this._replaceSelectedText(this.option(\"text\"), this._caret(), (0, _dom.clipboardText)(e));\r\n var date = _date.default.parse(newText, this._getFormatPattern());\r\n if (date && this._isDateValid(date)) {\r\n this._maskValue = date;\r\n this._renderDisplayText(this._getDisplayedText(this._maskValue));\r\n this._renderDateParts();\r\n this._selectNextPart()\r\n }\r\n e.preventDefault()\r\n },\r\n _isDateValid: function(date) {\r\n return (0, _type.isDate)(date) && !isNaN(date)\r\n },\r\n _isValueDirty: function() {\r\n var value = this.dateOption(\"value\");\r\n return (this._maskValue && this._maskValue.getTime()) !== (value && value.getTime())\r\n },\r\n _fireChangeEvent: function() {\r\n this._clearSearchValue();\r\n if (this._isValueDirty()) {\r\n _events_engine.default.trigger(this._input(), \"change\")\r\n }\r\n },\r\n _enterHandler: function(e) {\r\n this._fireChangeEvent();\r\n this._selectNextPart(FORWARD);\r\n e.preventDefault()\r\n },\r\n _focusOutHandler: function(e) {\r\n this.callBase(e);\r\n if (this._useMaskBehavior() && !e.isDefaultPrevented()) {\r\n this._fireChangeEvent();\r\n this._selectFirstPart(e)\r\n }\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n var text = this.option(\"text\");\r\n if (this._useMaskBehavior()) {\r\n this._saveValueChangeEvent(e);\r\n if (!text) {\r\n this._maskValue = null\r\n } else {\r\n if (null === this._maskValue) {\r\n this._loadMaskValue(text)\r\n }\r\n }\r\n this._saveMaskValue()\r\n } else {\r\n this.callBase(e)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"useMaskBehavior\":\r\n this._renderMask();\r\n break;\r\n case \"displayFormat\":\r\n case \"mode\":\r\n this.callBase(args);\r\n this._renderMask();\r\n break;\r\n case \"value\":\r\n this._loadMaskValue();\r\n this.callBase(args);\r\n this._renderDateParts();\r\n break;\r\n case \"emptyDateValue\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clearMaskState: function() {\r\n this._clearSearchValue();\r\n delete this._dateParts;\r\n delete this._activePartIndex;\r\n delete this._maskValue\r\n },\r\n reset: function() {\r\n this.callBase();\r\n this._clearMaskState();\r\n this._activePartIndex = 0\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n this._detachMaskEvents();\r\n this._clearMaskState()\r\n }\r\n});\r\nvar _default = DateBoxMask;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.mask.parts.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.getDatePartIndexByPosition = exports.renderDateParts = void 0;\r\nvar _date = require(\"../../localization/ldml/date.parser\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _this = void 0;\r\nvar monthGetter = function(date) {\r\n return date.getMonth() + 1\r\n};\r\nvar monthSetter = function(date, value) {\r\n var day = date.getDate();\r\n var monthLimits = getLimits(\"M\", date);\r\n var newValue = (0, _math.fitIntoRange)(parseInt(value), monthLimits.min, monthLimits.max);\r\n date.setMonth(newValue - 1, 1);\r\n var _getLimits = getLimits(\"dM\", date),\r\n min = _getLimits.min,\r\n max = _getLimits.max;\r\n var newDay = (0, _math.fitIntoRange)(day, min, max);\r\n date.setDate(newDay)\r\n};\r\nvar PATTERN_GETTERS = {\r\n a: function(date) {\r\n return date.getHours() < 12 ? 0 : 1\r\n },\r\n E: \"getDay\",\r\n y: \"getFullYear\",\r\n M: monthGetter,\r\n L: monthGetter,\r\n d: \"getDate\",\r\n H: \"getHours\",\r\n h: \"getHours\",\r\n m: \"getMinutes\",\r\n s: \"getSeconds\",\r\n S: \"getMilliseconds\"\r\n};\r\nvar PATTERN_SETTERS = (0, _extend.extend)({}, (0, _date.getPatternSetters)(), {\r\n a: function(date, value) {\r\n var hours = date.getHours();\r\n var current = hours >= 12;\r\n if (current === !!parseInt(value)) {\r\n return\r\n }\r\n date.setHours((hours + 12) % 24)\r\n },\r\n d: function(date, value) {\r\n var lastDayInMonth = getLimits(\"dM\", date).max;\r\n if (value > lastDayInMonth) {\r\n date.setMonth(date.getMonth() + 1)\r\n }\r\n date.setDate(value)\r\n },\r\n h: function(date, value) {\r\n var isPM = date.getHours() >= 12;\r\n date.setHours(+value % 12 + (isPM ? 12 : 0))\r\n },\r\n M: monthSetter,\r\n L: monthSetter,\r\n E: function(date, value) {\r\n if (value < 0) {\r\n return\r\n }\r\n date.setDate(date.getDate() - date.getDay() + parseInt(value))\r\n },\r\n y: function(date, value) {\r\n var currentYear = date.getFullYear();\r\n var valueLength = String(value).length;\r\n var maxLimitLength = String(getLimits(\"y\", date).max).length;\r\n var newValue = parseInt(String(currentYear).substr(0, maxLimitLength - valueLength) + value);\r\n date.setFullYear(newValue)\r\n }\r\n});\r\nvar getPatternGetter = function(patternChar) {\r\n var unsupportedCharGetter = function() {\r\n return patternChar\r\n };\r\n return PATTERN_GETTERS[patternChar] || unsupportedCharGetter\r\n};\r\nvar renderDateParts = function(text, regExpInfo) {\r\n var result = regExpInfo.regexp.exec(text);\r\n var start = 0;\r\n var end = 0;\r\n var sections = [];\r\n for (var i = 1; i < result.length; i++) {\r\n start = end;\r\n end = start + result[i].length;\r\n var pattern = regExpInfo.patterns[i - 1].replace(/^'|'$/g, \"\");\r\n var getter = getPatternGetter(pattern[0]);\r\n sections.push({\r\n index: i - 1,\r\n isStub: pattern === result[i],\r\n caret: {\r\n start: start,\r\n end: end\r\n },\r\n pattern: pattern,\r\n text: result[i],\r\n limits: getLimits.bind(_this, pattern[0]),\r\n setter: PATTERN_SETTERS[pattern[0]] || _common.noop,\r\n getter: getter\r\n })\r\n }\r\n return sections\r\n};\r\nexports.renderDateParts = renderDateParts;\r\nvar getLimits = function(pattern, date, forcedPattern) {\r\n var limits = {\r\n y: {\r\n min: 0,\r\n max: 9999\r\n },\r\n M: {\r\n min: 1,\r\n max: 12\r\n },\r\n L: {\r\n min: 1,\r\n max: 12\r\n },\r\n d: {\r\n min: 1,\r\n max: 31\r\n },\r\n dM: {\r\n min: 1,\r\n max: new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate()\r\n },\r\n E: {\r\n min: 0,\r\n max: 6\r\n },\r\n H: {\r\n min: 0,\r\n max: 23\r\n },\r\n h: {\r\n min: 0,\r\n max: 23\r\n },\r\n m: {\r\n min: 0,\r\n max: 59\r\n },\r\n s: {\r\n min: 0,\r\n max: 59\r\n },\r\n S: {\r\n min: 0,\r\n max: 999\r\n },\r\n a: {\r\n min: 0,\r\n max: 1\r\n }\r\n };\r\n return limits[forcedPattern || pattern] || limits.getAmPm\r\n};\r\nvar getDatePartIndexByPosition = function(dateParts, position) {\r\n for (var i = 0; i < dateParts.length; i++) {\r\n var caretInGroup = dateParts[i].caret.end >= position;\r\n if (!dateParts[i].isStub && caretInGroup) {\r\n return i\r\n }\r\n }\r\n return null\r\n};\r\nexports.getDatePartIndexByPosition = getDatePartIndexByPosition;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.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 _window = require(\"../../core/utils/window\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _dom = require(\"../../core/utils/dom\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _version = require(\"../../core/utils/version\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _support = require(\"../../core/utils/support\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _config = _interopRequireDefault(require(\"../../core/config\"));\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _ui = _interopRequireDefault(require(\"./ui.date_utils\"));\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _ui2 = _interopRequireDefault(require(\"../drop_down_editor/ui.drop_down_editor\"));\r\nvar _date2 = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiDate_boxStrategy = _interopRequireDefault(require(\"./ui.date_box.strategy.calendar\"));\r\nvar _uiDate_boxStrategy2 = _interopRequireDefault(require(\"./ui.date_box.strategy.date_view\"));\r\nvar _uiDate_boxStrategy3 = _interopRequireDefault(require(\"./ui.date_box.strategy.native\"));\r\nvar _uiDate_boxStrategy4 = _interopRequireDefault(require(\"./ui.date_box.strategy.calendar_with_time\"));\r\nvar _uiDate_boxStrategy5 = _interopRequireDefault(require(\"./ui.date_box.strategy.list\"));\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 DATEBOX_CLASS = \"dx-datebox\";\r\nvar DX_AUTO_WIDTH_CLASS = \"dx-auto-width\";\r\nvar DX_INVALID_BADGE_CLASS = \"dx-show-invalid-badge\";\r\nvar DX_CLEAR_BUTTON_CLASS = \"dx-clear-button-area\";\r\nvar DATEBOX_WRAPPER_CLASS = \"dx-datebox-wrapper\";\r\nvar PICKER_TYPE = {\r\n calendar: \"calendar\",\r\n rollers: \"rollers\",\r\n list: \"list\",\r\n \"native\": \"native\"\r\n};\r\nvar TYPE = {\r\n date: \"date\",\r\n datetime: \"datetime\",\r\n time: \"time\"\r\n};\r\nvar STRATEGY_NAME = {\r\n calendar: \"Calendar\",\r\n dateView: \"DateView\",\r\n \"native\": \"Native\",\r\n calendarWithTime: \"CalendarWithTime\",\r\n list: \"List\"\r\n};\r\nvar STRATEGY_CLASSES = {\r\n Calendar: _uiDate_boxStrategy.default,\r\n DateView: _uiDate_boxStrategy2.default,\r\n Native: _uiDate_boxStrategy3.default,\r\n CalendarWithTime: _uiDate_boxStrategy4.default,\r\n List: _uiDate_boxStrategy5.default\r\n};\r\nvar DateBox = _ui2.default.inherit({\r\n _supportedKeys: function() {\r\n return (0, _extend.extend)(this.callBase(), this._strategy.supportedKeys())\r\n },\r\n _renderButtonContainers: function() {\r\n this.callBase.apply(this, arguments);\r\n this._strategy.customizeButtons()\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n type: \"date\",\r\n showAnalogClock: true,\r\n value: null,\r\n dateSerializationFormat: void 0,\r\n min: void 0,\r\n max: void 0,\r\n displayFormat: null,\r\n interval: 30,\r\n disabledDates: null,\r\n pickerType: PICKER_TYPE.calendar,\r\n invalidDateMessage: _message.default.format(\"dxDateBox-validation-datetime\"),\r\n dateOutOfRangeMessage: _message.default.format(\"validation-range\"),\r\n applyButtonText: _message.default.format(\"OK\"),\r\n adaptivityEnabled: false,\r\n calendarOptions: {},\r\n useHiddenSubmitElement: true\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 \"dropDownOptions.showTitle\": true\r\n }\r\n }, {\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n buttonsLocation: \"bottom after\"\r\n }\r\n }, {\r\n device: function() {\r\n var realDevice = _devices.default.real();\r\n var platform = realDevice.platform;\r\n return \"ios\" === platform || \"android\" === platform\r\n },\r\n options: {\r\n pickerType: PICKER_TYPE.native\r\n }\r\n }, {\r\n device: function(currentDevice) {\r\n var realDevice = _devices.default.real();\r\n var platform = realDevice.platform;\r\n var version = realDevice.version;\r\n return \"generic\" === platform && \"desktop\" !== currentDevice.deviceType || \"android\" === platform && (0, _version.compare)(version, [4, 4]) < 0\r\n },\r\n options: {\r\n pickerType: PICKER_TYPE.rollers\r\n }\r\n }, {\r\n device: {\r\n platform: \"generic\",\r\n deviceType: \"desktop\"\r\n },\r\n options: {\r\n buttonsLocation: \"bottom after\"\r\n }\r\n }])\r\n },\r\n _initOptions: function(options) {\r\n this._userOptions = (0, _extend.extend)({}, options);\r\n this.callBase(options);\r\n this._updatePickerOptions()\r\n },\r\n _updatePickerOptions: function() {\r\n var pickerType = this.option(\"pickerType\");\r\n var type = this.option(\"type\");\r\n if (pickerType === PICKER_TYPE.list && (type === TYPE.datetime || type === TYPE.date)) {\r\n pickerType = PICKER_TYPE.calendar\r\n }\r\n if (type === TYPE.time && pickerType === PICKER_TYPE.calendar) {\r\n pickerType = PICKER_TYPE.list\r\n }\r\n this.option(\"showDropDownButton\", \"generic\" !== _devices.default.real().platform || pickerType !== PICKER_TYPE.native);\r\n this._pickerType = pickerType\r\n },\r\n _init: function() {\r\n this._initStrategy();\r\n this.option((0, _extend.extend)({}, this._strategy.getDefaultOptions(), this._userOptions));\r\n delete this._userOptions;\r\n this.callBase()\r\n },\r\n _toLowerCaseFirstLetter: function(string) {\r\n return string.charAt(0).toLowerCase() + string.substr(1)\r\n },\r\n _initStrategy: function() {\r\n var strategyName = this._getStrategyName(this._getFormatType());\r\n var strategy = STRATEGY_CLASSES[strategyName];\r\n if (!(this._strategy && this._strategy.NAME === strategyName)) {\r\n this._strategy = new strategy(this)\r\n }\r\n },\r\n _getFormatType: function() {\r\n var currentType = this.option(\"type\");\r\n var isTime = /h|m|s/g.test(currentType);\r\n var isDate = /d|M|Y/g.test(currentType);\r\n var type = \"\";\r\n if (isDate) {\r\n type += TYPE.date\r\n }\r\n if (isTime) {\r\n type += TYPE.time\r\n }\r\n return type\r\n },\r\n _getStrategyName: function(type) {\r\n var pickerType = this._pickerType;\r\n if (pickerType === PICKER_TYPE.rollers) {\r\n return STRATEGY_NAME.dateView\r\n } else {\r\n if (pickerType === PICKER_TYPE.native) {\r\n return STRATEGY_NAME.native\r\n }\r\n }\r\n if (type === TYPE.date) {\r\n return STRATEGY_NAME.calendar\r\n }\r\n if (type === TYPE.datetime) {\r\n return STRATEGY_NAME.calendarWithTime\r\n }\r\n return STRATEGY_NAME.list\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(DATEBOX_CLASS);\r\n this.callBase();\r\n this._refreshFormatClass();\r\n this._refreshPickerTypeClass();\r\n this._strategy.renderInputMinMax(this._input())\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._formatValidationIcon()\r\n },\r\n _renderDimensions: function() {\r\n this.callBase();\r\n this.$element().toggleClass(DX_AUTO_WIDTH_CLASS, !this.option(\"width\"));\r\n this._dimensionChanged()\r\n },\r\n _dimensionChanged: function() {\r\n this.callBase(arguments);\r\n if (this._popup) {\r\n var _this$_strategy$_upda, _this$_strategy;\r\n null === (_this$_strategy$_upda = (_this$_strategy = this._strategy)._updatePopupHeight) || void 0 === _this$_strategy$_upda ? void 0 : _this$_strategy$_upda.call(_this$_strategy)\r\n }\r\n },\r\n _refreshFormatClass: function() {\r\n var $element = this.$element();\r\n (0, _iterator.each)(TYPE, function(_, item) {\r\n $element.removeClass(DATEBOX_CLASS + \"-\" + item)\r\n });\r\n $element.addClass(DATEBOX_CLASS + \"-\" + this.option(\"type\"))\r\n },\r\n _refreshPickerTypeClass: function() {\r\n var $element = this.$element();\r\n (0, _iterator.each)(PICKER_TYPE, function(_, item) {\r\n $element.removeClass(DATEBOX_CLASS + \"-\" + item)\r\n });\r\n $element.addClass(DATEBOX_CLASS + \"-\" + this._pickerType)\r\n },\r\n _formatValidationIcon: function() {\r\n if (!(0, _window.hasWindow)()) {\r\n return\r\n }\r\n var inputElement = this._input().get(0);\r\n var isRtlEnabled = this.option(\"rtlEnabled\");\r\n var clearButtonWidth = this._getClearButtonWidth();\r\n var longestElementDimensions = this._getLongestElementDimensions();\r\n var curWidth = parseFloat(window.getComputedStyle(inputElement).width) - clearButtonWidth;\r\n var shouldHideValidationIcon = longestElementDimensions.width > curWidth;\r\n var style = inputElement.style;\r\n this.$element().toggleClass(DX_INVALID_BADGE_CLASS, !shouldHideValidationIcon);\r\n if (shouldHideValidationIcon) {\r\n if (void 0 === this._storedPadding) {\r\n this._storedPadding = isRtlEnabled ? longestElementDimensions.leftPadding : longestElementDimensions.rightPadding\r\n }\r\n isRtlEnabled ? style.paddingLeft = 0 : style.paddingRight = 0\r\n } else {\r\n isRtlEnabled ? style.paddingLeft = this._storedPadding + \"px\" : style.paddingRight = this._storedPadding + \"px\"\r\n }\r\n },\r\n _getClearButtonWidth: function() {\r\n var clearButtonWidth = 0;\r\n if (this._isClearButtonVisible() && \"\" === this._input().val()) {\r\n var clearButtonElement = this.$element().find(\".\" + DX_CLEAR_BUTTON_CLASS).get(0);\r\n clearButtonWidth = parseFloat(window.getComputedStyle(clearButtonElement).width)\r\n }\r\n return clearButtonWidth\r\n },\r\n _getLongestElementDimensions: function() {\r\n var format = this._strategy.getDisplayFormat(this.option(\"displayFormat\"));\r\n var longestValue = _date2.default.format(_ui.default.getLongestDate(format, _date2.default.getMonthNames(), _date2.default.getDayNames()), format);\r\n var $input = this._input();\r\n var inputElement = $input.get(0);\r\n var $longestValueElement = (0, _dom.createTextElementHiddenCopy)($input, longestValue);\r\n var isPaddingStored = void 0 !== this._storedPadding;\r\n var storedPadding = !isPaddingStored ? 0 : this._storedPadding;\r\n $longestValueElement.appendTo(this.$element());\r\n var elementWidth = parseFloat(window.getComputedStyle($longestValueElement.get(0)).width);\r\n var rightPadding = parseFloat(window.getComputedStyle(inputElement).paddingRight);\r\n var leftPadding = parseFloat(window.getComputedStyle(inputElement).paddingLeft);\r\n var necessaryWidth = elementWidth + leftPadding + rightPadding + storedPadding;\r\n $longestValueElement.remove();\r\n return {\r\n width: necessaryWidth,\r\n leftPadding: leftPadding,\r\n rightPadding: rightPadding\r\n }\r\n },\r\n _getKeyboardListeners: function() {\r\n return this.callBase().concat([this._strategy && this._strategy.getKeyboardListener()])\r\n },\r\n _renderPopup: function() {\r\n this.callBase();\r\n this._popup._wrapper().addClass(DATEBOX_WRAPPER_CLASS);\r\n this._renderPopupWrapper()\r\n },\r\n _popupConfig: function() {\r\n var popupConfig = this.callBase();\r\n return (0, _extend.extend)(this._strategy.popupConfig(popupConfig), {\r\n title: this._getPopupTitle(),\r\n dragEnabled: false\r\n })\r\n },\r\n _renderPopupWrapper: function() {\r\n if (!this._popup) {\r\n return\r\n }\r\n var $element = this.$element();\r\n var classPostfixes = (0, _extend.extend)({}, TYPE, PICKER_TYPE);\r\n (0, _iterator.each)(classPostfixes, function(_, item) {\r\n $element.removeClass(DATEBOX_WRAPPER_CLASS + \"-\" + item)\r\n }.bind(this));\r\n this._popup._wrapper().addClass(DATEBOX_WRAPPER_CLASS + \"-\" + this.option(\"type\")).addClass(DATEBOX_WRAPPER_CLASS + \"-\" + this._pickerType)\r\n },\r\n _renderPopupContent: function() {\r\n this.callBase();\r\n this._strategy.renderPopupContent()\r\n },\r\n _getFirstPopupElement: function() {\r\n return this._strategy.getFirstPopupElement() || this.callBase()\r\n },\r\n _getLastPopupElement: function() {\r\n return this._strategy.getLastPopupElement() || this.callBase()\r\n },\r\n _popupShowingHandler: function() {\r\n this.callBase();\r\n this._strategy.popupShowingHandler()\r\n },\r\n _popupShownHandler: function() {\r\n this.callBase();\r\n this._strategy.renderOpenedState()\r\n },\r\n _popupHiddenHandler: function() {\r\n this.callBase();\r\n this._strategy.renderOpenedState();\r\n this._strategy.popupHiddenHandler()\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._formatValidationIcon()\r\n }\r\n },\r\n _clearValueHandler: function(e) {\r\n this.option(\"text\", \"\");\r\n this.callBase(e)\r\n },\r\n _readOnlyPropValue: function() {\r\n if (this._pickerType === PICKER_TYPE.rollers) {\r\n return true\r\n }\r\n var platform = _devices.default.real().platform;\r\n var isCustomValueDisabled = this._isNativeType() && (\"ios\" === platform || \"android\" === platform);\r\n if (isCustomValueDisabled) {\r\n return this.option(\"readOnly\")\r\n }\r\n return this.callBase()\r\n },\r\n _isClearButtonVisible: function() {\r\n return this.callBase() && !this._isNativeType()\r\n },\r\n _renderValue: function() {\r\n var value = this.dateOption(\"value\");\r\n this.option(\"text\", this._getDisplayedText(value));\r\n this._strategy.renderValue();\r\n return this.callBase()\r\n },\r\n _setSubmitValue: function() {\r\n var value = this.dateOption(\"value\");\r\n var dateSerializationFormat = this.option(\"dateSerializationFormat\");\r\n var submitFormat = _ui.default.SUBMIT_FORMATS_MAP[this.option(\"type\")];\r\n var submitValue = dateSerializationFormat ? _date_serialization.default.serializeDate(value, dateSerializationFormat) : _ui.default.toStandardDateFormat(value, submitFormat);\r\n this._getSubmitElement().val(submitValue)\r\n },\r\n _getDisplayedText: function(value) {\r\n var mode = this.option(\"mode\");\r\n var displayedText;\r\n if (\"text\" === mode) {\r\n var displayFormat = this._strategy.getDisplayFormat(this.option(\"displayFormat\"));\r\n displayedText = _date2.default.format(value, displayFormat)\r\n } else {\r\n var format = this._getFormatByMode(mode);\r\n if (format) {\r\n displayedText = _date2.default.format(value, format)\r\n } else {\r\n displayedText = _ui.default.toStandardDateFormat(value, mode)\r\n }\r\n }\r\n return displayedText\r\n },\r\n _getFormatByMode: function(mode) {\r\n return (0, _support.inputType)(mode) ? null : _ui.default.FORMATS_MAP[mode]\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n var text = this.option(\"text\");\r\n var currentValue = this.dateOption(\"value\");\r\n if (text === this._getDisplayedText(currentValue)) {\r\n this._applyInternalValidation(currentValue);\r\n return\r\n }\r\n var parsedDate = this._getParsedDate(text);\r\n var value = null !== currentValue && void 0 !== currentValue ? currentValue : this._getDateByDefault();\r\n var type = this.option(\"type\");\r\n var newValue = _ui.default.mergeDates(value, parsedDate, type);\r\n var date = parsedDate && \"time\" === type ? newValue : parsedDate;\r\n if (this._applyInternalValidation(date).isValid) {\r\n var displayedText = this._getDisplayedText(newValue);\r\n if (value && newValue && value.getTime() === newValue.getTime() && displayedText !== text) {\r\n this._renderValue()\r\n } else {\r\n this.dateValue(newValue, e)\r\n }\r\n }\r\n },\r\n _getDateByDefault: function() {\r\n return this._strategy.useCurrentDateByDefault() && this._strategy.getDefaultDate()\r\n },\r\n _getParsedDate: function(text) {\r\n var displayFormat = this._strategy.getDisplayFormat(this.option(\"displayFormat\"));\r\n var parsedText = this._strategy.getParsedText(text, displayFormat);\r\n return null !== parsedText && void 0 !== parsedText ? parsedText : void 0\r\n },\r\n _applyInternalValidation: function(value) {\r\n var text = this.option(\"text\");\r\n var hasText = !!text && null !== value;\r\n var isDate = !!value && (0, _type.isDate)(value) && !isNaN(value.getTime());\r\n var isDateInRange = isDate && _date.default.dateInRange(value, this.dateOption(\"min\"), this.dateOption(\"max\"), this.option(\"type\"));\r\n var isValid = !hasText && !value || isDateInRange;\r\n var validationMessage = \"\";\r\n if (!isDate) {\r\n validationMessage = this.option(\"invalidDateMessage\")\r\n } else {\r\n if (!isDateInRange) {\r\n validationMessage = this.option(\"dateOutOfRangeMessage\")\r\n }\r\n }\r\n this.option({\r\n isValid: isValid,\r\n validationError: isValid ? null : {\r\n editorSpecific: true,\r\n message: validationMessage\r\n }\r\n });\r\n return {\r\n isValid: isValid,\r\n isDate: isDate\r\n }\r\n },\r\n _applyCustomValidation: function(value) {\r\n this.validationRequest.fire({\r\n editor: this,\r\n value: this._serializeDate(value)\r\n })\r\n },\r\n _isValueChanged: function(newValue) {\r\n var oldValue = this.dateOption(\"value\");\r\n var oldTime = oldValue && oldValue.getTime();\r\n var newTime = newValue && newValue.getTime();\r\n return oldTime !== newTime\r\n },\r\n _isTextChanged: function(newValue) {\r\n var oldText = this.option(\"text\");\r\n var newText = newValue && this._getDisplayedText(newValue) || \"\";\r\n return oldText !== newText\r\n },\r\n _renderProps: function() {\r\n this.callBase();\r\n this._input().attr(\"autocomplete\", \"off\")\r\n },\r\n _renderOpenedState: function() {\r\n if (!this._isNativeType()) {\r\n this.callBase()\r\n }\r\n if (this._strategy.isAdaptivityChanged()) {\r\n this._refreshStrategy()\r\n }\r\n },\r\n _getPopupTitle: function() {\r\n var placeholder = this.option(\"placeholder\");\r\n if (placeholder) {\r\n return placeholder\r\n }\r\n var type = this.option(\"type\");\r\n if (type === TYPE.time) {\r\n return _message.default.format(\"dxDateBox-simulatedDataPickerTitleTime\")\r\n }\r\n if (type === TYPE.date || type === TYPE.datetime) {\r\n return _message.default.format(\"dxDateBox-simulatedDataPickerTitleDate\")\r\n }\r\n return \"\"\r\n },\r\n _renderPlaceholder: function() {\r\n this._popup && this._popup.option(\"title\", this._getPopupTitle());\r\n this.callBase()\r\n },\r\n _refreshStrategy: function() {\r\n this._strategy.dispose();\r\n this._initStrategy();\r\n this.option(this._strategy.getDefaultOptions());\r\n this._refresh()\r\n },\r\n _applyButtonHandler: function(e) {\r\n var value = this._strategy.getValue();\r\n var _this$_applyInternalV = this._applyInternalValidation(value),\r\n isValid = _this$_applyInternalV.isValid,\r\n isDate = _this$_applyInternalV.isDate;\r\n if (isValid) {\r\n this.dateValue(value, e.event)\r\n } else {\r\n if (isDate) {\r\n var displayedText = this._getDisplayedText(value);\r\n this.option(\"text\", displayedText);\r\n this._renderDisplayText(displayedText)\r\n }\r\n }\r\n this.callBase()\r\n },\r\n _dispose: function() {\r\n var _this$_strategy2;\r\n this.callBase();\r\n null === (_this$_strategy2 = this._strategy) || void 0 === _this$_strategy2 ? void 0 : _this$_strategy2.dispose()\r\n },\r\n _isNativeType: function() {\r\n return this._pickerType === PICKER_TYPE.native\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"showClearButton\":\r\n case \"buttons\":\r\n this.callBase.apply(this, arguments);\r\n this._formatValidationIcon();\r\n break;\r\n case \"pickerType\":\r\n this._updatePickerOptions({\r\n pickerType: args.value\r\n });\r\n this._refreshStrategy();\r\n this._refreshPickerTypeClass();\r\n this._invalidate();\r\n break;\r\n case \"type\":\r\n this._updatePickerOptions({\r\n format: args.value\r\n });\r\n this._refreshStrategy();\r\n this._refreshFormatClass();\r\n this._renderPopupWrapper();\r\n this._formatValidationIcon();\r\n this._updateValue();\r\n break;\r\n case \"placeholder\":\r\n this._renderPlaceholder();\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n var isValid = this.option(\"isValid\");\r\n this._applyInternalValidation(this.dateOption(\"value\"));\r\n if (!isValid) {\r\n this._applyCustomValidation(this.dateOption(\"value\"))\r\n }\r\n this._invalidate();\r\n break;\r\n case \"dateSerializationFormat\":\r\n case \"interval\":\r\n case \"disabledDates\":\r\n case \"calendarOptions\":\r\n this._invalidate();\r\n break;\r\n case \"displayFormat\":\r\n this.option(\"text\", this._getDisplayedText(this.dateOption(\"value\")));\r\n this._renderInputValue();\r\n break;\r\n case \"text\":\r\n this._strategy.textChangedHandler(args.value);\r\n this.callBase.apply(this, arguments);\r\n break;\r\n case \"isValid\":\r\n this.callBase.apply(this, arguments);\r\n this._formatValidationIcon();\r\n break;\r\n case \"showDropDownButton\":\r\n this._formatValidationIcon();\r\n this.callBase.apply(this, arguments);\r\n break;\r\n case \"readOnly\":\r\n this.callBase.apply(this, arguments);\r\n this._formatValidationIcon();\r\n break;\r\n case \"invalidDateMessage\":\r\n case \"dateOutOfRangeMessage\":\r\n case \"adaptivityEnabled\":\r\n case \"showAnalogClock\":\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _getSerializationFormat: function() {\r\n var value = this.option(\"value\");\r\n if (this.option(\"dateSerializationFormat\") && (0, _config.default)().forceIsoDateParsing) {\r\n return this.option(\"dateSerializationFormat\")\r\n }\r\n if ((0, _type.isNumeric)(value)) {\r\n return \"number\"\r\n }\r\n if (!(0, _type.isString)(value)) {\r\n return\r\n }\r\n return _date_serialization.default.getDateSerializationFormat(value)\r\n },\r\n _updateValue: function(value) {\r\n this.callBase();\r\n this._applyInternalValidation(null !== value && void 0 !== value ? value : this.dateOption(\"value\"))\r\n },\r\n dateValue: function(value, dxEvent) {\r\n var isValueChanged = this._isValueChanged(value);\r\n if (isValueChanged && dxEvent) {\r\n this._saveValueChangeEvent(dxEvent)\r\n }\r\n if (!isValueChanged) {\r\n if (this._isTextChanged(value)) {\r\n this._updateValue(value)\r\n } else {\r\n if (\"\" === this.option(\"text\")) {\r\n this._applyCustomValidation(value)\r\n }\r\n }\r\n }\r\n return this.dateOption(\"value\", value)\r\n },\r\n dateOption: function(optionName, value) {\r\n if (1 === arguments.length) {\r\n return _date_serialization.default.deserializeDate(this.option(optionName))\r\n }\r\n this.option(optionName, this._serializeDate(value))\r\n },\r\n _serializeDate: function(date) {\r\n var serializationFormat = this._getSerializationFormat();\r\n return _date_serialization.default.serializeDate(date, serializationFormat)\r\n },\r\n reset: function() {\r\n this.callBase();\r\n this._updateValue(this.dateOption(\"value\"))\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxDateBox\", DateBox);\r\nvar _default = DateBox;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.strategy.date_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 _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _ui = _interopRequireDefault(require(\"./ui.date_view\"));\r\nvar _uiDate_box = _interopRequireDefault(require(\"./ui.date_box.strategy\"));\r\nvar _support = require(\"../../core/utils/support\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui2 = _interopRequireDefault(require(\"./ui.date_utils\"));\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 window = (0, _window.getWindow)();\r\nvar DateViewStrategy = _uiDate_box.default.inherit({\r\n NAME: \"DateView\",\r\n getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n openOnFieldClick: true,\r\n applyButtonText: _message.default.format(\"OK\"),\r\n \"dropDownOptions.showTitle\": true\r\n })\r\n },\r\n getDisplayFormat: function(displayFormat) {\r\n return displayFormat || _ui2.default.FORMATS_MAP[this.dateBox.option(\"type\")]\r\n },\r\n popupConfig: function(config) {\r\n return {\r\n toolbarItems: this.dateBox._popupToolbarItemsConfig(),\r\n onInitialized: config.onInitialized,\r\n defaultOptionsRules: [{\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n width: 333,\r\n height: 331\r\n }\r\n }, {\r\n device: function(_device) {\r\n var platform = _device.platform;\r\n return \"generic\" === platform || \"ios\" === platform\r\n },\r\n options: {\r\n width: \"auto\",\r\n height: \"auto\"\r\n }\r\n }, {\r\n device: function(_device2) {\r\n var platform = _device2.platform;\r\n var phone = _device2.phone;\r\n return \"generic\" === platform && phone\r\n },\r\n options: {\r\n width: 333,\r\n maxWidth: \"100%\",\r\n maxHeight: \"100%\",\r\n height: \"auto\",\r\n position: {\r\n collision: \"flipfit flip\"\r\n }\r\n }\r\n }, {\r\n device: {\r\n platform: \"ios\",\r\n phone: true\r\n },\r\n options: {\r\n width: \"100%\",\r\n position: {\r\n my: \"bottom\",\r\n at: \"bottom\",\r\n of: window\r\n }\r\n }\r\n }]\r\n }\r\n },\r\n _renderWidget: function() {\r\n if ((0, _support.inputType)(this.dateBox.option(\"mode\")) && this.dateBox._isNativeType() || this.dateBox.option(\"readOnly\")) {\r\n if (this._widget) {\r\n this._widget.$element().remove();\r\n this._widget = null\r\n }\r\n return\r\n }\r\n var popup = this._getPopup();\r\n if (this._widget) {\r\n this._widget.option(this._getWidgetOptions())\r\n } else {\r\n var element = (0, _renderer.default)(\"
\").appendTo(popup.$content());\r\n this._widget = this._createWidget(element)\r\n }\r\n this._widget.$element().appendTo(this._getWidgetContainer())\r\n },\r\n _getWidgetName: function() {\r\n return _ui.default\r\n },\r\n renderOpenedState: function() {\r\n this.callBase();\r\n if (this._widget) {\r\n this._widget.option(\"value\", this._widget._getCurrentDate())\r\n }\r\n },\r\n _getWidgetOptions: function() {\r\n return {\r\n value: this.dateBoxValue() || new Date,\r\n type: this.dateBox.option(\"type\"),\r\n minDate: this.dateBox.dateOption(\"min\") || new Date(1900, 0, 1),\r\n maxDate: this.dateBox.dateOption(\"max\") || new Date(Date.now() + 50 * _ui2.default.ONE_YEAR),\r\n onDisposing: function() {\r\n this._widget = null\r\n }.bind(this)\r\n }\r\n }\r\n});\r\nvar _default = DateViewStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_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 _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _ui = _interopRequireDefault(require(\"./ui.date_view_roller\"));\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui2 = _interopRequireDefault(require(\"./ui.date_utils\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _date2 = _interopRequireDefault(require(\"../../localization/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DATEVIEW_CLASS = \"dx-dateview\";\r\nvar DATEVIEW_COMPACT_CLASS = \"dx-dateview-compact\";\r\nvar DATEVIEW_WRAPPER_CLASS = \"dx-dateview-wrapper\";\r\nvar DATEVIEW_ROLLER_CONTAINER_CLASS = \"dx-dateview-rollers\";\r\nvar DATEVIEW_ROLLER_CLASS = \"dx-dateviewroller\";\r\nvar TYPE = {\r\n date: \"date\",\r\n datetime: \"datetime\",\r\n time: \"time\"\r\n};\r\nvar ROLLER_TYPE = {\r\n year: \"year\",\r\n month: \"month\",\r\n day: \"day\",\r\n hours: \"hours\"\r\n};\r\nvar DateView = _editor.default.inherit({\r\n _valueOption: function() {\r\n var value = this.option(\"value\");\r\n var date = new Date(value);\r\n return !value || isNaN(date) ? this._getDefaultDate() : date\r\n },\r\n _getDefaultDate: function() {\r\n var date = new Date;\r\n if (this.option(\"type\") === TYPE.date) {\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\r\n }\r\n return date\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n minDate: _ui2.default.MIN_DATEVIEW_DEFAULT_DATE,\r\n maxDate: _ui2.default.MAX_DATEVIEW_DEFAULT_DATE,\r\n type: TYPE.date,\r\n value: new Date,\r\n applyCompactClass: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function(_device) {\r\n return \"desktop\" !== _device.deviceType\r\n },\r\n options: {\r\n applyCompactClass: true\r\n }\r\n }])\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(DATEVIEW_CLASS);\r\n this._toggleFormatClasses(this.option(\"type\"));\r\n this._toggleCompactClass()\r\n },\r\n _toggleFormatClasses: function(currentFormat, previousFormat) {\r\n this.$element().addClass(DATEVIEW_CLASS + \"-\" + currentFormat);\r\n previousFormat && this.$element().removeClass(DATEVIEW_CLASS + \"-\" + previousFormat)\r\n },\r\n _toggleCompactClass: function() {\r\n this.$element().toggleClass(DATEVIEW_COMPACT_CLASS, this.option(\"applyCompactClass\"))\r\n },\r\n _wrapper: function() {\r\n return this._$wrapper\r\n },\r\n _renderContentImpl: function() {\r\n this._$wrapper = (0, _renderer.default)(\"
\").addClass(DATEVIEW_WRAPPER_CLASS);\r\n this._renderRollers();\r\n this._$wrapper.appendTo(this.$element())\r\n },\r\n _renderRollers: function() {\r\n if (!this._$rollersContainer) {\r\n this._$rollersContainer = (0, _renderer.default)(\"
\").addClass(DATEVIEW_ROLLER_CONTAINER_CLASS)\r\n }\r\n this._$rollersContainer.empty();\r\n this._createRollerConfigs();\r\n this._rollers = {};\r\n var that = this;\r\n (0, _iterator.each)(that._rollerConfigs, function(name) {\r\n var $roller = (0, _renderer.default)(\"
\").appendTo(that._$rollersContainer).addClass(DATEVIEW_ROLLER_CLASS + \"-\" + that._rollerConfigs[name].type);\r\n that._rollers[that._rollerConfigs[name].type] = that._createComponent($roller, _ui.default, {\r\n items: that._rollerConfigs[name].displayItems,\r\n selectedIndex: that._rollerConfigs[name].selectedIndex,\r\n showScrollbar: false,\r\n onStart: function(e) {\r\n var roller = e.component;\r\n roller._toggleActive(true);\r\n that._setActiveRoller(that._rollerConfigs[name], roller.option(\"selectedIndex\"))\r\n },\r\n onEnd: function(e) {\r\n var roller = e.component;\r\n roller._toggleActive(false)\r\n },\r\n onClick: function(e) {\r\n var roller = e.component;\r\n roller._toggleActive(true);\r\n that._setActiveRoller(that._rollerConfigs[name], roller.option(\"selectedIndex\"));\r\n that._setRollerState(that._rollerConfigs[name], roller.option(\"selectedIndex\"));\r\n roller._toggleActive(false)\r\n },\r\n onSelectedIndexChanged: function(e) {\r\n var roller = e.component;\r\n that._setRollerState(that._rollerConfigs[name], roller.option(\"selectedIndex\"))\r\n }\r\n })\r\n });\r\n that._$rollersContainer.appendTo(that._wrapper())\r\n },\r\n _createRollerConfigs: function(type) {\r\n var that = this;\r\n type = type || that.option(\"type\");\r\n that._rollerConfigs = {};\r\n _date2.default.getFormatParts(_ui2.default.FORMATS_MAP[type]).forEach(function(partName) {\r\n that._createRollerConfig(partName)\r\n })\r\n },\r\n _createRollerConfig: function(componentName) {\r\n var componentInfo = _ui2.default.DATE_COMPONENTS_INFO[componentName];\r\n var valueRange = this._calculateRollerConfigValueRange(componentName);\r\n var startValue = valueRange.startValue;\r\n var endValue = valueRange.endValue;\r\n var formatter = componentInfo.formatter;\r\n var curDate = this._getCurrentDate();\r\n var config = {\r\n type: componentName,\r\n setValue: componentInfo.setter,\r\n valueItems: [],\r\n displayItems: [],\r\n getIndex: function(value) {\r\n return value[componentInfo.getter]() - startValue\r\n }\r\n };\r\n for (var i = startValue; i <= endValue; i++) {\r\n config.valueItems.push(i);\r\n config.displayItems.push(formatter(i, curDate))\r\n }\r\n config.selectedIndex = config.getIndex(curDate);\r\n this._rollerConfigs[componentName] = config\r\n },\r\n _setActiveRoller: function(currentRoller) {\r\n var activeRoller = currentRoller && this._rollers[currentRoller.type];\r\n (0, _iterator.each)(this._rollers, function() {\r\n this.toggleActiveState(this === activeRoller)\r\n })\r\n },\r\n _updateRollersPosition: function() {\r\n var that = this;\r\n (0, _iterator.each)(this._rollers, function(type) {\r\n var correctIndex = that._rollerConfigs[type].getIndex(that._getCurrentDate());\r\n this.option(\"selectedIndex\", correctIndex)\r\n })\r\n },\r\n _setRollerState: function(roller, selectedIndex) {\r\n if (selectedIndex !== roller.selectedIndex) {\r\n var rollerValue = roller.valueItems[selectedIndex];\r\n var setValue = roller.setValue;\r\n var currentValue = new Date(this._getCurrentDate());\r\n var currentDate = currentValue.getDate();\r\n var minDate = this.option(\"minDate\");\r\n var maxDate = this.option(\"maxDate\");\r\n if (roller.type === ROLLER_TYPE.month) {\r\n currentDate = Math.min(currentDate, _ui2.default.getMaxMonthDay(currentValue.getFullYear(), rollerValue))\r\n } else {\r\n if (roller.type === ROLLER_TYPE.year) {\r\n currentDate = Math.min(currentDate, _ui2.default.getMaxMonthDay(rollerValue, currentValue.getMonth()))\r\n }\r\n }\r\n currentValue.setDate(currentDate);\r\n currentValue[setValue](rollerValue);\r\n var normalizedDate = _date.default.normalizeDate(currentValue, minDate, maxDate);\r\n currentValue = _ui2.default.mergeDates(normalizedDate, currentValue, \"time\");\r\n currentValue = _date.default.normalizeDate(currentValue, minDate, maxDate);\r\n this.option(\"value\", currentValue);\r\n roller.selectedIndex = selectedIndex\r\n }\r\n if (roller.type === ROLLER_TYPE.year) {\r\n this._refreshRollers()\r\n }\r\n if (roller.type === ROLLER_TYPE.month) {\r\n this._refreshRoller(ROLLER_TYPE.day);\r\n this._refreshRoller(ROLLER_TYPE.hours)\r\n }\r\n },\r\n _refreshRoller: function(rollerType) {\r\n var roller = this._rollers[rollerType];\r\n if (roller) {\r\n this._createRollerConfig(rollerType);\r\n var rollerConfig = this._rollerConfigs[rollerType];\r\n if (rollerType === ROLLER_TYPE.day || rollerConfig.displayItems.toString() !== roller.option(\"items\").toString()) {\r\n roller.option({\r\n items: rollerConfig.displayItems,\r\n selectedIndex: rollerConfig.selectedIndex\r\n })\r\n }\r\n }\r\n },\r\n _getCurrentDate: function() {\r\n var curDate = this._valueOption();\r\n var minDate = this.option(\"minDate\");\r\n var maxDate = this.option(\"maxDate\");\r\n return _date.default.normalizeDate(curDate, minDate, maxDate)\r\n },\r\n _calculateRollerConfigValueRange: function(componentName) {\r\n var curDate = this._getCurrentDate();\r\n var minDate = this.option(\"minDate\");\r\n var maxDate = this.option(\"maxDate\");\r\n var minYear = _date.default.sameYear(curDate, minDate);\r\n var minMonth = minYear && curDate.getMonth() === minDate.getMonth();\r\n var maxYear = _date.default.sameYear(curDate, maxDate);\r\n var maxMonth = maxYear && curDate.getMonth() === maxDate.getMonth();\r\n var minHour = minMonth && curDate.getDate() === minDate.getDate();\r\n var maxHour = maxMonth && curDate.getDate() === maxDate.getDate();\r\n var componentInfo = _ui2.default.DATE_COMPONENTS_INFO[componentName];\r\n var startValue = componentInfo.startValue;\r\n var endValue = componentInfo.endValue;\r\n if (componentName === ROLLER_TYPE.year) {\r\n startValue = minDate.getFullYear();\r\n endValue = maxDate.getFullYear()\r\n }\r\n if (componentName === ROLLER_TYPE.month) {\r\n if (minYear) {\r\n startValue = minDate.getMonth()\r\n }\r\n if (maxYear) {\r\n endValue = maxDate.getMonth()\r\n }\r\n }\r\n if (componentName === ROLLER_TYPE.day) {\r\n endValue = _ui2.default.getMaxMonthDay(curDate.getFullYear(), curDate.getMonth());\r\n if (minYear && minMonth) {\r\n startValue = minDate.getDate()\r\n }\r\n if (maxYear && maxMonth) {\r\n endValue = maxDate.getDate()\r\n }\r\n }\r\n if (componentName === ROLLER_TYPE.hours) {\r\n startValue = minHour ? minDate.getHours() : startValue;\r\n endValue = maxHour ? maxDate.getHours() : endValue\r\n }\r\n return {\r\n startValue: startValue,\r\n endValue: endValue\r\n }\r\n },\r\n _refreshRollers: function() {\r\n this._refreshRoller(ROLLER_TYPE.month);\r\n this._refreshRoller(ROLLER_TYPE.day);\r\n this._refreshRoller(ROLLER_TYPE.hours)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"minDate\":\r\n case \"maxDate\":\r\n case \"type\":\r\n this._renderRollers();\r\n this._toggleFormatClasses(args.value, args.previousValue);\r\n break;\r\n case \"visible\":\r\n this.callBase(args);\r\n if (args.value) {\r\n this._renderRollers()\r\n }\r\n break;\r\n case \"value\":\r\n this.option(\"value\", this._valueOption());\r\n this._refreshRollers();\r\n this._updateRollersPosition();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n delete this._$rollersContainer\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxDateView\", DateView);\r\nvar _default = DateView;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_view_roller.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 _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _click = require(\"../../events/click\");\r\nvar _ui = _interopRequireDefault(require(\"../scroll_view/ui.scrollable\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\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 DATEVIEW_ROLLER_CLASS = \"dx-dateviewroller\";\r\nvar DATEVIEW_ROLLER_ACTIVE_CLASS = \"dx-state-active\";\r\nvar DATEVIEW_ROLLER_CURRENT_CLASS = \"dx-dateviewroller-current\";\r\nvar DATEVIEW_ROLLER_ITEM_CLASS = \"dx-dateview-item\";\r\nvar DATEVIEW_ROLLER_ITEM_SELECTED_CLASS = \"dx-dateview-item-selected\";\r\nvar DATEVIEW_ROLLER_ITEM_SELECTED_FRAME_CLASS = \"dx-dateview-item-selected-frame\";\r\nvar DATEVIEW_ROLLER_ITEM_SELECTED_BORDER_CLASS = \"dx-dateview-item-selected-border\";\r\nvar DateViewRoller = _ui.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n showScrollbar: false,\r\n useNative: false,\r\n selectedIndex: 0,\r\n bounceEnabled: false,\r\n items: [],\r\n showOnClick: false,\r\n onClick: null,\r\n onSelectedIndexChanged: null\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n scrollByContent: true\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._renderSelectedItemFrame()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(DATEVIEW_ROLLER_CLASS);\r\n this._renderContainerClick();\r\n this._renderItems();\r\n this._renderSelectedValue();\r\n this._renderItemsClick();\r\n this._renderWheelEvent();\r\n this._wrapAction(\"_endAction\", this._endActionHandler.bind(this));\r\n this._renderSelectedIndexChanged()\r\n },\r\n _renderSelectedIndexChanged: function() {\r\n this._selectedIndexChanged = this._createActionByOption(\"onSelectedIndexChanged\")\r\n },\r\n _renderWheelEvent: function() {\r\n var _this = this;\r\n _events_engine.default.on(this._$container, \"dxmousewheel\", function(e) {\r\n _this._isWheelScrolled = true\r\n })\r\n },\r\n _renderContainerClick: function() {\r\n if (!this.option(\"showOnClick\")) {\r\n return\r\n }\r\n var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n var clickAction = this._createActionByOption(\"onClick\");\r\n _events_engine.default.off(this._$container, eventName);\r\n _events_engine.default.on(this._$container, eventName, function(e) {\r\n clickAction({\r\n event: e\r\n })\r\n })\r\n },\r\n _wrapAction: function(actionName, callback) {\r\n var strategy = this._strategy;\r\n var originalAction = strategy[actionName];\r\n strategy[actionName] = function() {\r\n callback.apply(this, arguments);\r\n return originalAction.apply(this, arguments)\r\n }\r\n },\r\n _renderItems: function() {\r\n var items = this.option(\"items\") || [];\r\n var $items = (0, _renderer.default)();\r\n this._$content.empty();\r\n items.forEach(function(item) {\r\n $items = $items.add((0, _renderer.default)(\"
\").addClass(DATEVIEW_ROLLER_ITEM_CLASS).append(item))\r\n });\r\n this._$content.append($items);\r\n this._$items = $items;\r\n this.update()\r\n },\r\n _renderSelectedItemFrame: function() {\r\n (0, _renderer.default)(\"
\").addClass(DATEVIEW_ROLLER_ITEM_SELECTED_FRAME_CLASS).append((0, _renderer.default)(\"
\").addClass(DATEVIEW_ROLLER_ITEM_SELECTED_BORDER_CLASS)).appendTo(this._$container)\r\n },\r\n _renderSelectedValue: function(selectedIndex) {\r\n var index = this._fitIndex(null !== selectedIndex && void 0 !== selectedIndex ? selectedIndex : this.option(\"selectedIndex\"));\r\n this._moveTo({\r\n top: this._getItemPosition(index)\r\n });\r\n this._renderActiveStateItem()\r\n },\r\n _fitIndex: function(index) {\r\n var items = this.option(\"items\") || [];\r\n var itemCount = items.length;\r\n if (index >= itemCount) {\r\n return itemCount - 1\r\n }\r\n if (index < 0) {\r\n return 0\r\n }\r\n return index\r\n },\r\n _getItemPosition: function(index) {\r\n return Math.round(this._itemHeight() * index)\r\n },\r\n _renderItemsClick: function() {\r\n var itemSelector = this._getItemSelector();\r\n var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n _events_engine.default.off(this.$element(), eventName, itemSelector);\r\n _events_engine.default.on(this.$element(), eventName, itemSelector, this._itemClickHandler.bind(this))\r\n },\r\n _getItemSelector: function() {\r\n return \".\" + DATEVIEW_ROLLER_ITEM_CLASS\r\n },\r\n _itemClickHandler: function(e) {\r\n this.option(\"selectedIndex\", this._itemElementIndex(e.currentTarget))\r\n },\r\n _itemElementIndex: function(itemElement) {\r\n return this._itemElements().index(itemElement)\r\n },\r\n _itemElements: function() {\r\n return this.$element().find(this._getItemSelector())\r\n },\r\n _renderActiveStateItem: function() {\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n (0, _iterator.each)(this._$items, function(index) {\r\n (0, _renderer.default)(this).toggleClass(DATEVIEW_ROLLER_ITEM_SELECTED_CLASS, selectedIndex === index)\r\n })\r\n },\r\n _shouldScrollToNeighborItem: function() {\r\n return \"desktop\" === _devices.default.real().deviceType && this._isWheelScrolled\r\n },\r\n _moveTo: function(targetLocation) {\r\n targetLocation = this._normalizeLocation(targetLocation);\r\n var location = this._location();\r\n var delta = {\r\n x: -(location.left - targetLocation.left),\r\n y: -(location.top - targetLocation.top)\r\n };\r\n if (this._isVisible() && (delta.x || delta.y)) {\r\n this._strategy._prepareDirections(true);\r\n if (this._animation && !this._shouldScrollToNeighborItem()) {\r\n var that = this;\r\n _fx.default.stop(this._$content);\r\n _fx.default.animate(this._$content, {\r\n duration: 200,\r\n type: \"slide\",\r\n to: {\r\n top: Math.floor(delta.y)\r\n },\r\n complete: function() {\r\n (0, _translator.resetPosition)(that._$content);\r\n that._strategy.handleMove({\r\n delta: delta\r\n })\r\n }\r\n });\r\n delete this._animation\r\n } else {\r\n this._strategy.handleMove({\r\n delta: delta\r\n })\r\n }\r\n }\r\n },\r\n _validate: function(e) {\r\n return this._strategy.validate(e)\r\n },\r\n _fitSelectedIndexInRange: function(index) {\r\n var itemsCount = this.option(\"items\").length;\r\n return Math.max(Math.min(index, itemsCount - 1), 0)\r\n },\r\n _isInNullNeighborhood: function(x) {\r\n var EPS = .1;\r\n return -EPS <= x && x <= EPS\r\n },\r\n _getSelectedIndexAfterScroll: function(currentSelectedIndex) {\r\n var locationTop = -this._location().top;\r\n var currentSelectedIndexPosition = currentSelectedIndex * this._itemHeight();\r\n var dy = locationTop - currentSelectedIndexPosition;\r\n if (this._isInNullNeighborhood(dy)) {\r\n return currentSelectedIndex\r\n }\r\n var direction = dy > 0 ? 1 : -1;\r\n var newSelectedIndex = this._fitSelectedIndexInRange(currentSelectedIndex + direction);\r\n return newSelectedIndex\r\n },\r\n _getNewSelectedIndex: function(currentSelectedIndex) {\r\n if (this._shouldScrollToNeighborItem()) {\r\n return this._getSelectedIndexAfterScroll(currentSelectedIndex)\r\n }\r\n this._animation = true;\r\n var ratio = -this._location().top / this._itemHeight();\r\n return Math.round(ratio)\r\n },\r\n _endActionHandler: function() {\r\n var currentSelectedIndex = this.option(\"selectedIndex\");\r\n var newSelectedIndex = this._getNewSelectedIndex(currentSelectedIndex);\r\n if (newSelectedIndex === currentSelectedIndex) {\r\n this._renderSelectedValue(newSelectedIndex)\r\n } else {\r\n this.option(\"selectedIndex\", newSelectedIndex)\r\n }\r\n this._isWheelScrolled = false\r\n },\r\n _itemHeight: function() {\r\n var $item = this._$items.first();\r\n return $item.height()\r\n },\r\n _toggleActive: function(state) {\r\n this.$element().toggleClass(DATEVIEW_ROLLER_ACTIVE_CLASS, state)\r\n },\r\n _isVisible: function() {\r\n return this._$container.is(\":visible\")\r\n },\r\n _fireSelectedIndexChanged: function(value, previousValue) {\r\n this._selectedIndexChanged({\r\n value: value,\r\n previousValue: previousValue,\r\n event: void 0\r\n })\r\n },\r\n _visibilityChanged: function(visible) {\r\n this.callBase(visible);\r\n if (visible) {\r\n this._renderSelectedValue(this.option(\"selectedIndex\"))\r\n }\r\n this.toggleActiveState(false)\r\n },\r\n toggleActiveState: function(state) {\r\n this.$element().toggleClass(DATEVIEW_ROLLER_CURRENT_CLASS, state)\r\n },\r\n _refreshSelectedIndex: function() {\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n var fitIndex = this._fitIndex(selectedIndex);\r\n if (fitIndex === selectedIndex) {\r\n this._renderActiveStateItem()\r\n } else {\r\n this.option(\"selectedIndex\", fitIndex)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"selectedIndex\":\r\n this._fireSelectedIndexChanged(args.value, args.previousValue);\r\n this._renderSelectedValue(args.value);\r\n break;\r\n case \"items\":\r\n this._renderItems();\r\n this._refreshSelectedIndex();\r\n break;\r\n case \"onClick\":\r\n case \"showOnClick\":\r\n this._renderContainerClick();\r\n break;\r\n case \"onSelectedIndexChanged\":\r\n this._renderSelectedIndexChanged();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxDateViewRoller\", DateViewRoller);\r\nvar _default = DateViewRoller;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.strategy.native.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 _uiDate_box = _interopRequireDefault(require(\"./ui.date_box.strategy\"));\r\nvar _support = require(\"../../core/utils/support\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _ui = _interopRequireDefault(require(\"./ui.date_utils\"));\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar NativeStrategy = _uiDate_box.default.inherit({\r\n NAME: \"Native\",\r\n popupConfig: function(_popupConfig) {\r\n return (0, _extend.extend)({}, _popupConfig, {\r\n width: \"auto\"\r\n })\r\n },\r\n getParsedText: function(text, format) {\r\n if (!text) {\r\n return null\r\n }\r\n if (\"datetime\" === this.dateBox.option(\"type\")) {\r\n return new Date(text.replace(/-/g, \"/\").replace(\"T\", \" \").split(\".\")[0])\r\n }\r\n if (this._isTextInput()) {\r\n return this.callBase(text, format)\r\n } else {\r\n return _ui.default.fromStandardDateFormat(text)\r\n }\r\n },\r\n _isTextInput: function() {\r\n return \"text\" === this.dateBox._input().prop(\"type\")\r\n },\r\n renderPopupContent: _common.noop,\r\n _getWidgetName: _common.noop,\r\n _getWidgetOptions: _common.noop,\r\n _getDateBoxType: function() {\r\n var type = this.dateBox.option(\"type\");\r\n if ((0, _array.inArray)(type, _ui.default.SUPPORTED_FORMATS) === -1) {\r\n type = \"date\"\r\n } else {\r\n if (\"datetime\" === type && !(0, _support.inputType)(type)) {\r\n type = \"datetime-local\"\r\n }\r\n }\r\n return type\r\n },\r\n customizeButtons: function() {\r\n var dropDownButton = this.dateBox.getButton(\"dropDown\");\r\n if (_devices.default.real().android && dropDownButton) {\r\n dropDownButton.on(\"click\", function() {\r\n this.dateBox._input().get(0).click()\r\n }.bind(this))\r\n }\r\n },\r\n getDefaultOptions: function() {\r\n return {\r\n mode: this._getDateBoxType()\r\n }\r\n },\r\n getDisplayFormat: function(displayFormat) {\r\n var type = this._getDateBoxType();\r\n return displayFormat || _ui.default.FORMATS_MAP[type]\r\n },\r\n renderInputMinMax: function($input) {\r\n $input.attr({\r\n min: _date_serialization.default.serializeDate(this.dateBox.dateOption(\"min\"), \"yyyy-MM-dd\"),\r\n max: _date_serialization.default.serializeDate(this.dateBox.dateOption(\"max\"), \"yyyy-MM-dd\")\r\n })\r\n }\r\n});\r\nvar _default = NativeStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.strategy.calendar_with_time.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 _uiDate_boxStrategy = _interopRequireDefault(require(\"./ui.date_box.strategy.calendar\"));\r\nvar _ui = _interopRequireDefault(require(\"./ui.time_view\"));\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _box = _interopRequireDefault(require(\"../box\"));\r\nvar _ui2 = _interopRequireDefault(require(\"./ui.date_utils\"));\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 SHRINK_VIEW_SCREEN_WIDTH = 573;\r\nvar DATEBOX_ADAPTIVITY_MODE_CLASS = \"dx-datebox-adaptivity-mode\";\r\nvar CalendarWithTimeStrategy = _uiDate_boxStrategy.default.inherit({\r\n NAME: \"CalendarWithTime\",\r\n getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n applyValueMode: \"useButtons\",\r\n buttonsLocation: \"bottom after\",\r\n \"dropDownOptions.showTitle\": false\r\n })\r\n },\r\n getDisplayFormat: function(displayFormat) {\r\n return displayFormat || \"shortdateshorttime\"\r\n },\r\n _is24HourFormat: function() {\r\n return _date.default.is24HourFormat(this.getDisplayFormat(this.dateBox.option(\"displayFormat\")))\r\n },\r\n _getContouredValue: function() {\r\n var viewDate = this.callBase();\r\n return this._updateDateTime(viewDate)\r\n },\r\n _renderWidget: function() {\r\n this.callBase();\r\n this._timeView = this.dateBox._createComponent((0, _renderer.default)(\"
\"), _ui.default, {\r\n value: this.dateBoxValue(),\r\n _showClock: !this._isShrinkView(),\r\n use24HourFormat: this._is24HourFormat(),\r\n onValueChanged: this._valueChangedHandler.bind(this),\r\n stylingMode: this.dateBox.option(\"stylingMode\")\r\n });\r\n this._timeView.registerKeyHandler(\"escape\", this._escapeHandler.bind(this))\r\n },\r\n renderOpenedState: function() {\r\n this.callBase();\r\n var popup = this._getPopup();\r\n if (popup) {\r\n popup._wrapper().toggleClass(DATEBOX_ADAPTIVITY_MODE_CLASS, this._isSmallScreen())\r\n }\r\n clearTimeout(this._repaintTimer);\r\n this._repaintTimer = setTimeout(function() {\r\n this._getPopup() && this._getPopup().repaint()\r\n }.bind(this), 0)\r\n },\r\n isAdaptivityChanged: function() {\r\n var isAdaptiveMode = this._isShrinkView();\r\n var currentAdaptiveMode = this._currentAdaptiveMode;\r\n if (isAdaptiveMode !== currentAdaptiveMode) {\r\n this._currentAdaptiveMode = isAdaptiveMode;\r\n return void 0 !== currentAdaptiveMode\r\n }\r\n return this.callBase()\r\n },\r\n _updateValue: function(preventDefaultValue) {\r\n var date = this.dateBoxValue();\r\n if (!date && !preventDefaultValue) {\r\n date = new Date;\r\n _ui2.default.normalizeTime(date)\r\n }\r\n this.callBase();\r\n if (this._timeView) {\r\n date && this._timeView.option(\"value\", date);\r\n this._timeView.option(\"use24HourFormat\", this._is24HourFormat())\r\n }\r\n },\r\n _isSmallScreen: function() {\r\n return (0, _renderer.default)(window).width() <= SHRINK_VIEW_SCREEN_WIDTH\r\n },\r\n _isShrinkView: function() {\r\n return !this.dateBox.option(\"showAnalogClock\") || this.dateBox.option(\"adaptivityEnabled\") && this._isSmallScreen()\r\n },\r\n _getBoxItems: function() {\r\n var items = [{\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n name: \"calendar\"\r\n }];\r\n if (!this._isShrinkView()) {\r\n items.push({\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n name: \"time\"\r\n })\r\n }\r\n return items\r\n },\r\n renderPopupContent: function() {\r\n this.callBase();\r\n this._currentAdaptiveMode = this._isShrinkView();\r\n var $popupContent = this._getPopup().$content();\r\n this._box = this.dateBox._createComponent((0, _renderer.default)(\"
\").appendTo($popupContent), _box.default, {\r\n direction: \"row\",\r\n crossAlign: \"start\",\r\n items: this._getBoxItems(),\r\n itemTemplate: function(data) {\r\n var $container = (0, _renderer.default)(\"
\");\r\n switch (data.name) {\r\n case \"calendar\":\r\n $container.append(this._widget.$element());\r\n if (this._isShrinkView()) {\r\n $container.append(this._timeView.$element())\r\n }\r\n break;\r\n case \"time\":\r\n $container.append(this._timeView.$element())\r\n }\r\n return $container\r\n }.bind(this)\r\n });\r\n this._attachTabHandler()\r\n },\r\n popupConfig: function(_popupConfig) {\r\n var calendarPopupConfig = this.callBase(_popupConfig);\r\n var result = (0, _extend.extend)(calendarPopupConfig, {\r\n width: \"auto\",\r\n onShowing: function() {\r\n if (\"fallback\" === this._box.option(\"_layoutStrategy\")) {\r\n var clockMinWidth = this._getPopup().$content().find(\".dx-timeview-clock\").css(\"minWidth\");\r\n this._timeView.$element().css(\"maxWidth\", clockMinWidth)\r\n }\r\n }.bind(this)\r\n });\r\n return result\r\n },\r\n getFirstPopupElement: function() {\r\n return this._timeView._hourBox.$element().find(\"input\")\r\n },\r\n _attachTabHandler: function() {\r\n var dateBox = this.dateBox;\r\n var handler = function(e) {\r\n if (e.shiftKey) {\r\n e.preventDefault();\r\n dateBox.focus()\r\n }\r\n };\r\n this._timeView._hourBox.registerKeyHandler(\"tab\", handler)\r\n },\r\n _preventFocusOnPopup: function(e) {\r\n if (!(0, _renderer.default)(e.target).hasClass(\"dx-texteditor-input\")) {\r\n this.callBase.apply(this, arguments);\r\n if (!this.dateBox._hasFocusClass()) {\r\n this.dateBox.focus()\r\n }\r\n }\r\n },\r\n _updateDateTime: function(date) {\r\n var time = this._timeView.option(\"value\");\r\n date.setHours(time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\r\n return date\r\n },\r\n getValue: function() {\r\n var date = this._widget.option(\"value\");\r\n date = date ? new Date(date) : new Date;\r\n return this._updateDateTime(date)\r\n },\r\n dispose: function() {\r\n clearTimeout(this._removeMinWidthTimer);\r\n clearTimeout(this._repaintTimer);\r\n this.callBase()\r\n }\r\n});\r\nvar _default = CalendarWithTimeStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.time_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 _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _number_box = _interopRequireDefault(require(\"../number_box\"));\r\nvar _select_box = _interopRequireDefault(require(\"../select_box\"));\r\nvar _box = _interopRequireDefault(require(\"../box\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _ui = _interopRequireDefault(require(\"./ui.date_utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TIMEVIEW_CLASS = \"dx-timeview\";\r\nvar TIMEVIEW_CLOCK_CLASS = \"dx-timeview-clock\";\r\nvar TIMEVIEW_FIELD_CLASS = \"dx-timeview-field\";\r\nvar TIMEVIEW_HOURARROW_CLASS = \"dx-timeview-hourarrow\";\r\nvar TIMEVIEW_TIME_SEPARATOR_CLASS = \"dx-timeview-time-separator\";\r\nvar TIMEVIEW_FORMAT12_CLASS = \"dx-timeview-format12\";\r\nvar TIMEVIEW_FORMAT12_AM = -1;\r\nvar TIMEVIEW_FORMAT12_PM = 1;\r\nvar TIMEVIEW_MINUTEARROW_CLASS = \"dx-timeview-minutearrow\";\r\nvar rotateArrow = function($arrow, angle, offset) {\r\n cssRotate($arrow, angle, offset)\r\n};\r\nvar cssRotate = function($arrow, angle, offset) {\r\n $arrow.css(\"transform\", \"rotate(\" + angle + \"deg) translate(0,\" + offset + \"px)\")\r\n};\r\nvar TimeView = _editor.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n value: new Date(Date.now()),\r\n use24HourFormat: true,\r\n _showClock: true,\r\n _arrowOffset: 0,\r\n stylingMode: void 0\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n _arrowOffset: 15\r\n }\r\n }, {\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n _arrowOffset: 5\r\n }\r\n }])\r\n },\r\n _getValue: function() {\r\n return this.option(\"value\") || new Date\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(TIMEVIEW_CLASS)\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderBox();\r\n this._updateTime()\r\n },\r\n _renderBox: function() {\r\n var $box = (0, _renderer.default)(\"
\").appendTo(this.$element());\r\n var items = [];\r\n if (this.option(\"_showClock\")) {\r\n items.push({\r\n ratio: 1,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n template: this._renderClock.bind(this)\r\n })\r\n }\r\n items.push({\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: 50,\r\n template: this._renderField.bind(this)\r\n });\r\n this._createComponent($box, _box.default, {\r\n height: \"100%\",\r\n width: \"100%\",\r\n direction: \"col\",\r\n items: items\r\n })\r\n },\r\n _renderClock: function(_, __, container) {\r\n this._$hourArrow = (0, _renderer.default)(\"
\").addClass(TIMEVIEW_HOURARROW_CLASS);\r\n this._$minuteArrow = (0, _renderer.default)(\"
\").addClass(TIMEVIEW_MINUTEARROW_CLASS);\r\n var $container = (0, _renderer.default)(container);\r\n $container.addClass(TIMEVIEW_CLOCK_CLASS).append(this._$hourArrow).append(this._$minuteArrow);\r\n this.setAria(\"role\", \"presentation\", $container)\r\n },\r\n _updateClock: function() {\r\n var time = this._getValue();\r\n var hourArrowAngle = time.getHours() / 12 * 360 + time.getMinutes() / 60 * 30;\r\n var minuteArrowAngle = time.getMinutes() / 60 * 360;\r\n rotateArrow(this._$hourArrow, hourArrowAngle, this.option(\"_arrowOffset\"));\r\n rotateArrow(this._$minuteArrow, minuteArrowAngle, this.option(\"_arrowOffset\"))\r\n },\r\n _getBoxItems: function(is12HourFormat) {\r\n var _this = this;\r\n var items = [{\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n template: function() {\r\n return _this._hourBox.$element()\r\n }\r\n }, {\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n template: (0, _renderer.default)(\"
\").addClass(TIMEVIEW_TIME_SEPARATOR_CLASS).text(_date.default.getTimeSeparator())\r\n }, {\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n template: function() {\r\n return _this._minuteBox.$element()\r\n }\r\n }];\r\n if (is12HourFormat) {\r\n items.push({\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n template: function() {\r\n return _this._format12.$element()\r\n }\r\n })\r\n }\r\n return items\r\n },\r\n _renderField: function() {\r\n var is12HourFormat = !this.option(\"use24HourFormat\");\r\n this._createHourBox(is12HourFormat);\r\n this._createMinuteBox();\r\n if (is12HourFormat) {\r\n this._createFormat12Box()\r\n }\r\n return this._createComponent((0, _renderer.default)(\"
\").addClass(TIMEVIEW_FIELD_CLASS), _box.default, {\r\n direction: \"row\",\r\n align: \"center\",\r\n crossAlign: \"center\",\r\n items: this._getBoxItems(is12HourFormat)\r\n }).$element()\r\n },\r\n _createHourBox: function(is12HourFormat) {\r\n var _this2 = this;\r\n var editor = this._hourBox = this._createComponent((0, _renderer.default)(\"
\"), _number_box.default, (0, _extend.extend)({\r\n min: -1,\r\n max: is12HourFormat ? 13 : 24,\r\n value: this._getValue().getHours(),\r\n onValueChanged: this._onHourBoxValueChanged.bind(this),\r\n onKeyboardHandled: function(opts) {\r\n return _this2._keyboardHandler(opts)\r\n }\r\n }, this._getNumberBoxConfig()));\r\n editor.setAria(\"label\", \"hours\")\r\n },\r\n _isPM: function() {\r\n return !this.option(\"use24HourFormat\") && 1 === this._format12.option(\"value\")\r\n },\r\n _onHourBoxValueChanged: function(_ref) {\r\n var value = _ref.value,\r\n component = _ref.component;\r\n var currentValue = this._getValue();\r\n var newValue = new Date(currentValue);\r\n var newHours = this._convertMaxHourToMin(value);\r\n component.option(\"value\", newHours);\r\n if (this._isPM()) {\r\n newHours += 12\r\n }\r\n newValue.setHours(newHours);\r\n _ui.default.normalizeTime(newValue);\r\n this.option(\"value\", newValue)\r\n },\r\n _convertMaxHourToMin: function(hours) {\r\n var maxHoursValue = this.option(\"use24HourFormat\") ? 24 : 12;\r\n return (maxHoursValue + hours) % maxHoursValue\r\n },\r\n _createMinuteBox: function() {\r\n var _this3 = this;\r\n var editor = this._minuteBox = this._createComponent((0, _renderer.default)(\"
\"), _number_box.default, (0, _extend.extend)({\r\n min: -1,\r\n max: 60,\r\n value: this._getValue().getMinutes(),\r\n onKeyboardHandled: function(opts) {\r\n return _this3._keyboardHandler(opts)\r\n },\r\n onValueChanged: function(_ref2) {\r\n var value = _ref2.value,\r\n component = _ref2.component;\r\n var newMinutes = (60 + value) % 60;\r\n component.option(\"value\", newMinutes);\r\n var time = new Date(_this3._getValue());\r\n time.setMinutes(newMinutes);\r\n _ui.default.normalizeTime(time);\r\n _this3.option(\"value\", time)\r\n }\r\n }, this._getNumberBoxConfig()));\r\n editor.setAria(\"label\", \"minutes\")\r\n },\r\n _createFormat12Box: function() {\r\n var _this4 = this;\r\n var periodNames = _date.default.getPeriodNames();\r\n var editor = this._format12 = this._createComponent((0, _renderer.default)(\"
\").addClass(TIMEVIEW_FORMAT12_CLASS), _select_box.default, {\r\n items: [{\r\n value: TIMEVIEW_FORMAT12_AM,\r\n text: periodNames[0]\r\n }, {\r\n value: TIMEVIEW_FORMAT12_PM,\r\n text: periodNames[1]\r\n }],\r\n valueExpr: \"value\",\r\n displayExpr: \"text\",\r\n onKeyboardHandled: function(opts) {\r\n return _this4._keyboardHandler(opts)\r\n },\r\n onValueChanged: function(_ref3) {\r\n var value = _ref3.value;\r\n var hours = _this4._getValue().getHours();\r\n var time = new Date(_this4._getValue());\r\n var newHours = (hours + 12 * value) % 24;\r\n time.setHours(newHours);\r\n _this4.option(\"value\", time)\r\n },\r\n value: this._getValue().getHours() >= 12 ? TIMEVIEW_FORMAT12_PM : TIMEVIEW_FORMAT12_AM,\r\n stylingMode: this.option(\"stylingMode\")\r\n });\r\n editor.setAria(\"label\", \"type\")\r\n },\r\n _refreshFormat12: function() {\r\n if (this.option(\"use24HourFormat\")) {\r\n return\r\n }\r\n var value = this._getValue();\r\n var hours = value.getHours();\r\n var isPM = hours >= 12;\r\n var newValue = isPM ? TIMEVIEW_FORMAT12_PM : TIMEVIEW_FORMAT12_AM;\r\n this._silentEditorValueUpdate(this._format12, newValue)\r\n },\r\n _silentEditorValueUpdate: function(editor, value) {\r\n if (editor) {\r\n editor._suppressValueChangeAction();\r\n editor.option(\"value\", value);\r\n editor._resumeValueChangeAction()\r\n }\r\n },\r\n _getNumberBoxConfig: function() {\r\n return {\r\n showSpinButtons: true,\r\n displayValueFormatter: function(value) {\r\n return (value < 10 ? \"0\" : \"\") + value\r\n },\r\n stylingMode: this.option(\"stylingMode\")\r\n }\r\n },\r\n _normalizeHours: function(hours) {\r\n return this.option(\"use24HourFormat\") ? hours : hours % 12 || 12\r\n },\r\n _updateField: function() {\r\n var hours = this._normalizeHours(this._getValue().getHours());\r\n this._silentEditorValueUpdate(this._hourBox, hours);\r\n this._silentEditorValueUpdate(this._minuteBox, this._getValue().getMinutes());\r\n this._refreshFormat12()\r\n },\r\n _updateTime: function() {\r\n if (this.option(\"_showClock\")) {\r\n this._updateClock()\r\n }\r\n this._updateField()\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._updateTime()\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"value\":\r\n this._updateTime();\r\n this.callBase(args);\r\n break;\r\n case \"_arrowOffset\":\r\n break;\r\n case \"use24HourFormat\":\r\n case \"_showClock\":\r\n case \"stylingMode\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxTimeView\", TimeView);\r\nvar _default = TimeView;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.strategy.list.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 _list = _interopRequireDefault(require(\"../list\"));\r\nvar _uiDate_box = _interopRequireDefault(require(\"./ui.date_box.strategy\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"./ui.date_utils\"));\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _utils = require(\"../drop_down_editor/utils\");\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 DATE_FORMAT = \"date\";\r\nvar BOUNDARY_VALUES = {\r\n min: new Date(0, 0, 0, 0, 0),\r\n max: new Date(0, 0, 0, 23, 59)\r\n};\r\nvar ListStrategy = _uiDate_box.default.inherit({\r\n NAME: \"List\",\r\n supportedKeys: function() {\r\n return {\r\n tab: function() {\r\n if (this.option(\"opened\")) {\r\n this.close()\r\n }\r\n },\r\n space: _common.noop,\r\n home: _common.noop,\r\n end: _common.noop\r\n }\r\n },\r\n getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n applyValueMode: \"instantly\"\r\n })\r\n },\r\n getDisplayFormat: function(displayFormat) {\r\n return displayFormat || \"shorttime\"\r\n },\r\n popupConfig: function(_popupConfig) {\r\n return _popupConfig\r\n },\r\n useCurrentDateByDefault: function() {\r\n return true\r\n },\r\n getDefaultDate: function() {\r\n return new Date(null)\r\n },\r\n popupShowingHandler: function() {\r\n this.dateBox._dimensionChanged()\r\n },\r\n _renderWidget: function() {\r\n this.callBase();\r\n this._refreshItems()\r\n },\r\n _getWidgetName: function() {\r\n return _list.default\r\n },\r\n _getWidgetOptions: function() {\r\n return {\r\n itemTemplate: this._timeListItemTemplate.bind(this),\r\n onItemClick: this._listItemClickHandler.bind(this),\r\n tabIndex: -1,\r\n onFocusedItemChanged: this._refreshActiveDescendant.bind(this),\r\n selectionMode: \"single\"\r\n }\r\n },\r\n _refreshActiveDescendant: function(e) {\r\n this.dateBox.setAria(\"activedescendant\", \"\");\r\n this.dateBox.setAria(\"activedescendant\", e.actionValue)\r\n },\r\n _refreshItems: function() {\r\n this._widgetItems = this._getTimeListItems();\r\n this._widget.option(\"items\", this._widgetItems)\r\n },\r\n renderOpenedState: function() {\r\n if (!this._widget) {\r\n return\r\n }\r\n this._widget.option(\"focusedElement\", null);\r\n this._setSelectedItemsByValue();\r\n if (this._widget.option(\"templatesRenderAsynchronously\")) {\r\n this._asyncScrollTimeout = setTimeout(this._scrollToSelectedItem.bind(this))\r\n } else {\r\n this._scrollToSelectedItem()\r\n }\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n clearTimeout(this._asyncScrollTimeout)\r\n },\r\n _updateValue: function() {\r\n if (!this._widget) {\r\n return\r\n }\r\n this._refreshItems();\r\n this._setSelectedItemsByValue();\r\n this._scrollToSelectedItem()\r\n },\r\n _setSelectedItemsByValue: function() {\r\n var value = this.dateBoxValue();\r\n var dateIndex = this._getDateIndex(value);\r\n if (dateIndex === -1) {\r\n this._widget.option(\"selectedItems\", [])\r\n } else {\r\n this._widget.option(\"selectedIndex\", dateIndex)\r\n }\r\n },\r\n _scrollToSelectedItem: function() {\r\n this._widget.scrollToItem(this._widget.option(\"selectedIndex\"))\r\n },\r\n _getDateIndex: function(date) {\r\n var result = -1;\r\n for (var i = 0, n = this._widgetItems.length; i < n; i++) {\r\n if (this._areDatesEqual(date, this._widgetItems[i])) {\r\n result = i;\r\n break\r\n }\r\n }\r\n return result\r\n },\r\n _areDatesEqual: function(first, second) {\r\n return (0, _type.isDate)(first) && (0, _type.isDate)(second) && first.getHours() === second.getHours() && first.getMinutes() === second.getMinutes()\r\n },\r\n _getTimeListItems: function() {\r\n var min = this.dateBox.dateOption(\"min\") || this._getBoundaryDate(\"min\");\r\n var max = this.dateBox.dateOption(\"max\") || this._getBoundaryDate(\"max\");\r\n var value = this.dateBox.dateOption(\"value\") || null;\r\n var delta = max - min;\r\n var minutes = min.getMinutes() % this.dateBox.option(\"interval\");\r\n if (delta < 0) {\r\n return []\r\n }\r\n if (delta > _ui.default.ONE_DAY) {\r\n delta = _ui.default.ONE_DAY\r\n }\r\n if (value - min < _ui.default.ONE_DAY) {\r\n return this._getRangeItems(min, new Date(min), delta)\r\n }\r\n min = this._getBoundaryDate(\"min\");\r\n min.setMinutes(minutes);\r\n if (value && Math.abs(value - max) < _ui.default.ONE_DAY) {\r\n delta = (60 * max.getHours() + Math.abs(max.getMinutes() - minutes)) * _ui.default.ONE_MINUTE\r\n }\r\n return this._getRangeItems(min, new Date(min), delta)\r\n },\r\n _getRangeItems: function(startValue, currentValue, rangeDuration) {\r\n var rangeItems = [];\r\n var interval = this.dateBox.option(\"interval\");\r\n while (currentValue - startValue <= rangeDuration) {\r\n rangeItems.push(new Date(currentValue));\r\n currentValue.setMinutes(currentValue.getMinutes() + interval)\r\n }\r\n return rangeItems\r\n },\r\n _getBoundaryDate: function(boundary) {\r\n var boundaryValue = BOUNDARY_VALUES[boundary];\r\n var currentValue = new Date((0, _common.ensureDefined)(this.dateBox.dateOption(\"value\"), 0));\r\n return new Date(currentValue.getFullYear(), currentValue.getMonth(), currentValue.getDate(), boundaryValue.getHours(), boundaryValue.getMinutes())\r\n },\r\n _timeListItemTemplate: function(itemData) {\r\n var displayFormat = this.dateBox.option(\"displayFormat\");\r\n return _date.default.format(itemData, this.getDisplayFormat(displayFormat))\r\n },\r\n _listItemClickHandler: function(e) {\r\n this.dateBox.option(\"opened\", false);\r\n var date = this.dateBox.option(\"value\");\r\n var itemData = e.itemData;\r\n var hours = itemData.getHours();\r\n var minutes = itemData.getMinutes();\r\n var seconds = itemData.getSeconds();\r\n var year = itemData.getFullYear();\r\n var month = itemData.getMonth();\r\n var day = itemData.getDate();\r\n if (date) {\r\n if (this.dateBox.option(\"dateSerializationFormat\")) {\r\n date = _date_serialization.default.deserializeDate(date)\r\n } else {\r\n date = new Date(date)\r\n }\r\n date.setHours(hours);\r\n date.setMinutes(minutes);\r\n date.setSeconds(seconds);\r\n date.setFullYear(year);\r\n date.setMonth(month);\r\n date.setDate(day)\r\n } else {\r\n date = new Date(year, month, day, hours, minutes, 0, 0)\r\n }\r\n this.dateBoxValue(date, e.event)\r\n },\r\n getKeyboardListener: function() {\r\n return this._widget\r\n },\r\n _updatePopupHeight: function() {\r\n var dropDownOptionsHeight = (0, _utils.getSizeValue)(this.dateBox.option(\"dropDownOptions.height\"));\r\n if (void 0 === dropDownOptionsHeight || \"auto\" === dropDownOptionsHeight) {\r\n this.dateBox._setPopupOption(\"height\", \"auto\");\r\n var popupHeight = this._widget.$element().outerHeight();\r\n var maxHeight = .45 * (0, _renderer.default)(window).height();\r\n this.dateBox._setPopupOption(\"height\", Math.min(popupHeight, maxHeight))\r\n }\r\n this.dateBox._timeList && this.dateBox._timeList.updateDimensions()\r\n },\r\n getParsedText: function(text, format) {\r\n var value = this.callBase(text, format);\r\n if (value) {\r\n value = _ui.default.mergeDates(value, new Date(null), DATE_FORMAT)\r\n }\r\n return value\r\n }\r\n});\r\nvar _default = ListStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\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/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/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/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/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/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.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.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/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/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.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.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.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/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/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/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/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.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 (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.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/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.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/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.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.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/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.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/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.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 (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 (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/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","/**\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/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 (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.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.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/defer_rendering.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 _transition_executor = require(\"../animation/transition_executor/transition_executor\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _visibility_change = require(\"../events/visibility_change\");\r\nvar _load_indicator = _interopRequireDefault(require(\"./load_indicator\"));\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.widget\"));\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 window = (0, _window.getWindow)();\r\nvar WIDGET_CLASS = \"dx-widget\";\r\nvar DEFER_RENDERING_CLASS = \"dx-deferrendering\";\r\nvar PENDING_RENDERING_CLASS = \"dx-pending-rendering\";\r\nvar PENDING_RENDERING_MANUAL_CLASS = \"dx-pending-rendering-manual\";\r\nvar PENDING_RENDERING_ACTIVE_CLASS = \"dx-pending-rendering-active\";\r\nvar VISIBLE_WHILE_PENDING_RENDERING_CLASS = \"dx-visible-while-pending-rendering\";\r\nvar INVISIBLE_WHILE_PENDING_RENDERING_CLASS = \"dx-invisible-while-pending-rendering\";\r\nvar LOADINDICATOR_CONTAINER_CLASS = \"dx-loadindicator-container\";\r\nvar DEFER_RENDERING_LOADINDICATOR_CONTAINER_CLASS = \"dx-deferrendering-loadindicator-container\";\r\nvar DEFER_DEFER_RENDERING_LOAD_INDICATOR = \"dx-deferrendering-load-indicator\";\r\nvar ANONYMOUS_TEMPLATE_NAME = \"content\";\r\nvar ACTIONS = [\"onRendered\", \"onShown\"];\r\nvar DeferRendering = _ui.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n showLoadIndicator: false,\r\n renderWhen: void 0,\r\n animation: void 0,\r\n staggerItemSelector: void 0,\r\n onRendered: null,\r\n onShown: null\r\n })\r\n },\r\n _getAnonymousTemplateName: function() {\r\n return ANONYMOUS_TEMPLATE_NAME\r\n },\r\n _init: function() {\r\n this.transitionExecutor = new _transition_executor.TransitionExecutor;\r\n this._initElement();\r\n this._initRender();\r\n this._$initialContent = this.$element().clone().contents();\r\n this._initActions();\r\n this.callBase()\r\n },\r\n _initElement: function() {\r\n this.$element().addClass(DEFER_RENDERING_CLASS)\r\n },\r\n _initRender: function() {\r\n var that = this;\r\n var $element = this.$element();\r\n var renderWhen = this.option(\"renderWhen\");\r\n var doRender = function() {\r\n return that._renderDeferredContent()\r\n };\r\n if ((0, _type.isPromise)(renderWhen)) {\r\n (0, _deferred.fromPromise)(renderWhen).done(doRender)\r\n } else {\r\n $element.data(\"dx-render-delegate\", doRender);\r\n if (void 0 === renderWhen) {\r\n $element.addClass(PENDING_RENDERING_MANUAL_CLASS)\r\n }\r\n }\r\n },\r\n _initActions: function() {\r\n var _this = this;\r\n this._actions = {};\r\n (0, _iterator.each)(ACTIONS, function(_, action) {\r\n _this._actions[action] = _this._createActionByOption(action) || _common.noop\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n if (!this._initContent) {\r\n this._initContent = this._renderContent;\r\n this._renderContent = function() {}\r\n }\r\n this._initContent()\r\n },\r\n _renderContentImpl: function() {\r\n this.$element().removeClass(WIDGET_CLASS);\r\n this.$element().append(this._$initialContent);\r\n this._setLoadingState()\r\n },\r\n _renderDeferredContent: function() {\r\n var that = this;\r\n var $element = this.$element();\r\n var result = new _deferred.Deferred;\r\n $element.removeClass(PENDING_RENDERING_MANUAL_CLASS);\r\n $element.addClass(PENDING_RENDERING_ACTIVE_CLASS);\r\n this._abortRenderTask();\r\n this._renderTask = (0, _common.executeAsync)(function() {\r\n that._renderImpl().done(function() {\r\n var shownArgs = {\r\n element: $element\r\n };\r\n that._actions.onShown([shownArgs]);\r\n result.resolve(shownArgs)\r\n }).fail(function() {\r\n result.rejectWith(result, arguments)\r\n })\r\n });\r\n return result.promise()\r\n },\r\n _isElementInViewport: function(element) {\r\n var rect = (0, _position.getBoundingRect)(element);\r\n return rect.bottom >= 0 && rect.right >= 0 && rect.top <= (window.innerHeight || _dom_adapter.default.getDocumentElement().clientHeight) && rect.left <= (window.innerWidth || _dom_adapter.default.getDocumentElement().clientWidth)\r\n },\r\n _animate: function() {\r\n var that = this;\r\n var $element = this.$element();\r\n var animation = (0, _window.hasWindow)() && this.option(\"animation\");\r\n var staggerItemSelector = this.option(\"staggerItemSelector\");\r\n var animatePromise;\r\n that.transitionExecutor.stop();\r\n if (animation) {\r\n if (staggerItemSelector) {\r\n $element.find(staggerItemSelector).each(function() {\r\n if (that._isElementInViewport(this)) {\r\n that.transitionExecutor.enter((0, _renderer.default)(this), animation)\r\n }\r\n })\r\n } else {\r\n that.transitionExecutor.enter($element, animation)\r\n }\r\n animatePromise = that.transitionExecutor.start()\r\n } else {\r\n animatePromise = (new _deferred.Deferred).resolve().promise()\r\n }\r\n return animatePromise\r\n },\r\n _renderImpl: function() {\r\n var $element = this.$element();\r\n var renderedArgs = {\r\n element: $element\r\n };\r\n var contentTemplate = this._getTemplate(this._templateManager.anonymousTemplateName);\r\n if (contentTemplate) {\r\n contentTemplate.render({\r\n container: $element.empty(),\r\n noModel: true\r\n })\r\n }\r\n this._setRenderedState($element);\r\n _events_engine.default.trigger($element, \"dxcontentrendered\");\r\n this._actions.onRendered([renderedArgs]);\r\n this._isRendered = true;\r\n return this._animate()\r\n },\r\n _setLoadingState: function() {\r\n var $element = this.$element();\r\n var hasCustomLoadIndicator = !!$element.find(\".\" + VISIBLE_WHILE_PENDING_RENDERING_CLASS).length;\r\n $element.addClass(PENDING_RENDERING_CLASS);\r\n if (!hasCustomLoadIndicator) {\r\n $element.children().addClass(INVISIBLE_WHILE_PENDING_RENDERING_CLASS)\r\n }\r\n if (this.option(\"showLoadIndicator\")) {\r\n this._showLoadIndicator($element)\r\n }\r\n },\r\n _showLoadIndicator: function($container) {\r\n this._$loadIndicator = new _load_indicator.default((0, _renderer.default)(\"
\"), {\r\n visible: true\r\n }).$element().addClass(DEFER_DEFER_RENDERING_LOAD_INDICATOR);\r\n (0, _renderer.default)(\"
\").addClass(LOADINDICATOR_CONTAINER_CLASS).addClass(DEFER_RENDERING_LOADINDICATOR_CONTAINER_CLASS).append(this._$loadIndicator).appendTo($container)\r\n },\r\n _setRenderedState: function() {\r\n var $element = this.$element();\r\n if (this._$loadIndicator) {\r\n this._$loadIndicator.remove()\r\n }\r\n $element.removeClass(PENDING_RENDERING_CLASS);\r\n $element.removeClass(PENDING_RENDERING_ACTIVE_CLASS);\r\n (0, _visibility_change.triggerShownEvent)($element.children())\r\n },\r\n _optionChanged: function(args) {\r\n var value = args.value;\r\n var previousValue = args.previousValue;\r\n switch (args.name) {\r\n case \"renderWhen\":\r\n if (false === previousValue && true === value) {\r\n this._renderOrAnimate()\r\n } else {\r\n if (true === previousValue && false === value) {\r\n this.transitionExecutor.stop();\r\n this._setLoadingState()\r\n }\r\n }\r\n break;\r\n case \"showLoadIndicator\":\r\n case \"onRendered\":\r\n case \"onShown\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _renderOrAnimate: function() {\r\n var result;\r\n if (this._isRendered) {\r\n this._setRenderedState();\r\n result = this._animate()\r\n } else {\r\n result = this._renderDeferredContent()\r\n }\r\n return result\r\n },\r\n renderContent: function() {\r\n return this._renderOrAnimate()\r\n },\r\n _abortRenderTask: function() {\r\n if (this._renderTask) {\r\n this._renderTask.abort();\r\n this._renderTask = void 0\r\n }\r\n },\r\n _dispose: function() {\r\n this.transitionExecutor.stop(true);\r\n this._abortRenderTask();\r\n this._actions = void 0;\r\n this._$initialContent = void 0;\r\n this.callBase()\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxDeferRendering\", DeferRendering);\r\nvar _default = DeferRendering;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_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 _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\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 DATE_COMPONENTS = [\"year\", \"day\", \"month\", \"day\"];\r\nvar TIME_COMPONENTS = [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"];\r\nvar ONE_MINUTE = 6e4;\r\nvar ONE_DAY = 60 * ONE_MINUTE * 24;\r\nvar ONE_YEAR = 365 * ONE_DAY;\r\nvar getStringFormat = function(format) {\r\n var formatType = _typeof(format);\r\n if (\"string\" === formatType) {\r\n return \"format\"\r\n }\r\n if (\"object\" === formatType && void 0 !== format.type) {\r\n return format.type\r\n }\r\n return null\r\n};\r\nvar dateUtils = {\r\n SUPPORTED_FORMATS: [\"date\", \"time\", \"datetime\"],\r\n ONE_MINUTE: ONE_MINUTE,\r\n ONE_DAY: ONE_DAY,\r\n ONE_YEAR: ONE_YEAR,\r\n MIN_DATEVIEW_DEFAULT_DATE: new Date(1900, 0, 1),\r\n MAX_DATEVIEW_DEFAULT_DATE: function() {\r\n var newDate = new Date;\r\n return new Date(newDate.getFullYear() + 50, newDate.getMonth(), newDate.getDate(), 23, 59, 59)\r\n }(),\r\n FORMATS_INFO: {\r\n date: {\r\n getStandardPattern: function() {\r\n return \"yyyy-MM-dd\"\r\n },\r\n components: DATE_COMPONENTS\r\n },\r\n time: {\r\n getStandardPattern: function() {\r\n return \"HH:mm\"\r\n },\r\n components: TIME_COMPONENTS\r\n },\r\n datetime: {\r\n getStandardPattern: function() {\r\n var standardPattern;\r\n ! function() {\r\n var androidFormatPattern = \"yyyy-MM-ddTHH:mmZ\";\r\n var testDateString = \"2000-01-01T01:01Z\";\r\n var $input = (0, _renderer.default)(\"\").attr(\"type\", \"datetime\");\r\n $input.val(testDateString);\r\n if ($input.val()) {\r\n standardPattern = androidFormatPattern\r\n }\r\n }();\r\n if (!standardPattern) {\r\n standardPattern = \"yyyy-MM-ddTHH:mm:ssZ\"\r\n }\r\n dateUtils.FORMATS_INFO.datetime.getStandardPattern = function() {\r\n return standardPattern\r\n };\r\n return standardPattern\r\n },\r\n components: [].concat(DATE_COMPONENTS, TIME_COMPONENTS)\r\n },\r\n \"datetime-local\": {\r\n getStandardPattern: function() {\r\n return \"yyyy-MM-ddTHH:mm:ss\"\r\n },\r\n components: [].concat(DATE_COMPONENTS, [\"hours\", \"minutes\", \"seconds\"])\r\n }\r\n },\r\n FORMATS_MAP: {\r\n date: \"shortdate\",\r\n time: \"shorttime\",\r\n datetime: \"shortdateshorttime\"\r\n },\r\n SUBMIT_FORMATS_MAP: {\r\n date: \"date\",\r\n time: \"time\",\r\n datetime: \"datetime-local\"\r\n },\r\n toStandardDateFormat: function(date, type) {\r\n var pattern = dateUtils.FORMATS_INFO[type].getStandardPattern();\r\n return _date_serialization.default.serializeDate(date, pattern)\r\n },\r\n fromStandardDateFormat: function(text) {\r\n var date = _date_serialization.default.dateParser(text);\r\n return (0, _type.isDate)(date) ? date : void 0\r\n },\r\n getMaxMonthDay: function(year, month) {\r\n return new Date(year, month + 1, 0).getDate()\r\n },\r\n mergeDates: function(oldValue, newValue, format) {\r\n if (!newValue) {\r\n return newValue || null\r\n }\r\n if (!oldValue || isNaN(oldValue.getTime())) {\r\n var now = new Date(null);\r\n oldValue = new Date(now.getFullYear(), now.getMonth(), now.getDate())\r\n }\r\n var result = new Date(oldValue.valueOf());\r\n var formatInfo = dateUtils.FORMATS_INFO[format];\r\n (0, _iterator.each)(formatInfo.components, function() {\r\n var componentInfo = dateUtils.DATE_COMPONENTS_INFO[this];\r\n result[componentInfo.setter](newValue[componentInfo.getter]())\r\n });\r\n return result\r\n },\r\n getLongestCaptionIndex: function(captionArray) {\r\n var longestIndex = 0;\r\n var longestCaptionLength = 0;\r\n var i;\r\n for (i = 0; i < captionArray.length; ++i) {\r\n if (captionArray[i].length > longestCaptionLength) {\r\n longestIndex = i;\r\n longestCaptionLength = captionArray[i].length\r\n }\r\n }\r\n return longestIndex\r\n },\r\n formatUsesMonthName: function(format) {\r\n return _date.default.formatUsesMonthName(format)\r\n },\r\n formatUsesDayName: function(format) {\r\n return _date.default.formatUsesDayName(format)\r\n },\r\n getLongestDate: function(format, monthNames, dayNames) {\r\n var stringFormat = getStringFormat(format);\r\n var month = 9;\r\n if (!stringFormat || dateUtils.formatUsesMonthName(stringFormat)) {\r\n month = dateUtils.getLongestCaptionIndex(monthNames)\r\n }\r\n var longestDate = new Date(1888, month, 21, 23, 59, 59, 999);\r\n if (!stringFormat || dateUtils.formatUsesDayName(stringFormat)) {\r\n var date = longestDate.getDate() - longestDate.getDay() + dateUtils.getLongestCaptionIndex(dayNames);\r\n longestDate.setDate(date)\r\n }\r\n return longestDate\r\n },\r\n normalizeTime: function(date) {\r\n date.setSeconds(0);\r\n date.setMilliseconds(0)\r\n }\r\n};\r\ndateUtils.DATE_COMPONENTS_INFO = {\r\n year: {\r\n getter: \"getFullYear\",\r\n setter: \"setFullYear\",\r\n formatter: function(value, date) {\r\n var formatDate = new Date(date.getTime());\r\n formatDate.setFullYear(value);\r\n return _date.default.format(formatDate, \"yyyy\")\r\n },\r\n startValue: void 0,\r\n endValue: void 0\r\n },\r\n day: {\r\n getter: \"getDate\",\r\n setter: \"setDate\",\r\n formatter: function(value, date) {\r\n var formatDate = new Date(date.getTime());\r\n formatDate.setDate(value);\r\n return _date.default.format(formatDate, \"d\")\r\n },\r\n startValue: 1,\r\n endValue: void 0\r\n },\r\n month: {\r\n getter: \"getMonth\",\r\n setter: \"setMonth\",\r\n formatter: function(value) {\r\n return _date.default.getMonthNames()[value]\r\n },\r\n startValue: 0,\r\n endValue: 11\r\n },\r\n hours: {\r\n getter: \"getHours\",\r\n setter: \"setHours\",\r\n formatter: function(value) {\r\n return _date.default.format(new Date(0, 0, 0, value), \"hour\")\r\n },\r\n startValue: 0,\r\n endValue: 23\r\n },\r\n minutes: {\r\n getter: \"getMinutes\",\r\n setter: \"setMinutes\",\r\n formatter: function(value) {\r\n return _date.default.format(new Date(0, 0, 0, 0, value), \"minute\")\r\n },\r\n startValue: 0,\r\n endValue: 59\r\n },\r\n seconds: {\r\n getter: \"getSeconds\",\r\n setter: \"setSeconds\",\r\n formatter: function(value) {\r\n return _date.default.format(new Date(0, 0, 0, 0, 0, value), \"second\")\r\n },\r\n startValue: 0,\r\n endValue: 59\r\n },\r\n milliseconds: {\r\n getter: \"getMilliseconds\",\r\n setter: \"setMilliseconds\",\r\n formatter: function(value) {\r\n return _date.default.format(new Date(0, 0, 0, 0, 0, 0, value), \"millisecond\")\r\n },\r\n startValue: 0,\r\n endValue: 999\r\n }\r\n};\r\nvar _default = dateUtils;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/date_box.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(\"./date_box/ui.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 _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/date_box/ui.date_box.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 _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\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 DateBoxStrategy = _class.default.inherit({\r\n ctor: function(dateBox) {\r\n this.dateBox = dateBox\r\n },\r\n widgetOption: function() {\r\n return this._widget && this._widget.option.apply(this._widget, arguments)\r\n },\r\n _renderWidget: function(element) {\r\n element = element || (0, _renderer.default)(\"
\");\r\n this._widget = this._createWidget(element);\r\n this._widget.$element().appendTo(this._getWidgetContainer())\r\n },\r\n _createWidget: function(element) {\r\n var widgetName = this._getWidgetName();\r\n var widgetOptions = this._getWidgetOptions();\r\n return this.dateBox._createComponent(element, widgetName, widgetOptions)\r\n },\r\n _getWidgetOptions: abstract,\r\n _getWidgetName: abstract,\r\n getDefaultOptions: function() {\r\n return {\r\n mode: \"text\"\r\n }\r\n },\r\n getDisplayFormat: abstract,\r\n supportedKeys: _common.noop,\r\n getKeyboardListener: _common.noop,\r\n customizeButtons: _common.noop,\r\n getParsedText: function(text, format) {\r\n var value = _date.default.parse(text, format);\r\n return value ? value : _date.default.parse(text)\r\n },\r\n renderInputMinMax: _common.noop,\r\n renderOpenedState: function() {\r\n this._updateValue()\r\n },\r\n popupConfig: abstract,\r\n _dimensionChanged: function() {\r\n var _this$_getPopup;\r\n null === (_this$_getPopup = this._getPopup()) || void 0 === _this$_getPopup ? void 0 : _this$_getPopup.repaint()\r\n },\r\n renderPopupContent: function() {\r\n var popup = this._getPopup();\r\n this._renderWidget();\r\n var $popupContent = popup.$content().parent();\r\n _events_engine.default.off($popupContent, \"mousedown\");\r\n _events_engine.default.on($popupContent, \"mousedown\", this._preventFocusOnPopup.bind(this))\r\n },\r\n getFirstPopupElement: _common.noop,\r\n getLastPopupElement: _common.noop,\r\n _preventFocusOnPopup: function(e) {\r\n e.preventDefault()\r\n },\r\n _getWidgetContainer: function() {\r\n return this._getPopup().$content()\r\n },\r\n _getPopup: function() {\r\n return this.dateBox._popup\r\n },\r\n popupShowingHandler: _common.noop,\r\n popupHiddenHandler: _common.noop,\r\n _updateValue: function() {\r\n this._widget && this._widget.option(\"value\", this.dateBoxValue())\r\n },\r\n useCurrentDateByDefault: _common.noop,\r\n getDefaultDate: function() {\r\n return new Date\r\n },\r\n textChangedHandler: _common.noop,\r\n renderValue: function() {\r\n if (this.dateBox.option(\"opened\")) {\r\n this._updateValue()\r\n }\r\n },\r\n getValue: function() {\r\n return this._widget.option(\"value\")\r\n },\r\n isAdaptivityChanged: function() {\r\n return false\r\n },\r\n dispose: function() {\r\n var popup = this._getPopup();\r\n if (popup) {\r\n popup.$content().empty()\r\n }\r\n },\r\n dateBoxValue: function() {\r\n if (arguments.length) {\r\n return this.dateBox.dateValue.apply(this.dateBox, arguments)\r\n } else {\r\n return this.dateBox.dateOption.apply(this.dateBox, [\"value\"])\r\n }\r\n }\r\n});\r\nvar _default = DateBoxStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\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/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/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/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/date_box/ui.date_box.strategy.calendar.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 _calendar = _interopRequireDefault(require(\"../calendar\"));\r\nvar _uiDate_box = _interopRequireDefault(require(\"./ui.date_box.strategy\"));\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\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 CalendarStrategy = _uiDate_box.default.inherit({\r\n NAME: \"Calendar\",\r\n supportedKeys: function() {\r\n var homeEndHandler = function(e) {\r\n if (this.option(\"opened\")) {\r\n e.preventDefault();\r\n return true\r\n }\r\n return false\r\n };\r\n return {\r\n rightArrow: function() {\r\n if (this.option(\"opened\")) {\r\n return true\r\n }\r\n },\r\n leftArrow: function() {\r\n if (this.option(\"opened\")) {\r\n return true\r\n }\r\n },\r\n enter: function(e) {\r\n if (this.dateBox.option(\"opened\")) {\r\n e.preventDefault();\r\n if (this._widget.option(\"zoomLevel\") === this._widget.option(\"maxZoomLevel\")) {\r\n var viewValue = this._getContouredValue();\r\n var lastActionElement = this._lastActionElement;\r\n if (viewValue && \"calendar\" === lastActionElement) {\r\n this.dateBoxValue(viewValue, e)\r\n }\r\n this.dateBox.close();\r\n this.dateBox._valueChangeEventHandler(e)\r\n } else {\r\n return true\r\n }\r\n } else {\r\n this.dateBox._valueChangeEventHandler(e)\r\n }\r\n }.bind(this),\r\n home: homeEndHandler,\r\n end: homeEndHandler\r\n }\r\n },\r\n getDisplayFormat: function(displayFormat) {\r\n return displayFormat || \"shortdate\"\r\n },\r\n _getWidgetName: function() {\r\n return _calendar.default\r\n },\r\n _getContouredValue: function() {\r\n return this._widget._view.option(\"contouredDate\")\r\n },\r\n getKeyboardListener: function() {\r\n return this._widget\r\n },\r\n _getWidgetOptions: function() {\r\n var disabledDates = this.dateBox.option(\"disabledDates\");\r\n return (0, _extend.extend)(this.dateBox.option(\"calendarOptions\"), {\r\n value: this.dateBoxValue() || null,\r\n dateSerializationFormat: null,\r\n min: this.dateBox.dateOption(\"min\"),\r\n max: this.dateBox.dateOption(\"max\"),\r\n onValueChanged: this._valueChangedHandler.bind(this),\r\n onCellClick: this._cellClickHandler.bind(this),\r\n tabIndex: null,\r\n disabledDates: (0, _type.isFunction)(disabledDates) ? this._injectComponent(disabledDates.bind(this.dateBox)) : disabledDates,\r\n onContouredChanged: this._refreshActiveDescendant.bind(this),\r\n hasFocus: function() {\r\n return true\r\n }\r\n })\r\n },\r\n _injectComponent: function(func) {\r\n var that = this;\r\n return function(params) {\r\n (0, _extend.extend)(params, {\r\n component: that.dateBox\r\n });\r\n return func(params)\r\n }\r\n },\r\n _refreshActiveDescendant: function(e) {\r\n this._lastActionElement = \"calendar\";\r\n this.dateBox.setAria(\"activedescendant\", e.actionValue)\r\n },\r\n popupConfig: function(_popupConfig) {\r\n var _this = this;\r\n var toolbarItems = _popupConfig.toolbarItems;\r\n var buttonsLocation = this.dateBox.option(\"buttonsLocation\");\r\n var position = [];\r\n if (\"default\" !== buttonsLocation) {\r\n position = (0, _common.splitPair)(buttonsLocation)\r\n } else {\r\n position = [\"bottom\", \"center\"]\r\n }\r\n if (\"useButtons\" === this.dateBox.option(\"applyValueMode\") && this._isCalendarVisible()) {\r\n toolbarItems.unshift({\r\n widget: \"dxButton\",\r\n toolbar: position[0],\r\n location: \"after\" === position[1] ? \"before\" : position[1],\r\n options: {\r\n onInitialized: function(e) {\r\n e.component.registerKeyHandler(\"escape\", this._escapeHandler.bind(this))\r\n }.bind(this),\r\n onClick: function(args) {\r\n _this._widget._toTodayView(args)\r\n },\r\n text: _message.default.format(\"dxCalendar-todayButtonText\"),\r\n type: \"today\"\r\n }\r\n })\r\n }\r\n return (0, _extend.extend)(true, _popupConfig, {\r\n toolbarItems: toolbarItems,\r\n position: {\r\n collision: \"flipfit flip\"\r\n },\r\n width: \"auto\"\r\n })\r\n },\r\n _isCalendarVisible: function() {\r\n return (0, _type.isEmptyObject)(this.dateBox.option(\"calendarOptions\")) || false !== this.dateBox.option(\"calendarOptions.visible\")\r\n },\r\n _escapeHandler: function() {\r\n this.dateBox.close();\r\n this.dateBox.focus()\r\n },\r\n _valueChangedHandler: function(e) {\r\n var dateBox = this.dateBox;\r\n var value = e.value;\r\n var prevValue = e.previousValue;\r\n if (_date.default.sameDate(value, prevValue)) {\r\n return\r\n }\r\n if (\"instantly\" === dateBox.option(\"applyValueMode\")) {\r\n this.dateBoxValue(this.getValue(), e.event)\r\n }\r\n },\r\n _updateValue: function() {\r\n if (!this._widget) {\r\n return\r\n }\r\n this._widget.option(\"value\", this.dateBoxValue())\r\n },\r\n textChangedHandler: function() {\r\n this._lastActionElement = \"input\";\r\n if (this.dateBox.option(\"opened\") && this._widget) {\r\n this._updateValue(true)\r\n }\r\n },\r\n _cellClickHandler: function(e) {\r\n var dateBox = this.dateBox;\r\n if (\"instantly\" === dateBox.option(\"applyValueMode\")) {\r\n dateBox.option(\"opened\", false);\r\n this.dateBoxValue(this.getValue(), e.event)\r\n }\r\n }\r\n});\r\nvar _default = CalendarStrategy;\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 (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"],"sourceRoot":""}