{"version":3,"sources":["../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline.js","../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.indicator.js","../node_modules/devextreme/ui/scheduler/utils.js","../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.js","../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.js","../node_modules/devextreme/ui/scheduler/workspaces/cache.js","../node_modules/devextreme/ui/scheduler/workspaces/utils/base.js","../node_modules/devextreme/ui/scheduler/workspaces/utils/month.js","../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline_week.js","../node_modules/devextreme/ui/scheduler/workspaces/utils/week.js","../node_modules/devextreme/ui/scheduler/workspaces/utils/work_week.js","../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_vertical.js","../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_week.js","../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.agenda.js","../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.horizontal.js","../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.vertical.js","../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.virtual_scrolling.js","../node_modules/devextreme/ui/scheduler/workspaces/view_data_provider.js","../node_modules/devextreme/ui/scheduler/workspaces/virtual_selection_state.js","../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline_day.js","../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline_month.js","../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline_work_week.js","../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_day.js","../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_month.js","../node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_work_week.js","../node_modules/devextreme/ui/scheduler/utils.timeZone.js"],"names":["exports","default","_renderer","_interopRequireDefault","require","_common","_extend","_position","_component_registrator","_uiSchedulerWork_space","_date","_uiScheduler","_uiSchedulerCurrent_time_shader","_utils","obj","__esModule","_setPrototypeOf","o","p","Object","setPrototypeOf","__proto__","tableCreator","toMs","dateToMilliseconds","SchedulerTimeline","_SchedulerWorkSpace","subClass","superClass","apply","this","arguments","prototype","create","constructor","_proto","_init","call","$element","addClass","_$sidebarTable","_getCellFromNextRow","direction","isMultiSelection","_$focusedCell","_getDefaultGroupStrategy","_toggleGroupingDirectionClass","toggleClass","_isHorizontalGroupedWorkSpace","_getDefaultOptions","extend","groupOrientation","_getRowCount","_getCellCount","_getCellCountInDay","option","getGroupTableWidth","outerWidth","_getTotalRowCount","groupCount","_getDateForHeaderText","index","newFirstViewDate","getDateWithoutTimezoneChange","_firstViewDate","_getDateByIndexCore","date","result","Date","dayIndex","Math","floor","setTime","getTime","_calculateCellIndex","_getInterval","_getHiddenInterval","_getDateByIndex","isTimezoneChangeInDate","setDate","getDate","_getFormat","_needApplyLastGroupCellClass","_calculateHiddenInterval","rowIndex","cellIndex","_getMillisecondsOffset","_createWorkSpaceElements","_createWorkSpaceScrollableElements","_getWorkSpaceHeight","getBoundingRect","_$dateTable","get","height","_dateTableScrollableConfig","config","timelineConfig","_needCreateCrossScrolling","_headerScrollableConfig","scrollByContent","_renderTimePanel","noop","_renderAllDayPanel","_getTableAllDay","_getDateHeaderTemplate","_toggleAllDayVisibility","_changeAllDayVisibility","supportAllDayRow","_getGroupHeaderContainer","_$thead","_insertAllDayRowsIntoDateTable","_createAllDayPanelElements","_renderDateHeader","$headerRow","_needRenderWeekHeader","firstViewDate","$cells","colspan","cellTemplate","i","_getWeekDuration","$th","text","_formatWeekdayAndDay","templateOptions","model","container","render","attr","push","_incrementDate","$row","append","before","_renderView","_setFirstViewDate","groupCellTemplates","_renderGroupHeader","_renderDateTable","_shader","_updateGroupTableHeight","appendTo","_sidebarScrollable","$content","_applyCellTemplates","_setHorizontalGroupHeaderCellsHeight","getIndicationCellCount","timeDiff","_getTimeDiff","_calculateDurationInCells","today","_getToday","_getIndicationFirstViewDate","differenceInDays","duration","getCellDuration","getHours","getIndicationWidth","isGroupedByDate","cellCount","integerPart","fractionPart","getCellWidth","_getGroupCount","_renderIndicator","rtlOffset","$container","$indicator","width","_createIndicator","css","offset","_isVerticalShader","_isCurrentTimeHeaderCell","headerIndex","isIndicationOnView","now","sameDate","startCellDate","endCellDate","setMilliseconds","getMilliseconds","dateInRange","_cleanView","empty","_visibilityChanged","visible","_setTableSizes","cellHeight","getCellHeight","minHeight","_getWorkSpaceMinHeight","find","length","workspaceContainerHeight","outerHeight","getHeaderPanelHeight","_makeGroupRows","groups","groupByDate","tableCreatorStrategy","VERTICAL","HORIZONTAL","makeGroupedTable","groupRowClass","_getGroupRowClass","groupHeaderRowClass","groupHeaderClass","_getGroupHeaderClass","bind","groupHeaderContentClass","_getGroupHeaderContentClass","_ensureGroupHeaderCellsHeight","minCellHeight","_calculateMinCellHeight","dateTable","_getDateTable","dateTableRowSelector","_getDateTableRowClass","_getCellCoordinatesByIndex","_getCellByCoordinates","cellCoordinates","groupIndex","indexes","_groupedStrategy","prepareCellIndexes","eq","_getWorkSpaceWidth","trimTime","_getIntervalBetween","currentDate","allDay","startDayHour","endDayHour","getStartViewDate","firstViewDateTime","hiddenInterval","timeZoneOffset","getTimezonesDifference","apptStart","fullInterval","fullDays","tailDuration","tailDelta","_getWeekendsCount","gapBeforeAppt","getAllDayContainer","getTimePanelWidth","getPositionShift","timeShift","positionShift","left","top","cellPosition","getVisibleBounds","isRtl","$scrollable","getScrollable","cellWidth","scrolledCellCount","getScrollableOuterWidth","getScrollableScrollLeft","visibleCellCount","totalCellCount","leftDate","rightDate","hours","minutes","getMinutes","right","getIntervalDuration","_supportCompactDropDownAppointments","getCellMinWidth","getWorkSpaceLeftOffset","scrollToTime","coordinates","_getScrollCoordinates","scrollable","getScrollableContainer","setTimeout","scrollBy","scrollLeft","_getRowCountWithAllDayRows","_default","module","_window","SchedulerWorkSpaceIndicator","_getTimeZoneCalculator","invoke","todayDate","timeZoneCalculator","createDate","path","endViewDate","getEndViewDate","isIndicationAvailable","hasWindow","isIndicatorVisible","_getEndViewDateTimeDiff","setFullYear","getFullYear","getMonth","_renderDateTimeIndication","_dateTableScrollable","getIndicationHeight","_getRtlOffset","groupedByDate","repeatCount","shiftIndicator","_setIndicationUpdateInterval","_clearIndicatorUpdateInterval","_indicatorInterval","setInterval","_refreshDateTimeIndication","clearInterval","maxWidth","difference","_getIndicatorDuration","getRoundedCellWidth","getIndicatorOffset","round","ceil","_dispose","_cleanDateTimeIndicator","clean","_isCurrentTime","_getTimeCellClass","startViewDate","_getTimeCellDate","cellClass","_getHeaderPanelCellClass","_dimensionChanged","remove","_cleanWorkSpace","_optionChanged","args","name","showCurrentTimeIndicator","indicatorTime","indicatorUpdateInterval","shadeUntilCurrentTime","KEYS","utils","dataAccessors","getAppointmentSettings","element","data","getAppointmentInfo","settings","info","_dom_adapter","_events_engine","_element_data","_element","_iterator","_message","_date2","_type","_index","_pointer","_ui","_click","_contextmenu","_drag","_ui2","_uiSchedulerWork_spaceGroupedStrategy","_uiSchedulerWork_spaceGroupedStrategy2","_appointmentDragBehavior","_constants","_widgetObserver","_translator","_uiScheduler2","_view_data_provider","_layout","_title","_layout2","_virtual_selection_state","_cache","_base","_excluded","_objectWithoutProperties","source","excluded","key","target","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","ownKeys","object","enumerableOnly","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","configurable","writable","_defineProperties","props","descriptor","abstract","ALL_DAY_TABLE_CELL_CLASS","DATE_TABLE_CELL_CLASS","SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME","addNamespace","down","SCHEDULER_CELL_DXDRAGENTER_EVENT_NAME","enter","SCHEDULER_CELL_DXDROP_EVENT_NAME","drop","SCHEDULER_CELL_DXDRAGLEAVE_EVENT_NAME","leave","SCHEDULER_CELL_DXCLICK_EVENT_NAME","SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME","SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME","up","SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME","move","DAY_MS","HOUR_MS","SCHEDULER_DRAG_AND_DROP_SELECTOR","concat","CELL_SELECTOR","ScrollSemaphore","counter","isFree","take","release","formatWeekday","getDayNames","getDay","_WidgetObserver","SchedulerWorkSpace","Constructor","protoProps","staticProps","_proto2","_supportedKeys","clickHandler","e","preventDefault","stopPropagation","_selectedCells","$itemElement","$cellElement","_showPopup","_cellClickAction","event","cellElement","cellData","getCellData","arrowPressHandler","cell","_moveToCell","shiftKey","space","downArrow","$cell","upArrow","rightArrow","$rightCell","_getCellFromNextColumn","leftArrow","$leftCell","_this$virtualScrollin","virtualScrollingDispatcher","dispose","_disposeRenovatedComponents","_isRTL","_getFocusedCell","_getAllFocusedCells","$currentCell","isDefined","parent","children","_checkForViewBounds","$item","$focusedCell","$nextCell","nextColumnDirection","isDirectionNext","previousColumnDirection","isRTL","isHorizontalGrouping","_getTotalCellCount","rowCellCount","lastIndexInRow","currentIndex","step","resultingSign","_isEdgeCell","_isGroupEndCell","nextIndex","edgeCellIndex","isNextCellGreaterThanEdge","isNextCellLessThanEdge","cellsInRow","endCell","startCell","_setSelectedAndFocusedCells","scrollToElement","updateViewData","isVirtualScrolling","$correctedCell","_correctCellForGroup","hasClass","_setSelectedCells","_setFocusedCell","_releaseFocusedCell","_this$_getCoordinates","_getCoordinatesByCell","columnIndex","isAllDayCell","_hasAllDayClass","virtualSelectionState","setFocusedCell","focusedCell","getFocusedCell","_isVerticalGroupedWorkSpace","_dom_getAllDayPanelCell","_dom_getDateCell","_toggleFocusedCellClass","$firstCell","_releaseSelectedCells","_setSelectedCellsInVirtualMode","_setSelectedCellsInStandardMode","$selectedCells","_toggleFocusClass","setAria","selectedCellData","getSelectedCellData","map","_ref","startDate","endDate","_selectionChangedAction","$previousCell","_$prevCell","orientation","$targetCells","_getCellsBetween","toArray","_this$_getCoordinates2","firstCell","setSelectedCells","_this$_getCoordinates3","_firstCell","_setSelectedCellsByCellData","getSelectedCells","isValidFocusedCell","cellGroupIndex","_getGroupIndexByCell","focusedCellGroupIndex","isDifferentTables","$first","$last","isAllDayTable","_getCells","firstIndex","lastIndex","buffer","slice","focusedGroupIndex","each","_","_this$_getCoordinates4","viewDataProvider","getGroupIndexByCell","isFocused","_focusTarget","_releaseSelectedAndFocusedCells","_focusInHandler","is","_isCellClick","_contextMenuHandled","_focusOutHandler","_this$virtualSelectio","releaseSelectedAndFocusedCells","intervalCount","firstDayOfWeek","hoursInterval","activeStateEnabled","hoverStateEnabled","showAllDayPanel","allDayExpanded","onCellClick","crossScrollingEnabled","dataCellTemplate","timeCellTemplate","resourceCellTemplate","dateCellTemplate","allowMultipleCellSelection","scrolling","mode","renovateRender","_removeAllDayElements","_initGrouping","repaint","_initGroupedStrategy","_toggleGroupByDateClass","_attachTablesEvents","headerPanelOffsetRecalculate","_updateScrollable","_createSelectionChangedAction","_createCellClickAction","_attachContextMenuEvent","_toggleWorkSpaceCountClass","_toggleFixedScrollableClass","_toggleHorizontalScrollClass","_isVirtualModeOn","_toggleGroupedClass","_toggleWorkSpaceWithOddCells","_headerSemaphore","_sideBarSemaphore","_dataTableSemaphore","_viewDataProvider","_virtualSelectionState","_activeStateUnit","_maxAllowedVerticalPosition","_maxAllowedPosition","_getElementClass","Strategy","_isWorkSpaceWithCount","_isWorkspaceWithOddCells","_getRealGroupOrientation","_getTimePanelClass","_getDateTableClass","_getDateTableCellClass","j","addAdditionalGroupCellClasses","_initWorkSpaceUnits","_$headerPanel","_$fixedContainer","FIXED_CONTAINER_CLASS","_$allDayContainer","_initAllDayPanelElements","isRenovatedRender","createRAllDayPanelElements","_$timePanel","_$groupTable","_allDayTitles","_allDayTables","_allDayPanels","_$allDayPanel","_$allDayTitle","$allDayTitle","format","_$allDayTable","_initDateTableScrollable","$dateTableScrollable","_createComponent","useKeyboard","bounceEnabled","updateManually","pushBackValue","_createCrossScrollingConfig","_this","scrollTo","scrollOffset","_headerScrollable","notifyObserver","_createWorkSpaceStaticElements","_createHeaderScrollable","_createSidebarScrollable","prepend","$headerScrollable","_this2","showScrollbar","useNative","onScroll","_this3","$timePanelScrollable","cache","clear","_attachTableClasses","_addTableClass","_attachHeaderTableClasses","$el","className","minWidth","getWorkSpaceMinWidth","last","_cleanAllowedPositions","allDayRowCount","_isShowAllDayPanel","_initMarkup","_initVirtualScrolling","_attachEvents","_setFocusOnCellByOption","renovatedRenderSupported","_render","renderRWorkspace","_renderGroupAllDayPanel","isGroupedAllDayPanel","generateRenderOptions","verticalGroupCount","horizontalGroupCount","allDayElements","options","rowCountInGroup","cellCountInGroupRow","cellDataGetters","_getCellData","startRowIndex","nonVirtualRowCount","renderState","rowCount","_this$virtualScrollin2","isGenerateNewViewData","update","renderRAllDayPanel","renderRTimeTable","renderRDateTable","updateRSelection","updateDimensions","viewData","renderRComponent","renovatedAllDayPanel","parentElement","componentClass","componentName","viewModel","component","getOwnPropertyNames","optionName","getPublicElement","isVerticalGrouping","selectedCells","_data$","_this4","cells","_getAllCells","_isGroupsSpecified","_getGroupIndexByResourceId","findCellPositionInMap","getCoordinatesByDate","resources","id","resourceTree","_getGroupIndexRecursively","_this5","currentKey","currentValue","reduce","prevIndex","_ref2","leafIndex","areValuesEqual","_getCalculatedFirstDayOfWeek","firstDayOfWeekOption","_firstDayOfWeek","firstDayOfWeekIndex","getFirstWeekDate","_getViewStartByOptions","_setStartDayHour","_getStartViewDate","diff","_getIntervalDuration","isDateInRange","_getHeaderDate","setHours","_attachClickEvent","that","pointerDownAction","_createAction","_pointerDownHandler","off","on","isMouseEvent","which","_this6","_createActionByOption","afterExecute","_cellClickHandler","$target","_hasFocusClass","_showAddAppointmentPopup","firstCellData","first","lastCellData","_createContextMenuAction","cellSelector","eventName","NAME","_contextMenuHandler","_contextMenuAction","_getDateHeaderContainer","cellTemplates","groupRows","_attachGroupCountAttr","elements","_detachGroupCountAttr","templates","template","groupedAttr","getGroupCountAttr","removeAttr","groupRowCount","count","headerPanelHeight","headerHeight","allDayPanelHeight","getAllDayTableHeight","paddingBottom","marginBottom","parseInt","_getCalculateHeaderCellRepeatCount","templateCallbacks","colSpan","_cellIndex","_templateIndex","_renderDateHeaderTemplate","templateIndex","panelCellIndex","_getHeaderText","HEADER_PANEL_CELL_CLASS","calculateHeaderCellRepeatCount","_renderTableBody","_getAllDayPanelCellClass","rowClass","_getAllDayCellData","_getDateByCellIndexes","_getGroupIndex","_getCellGroups","toggle","_this7","calculateTimeCellRepeatCount","_getTimePanelRowCount","getCellText","_getTimeCellDateCore","getCellDate","skipRound","_calculateDayDuration","TIME_PANEL_CELL_CLASS","timeCellDuration","cellCountInDay","insertAllDayRowsIntoDateTable","getTotalCellCount","includeAllDayPanelRows","getTotalRowCount","_prepareCellData","calculateEndDate","getGroupIndex","len","items","_getPathToLeaf","makeBranch","leaf","findLeafByIndex","_leaf","reverse","_this8","isPointerDown","itemSizeFunc","checkDropTarget","_isOutsideScrollable","_$currentTableTarget","removeDroppableCellClass","draggingElement","getDocument","removeClass","_getDateTables","add","_getAllDayTable","_interval","calculateCellIndex","delayCellTemplateRendering","makeTable","_this$virtualSelectio2","_hiddenInterval","_clean","_this$renovatedAllDay","_this$renovatedDateTa","_this$renovatedTimePa","renovatedDateTable","renovatedTimePanel","getWorkArea","getScrollableScrollTop","scrollTop","getGroupedScrollableScrollTop","scrollWidth","_container","getLeftOffset","getGroupedStrategy","patchedIndexes","_patchCellIndex","_getOffsetByCount","getVisibleDayDuration","startDayTime","days","_getDaysOfInterval","weekendsCount","_getGroupIndexes","appointmentResources","tree","_updateIndex","_getDroppableCell","_this9","_getCellPositionByIndex","inAllDayRow","_getCellPositionWithCache","_getCellPosition","setCellDataCache","position","_getDateTableBorder","_getDateTableBorderOffset","_getGroupHeaderCellsContent","_getGroupHeaderCells","findGlobalCellPosition","calculateCoordinatesByDataAndPosition","$dateTableScrollableElement","scrollableSize","window","getWindow","isTargetInAllDayPanel","closest","isOutsideHorizontalScrollable","pageX","scrollX","isOutsideVerticalScrollable","pageY","scrollY","JSON","stringify","set","setCellDataCacheAlias","appointment","geometry","aliasKey","keepOriginalHours","$focusedCells","_getMultipleCellsData","currentCell","_getCellDataInRenovatedView","_getVirtualRowOffset","verticalScrollingState","virtualItemSizeBefore","topVirtualRowsCount","_getHorizontalMax","getHorizontalMax","positionByMap","calculateCellPositionByView","shift","getTimeShift","horizontalHMax","Error","hMax","vMax","getVerticalMax","getCellIndexByDate","_getOffsetByAllDayPanel","_getGroupTop","timeInterval","dateTimeStamp","isAllDay","currentDayStart","cellDuration","currentDayEndHour","timeZoneDifference","currentDateTime","currentDayStartTime","_isSkippedData","getCoordinatesByDateInGroup","_this10","getDroppableCellIndex","$droppableCell","getDataByDroppableCell","getDateRange","getEndViewDateByEndDayHour","_this11","startIndex","_this12","useCache","callbackResult","getAllDayHeight","getAllDayOffset","getMaxAllowedPosition","maxPosition","getMaxAllowedVerticalPosition","getMaxAllowedVerticalPositionVirtual","getMaxAllowedVerticalPositionStandard","_this13","row","_this14","getMaxPosition","getLasGroupCellPosition","getFixedContainer","getCellIndexByCoordinates","leftOffset","topIndex","leftIndex","dateOfLastViewCell","getDateOfLastViewCell","endDateOfLastViewCell","calculateEndViewDate","_adjustEndViewDateByDaylightDiff","endTime","dateTimeFromDecimal","daylightDiff","getDaylightOffsetInMs","getGroupBounds","getGroupBoundsOffset","startOffset","needRecalculateResizableArea","getCellDataByCoordinates","_this15","bottom","updateScrollPosition","scheduler","newDate","needUpdateScrollPosition","_this16","_getCellsInViewport","time","trimmedTime","currentResult","_this16$getCellData","cellStartDate","cellEndDate","cellStartTime","cellEndTime","totalColumnCount","scrollableScrollTop","scrollableScrollLeft","fullScrolledRowCount","scrolledRowCount","fullScrolledColumnCount","scrolledColumnCount","columnCount","getGroupWidth","currentPosition","_isValidScrollDate","throwWarning","isScrollToAllDay","scrollableHeight","scrollableWidth","xShift","yShift","min","max","log","getDistanceBetweenCells","endIndex","needApplyCollectorOffset","initDragBehavior","dragBehavior","_createDragBehavior","getItemData","itemElement","appointments","_getItemData","getItemSettings","APPOINTMENT_SETTINGS_KEY","_createDragBehaviorBase","dragElement","itemData","_this17","isSetCursorOffset","initialPosition","restOptions","addTo","dragTemplate","onDragStart","canceled","cancel","_appointments","disabled","isCompact","updateDragSource","_createDragAppointment","locate","itemSettings","resetPosition","onDragEnd","_dragElement","cursorOffset","$dragElement","x","y","appointmentIndex","virtual","_renderItem","_isApplyCompactAppointmentOffset","_formatWeekday","updateAppointments","_this$dragBehavior","GroupedStrategy","workSpace","_workSpace","getLastGroupCellClass","getFirstGroupCellClass","Cache","Map","callback","has","size","getViewStartByOptions","_startDate","validStartViewDate","setMonth","_week","SchedulerTimelineWeek","_SchedulerTimeline","_getHeaderPanelCellWidth","isDataOnWeekend","getWeekendsCount","getFirstViewDate","getFirstDayOfWeek","day","viewStart","normalizeDateByWeek","_SchedulerWorkSpaceIn","SchedulerWorkspaceVertical","firstColumn","firstRow","lastColumn","lastRow","lastCellGroup","indexesDifference","newFirstIndex","newLastIndex","arr","column","SchedulerWorkSpaceWeek","_SchedulerWorkSpaceVe","resultDate","SchedulerAgenda","agendaDuration","rowHeight","noDataText","_recalculateAgenda","_rows","_initGroupTable","_renderFocusState","_renderFocusTarget","_cleanFocusState","done","rows","_rowsIsEmpty","_renderNoData","_setGroupHeaderCellsHeight","_$noDataContainer","html","getAttribute","_removeEmptyRows","_getGroupRowHeight","groupRow","some","getGroupHeaderContentClass","table","makeGroupedTableFromJSON","cellTag","groupTableClass","groupCellClass","groupCellCustomContent","cellText","createElement","contentWrapper","appendChild","color","textContent","_cleanCellDataCache","_prepareCellTemplateOptions","groupsOpt","resourceValue","resourceIndex","resourceName","cellTemplateOpt","_$rows","fillTableBody","rowSize","cellDateNumber","cellDayName","$td","_getRowHeight","getStartDate","_setLastRowClass","_getTimePanelStartDate","current","baseHeight","getAgendaVerticalStepHeight","bounds","startDateHour","startDateMinutes","isUpdateNeeded","_uiSchedulerWork_spaceGrouped","_GroupedStrategy","HorizontalGroupedStrategy","inAllDay","groupByDay","applyUnconditionally","_addLastGroupCellClass","_addFirstGroupCellClass","startCellIndex","endOffset","_getIndicatorOffset","horizontalOffset","_calculateGroupByDateOffset","_calculateOffset","getShaderOffset","getShaderTopOffset","getShaderMaxHeight","getShaderHeight","getShaderWidth","VerticalGroupedStrategy","maxAllowedPosition","workspace","getRowCountInGroup","workspaceContainerWidth","dayHeight","topOffset","bottomOffset","_groupBoundsOffset","tableOffset","verticalOffset","_$container","_inheritsLoose","_createClass","DOCUMENT_SCROLL_EVENT_NAMESPACE","scrollingTypes","DefaultScrollingType","VirtualScrollingDispatcher","_workspace","_rowHeight","_cellWidth","Renderer","_createVirtualScrolling","_attachScrollableEvents","timeToScroll","scrollInCell","_onScrollHandler","document","verticalScrollingAllowed","verticalVirtualScrolling","VerticalVirtualScrolling","viewportHeight","horizontalScrollingAllowed","horizontalVirtualScrolling","HorizontalVirtualScrolling","viewportWidth","_attachScrollableScroll","_attachWindowScroll","currentOnScroll","_process","minScrollOffset","scrollPosition","_this$verticalVirtual","_this$horizontalVirtu","updateState","renderer","updateRender","_this$verticalVirtual2","needUpdateVertical","reinitState","_this$horizontalVirtu2","needUpdateHorizontal","_renderGrid","_verticalVirtualScrolling","_horizontalVirtualScrolling","innerHeight","innerWidth","virtualItemCountBefore","_this$verticalVirtual3","_this$horizontalVirtu3","vertical","state","horizontal","scrollingState","_this$verticalVirtual4","_this$horizontalVirtu4","verticalRenderState","getRenderState","horizontalRenderState","scrollingType","VirtualScrollingBase","_state","defaultState","_viewportSize","viewportSize","_itemSize","itemSize","_itemSizeChanged","needUpdateState","_this$state","prevPosition","isFirstInitialization","maxScrollPosition","currentItemsCount","itemsCount","isStartIndexChanged","abs","outlineCount","_correctPosition","itemsInfoBefore","_calcItemInfoBefore","itemsDeltaBefore","_calcItemDeltaBefore","_this$_calcItemInfoAf","_calcItemInfoAfter","outlineCountAfter","virtualItemCountAfter","itemCountWithAfter","outlineCountBefore","itemCount","itemCountAfter","_updateStateCore","itemInfoBefore","getTotalItemCount","pageSize","prevVirtualItemSizeBefore","prevVirtualItemSizeAfter","virtualItemSizeAfter","prevOutlineSizeBefore","outlineSizeBefore","prevOutlineSizeAfter","outlineSizeAfter","isAppend","isPrepend","_updateStateVirtualItemSizes","_VirtualScrollingBase","_proto3","topVirtualRowHeight","bottomVirtualRowHeight","_VirtualScrollingBase2","_proto4","leftVirtualCellWidth","rightVirtualCellWidth","_renderAppointmentTimeout","_proto5","getRenderTimeout","_renderAppointments","renderTimeout","clearTimeout","_toConsumableArray","Array","isArray","_arrayLikeToArray","_arrayWithoutHoles","iter","Symbol","iterator","from","_iterableToArray","minLen","n","toString","test","_unsupportedIterableToArray","TypeError","_nonIterableSpread","arr2","ViewDataGenerator","_getCompleteViewDataMap","viewDataMap","allDayPanelData","_generateAllDayPanelData","viewCellsData","_generateViewCellsData","_generateViewDataMap","completeViewDataMap","correctedStartRowIndex","cellsRow","_getViewDataFromMap","groupedData","previousGroupIndex","previousGroupedData","cellDataRow","isAllDayRow","currentGroupIndex","allDayPanel","isVirtual","renderRowCount","rowOffset","rowIndexInGroup","_generateCellsRow","_loop","cellDataValue","getter","isFirstGroupCell","_isFirstGroupCell","isLastGroupCell","_isLastGroupCell","_getKeyByRowAndColumn","columnsNumber","columnsInGroup","columnIndexInCurrentGroup","generateGroupedDataMap","previousOptions","previousGroupedDataMap","previousRowIndex","currentRowIndex","singleGroupRowCount","singleGroupColumnCount","ViewDataProvider","_viewDataGenerator","_viewData","_completeViewDataMap","_completeGroupedViewDataMap","_viewDataMap","_groupedDataMap","viewDataGenerator","renderOptions","groupedDataMap","getGroupStartDate","getGroupData","getGroupEndDate","lastRowIndex","lastCellIndex","findGroupCellStartDate","findAllDayGroupCellStartDate","_lastCell","lastCell","groupStartDate","getCellsGroup","getCellsByGroupIndexAndAllDay","rowsPerGroup","isShowAllDayPanel","firstRowInGroup","correctedFirstRow","correctedLastRow","_ref3","startTime","isStartTimeInCell","getGroupIndices","_ref4","_getLastGroupRow","group","getLasGroupCellIndex","item","isGroupIntersectDateInterval","isVerticalGroupOrientation","currentRow","currentStartDate","currentEndDate","currentAllDay","_compareDatesAndAllDay","VirtualSelectionState","_focusedCell","_firstSelectedCell","_getColumnIndexByCellData","_getRowIndexByColumnAndData","lastCellCoordinates","firstCellCoordinates","lastColumnIndex","isLastCellAllDay","firstStartDate","firstGroupIndex","lastStartDate","filteredCells","filteredRow","_filterCellsByDate","sort","secondCell","releaseSelectedCells","releaseFocusedCell","nextFocusedCellData","nextGroupIndex","nextAllDay","_firstRow$columnIndex","currentCellData","firstDate","lastDate","firstTime","lastTime","SchedulerTimelineDay","_month","SchedulerTimelineMonth","getFirstMonthDate","startDateCopy","_work_week","SchedulerTimelineWorkWeek","_SchedulerTimelineWee","_len","_key","weekendCount","SchedulerWorkSpaceDay","SchedulerWorkSpaceMonth","averageWidth","firstMonthDate","_minVisibleDate","_maxVisibleDate","_getCellText","_getDate","_isFirstDayOfMonth","_formatMonthAndDay","getMonthNames","join","week","lastRowInDay","_isCurrentDate","_isOtherMonth","cellDate","getCellCountToLastViewDate","firstDateTime","lastDateTime","dayDurationInMs","calculatedTopOffset","dayIndexes","weekCounter","SchedulerWorkSpaceWorkWeek","_SchedulerWorkSpaceWe","cellsInGroup","_dateAdapter","_slicedToArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","next","err","return","_iterableToArrayLimit","_nonIterableRest","createUTCDate","UTC","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getTimezoneOffsetChangeInMinutes","updatedStartDate","updatedEndDate","getDaylightOffset","getTimezoneOffset","calculateTimezoneByValue","timezone","dateUtc","getTimeZoneOffsetById","_getDaylightOffsetByTimezone","timeZone","startDayDate","endDayDate","hasDSTInLocalTimeZone","_getExtremeDates2","getExtremeDates","isEqualLocalTimeZoneByDeclaration","timeZoneName","year","getOffset","getDateAndMoveHourBack","dateStamp","configTuple","getTimeZoneDeclarationTuple","_configTuple","summerTime","winterTime","localSummerOffset","localWinterOffset","nowDate","getTimezoneOffsetChangeInMs","getCorrectedDateByDaylightOffsets","convertedOriginalStartDate","convertedDate","startDateTimezone","isSameAppointmentDates","correctRecurrenceExceptionByTimezone","exception","exceptionByStartDate","startDateTimeZone","isBackConversion","timezoneOffset","getClientTimezoneOffset","createUTCDateWithLocalOffset","getSeconds","createDateFromUTCWithLocalOffset","timezoneOffsetBeforeInMin","addTime","subtractMinutes","clonedDate","isEqualLocalTimeZone","Intl","localTimeZoneName","DateTimeFormat","resolvedOptions","getTimeZones","dateInUTC","getDisplayedTimeZones"],"mappings":"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","file":"static/js/main~86721f69.bc77c61d.chunk.js","sourcesContent":["/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.timeline.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiSchedulerWork_space = _interopRequireDefault(require(\"./ui.scheduler.work_space.indicator\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"../ui.scheduler.table_creator\"));\r\nvar _uiSchedulerCurrent_time_shader = _interopRequireDefault(require(\"../shaders/ui.scheduler.current_time_shader.horizontal\"));\r\nvar _utils = _interopRequireDefault(require(\"../utils.timeZone\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar tableCreator = _uiScheduler.default.tableCreator;\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline\";\r\nvar GROUP_TABLE_CLASS = \"dx-scheduler-group-table\";\r\nvar HORIZONTAL_GROUPED_WORKSPACE_CLASS = \"dx-scheduler-work-space-horizontal-grouped\";\r\nvar HEADER_PANEL_CELL_CLASS = \"dx-scheduler-header-panel-cell\";\r\nvar HEADER_PANEL_WEEK_CELL_CLASS = \"dx-scheduler-header-panel-week-cell\";\r\nvar HEADER_ROW_CLASS = \"dx-scheduler-header-row\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar DATE_TABLE_CELL_BORDER = 1;\r\nvar DATE_TABLE_HEADER_MARGIN = 10;\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar SchedulerTimeline = function(_SchedulerWorkSpace) {\r\n _inheritsLoose(SchedulerTimeline, _SchedulerWorkSpace);\r\n\r\n function SchedulerTimeline() {\r\n return _SchedulerWorkSpace.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerTimeline.prototype;\r\n _proto._init = function() {\r\n _SchedulerWorkSpace.prototype._init.call(this);\r\n this.$element().addClass(TIMELINE_CLASS);\r\n this._$sidebarTable = (0, _renderer.default)(\"
\").addClass(GROUP_TABLE_CLASS)\r\n };\r\n _proto._getCellFromNextRow = function(direction, isMultiSelection) {\r\n if (!isMultiSelection) {\r\n return _SchedulerWorkSpace.prototype._getCellFromNextRow.call(this, direction, isMultiSelection)\r\n }\r\n return this._$focusedCell\r\n };\r\n _proto._getDefaultGroupStrategy = function() {\r\n return \"vertical\"\r\n };\r\n _proto._toggleGroupingDirectionClass = function() {\r\n this.$element().toggleClass(HORIZONTAL_GROUPED_WORKSPACE_CLASS, this._isHorizontalGroupedWorkSpace())\r\n };\r\n _proto._getDefaultOptions = function() {\r\n return (0, _extend.extend)(_SchedulerWorkSpace.prototype._getDefaultOptions.call(this), {\r\n groupOrientation: \"vertical\"\r\n })\r\n };\r\n _proto._getRowCount = function() {\r\n return 1\r\n };\r\n _proto._getCellCount = function() {\r\n return this._getCellCountInDay() * this.option(\"intervalCount\")\r\n };\r\n _proto.getGroupTableWidth = function() {\r\n return this._$sidebarTable ? this._$sidebarTable.outerWidth() : 0\r\n };\r\n _proto._getTotalRowCount = function(groupCount) {\r\n if (this._isHorizontalGroupedWorkSpace()) {\r\n return this._getRowCount()\r\n } else {\r\n groupCount = groupCount || 1;\r\n return this._getRowCount() * groupCount\r\n }\r\n };\r\n _proto._getDateForHeaderText = function(index) {\r\n var newFirstViewDate = _utils.default.getDateWithoutTimezoneChange(this._firstViewDate);\r\n return this._getDateByIndexCore(newFirstViewDate, index)\r\n };\r\n _proto._getDateByIndexCore = function(date, index) {\r\n var result = new Date(date);\r\n var dayIndex = Math.floor(index / this._getCellCountInDay());\r\n result.setTime(date.getTime() + this._calculateCellIndex(0, index) * this._getInterval() + dayIndex * this._getHiddenInterval());\r\n return result\r\n };\r\n _proto._getDateByIndex = function(index) {\r\n var newFirstViewDate = _utils.default.getDateWithoutTimezoneChange(this._firstViewDate);\r\n var result = this._getDateByIndexCore(newFirstViewDate, index);\r\n if (_utils.default.isTimezoneChangeInDate(this._firstViewDate)) {\r\n result.setDate(result.getDate() - 1)\r\n }\r\n return result\r\n };\r\n _proto._getFormat = function() {\r\n return \"shorttime\"\r\n };\r\n _proto._needApplyLastGroupCellClass = function() {\r\n return true\r\n };\r\n _proto._calculateHiddenInterval = function(rowIndex, cellIndex) {\r\n var dayIndex = Math.floor(cellIndex / this._getCellCountInDay());\r\n return dayIndex * this._getHiddenInterval()\r\n };\r\n _proto._getMillisecondsOffset = function(rowIndex, cellIndex) {\r\n cellIndex = this._calculateCellIndex(rowIndex, cellIndex);\r\n return this._getInterval() * cellIndex + this._calculateHiddenInterval(rowIndex, cellIndex)\r\n };\r\n _proto._createWorkSpaceElements = function() {\r\n this._createWorkSpaceScrollableElements()\r\n };\r\n _proto._getWorkSpaceHeight = function() {\r\n if (this.option(\"crossScrollingEnabled\")) {\r\n return (0, _position.getBoundingRect)(this._$dateTable.get(0)).height\r\n }\r\n return (0, _position.getBoundingRect)(this.$element().get(0)).height\r\n };\r\n _proto._dateTableScrollableConfig = function() {\r\n var config = _SchedulerWorkSpace.prototype._dateTableScrollableConfig.call(this);\r\n var timelineConfig = {\r\n direction: HORIZONTAL\r\n };\r\n return this.option(\"crossScrollingEnabled\") ? config : (0, _extend.extend)(config, timelineConfig)\r\n };\r\n _proto._needCreateCrossScrolling = function() {\r\n return true\r\n };\r\n _proto._headerScrollableConfig = function() {\r\n var config = _SchedulerWorkSpace.prototype._headerScrollableConfig.call(this);\r\n return (0, _extend.extend)(config, {\r\n scrollByContent: true\r\n })\r\n };\r\n _proto._renderTimePanel = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._renderAllDayPanel = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._getTableAllDay = function() {\r\n return false\r\n };\r\n _proto._getDateHeaderTemplate = function() {\r\n return this.option(\"timeCellTemplate\")\r\n };\r\n _proto._toggleAllDayVisibility = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._changeAllDayVisibility = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto.supportAllDayRow = function() {\r\n return false\r\n };\r\n _proto._getGroupHeaderContainer = function() {\r\n if (this._isHorizontalGroupedWorkSpace()) {\r\n return this._$thead\r\n }\r\n return this._$sidebarTable\r\n };\r\n _proto._insertAllDayRowsIntoDateTable = function() {\r\n return false\r\n };\r\n _proto._createAllDayPanelElements = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._renderDateHeader = function() {\r\n var $headerRow = _SchedulerWorkSpace.prototype._renderDateHeader.call(this);\r\n if (this._needRenderWeekHeader()) {\r\n var firstViewDate = new Date(this._firstViewDate);\r\n var $cells = [];\r\n var colspan = this._getCellCountInDay();\r\n var cellTemplate = this.option(\"dateCellTemplate\");\r\n for (var i = 0; i < this._getWeekDuration() * this.option(\"intervalCount\"); i++) {\r\n var $th = (0, _renderer.default)(\"
\");\r\n var text = this._formatWeekdayAndDay(firstViewDate);\r\n if (cellTemplate) {\r\n var templateOptions = {\r\n model: {\r\n text: text,\r\n date: new Date(firstViewDate)\r\n },\r\n container: $th,\r\n index: i\r\n };\r\n cellTemplate.render(templateOptions)\r\n } else {\r\n $th.text(text)\r\n }\r\n $th.addClass(HEADER_PANEL_CELL_CLASS).addClass(HEADER_PANEL_WEEK_CELL_CLASS).attr(\"colSpan\", colspan);\r\n $cells.push($th);\r\n this._incrementDate(firstViewDate)\r\n }\r\n var $row = (0, _renderer.default)(\" | \").addClass(HEADER_ROW_CLASS).append($cells);\r\n $headerRow.before($row)\r\n }\r\n };\r\n _proto._needRenderWeekHeader = function() {\r\n return false\r\n };\r\n _proto._incrementDate = function(date) {\r\n date.setDate(date.getDate() + 1)\r\n };\r\n _proto._getWeekDuration = function() {\r\n return 1\r\n };\r\n _proto._renderView = function() {\r\n this._setFirstViewDate();\r\n var groupCellTemplates = this._renderGroupHeader();\r\n this._renderDateHeader();\r\n this._renderAllDayPanel();\r\n this._renderTimePanel();\r\n this._renderDateTable();\r\n this._shader = new _uiSchedulerCurrent_time_shader.default(this);\r\n this._updateGroupTableHeight();\r\n this._$sidebarTable.appendTo(this._sidebarScrollable.$content());\r\n this._applyCellTemplates(groupCellTemplates)\r\n };\r\n _proto._setHorizontalGroupHeaderCellsHeight = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto.getIndicationCellCount = function() {\r\n var timeDiff = this._getTimeDiff();\r\n return this._calculateDurationInCells(timeDiff)\r\n };\r\n _proto._getTimeDiff = function() {\r\n var today = this._getToday();\r\n var date = this._getIndicationFirstViewDate();\r\n return today.getTime() - date.getTime()\r\n };\r\n _proto._calculateDurationInCells = function(timeDiff) {\r\n var today = this._getToday();\r\n var differenceInDays = Math.floor(timeDiff / toMs(\"day\"));\r\n var duration = (timeDiff - differenceInDays * toMs(\"day\") - this.option(\"startDayHour\") * toMs(\"hour\")) / this.getCellDuration();\r\n if (today.getHours() > this.option(\"endDayHour\")) {\r\n duration = this._getCellCountInDay()\r\n }\r\n if (duration < 0) {\r\n duration = 0\r\n }\r\n return differenceInDays * this._getCellCountInDay() + duration\r\n };\r\n _proto.getIndicationWidth = function() {\r\n if (this.isGroupedByDate()) {\r\n var cellCount = this.getIndicationCellCount();\r\n var integerPart = Math.floor(cellCount);\r\n var fractionPart = cellCount - integerPart;\r\n return this.getCellWidth() * (integerPart * this._getGroupCount() + fractionPart)\r\n } else {\r\n return this.getIndicationCellCount() * this.getCellWidth()\r\n }\r\n };\r\n _proto._renderIndicator = function(height, rtlOffset, $container, groupCount) {\r\n var $indicator;\r\n var width = this.getIndicationWidth();\r\n if (\"vertical\" === this.option(\"groupOrientation\")) {\r\n $indicator = this._createIndicator($container);\r\n $indicator.height((0, _position.getBoundingRect)($container.get(0)).height);\r\n $indicator.css(\"left\", rtlOffset ? rtlOffset - width : width)\r\n } else {\r\n for (var i = 0; i < groupCount; i++) {\r\n var offset = this.isGroupedByDate() ? i * this.getCellWidth() : this._getCellCount() * this.getCellWidth() * i;\r\n $indicator = this._createIndicator($container);\r\n $indicator.height((0, _position.getBoundingRect)($container.get(0)).height);\r\n $indicator.css(\"left\", rtlOffset ? rtlOffset - width - offset : width + offset)\r\n }\r\n }\r\n };\r\n _proto._isVerticalShader = function() {\r\n return false\r\n };\r\n _proto._isCurrentTimeHeaderCell = function(headerIndex) {\r\n var result = false;\r\n if (this.isIndicationOnView()) {\r\n var date = this._getDateByIndex(headerIndex);\r\n var now = this._getToday();\r\n date = new Date(date);\r\n if (_date.default.sameDate(now, date)) {\r\n var startCellDate = new Date(date);\r\n var endCellDate = new Date(date);\r\n endCellDate = endCellDate.setMilliseconds(date.getMilliseconds() + this.getCellDuration());\r\n result = _date.default.dateInRange(now, startCellDate, endCellDate)\r\n }\r\n }\r\n return result\r\n };\r\n _proto._cleanView = function() {\r\n _SchedulerWorkSpace.prototype._cleanView.call(this);\r\n this._$sidebarTable.empty()\r\n };\r\n _proto._visibilityChanged = function(visible) {\r\n _SchedulerWorkSpace.prototype._visibilityChanged.call(this, visible)\r\n };\r\n _proto._setTableSizes = function() {\r\n var cellHeight = this.getCellHeight();\r\n var minHeight = this._getWorkSpaceMinHeight();\r\n var $groupCells = this._$sidebarTable.find(\"tr\");\r\n var height = cellHeight * $groupCells.length;\r\n if (height < minHeight) {\r\n height = minHeight\r\n }\r\n this._$sidebarTable.height(height);\r\n this._$dateTable.height(height);\r\n _SchedulerWorkSpace.prototype._setTableSizes.call(this)\r\n };\r\n _proto._getWorkSpaceMinHeight = function() {\r\n var minHeight = this._getWorkSpaceHeight();\r\n var workspaceContainerHeight = this.$element().outerHeight(true) - this.getHeaderPanelHeight() - 2 * DATE_TABLE_CELL_BORDER - DATE_TABLE_HEADER_MARGIN;\r\n if (minHeight < workspaceContainerHeight) {\r\n minHeight = workspaceContainerHeight\r\n }\r\n return minHeight\r\n };\r\n _proto._makeGroupRows = function(groups, groupByDate) {\r\n var tableCreatorStrategy = \"vertical\" === this.option(\"groupOrientation\") ? tableCreator.VERTICAL : tableCreator.HORIZONTAL;\r\n return tableCreator.makeGroupedTable(tableCreatorStrategy, groups, {\r\n groupRowClass: this._getGroupRowClass(),\r\n groupHeaderRowClass: this._getGroupRowClass(),\r\n groupHeaderClass: this._getGroupHeaderClass.bind(this),\r\n groupHeaderContentClass: this._getGroupHeaderContentClass()\r\n }, this._getCellCount() || 1, this.option(\"resourceCellTemplate\"), this._getTotalRowCount(this._getGroupCount()), groupByDate)\r\n };\r\n _proto._ensureGroupHeaderCellsHeight = function(cellHeight) {\r\n var minCellHeight = this._calculateMinCellHeight();\r\n if (cellHeight < minCellHeight) {\r\n return minCellHeight\r\n }\r\n return cellHeight\r\n };\r\n _proto._calculateMinCellHeight = function() {\r\n var dateTable = this._getDateTable();\r\n var dateTableRowSelector = \".\" + this._getDateTableRowClass();\r\n return (0, _position.getBoundingRect)(dateTable).height / dateTable.find(dateTableRowSelector).length - 2 * DATE_TABLE_CELL_BORDER\r\n };\r\n _proto._getCellCoordinatesByIndex = function(index) {\r\n return {\r\n cellIndex: index % this._getCellCount(),\r\n rowIndex: 0\r\n }\r\n };\r\n _proto._getCellByCoordinates = function(cellCoordinates, groupIndex) {\r\n var indexes = this._groupedStrategy.prepareCellIndexes(cellCoordinates, groupIndex);\r\n return this._$dateTable.find(\"tr\").eq(indexes.rowIndex).find(\"td\").eq(indexes.cellIndex)\r\n };\r\n _proto._getWorkSpaceWidth = function() {\r\n return this._$dateTable.outerWidth(true)\r\n };\r\n _proto._getIndicationFirstViewDate = function() {\r\n return _date.default.trimTime(new Date(this._firstViewDate))\r\n };\r\n _proto._getIntervalBetween = function(currentDate, allDay) {\r\n var startDayHour = this.option(\"startDayHour\");\r\n var endDayHour = this.option(\"endDayHour\");\r\n var firstViewDate = this.getStartViewDate();\r\n var firstViewDateTime = firstViewDate.getTime();\r\n var hiddenInterval = (24 - endDayHour + startDayHour) * toMs(\"hour\");\r\n var timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate);\r\n var apptStart = currentDate.getTime();\r\n var fullInterval = apptStart - firstViewDateTime - timeZoneOffset;\r\n var fullDays = Math.floor(fullInterval / toMs(\"day\"));\r\n var tailDuration = fullInterval - fullDays * toMs(\"day\");\r\n var tailDelta = 0;\r\n var cellCount = this._getCellCountInDay() * (fullDays - this._getWeekendsCount(fullDays));\r\n var gapBeforeAppt = apptStart - _date.default.trimTime(new Date(currentDate)).getTime();\r\n var result = cellCount * this.option(\"hoursInterval\") * toMs(\"hour\");\r\n if (!allDay) {\r\n if (currentDate.getHours() < startDayHour) {\r\n tailDelta = tailDuration - hiddenInterval + gapBeforeAppt\r\n } else {\r\n if (currentDate.getHours() >= startDayHour && currentDate.getHours() < endDayHour) {\r\n tailDelta = tailDuration\r\n } else {\r\n if (currentDate.getHours() >= startDayHour && currentDate.getHours() >= endDayHour) {\r\n tailDelta = tailDuration - (gapBeforeAppt - endDayHour * toMs(\"hour\"))\r\n } else {\r\n if (!fullDays) {\r\n result = fullInterval\r\n }\r\n }\r\n }\r\n }\r\n result += tailDelta\r\n }\r\n return result\r\n };\r\n _proto._getWeekendsCount = function() {\r\n return 0\r\n };\r\n _proto.getAllDayContainer = function() {\r\n return null\r\n };\r\n _proto.getTimePanelWidth = function() {\r\n return 0\r\n };\r\n _proto.getPositionShift = function(timeShift) {\r\n var positionShift = _SchedulerWorkSpace.prototype.getPositionShift.call(this, timeShift);\r\n var left = this.getCellWidth() * timeShift;\r\n if (this.option(\"rtlEnabled\")) {\r\n left *= -1\r\n }\r\n left += positionShift.left;\r\n return {\r\n top: 0,\r\n left: left,\r\n cellPosition: left\r\n }\r\n };\r\n _proto.getVisibleBounds = function() {\r\n var isRtl = this.option(\"rtlEnabled\");\r\n var result = {};\r\n var $scrollable = this.getScrollable().$element();\r\n var cellWidth = this.getCellWidth();\r\n var scrollableOffset = isRtl ? this.getScrollableOuterWidth() - this.getScrollableScrollLeft() : this.getScrollableScrollLeft();\r\n var scrolledCellCount = scrollableOffset / cellWidth;\r\n var visibleCellCount = $scrollable.width() / cellWidth;\r\n var totalCellCount = isRtl ? scrolledCellCount - visibleCellCount : scrolledCellCount + visibleCellCount;\r\n var leftDate = this._getDateByIndex(scrolledCellCount);\r\n var rightDate = this._getDateByIndex(totalCellCount);\r\n if (isRtl) {\r\n leftDate = this._getDateByIndex(totalCellCount);\r\n rightDate = this._getDateByIndex(scrolledCellCount)\r\n }\r\n result.left = {\r\n hours: leftDate.getHours(),\r\n minutes: leftDate.getMinutes() >= 30 ? 30 : 0,\r\n date: _date.default.trimTime(leftDate)\r\n };\r\n result.right = {\r\n hours: rightDate.getHours(),\r\n minutes: rightDate.getMinutes() >= 30 ? 30 : 0,\r\n date: _date.default.trimTime(rightDate)\r\n };\r\n return result\r\n };\r\n _proto.getIntervalDuration = function(allDay) {\r\n return this.getCellDuration()\r\n };\r\n _proto._supportCompactDropDownAppointments = function() {\r\n return false\r\n };\r\n _proto.getCellMinWidth = function() {\r\n return 0\r\n };\r\n _proto.getWorkSpaceLeftOffset = function() {\r\n return 0\r\n };\r\n _proto.scrollToTime = function(hours, minutes, date) {\r\n var coordinates = this._getScrollCoordinates(hours, minutes, date);\r\n var scrollable = this.getScrollable();\r\n var offset = this.option(\"rtlEnabled\") ? (0, _position.getBoundingRect)(this.getScrollableContainer().get(0)).width : 0;\r\n if (this.option(\"templatesRenderAsynchronously\")) {\r\n setTimeout(function() {\r\n scrollable.scrollBy({\r\n left: coordinates.left - scrollable.scrollLeft() - offset,\r\n top: 0\r\n })\r\n })\r\n } else {\r\n scrollable.scrollBy({\r\n left: coordinates.left - scrollable.scrollLeft() - offset,\r\n top: 0\r\n })\r\n }\r\n };\r\n _proto._getRowCountWithAllDayRows = function() {\r\n return this._getRowCount()\r\n };\r\n return SchedulerTimeline\r\n}(_uiSchedulerWork_space.default);\r\n(0, _component_registrator.default)(\"dxSchedulerTimeline\", SchedulerTimeline);\r\nvar _default = SchedulerTimeline;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space.indicator.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.work_space\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _window = require(\"../../../core/utils/window\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar SCHEDULER_DATE_TIME_INDICATOR_CLASS = \"dx-scheduler-date-time-indicator\";\r\nvar TIME_PANEL_CURRENT_TIME_CELL_CLASS = \"dx-scheduler-time-panel-current-time-cell\";\r\nvar HEADER_CURRENT_TIME_CELL_CLASS = \"dx-scheduler-header-panel-current-time-cell\";\r\nvar SchedulerWorkSpaceIndicator = function(_SchedulerWorkSpace) {\r\n _inheritsLoose(SchedulerWorkSpaceIndicator, _SchedulerWorkSpace);\r\n\r\n function SchedulerWorkSpaceIndicator() {\r\n return _SchedulerWorkSpace.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerWorkSpaceIndicator.prototype;\r\n _proto._getTimeZoneCalculator = function() {\r\n return this.invoke(\"getTimeZoneCalculator\")\r\n };\r\n _proto._getToday = function() {\r\n var todayDate = this.option(\"indicatorTime\") || new Date;\r\n var timeZoneCalculator = this._getTimeZoneCalculator();\r\n return (null === timeZoneCalculator || void 0 === timeZoneCalculator ? void 0 : timeZoneCalculator.createDate(todayDate, {\r\n path: \"toGrid\"\r\n })) || todayDate\r\n };\r\n _proto.isIndicationOnView = function() {\r\n if (this.option(\"showCurrentTimeIndicator\")) {\r\n var today = this._getToday();\r\n var endViewDate = _date.default.trimTime(this.getEndViewDate());\r\n return _date.default.dateInRange(today, this._firstViewDate, new Date(endViewDate.getTime() + toMs(\"day\")))\r\n }\r\n return false\r\n };\r\n _proto.isIndicationAvailable = function() {\r\n if (!(0, _window.hasWindow)()) {\r\n return false\r\n }\r\n var today = this._getToday();\r\n return today >= _date.default.trimTime(new Date(this.getStartViewDate()))\r\n };\r\n _proto.isIndicatorVisible = function() {\r\n var today = this._getToday();\r\n var endViewDate = new Date(this.getEndViewDate().getTime() + this._getEndViewDateTimeDiff() - 1);\r\n var firstViewDate = new Date(this.getStartViewDate());\r\n firstViewDate.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\r\n endViewDate.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\r\n return _date.default.dateInRange(today, firstViewDate, endViewDate)\r\n };\r\n _proto._renderDateTimeIndication = function() {\r\n if (this.isIndicationAvailable()) {\r\n if (this.option(\"shadeUntilCurrentTime\")) {\r\n this._shader.render()\r\n }\r\n if (this.isIndicationOnView() && this.isIndicatorVisible()) {\r\n var groupCount = this._getGroupCount() || 1;\r\n var $container = this._dateTableScrollable.$content();\r\n var height = this.getIndicationHeight();\r\n var rtlOffset = this._getRtlOffset(this.getCellWidth());\r\n this._renderIndicator(height, rtlOffset, $container, groupCount)\r\n }\r\n }\r\n };\r\n _proto._renderIndicator = function(height, rtlOffset, $container, groupCount) {\r\n var groupedByDate = this.isGroupedByDate();\r\n var repeatCount = groupedByDate ? 1 : groupCount;\r\n for (var i = 0; i < repeatCount; i++) {\r\n var $indicator = this._createIndicator($container);\r\n $indicator.width(groupedByDate ? this.getCellWidth() * groupCount : this.getCellWidth());\r\n this._groupedStrategy.shiftIndicator($indicator, height, rtlOffset, i)\r\n }\r\n };\r\n _proto._createIndicator = function($container) {\r\n var $indicator = (0, _renderer.default)(\"\").addClass(SCHEDULER_DATE_TIME_INDICATOR_CLASS);\r\n $container.append($indicator);\r\n return $indicator\r\n };\r\n _proto._getRtlOffset = function(width) {\r\n return this.option(\"rtlEnabled\") ? (0, _position.getBoundingRect)(this._dateTableScrollable.$content().get(0)).width - this.getTimePanelWidth() - width : 0\r\n };\r\n _proto._setIndicationUpdateInterval = function() {\r\n if (!this.option(\"showCurrentTimeIndicator\") || 0 === this.option(\"indicatorUpdateInterval\")) {\r\n return\r\n }\r\n this._clearIndicatorUpdateInterval();\r\n this._indicatorInterval = setInterval(function() {\r\n this._refreshDateTimeIndication()\r\n }.bind(this), this.option(\"indicatorUpdateInterval\"))\r\n };\r\n _proto._clearIndicatorUpdateInterval = function() {\r\n if (this._indicatorInterval) {\r\n clearInterval(this._indicatorInterval);\r\n delete this._indicatorInterval\r\n }\r\n };\r\n _proto._isVerticalShader = function() {\r\n return true\r\n };\r\n _proto.getIndicationWidth = function(groupIndex) {\r\n var maxWidth = this.getCellWidth() * this._getCellCount();\r\n var difference = this._getIndicatorDuration();\r\n if (difference > this._getCellCount()) {\r\n difference = this._getCellCount()\r\n }\r\n var width = difference * this.getRoundedCellWidth(groupIndex, groupIndex * this._getCellCount(), difference);\r\n return maxWidth < width ? maxWidth : width\r\n };\r\n _proto.getIndicatorOffset = function(groupIndex) {\r\n var difference = this._getIndicatorDuration() - 1;\r\n var offset = difference * this.getRoundedCellWidth(groupIndex, groupIndex * this._getCellCount(), difference);\r\n return offset\r\n };\r\n _proto._getIndicatorDuration = function() {\r\n var today = this._getToday();\r\n var firstViewDate = new Date(this._firstViewDate);\r\n var timeDiff = today.getTime() - firstViewDate.getTime();\r\n if (\"workWeek\" === this.option(\"type\")) {\r\n timeDiff -= this._getWeekendsCount(Math.round(timeDiff / toMs(\"day\"))) * toMs(\"day\")\r\n }\r\n return Math.ceil((timeDiff + 1) / toMs(\"day\"))\r\n };\r\n _proto.getIndicationHeight = function() {\r\n var today = this._getToday();\r\n var cellHeight = this.getCellHeight();\r\n var date = new Date(this._firstViewDate);\r\n if (this.isIndicationOnView()) {\r\n date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate())\r\n }\r\n var duration = today.getTime() - date.getTime();\r\n var cellCount = duration / this.getCellDuration();\r\n return cellCount * cellHeight\r\n };\r\n _proto._dispose = function() {\r\n this._clearIndicatorUpdateInterval();\r\n _SchedulerWorkSpace.prototype._dispose.apply(this, arguments)\r\n };\r\n _proto._refreshDateTimeIndication = function() {\r\n this._cleanDateTimeIndicator();\r\n this._shader && this._shader.clean();\r\n this._renderDateTimeIndication()\r\n };\r\n _proto._isCurrentTime = function(date) {\r\n if (this.isIndicationOnView()) {\r\n var today = this._getToday();\r\n var result = false;\r\n date = new Date(date);\r\n date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\r\n var startCellDate = new Date(date);\r\n var endCellDate = new Date(date);\r\n if (_date.default.sameDate(today, date)) {\r\n startCellDate = startCellDate.setMilliseconds(date.getMilliseconds() - this.getCellDuration() + 1);\r\n endCellDate = endCellDate.setMilliseconds(date.getMilliseconds() + this.getCellDuration());\r\n result = _date.default.dateInRange(today, startCellDate, endCellDate)\r\n }\r\n return result\r\n }\r\n };\r\n _proto._isCurrentTimeHeaderCell = function(headerIndex) {\r\n if (this.isIndicationOnView()) {\r\n var date = this._getDateByIndex(headerIndex);\r\n return _date.default.sameDate(date, this._getToday())\r\n }\r\n return false\r\n };\r\n _proto._getTimeCellClass = function(i) {\r\n var startViewDate = this._getTimeCellDate(i);\r\n var cellClass = _SchedulerWorkSpace.prototype._getTimeCellClass.call(this, i);\r\n if (this._isCurrentTime(startViewDate)) {\r\n return cellClass + \" \" + TIME_PANEL_CURRENT_TIME_CELL_CLASS\r\n }\r\n return cellClass\r\n };\r\n _proto._getHeaderPanelCellClass = function(i) {\r\n var cellClass = _SchedulerWorkSpace.prototype._getHeaderPanelCellClass.call(this, i);\r\n if (this._isCurrentTimeHeaderCell(i)) {\r\n return cellClass + \" \" + HEADER_CURRENT_TIME_CELL_CLASS\r\n }\r\n return cellClass\r\n };\r\n _proto._cleanView = function() {\r\n _SchedulerWorkSpace.prototype._cleanView.call(this);\r\n this._cleanDateTimeIndicator()\r\n };\r\n _proto._dimensionChanged = function() {\r\n _SchedulerWorkSpace.prototype._dimensionChanged.call(this);\r\n this._refreshDateTimeIndication()\r\n };\r\n _proto._cleanDateTimeIndicator = function() {\r\n this.$element().find(\".\" + SCHEDULER_DATE_TIME_INDICATOR_CLASS).remove()\r\n };\r\n _proto._cleanWorkSpace = function() {\r\n _SchedulerWorkSpace.prototype._cleanWorkSpace.call(this);\r\n this._renderDateTimeIndication();\r\n this._setIndicationUpdateInterval()\r\n };\r\n _proto._optionChanged = function(args) {\r\n switch (args.name) {\r\n case \"showCurrentTimeIndicator\":\r\n case \"indicatorTime\":\r\n this._cleanWorkSpace();\r\n break;\r\n case \"indicatorUpdateInterval\":\r\n this._setIndicationUpdateInterval();\r\n break;\r\n case \"showAllDayPanel\":\r\n _SchedulerWorkSpace.prototype._optionChanged.call(this, args);\r\n this._refreshDateTimeIndication();\r\n break;\r\n case \"allDayExpanded\":\r\n _SchedulerWorkSpace.prototype._optionChanged.call(this, args);\r\n this._refreshDateTimeIndication();\r\n break;\r\n case \"crossScrollingEnabled\":\r\n _SchedulerWorkSpace.prototype._optionChanged.call(this, args);\r\n this._refreshDateTimeIndication();\r\n break;\r\n case \"shadeUntilCurrentTime\":\r\n this._refreshDateTimeIndication();\r\n break;\r\n default:\r\n _SchedulerWorkSpace.prototype._optionChanged.call(this, args)\r\n }\r\n };\r\n _proto._getDefaultOptions = function() {\r\n return (0, _extend.extend)(_SchedulerWorkSpace.prototype._getDefaultOptions.call(this), {\r\n showCurrentTimeIndicator: true,\r\n indicatorTime: new Date,\r\n indicatorUpdateInterval: 5 * toMs(\"minute\"),\r\n shadeUntilCurrentTime: true\r\n })\r\n };\r\n return SchedulerWorkSpaceIndicator\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerWorkSpace\", SchedulerWorkSpaceIndicator);\r\nvar _default = SchedulerWorkSpaceIndicator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/utils.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar KEYS = {\r\n SETTINGS: \"dxAppointmentSettings\"\r\n};\r\nvar utils = {\r\n dataAccessors: {\r\n getAppointmentSettings: function(element) {\r\n return (0, _renderer.default)(element).data(KEYS.SETTINGS)\r\n },\r\n getAppointmentInfo: function(element) {\r\n var settings = utils.dataAccessors.getAppointmentSettings(element);\r\n return null === settings || void 0 === settings ? void 0 : settings.info\r\n }\r\n }\r\n};\r\nvar _default = utils;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../../events/core/events_engine\"));\r\nvar _element_data = require(\"../../../core/element_data\");\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _window = require(\"../../../core/utils/window\");\r\nvar _element = require(\"../../../core/element\");\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _message = _interopRequireDefault(require(\"../../../localization/message\"));\r\nvar _date2 = _interopRequireDefault(require(\"../../../localization/date\"));\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _index = require(\"../../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../../events/pointer\"));\r\nvar _ui = _interopRequireDefault(require(\"../../widget/ui.errors\"));\r\nvar _click = require(\"../../../events/click\");\r\nvar _contextmenu = require(\"../../../events/contextmenu\");\r\nvar _drag = require(\"../../../events/drag\");\r\nvar _ui2 = _interopRequireDefault(require(\"../../scroll_view/ui.scrollable\"));\r\nvar _uiSchedulerWork_spaceGroupedStrategy = _interopRequireDefault(require(\"./ui.scheduler.work_space.grouped.strategy.horizontal\"));\r\nvar _uiSchedulerWork_spaceGroupedStrategy2 = _interopRequireDefault(require(\"./ui.scheduler.work_space.grouped.strategy.vertical\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"../ui.scheduler.table_creator\"));\r\nvar _uiSchedulerCurrent_time_shader = _interopRequireDefault(require(\"../shaders/ui.scheduler.current_time_shader.vertical\"));\r\nvar _appointmentDragBehavior = _interopRequireDefault(require(\"../appointmentDragBehavior\"));\r\nvar _constants = require(\"../constants\");\r\nvar _utils = _interopRequireDefault(require(\"../utils.timeZone\"));\r\nvar _widgetObserver = _interopRequireDefault(require(\"../base/widgetObserver\"));\r\nvar _translator = require(\"../../../animation/translator\");\r\nvar _uiScheduler2 = _interopRequireDefault(require(\"./ui.scheduler.virtual_scrolling\"));\r\nvar _view_data_provider = _interopRequireDefault(require(\"./view_data_provider\"));\r\nvar _layout = _interopRequireDefault(require(\"../../../renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/layout.j\"));\r\nvar _title = _interopRequireDefault(require(\"../../../renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.j\"));\r\nvar _layout2 = _interopRequireDefault(require(\"../../../renovation/ui/scheduler/workspaces/base/time_panel/layout.j\"));\r\nvar _virtual_selection_state = _interopRequireDefault(require(\"./virtual_selection_state\"));\r\nvar _cache = require(\"./cache\");\r\nvar _base = require(\"./utils/base\");\r\nvar _excluded = [\"getItemData\", \"getItemSettings\", \"isSetCursorOffset\", \"initialPosition\"];\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 _objectWithoutProperties(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = _objectWithoutPropertiesLoose(source, excluded);\r\n var key, i;\r\n if (Object.getOwnPropertySymbols) {\r\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n key = sourceSymbolKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = {};\r\n var sourceKeys = Object.keys(source);\r\n var key, i;\r\n for (i = 0; i < sourceKeys.length; i++) {\r\n key = sourceKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n return target\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n enumerableOnly && (symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })), keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n i % 2 ? ownKeys(Object(source), !0).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n Object.defineProperty(Constructor, \"prototype\", {\r\n writable: false\r\n });\r\n return Constructor\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar tableCreator = _uiScheduler.default.tableCreator;\r\nvar abstract = _widgetObserver.default.abstract;\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar COMPONENT_CLASS = \"dx-scheduler-work-space\";\r\nvar GROUPED_WORKSPACE_CLASS = \"dx-scheduler-work-space-grouped\";\r\nvar VERTICAL_GROUPED_WORKSPACE_CLASS = \"dx-scheduler-work-space-vertical-grouped\";\r\nvar WORKSPACE_VERTICAL_GROUP_TABLE_CLASS = \"dx-scheduler-work-space-vertical-group-table\";\r\nvar WORKSPACE_WITH_BOTH_SCROLLS_CLASS = \"dx-scheduler-work-space-both-scrollbar\";\r\nvar WORKSPACE_WITH_COUNT_CLASS = \"dx-scheduler-work-space-count\";\r\nvar WORKSPACE_WITH_GROUP_BY_DATE_CLASS = \"dx-scheduler-work-space-group-by-date\";\r\nvar WORKSPACE_WITH_ODD_CELLS_CLASS = \"dx-scheduler-work-space-odd-cells\";\r\nvar TIME_PANEL_CLASS = \"dx-scheduler-time-panel\";\r\nvar TIME_PANEL_CELL_CLASS = \"dx-scheduler-time-panel-cell\";\r\nvar TIME_PANEL_ROW_CLASS = \"dx-scheduler-time-panel-row\";\r\nvar ALL_DAY_PANEL_CLASS = \"dx-scheduler-all-day-panel\";\r\nvar ALL_DAY_TABLE_CLASS = \"dx-scheduler-all-day-table\";\r\nvar ALL_DAY_CONTAINER_CLASS = \"dx-scheduler-all-day-appointments\";\r\nvar ALL_DAY_TITLE_CLASS = \"dx-scheduler-all-day-title\";\r\nvar ALL_DAY_TITLE_HIDDEN_CLASS = \"dx-scheduler-all-day-title-hidden\";\r\nvar ALL_DAY_TABLE_CELL_CLASS = \"dx-scheduler-all-day-table-cell\";\r\nvar ALL_DAY_TABLE_ROW_CLASS = \"dx-scheduler-all-day-table-row\";\r\nvar WORKSPACE_WITH_ALL_DAY_CLASS = \"dx-scheduler-work-space-all-day\";\r\nvar WORKSPACE_WITH_COLLAPSED_ALL_DAY_CLASS = \"dx-scheduler-work-space-all-day-collapsed\";\r\nvar WORKSPACE_WITH_MOUSE_SELECTION_CLASS = \"dx-scheduler-work-space-mouse-selection\";\r\nvar HORIZONTAL_SIZES_CLASS = \"dx-scheduler-cell-sizes-horizontal\";\r\nvar VERTICAL_SIZES_CLASS = \"dx-scheduler-cell-sizes-vertical\";\r\nvar HEADER_PANEL_CLASS = \"dx-scheduler-header-panel\";\r\nvar HEADER_PANEL_CELL_CLASS = \"dx-scheduler-header-panel-cell\";\r\nvar HEADER_ROW_CLASS = \"dx-scheduler-header-row\";\r\nvar GROUP_ROW_CLASS = \"dx-scheduler-group-row\";\r\nvar GROUP_HEADER_CLASS = \"dx-scheduler-group-header\";\r\nvar GROUP_HEADER_CONTENT_CLASS = \"dx-scheduler-group-header-content\";\r\nvar DATE_TABLE_CLASS = \"dx-scheduler-date-table\";\r\nvar DATE_TABLE_CELL_CLASS = \"dx-scheduler-date-table-cell\";\r\nvar DATE_TABLE_ROW_CLASS = \"dx-scheduler-date-table-row\";\r\nvar DATE_TABLE_FOCUSED_CELL_CLASS = \"dx-scheduler-focused-cell\";\r\nvar VIRTUAL_ROW_CLASS = \"dx-scheduler-virtual-row\";\r\nvar VIRTUAL_CELL_CLASS = \"dx-scheduler-virtual-cell\";\r\nvar DATE_TABLE_DROPPABLE_CELL_CLASS = \"dx-scheduler-date-table-droppable-cell\";\r\nvar SCHEDULER_HEADER_SCROLLABLE_CLASS = \"dx-scheduler-header-scrollable\";\r\nvar SCHEDULER_SIDEBAR_SCROLLABLE_CLASS = \"dx-scheduler-sidebar-scrollable\";\r\nvar SCHEDULER_DATE_TABLE_SCROLLABLE_CLASS = \"dx-scheduler-date-table-scrollable\";\r\nvar SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, \"dxSchedulerWorkSpace\");\r\nvar SCHEDULER_CELL_DXDRAGENTER_EVENT_NAME = (0, _index.addNamespace)(_drag.enter, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXDROP_EVENT_NAME = (0, _index.addNamespace)(_drag.drop, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXDRAGLEAVE_EVENT_NAME = (0, _index.addNamespace)(_drag.leave, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXCLICK_EVENT_NAME = (0, _index.addNamespace)(_click.name, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.move, \"dxSchedulerDateTable\");\r\nvar CELL_DATA = \"dxCellData\";\r\nvar DATE_TABLE_CELL_BORDER = 1;\r\nvar DATE_TABLE_MIN_CELL_WIDTH = 75;\r\nvar DAY_MS = toMs(\"day\");\r\nvar HOUR_MS = toMs(\"hour\");\r\nvar SCHEDULER_DRAG_AND_DROP_SELECTOR = \".\".concat(DATE_TABLE_CLASS, \" td, .\").concat(ALL_DAY_TABLE_CLASS, \" td\");\r\nvar CELL_SELECTOR = \".\".concat(DATE_TABLE_CELL_CLASS, \", .\").concat(ALL_DAY_TABLE_CELL_CLASS);\r\nvar ScrollSemaphore = function() {\r\n function ScrollSemaphore() {\r\n this.counter = 0\r\n }\r\n var _proto = ScrollSemaphore.prototype;\r\n _proto.isFree = function() {\r\n return 0 === this.counter\r\n };\r\n _proto.take = function() {\r\n this.counter++\r\n };\r\n _proto.release = function() {\r\n this.counter--;\r\n if (this.counter < 0) {\r\n this.counter = 0\r\n }\r\n };\r\n return ScrollSemaphore\r\n}();\r\nvar formatWeekday = function(date) {\r\n return _date2.default.getDayNames(\"abbreviated\")[date.getDay()]\r\n};\r\nvar SchedulerWorkSpace = function(_WidgetObserver) {\r\n _inheritsLoose(SchedulerWorkSpace, _WidgetObserver);\r\n\r\n function SchedulerWorkSpace() {\r\n return _WidgetObserver.apply(this, arguments) || this\r\n }\r\n var _proto2 = SchedulerWorkSpace.prototype;\r\n _proto2._supportedKeys = function() {\r\n var clickHandler = function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (this._selectedCells && this._selectedCells.length) {\r\n var $itemElement = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n var $cellElement = (0, _renderer.default)($itemElement.length ? $itemElement : this._selectedCells);\r\n e.target = this._selectedCells;\r\n this._showPopup = true;\r\n this._cellClickAction({\r\n event: e,\r\n cellElement: (0, _renderer.default)(this._selectedCells),\r\n cellData: this.getCellData($cellElement)\r\n })\r\n }\r\n };\r\n var arrowPressHandler = function(e, cell) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._moveToCell(cell, e.shiftKey)\r\n };\r\n return (0, _extend.extend)(_WidgetObserver.prototype._supportedKeys.call(this), {\r\n enter: clickHandler,\r\n space: clickHandler,\r\n downArrow: function(e) {\r\n var $cell = this._getCellFromNextRow(\"next\", e.shiftKey);\r\n arrowPressHandler.call(this, e, $cell)\r\n },\r\n upArrow: function(e) {\r\n var $cell = this._getCellFromNextRow(\"prev\", e.shiftKey);\r\n arrowPressHandler.call(this, e, $cell)\r\n },\r\n rightArrow: function(e) {\r\n var $rightCell = this._getCellFromNextColumn(\"next\", e.shiftKey);\r\n arrowPressHandler.call(this, e, $rightCell)\r\n },\r\n leftArrow: function(e) {\r\n var $leftCell = this._getCellFromNextColumn(\"prev\", e.shiftKey);\r\n arrowPressHandler.call(this, e, $leftCell)\r\n }\r\n })\r\n };\r\n _proto2._dispose = function() {\r\n var _this$virtualScrollin;\r\n _WidgetObserver.prototype._dispose.call(this);\r\n null === (_this$virtualScrollin = this.virtualScrollingDispatcher) || void 0 === _this$virtualScrollin ? void 0 : _this$virtualScrollin.dispose();\r\n this._disposeRenovatedComponents()\r\n };\r\n _proto2._isRTL = function() {\r\n return this.option(\"rtlEnabled\")\r\n };\r\n _proto2._getFocusedCell = function() {\r\n return this._$focusedCell || this._$dateTable.find(\".\" + DATE_TABLE_CELL_CLASS).eq(0)\r\n };\r\n _proto2._getAllFocusedCells = function() {\r\n return this._selectedCells || this._$dateTable.find(\".\" + DATE_TABLE_CELL_CLASS).eq(0)\r\n };\r\n _proto2._getCellFromNextRow = function(direction) {\r\n var $currentCell = this._$focusedCell;\r\n if ((0, _type.isDefined)($currentCell)) {\r\n var cellIndex = $currentCell.index();\r\n var $row = $currentCell.parent();\r\n var $cell = $row[direction]().children().eq(cellIndex);\r\n $cell = this._checkForViewBounds($cell);\r\n return $cell\r\n }\r\n };\r\n _proto2._checkForViewBounds = function($item) {\r\n if (!$item.length) {\r\n $item = this._$focusedCell\r\n }\r\n return $item\r\n };\r\n _proto2._getCellFromNextColumn = function(direction, isMultiSelection) {\r\n var $focusedCell = this._$focusedCell;\r\n if (!(0, _type.isDefined)($focusedCell)) {\r\n return\r\n }\r\n var $nextCell;\r\n var $row = $focusedCell.parent();\r\n var nextColumnDirection = direction;\r\n var isDirectionNext = \"next\" === direction;\r\n var previousColumnDirection = isDirectionNext ? \"prev\" : \"next\";\r\n var isRTL = this._isRTL();\r\n var groupCount = this._getGroupCount();\r\n var isHorizontalGrouping = this._isHorizontalGroupedWorkSpace();\r\n var isGroupedByDate = this.isGroupedByDate();\r\n var totalCellCount = this._getTotalCellCount(groupCount);\r\n var rowCellCount = isMultiSelection && !isGroupedByDate ? this._getCellCount() : totalCellCount;\r\n var lastIndexInRow = rowCellCount - 1;\r\n var currentIndex = $focusedCell.index();\r\n var step = isGroupedByDate && isMultiSelection ? groupCount : 1;\r\n var isEdgeCell = this._isEdgeCell(isHorizontalGrouping ? totalCellCount - 1 : lastIndexInRow, currentIndex, step, direction);\r\n var sign = isRTL ? 1 : -1;\r\n var directionSign = isDirectionNext ? 1 : -1;\r\n var resultingSign = sign * directionSign;\r\n if (isEdgeCell || isMultiSelection && this._isGroupEndCell($focusedCell, direction)) {\r\n var nextIndex = currentIndex - resultingSign * step + resultingSign * rowCellCount;\r\n var rowDirection = isRTL ? previousColumnDirection : nextColumnDirection;\r\n $nextCell = $row[rowDirection]().children().eq(nextIndex);\r\n $nextCell = this._checkForViewBounds($nextCell)\r\n } else {\r\n $nextCell = $row.children().eq(currentIndex - resultingSign * step)\r\n }\r\n return $nextCell\r\n };\r\n _proto2._isEdgeCell = function(lastIndexInRow, cellIndex, step, direction) {\r\n var isRTL = this._isRTL();\r\n var isDirectionNext = \"next\" === direction;\r\n var rightEdgeCellIndex = isRTL ? 0 : lastIndexInRow;\r\n var leftEdgeCellIndex = isRTL ? lastIndexInRow : 0;\r\n var edgeCellIndex = isDirectionNext ? rightEdgeCellIndex : leftEdgeCellIndex;\r\n var isNextCellGreaterThanEdge = cellIndex + step > edgeCellIndex;\r\n var isNextCellLessThanEdge = cellIndex - step < edgeCellIndex;\r\n var isRightEdgeCell = isRTL ? isNextCellLessThanEdge : isNextCellGreaterThanEdge;\r\n var isLeftEdgeCell = isRTL ? isNextCellGreaterThanEdge : isNextCellLessThanEdge;\r\n return isDirectionNext ? isRightEdgeCell : isLeftEdgeCell\r\n };\r\n _proto2._isGroupEndCell = function($cell, direction) {\r\n if (this.isGroupedByDate()) {\r\n return false\r\n }\r\n var isDirectionNext = \"next\" === direction;\r\n var cellsInRow = this._getCellCount();\r\n var currentCellIndex = $cell.index();\r\n var result = currentCellIndex % cellsInRow;\r\n var endCell = isDirectionNext ? cellsInRow - 1 : 0;\r\n var startCell = isDirectionNext ? 0 : cellsInRow - 1;\r\n return this._isRTL() ? result === startCell : result === endCell\r\n };\r\n _proto2._moveToCell = function($cell, isMultiSelection) {\r\n isMultiSelection = isMultiSelection && this.option(\"allowMultipleCellSelection\");\r\n this._setSelectedAndFocusedCells($cell, isMultiSelection);\r\n this._dateTableScrollable.scrollToElement($cell)\r\n };\r\n _proto2._setSelectedAndFocusedCells = function($cell, isMultiSelection) {\r\n if (!(0, _type.isDefined)($cell) || !$cell.length) {\r\n return\r\n }\r\n var updateViewData = this.isVirtualScrolling();\r\n var $correctedCell = $cell;\r\n if (isMultiSelection) {\r\n $correctedCell = this._correctCellForGroup($cell)\r\n }\r\n if ($correctedCell.hasClass(DATE_TABLE_FOCUSED_CELL_CLASS)) {\r\n return\r\n }\r\n this._setSelectedCells($correctedCell, isMultiSelection);\r\n this._setFocusedCell($correctedCell, updateViewData)\r\n };\r\n _proto2._setFocusedCell = function($cell) {\r\n var updateViewData = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;\r\n this._releaseFocusedCell();\r\n var $correctedCell = $cell;\r\n if (updateViewData) {\r\n var _this$_getCoordinates = this._getCoordinatesByCell($cell),\r\n rowIndex = _this$_getCoordinates.rowIndex,\r\n columnIndex = _this$_getCoordinates.columnIndex;\r\n var isAllDayCell = this._hasAllDayClass($cell);\r\n this.virtualSelectionState.setFocusedCell(rowIndex, columnIndex, isAllDayCell);\r\n var focusedCell = this.virtualSelectionState.getFocusedCell(this._isVerticalGroupedWorkSpace());\r\n var cellData = focusedCell.cellData,\r\n coordinates = focusedCell.coordinates;\r\n var allDay = cellData.allDay;\r\n $correctedCell = allDay && !this._isVerticalGroupedWorkSpace() ? this._dom_getAllDayPanelCell(coordinates.cellIndex) : this._dom_getDateCell(coordinates)\r\n }\r\n this._toggleFocusedCellClass(true, $correctedCell);\r\n this._$focusedCell = $correctedCell\r\n };\r\n _proto2._setSelectedCells = function($firstCell, isMultiSelection) {\r\n this._releaseSelectedCells();\r\n this._selectedCells = [];\r\n if (this.isVirtualScrolling()) {\r\n this._setSelectedCellsInVirtualMode($firstCell, isMultiSelection)\r\n } else {\r\n this._setSelectedCellsInStandardMode($firstCell, isMultiSelection)\r\n }\r\n var $selectedCells = (0, _renderer.default)(this._selectedCells);\r\n this._toggleFocusClass(true, $selectedCells);\r\n this.setAria(\"label\", \"Add appointment\", $selectedCells);\r\n var selectedCellData = this.getSelectedCellData().map(function(_ref) {\r\n var startDate = _ref.startDate,\r\n endDate = _ref.endDate,\r\n allDay = _ref.allDay,\r\n groups = _ref.groups,\r\n groupIndex = _ref.groupIndex;\r\n return {\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: allDay,\r\n groups: groups,\r\n groupIndex: groupIndex || 0\r\n }\r\n });\r\n this.option(\"selectedCellData\", selectedCellData);\r\n this._selectionChangedAction({\r\n selectedCellData: selectedCellData\r\n })\r\n };\r\n _proto2._setSelectedCellsInStandardMode = function($firstCell, isMultiSelection) {\r\n if (isMultiSelection) {\r\n var $previousCell = this._$prevCell;\r\n var orientation = \"day\" === this.option(\"type\") && (!this.option(\"groups\").length || \"vertical\" === this.option(\"groupOrientation\")) ? \"vertical\" : \"horizontal\";\r\n var $targetCells = this._getCellsBetween($firstCell, $previousCell, orientation);\r\n this._selectedCells = $targetCells.toArray()\r\n } else {\r\n this._selectedCells = [$firstCell.get(0)];\r\n this._$prevCell = $firstCell\r\n }\r\n };\r\n _proto2._setSelectedCellsInVirtualMode = function($firstCell, isMultiSelection) {\r\n if (isMultiSelection) {\r\n var _this$_getCoordinates2 = this._getCoordinatesByCell($firstCell),\r\n firstRow = _this$_getCoordinates2.rowIndex,\r\n firstColumn = _this$_getCoordinates2.columnIndex;\r\n var isFirstAllDay = this._hasAllDayClass($firstCell);\r\n var firstCell = {\r\n rowIndex: firstRow,\r\n columnIndex: firstColumn,\r\n allDay: isFirstAllDay\r\n };\r\n this.virtualSelectionState.setSelectedCells(firstCell)\r\n } else {\r\n this._selectedCells = [$firstCell.get(0)];\r\n this._$prevCell = $firstCell;\r\n var _this$_getCoordinates3 = this._getCoordinatesByCell($firstCell),\r\n rowIndex = _this$_getCoordinates3.rowIndex,\r\n columnIndex = _this$_getCoordinates3.columnIndex;\r\n var isAllDayCell = this._hasAllDayClass($firstCell);\r\n var _firstCell = {\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex,\r\n allDay: isAllDayCell\r\n };\r\n this.virtualSelectionState.setSelectedCells(_firstCell, _firstCell)\r\n }\r\n this._setSelectedCellsByCellData(this.virtualSelectionState.getSelectedCells())\r\n };\r\n _proto2._correctCellForGroup = function($cell) {\r\n if (this.isVirtualScrolling()) {\r\n var cellData = this.getCellData($cell);\r\n var isValidFocusedCell = this.virtualSelectionState.isValidFocusedCell(cellData);\r\n return isValidFocusedCell ? $cell : this._$focusedCell\r\n }\r\n var $focusedCell = this._$focusedCell;\r\n var cellGroupIndex = this._getGroupIndexByCell($cell);\r\n var focusedCellGroupIndex = this._getGroupIndexByCell($focusedCell);\r\n var isDifferentTables = this._hasAllDayClass($cell) !== this._hasAllDayClass($focusedCell);\r\n return focusedCellGroupIndex !== cellGroupIndex || isDifferentTables ? $focusedCell : $cell\r\n };\r\n _proto2._getCellsBetween = function($first, $last, direction) {\r\n var isAllDayTable = this._hasAllDayClass($last);\r\n var $cells = this._getCells(isAllDayTable, direction);\r\n var firstIndex = $cells.index($first);\r\n var lastIndex = $cells.index($last);\r\n if (firstIndex > lastIndex) {\r\n var buffer = firstIndex;\r\n firstIndex = lastIndex;\r\n lastIndex = buffer\r\n }\r\n $cells = $cells.slice(firstIndex, lastIndex + 1);\r\n if (this._getGroupCount() > 1) {\r\n var result = [];\r\n var focusedGroupIndex = this._getGroupIndexByCell($first);\r\n (0, _iterator.each)($cells, function(_, cell) {\r\n var groupIndex = this._getGroupIndexByCell((0, _renderer.default)(cell));\r\n if (focusedGroupIndex === groupIndex) {\r\n result.push(cell)\r\n }\r\n }.bind(this));\r\n $cells = (0, _renderer.default)(result)\r\n }\r\n return $cells\r\n };\r\n _proto2._hasAllDayClass = function($cell) {\r\n return $cell.hasClass(ALL_DAY_TABLE_CELL_CLASS)\r\n };\r\n _proto2._getGroupIndexByCell = function($cell) {\r\n if (this.isVirtualScrolling()) {\r\n var _this$_getCoordinates4 = this._getCoordinatesByCell($cell),\r\n rowIndex = _this$_getCoordinates4.rowIndex,\r\n columnIndex = _this$_getCoordinates4.columnIndex;\r\n var isAllDayCell = $cell.hasClass(ALL_DAY_TABLE_CELL_CLASS);\r\n return this.viewDataProvider.getCellData(rowIndex, columnIndex, isAllDayCell).groupIndex\r\n }\r\n return this._groupedStrategy.getGroupIndexByCell($cell)\r\n };\r\n _proto2._toggleFocusedCellClass = function(isFocused, $element) {\r\n var $focusTarget = $element && $element.length ? $element : this._focusTarget();\r\n $focusTarget.toggleClass(DATE_TABLE_FOCUSED_CELL_CLASS, isFocused)\r\n };\r\n _proto2._releaseSelectedAndFocusedCells = function() {\r\n this._releaseFocusedCell();\r\n this._releaseSelectedCells();\r\n this.option(\"selectedCellData\", [])\r\n };\r\n _proto2._releaseFocusedCell = function() {\r\n var $cell = this._$focusedCell;\r\n if ((0, _type.isDefined)($cell) && $cell.length) {\r\n this._toggleFocusedCellClass(false, $cell);\r\n this.setAria(\"label\", void 0, $cell)\r\n }\r\n };\r\n _proto2._releaseSelectedCells = function() {\r\n var $cells = (0, _renderer.default)(this._selectedCells);\r\n if ((0, _type.isDefined)($cells) && $cells.length) {\r\n this._toggleFocusClass(false, $cells);\r\n this.setAria(\"label\", void 0, $cells)\r\n }\r\n };\r\n _proto2._focusInHandler = function(e) {\r\n if ((0, _renderer.default)(e.target).is(this._focusTarget()) && false !== this._isCellClick) {\r\n delete this._isCellClick;\r\n delete this._contextMenuHandled;\r\n _WidgetObserver.prototype._focusInHandler.apply(this, arguments);\r\n var $cell = this._getFocusedCell();\r\n this._setSelectedAndFocusedCells($cell)\r\n }\r\n };\r\n _proto2._focusOutHandler = function() {\r\n _WidgetObserver.prototype._focusOutHandler.apply(this, arguments);\r\n if (!this._contextMenuHandled) {\r\n var _this$virtualSelectio;\r\n this._releaseSelectedAndFocusedCells();\r\n null === (_this$virtualSelectio = this.virtualSelectionState) || void 0 === _this$virtualSelectio ? void 0 : _this$virtualSelectio.releaseSelectedAndFocusedCells()\r\n }\r\n };\r\n _proto2._focusTarget = function() {\r\n return this.$element()\r\n };\r\n _proto2._getDefaultOptions = function() {\r\n return (0, _extend.extend)(_WidgetObserver.prototype._getDefaultOptions.call(this), {\r\n currentDate: new Date,\r\n intervalCount: 1,\r\n startDate: null,\r\n firstDayOfWeek: void 0,\r\n startDayHour: 0,\r\n endDayHour: 24,\r\n hoursInterval: .5,\r\n activeStateEnabled: true,\r\n hoverStateEnabled: true,\r\n groups: [],\r\n showAllDayPanel: true,\r\n allDayExpanded: false,\r\n onCellClick: null,\r\n crossScrollingEnabled: false,\r\n dataCellTemplate: null,\r\n timeCellTemplate: null,\r\n resourceCellTemplate: null,\r\n dateCellTemplate: null,\r\n allowMultipleCellSelection: true,\r\n indicatorTime: new Date,\r\n indicatorUpdateInterval: 5 * toMs(\"minute\"),\r\n shadeUntilCurrentTime: true,\r\n groupOrientation: \"horizontal\",\r\n selectedCellData: [],\r\n groupByDate: false,\r\n scrolling: {\r\n mode: \"standard\"\r\n },\r\n renovateRender: false,\r\n height: void 0\r\n })\r\n };\r\n _proto2._optionChanged = function(args) {\r\n switch (args.name) {\r\n case \"startDayHour\":\r\n case \"endDayHour\":\r\n this.invoke(\"validateDayHours\");\r\n this._cleanWorkSpace();\r\n break;\r\n case \"dateCellTemplate\":\r\n case \"resourceCellTemplate\":\r\n case \"dataCellTemplate\":\r\n case \"timeCellTemplate\":\r\n case \"hoursInterval\":\r\n case \"firstDayOfWeek\":\r\n case \"currentDate\":\r\n case \"startDate\":\r\n this._cleanWorkSpace();\r\n break;\r\n case \"groups\":\r\n this._cleanView();\r\n this._disposeRenovatedComponents();\r\n this._removeAllDayElements();\r\n this._initGrouping();\r\n this.repaint();\r\n break;\r\n case \"groupOrientation\":\r\n this._initGroupedStrategy();\r\n this._createAllDayPanelElements();\r\n this._removeAllDayElements();\r\n this._cleanWorkSpace();\r\n this._toggleGroupByDateClass();\r\n break;\r\n case \"showAllDayPanel\":\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n this._cleanView();\r\n this._disposeRenovatedComponents();\r\n this._removeAllDayElements();\r\n this._initGrouping();\r\n this.repaint()\r\n } else {\r\n this._toggleAllDayVisibility()\r\n }\r\n break;\r\n case \"allDayExpanded\":\r\n this._changeAllDayVisibility();\r\n this._attachTablesEvents();\r\n this.headerPanelOffsetRecalculate();\r\n this._updateScrollable();\r\n break;\r\n case \"onSelectionChanged\":\r\n this._createSelectionChangedAction();\r\n break;\r\n case \"onCellClick\":\r\n this._createCellClickAction();\r\n break;\r\n case \"onCellContextMenu\":\r\n this._attachContextMenuEvent();\r\n break;\r\n case \"intervalCount\":\r\n this._cleanWorkSpace();\r\n this._toggleWorkSpaceCountClass();\r\n this._toggleFixedScrollableClass();\r\n break;\r\n case \"groupByDate\":\r\n this._cleanWorkSpace();\r\n this._toggleGroupByDateClass();\r\n break;\r\n case \"crossScrollingEnabled\":\r\n this._toggleHorizontalScrollClass();\r\n this._dateTableScrollable.option(this._dateTableScrollableConfig());\r\n break;\r\n case \"width\":\r\n _WidgetObserver.prototype._optionChanged.call(this, args);\r\n this._dimensionChanged();\r\n break;\r\n case \"allowMultipleCellSelection\":\r\n break;\r\n case \"selectedCellData\":\r\n break;\r\n case \"scrolling\":\r\n this.option(\"renovateRender\", this._isVirtualModeOn());\r\n break;\r\n case \"renovateRender\":\r\n this._disposeRenovatedComponents();\r\n this.repaint();\r\n break;\r\n default:\r\n _WidgetObserver.prototype._optionChanged.call(this, args)\r\n }\r\n };\r\n _proto2._cleanWorkSpace = function() {\r\n this._cleanView();\r\n this._toggleGroupedClass();\r\n this._toggleWorkSpaceWithOddCells();\r\n this._renderView()\r\n };\r\n _proto2._init = function() {\r\n this._headerSemaphore = new ScrollSemaphore;\r\n this._sideBarSemaphore = new ScrollSemaphore;\r\n this._dataTableSemaphore = new ScrollSemaphore;\r\n this._viewDataProvider = null;\r\n this._virtualSelectionState = null;\r\n this._activeStateUnit = CELL_SELECTOR;\r\n this._maxAllowedVerticalPosition = [];\r\n this._maxAllowedPosition = [];\r\n _WidgetObserver.prototype._init.call(this);\r\n this._initGrouping();\r\n this._toggleHorizontalScrollClass();\r\n this._toggleWorkSpaceCountClass();\r\n this._toggleGroupByDateClass();\r\n this._toggleWorkSpaceWithOddCells();\r\n this.$element().addClass(COMPONENT_CLASS).addClass(this._getElementClass())\r\n };\r\n _proto2._initGrouping = function() {\r\n this._initGroupedStrategy();\r\n this._toggleGroupingDirectionClass();\r\n this._toggleGroupByDateClass()\r\n };\r\n _proto2._initGroupedStrategy = function() {\r\n var strategyName = this.option(\"groups\").length ? this.option(\"groupOrientation\") : this._getDefaultGroupStrategy();\r\n var Strategy = \"vertical\" === strategyName ? _uiSchedulerWork_spaceGroupedStrategy2.default : _uiSchedulerWork_spaceGroupedStrategy.default;\r\n this._groupedStrategy = new Strategy(this)\r\n };\r\n _proto2._getDefaultGroupStrategy = function() {\r\n return \"horizontal\"\r\n };\r\n _proto2._isVerticalGroupedWorkSpace = function() {\r\n return !!this.option(\"groups\").length && \"vertical\" === this.option(\"groupOrientation\")\r\n };\r\n _proto2._isHorizontalGroupedWorkSpace = function() {\r\n return !!this.option(\"groups\").length && \"horizontal\" === this.option(\"groupOrientation\")\r\n };\r\n _proto2._toggleHorizontalScrollClass = function() {\r\n this.$element().toggleClass(WORKSPACE_WITH_BOTH_SCROLLS_CLASS, this.option(\"crossScrollingEnabled\"))\r\n };\r\n _proto2._toggleGroupByDateClass = function() {\r\n this.$element().toggleClass(WORKSPACE_WITH_GROUP_BY_DATE_CLASS, this.isGroupedByDate())\r\n };\r\n _proto2._toggleWorkSpaceCountClass = function() {\r\n this.$element().toggleClass(WORKSPACE_WITH_COUNT_CLASS, this._isWorkSpaceWithCount())\r\n };\r\n _proto2._isWorkSpaceWithCount = function() {\r\n return this.option(\"intervalCount\") > 1\r\n };\r\n _proto2._toggleWorkSpaceWithOddCells = function() {\r\n this.$element().toggleClass(WORKSPACE_WITH_ODD_CELLS_CLASS, this._isWorkspaceWithOddCells())\r\n };\r\n _proto2._isWorkspaceWithOddCells = function() {\r\n return .5 === this.option(\"hoursInterval\") && !this.isVirtualScrolling()\r\n };\r\n _proto2._toggleGroupingDirectionClass = function() {\r\n this.$element().toggleClass(VERTICAL_GROUPED_WORKSPACE_CLASS, this._isVerticalGroupedWorkSpace())\r\n };\r\n _proto2._getRealGroupOrientation = function() {\r\n return this._isVerticalGroupedWorkSpace() ? \"vertical\" : \"horizontal\"\r\n };\r\n _proto2._getTimePanelClass = function() {\r\n return TIME_PANEL_CLASS\r\n };\r\n _proto2._getDateTableClass = function() {\r\n return DATE_TABLE_CLASS\r\n };\r\n _proto2._getDateTableRowClass = function() {\r\n return DATE_TABLE_ROW_CLASS\r\n };\r\n _proto2._getDateTableCellClass = function(i, j) {\r\n var cellClass = DATE_TABLE_CELL_CLASS + \" \" + HORIZONTAL_SIZES_CLASS + \" \" + VERTICAL_SIZES_CLASS;\r\n return this._needApplyLastGroupCellClass() ? this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, j + 1, i, j) : cellClass\r\n };\r\n _proto2._needApplyLastGroupCellClass = function() {\r\n return true\r\n };\r\n _proto2._getGroupRowClass = function() {\r\n return GROUP_ROW_CLASS\r\n };\r\n _proto2._getGroupHeaderClass = function(i) {\r\n var cellClass = GROUP_HEADER_CLASS;\r\n return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, i + 1)\r\n };\r\n _proto2._getGroupHeaderContentClass = function() {\r\n return GROUP_HEADER_CONTENT_CLASS\r\n };\r\n _proto2._initWorkSpaceUnits = function() {\r\n this._$headerPanel = (0, _renderer.default)(\"
\");\r\n this._$thead = (0, _renderer.default)(\"\").appendTo(this._$headerPanel);\r\n this._$fixedContainer = (0, _renderer.default)(\"\").addClass(_constants.FIXED_CONTAINER_CLASS);\r\n this._$allDayContainer = (0, _renderer.default)(\"
\").addClass(ALL_DAY_CONTAINER_CLASS);\r\n this._initAllDayPanelElements();\r\n if (this.isRenovatedRender()) {\r\n this.createRAllDayPanelElements()\r\n } else {\r\n this._createAllDayPanelElements()\r\n }\r\n this._$timePanel = (0, _renderer.default)(\"
\").addClass(this._getTimePanelClass());\r\n this._$dateTable = (0, _renderer.default)(\"\");\r\n this._$groupTable = (0, _renderer.default)(\"\").addClass(WORKSPACE_VERTICAL_GROUP_TABLE_CLASS)\r\n };\r\n _proto2._initAllDayPanelElements = function() {\r\n this._allDayTitles = [];\r\n this._allDayTables = [];\r\n this._allDayPanels = []\r\n };\r\n _proto2.createRAllDayPanelElements = function() {\r\n this._$allDayPanel = (0, _renderer.default)(\"
\");\r\n this._$allDayTitle = (0, _renderer.default)(\"
\").appendTo(this.$element())\r\n };\r\n _proto2._createAllDayPanelElements = function() {\r\n var groupCount = this._getGroupCount();\r\n if (this._isVerticalGroupedWorkSpace() && 0 !== groupCount) {\r\n for (var i = 0; i < groupCount; i++) {\r\n var $allDayTitle = (0, _renderer.default)(\"
\").addClass(ALL_DAY_TITLE_CLASS).text(_message.default.format(\"dxScheduler-allDay\"));\r\n this._allDayTitles.push($allDayTitle);\r\n this._$allDayTable = (0, _renderer.default)(\"
\");\r\n this._allDayTables.push(this._$allDayTable);\r\n this._$allDayPanel = (0, _renderer.default)(\"\").addClass(ALL_DAY_PANEL_CLASS).append(this._$allDayTable);\r\n this._allDayPanels.push(this._$allDayPanel)\r\n }\r\n } else {\r\n this._$allDayTitle = (0, _renderer.default)(\"
\").addClass(ALL_DAY_TITLE_CLASS).text(_message.default.format(\"dxScheduler-allDay\")).appendTo(this.$element());\r\n this._$allDayTable = (0, _renderer.default)(\"
\");\r\n this._$allDayPanel = (0, _renderer.default)(\"\").addClass(ALL_DAY_PANEL_CLASS).append(this._$allDayTable)\r\n }\r\n };\r\n _proto2._initDateTableScrollable = function() {\r\n var $dateTableScrollable = (0, _renderer.default)(\"
\").addClass(SCHEDULER_DATE_TABLE_SCROLLABLE_CLASS);\r\n this._dateTableScrollable = this._createComponent($dateTableScrollable, _ui2.default, this._dateTableScrollableConfig())\r\n };\r\n _proto2._dateTableScrollableConfig = function() {\r\n var config = {\r\n useKeyboard: false,\r\n bounceEnabled: false,\r\n updateManually: true,\r\n pushBackValue: 0\r\n };\r\n if (this._needCreateCrossScrolling()) {\r\n config = (0, _extend.extend)(config, this._createCrossScrollingConfig())\r\n }\r\n return config\r\n };\r\n _proto2._createCrossScrollingConfig = function() {\r\n var _this = this;\r\n var config = {};\r\n config.direction = \"both\";\r\n config.onScroll = function(e) {\r\n _this._dataTableSemaphore.take();\r\n _this._sideBarSemaphore.isFree() && _this._sidebarScrollable && _this._sidebarScrollable.scrollTo({\r\n top: e.scrollOffset.top\r\n });\r\n _this._headerSemaphore.isFree() && _this._headerScrollable && _this._headerScrollable.scrollTo({\r\n left: e.scrollOffset.left\r\n });\r\n _this._dataTableSemaphore.release()\r\n };\r\n config.onEnd = function() {\r\n _this.notifyObserver(\"updateResizableArea\", {})\r\n };\r\n return config\r\n };\r\n _proto2._createWorkSpaceElements = function() {\r\n if (this.option(\"crossScrollingEnabled\")) {\r\n this._createWorkSpaceScrollableElements()\r\n } else {\r\n this._createWorkSpaceStaticElements()\r\n }\r\n };\r\n _proto2._createWorkSpaceStaticElements = function() {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n this._dateTableScrollable.$content().append(this._$allDayContainer, this._$groupTable, this._$timePanel, this._$dateTable);\r\n this.$element().append(this._$fixedContainer, this._$headerPanel, this._dateTableScrollable.$element())\r\n } else {\r\n this._dateTableScrollable.$content().append(this._$timePanel, this._$dateTable);\r\n this.$element().append(this._$fixedContainer, this._$headerPanel, this._$allDayContainer, this._$allDayPanel, this._dateTableScrollable.$element())\r\n }\r\n };\r\n _proto2._createWorkSpaceScrollableElements = function() {\r\n this.$element().append(this._$fixedContainer);\r\n this._createHeaderScrollable();\r\n this._createSidebarScrollable();\r\n this.$element().append(this._dateTableScrollable.$element());\r\n this._headerScrollable.$content().append(this._$headerPanel);\r\n this._dateTableScrollable.$content().append(this._$dateTable);\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n this._dateTableScrollable.$content().prepend(this._$allDayContainer);\r\n this._sidebarScrollable.$content().append(this._$groupTable, this._$timePanel)\r\n } else {\r\n this._headerScrollable.$content().append(this._$allDayContainer, this._$allDayPanel)\r\n }\r\n this._sidebarScrollable.$content().append(this._$timePanel)\r\n };\r\n _proto2._createHeaderScrollable = function() {\r\n var $headerScrollable = (0, _renderer.default)(\"
\").addClass(SCHEDULER_HEADER_SCROLLABLE_CLASS).appendTo(this.$element());\r\n this._headerScrollable = this._createComponent($headerScrollable, _ui2.default, this._headerScrollableConfig())\r\n };\r\n _proto2._headerScrollableConfig = function() {\r\n var _this2 = this;\r\n var config = {\r\n useKeyboard: false,\r\n showScrollbar: false,\r\n direction: \"horizontal\",\r\n useNative: false,\r\n updateManually: true,\r\n bounceEnabled: false,\r\n pushBackValue: 0,\r\n onScroll: function(e) {\r\n _this2._headerSemaphore.take();\r\n _this2._dataTableSemaphore.isFree() && _this2._dateTableScrollable.scrollTo({\r\n left: e.scrollOffset.left\r\n });\r\n _this2._headerSemaphore.release()\r\n }\r\n };\r\n return config\r\n };\r\n _proto2._createSidebarScrollable = function() {\r\n var _this3 = this;\r\n var $timePanelScrollable = (0, _renderer.default)(\"
\").addClass(SCHEDULER_SIDEBAR_SCROLLABLE_CLASS).appendTo(this.$element());\r\n this._sidebarScrollable = this._createComponent($timePanelScrollable, _ui2.default, {\r\n useKeyboard: false,\r\n showScrollbar: false,\r\n direction: \"vertical\",\r\n useNative: false,\r\n updateManually: true,\r\n bounceEnabled: false,\r\n pushBackValue: 0,\r\n onScroll: function(e) {\r\n _this3._sideBarSemaphore.take();\r\n _this3._dataTableSemaphore.isFree() && _this3._dateTableScrollable.scrollTo({\r\n top: e.scrollOffset.top\r\n });\r\n _this3._sideBarSemaphore.release()\r\n }\r\n })\r\n };\r\n _proto2._visibilityChanged = function(visible) {\r\n this.cache.clear();\r\n if (visible && this._isVerticalGroupedWorkSpace()) {\r\n this._setHorizontalGroupHeaderCellsHeight()\r\n }\r\n if (visible && this._needCreateCrossScrolling()) {\r\n this._setTableSizes()\r\n }\r\n };\r\n _proto2._attachTableClasses = function() {\r\n this._addTableClass(this._$dateTable, this._getDateTableClass());\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n var groupCount = this._getGroupCount();\r\n for (var i = 0; i < groupCount; i++) {\r\n this._addTableClass(this._allDayTables[i], ALL_DAY_TABLE_CLASS)\r\n }\r\n } else {\r\n this._addTableClass(this._$allDayTable, ALL_DAY_TABLE_CLASS)\r\n }\r\n };\r\n _proto2._attachHeaderTableClasses = function() {\r\n this._addTableClass(this._$headerPanel, HEADER_PANEL_CLASS)\r\n };\r\n _proto2._addTableClass = function($el, className) {\r\n $el && !$el.hasClass(className) && $el.addClass(className)\r\n };\r\n _proto2._setTableSizes = function() {\r\n this._attachTableClasses();\r\n var cellWidth = this.getCellWidth();\r\n if (cellWidth < this.getCellMinWidth()) {\r\n cellWidth = this.getCellMinWidth()\r\n }\r\n var minWidth = this.getWorkSpaceMinWidth();\r\n var $headerCells = this._$headerPanel.find(\"tr\").last().find(\"th\");\r\n var width = cellWidth * $headerCells.length;\r\n if (width < minWidth) {\r\n width = minWidth\r\n }\r\n this._$headerPanel.width(width);\r\n this._$dateTable.width(width);\r\n this._$allDayTable && this._$allDayTable.width(width);\r\n this._attachHeaderTableClasses();\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n this._setHorizontalGroupHeaderCellsHeight()\r\n }\r\n };\r\n _proto2.getWorkSpaceMinWidth = function() {\r\n return this._groupedStrategy.getWorkSpaceMinWidth()\r\n };\r\n _proto2._dimensionChanged = function() {\r\n if (this.option(\"crossScrollingEnabled\")) {\r\n this._setTableSizes()\r\n }\r\n this.headerPanelOffsetRecalculate();\r\n this.cache.clear();\r\n this._cleanAllowedPositions()\r\n };\r\n _proto2._needCreateCrossScrolling = function() {\r\n return this.option(\"crossScrollingEnabled\")\r\n };\r\n _proto2._getElementClass = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto2._getRowCount = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto2._getRowCountWithAllDayRows = function() {\r\n var allDayRowCount = this._isShowAllDayPanel() ? 1 : 0;\r\n return this._getRowCount() + allDayRowCount\r\n };\r\n _proto2._getCellCount = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto2._initMarkup = function() {\r\n this.cache.clear();\r\n this._initWorkSpaceUnits();\r\n this._initDateTableScrollable();\r\n this._createWorkSpaceElements();\r\n this._initVirtualScrolling();\r\n _WidgetObserver.prototype._initMarkup.call(this);\r\n if (!this.option(\"crossScrollingEnabled\")) {\r\n this._attachTableClasses();\r\n this._attachHeaderTableClasses()\r\n }\r\n this._toggleGroupedClass();\r\n this._toggleFixedScrollableClass();\r\n this._renderView();\r\n this._attachEvents();\r\n this._setFocusOnCellByOption(this.option(\"selectedCellData\"))\r\n };\r\n _proto2.isRenovatedRender = function() {\r\n return this.renovatedRenderSupported() && this.option(\"renovateRender\")\r\n };\r\n _proto2._isVirtualModeOn = function() {\r\n return \"virtual\" === this.option(\"scrolling.mode\")\r\n };\r\n _proto2.isVirtualScrolling = function() {\r\n return this.isRenovatedRender() && this._isVirtualModeOn()\r\n };\r\n _proto2._initVirtualScrolling = function() {\r\n if (this.virtualScrollingDispatcher) {\r\n this.virtualScrollingDispatcher.dispose();\r\n this.virtualScrollingDispatcher = null\r\n }\r\n if (this.isVirtualScrolling()) {\r\n this.virtualScrollingDispatcher = new _uiScheduler2.default(this)\r\n }\r\n };\r\n _proto2._render = function() {\r\n _WidgetObserver.prototype._render.call(this);\r\n this._renderDateTimeIndication();\r\n this._setIndicationUpdateInterval()\r\n };\r\n _proto2._toggleGroupedClass = function() {\r\n this.$element().toggleClass(GROUPED_WORKSPACE_CLASS, this._getGroupCount() > 0)\r\n };\r\n _proto2._toggleFixedScrollableClass = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto2._renderView = function() {\r\n this._setFirstViewDate();\r\n this._applyCellTemplates(this._renderGroupHeader());\r\n this._renderDateHeader();\r\n if (this.isRenovatedRender()) {\r\n this.renderRWorkspace()\r\n } else {\r\n this._renderTimePanel();\r\n this._renderGroupAllDayPanel();\r\n this._renderDateTable();\r\n this._renderAllDayPanel()\r\n }\r\n this._updateGroupTableHeight();\r\n this._shader = new _uiSchedulerCurrent_time_shader.default(this)\r\n };\r\n _proto2.isGroupedAllDayPanel = function() {\r\n return this._isShowAllDayPanel() && this._isVerticalGroupedWorkSpace()\r\n };\r\n _proto2.generateRenderOptions = function() {\r\n var groupCount = this._getGroupCount();\r\n var verticalGroupCount = !this._isVerticalGroupedWorkSpace() ? 1 : groupCount;\r\n var horizontalGroupCount = this._isVerticalGroupedWorkSpace() ? 1 : groupCount;\r\n var allDayElements = this._insertAllDayRowsIntoDateTable() ? this._allDayTitles : void 0;\r\n var rowCountInGroup = this._getRowCount();\r\n var cellCount = this._getTotalCellCount(groupCount);\r\n var options = {\r\n horizontalGroupCount: horizontalGroupCount,\r\n verticalGroupCount: verticalGroupCount,\r\n rowCountInGroup: rowCountInGroup,\r\n cellCount: cellCount,\r\n cellCountInGroupRow: this._getCellCount(),\r\n cellDataGetters: [this._getCellData.bind(this)],\r\n allDayElements: allDayElements,\r\n startRowIndex: 0,\r\n groupOrientation: this.option(\"groupOrientation\"),\r\n nonVirtualRowCount: this._getRowCount(),\r\n groupCount: groupCount\r\n };\r\n if (this.isVirtualScrolling()) {\r\n (0, _extend.extend)(options, this.virtualScrollingDispatcher.renderState)\r\n } else {\r\n options.rowCount = this._getTotalRowCount(groupCount, this._isVerticalGroupedWorkSpace())\r\n }\r\n return options\r\n };\r\n _proto2.renovatedRenderSupported = function() {\r\n return false\r\n };\r\n _proto2.renderRWorkspace = function() {\r\n var _this$virtualScrollin2;\r\n var isGenerateNewViewData = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : true;\r\n this._cleanAllowedPositions();\r\n this.viewDataProvider.update(isGenerateNewViewData);\r\n this.renderRAllDayPanel();\r\n this.renderRTimeTable();\r\n this.renderRDateTable();\r\n this.updateRSelection();\r\n null === (_this$virtualScrollin2 = this.virtualScrollingDispatcher) || void 0 === _this$virtualScrollin2 ? void 0 : _this$virtualScrollin2.updateDimensions()\r\n };\r\n _proto2.renderRAllDayPanel = function() {\r\n var visible = this._isShowAllDayPanel() && !this.isGroupedAllDayPanel();\r\n if (visible) {\r\n var options = {\r\n viewData: this.viewDataProvider.viewData,\r\n visible: visible,\r\n dataCellTemplate: this.option(\"dataCellTemplate\")\r\n };\r\n this.renderRComponent(this._$allDayPanel, _layout.default, \"renovatedAllDayPanel\", options);\r\n this.renderRComponent(this._$allDayTitle, _title.default, \"renovatedAllDayPanelTitle\", {\r\n visible: visible\r\n });\r\n this._$allDayTable = this.renovatedAllDayPanel.$element().find(\".\".concat(ALL_DAY_TABLE_CLASS))\r\n }\r\n this._toggleAllDayVisibility()\r\n };\r\n _proto2.renderRTimeTable = function() {\r\n this.renderRComponent(this._$timePanel, _layout2.default, \"renovatedTimePanel\", {\r\n viewData: this.viewDataProvider.viewData,\r\n timeCellTemplate: this.option(\"timeCellTemplate\")\r\n })\r\n };\r\n _proto2.renderRDateTable = function() {};\r\n _proto2.renderRComponent = function(parentElement, componentClass, componentName, viewModel) {\r\n var component = this[componentName];\r\n if (!component) {\r\n var container = (0, _element.getPublicElement)(parentElement);\r\n component = this._createComponent(container, componentClass, _objectSpread(_objectSpread({}, viewModel), {}, {\r\n groupOrientation: this.option(\"groupOrientation\")\r\n }));\r\n this[componentName] = component\r\n } else {\r\n Object.getOwnPropertyNames(viewModel).forEach(function(optionName) {\r\n component.option(optionName, viewModel[optionName])\r\n })\r\n }\r\n };\r\n _proto2.updateRSelection = function() {\r\n var isVerticalGrouping = this._isVerticalGroupedWorkSpace();\r\n var focusedCell = this.virtualSelectionState.getFocusedCell(isVerticalGrouping);\r\n var selectedCells = this.virtualSelectionState.getSelectedCells();\r\n if (focusedCell) {\r\n var coordinates = focusedCell.coordinates,\r\n cellData = focusedCell.cellData;\r\n var $cell = !isVerticalGrouping && cellData.allDay ? this._dom_getAllDayPanelCell(coordinates.cellIndex) : this._dom_getDateCell(coordinates);\r\n $cell && this._setFocusedCell($cell)\r\n }\r\n selectedCells && this._setSelectedCellsByCellData(selectedCells)\r\n };\r\n _proto2._updateGroupTableHeight = function() {\r\n if (this._isVerticalGroupedWorkSpace() && (0, _window.hasWindow)()) {\r\n this._setHorizontalGroupHeaderCellsHeight()\r\n }\r\n };\r\n _proto2._renderDateTimeIndication = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto2._setIndicationUpdateInterval = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto2._refreshDateTimeIndication = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto2._setFocusOnCellByOption = function(data) {\r\n this._releaseSelectedAndFocusedCells();\r\n this._setSelectedCellsByCellData(data)\r\n };\r\n _proto2._setSelectedCellsByCellData = function(data) {\r\n var _data$, _this4 = this;\r\n var cells = [];\r\n var $cells = this._getAllCells(null === data || void 0 === data ? void 0 : null === (_data$ = data[0]) || void 0 === _data$ ? void 0 : _data$.allDay);\r\n var cellsInRow = this._getTotalCellCount(this._getGroupCount());\r\n data.forEach(function(cellData) {\r\n var groups = cellData.groups,\r\n startDate = cellData.startDate,\r\n allDay = cellData.allDay;\r\n var groupIndex = cellData.groupIndex;\r\n if (!groupIndex) {\r\n groupIndex = _this4._isGroupsSpecified(groups) ? _this4._getGroupIndexByResourceId(groups) : 0\r\n }\r\n var coordinates = _this4.isVirtualScrolling() ? _this4.viewDataProvider.findCellPositionInMap(groupIndex, startDate, allDay) : _this4.getCoordinatesByDate(startDate, groupIndex, allDay);\r\n if (coordinates) {\r\n var rowIndex = coordinates.rowIndex,\r\n cellIndex = coordinates.cellIndex;\r\n var index = rowIndex * cellsInRow + cellIndex;\r\n var $cell = $cells[index];\r\n if ((0, _type.isDefined)($cell)) {\r\n _this4._toggleFocusClass(true, (0, _renderer.default)($cell));\r\n cells.push($cell)\r\n }\r\n }\r\n });\r\n this._selectedCells = cells\r\n };\r\n _proto2._isGroupsSpecified = function(resources) {\r\n return this.option(\"groups\").length && resources\r\n };\r\n _proto2._getGroupIndexByResourceId = function(id) {\r\n var groups = this.option(\"groups\");\r\n var resourceTree = this.invoke(\"createResourcesTree\", groups);\r\n if (!resourceTree.length) {\r\n return 0\r\n }\r\n return this._getGroupIndexRecursively(resourceTree, id)\r\n };\r\n _proto2._getGroupIndexRecursively = function(resourceTree, id) {\r\n var _this5 = this;\r\n var currentKey = resourceTree[0].name;\r\n var currentValue = id[currentKey];\r\n return resourceTree.reduce(function(prevIndex, _ref2) {\r\n var leafIndex = _ref2.leafIndex,\r\n value = _ref2.value,\r\n children = _ref2.children;\r\n var areValuesEqual = currentValue === value;\r\n if (areValuesEqual && void 0 !== leafIndex) {\r\n return leafIndex\r\n }\r\n if (areValuesEqual) {\r\n return _this5._getGroupIndexRecursively(children, id)\r\n }\r\n return prevIndex\r\n }, 0)\r\n };\r\n _proto2._getCalculatedFirstDayOfWeek = function() {\r\n var firstDayOfWeekOption = this._firstDayOfWeek();\r\n var firstDayOfWeek = (0, _type.isDefined)(firstDayOfWeekOption) ? firstDayOfWeekOption : _date2.default.firstDayOfWeekIndex();\r\n return firstDayOfWeek\r\n };\r\n _proto2._setFirstViewDate = function() {\r\n var firstDayOfWeek = this._getCalculatedFirstDayOfWeek();\r\n this._firstViewDate = _date.default.getFirstWeekDate(this._getViewStartByOptions(), firstDayOfWeek);\r\n this._setStartDayHour(this._firstViewDate)\r\n };\r\n _proto2._getViewStartByOptions = function() {\r\n if (!this.option(\"startDate\")) {\r\n return this.option(\"currentDate\")\r\n } else {\r\n var startDate = _date.default.trimTime(this._getStartViewDate());\r\n var currentDate = this.option(\"currentDate\");\r\n var diff = startDate.getTime() <= currentDate.getTime() ? 1 : -1;\r\n var endDate = new Date(startDate.getTime() + this._getIntervalDuration() * diff);\r\n while (!(0, _base.isDateInRange)(currentDate, startDate, endDate, diff)) {\r\n startDate = endDate;\r\n endDate = new Date(startDate.getTime() + this._getIntervalDuration() * diff)\r\n }\r\n return diff > 0 ? startDate : endDate\r\n }\r\n };\r\n _proto2._getHeaderDate = function() {\r\n return this.getStartViewDate()\r\n };\r\n _proto2._getStartViewDate = function() {\r\n return this.option(\"startDate\")\r\n };\r\n _proto2._getIntervalDuration = function() {\r\n return toMs(\"day\") * this.option(\"intervalCount\")\r\n };\r\n _proto2._setStartDayHour = function(date) {\r\n var startDayHour = this.option(\"startDayHour\");\r\n if ((0, _type.isDefined)(startDayHour)) {\r\n date.setHours(startDayHour, startDayHour % 1 * 60, 0, 0)\r\n }\r\n };\r\n _proto2._firstDayOfWeek = function() {\r\n return this.option(\"firstDayOfWeek\")\r\n };\r\n _proto2._attachEvents = function() {\r\n this._createSelectionChangedAction();\r\n this._attachClickEvent();\r\n this._attachContextMenuEvent()\r\n };\r\n _proto2._attachClickEvent = function() {\r\n var that = this;\r\n var pointerDownAction = this._createAction(function(e) {\r\n that._pointerDownHandler(e.event)\r\n });\r\n this._createCellClickAction();\r\n var cellSelector = \".\" + DATE_TABLE_CELL_CLASS + \",.\" + ALL_DAY_TABLE_CELL_CLASS;\r\n var $element = this.$element();\r\n _events_engine.default.off($element, SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME);\r\n _events_engine.default.off($element, SCHEDULER_CELL_DXCLICK_EVENT_NAME);\r\n _events_engine.default.on($element, SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME, function(e) {\r\n if ((0, _index.isMouseEvent)(e) && e.which > 1) {\r\n e.preventDefault();\r\n return\r\n }\r\n pointerDownAction({\r\n event: e\r\n })\r\n });\r\n _events_engine.default.on($element, SCHEDULER_CELL_DXCLICK_EVENT_NAME, cellSelector, function(e) {\r\n var $cell = (0, _renderer.default)(e.target);\r\n that._cellClickAction({\r\n event: e,\r\n cellElement: (0, _element.getPublicElement)($cell),\r\n cellData: that.getCellData($cell)\r\n })\r\n })\r\n };\r\n _proto2._createCellClickAction = function() {\r\n var _this6 = this;\r\n this._cellClickAction = this._createActionByOption(\"onCellClick\", {\r\n afterExecute: function(e) {\r\n return _this6._cellClickHandler(e.args[0].event)\r\n }\r\n })\r\n };\r\n _proto2._createSelectionChangedAction = function() {\r\n this._selectionChangedAction = this._createActionByOption(\"onSelectionChanged\")\r\n };\r\n _proto2._cellClickHandler = function(e) {\r\n var $target = (0, _renderer.default)(e.target);\r\n if (this._showPopup && this._hasFocusClass($target)) {\r\n delete this._showPopup;\r\n this._showAddAppointmentPopup($target)\r\n }\r\n };\r\n _proto2._pointerDownHandler = function(e) {\r\n var $target = (0, _renderer.default)(e.target);\r\n if (!$target.hasClass(DATE_TABLE_CELL_CLASS) && !$target.hasClass(ALL_DAY_TABLE_CELL_CLASS)) {\r\n this._isCellClick = false;\r\n return\r\n }\r\n this._isCellClick = true;\r\n if ($target.hasClass(DATE_TABLE_FOCUSED_CELL_CLASS)) {\r\n this._showPopup = true\r\n } else {\r\n this._setSelectedAndFocusedCells($target)\r\n }\r\n };\r\n _proto2._showAddAppointmentPopup = function($cell) {\r\n var firstCellData = this.getCellData($cell.first());\r\n var lastCellData = this.getCellData($cell.last());\r\n if (this.isVirtualScrolling()) {\r\n var selectedCells = this.virtualSelectionState.getSelectedCells();\r\n firstCellData = selectedCells[0];\r\n lastCellData = selectedCells[selectedCells.length - 1]\r\n }\r\n var result = {\r\n startDate: firstCellData.startDate,\r\n endDate: lastCellData.endDate\r\n };\r\n if (void 0 !== lastCellData.allDay) {\r\n result.allDay = lastCellData.allDay\r\n }\r\n this.invoke(\"showAddAppointmentPopup\", result, lastCellData.groups)\r\n };\r\n _proto2._attachContextMenuEvent = function() {\r\n this._createContextMenuAction();\r\n var cellSelector = \".\" + DATE_TABLE_CELL_CLASS + \",.\" + ALL_DAY_TABLE_CELL_CLASS;\r\n var $element = this.$element();\r\n var eventName = (0, _index.addNamespace)(_contextmenu.name, this.NAME);\r\n _events_engine.default.off($element, eventName, cellSelector);\r\n _events_engine.default.on($element, eventName, cellSelector, this._contextMenuHandler.bind(this))\r\n };\r\n _proto2._contextMenuHandler = function(e) {\r\n var $cell = (0, _renderer.default)(e.target);\r\n this._contextMenuAction({\r\n event: e,\r\n cellElement: (0, _element.getPublicElement)($cell),\r\n cellData: this.getCellData($cell)\r\n });\r\n this._contextMenuHandled = true\r\n };\r\n _proto2._createContextMenuAction = function() {\r\n this._contextMenuAction = this._createActionByOption(\"onCellContextMenu\")\r\n };\r\n _proto2._getGroupHeaderContainer = function() {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n return this._$groupTable\r\n }\r\n return this._$thead\r\n };\r\n _proto2._getDateHeaderContainer = function() {\r\n return this._$thead\r\n };\r\n _proto2._renderGroupHeader = function() {\r\n var $container = this._getGroupHeaderContainer();\r\n var groupCount = this._getGroupCount();\r\n var cellTemplates = [];\r\n if (groupCount) {\r\n var groupRows = this._makeGroupRows(this.option(\"groups\"), this.option(\"groupByDate\"));\r\n this._attachGroupCountAttr(groupCount, groupRows);\r\n $container.append(groupRows.elements);\r\n cellTemplates = groupRows.cellTemplates\r\n } else {\r\n this._detachGroupCountAttr()\r\n }\r\n return cellTemplates\r\n };\r\n _proto2._applyCellTemplates = function(templates) {\r\n templates.forEach(function(template) {\r\n template()\r\n })\r\n };\r\n _proto2._detachGroupCountAttr = function() {\r\n var groupedAttr = this._groupedStrategy.getGroupCountAttr();\r\n this.$element().removeAttr(groupedAttr.attr)\r\n };\r\n _proto2._attachGroupCountAttr = function(groupRowCount, groupRows) {\r\n var groupedAttr = this._groupedStrategy.getGroupCountAttr(groupRowCount, groupRows);\r\n this.$element().attr(groupedAttr.attr, groupedAttr.count)\r\n };\r\n _proto2.headerPanelOffsetRecalculate = function() {\r\n if (!this.option(\"resourceCellTemplate\") && !this.option(\"dateCellTemplate\")) {\r\n return\r\n }\r\n var headerPanelHeight = this.getHeaderPanelHeight();\r\n var headerHeight = this.invoke(\"getHeaderHeight\");\r\n var allDayPanelHeight = this.supportAllDayRow() && this._isShowAllDayPanel() ? this._groupedStrategy.getAllDayTableHeight() : 0;\r\n headerPanelHeight && this._headerScrollable && this._headerScrollable.$element().height(headerPanelHeight + allDayPanelHeight);\r\n headerPanelHeight && this._dateTableScrollable.$element().css({\r\n paddingBottom: allDayPanelHeight + headerPanelHeight + \"px\",\r\n marginBottom: -1 * (parseInt(headerPanelHeight, 10) + allDayPanelHeight) + \"px\"\r\n });\r\n headerPanelHeight && this._sidebarScrollable && this._sidebarScrollable.$element().css({\r\n paddingBottom: allDayPanelHeight + headerPanelHeight + \"px\",\r\n marginBottom: -1 * (parseInt(headerPanelHeight, 10) + allDayPanelHeight) + \"px\"\r\n });\r\n this._$allDayTitle && this._$allDayTitle.css(\"top\", headerHeight + headerPanelHeight + \"px\")\r\n };\r\n _proto2._makeGroupRows = function(groups, groupByDate) {\r\n var tableCreatorStrategy = this._isVerticalGroupedWorkSpace() ? tableCreator.VERTICAL : tableCreator.HORIZONTAL;\r\n return tableCreator.makeGroupedTable(tableCreatorStrategy, groups, {\r\n groupHeaderRowClass: this._getGroupRowClass(),\r\n groupRowClass: this._getGroupRowClass(),\r\n groupHeaderClass: this._getGroupHeaderClass.bind(this),\r\n groupHeaderContentClass: this._getGroupHeaderContentClass()\r\n }, this._getCellCount() || 1, this.option(\"resourceCellTemplate\"), this._getGroupCount(), groupByDate)\r\n };\r\n _proto2._getDateHeaderTemplate = function() {\r\n return this.option(\"dateCellTemplate\")\r\n };\r\n _proto2._renderDateHeader = function() {\r\n var container = this._getDateHeaderContainer();\r\n var $headerRow = (0, _renderer.default)(\"
\").addClass(HEADER_ROW_CLASS);\r\n var count = this._getCellCount();\r\n var cellTemplate = this._getDateHeaderTemplate();\r\n var repeatCount = this._getCalculateHeaderCellRepeatCount();\r\n var templateCallbacks = [];\r\n var groupByDate = this.isGroupedByDate();\r\n if (!groupByDate) {\r\n for (var rowIndex = 0; rowIndex < repeatCount; rowIndex++) {\r\n for (var cellIndex = 0; cellIndex < count; cellIndex++) {\r\n var templateIndex = rowIndex * repeatCount + cellIndex;\r\n this._renderDateHeaderTemplate($headerRow, cellIndex, templateIndex, cellTemplate, templateCallbacks)\r\n }\r\n }\r\n container.append($headerRow)\r\n } else {\r\n var colSpan = groupByDate ? this._getGroupCount() : 1;\r\n for (var _cellIndex = 0; _cellIndex < count; _cellIndex++) {\r\n var _templateIndex = _cellIndex * repeatCount;\r\n var cellElement = this._renderDateHeaderTemplate($headerRow, _cellIndex, _templateIndex, cellTemplate, templateCallbacks);\r\n cellElement.attr(\"colSpan\", colSpan)\r\n }\r\n container.prepend($headerRow)\r\n }\r\n this._applyCellTemplates(templateCallbacks);\r\n return $headerRow\r\n };\r\n _proto2._renderDateHeaderTemplate = function(container, panelCellIndex, templateIndex, cellTemplate, templateCallbacks) {\r\n var text = this._getHeaderText(panelCellIndex);\r\n var $cell = (0, _renderer.default)(\"\").addClass(this._getHeaderPanelCellClass(panelCellIndex)).attr(\"title\", text);\r\n if (null !== cellTemplate && void 0 !== cellTemplate && cellTemplate.render) {\r\n templateCallbacks.push(cellTemplate.render.bind(cellTemplate, {\r\n model: {\r\n text: text,\r\n date: this._getDateByIndex(panelCellIndex)\r\n },\r\n index: templateIndex,\r\n container: (0, _element.getPublicElement)($cell)\r\n }))\r\n } else {\r\n $cell.text(text)\r\n }\r\n container.append($cell);\r\n return $cell\r\n };\r\n _proto2._getHeaderPanelCellClass = function(i) {\r\n var cellClass = HEADER_PANEL_CELL_CLASS + \" \" + HORIZONTAL_SIZES_CLASS;\r\n return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, i + 1, void 0, void 0, this.isGroupedByDate())\r\n };\r\n _proto2._getCalculateHeaderCellRepeatCount = function() {\r\n return this._groupedStrategy.calculateHeaderCellRepeatCount()\r\n };\r\n _proto2._renderAllDayPanel = function(index) {\r\n var cellCount = this._getCellCount();\r\n if (!this._isVerticalGroupedWorkSpace()) {\r\n cellCount *= this._getGroupCount() || 1\r\n }\r\n var cellTemplates = this._renderTableBody({\r\n container: this._allDayPanels.length ? (0, _element.getPublicElement)(this._allDayTables[index]) : (0, _element.getPublicElement)(this._$allDayTable),\r\n rowCount: 1,\r\n cellCount: cellCount,\r\n cellClass: this._getAllDayPanelCellClass.bind(this),\r\n rowClass: ALL_DAY_TABLE_ROW_CLASS,\r\n cellTemplate: this.option(\"dataCellTemplate\"),\r\n getCellData: this._getAllDayCellData.bind(this),\r\n groupIndex: index\r\n }, true);\r\n this._toggleAllDayVisibility();\r\n this._applyCellTemplates(cellTemplates)\r\n };\r\n _proto2._renderGroupAllDayPanel = function() {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n var groupCount = this._getGroupCount();\r\n for (var i = 0; i < groupCount; i++) {\r\n this._renderAllDayPanel(i)\r\n }\r\n }\r\n };\r\n _proto2._getAllDayPanelCellClass = function(i, j) {\r\n var cellClass = ALL_DAY_TABLE_CELL_CLASS + \" \" + HORIZONTAL_SIZES_CLASS;\r\n return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, j + 1)\r\n };\r\n _proto2._getAllDayCellData = function(cell, rowIndex, cellIndex, groupIndex) {\r\n var startDate = this._getDateByCellIndexes(rowIndex, cellIndex);\r\n var cellGroupIndex = groupIndex || this._getGroupIndex(rowIndex, cellIndex);\r\n startDate = _date.default.trimTime(startDate);\r\n var data = {\r\n startDate: startDate,\r\n endDate: startDate,\r\n allDay: true,\r\n groupIndex: cellGroupIndex\r\n };\r\n var groups = this._getCellGroups(cellGroupIndex);\r\n if (groups.length) {\r\n data.groups = {}\r\n }\r\n for (var i = 0; i < groups.length; i++) {\r\n data.groups[groups[i].name] = groups[i].id\r\n }\r\n return {\r\n key: CELL_DATA,\r\n value: data\r\n }\r\n };\r\n _proto2._toggleAllDayVisibility = function() {\r\n var showAllDayPanel = this._isShowAllDayPanel();\r\n this._$allDayPanel.toggle(showAllDayPanel);\r\n this._$allDayTitle && this._$allDayTitle.toggleClass(ALL_DAY_TITLE_HIDDEN_CLASS, !showAllDayPanel);\r\n this.$element().toggleClass(WORKSPACE_WITH_ALL_DAY_CLASS, showAllDayPanel);\r\n this._changeAllDayVisibility();\r\n this._updateScrollable()\r\n };\r\n _proto2._changeAllDayVisibility = function() {\r\n this.$element().toggleClass(WORKSPACE_WITH_COLLAPSED_ALL_DAY_CLASS, !this.option(\"allDayExpanded\") && this._isShowAllDayPanel())\r\n };\r\n _proto2._updateScrollable = function() {\r\n this._dateTableScrollable.update();\r\n this._headerScrollable && this._headerScrollable.update();\r\n this._sidebarScrollable && this._sidebarScrollable.update()\r\n };\r\n _proto2._renderTimePanel = function() {\r\n var _this7 = this;\r\n var repeatCount = this._groupedStrategy.calculateTimeCellRepeatCount();\r\n var startViewDate = _utils.default.getDateWithoutTimezoneChange(this.getStartViewDate());\r\n var _getTimeText = function(i) {\r\n var index = i % _this7._getRowCount();\r\n if (index % 2 === 0) {\r\n return _date2.default.format(_this7._getTimeCellDateCore(startViewDate, i), \"shorttime\")\r\n }\r\n return \"\"\r\n };\r\n this._renderTableBody({\r\n container: (0, _element.getPublicElement)(this._$timePanel),\r\n rowCount: this._getTimePanelRowCount() * repeatCount,\r\n cellCount: 1,\r\n cellClass: this._getTimeCellClass.bind(this),\r\n rowClass: TIME_PANEL_ROW_CLASS,\r\n cellTemplate: this.option(\"timeCellTemplate\"),\r\n getCellText: _getTimeText.bind(this),\r\n getCellDate: this._getTimeCellDate.bind(this),\r\n groupCount: this._getGroupCount(),\r\n allDayElements: this._insertAllDayRowsIntoDateTable() ? this._allDayTitles : void 0\r\n })\r\n };\r\n _proto2._getTimePanelRowCount = function() {\r\n return this._getCellCountInDay()\r\n };\r\n _proto2._getCellCountInDay = function(skipRound) {\r\n var result = this._calculateDayDuration() / this.option(\"hoursInterval\");\r\n return skipRound ? result : Math.ceil(result)\r\n };\r\n _proto2._calculateDayDuration = function() {\r\n return this.option(\"endDayHour\") - this.option(\"startDayHour\")\r\n };\r\n _proto2._getTimeCellClass = function(i) {\r\n var cellClass = TIME_PANEL_CELL_CLASS + \" \" + VERTICAL_SIZES_CLASS;\r\n return this._isVerticalGroupedWorkSpace() ? this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, i, i) : cellClass\r\n };\r\n _proto2._getTimeCellDate = function(i) {\r\n return this._getTimeCellDateCore(this.getStartViewDate(), i)\r\n };\r\n _proto2._getTimeCellDateCore = function(startViewDate, i) {\r\n var result = new Date(startViewDate);\r\n var timeCellDuration = Math.round(this.getCellDuration());\r\n var cellCountInDay = this._getCellCountInDay(true);\r\n result.setMilliseconds(result.getMilliseconds() + timeCellDuration * (i % cellCountInDay));\r\n return result\r\n };\r\n _proto2._renderDateTable = function() {\r\n var groupCount = this._getGroupCount();\r\n this._renderTableBody({\r\n container: (0, _element.getPublicElement)(this._$dateTable),\r\n rowCount: this._getTotalRowCount(groupCount),\r\n cellCount: this._getTotalCellCount(groupCount),\r\n cellClass: this._getDateTableCellClass.bind(this),\r\n rowClass: this._getDateTableRowClass(),\r\n cellTemplate: this.option(\"dataCellTemplate\"),\r\n getCellData: this._getCellData.bind(this),\r\n allDayElements: this._insertAllDayRowsIntoDateTable() ? this._allDayPanels : void 0,\r\n groupCount: groupCount,\r\n groupByDate: this.option(\"groupByDate\")\r\n })\r\n };\r\n _proto2._insertAllDayRowsIntoDateTable = function() {\r\n return this._groupedStrategy.insertAllDayRowsIntoDateTable()\r\n };\r\n _proto2._getTotalCellCount = function(groupCount) {\r\n return this._groupedStrategy.getTotalCellCount(groupCount)\r\n };\r\n _proto2._getTotalRowCount = function(groupCount, includeAllDayPanelRows) {\r\n var result = this._groupedStrategy.getTotalRowCount(groupCount);\r\n if (includeAllDayPanelRows && groupCount > 1 && this._isShowAllDayPanel()) {\r\n result += groupCount\r\n }\r\n return result\r\n };\r\n _proto2._getCellData = function(cell, rowIndex, cellIndex) {\r\n var data = this._prepareCellData(rowIndex, cellIndex, cell);\r\n return {\r\n key: CELL_DATA,\r\n value: data\r\n }\r\n };\r\n _proto2._prepareCellData = function(rowIndex, cellIndex) {\r\n var startDate = this._getDateByCellIndexes(rowIndex, cellIndex);\r\n var endDate = this.calculateEndDate(startDate);\r\n var groupIndex = this._getGroupIndex(rowIndex, cellIndex);\r\n var data = {\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: this._getTableAllDay(),\r\n groupIndex: groupIndex\r\n };\r\n var groups = this._getCellGroups(groupIndex);\r\n if (groups.length) {\r\n data.groups = {}\r\n }\r\n for (var i = 0; i < groups.length; i++) {\r\n data.groups[groups[i].name] = groups[i].id\r\n }\r\n return data\r\n };\r\n _proto2._getGroupIndex = function(rowIndex, cellIndex) {\r\n return this._groupedStrategy.getGroupIndex(rowIndex, cellIndex)\r\n };\r\n _proto2._getTableAllDay = function() {\r\n return false\r\n };\r\n _proto2.calculateEndDate = function(startDate) {\r\n var result = new Date(startDate);\r\n result.setMilliseconds(result.getMilliseconds() + Math.round(this._getInterval()));\r\n return result\r\n };\r\n _proto2._getGroupCount = function() {\r\n var groups = this.option(\"groups\");\r\n var result = 0;\r\n for (var i = 0, len = groups.length; i < len; i++) {\r\n if (!i) {\r\n result = groups[i].items.length\r\n } else {\r\n result *= groups[i].items.length\r\n }\r\n }\r\n return result\r\n };\r\n _proto2._getPathToLeaf = function(leafIndex) {\r\n var tree = this.invoke(\"createResourcesTree\", this.option(\"groups\"));\r\n\r\n function findLeafByIndex(data, index) {\r\n for (var i = 0; i < data.length; i++) {\r\n if (data[i].leafIndex === index) {\r\n return data[i]\r\n } else {\r\n var _leaf = findLeafByIndex(data[i].children, index);\r\n if (_leaf) {\r\n return _leaf\r\n }\r\n }\r\n }\r\n }\r\n\r\n function makeBranch(leaf, result) {\r\n result = result || [];\r\n result.push(leaf.value);\r\n if (leaf.parent) {\r\n makeBranch(leaf.parent, result)\r\n }\r\n return result\r\n }\r\n var leaf = findLeafByIndex(tree, leafIndex);\r\n return makeBranch(leaf).reverse()\r\n };\r\n _proto2._getCellGroups = function(groupIndex) {\r\n var result = [];\r\n if (this._getGroupCount()) {\r\n var groups = this.option(\"groups\");\r\n if (groupIndex < 0) {\r\n return\r\n }\r\n var path = this._getPathToLeaf(groupIndex);\r\n for (var i = 0; i < groups.length; i++) {\r\n result.push({\r\n name: groups[i].name,\r\n id: path[i]\r\n })\r\n }\r\n }\r\n return result\r\n };\r\n _proto2._attachTablesEvents = function() {\r\n var _this8 = this;\r\n var that = this;\r\n var isPointerDown = false;\r\n var cellHeight;\r\n var cellWidth;\r\n var $element = this.$element();\r\n _events_engine.default.off($element, SCHEDULER_CELL_DXDRAGENTER_EVENT_NAME);\r\n _events_engine.default.off($element, SCHEDULER_CELL_DXDRAGLEAVE_EVENT_NAME);\r\n _events_engine.default.off($element, SCHEDULER_CELL_DXDROP_EVENT_NAME);\r\n _events_engine.default.off($element, SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME);\r\n _events_engine.default.off($element, SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME);\r\n _events_engine.default.on($element, SCHEDULER_CELL_DXDRAGENTER_EVENT_NAME, SCHEDULER_DRAG_AND_DROP_SELECTOR, {\r\n itemSizeFunc: function($element) {\r\n if (!cellHeight) {\r\n cellHeight = (0, _position.getBoundingRect)($element.get(0)).height\r\n }\r\n if (!cellWidth) {\r\n cellWidth = (0, _position.getBoundingRect)($element.get(0)).width\r\n }\r\n return {\r\n width: cellWidth,\r\n height: cellHeight\r\n }\r\n },\r\n checkDropTarget: function(target, event) {\r\n return !_this8._isOutsideScrollable(target, event)\r\n }\r\n }, function(e) {\r\n if (that._$currentTableTarget) {\r\n that.removeDroppableCellClass(that._$currentTableTarget)\r\n }\r\n that._$currentTableTarget = (0, _renderer.default)(e.target);\r\n that._$currentTableTarget.addClass(DATE_TABLE_DROPPABLE_CELL_CLASS)\r\n });\r\n _events_engine.default.on($element, SCHEDULER_CELL_DXDRAGLEAVE_EVENT_NAME, function(e) {\r\n if (!$element.find((0, _renderer.default)(e.draggingElement)).length) {\r\n that.removeDroppableCellClass()\r\n }\r\n });\r\n _events_engine.default.on($element, SCHEDULER_CELL_DXDROP_EVENT_NAME, SCHEDULER_DRAG_AND_DROP_SELECTOR, function(e) {\r\n that.removeDroppableCellClass((0, _renderer.default)(e.target));\r\n cellHeight = 0;\r\n cellWidth = 0\r\n });\r\n _events_engine.default.on($element, SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME, SCHEDULER_DRAG_AND_DROP_SELECTOR, function(e) {\r\n if ((0, _index.isMouseEvent)(e) && 1 === e.which) {\r\n isPointerDown = true;\r\n that.$element().addClass(WORKSPACE_WITH_MOUSE_SELECTION_CLASS);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME);\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME, function() {\r\n isPointerDown = false;\r\n that.$element().removeClass(WORKSPACE_WITH_MOUSE_SELECTION_CLASS)\r\n })\r\n }\r\n });\r\n _events_engine.default.on($element, SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME, SCHEDULER_DRAG_AND_DROP_SELECTOR, function(e) {\r\n if (isPointerDown && that._dateTableScrollable && !that._dateTableScrollable.option(\"scrollByContent\")) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n that._moveToCell((0, _renderer.default)(e.target), true)\r\n }\r\n })\r\n };\r\n _proto2._getDateTables = function() {\r\n return this._$dateTable.add(this._$allDayTable)\r\n };\r\n _proto2._getDateTable = function() {\r\n return this._$dateTable\r\n };\r\n _proto2._getAllDayTable = function() {\r\n return this._$allDayTable\r\n };\r\n _proto2._getInterval = function() {\r\n if (void 0 === this._interval) {\r\n this._interval = this.option(\"hoursInterval\") * HOUR_MS\r\n }\r\n return this._interval\r\n };\r\n _proto2._getHeaderText = function(headerIndex) {\r\n return _date2.default.format(this._getDateForHeaderText(headerIndex), this._getFormat())\r\n };\r\n _proto2._getDateForHeaderText = function(index) {\r\n return this._getDateByIndex(index)\r\n };\r\n _proto2._getDateByIndex = function() {\r\n return abstract()\r\n };\r\n _proto2._getFormat = function() {\r\n return abstract()\r\n };\r\n _proto2._calculateCellIndex = function(rowIndex, cellIndex) {\r\n return this._groupedStrategy.calculateCellIndex(rowIndex, cellIndex)\r\n };\r\n _proto2._renderTableBody = function(options, delayCellTemplateRendering) {\r\n var result = [];\r\n if (!delayCellTemplateRendering) {\r\n this._applyCellTemplates(tableCreator.makeTable(options))\r\n } else {\r\n result = tableCreator.makeTable(options)\r\n }\r\n return result\r\n };\r\n _proto2._removeAllDayElements = function() {\r\n this._$allDayTable && this._$allDayTable.remove();\r\n this._$allDayTitle && this._$allDayTitle.remove()\r\n };\r\n _proto2._cleanView = function() {\r\n var _this$virtualSelectio2;\r\n this.cache.clear();\r\n this._cleanAllowedPositions();\r\n null === (_this$virtualSelectio2 = this.virtualSelectionState) || void 0 === _this$virtualSelectio2 ? void 0 : _this$virtualSelectio2.releaseSelectedAndFocusedCells();\r\n this._$thead.empty();\r\n this._$dateTable.empty();\r\n this._shader && this._shader.clean();\r\n this._$timePanel.empty();\r\n this._$allDayTable && this._$allDayTable.empty();\r\n this._$groupTable.empty();\r\n delete this._hiddenInterval;\r\n delete this._interval\r\n };\r\n _proto2._clean = function() {\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME);\r\n _WidgetObserver.prototype._clean.call(this)\r\n };\r\n _proto2._disposeRenovatedComponents = function() {\r\n var _this$renovatedAllDay, _this$renovatedDateTa, _this$renovatedTimePa;\r\n null === (_this$renovatedAllDay = this.renovatedAllDayPanel) || void 0 === _this$renovatedAllDay ? void 0 : _this$renovatedAllDay.dispose();\r\n this.renovatedAllDayPanel = void 0;\r\n null === (_this$renovatedDateTa = this.renovatedDateTable) || void 0 === _this$renovatedDateTa ? void 0 : _this$renovatedDateTa.dispose();\r\n this.renovatedDateTable = void 0;\r\n null === (_this$renovatedTimePa = this.renovatedTimePanel) || void 0 === _this$renovatedTimePa ? void 0 : _this$renovatedTimePa.dispose();\r\n this.renovatedTimePanel = void 0\r\n };\r\n _proto2.getWorkArea = function() {\r\n return this._dateTableScrollable.$content()\r\n };\r\n _proto2.getScrollable = function() {\r\n return this._dateTableScrollable\r\n };\r\n _proto2.getScrollableScrollTop = function() {\r\n return this._dateTableScrollable.scrollTop()\r\n };\r\n _proto2.getGroupedScrollableScrollTop = function(allDay) {\r\n return this._groupedStrategy.getScrollableScrollTop(allDay)\r\n };\r\n _proto2.getScrollableScrollLeft = function() {\r\n return this._dateTableScrollable.scrollLeft()\r\n };\r\n _proto2.getScrollableOuterWidth = function() {\r\n return this._dateTableScrollable.scrollWidth()\r\n };\r\n _proto2.getScrollableContainer = function() {\r\n return this._dateTableScrollable._container()\r\n };\r\n _proto2.getHeaderPanelHeight = function() {\r\n return this._$headerPanel && this._$headerPanel.outerHeight(true)\r\n };\r\n _proto2.getTimePanelWidth = function() {\r\n return this._$timePanel && (0, _position.getBoundingRect)(this._$timePanel.get(0)).width\r\n };\r\n _proto2.getGroupTableWidth = function() {\r\n return this._$groupTable ? this._$groupTable.outerWidth() : 0\r\n };\r\n _proto2.getWorkSpaceLeftOffset = function() {\r\n return this._groupedStrategy.getLeftOffset()\r\n };\r\n _proto2.getGroupedStrategy = function() {\r\n return this._groupedStrategy\r\n };\r\n _proto2._getCellCoordinatesByIndex = function(index) {\r\n var cellIndex = Math.floor(index / this._getRowCount());\r\n var rowIndex = index - this._getRowCount() * cellIndex;\r\n return {\r\n cellIndex: cellIndex,\r\n rowIndex: rowIndex\r\n }\r\n };\r\n _proto2._getDateByCellIndexes = function(rowIndex, cellIndex, patchedIndexes) {\r\n cellIndex = !patchedIndexes ? this._patchCellIndex(cellIndex) : cellIndex;\r\n var firstViewDate = this.getStartViewDate();\r\n var currentDate = new Date(firstViewDate.getTime() + this._getMillisecondsOffset(rowIndex, cellIndex) + this._getOffsetByCount(cellIndex));\r\n currentDate.setTime(currentDate.getTime() + _date.default.getTimezonesDifference(firstViewDate, currentDate));\r\n return currentDate\r\n };\r\n _proto2._patchCellIndex = function(cellIndex) {\r\n if (this.isGroupedByDate()) {\r\n cellIndex = Math.floor(cellIndex / this._getGroupCount())\r\n }\r\n return cellIndex\r\n };\r\n _proto2._getOffsetByCount = function() {\r\n return 0\r\n };\r\n _proto2._getMillisecondsOffset = function(rowIndex, cellIndex) {\r\n return this._getInterval() * this._calculateCellIndex(rowIndex, cellIndex) + this._calculateHiddenInterval(rowIndex, cellIndex)\r\n };\r\n _proto2._calculateHiddenInterval = function(rowIndex, cellIndex) {\r\n var dayCount = cellIndex % this._getCellCount();\r\n return dayCount * this._getHiddenInterval()\r\n };\r\n _proto2._getHiddenInterval = function() {\r\n if (void 0 === this._hiddenInterval) {\r\n this._hiddenInterval = DAY_MS - this.getVisibleDayDuration()\r\n }\r\n return this._hiddenInterval\r\n };\r\n _proto2._getIntervalBetween = function(currentDate, allDay) {\r\n var firstViewDate = this.getStartViewDate();\r\n var startDayTime = this.option(\"startDayHour\") * HOUR_MS;\r\n var timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate);\r\n var fullInterval = currentDate.getTime() - firstViewDate.getTime() - timeZoneOffset;\r\n var days = this._getDaysOfInterval(fullInterval, startDayTime);\r\n var weekendsCount = this._getWeekendsCount(days);\r\n var result = (days - weekendsCount) * DAY_MS;\r\n if (!allDay) {\r\n result = fullInterval - days * this._getHiddenInterval() - weekendsCount * this.getVisibleDayDuration()\r\n }\r\n return result\r\n };\r\n _proto2._getWeekendsCount = function() {\r\n return 0\r\n };\r\n _proto2._getDaysOfInterval = function(fullInterval, startDayTime) {\r\n return Math.floor((fullInterval + startDayTime) / DAY_MS)\r\n };\r\n _proto2._getGroupIndexes = function(appointmentResources) {\r\n var result = [];\r\n if (this._isGroupsSpecified(appointmentResources)) {\r\n var tree = this.invoke(\"createResourcesTree\", this.option(\"groups\"));\r\n result = this.invoke(\"getResourceTreeLeaves\", tree, appointmentResources)\r\n }\r\n return result\r\n };\r\n _proto2._updateIndex = function(index) {\r\n return index * this._getRowCount()\r\n };\r\n _proto2._getDroppableCell = function() {\r\n return this._getDateTables().find(\".\" + DATE_TABLE_DROPPABLE_CELL_CLASS)\r\n };\r\n _proto2._getWorkSpaceWidth = function() {\r\n var _this9 = this;\r\n return this.cache.get(\"workspaceWidth\", function() {\r\n if (_this9._needCreateCrossScrolling()) {\r\n return (0, _position.getBoundingRect)(_this9._$dateTable.get(0)).width\r\n }\r\n var totalWidth = (0, _position.getBoundingRect)(_this9.$element().get(0)).width;\r\n var timePanelWidth = _this9.getTimePanelWidth();\r\n var groupTableWidth = _this9.getGroupTableWidth();\r\n return totalWidth - timePanelWidth - groupTableWidth\r\n })\r\n };\r\n _proto2._getCellPositionByIndex = function(index, groupIndex, inAllDayRow) {\r\n var cellCoordinates = this._getCellCoordinatesByIndex(index);\r\n var $cell = this._getCellByCoordinates(cellCoordinates, groupIndex, inAllDayRow);\r\n return this._getCellPositionWithCache($cell, cellCoordinates, groupIndex)\r\n };\r\n _proto2._getCellPositionWithCache = function($cell, cellCoordinates, groupIndex) {\r\n var result = this._getCellPosition($cell);\r\n this.setCellDataCache(cellCoordinates, groupIndex, $cell);\r\n if (result) {\r\n result.rowIndex = cellCoordinates.rowIndex;\r\n result.cellIndex = cellCoordinates.cellIndex\r\n }\r\n return result\r\n };\r\n _proto2._getCellPosition = function($cell) {\r\n var position = $cell.position();\r\n if (this.option(\"rtlEnabled\")) {\r\n position.left += (0, _position.getBoundingRect)($cell.get(0)).width\r\n }\r\n return position\r\n };\r\n _proto2._getCellByCoordinates = function(cellCoordinates, groupIndex, inAllDayRow) {\r\n var indexes = this._groupedStrategy.prepareCellIndexes(cellCoordinates, groupIndex, inAllDayRow);\r\n return this._dom_getDateCell(indexes)\r\n };\r\n _proto2._dom_getDateCell = function(position) {\r\n return this._$dateTable.find(\"tr:not(.\".concat(VIRTUAL_ROW_CLASS, \")\")).eq(position.rowIndex).find(\"td\").eq(position.cellIndex)\r\n };\r\n _proto2._dom_getAllDayPanelCell = function(cellIndex) {\r\n return this._$allDayPanel.find(\"tr\").eq(0).find(\"td\").eq(cellIndex)\r\n };\r\n _proto2._getCells = function(allDay, direction) {\r\n var cellClass = allDay ? ALL_DAY_TABLE_CELL_CLASS : DATE_TABLE_CELL_CLASS;\r\n if (\"vertical\" === direction) {\r\n var result = [];\r\n for (var i = 1;; i++) {\r\n var cells = this.$element().find(\"tr .\".concat(cellClass, \":nth-child(\").concat(i, \")\"));\r\n if (!cells.length) {\r\n break\r\n }\r\n result = result.concat(cells.toArray())\r\n }\r\n return (0, _renderer.default)(result)\r\n } else {\r\n return this.$element().find(\".\" + cellClass)\r\n }\r\n };\r\n _proto2._getAllCells = function(allDay) {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n return this._$dateTable.find(\"td:not(.\".concat(VIRTUAL_CELL_CLASS, \")\"))\r\n }\r\n var cellClass = allDay && this.supportAllDayRow() ? ALL_DAY_TABLE_CELL_CLASS : DATE_TABLE_CELL_CLASS;\r\n return this.$element().find(\".\" + cellClass)\r\n };\r\n _proto2._setHorizontalGroupHeaderCellsHeight = function() {\r\n var height = (0, _position.getBoundingRect)(this._$dateTable.get(0)).height;\r\n this._$groupTable.outerHeight(height)\r\n };\r\n _proto2._getDateTableBorder = function() {\r\n return DATE_TABLE_CELL_BORDER\r\n };\r\n _proto2._getDateTableBorderOffset = function() {\r\n return 2 * this._getDateTableBorder()\r\n };\r\n _proto2._getGroupHeaderCellsContent = function() {\r\n return this.$element().find(\".\" + GROUP_HEADER_CONTENT_CLASS)\r\n };\r\n _proto2._getGroupHeaderCells = function() {\r\n return this.$element().find(\".\" + GROUP_HEADER_CLASS)\r\n };\r\n _proto2._getScrollCoordinates = function(hours, minutes, date, groupIndex, allDay) {\r\n var currentDate = date || new Date(this.option(\"currentDate\"));\r\n var startDayHour = this.option(\"startDayHour\");\r\n var endDayHour = this.option(\"endDayHour\");\r\n if (hours < startDayHour) {\r\n hours = startDayHour\r\n }\r\n if (hours >= endDayHour) {\r\n hours = endDayHour - 1\r\n }\r\n currentDate.setHours(hours, minutes, 0, 0);\r\n if (!this.isVirtualScrolling()) {\r\n return this.getCoordinatesByDate(currentDate, groupIndex, allDay)\r\n }\r\n var cell = this.viewDataProvider.findGlobalCellPosition(currentDate, groupIndex, allDay);\r\n var position = cell.position,\r\n cellData = cell.cellData;\r\n return this.virtualScrollingDispatcher.calculateCoordinatesByDataAndPosition(cellData, position, currentDate)\r\n };\r\n _proto2._isOutsideScrollable = function(target, event) {\r\n var $dateTableScrollableElement = this._dateTableScrollable.$element();\r\n var scrollableSize = (0, _position.getBoundingRect)($dateTableScrollableElement.get(0));\r\n var window = (0, _window.getWindow)();\r\n var isTargetInAllDayPanel = !(0, _renderer.default)(target).closest($dateTableScrollableElement).length;\r\n var isOutsideHorizontalScrollable = event.pageX < scrollableSize.left || event.pageX > scrollableSize.left + scrollableSize.width + (window.scrollX || 0);\r\n var isOutsideVerticalScrollable = event.pageY < scrollableSize.top || event.pageY > scrollableSize.top + scrollableSize.height + (window.scrollY || 0);\r\n if (isTargetInAllDayPanel && !isOutsideHorizontalScrollable) {\r\n return false\r\n }\r\n return isOutsideVerticalScrollable || isOutsideHorizontalScrollable\r\n };\r\n _proto2.setCellDataCache = function(cellCoordinates, groupIndex, $cell) {\r\n var key = JSON.stringify({\r\n rowIndex: cellCoordinates.rowIndex,\r\n cellIndex: cellCoordinates.cellIndex,\r\n groupIndex: groupIndex\r\n });\r\n this.cache.set(key, this.getCellData($cell))\r\n };\r\n _proto2.setCellDataCacheAlias = function(appointment, geometry) {\r\n var key = JSON.stringify({\r\n rowIndex: appointment.rowIndex,\r\n cellIndex: appointment.cellIndex,\r\n groupIndex: appointment.groupIndex\r\n });\r\n var aliasKey = JSON.stringify({\r\n top: geometry.top,\r\n left: geometry.left\r\n });\r\n this.cache.set(aliasKey, this.cache.get(key))\r\n };\r\n _proto2._cleanAllowedPositions = function() {\r\n this._maxAllowedVerticalPosition = [];\r\n this._maxAllowedPosition = []\r\n };\r\n _proto2.supportAllDayRow = function() {\r\n return true\r\n };\r\n _proto2.keepOriginalHours = function() {\r\n return false\r\n };\r\n _proto2.getSelectedCellData = function() {\r\n if (this.isVirtualScrolling()) {\r\n return this.virtualSelectionState.getSelectedCells()\r\n }\r\n var $focusedCells = this._getAllFocusedCells();\r\n var result = [];\r\n if ($focusedCells.length > 1) {\r\n result = this._getMultipleCellsData($focusedCells)\r\n } else {\r\n var data = this.getCellData((0, _renderer.default)($focusedCells[0]));\r\n data && result.push(data)\r\n }\r\n return result\r\n };\r\n _proto2._getMultipleCellsData = function($cells) {\r\n var data = [];\r\n for (var i = 0; i < $cells.length; i++) {\r\n data.push(this.getCellData((0, _renderer.default)($cells[i])))\r\n }\r\n return data\r\n };\r\n _proto2.getCellData = function($cell) {\r\n var data;\r\n var currentCell = $cell[0];\r\n if (currentCell) {\r\n if (this.isRenovatedRender()) {\r\n data = this._getCellDataInRenovatedView($cell)\r\n } else {\r\n data = (0, _element_data.data)(currentCell, CELL_DATA)\r\n }\r\n }\r\n return (0, _extend.extend)(true, {}, data)\r\n };\r\n _proto2._getVirtualRowOffset = function() {\r\n return this.isVirtualScrolling() ? this.virtualScrollingDispatcher.verticalScrollingState.virtualItemSizeBefore : 0\r\n };\r\n _proto2._getCellDataInRenovatedView = function($cell) {\r\n var rowIndex = $cell.parent().index();\r\n if (this.isVirtualScrolling()) {\r\n rowIndex -= this.virtualScrollingDispatcher.topVirtualRowsCount\r\n }\r\n var columnIndex = $cell.index();\r\n var viewDataProvider = this.viewDataProvider;\r\n var isAllDayCell = this._hasAllDayClass($cell);\r\n var cellData = viewDataProvider.getCellData(rowIndex, columnIndex, isAllDayCell);\r\n return cellData ? {\r\n startDate: cellData.startDate,\r\n endDate: cellData.endDate,\r\n groups: cellData.groups,\r\n groupIndex: cellData.groupIndex,\r\n allDay: cellData.allDay,\r\n text: cellData.text\r\n } : void 0\r\n };\r\n _proto2._getHorizontalMax = function(groupIndex) {\r\n groupIndex = this.isGroupedByDate() ? this._getGroupCount() - 1 : groupIndex;\r\n return this._groupedStrategy.getHorizontalMax(groupIndex)\r\n };\r\n _proto2.getCoordinatesByDate = function(date, groupIndex, inAllDayRow) {\r\n groupIndex = groupIndex || 0;\r\n var position;\r\n var shouldFindPositionByViewData = this.isVirtualScrolling() && (!inAllDayRow || this._isVerticalGroupedWorkSpace());\r\n if (shouldFindPositionByViewData) {\r\n var positionByMap = this.viewDataProvider.findCellPositionInMap(groupIndex, date, inAllDayRow);\r\n if (!positionByMap) {\r\n return\r\n }\r\n var $cell = this._dom_getDateCell(positionByMap);\r\n position = this._getCellPositionWithCache($cell, positionByMap, groupIndex)\r\n } else {\r\n position = this.calculateCellPositionByView(date, groupIndex, inAllDayRow)\r\n }\r\n var shift = this.getPositionShift(inAllDayRow ? 0 : this.getTimeShift(date), inAllDayRow);\r\n var horizontalHMax = this._getHorizontalMax(groupIndex, date);\r\n if (!position) {\r\n throw _ui.default.Error(\"E1039\")\r\n }\r\n return {\r\n cellPosition: position.left + shift.cellPosition,\r\n top: position.top + shift.top,\r\n left: position.left + shift.left,\r\n rowIndex: position.rowIndex,\r\n cellIndex: position.cellIndex,\r\n hMax: horizontalHMax,\r\n vMax: this.getVerticalMax(groupIndex),\r\n groupIndex: groupIndex\r\n }\r\n };\r\n _proto2.calculateCellPositionByView = function(date, groupIndex, inAllDayRow) {\r\n var index = this.getCellIndexByDate(date, inAllDayRow);\r\n var position = this._getCellPositionByIndex(index, groupIndex, inAllDayRow);\r\n if (position) {\r\n position.top -= this._getVirtualRowOffset()\r\n }\r\n return position\r\n };\r\n _proto2.getVerticalMax = function(groupIndex) {\r\n return this._groupedStrategy.getVerticalMax(groupIndex)\r\n };\r\n _proto2._getOffsetByAllDayPanel = function(groupIndex) {\r\n return this._groupedStrategy._getOffsetByAllDayPanel(groupIndex)\r\n };\r\n _proto2._getGroupTop = function(groupIndex) {\r\n return this._groupedStrategy._getGroupTop(groupIndex)\r\n };\r\n _proto2.isGroupedByDate = function() {\r\n return this.option(\"groupByDate\") && this._isHorizontalGroupedWorkSpace() && this._getGroupCount() > 0\r\n };\r\n _proto2.getCellIndexByDate = function(date, inAllDayRow) {\r\n var timeInterval = inAllDayRow ? 864e5 : this._getInterval();\r\n var dateTimeStamp = this._getIntervalBetween(date, inAllDayRow);\r\n var index = Math.floor(dateTimeStamp / timeInterval);\r\n if (inAllDayRow) {\r\n index = this._updateIndex(index)\r\n }\r\n if (index < 0) {\r\n index = 0\r\n }\r\n return index\r\n };\r\n _proto2.getPositionShift = function(timeShift, isAllDay) {\r\n return {\r\n top: timeShift * this.getCellHeight(),\r\n left: 0,\r\n cellPosition: 0\r\n }\r\n };\r\n _proto2.getTimeShift = function(date) {\r\n var currentDayStart = new Date(date);\r\n var cellDuration = this.getCellDuration();\r\n var currentDayEndHour = new Date(new Date(date).setHours(this.option(\"endDayHour\"), 0, 0));\r\n if (date.getTime() <= currentDayEndHour.getTime()) {\r\n currentDayStart.setHours(this.option(\"startDayHour\"), 0, 0, 0)\r\n }\r\n var timeZoneDifference = _date.default.getTimezonesDifference(date, currentDayStart);\r\n var currentDateTime = date.getTime();\r\n var currentDayStartTime = currentDayStart.getTime();\r\n var minTime = this._firstViewDate.getTime();\r\n return currentDateTime > minTime ? (currentDateTime - currentDayStartTime + timeZoneDifference) % cellDuration / cellDuration : 0\r\n };\r\n _proto2._isSkippedData = function() {\r\n return false\r\n };\r\n _proto2.getCoordinatesByDateInGroup = function(startDate, appointmentResources, inAllDayRow) {\r\n var _this10 = this;\r\n var result = [];\r\n if (this._isSkippedData(startDate)) {\r\n return result\r\n }\r\n var groupIndices = this._getGroupCount() ? this._getGroupIndexes(appointmentResources) : [0];\r\n groupIndices.forEach(function(groupIndex) {\r\n var coordinates = _this10.getCoordinatesByDate(startDate, groupIndex, inAllDayRow);\r\n coordinates && result.push(coordinates)\r\n });\r\n return result\r\n };\r\n _proto2.getDroppableCellIndex = function() {\r\n var $droppableCell = this._getDroppableCell();\r\n var $row = $droppableCell.parent();\r\n var rowIndex = $row.index();\r\n return rowIndex * $row.find(\"td\").length + $droppableCell.index()\r\n };\r\n _proto2.getDataByDroppableCell = function() {\r\n var cellData = this.getCellData((0, _renderer.default)(this._getDroppableCell()));\r\n var allDay = cellData.allDay;\r\n var startDate = cellData.startDate;\r\n var endDate = cellData.endDate;\r\n return {\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: allDay,\r\n groups: cellData.groups\r\n }\r\n };\r\n _proto2.getDateRange = function() {\r\n return [this.getStartViewDate(), this.getEndViewDateByEndDayHour()]\r\n };\r\n _proto2.getCellWidth = function() {\r\n var _this11 = this;\r\n return this.cache.get(\"cellWidth\", function() {\r\n var cell = _this11._getCells().first().get(0);\r\n return cell && (0, _position.getBoundingRect)(cell).width\r\n })\r\n };\r\n _proto2.getCellMinWidth = function() {\r\n return DATE_TABLE_MIN_CELL_WIDTH\r\n };\r\n _proto2.getRoundedCellWidth = function(groupIndex, startIndex, cellCount) {\r\n if (groupIndex < 0) {\r\n return 0\r\n }\r\n var $row = this.$element().find(\".\" + this._getDateTableRowClass()).eq(0);\r\n var width = 0;\r\n var $cells = $row.find(\".\" + DATE_TABLE_CELL_CLASS);\r\n var totalCellCount = this._getCellCount() * groupIndex;\r\n cellCount = cellCount || this._getCellCount();\r\n if (!(0, _type.isDefined)(startIndex)) {\r\n startIndex = totalCellCount\r\n }\r\n for (var i = startIndex; i < totalCellCount + cellCount; i++) {\r\n width += (0, _position.getBoundingRect)((0, _renderer.default)($cells).eq(i).get(0)).width\r\n }\r\n return width / (totalCellCount + cellCount - startIndex)\r\n };\r\n _proto2.getCellHeight = function() {\r\n var _this12 = this;\r\n var useCache = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : true;\r\n var callbackResult = function() {\r\n var cell = _this12._getCells().first().get(0);\r\n return cell && (0, _position.getBoundingRect)(cell).height\r\n };\r\n return useCache ? this.cache.get(\"cellHeight\", callbackResult) : callbackResult()\r\n };\r\n _proto2.getAllDayHeight = function() {\r\n var cell = this._getCells(true).first().get(0);\r\n return this._isShowAllDayPanel() ? cell && (0, _position.getBoundingRect)(cell).height || 0 : 0\r\n };\r\n _proto2.getAllDayOffset = function() {\r\n return this._groupedStrategy.getAllDayOffset()\r\n };\r\n _proto2.getMaxAllowedPosition = function() {\r\n if (0 === this._maxAllowedPosition.length) {\r\n var isRtl = this.option(\"rtlEnabled\");\r\n this._maxAllowedPosition = [];\r\n this._$dateTable.find(\"tr:not(.\".concat(VIRTUAL_ROW_CLASS, \")\")).first().find(\"td:nth-child(\".concat(this._getCellCount(), \"n)\")).each(function(_, cell) {\r\n var maxPosition = (0, _renderer.default)(cell).position().left;\r\n if (!isRtl) {\r\n maxPosition += (0, _position.getBoundingRect)(cell).width\r\n }\r\n this._maxAllowedPosition.push(Math.round(maxPosition))\r\n }.bind(this))\r\n }\r\n return this._maxAllowedPosition\r\n };\r\n _proto2.getMaxAllowedVerticalPosition = function(groupIndex) {\r\n if (this.isVirtualScrolling()) {\r\n return this.getMaxAllowedVerticalPositionVirtual(groupIndex)\r\n }\r\n return this.getMaxAllowedVerticalPositionStandard(groupIndex)\r\n };\r\n _proto2.getMaxAllowedVerticalPositionStandard = function(groupIndex) {\r\n var _this13 = this;\r\n if (0 === this._maxAllowedVerticalPosition.length) {\r\n var rowCount = this._getRowCount();\r\n this._$dateTable.find(\"tr:not(.\".concat(VIRTUAL_ROW_CLASS, \"):nth-child(\").concat(rowCount, \"n)\")).each(function(_, row) {\r\n var maxPosition = (0, _renderer.default)(row).position().top + (0, _position.getBoundingRect)(row).height;\r\n _this13._maxAllowedVerticalPosition.push(Math.round(maxPosition))\r\n })\r\n }\r\n return this._maxAllowedVerticalPosition[groupIndex]\r\n };\r\n _proto2.getMaxAllowedVerticalPositionVirtual = function(groupIndex) {\r\n var _this14 = this;\r\n var getMaxPosition = function(rowIndex) {\r\n var row = _this14._$dateTable.find(\"tr:not(.\".concat(VIRTUAL_ROW_CLASS, \")\")).get(rowIndex);\r\n var maxPosition = (0, _renderer.default)(row).position().top + (0, _position.getBoundingRect)(row).height;\r\n if (_this14.isGroupedAllDayPanel()) {\r\n maxPosition -= (groupIndex + 1) * _this14.getAllDayHeight()\r\n }\r\n _this14._maxAllowedVerticalPosition[groupIndex] = Math.round(maxPosition)\r\n };\r\n if (!this._maxAllowedVerticalPosition[groupIndex]) {\r\n var _this$viewDataProvide = this.viewDataProvider.getLasGroupCellPosition(groupIndex),\r\n rowIndex = _this$viewDataProvide.rowIndex;\r\n getMaxPosition(rowIndex)\r\n }\r\n return this._maxAllowedVerticalPosition[groupIndex]\r\n };\r\n _proto2.getFixedContainer = function() {\r\n return this._$fixedContainer\r\n };\r\n _proto2.getAllDayContainer = function() {\r\n return this._$allDayContainer\r\n };\r\n _proto2.getCellIndexByCoordinates = function(coordinates, allDay) {\r\n var cellCount = this._getTotalCellCount(this._getGroupCount());\r\n var cellWidth = Math.floor(this._getWorkSpaceWidth() / cellCount);\r\n var cellHeight = allDay ? this.getAllDayHeight() : this.getCellHeight();\r\n var leftOffset = this._isRTL() || this.option(\"crossScrollingEnabled\") ? 0 : this.getWorkSpaceLeftOffset();\r\n var topIndex = Math.floor(Math.floor(coordinates.top) / Math.floor(cellHeight));\r\n var leftIndex = Math.floor((coordinates.left + 5 - leftOffset) / cellWidth);\r\n if (this._isRTL()) {\r\n leftIndex = cellCount - leftIndex - 1\r\n }\r\n return cellCount * topIndex + leftIndex\r\n };\r\n _proto2.getStartViewDate = function() {\r\n return this._firstViewDate\r\n };\r\n _proto2.getEndViewDate = function() {\r\n var dateOfLastViewCell = this.getDateOfLastViewCell();\r\n var endDateOfLastViewCell = this.calculateEndViewDate(dateOfLastViewCell);\r\n return this._adjustEndViewDateByDaylightDiff(dateOfLastViewCell, endDateOfLastViewCell)\r\n };\r\n _proto2.getEndViewDateByEndDayHour = function() {\r\n var dateOfLastViewCell = this.getDateOfLastViewCell();\r\n var endTime = _date.default.dateTimeFromDecimal(this.option(\"endDayHour\"));\r\n var endDateOfLastViewCell = new Date(dateOfLastViewCell.setHours(endTime.hours, endTime.minutes));\r\n return this._adjustEndViewDateByDaylightDiff(dateOfLastViewCell, endDateOfLastViewCell)\r\n };\r\n _proto2.calculateEndViewDate = function(dateOfLastViewCell) {\r\n return new Date(dateOfLastViewCell.getTime() + this.getCellDuration())\r\n };\r\n _proto2._adjustEndViewDateByDaylightDiff = function(startDate, endDate) {\r\n var daylightDiff = _utils.default.getDaylightOffsetInMs(startDate, endDate);\r\n var endDateOfLastViewCell = new Date(endDate.getTime() - daylightDiff);\r\n return new Date(endDateOfLastViewCell.getTime() - this._getEndViewDateTimeDiff())\r\n };\r\n _proto2._getEndViewDateTimeDiff = function() {\r\n return toMs(\"minute\")\r\n };\r\n _proto2.getDateOfLastViewCell = function() {\r\n var rowIndex = this._getRowCount() - 1;\r\n var cellIndex = this._getCellCount();\r\n if (this.isGroupedByDate()) {\r\n cellIndex = cellIndex * this._getGroupCount() - 1\r\n } else {\r\n cellIndex -= 1\r\n }\r\n return this._getDateByCellIndexes(rowIndex, cellIndex, true)\r\n };\r\n _proto2.getCellDuration = function() {\r\n return 36e5 * this.option(\"hoursInterval\")\r\n };\r\n _proto2.getIntervalDuration = function(allDay) {\r\n return allDay ? toMs(\"day\") : this.getCellDuration()\r\n };\r\n _proto2.getVisibleDayDuration = function() {\r\n return this.option(\"hoursInterval\") * this._getCellCountInDay() * HOUR_MS\r\n };\r\n _proto2.getGroupBounds = function(coordinates) {\r\n var cellCount = this._getCellCount();\r\n var $cells = this._getCells();\r\n var cellWidth = this.getCellWidth();\r\n var result = this._groupedStrategy.getGroupBoundsOffset(cellCount, $cells, cellWidth, coordinates);\r\n if (this._isRTL()) {\r\n var startOffset = result.left;\r\n result.left = result.right - 2 * cellWidth;\r\n result.right = startOffset + 2 * cellWidth\r\n }\r\n return result\r\n };\r\n _proto2.needRecalculateResizableArea = function() {\r\n return this._isVerticalGroupedWorkSpace() && 0 !== this.getScrollable().scrollTop()\r\n };\r\n _proto2.getCellDataByCoordinates = function(coordinates, allDay) {\r\n var _this15 = this;\r\n var key = JSON.stringify({\r\n top: coordinates.top,\r\n left: coordinates.left\r\n });\r\n return this.cache.get(key, function() {\r\n var $cells = _this15._getCells(allDay);\r\n var cellIndex = _this15.getCellIndexByCoordinates(coordinates, allDay);\r\n var $cell = $cells.eq(cellIndex);\r\n return _this15.getCellData($cell)\r\n })\r\n };\r\n _proto2.getVisibleBounds = function() {\r\n var result = {};\r\n var $scrollable = this.getScrollable().$element();\r\n var cellHeight = this.getCellHeight();\r\n var scrolledCellCount = this.getScrollableScrollTop() / cellHeight;\r\n var totalCellCount = scrolledCellCount + $scrollable.height() / cellHeight;\r\n result.top = {\r\n hours: Math.floor(scrolledCellCount * this.option(\"hoursInterval\")) + this.option(\"startDayHour\"),\r\n minutes: scrolledCellCount % 2 ? 30 : 0\r\n };\r\n result.bottom = {\r\n hours: Math.floor(totalCellCount * this.option(\"hoursInterval\")) + this.option(\"startDayHour\"),\r\n minutes: Math.floor(totalCellCount) % 2 ? 30 : 0\r\n };\r\n return result\r\n };\r\n _proto2.updateScrollPosition = function(date, groups) {\r\n var allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n var scheduler = this.option(\"observer\");\r\n var newDate = scheduler.timeZoneCalculator.createDate(date, {\r\n path: \"toGrid\"\r\n });\r\n var inAllDayRow = allDay && this.supportAllDayRow() && this._isShowAllDayPanel();\r\n if (this.needUpdateScrollPosition(newDate, groups, inAllDayRow)) {\r\n this.scrollTo(newDate, groups, inAllDayRow, false)\r\n }\r\n };\r\n _proto2.needUpdateScrollPosition = function(date, groups, inAllDayRow) {\r\n var _this16 = this;\r\n var cells = this._getCellsInViewport(inAllDayRow);\r\n var groupIndex = this._isGroupsSpecified(groups) ? this._getGroupIndexByResourceId(groups) : 0;\r\n var time = date.getTime();\r\n var trimmedTime = _date.default.trimTime(date).getTime();\r\n return cells.reduce(function(currentResult, cell) {\r\n var _this16$getCellData = _this16.getCellData(cell),\r\n cellStartDate = _this16$getCellData.startDate,\r\n cellEndDate = _this16$getCellData.endDate,\r\n cellGroupIndex = _this16$getCellData.groupIndex;\r\n var cellStartTime = cellStartDate.getTime();\r\n var cellEndTime = cellEndDate.getTime();\r\n if ((!inAllDayRow && cellStartTime <= time && time < cellEndTime || inAllDayRow && trimmedTime === cellStartTime) && groupIndex === cellGroupIndex) {\r\n return false\r\n }\r\n return currentResult\r\n }, true)\r\n };\r\n _proto2._getCellsInViewport = function(inAllDayRow) {\r\n var $scrollable = this.getScrollable().$element();\r\n var cellHeight = this.getCellHeight();\r\n var cellWidth = this.getCellWidth();\r\n var totalColumnCount = this._getTotalCellCount(this._getGroupCount());\r\n var scrollableScrollTop = this.getScrollableScrollTop();\r\n var scrollableScrollLeft = this.getScrollableScrollLeft();\r\n var fullScrolledRowCount = scrollableScrollTop / cellHeight;\r\n if (this.isVirtualScrolling()) {\r\n fullScrolledRowCount -= this.virtualScrollingDispatcher.topVirtualRowsCount\r\n }\r\n var scrolledRowCount = Math.floor(fullScrolledRowCount);\r\n if (scrollableScrollTop % cellHeight !== 0) {\r\n scrolledRowCount += 1\r\n }\r\n var fullScrolledColumnCount = scrollableScrollLeft / cellWidth;\r\n var scrolledColumnCount = Math.floor(fullScrolledColumnCount);\r\n if (scrollableScrollLeft % cellWidth !== 0) {\r\n scrolledColumnCount += 1\r\n }\r\n var rowCount = Math.floor(fullScrolledRowCount + $scrollable.height() / cellHeight);\r\n var columnCount = Math.floor(fullScrolledColumnCount + $scrollable.width() / cellWidth);\r\n var $cells = this._getAllCells(inAllDayRow);\r\n var result = [];\r\n $cells.each(function(index) {\r\n var $cell = (0, _renderer.default)(this);\r\n var columnIndex = index % totalColumnCount;\r\n var rowIndex = index / totalColumnCount;\r\n if (scrolledColumnCount <= columnIndex && columnIndex < columnCount && scrolledRowCount <= rowIndex && rowIndex < rowCount) {\r\n result.push($cell)\r\n }\r\n });\r\n return result\r\n };\r\n _proto2.getGroupWidth = function(groupIndex) {\r\n var result = this._getCellCount() * this.getCellWidth();\r\n var position = this.getMaxAllowedPosition();\r\n var currentPosition = position[groupIndex];\r\n if (position.length && currentPosition) {\r\n if (this._isRTL()) {\r\n result = currentPosition - position[groupIndex + 1]\r\n } else {\r\n if (0 === groupIndex) {\r\n result = currentPosition\r\n } else {\r\n result = currentPosition - position[groupIndex - 1]\r\n }\r\n }\r\n }\r\n return result\r\n };\r\n _proto2.scrollToTime = function(hours, minutes, date) {\r\n if (!this._isValidScrollDate(date)) {\r\n return\r\n }\r\n var coordinates = this._getScrollCoordinates(hours, minutes, date);\r\n var scrollable = this.getScrollable();\r\n scrollable.scrollBy({\r\n top: coordinates.top - scrollable.scrollTop(),\r\n left: 0\r\n })\r\n };\r\n _proto2.scrollTo = function(date, groups) {\r\n var allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n var throwWarning = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : true;\r\n if (!this._isValidScrollDate(date, throwWarning)) {\r\n return\r\n }\r\n var groupIndex = this._getGroupCount() && groups ? this._getGroupIndexByResourceId(groups) : 0;\r\n var isScrollToAllDay = allDay && this.supportAllDayRow() && this._isShowAllDayPanel();\r\n var coordinates = this._getScrollCoordinates(date.getHours(), date.getMinutes(), date, groupIndex, isScrollToAllDay);\r\n var scrollable = this.getScrollable();\r\n var $scrollable = scrollable.$element();\r\n var offset = this.option(\"rtlEnabled\") ? this.getCellWidth() : 0;\r\n var scrollableHeight = $scrollable.height();\r\n var scrollableWidth = $scrollable.width();\r\n var cellWidth = this.getCellWidth();\r\n var cellHeight = this.getCellHeight();\r\n var xShift = (scrollableWidth - cellWidth) / 2;\r\n var yShift = (scrollableHeight - cellHeight) / 2;\r\n var left = coordinates.left - scrollable.scrollLeft() - xShift - offset;\r\n var top = coordinates.top - scrollable.scrollTop() - yShift;\r\n if (isScrollToAllDay && !this._isVerticalGroupedWorkSpace()) {\r\n top = 0\r\n }\r\n if (this.option(\"templatesRenderAsynchronously\")) {\r\n setTimeout(function() {\r\n scrollable.scrollBy({\r\n left: left,\r\n top: top\r\n })\r\n })\r\n } else {\r\n scrollable.scrollBy({\r\n left: left,\r\n top: top\r\n })\r\n }\r\n };\r\n _proto2._isValidScrollDate = function(date) {\r\n var throwWarning = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true;\r\n var min = this.getStartViewDate();\r\n var max = this.getEndViewDate();\r\n if (date < min || date > max) {\r\n throwWarning && _ui.default.log(\"W1008\", date);\r\n return false\r\n }\r\n return true\r\n };\r\n _proto2.getDistanceBetweenCells = function(startIndex, endIndex) {\r\n var result = 0;\r\n this.$element().find(\".\" + this._getDateTableRowClass()).first().find(\".\" + DATE_TABLE_CELL_CLASS).each(function(index) {\r\n if (index < startIndex || index > endIndex) {\r\n return true\r\n }\r\n result += (0, _position.getBoundingRect)(this).width\r\n });\r\n return result\r\n };\r\n _proto2.needApplyCollectorOffset = function() {\r\n return false\r\n };\r\n _proto2.initDragBehavior = function(scheduler) {\r\n if (!this.dragBehavior && scheduler) {\r\n this.dragBehavior = new _appointmentDragBehavior.default(scheduler);\r\n this._createDragBehavior(this.getWorkArea());\r\n this._createDragBehavior(this.getAllDayContainer());\r\n this._createDragBehavior(this._$allDayPanel)\r\n }\r\n };\r\n _proto2._createDragBehavior = function($element) {\r\n var getItemData = function(itemElement, appointments) {\r\n return appointments._getItemData(itemElement)\r\n };\r\n var getItemSettings = function($itemElement) {\r\n return $itemElement.data(_constants.APPOINTMENT_SETTINGS_KEY)\r\n };\r\n var options = {\r\n getItemData: getItemData,\r\n getItemSettings: getItemSettings\r\n };\r\n this._createDragBehaviorBase($element, options)\r\n };\r\n _proto2._createDragBehaviorBase = function($element, options) {\r\n var _this17 = this;\r\n var dragElement;\r\n var dragBehavior = this.dragBehavior;\r\n var itemData;\r\n var getItemData = options.getItemData,\r\n getItemSettings = options.getItemSettings,\r\n isSetCursorOffset = options.isSetCursorOffset,\r\n initialPosition = options.initialPosition,\r\n restOptions = _objectWithoutProperties(options, _excluded);\r\n dragBehavior.addTo($element, _objectSpread({\r\n container: this.$element().find(\".\".concat(_constants.FIXED_CONTAINER_CLASS)),\r\n dragTemplate: function() {\r\n return dragElement\r\n },\r\n onDragStart: function(e) {\r\n var canceled = e.cancel;\r\n var event = e.event;\r\n var $itemElement = (0, _renderer.default)(e.itemElement);\r\n var appointments = e.component._appointments;\r\n itemData = getItemData(e.itemElement, appointments);\r\n var settings = getItemSettings($itemElement, e);\r\n if (itemData && !itemData.disabled) {\r\n event.data = event.data || {};\r\n if (!canceled) {\r\n if (!settings.isCompact) {\r\n dragBehavior.updateDragSource(itemData, settings)\r\n }\r\n dragElement = _this17._createDragAppointment(itemData, settings, appointments);\r\n event.data.itemElement = dragElement;\r\n event.data.initialPosition = initialPosition || (0, _translator.locate)((0, _renderer.default)(dragElement));\r\n event.data.itemData = itemData;\r\n event.data.itemSettings = settings;\r\n dragBehavior.onDragStart(event.data);\r\n (0, _translator.resetPosition)((0, _renderer.default)(dragElement))\r\n }\r\n }\r\n },\r\n onDragEnd: function(e) {\r\n var _dragElement;\r\n if (itemData && !itemData.disabled) {\r\n dragBehavior.onDragEnd(e)\r\n }\r\n null === (_dragElement = dragElement) || void 0 === _dragElement ? void 0 : _dragElement.remove()\r\n },\r\n cursorOffset: isSetCursorOffset ? function() {\r\n var $dragElement = (0, _renderer.default)(dragElement);\r\n return {\r\n x: $dragElement.width() / 2,\r\n y: $dragElement.height() / 2\r\n }\r\n } : void 0\r\n }, restOptions))\r\n };\r\n _proto2._createDragAppointment = function(itemData, settings, appointments) {\r\n var appointmentIndex = appointments.option(\"items\").length;\r\n settings.isCompact = false;\r\n settings.virtual = false;\r\n var items = appointments._renderItem(appointmentIndex, {\r\n itemData: itemData,\r\n settings: [settings]\r\n });\r\n return items[0]\r\n };\r\n _proto2._isApplyCompactAppointmentOffset = function() {\r\n return this._supportCompactDropDownAppointments()\r\n };\r\n _proto2._supportCompactDropDownAppointments = function() {\r\n return true\r\n };\r\n _proto2._formatWeekday = function(date) {\r\n return formatWeekday(date)\r\n };\r\n _proto2._formatWeekdayAndDay = function(date) {\r\n return formatWeekday(date) + \" \" + _date2.default.format(date, \"day\")\r\n };\r\n _proto2.removeDroppableCellClass = function($cellElement) {\r\n ($cellElement || this._getDroppableCell()).removeClass(DATE_TABLE_DROPPABLE_CELL_CLASS)\r\n };\r\n _proto2._getCoordinatesByCell = function($cell) {\r\n var columnIndex = $cell.index();\r\n var rowIndex = $cell.parent().index();\r\n var isAllDayCell = this._hasAllDayClass($cell);\r\n var isVerticalGrouping = this._isVerticalGroupedWorkSpace();\r\n if (this.isVirtualScrolling() && !(isAllDayCell && !isVerticalGrouping)) {\r\n rowIndex -= this.virtualScrollingDispatcher.topVirtualRowsCount\r\n }\r\n return {\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n }\r\n };\r\n _proto2._isShowAllDayPanel = function() {\r\n return this.option(\"showAllDayPanel\")\r\n };\r\n _proto2.updateAppointments = function() {\r\n var _this$dragBehavior;\r\n this.invoke(\"renderAppointments\");\r\n null === (_this$dragBehavior = this.dragBehavior) || void 0 === _this$dragBehavior ? void 0 : _this$dragBehavior.updateDragSource()\r\n };\r\n _createClass(SchedulerWorkSpace, [{\r\n key: \"viewDataProvider\",\r\n get: function() {\r\n if (!this._viewDataProvider) {\r\n this._viewDataProvider = new _view_data_provider.default(this)\r\n }\r\n return this._viewDataProvider\r\n }\r\n }, {\r\n key: \"cache\",\r\n get: function() {\r\n return _cache.cache\r\n }\r\n }, {\r\n key: \"virtualSelectionState\",\r\n get: function() {\r\n if (!this._virtualSelectionState) {\r\n this._virtualSelectionState = new _virtual_selection_state.default(this.viewDataProvider)\r\n }\r\n return this._virtualSelectionState\r\n }\r\n }]);\r\n return SchedulerWorkSpace\r\n}(_widgetObserver.default);\r\nvar _default = SchedulerWorkSpace;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar LAST_GROUP_CELL_CLASS = \"dx-scheduler-last-group-cell\";\r\nvar FIRST_GROUP_CELL_CLASS = \"dx-scheduler-first-group-cell\";\r\nvar GroupedStrategy = function() {\r\n function GroupedStrategy(workSpace) {\r\n this._workSpace = workSpace\r\n }\r\n var _proto = GroupedStrategy.prototype;\r\n _proto.getLastGroupCellClass = function() {\r\n return LAST_GROUP_CELL_CLASS\r\n };\r\n _proto.getFirstGroupCellClass = function() {\r\n return FIRST_GROUP_CELL_CLASS\r\n };\r\n _proto._getOffsetByAllDayPanel = function() {\r\n return 0\r\n };\r\n _proto._getGroupTop = function() {\r\n return 0\r\n };\r\n return GroupedStrategy\r\n}();\r\nvar _default = GroupedStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/cache.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.cache = exports.Cache = void 0;\r\nvar _type = require(\"../../../core/utils/type\");\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n Object.defineProperty(Constructor, \"prototype\", {\r\n writable: false\r\n });\r\n return Constructor\r\n}\r\nvar Cache = function() {\r\n function Cache() {\r\n this._init()\r\n }\r\n var _proto = Cache.prototype;\r\n _proto._init = function() {\r\n this._cache = new Map\r\n };\r\n _proto.clear = function() {\r\n this._init()\r\n };\r\n _proto.get = function(name, callback) {\r\n if (!this._cache.has(name) && callback) {\r\n this.set(name, callback())\r\n }\r\n return this._cache.get(name)\r\n };\r\n _proto.set = function(name, value) {\r\n (0, _type.isDefined)(value) && this._cache.set(name, value)\r\n };\r\n _createClass(Cache, [{\r\n key: \"size\",\r\n get: function() {\r\n return this._cache.size\r\n }\r\n }]);\r\n return Cache\r\n}();\r\nexports.Cache = Cache;\r\nvar cache = new Cache;\r\nexports.cache = cache;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/utils/base.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.isDateInRange = void 0;\r\nvar _date = _interopRequireDefault(require(\"../../../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar isDateInRange = function(date, startDate, endDate, diff) {\r\n return diff > 0 ? _date.default.dateInRange(date, startDate, new Date(endDate.getTime() - 1)) : _date.default.dateInRange(date, endDate, startDate, \"date\")\r\n};\r\nexports.isDateInRange = isDateInRange;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/utils/month.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getViewStartByOptions = void 0;\r\nvar _base = require(\"./base\");\r\nvar getViewStartByOptions = function(startDate, currentDate, intervalCount, startViewDate) {\r\n if (!startDate) {\r\n return new Date(currentDate)\r\n } else {\r\n var _startDate = new Date(startViewDate);\r\n var validStartViewDate = new Date(startViewDate);\r\n var diff = _startDate.getTime() <= currentDate.getTime() ? 1 : -1;\r\n var endDate = new Date(new Date(validStartViewDate.setMonth(validStartViewDate.getMonth() + diff * intervalCount)));\r\n while (!(0, _base.isDateInRange)(currentDate, _startDate, endDate, diff)) {\r\n _startDate = new Date(endDate);\r\n if (diff > 0) {\r\n _startDate.setDate(1)\r\n }\r\n endDate = new Date(new Date(endDate.setMonth(endDate.getMonth() + diff * intervalCount)))\r\n }\r\n return diff > 0 ? _startDate : endDate\r\n }\r\n};\r\nexports.getViewStartByOptions = getViewStartByOptions;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.timeline_week.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.timeline\"));\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _week = require(\"./utils/week\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline-week\";\r\nvar SchedulerTimelineWeek = function(_SchedulerTimeline) {\r\n _inheritsLoose(SchedulerTimelineWeek, _SchedulerTimeline);\r\n\r\n function SchedulerTimelineWeek() {\r\n return _SchedulerTimeline.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerTimelineWeek.prototype;\r\n _proto._getElementClass = function() {\r\n return TIMELINE_CLASS\r\n };\r\n _proto._getCellCount = function() {\r\n return _SchedulerTimeline.prototype._getCellCount.call(this) * this._getWeekDuration()\r\n };\r\n _proto._getHeaderPanelCellWidth = function($headerRow) {\r\n return (0, _position.getBoundingRect)($headerRow.children().first().get(0)).width\r\n };\r\n _proto._getWeekDuration = function() {\r\n return 7\r\n };\r\n _proto._needRenderWeekHeader = function() {\r\n return true\r\n };\r\n _proto._incrementDate = function(date) {\r\n date.setDate(date.getDate() + 1)\r\n };\r\n _proto._getIntervalDuration = function() {\r\n return (0, _week.getIntervalDuration)(this.option(\"intervalCount\"))\r\n };\r\n return SchedulerTimelineWeek\r\n}(_uiScheduler.default);\r\nexports.default = SchedulerTimelineWeek;\r\n(0, _component_registrator.default)(\"dxSchedulerTimelineWeek\", SchedulerTimelineWeek);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/utils/week.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.getIntervalDuration = void 0;\r\nvar _date = _interopRequireDefault(require(\"../../../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar getIntervalDuration = function(intervalCount) {\r\n return 7 * _date.default.dateToMilliseconds(\"day\") * intervalCount\r\n};\r\nexports.getIntervalDuration = getIntervalDuration;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/utils/work_week.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.isDataOnWeekend = exports.getWeekendsCount = exports.getFirstViewDate = exports.getFirstDayOfWeek = void 0;\r\nvar _date = _interopRequireDefault(require(\"../../../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar MONDAY_INDEX = 1;\r\nvar SATURDAY_INDEX = 6;\r\nvar SUNDAY_INDEX = 0;\r\nvar isDataOnWeekend = function(date) {\r\n var day = date.getDay();\r\n return day === SATURDAY_INDEX || day === SUNDAY_INDEX\r\n};\r\nexports.isDataOnWeekend = isDataOnWeekend;\r\nvar getFirstDayOfWeek = function(firstDayOfWeekOption) {\r\n return firstDayOfWeekOption || MONDAY_INDEX\r\n};\r\nexports.getFirstDayOfWeek = getFirstDayOfWeek;\r\nvar getWeekendsCount = function(days) {\r\n return 2 * Math.floor(days / 7)\r\n};\r\nexports.getWeekendsCount = getWeekendsCount;\r\nvar getFirstViewDate = function(viewStart, firstDayOfWeek) {\r\n var firstViewDate = _date.default.getFirstWeekDate(viewStart, firstDayOfWeek);\r\n return _date.default.normalizeDateByWeek(firstViewDate, viewStart)\r\n};\r\nexports.getFirstViewDate = getFirstViewDate;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space_vertical.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _uiSchedulerWork_space = _interopRequireDefault(require(\"./ui.scheduler.work_space.indicator\"));\r\nvar _date = _interopRequireDefault(require(\"../../../localization/date\"));\r\nvar _utils = _interopRequireDefault(require(\"../utils.timeZone\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar SchedulerWorkspaceVertical = function(_SchedulerWorkSpaceIn) {\r\n _inheritsLoose(SchedulerWorkspaceVertical, _SchedulerWorkSpaceIn);\r\n\r\n function SchedulerWorkspaceVertical() {\r\n return _SchedulerWorkSpaceIn.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerWorkspaceVertical.prototype;\r\n _proto._getCellsBetween = function($first, $last) {\r\n if (this._hasAllDayClass($last)) {\r\n return _SchedulerWorkSpaceIn.prototype._getCellsBetween.call(this, $first, $last)\r\n }\r\n var $cells = this._getCells();\r\n var firstColumn = $first.index();\r\n var firstRow = $first.parent().index();\r\n var lastColumn = $last.index();\r\n var lastRow = $last.parent().index();\r\n var groupCount = this._getGroupCount();\r\n var cellCount = groupCount > 0 ? this._getTotalCellCount(groupCount) : this._getCellCount();\r\n var rowCount = this._getTotalRowCount(groupCount);\r\n var result = [];\r\n for (var i = 0; i < cellCount; i++) {\r\n for (var j = 0; j < rowCount; j++) {\r\n var cell = $cells.get(cellCount * j + i);\r\n result.push(cell)\r\n }\r\n }\r\n var lastCellGroup = this.getCellData($last).groups;\r\n var indexesDifference = this.option(\"showAllDayPanel\") && this._isVerticalGroupedWorkSpace() ? this._getGroupIndexByResourceId(lastCellGroup) + 1 : 0;\r\n var newFirstIndex = rowCount * firstColumn + firstRow - indexesDifference;\r\n var newLastIndex = rowCount * lastColumn + lastRow - indexesDifference;\r\n if (newFirstIndex > newLastIndex) {\r\n var buffer = newFirstIndex;\r\n newFirstIndex = newLastIndex;\r\n newLastIndex = buffer\r\n }\r\n $cells = (0, _renderer.default)(result).slice(newFirstIndex, newLastIndex + 1);\r\n if (this._getGroupCount()) {\r\n var arr = [];\r\n var focusedGroupIndex = this._getGroupIndexByCell($first);\r\n (0, _iterator.each)($cells, function(_, cell) {\r\n var groupIndex = this._getGroupIndexByCell((0, _renderer.default)(cell));\r\n if (focusedGroupIndex === groupIndex) {\r\n arr.push(cell)\r\n }\r\n }.bind(this));\r\n $cells = (0, _renderer.default)(arr)\r\n }\r\n return $cells\r\n };\r\n _proto._getCellFromNextColumn = function(direction, isMultiSelection) {\r\n var $nextCell = _SchedulerWorkSpaceIn.prototype._getCellFromNextColumn.call(this, direction, isMultiSelection);\r\n var $focusedCell = this._$focusedCell;\r\n if ($focusedCell.parent().index() !== $nextCell.parent().index() && isMultiSelection) {\r\n $nextCell = $focusedCell\r\n }\r\n return $nextCell\r\n };\r\n _proto._getFormat = function() {\r\n return this._formatWeekdayAndDay\r\n };\r\n _proto.renovatedRenderSupported = function() {\r\n return true\r\n };\r\n _proto.generateRenderOptions = function() {\r\n var _this = this;\r\n var startViewDate = _utils.default.getDateWithoutTimezoneChange(this.getStartViewDate());\r\n var _getTimeText = function(row, column) {\r\n var index = row % _this._getRowCount();\r\n if (index % 2 === 0 && 0 === column) {\r\n return _date.default.format(_this._getTimeCellDateCore(startViewDate, row), \"shorttime\")\r\n }\r\n return \"\"\r\n };\r\n var options = _SchedulerWorkSpaceIn.prototype.generateRenderOptions.call(this);\r\n options.cellDataGetters.push(function(_, rowIndex, cellIndex) {\r\n return {\r\n value: {\r\n text: _getTimeText(rowIndex, cellIndex)\r\n }\r\n }\r\n });\r\n return options\r\n };\r\n return SchedulerWorkspaceVertical\r\n}(_uiSchedulerWork_space.default);\r\nvar _default = SchedulerWorkspaceVertical;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space_week.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _date2 = _interopRequireDefault(require(\"../../../localization/date\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.work_space_vertical\"));\r\nvar _week = require(\"./utils/week\");\r\nvar _layout = _interopRequireDefault(require(\"../../../renovation/ui/scheduler/workspaces/week/date_table/layout.j\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar WEEK_CLASS = \"dx-scheduler-work-space-week\";\r\nvar SchedulerWorkSpaceWeek = function(_SchedulerWorkSpaceVe) {\r\n _inheritsLoose(SchedulerWorkSpaceWeek, _SchedulerWorkSpaceVe);\r\n\r\n function SchedulerWorkSpaceWeek() {\r\n return _SchedulerWorkSpaceVe.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerWorkSpaceWeek.prototype;\r\n _proto._getElementClass = function() {\r\n return WEEK_CLASS\r\n };\r\n _proto._getRowCount = function() {\r\n return this._getCellCountInDay()\r\n };\r\n _proto._getCellCount = function() {\r\n return 7 * this.option(\"intervalCount\")\r\n };\r\n _proto._getDateByIndex = function(headerIndex) {\r\n var resultDate = new Date(this._firstViewDate);\r\n resultDate.setDate(this._firstViewDate.getDate() + headerIndex);\r\n return resultDate\r\n };\r\n _proto._getStartViewDate = function() {\r\n return _date.default.getFirstWeekDate(this.option(\"startDate\"), this._firstDayOfWeek() || _date2.default.firstDayOfWeekIndex())\r\n };\r\n _proto._getIntervalDuration = function() {\r\n return (0, _week.getIntervalDuration)(this.option(\"intervalCount\"))\r\n };\r\n _proto.getPositionShift = function(timeShift, isAllDay) {\r\n if (!isAllDay && this.invoke(\"isAdaptive\") && 0 === this.invoke(\"getMaxAppointmentCountPerCellByType\")) {\r\n return {\r\n top: 0,\r\n left: 0,\r\n cellPosition: 0\r\n }\r\n }\r\n return _SchedulerWorkSpaceVe.prototype.getPositionShift.call(this, timeShift, isAllDay)\r\n };\r\n _proto._isApplyCompactAppointmentOffset = function() {\r\n if (this.invoke(\"isAdaptive\") && 0 === this.invoke(\"getMaxAppointmentCountPerCellByType\")) {\r\n return false\r\n }\r\n return _SchedulerWorkSpaceVe.prototype._isApplyCompactAppointmentOffset.call(this)\r\n };\r\n _proto.renderRDateTable = function() {\r\n this.renderRComponent(this._$dateTable, _layout.default, \"renovatedDateTable\", {\r\n viewData: this.viewDataProvider.viewData,\r\n dataCellTemplate: this.option(\"dataCellTemplate\")\r\n })\r\n };\r\n return SchedulerWorkSpaceWeek\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerWorkSpaceWeek\", SchedulerWorkSpaceWeek);\r\nvar _default = SchedulerWorkSpaceWeek;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.agenda.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../../core/dom_adapter\"));\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _element = require(\"../../../core/element\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.work_space\"));\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _date = _interopRequireDefault(require(\"../../../localization/date\"));\r\nvar _uiScheduler2 = _interopRequireDefault(require(\"../ui.scheduler.table_creator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar tableCreator = _uiScheduler2.default.tableCreator;\r\nvar AGENDA_CLASS = \"dx-scheduler-agenda\";\r\nvar AGENDA_DATE_CLASS = \"dx-scheduler-agenda-date\";\r\nvar GROUP_TABLE_CLASS = \"dx-scheduler-group-table\";\r\nvar AGENDA_GROUPED_ATTR = \"dx-group-column-count\";\r\nvar TIME_PANEL_ROW_CLASS = \"dx-scheduler-time-panel-row\";\r\nvar TIME_PANEL_CELL_CLASS = \"dx-scheduler-time-panel-cell\";\r\nvar NODATA_CONTAINER_CLASS = \"dx-scheduler-agenda-nodata\";\r\nvar LAST_ROW_CLASS = \"dx-scheduler-date-table-last-row\";\r\nvar INNER_CELL_MARGIN = 5;\r\nvar OUTER_CELL_MARGIN = 20;\r\nvar SchedulerAgenda = function(_SchedulerWorkSpace) {\r\n _inheritsLoose(SchedulerAgenda, _SchedulerWorkSpace);\r\n\r\n function SchedulerAgenda() {\r\n return _SchedulerWorkSpace.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerAgenda.prototype;\r\n _proto._init = function() {\r\n _SchedulerWorkSpace.prototype._init.call(this);\r\n this._activeStateUnit = void 0\r\n };\r\n _proto._getDefaultOptions = function() {\r\n return (0, _extend.extend)(_SchedulerWorkSpace.prototype._getDefaultOptions.call(this), {\r\n agendaDuration: 7,\r\n rowHeight: 60,\r\n noDataText: \"\"\r\n })\r\n };\r\n _proto._optionChanged = function(args) {\r\n var name = args.name;\r\n var value = args.value;\r\n switch (name) {\r\n case \"agendaDuration\":\r\n break;\r\n case \"noDataText\":\r\n case \"rowHeight\":\r\n this._recalculateAgenda(this._rows);\r\n break;\r\n case \"groups\":\r\n if (!value || !value.length) {\r\n if (this._$groupTable) {\r\n this._$groupTable.remove();\r\n this._$groupTable = null;\r\n this._detachGroupCountAttr()\r\n }\r\n } else {\r\n if (!this._$groupTable) {\r\n this._initGroupTable();\r\n this._dateTableScrollable.$content().prepend(this._$groupTable)\r\n }\r\n }\r\n _SchedulerWorkSpace.prototype._optionChanged.call(this, args);\r\n break;\r\n default:\r\n _SchedulerWorkSpace.prototype._optionChanged.call(this, args)\r\n }\r\n };\r\n _proto._renderFocusState = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._renderFocusTarget = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._cleanFocusState = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto.supportAllDayRow = function() {\r\n return false\r\n };\r\n _proto._isVerticalGroupedWorkSpace = function() {\r\n return false\r\n };\r\n _proto._getElementClass = function() {\r\n return AGENDA_CLASS\r\n };\r\n _proto._setFirstViewDate = function() {\r\n this._firstViewDate = new Date(this.option(\"currentDate\"));\r\n this._setStartDayHour(this._firstViewDate)\r\n };\r\n _proto._getRowCount = function() {\r\n return this.option(\"agendaDuration\")\r\n };\r\n _proto._getCellCount = function() {\r\n return 1\r\n };\r\n _proto._getTimePanelRowCount = function() {\r\n return this.option(\"agendaDuration\")\r\n };\r\n _proto._getDateByIndex = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._getFormat = function() {\r\n return \"d ddd\"\r\n };\r\n _proto._renderAllDayPanel = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._toggleAllDayVisibility = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._initWorkSpaceUnits = function() {\r\n this._initGroupTable();\r\n this._$timePanel = (0, _renderer.default)(\"\").addClass(this._getTimePanelClass());\r\n this._$dateTable = (0, _renderer.default)(\"\").addClass(this._getDateTableClass())\r\n };\r\n _proto._initGroupTable = function() {\r\n var groups = this.option(\"groups\");\r\n if (groups && groups.length) {\r\n this._$groupTable = (0, _renderer.default)(\"\").addClass(GROUP_TABLE_CLASS)\r\n }\r\n };\r\n _proto._renderView = function() {\r\n this._setFirstViewDate();\r\n this._rows = [];\r\n this.invoke(\"getAgendaRows\", {\r\n agendaDuration: this.option(\"agendaDuration\"),\r\n currentDate: new Date(this.option(\"currentDate\"))\r\n }).done(function(rows) {\r\n this._recalculateAgenda(rows)\r\n }.bind(this))\r\n };\r\n _proto._recalculateAgenda = function(rows) {\r\n var cellTemplates = [];\r\n this._cleanView();\r\n if (this._rowsIsEmpty(rows)) {\r\n this._renderNoData();\r\n return\r\n }\r\n this._rows = rows;\r\n if (this._$groupTable) {\r\n cellTemplates = this._renderGroupHeader();\r\n this._setGroupHeaderCellsHeight()\r\n }\r\n this._renderTimePanel();\r\n this._renderDateTable();\r\n this.invoke(\"onAgendaReady\", rows);\r\n this._applyCellTemplates(cellTemplates);\r\n this._dateTableScrollable.update()\r\n };\r\n _proto._renderNoData = function() {\r\n this._$noDataContainer = (0, _renderer.default)(\"\").addClass(NODATA_CONTAINER_CLASS).html(this.option(\"noDataText\"));\r\n this._dateTableScrollable.$content().append(this._$noDataContainer)\r\n };\r\n _proto._setTableSizes = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._toggleHorizontalScrollClass = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._createCrossScrollingConfig = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._setGroupHeaderCellsHeight = function() {\r\n var $cells = this._getGroupHeaderCells().filter(function(_, element) {\r\n return !element.getAttribute(\"rowSpan\")\r\n });\r\n var rows = this._removeEmptyRows(this._rows);\r\n if (!rows.length) {\r\n return\r\n }\r\n for (var i = 0; i < $cells.length; i++) {\r\n var $cellContent = $cells.eq(i).find(\".dx-scheduler-group-header-content\");\r\n $cellContent.outerHeight(this._getGroupRowHeight(rows[i]))\r\n }\r\n };\r\n _proto._rowsIsEmpty = function(rows) {\r\n var result = true;\r\n for (var i = 0; i < rows.length; i++) {\r\n var groupRow = rows[i];\r\n for (var j = 0; j < groupRow.length; j++) {\r\n if (groupRow[j]) {\r\n result = false;\r\n break\r\n }\r\n }\r\n }\r\n return result\r\n };\r\n _proto._detachGroupCountAttr = function() {\r\n this.$element().removeAttr(AGENDA_GROUPED_ATTR)\r\n };\r\n _proto._attachGroupCountAttr = function() {\r\n this.$element().attr(AGENDA_GROUPED_ATTR, this.option(\"groups\").length)\r\n };\r\n _proto._removeEmptyRows = function(rows) {\r\n var result = [];\r\n var isEmpty = function(data) {\r\n return !data.some(function(value) {\r\n return value > 0\r\n })\r\n };\r\n for (var i = 0; i < rows.length; i++) {\r\n if (rows[i].length && !isEmpty(rows[i])) {\r\n result.push(rows[i])\r\n }\r\n }\r\n return result\r\n };\r\n _proto._getGroupHeaderContainer = function() {\r\n return this._$groupTable\r\n };\r\n _proto._makeGroupRows = function() {\r\n var tree = this.invoke(\"createReducedResourcesTree\");\r\n var cellTemplate = this.option(\"resourceCellTemplate\");\r\n var getGroupHeaderContentClass = this._getGroupHeaderContentClass();\r\n var cellTemplates = [];\r\n var table = tableCreator.makeGroupedTableFromJSON(tableCreator.VERTICAL, tree, {\r\n cellTag: \"th\",\r\n groupTableClass: GROUP_TABLE_CLASS,\r\n groupRowClass: this._getGroupRowClass(),\r\n groupCellClass: this._getGroupHeaderClass(),\r\n groupCellCustomContent: function(cell, cellText, index, data) {\r\n var container = _dom_adapter.default.createElement(\"div\");\r\n var contentWrapper = _dom_adapter.default.createElement(\"div\");\r\n container.className = getGroupHeaderContentClass;\r\n contentWrapper.appendChild(cellText);\r\n container.appendChild(contentWrapper);\r\n container.className = getGroupHeaderContentClass;\r\n if (cellTemplate && cellTemplate.render) {\r\n cellTemplates.push(cellTemplate.render.bind(cellTemplate, {\r\n model: {\r\n data: data.data,\r\n id: data.value,\r\n color: data.color,\r\n text: cellText.textContent\r\n },\r\n container: (0, _element.getPublicElement)((0, _renderer.default)(container)),\r\n index: index\r\n }))\r\n } else {\r\n contentWrapper.appendChild(cellText);\r\n container.appendChild(contentWrapper)\r\n }\r\n cell.appendChild(container)\r\n },\r\n cellTemplate: cellTemplate\r\n });\r\n return {\r\n elements: (0, _renderer.default)(table).find(\".\" + this._getGroupRowClass()),\r\n cellTemplates: cellTemplates\r\n }\r\n };\r\n _proto._cleanView = function() {\r\n this._$dateTable.empty();\r\n this._$timePanel.empty();\r\n if (this._$groupTable) {\r\n this._$groupTable.empty()\r\n }\r\n if (this._$noDataContainer) {\r\n this._$noDataContainer.empty();\r\n this._$noDataContainer.remove();\r\n delete this._$noDataContainer\r\n }\r\n };\r\n _proto._createWorkSpaceElements = function() {\r\n this._createWorkSpaceStaticElements()\r\n };\r\n _proto._createWorkSpaceStaticElements = function() {\r\n if (this._$groupTable) {\r\n this._dateTableScrollable.$content().prepend(this._$groupTable)\r\n }\r\n this._dateTableScrollable.$content().append(this._$timePanel, this._$dateTable);\r\n this.$element().append(this._dateTableScrollable.$element())\r\n };\r\n _proto._renderDateTable = function() {\r\n this._renderTableBody({\r\n container: (0, _element.getPublicElement)(this._$dateTable),\r\n rowClass: this._getDateTableRowClass(),\r\n cellClass: this._getDateTableCellClass()\r\n })\r\n };\r\n _proto._attachTablesEvents = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._attachEvents = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._cleanCellDataCache = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto.isIndicationAvailable = function() {\r\n return false\r\n };\r\n _proto._prepareCellTemplateOptions = function(text, date, rowIndex, $cell) {\r\n var groupsOpt = this.option(\"groups\");\r\n var groups = {};\r\n var path = groupsOpt.length && this._getPathToLeaf(rowIndex) || [];\r\n path.forEach(function(resourceValue, resourceIndex) {\r\n var resourceName = groupsOpt[resourceIndex].name;\r\n groups[resourceName] = resourceValue\r\n });\r\n return {\r\n model: {\r\n text: text,\r\n date: date,\r\n groups: groups\r\n },\r\n container: (0, _element.getPublicElement)($cell),\r\n index: rowIndex\r\n }\r\n };\r\n _proto._renderTableBody = function(options) {\r\n var cellTemplates = [];\r\n var cellTemplateOpt = options.cellTemplate;\r\n this._$rows = [];\r\n var i;\r\n var fillTableBody = function(rowIndex, rowSize) {\r\n if (rowSize) {\r\n var date;\r\n var cellDateNumber;\r\n var cellDayName;\r\n var $row = (0, _renderer.default)(\" \");\r\n var $td = (0, _renderer.default)(\"\").height(this._getRowHeight(rowSize));\r\n if (options.getStartDate) {\r\n date = options.getStartDate && options.getStartDate(rowIndex);\r\n cellDateNumber = _date.default.format(date, \"d\");\r\n cellDayName = _date.default.format(date, this._formatWeekday)\r\n }\r\n if (cellTemplateOpt && cellTemplateOpt.render) {\r\n var templateOptions = this._prepareCellTemplateOptions(cellDateNumber + \" \" + cellDayName, date, i, $td);\r\n cellTemplates.push(cellTemplateOpt.render.bind(cellTemplateOpt, templateOptions))\r\n } else {\r\n if (cellDateNumber && cellDayName) {\r\n $td.addClass(AGENDA_DATE_CLASS).text(cellDateNumber + \" \" + cellDayName)\r\n }\r\n }\r\n if (options.rowClass) {\r\n $row.addClass(options.rowClass)\r\n }\r\n if (options.cellClass) {\r\n $td.addClass(options.cellClass)\r\n }\r\n $row.append($td);\r\n this._$rows.push($row)\r\n }\r\n }.bind(this);\r\n for (i = 0; i < this._rows.length; i++) {\r\n (0, _iterator.each)(this._rows[i], fillTableBody);\r\n this._setLastRowClass()\r\n }(0, _renderer.default)(options.container).append((0, _renderer.default)(\" | \").append(this._$rows));\r\n this._applyCellTemplates(cellTemplates)\r\n };\r\n _proto._setLastRowClass = function() {\r\n if (this._rows.length > 1 && this._$rows.length) {\r\n var $lastRow = this._$rows[this._$rows.length - 1];\r\n $lastRow.addClass(LAST_ROW_CLASS)\r\n }\r\n };\r\n _proto._renderTimePanel = function() {\r\n this._renderTableBody({\r\n container: (0, _element.getPublicElement)(this._$timePanel),\r\n rowCount: this._getTimePanelRowCount(),\r\n cellCount: 1,\r\n rowClass: TIME_PANEL_ROW_CLASS,\r\n cellClass: TIME_PANEL_CELL_CLASS,\r\n cellTemplate: this.option(\"dateCellTemplate\"),\r\n getStartDate: this._getTimePanelStartDate.bind(this)\r\n })\r\n };\r\n _proto._getTimePanelStartDate = function(rowIndex) {\r\n var current = new Date(this.option(\"currentDate\"));\r\n var cellDate = new Date(current.setDate(current.getDate() + rowIndex));\r\n return cellDate\r\n };\r\n _proto._getRowHeight = function(rowSize) {\r\n var baseHeight = this.option(\"rowHeight\");\r\n var innerOffset = (rowSize - 1) * INNER_CELL_MARGIN;\r\n return rowSize ? baseHeight * rowSize + innerOffset + OUTER_CELL_MARGIN : 0\r\n };\r\n _proto._getGroupRowHeight = function(groupRows) {\r\n if (!groupRows) {\r\n return\r\n }\r\n var result = 0;\r\n for (var i = 0; i < groupRows.length; i++) {\r\n result += this._getRowHeight(groupRows[i])\r\n }\r\n return result\r\n };\r\n _proto.getAgendaVerticalStepHeight = function() {\r\n return this.option(\"rowHeight\")\r\n };\r\n _proto.getEndViewDate = function() {\r\n var currentDate = new Date(this.option(\"currentDate\"));\r\n var agendaDuration = this.option(\"agendaDuration\");\r\n currentDate.setHours(this.option(\"endDayHour\"));\r\n var result = currentDate.setDate(currentDate.getDate() + agendaDuration - 1) - 6e4;\r\n return new Date(result)\r\n };\r\n _proto.getEndViewDateByEndDayHour = function() {\r\n return this.getEndViewDate()\r\n };\r\n _proto.getCoordinatesByDate = function() {\r\n return {\r\n top: 0,\r\n left: 0,\r\n max: 0,\r\n groupIndex: 0\r\n }\r\n };\r\n _proto.getCellDataByCoordinates = function() {\r\n return {\r\n startDate: null,\r\n endDate: null\r\n }\r\n };\r\n _proto.updateScrollPosition = function(date) {\r\n var scheduler = this.option(\"observer\");\r\n var newDate = scheduler.timeZoneCalculator.createDate(date, {\r\n path: \"toGrid\"\r\n });\r\n var bounds = this.getVisibleBounds();\r\n var startDateHour = newDate.getHours();\r\n var startDateMinutes = newDate.getMinutes();\r\n if (this.needUpdateScrollPosition(startDateHour, startDateMinutes, bounds, newDate)) {\r\n this.scrollToTime(startDateHour, startDateMinutes, newDate)\r\n }\r\n };\r\n _proto.needUpdateScrollPosition = function(hours, minutes, bounds) {\r\n var isUpdateNeeded = false;\r\n if (hours < bounds.top.hours || hours > bounds.bottom.hours) {\r\n isUpdateNeeded = true\r\n }\r\n if (hours === bounds.top.hours && minutes < bounds.top.minutes) {\r\n isUpdateNeeded = true\r\n }\r\n if (hours === bounds.bottom.hours && minutes > bounds.top.minutes) {\r\n isUpdateNeeded = true\r\n }\r\n return isUpdateNeeded\r\n };\r\n return SchedulerAgenda\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerAgenda\", SchedulerAgenda);\r\nvar _default = SchedulerAgenda;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.horizontal.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _uiSchedulerWork_spaceGrouped = _interopRequireDefault(require(\"./ui.scheduler.work_space.grouped.strategy\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar HORIZONTAL_GROUPED_ATTR = \"dx-group-row-count\";\r\nvar HorizontalGroupedStrategy = function(_GroupedStrategy) {\r\n _inheritsLoose(HorizontalGroupedStrategy, _GroupedStrategy);\r\n\r\n function HorizontalGroupedStrategy() {\r\n return _GroupedStrategy.apply(this, arguments) || this\r\n }\r\n var _proto = HorizontalGroupedStrategy.prototype;\r\n _proto.prepareCellIndexes = function(cellCoordinates, groupIndex, inAllDay) {\r\n var groupByDay = this._workSpace.isGroupedByDate();\r\n if (!groupByDay) {\r\n return {\r\n rowIndex: cellCoordinates.rowIndex,\r\n cellIndex: cellCoordinates.cellIndex + groupIndex * this._workSpace._getCellCount()\r\n }\r\n } else {\r\n return {\r\n rowIndex: cellCoordinates.rowIndex,\r\n cellIndex: cellCoordinates.cellIndex * this._workSpace._getGroupCount() + groupIndex\r\n }\r\n }\r\n };\r\n _proto.calculateCellIndex = function(rowIndex, cellIndex) {\r\n cellIndex %= this._workSpace._getCellCount();\r\n return this._workSpace._getRowCount() * cellIndex + rowIndex\r\n };\r\n _proto.getGroupIndex = function(rowIndex, cellIndex) {\r\n var groupByDay = this._workSpace.isGroupedByDate();\r\n var groupCount = this._workSpace._getGroupCount();\r\n if (groupByDay) {\r\n return cellIndex % groupCount\r\n } else {\r\n return Math.floor(cellIndex / this._workSpace._getCellCount())\r\n }\r\n };\r\n _proto.calculateHeaderCellRepeatCount = function() {\r\n return this._workSpace._getGroupCount() || 1\r\n };\r\n _proto.insertAllDayRowsIntoDateTable = function() {\r\n return false\r\n };\r\n _proto.getTotalCellCount = function(groupCount) {\r\n groupCount = groupCount || 1;\r\n return this._workSpace._getCellCount() * groupCount\r\n };\r\n _proto.getTotalRowCount = function() {\r\n return this._workSpace._getRowCount()\r\n };\r\n _proto.addAdditionalGroupCellClasses = function(cellClass, index, i, j) {\r\n var applyUnconditionally = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false;\r\n cellClass = this._addLastGroupCellClass(cellClass, index, applyUnconditionally);\r\n return this._addFirstGroupCellClass(cellClass, index, applyUnconditionally)\r\n };\r\n _proto._addLastGroupCellClass = function(cellClass, index, applyUnconditionally) {\r\n if (applyUnconditionally) {\r\n return \"\".concat(cellClass, \" \").concat(this.getLastGroupCellClass())\r\n }\r\n var groupByDate = this._workSpace.isGroupedByDate();\r\n if (groupByDate) {\r\n if (index % this._workSpace._getGroupCount() === 0) {\r\n return \"\".concat(cellClass, \" \").concat(this.getLastGroupCellClass())\r\n }\r\n } else {\r\n if (index % this._workSpace._getCellCount() === 0) {\r\n return \"\".concat(cellClass, \" \").concat(this.getLastGroupCellClass())\r\n }\r\n }\r\n return cellClass\r\n };\r\n _proto._addFirstGroupCellClass = function(cellClass, index, applyUnconditionally) {\r\n if (applyUnconditionally) {\r\n return \"\".concat(cellClass, \" \").concat(this.getFirstGroupCellClass())\r\n }\r\n var groupByDate = this._workSpace.isGroupedByDate();\r\n if (groupByDate) {\r\n if ((index - 1) % this._workSpace._getGroupCount() === 0) {\r\n return \"\".concat(cellClass, \" \").concat(this.getFirstGroupCellClass())\r\n }\r\n } else {\r\n if ((index - 1) % this._workSpace._getCellCount() === 0) {\r\n return \"\".concat(cellClass, \" \").concat(this.getFirstGroupCellClass())\r\n }\r\n }\r\n return cellClass\r\n };\r\n _proto.getHorizontalMax = function(groupIndex) {\r\n return this._workSpace.getMaxAllowedPosition()[groupIndex]\r\n };\r\n _proto.getVerticalMax = function(groupIndex) {\r\n return this._workSpace.getMaxAllowedVerticalPosition(0)\r\n };\r\n _proto.calculateTimeCellRepeatCount = function() {\r\n return 1\r\n };\r\n _proto.getWorkSpaceMinWidth = function() {\r\n return (0, _position.getBoundingRect)(this._workSpace.$element().get(0)).width - this._workSpace.getTimePanelWidth()\r\n };\r\n _proto.getAllDayOffset = function() {\r\n return this._workSpace.getAllDayHeight()\r\n };\r\n _proto.getAllDayTableHeight = function() {\r\n return (0, _position.getBoundingRect)(this._workSpace._$allDayTable.get(0)).height || 0\r\n };\r\n _proto.getGroupCountAttr = function(groupRowCount, groupRows) {\r\n return {\r\n attr: HORIZONTAL_GROUPED_ATTR,\r\n count: groupRows && groupRows.elements.length\r\n }\r\n };\r\n _proto.getLeftOffset = function() {\r\n return this._workSpace.getTimePanelWidth()\r\n };\r\n _proto.getGroupBoundsOffset = function(cellCount, $cells, cellWidth, coordinates) {\r\n var groupIndex;\r\n var cellIndex;\r\n var startCellIndex;\r\n var startOffset;\r\n var endOffset;\r\n if (this._workSpace.isGroupedByDate()) {\r\n startCellIndex = 0;\r\n startOffset = $cells.eq(startCellIndex).offset().left - cellWidth / 2;\r\n endOffset = $cells.eq(cellCount * this._workSpace._getGroupCount() - 1).offset().left + cellWidth + cellWidth / 2\r\n } else {\r\n cellIndex = this._workSpace.getCellIndexByCoordinates(coordinates);\r\n groupIndex = coordinates.groupIndex || Math.floor(cellIndex / cellCount);\r\n startCellIndex = groupIndex * cellCount;\r\n startOffset = $cells.eq(startCellIndex).offset().left - cellWidth / 2;\r\n endOffset = $cells.eq(startCellIndex + cellCount - 1).offset().left + cellWidth + cellWidth / 2\r\n }\r\n return {\r\n left: startOffset,\r\n right: endOffset,\r\n top: 0,\r\n bottom: 0\r\n }\r\n };\r\n _proto.shiftIndicator = function($indicator, height, rtlOffset, groupIndex) {\r\n var offset = this._getIndicatorOffset(groupIndex);\r\n var horizontalOffset = rtlOffset ? rtlOffset - offset : offset;\r\n $indicator.css(\"left\", horizontalOffset);\r\n $indicator.css(\"top\", height)\r\n };\r\n _proto._getIndicatorOffset = function(groupIndex) {\r\n var groupByDay = this._workSpace.isGroupedByDate();\r\n return groupByDay ? this._calculateGroupByDateOffset(groupIndex) : this._calculateOffset(groupIndex)\r\n };\r\n _proto._calculateOffset = function(groupIndex) {\r\n return this._workSpace._getCellCount() * this._workSpace.getRoundedCellWidth(groupIndex - 1, 0) * groupIndex + this._workSpace.getIndicatorOffset(groupIndex) + groupIndex\r\n };\r\n _proto._calculateGroupByDateOffset = function(groupIndex) {\r\n return this._workSpace.getIndicatorOffset(0) * this._workSpace._getGroupCount() + this._workSpace.getRoundedCellWidth(groupIndex - 1, 0) * groupIndex\r\n };\r\n _proto.getShaderOffset = function(i, width) {\r\n var offset = this._workSpace._getCellCount() * this._workSpace.getRoundedCellWidth(i - 1) * i;\r\n return this._workSpace.option(\"rtlEnabled\") ? (0, _position.getBoundingRect)(this._workSpace._dateTableScrollable.$content().get(0)).width - offset - this._workSpace.getTimePanelWidth() - width : offset\r\n };\r\n _proto.getShaderTopOffset = function(i) {\r\n return -this.getShaderMaxHeight() * (i > 0 ? 1 : 0)\r\n };\r\n _proto.getShaderHeight = function() {\r\n var height = this._workSpace.getIndicationHeight();\r\n return height\r\n };\r\n _proto.getShaderMaxHeight = function() {\r\n return (0, _position.getBoundingRect)(this._workSpace._dateTableScrollable.$content().get(0)).height\r\n };\r\n _proto.getShaderWidth = function(i) {\r\n return this._workSpace.getIndicationWidth(i)\r\n };\r\n _proto.getScrollableScrollTop = function(allDay) {\r\n return !allDay ? this._workSpace.getScrollable().scrollTop() : 0\r\n };\r\n _proto.getGroupIndexByCell = function($cell) {\r\n var rowIndex = $cell.parent().index();\r\n var cellIndex = $cell.index();\r\n return this.getGroupIndex(rowIndex, cellIndex)\r\n };\r\n return HorizontalGroupedStrategy\r\n}(_uiSchedulerWork_spaceGrouped.default);\r\nvar _default = HorizontalGroupedStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.vertical.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _uiSchedulerWork_spaceGrouped = _interopRequireDefault(require(\"./ui.scheduler.work_space.grouped.strategy\"));\r\nvar _cache = require(\"./cache\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar VERTICAL_GROUPED_ATTR = \"dx-group-column-count\";\r\nvar DATE_HEADER_OFFSET = 10;\r\nvar WORK_SPACE_BORDER = 1;\r\nvar VerticalGroupedStrategy = function(_GroupedStrategy) {\r\n _inheritsLoose(VerticalGroupedStrategy, _GroupedStrategy);\r\n\r\n function VerticalGroupedStrategy() {\r\n return _GroupedStrategy.apply(this, arguments) || this\r\n }\r\n var _proto = VerticalGroupedStrategy.prototype;\r\n _proto.prepareCellIndexes = function(cellCoordinates, groupIndex, inAllDayRow) {\r\n var rowIndex = cellCoordinates.rowIndex + groupIndex * this._workSpace._getRowCount();\r\n if (this._workSpace.supportAllDayRow() && this._workSpace.option(\"showAllDayPanel\")) {\r\n rowIndex += groupIndex;\r\n if (!inAllDayRow) {\r\n rowIndex += 1\r\n }\r\n }\r\n return {\r\n rowIndex: rowIndex,\r\n cellIndex: cellCoordinates.cellIndex\r\n }\r\n };\r\n _proto.calculateCellIndex = function(rowIndex, cellIndex) {\r\n rowIndex %= this._workSpace._getRowCount();\r\n return this._workSpace._getRowCount() * cellIndex + rowIndex\r\n };\r\n _proto.getGroupIndex = function(rowIndex) {\r\n return Math.floor(rowIndex / this._workSpace._getRowCount())\r\n };\r\n _proto.calculateHeaderCellRepeatCount = function() {\r\n return 1\r\n };\r\n _proto.insertAllDayRowsIntoDateTable = function() {\r\n return this._workSpace.option(\"showAllDayPanel\")\r\n };\r\n _proto.getTotalCellCount = function() {\r\n return this._workSpace._getCellCount()\r\n };\r\n _proto.getTotalRowCount = function() {\r\n return this._workSpace._getRowCount() * this._workSpace._getGroupCount()\r\n };\r\n _proto.addAdditionalGroupCellClasses = function(cellClass, index, i, j) {\r\n cellClass = this._addLastGroupCellClass(cellClass, i + 1);\r\n return this._addFirstGroupCellClass(cellClass, i + 1)\r\n };\r\n _proto._addLastGroupCellClass = function(cellClass, index) {\r\n if (index % this._workSpace._getRowCount() === 0) {\r\n return cellClass + \" \" + this.getLastGroupCellClass()\r\n }\r\n return cellClass\r\n };\r\n _proto._addFirstGroupCellClass = function(cellClass, index) {\r\n if ((index - 1) % this._workSpace._getRowCount() === 0) {\r\n return cellClass + \" \" + this.getFirstGroupCellClass()\r\n }\r\n return cellClass\r\n };\r\n _proto.getHorizontalMax = function() {\r\n return this._workSpace.getMaxAllowedPosition()[0]\r\n };\r\n _proto.getVerticalMax = function(groupIndex) {\r\n var maxAllowedPosition = this._workSpace.getMaxAllowedVerticalPosition(groupIndex);\r\n maxAllowedPosition += this._getOffsetByAllDayPanel(groupIndex);\r\n return maxAllowedPosition\r\n };\r\n _proto._getOffsetByAllDayPanel = function(groupIndex) {\r\n var result = 0;\r\n if (this._workSpace.supportAllDayRow() && this._workSpace.option(\"showAllDayPanel\")) {\r\n result = this._workSpace.getAllDayHeight() * (groupIndex + 1)\r\n }\r\n return result\r\n };\r\n _proto._getGroupTop = function(groupIndex) {\r\n var workspace = this._workSpace;\r\n var rowCount = workspace.isVirtualScrolling() ? workspace.viewDataProvider.getRowCountInGroup(groupIndex) : workspace._getRowCount();\r\n return workspace.getMaxAllowedVerticalPosition(groupIndex) - workspace.getCellHeight() * rowCount\r\n };\r\n _proto.calculateTimeCellRepeatCount = function() {\r\n return this._workSpace._getGroupCount() || 1\r\n };\r\n _proto.getWorkSpaceMinWidth = function() {\r\n var minWidth = this._workSpace._getWorkSpaceWidth();\r\n var workspaceContainerWidth = (0, _position.getBoundingRect)(this._workSpace.$element().get(0)).width - this._workSpace.getTimePanelWidth() - this._workSpace.getGroupTableWidth() - 2 * WORK_SPACE_BORDER;\r\n if (minWidth < workspaceContainerWidth) {\r\n minWidth = workspaceContainerWidth\r\n }\r\n return minWidth\r\n };\r\n _proto.getAllDayOffset = function() {\r\n return 0\r\n };\r\n _proto.getAllDayTableHeight = function() {\r\n return 0\r\n };\r\n _proto.getGroupCountAttr = function() {\r\n return {\r\n attr: VERTICAL_GROUPED_ATTR,\r\n count: this._workSpace.option(\"groups\") && this._workSpace.option(\"groups\").length\r\n }\r\n };\r\n _proto.getLeftOffset = function() {\r\n return this._workSpace.getTimePanelWidth() + this._workSpace.getGroupTableWidth()\r\n };\r\n _proto.getGroupBoundsOffset = function(cellCount, $cells, cellWidth, coordinates) {\r\n var _this = this;\r\n var groupIndex = coordinates.groupIndex;\r\n return _cache.cache.get(\"groupBoundsOffset\".concat(groupIndex), function() {\r\n var groupIndex = coordinates.groupIndex;\r\n var startOffset = $cells.eq(0).offset().left;\r\n var endOffset = $cells.eq(cellCount - 1).offset().left + cellWidth;\r\n var dayHeight = _this._workSpace._calculateDayDuration() / _this._workSpace.option(\"hoursInterval\") * _this._workSpace.getCellHeight();\r\n var scrollTop = _this.getScrollableScrollTop();\r\n var topOffset = groupIndex * dayHeight + (0, _position.getBoundingRect)(_this._workSpace._$thead.get(0)).height + _this._workSpace.invoke(\"getHeaderHeight\") + DATE_HEADER_OFFSET - scrollTop;\r\n if (_this._workSpace.option(\"showAllDayPanel\") && _this._workSpace.supportAllDayRow()) {\r\n topOffset += _this._workSpace.getCellHeight() * (groupIndex + 1)\r\n }\r\n var bottomOffset = topOffset + dayHeight;\r\n return _this._groupBoundsOffset = {\r\n left: startOffset,\r\n right: endOffset,\r\n top: topOffset,\r\n bottom: bottomOffset\r\n }\r\n })\r\n };\r\n _proto.shiftIndicator = function($indicator, height, rtlOffset, i) {\r\n var offset = this._workSpace.getIndicatorOffset(0);\r\n var tableOffset = this._workSpace.option(\"crossScrollingEnabled\") ? 0 : this._workSpace.getGroupTableWidth();\r\n var horizontalOffset = rtlOffset ? rtlOffset - offset : offset;\r\n var verticalOffset = this._workSpace._getRowCount() * this._workSpace.getCellHeight() * i;\r\n if (this._workSpace.supportAllDayRow() && this._workSpace.option(\"showAllDayPanel\")) {\r\n verticalOffset += this._workSpace.getAllDayHeight() * (i + 1)\r\n }\r\n $indicator.css(\"left\", horizontalOffset + tableOffset);\r\n $indicator.css(\"top\", height + verticalOffset)\r\n };\r\n _proto.getShaderOffset = function(i, width) {\r\n var offset = this._workSpace.option(\"crossScrollingEnabled\") ? 0 : this._workSpace.getGroupTableWidth();\r\n return this._workSpace.option(\"rtlEnabled\") ? (0, _position.getBoundingRect)(this._$container.get(0)).width - offset - this._workSpace.getWorkSpaceLeftOffset() - width : offset\r\n };\r\n _proto.getShaderTopOffset = function(i) {\r\n return 0\r\n };\r\n _proto.getShaderHeight = function() {\r\n var height = this._workSpace.getIndicationHeight();\r\n if (this._workSpace.supportAllDayRow() && this._workSpace.option(\"showAllDayPanel\")) {\r\n height += this._workSpace.getCellHeight()\r\n }\r\n return height\r\n };\r\n _proto.getShaderMaxHeight = function() {\r\n var height = this._workSpace._getRowCount() * this._workSpace.getCellHeight();\r\n if (this._workSpace.supportAllDayRow() && this._workSpace.option(\"showAllDayPanel\")) {\r\n height += this._workSpace.getCellHeight()\r\n }\r\n return height\r\n };\r\n _proto.getShaderWidth = function() {\r\n return this._workSpace.getIndicationWidth(0)\r\n };\r\n _proto.getScrollableScrollTop = function() {\r\n return this._workSpace.getScrollable().scrollTop()\r\n };\r\n _proto.getGroupIndexByCell = function($cell) {\r\n var rowIndex = $cell.parent().index();\r\n var rowCount = this._workSpace._getRowCountWithAllDayRows();\r\n return Math.ceil((rowIndex + 1) / rowCount)\r\n };\r\n return VerticalGroupedStrategy\r\n}(_uiSchedulerWork_spaceGrouped.default);\r\nvar _default = VerticalGroupedStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.virtual_scrolling.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../../events/core/events_engine\"));\r\nvar _window = require(\"../../../core/utils/window\");\r\nvar _index = require(\"../../../events/utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n enumerableOnly && (symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })), keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n i % 2 ? ownKeys(Object(source), !0).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n Object.defineProperty(Constructor, \"prototype\", {\r\n writable: false\r\n });\r\n return Constructor\r\n}\r\nvar DEFAULT_CELL_HEIGHT = 50;\r\nvar MIN_CELL_WIDTH = 1;\r\nvar MIN_SCROLL_OFFSET = 10;\r\nvar VIRTUAL_APPOINTMENTS_RENDER_TIMEOUT = 15;\r\nvar DOCUMENT_SCROLL_EVENT_NAMESPACE = (0, _index.addNamespace)(\"scroll\", \"dxSchedulerVirtualScrolling\");\r\nvar scrollingTypes = {\r\n vertical: \"vertical\",\r\n horizontal: \"horizontal\",\r\n both: \"both\"\r\n};\r\nvar DefaultScrollingType = scrollingTypes.vertical;\r\nvar VirtualScrollingDispatcher = function() {\r\n function VirtualScrollingDispatcher(workspace) {\r\n this._workspace = workspace;\r\n this._rowHeight = this.getCellHeight();\r\n this._cellWidth = this.getCellWidth();\r\n this._renderer = new Renderer(this.workspace);\r\n this._createVirtualScrolling();\r\n this._attachScrollableEvents()\r\n }\r\n var _proto = VirtualScrollingDispatcher.prototype;\r\n _proto.getCellHeight = function() {\r\n var cellHeight = this.workspace.getCellHeight(false);\r\n var result = cellHeight > 0 ? cellHeight : DEFAULT_CELL_HEIGHT;\r\n return Math.floor(result)\r\n };\r\n _proto.getCellWidth = function() {\r\n var cellWidth = this.workspace.getCellWidth() || this.workspace.getCellMinWidth();\r\n var result = cellWidth > 0 ? cellWidth : MIN_CELL_WIDTH;\r\n return Math.floor(result)\r\n };\r\n _proto.calculateCoordinatesByDataAndPosition = function(cellData, position, date) {\r\n var workSpace = this._workspace;\r\n var rowIndex = position.rowIndex,\r\n columnIndex = position.columnIndex;\r\n var startDate = cellData.startDate,\r\n endDate = cellData.endDate,\r\n allDay = cellData.allDay;\r\n var timeToScroll = date.getTime();\r\n var cellStartTime = startDate.getTime();\r\n var cellEndTime = endDate.getTime();\r\n var scrollInCell = allDay ? 0 : (timeToScroll - cellStartTime) / (cellEndTime - cellStartTime);\r\n var cellWidth = workSpace.getCellWidth();\r\n var top = (rowIndex + scrollInCell) * this.rowHeight;\r\n var left = cellWidth * columnIndex;\r\n if (workSpace.option(\"rtlEnabled\")) {\r\n left = workSpace.getScrollableOuterWidth() - left\r\n }\r\n return {\r\n top: top,\r\n left: left\r\n }\r\n };\r\n _proto.dispose = function() {\r\n if (this._onScrollHandler) {\r\n _events_engine.default.off(this.document, DOCUMENT_SCROLL_EVENT_NAMESPACE, this._onScrollHandler)\r\n }\r\n };\r\n _proto._createVirtualScrolling = function() {\r\n if (this.verticalScrollingAllowed) {\r\n this.verticalVirtualScrolling = new VerticalVirtualScrolling({\r\n workspace: this.workspace,\r\n viewportHeight: this.viewportHeight,\r\n rowHeight: this.rowHeight\r\n })\r\n }\r\n if (this.horizontalScrollingAllowed) {\r\n this.horizontalVirtualScrolling = new HorizontalVirtualScrolling({\r\n workspace: this.workspace,\r\n viewportWidth: this.viewportWidth,\r\n cellWidth: this.cellWidth\r\n })\r\n }\r\n };\r\n _proto._attachScrollableEvents = function() {\r\n if (this.height || this.width) {\r\n this._attachScrollableScroll()\r\n }\r\n if (!this.height || !this.width) {\r\n this._attachWindowScroll()\r\n }\r\n };\r\n _proto._attachScrollableScroll = function() {\r\n var _this = this;\r\n var scrollable = this.workspace.getScrollable();\r\n var currentOnScroll = scrollable.option(\"onScroll\");\r\n scrollable.option(\"onScroll\", function(e) {\r\n null === currentOnScroll || void 0 === currentOnScroll ? void 0 : currentOnScroll.apply(scrollable, [e]);\r\n _this._process(null === e || void 0 === e ? void 0 : e.scrollOffset)\r\n })\r\n };\r\n _proto._attachWindowScroll = function() {\r\n var _this2 = this;\r\n var window = (0, _window.getWindow)();\r\n this._onScrollHandler = this.workspace._createAction(function() {\r\n var scrollX = window.scrollX,\r\n scrollY = window.scrollY;\r\n if (scrollX >= _this2.minScrollOffset || scrollY >= _this2.minScrollOffset) {\r\n _this2._process({\r\n left: scrollX,\r\n top: scrollY\r\n })\r\n }\r\n });\r\n _events_engine.default.on(this.document, DOCUMENT_SCROLL_EVENT_NAMESPACE, this._onScrollHandler)\r\n };\r\n _proto._process = function(scrollPosition) {\r\n if (scrollPosition) {\r\n var _this$verticalVirtual, _this$horizontalVirtu;\r\n var left = scrollPosition.left,\r\n top = scrollPosition.top;\r\n null === (_this$verticalVirtual = this.verticalVirtualScrolling) || void 0 === _this$verticalVirtual ? void 0 : _this$verticalVirtual.updateState(top);\r\n null === (_this$horizontalVirtu = this.horizontalVirtualScrolling) || void 0 === _this$horizontalVirtu ? void 0 : _this$horizontalVirtu.updateState(left);\r\n this.renderer.updateRender()\r\n }\r\n };\r\n _proto.updateDimensions = function() {\r\n var cellHeight = this.getCellHeight(false);\r\n var needUpdateVertical = this.verticalScrollingAllowed && cellHeight !== this.rowHeight;\r\n if (needUpdateVertical) {\r\n var _this$verticalVirtual2;\r\n this.rowHeight = cellHeight;\r\n null === (_this$verticalVirtual2 = this.verticalVirtualScrolling) || void 0 === _this$verticalVirtual2 ? void 0 : _this$verticalVirtual2.reinitState(cellHeight)\r\n }\r\n var cellWidth = this.getCellWidth();\r\n var needUpdateHorizontal = this.horizontalScrollingAllowed && cellWidth !== this.cellWidth;\r\n if (needUpdateHorizontal) {\r\n var _this$horizontalVirtu2;\r\n this.cellWidth = cellWidth;\r\n null === (_this$horizontalVirtu2 = this.horizontalVirtualScrolling) || void 0 === _this$horizontalVirtu2 ? void 0 : _this$horizontalVirtu2.reinitState(cellWidth)\r\n }\r\n if (needUpdateVertical || needUpdateHorizontal) {\r\n this.renderer._renderGrid()\r\n }\r\n };\r\n _createClass(VirtualScrollingDispatcher, [{\r\n key: \"workspace\",\r\n get: function() {\r\n return this._workspace\r\n }\r\n }, {\r\n key: \"renderer\",\r\n get: function() {\r\n return this._renderer\r\n }\r\n }, {\r\n key: \"isVirtualScrolling\",\r\n get: function() {\r\n return this.workspace.isVirtualScrolling()\r\n }\r\n }, {\r\n key: \"minScrollOffset\",\r\n get: function() {\r\n return MIN_SCROLL_OFFSET\r\n }\r\n }, {\r\n key: \"verticalVirtualScrolling\",\r\n get: function() {\r\n return this._verticalVirtualScrolling\r\n },\r\n set: function(value) {\r\n this._verticalVirtualScrolling = value\r\n }\r\n }, {\r\n key: \"horizontalVirtualScrolling\",\r\n get: function() {\r\n return this._horizontalVirtualScrolling\r\n },\r\n set: function(value) {\r\n this._horizontalVirtualScrolling = value\r\n }\r\n }, {\r\n key: \"document\",\r\n get: function() {\r\n return _dom_adapter.default.getDocument()\r\n }\r\n }, {\r\n key: \"height\",\r\n get: function() {\r\n return this.workspace.invoke(\"getOption\", \"height\")\r\n }\r\n }, {\r\n key: \"width\",\r\n get: function() {\r\n return this.workspace.invoke(\"getOption\", \"width\")\r\n }\r\n }, {\r\n key: \"rowHeight\",\r\n get: function() {\r\n return this._rowHeight\r\n },\r\n set: function(value) {\r\n this._rowHeight = value\r\n }\r\n }, {\r\n key: \"viewportHeight\",\r\n get: function() {\r\n return this.height ? this.workspace.$element().height() : (0, _window.getWindow)().innerHeight\r\n }\r\n }, {\r\n key: \"cellWidth\",\r\n get: function() {\r\n return this._cellWidth\r\n },\r\n set: function(value) {\r\n this._cellWidth = value\r\n }\r\n }, {\r\n key: \"viewportWidth\",\r\n get: function() {\r\n return this.width ? this.workspace.$element().width() : (0, _window.getWindow)().innerWidth\r\n }\r\n }, {\r\n key: \"topVirtualRowsCount\",\r\n get: function() {\r\n return this.verticalScrollingState.virtualItemCountBefore > 0 ? 1 : 0\r\n }\r\n }, {\r\n key: \"scrollingState\",\r\n get: function() {\r\n var _this$verticalVirtual3, _this$horizontalVirtu3;\r\n return {\r\n vertical: null === (_this$verticalVirtual3 = this.verticalVirtualScrolling) || void 0 === _this$verticalVirtual3 ? void 0 : _this$verticalVirtual3.state,\r\n horizontal: null === (_this$horizontalVirtu3 = this.horizontalVirtualScrolling) || void 0 === _this$horizontalVirtu3 ? void 0 : _this$horizontalVirtu3.state\r\n }\r\n }\r\n }, {\r\n key: \"verticalScrollingState\",\r\n get: function() {\r\n return this.scrollingState.vertical\r\n }\r\n }, {\r\n key: \"horizontalScrollingState\",\r\n get: function() {\r\n return this.scrollingState.horizontal\r\n }\r\n }, {\r\n key: \"renderState\",\r\n get: function() {\r\n var _this$verticalVirtual4, _this$horizontalVirtu4;\r\n var verticalRenderState = (null === (_this$verticalVirtual4 = this.verticalVirtualScrolling) || void 0 === _this$verticalVirtual4 ? void 0 : _this$verticalVirtual4.getRenderState()) || {};\r\n var horizontalRenderState = (null === (_this$horizontalVirtu4 = this.horizontalVirtualScrolling) || void 0 === _this$horizontalVirtu4 ? void 0 : _this$horizontalVirtu4.getRenderState()) || {};\r\n return _objectSpread(_objectSpread({}, verticalRenderState), horizontalRenderState)\r\n }\r\n }, {\r\n key: \"scrollingType\",\r\n get: function() {\r\n return this.workspace.option(\"scrolling.type\") || DefaultScrollingType\r\n }\r\n }, {\r\n key: \"verticalScrollingAllowed\",\r\n get: function() {\r\n return this.scrollingType === scrollingTypes.vertical || this.scrollingType === scrollingTypes.both\r\n }\r\n }, {\r\n key: \"horizontalScrollingAllowed\",\r\n get: function() {\r\n return this.scrollingType === scrollingTypes.horizontal || this.scrollingType === scrollingTypes.both\r\n }\r\n }]);\r\n return VirtualScrollingDispatcher\r\n}();\r\nexports.default = VirtualScrollingDispatcher;\r\nvar VirtualScrollingBase = function() {\r\n function VirtualScrollingBase(options) {\r\n this._workspace = options.workspace;\r\n this._state = this.defaultState;\r\n this._viewportSize = options.viewportSize;\r\n this._itemSize = options.itemSize;\r\n this._itemSizeChanged = false;\r\n this.updateState(0)\r\n }\r\n var _proto2 = VirtualScrollingBase.prototype;\r\n _proto2.needUpdateState = function(position) {\r\n var _this$state = this.state,\r\n prevPosition = _this$state.prevPosition,\r\n startIndex = _this$state.startIndex;\r\n var isFirstInitialization = startIndex < 0;\r\n if (!isFirstInitialization && (0 === position || position === this.maxScrollPosition)) {\r\n return true\r\n }\r\n var currentPosition = prevPosition;\r\n var currentItemsCount = Math.floor(currentPosition / this.itemSize);\r\n var itemsCount = Math.floor(position / this.itemSize);\r\n var isStartIndexChanged = Math.abs(currentItemsCount - itemsCount) >= this.outlineCount;\r\n return isFirstInitialization || isStartIndexChanged\r\n };\r\n _proto2._correctPosition = function(position) {\r\n if (position < 0) {\r\n return 0\r\n }\r\n return Math.min(position, this.maxScrollPosition)\r\n };\r\n _proto2.updateState = function(position) {\r\n position = this._correctPosition(position);\r\n if (!this.needUpdateState(position)) {\r\n return false\r\n }\r\n var itemsInfoBefore = this._calcItemInfoBefore(position);\r\n var itemsDeltaBefore = this._calcItemDeltaBefore(itemsInfoBefore);\r\n var _this$_calcItemInfoAf = this._calcItemInfoAfter(itemsDeltaBefore),\r\n outlineCountAfter = _this$_calcItemInfoAf.outlineCountAfter,\r\n virtualItemCountAfter = _this$_calcItemInfoAf.virtualItemCountAfter,\r\n itemCountWithAfter = _this$_calcItemInfoAf.itemCountWithAfter;\r\n var virtualItemCountBefore = itemsInfoBefore.virtualItemCountBefore,\r\n outlineCountBefore = itemsInfoBefore.outlineCountBefore;\r\n var itemCount = outlineCountBefore + itemCountWithAfter + outlineCountAfter;\r\n var itemCountAfter = Math.floor(position / this.itemSize);\r\n this.state.prevPosition = itemCountAfter * this.itemSize;\r\n this.state.startIndex = itemCountAfter - outlineCountBefore;\r\n this.state.virtualItemCountBefore = virtualItemCountBefore;\r\n this.state.outlineCountBefore = outlineCountBefore;\r\n this.state.itemCount = itemCount;\r\n this.state.outlineCountAfter = outlineCountAfter;\r\n this.state.virtualItemCountAfter = virtualItemCountAfter;\r\n this._updateStateCore();\r\n return true\r\n };\r\n _proto2.reinitState = function(itemSize) {\r\n var position = this.position;\r\n this.itemSize = itemSize;\r\n this.updateState(0);\r\n if (position > 0) {\r\n this.updateState(position)\r\n }\r\n };\r\n _proto2._calcItemInfoBefore = function(position) {\r\n var virtualItemCountBefore = Math.floor(position / this.itemSize);\r\n var outlineCountBefore = Math.min(virtualItemCountBefore, this.outlineCount);\r\n virtualItemCountBefore -= outlineCountBefore;\r\n return {\r\n virtualItemCountBefore: virtualItemCountBefore,\r\n outlineCountBefore: outlineCountBefore\r\n }\r\n };\r\n _proto2._calcItemDeltaBefore = function(itemInfoBefore) {\r\n var virtualItemCountBefore = itemInfoBefore.virtualItemCountBefore,\r\n outlineCountBefore = itemInfoBefore.outlineCountBefore;\r\n var totalItemCount = this.getTotalItemCount();\r\n return totalItemCount - virtualItemCountBefore - outlineCountBefore\r\n };\r\n _proto2.getTotalItemCount = function() {\r\n throw \"getTotalItemCount method should be implemented\"\r\n };\r\n _proto2.getRenderState = function() {\r\n throw \"getRenderState method should be implemented\"\r\n };\r\n _proto2._calcItemInfoAfter = function(itemsDeltaBefore) {\r\n var itemCountWithAfter = itemsDeltaBefore >= this.pageSize ? this.pageSize : itemsDeltaBefore;\r\n var virtualItemCountAfter = itemsDeltaBefore - itemCountWithAfter;\r\n var outlineCountAfter = virtualItemCountAfter > 0 ? Math.min(virtualItemCountAfter, this.outlineCount) : 0;\r\n if (virtualItemCountAfter > 0) {\r\n virtualItemCountAfter -= outlineCountAfter\r\n }\r\n return {\r\n virtualItemCountAfter: virtualItemCountAfter,\r\n outlineCountAfter: outlineCountAfter,\r\n itemCountWithAfter: itemCountWithAfter\r\n }\r\n };\r\n _proto2._updateStateCore = function() {\r\n var state = this.state;\r\n var virtualItemCountBefore = state.virtualItemCountBefore;\r\n var virtualItemCountAfter = state.virtualItemCountAfter;\r\n var outlineCountBefore = state.outlineCountBefore;\r\n var outlineCountAfter = state.outlineCountAfter;\r\n var prevVirtualItemSizeBefore = state.virtualItemSizeBefore;\r\n var prevVirtualItemSizeAfter = state.virtualItemSizeAfter;\r\n var prevOutlineSizeBefore = state.outlineSizeBefore;\r\n var prevOutlineSizeAfter = state.outlineSizeAfter;\r\n var virtualItemSizeBefore = this.itemSize * virtualItemCountBefore;\r\n var virtualItemSizeAfter = this.itemSize * virtualItemCountAfter;\r\n var outlineSizeBefore = this.itemSize * outlineCountBefore;\r\n var outlineSizeAfter = this.itemSize * outlineCountAfter;\r\n var prevVirtualSizeBefore = prevVirtualItemSizeBefore + prevOutlineSizeBefore;\r\n var virtualSizeBefore = virtualItemSizeBefore + outlineSizeBefore;\r\n var prevVirtualSizeAfter = prevVirtualItemSizeAfter + prevOutlineSizeAfter;\r\n var virtualSizeAfter = virtualItemSizeAfter + outlineSizeAfter;\r\n var isAppend = prevVirtualSizeBefore < virtualSizeBefore;\r\n var isPrepend = prevVirtualSizeAfter < virtualSizeAfter;\r\n var needAddItems = this._itemSizeChanged || isAppend || isPrepend;\r\n if (needAddItems) {\r\n this._updateStateVirtualItemSizes(virtualItemSizeBefore, virtualItemSizeAfter)\r\n }\r\n };\r\n _proto2._updateStateVirtualItemSizes = function(virtualItemSizeBefore, virtualItemSizeAfter) {\r\n var state = this.state;\r\n state.virtualItemSizeBefore = virtualItemSizeBefore;\r\n state.virtualItemSizeAfter = virtualItemSizeAfter\r\n };\r\n _createClass(VirtualScrollingBase, [{\r\n key: \"viewportSize\",\r\n get: function() {\r\n return this._viewportSize\r\n }\r\n }, {\r\n key: \"itemSize\",\r\n get: function() {\r\n return this._itemSize\r\n },\r\n set: function(value) {\r\n this._itemSizeChanged = this._itemSize !== value;\r\n this._itemSize = value\r\n }\r\n }, {\r\n key: \"state\",\r\n get: function() {\r\n return this._state\r\n },\r\n set: function(value) {\r\n this._state = value\r\n }\r\n }, {\r\n key: \"startIndex\",\r\n get: function() {\r\n return this.state.startIndex\r\n }\r\n }, {\r\n key: \"pageSize\",\r\n get: function() {\r\n return Math.ceil(this.viewportSize / this.itemSize)\r\n }\r\n }, {\r\n key: \"outlineCount\",\r\n get: function() {\r\n return Math.floor(this.pageSize / 2)\r\n }\r\n }, {\r\n key: \"workspace\",\r\n get: function() {\r\n return this._workspace\r\n }\r\n }, {\r\n key: \"groupCount\",\r\n get: function() {\r\n return this.workspace._getGroupCount()\r\n }\r\n }, {\r\n key: \"isVerticalGrouping\",\r\n get: function() {\r\n return this.workspace._isVerticalGroupedWorkSpace()\r\n }\r\n }, {\r\n key: \"defaultState\",\r\n get: function() {\r\n return {\r\n prevPosition: 0,\r\n startIndex: -1,\r\n itemCount: 0,\r\n virtualItemCountBefore: 0,\r\n virtualItemCountAfter: 0,\r\n outlineCountBefore: 0,\r\n outlineCountAfter: 0,\r\n virtualItemSizeBefore: 0,\r\n virtualItemSizeAfter: 0,\r\n outlineSizeBefore: 0,\r\n outlineSizeAfter: 0\r\n }\r\n }\r\n }, {\r\n key: \"maxScrollPosition\",\r\n get: function() {\r\n return this.getTotalItemCount() * this.itemSize - this.viewportSize\r\n }\r\n }]);\r\n return VirtualScrollingBase\r\n}();\r\nvar VerticalVirtualScrolling = function(_VirtualScrollingBase) {\r\n _inheritsLoose(VerticalVirtualScrolling, _VirtualScrollingBase);\r\n\r\n function VerticalVirtualScrolling(options) {\r\n return _VirtualScrollingBase.call(this, {\r\n workspace: options.workspace,\r\n viewportSize: options.viewportHeight,\r\n itemSize: options.rowHeight\r\n }) || this\r\n }\r\n var _proto3 = VerticalVirtualScrolling.prototype;\r\n _proto3.getTotalItemCount = function() {\r\n return this.workspace._getTotalRowCount(this.groupCount, this.isVerticalGrouping)\r\n };\r\n _proto3.getRenderState = function() {\r\n return {\r\n topVirtualRowHeight: this.state.virtualItemSizeBefore,\r\n bottomVirtualRowHeight: this.state.virtualItemSizeAfter,\r\n startRowIndex: this.state.startIndex,\r\n rowCount: this.state.itemCount,\r\n startIndex: this.state.startIndex\r\n }\r\n };\r\n _createClass(VerticalVirtualScrolling, [{\r\n key: \"prevTopPosition\",\r\n get: function() {\r\n return this.state.prevPosition\r\n }\r\n }, {\r\n key: \"rowCount\",\r\n get: function() {\r\n return this.state.itemCount\r\n }\r\n }, {\r\n key: \"topVirtualRowCount\",\r\n get: function() {\r\n return this.state.virtualItemCountBefore\r\n }\r\n }, {\r\n key: \"bottomVirtualRowCount\",\r\n get: function() {\r\n return this.state.virtualItemCountAfter\r\n }\r\n }]);\r\n return VerticalVirtualScrolling\r\n}(VirtualScrollingBase);\r\nvar HorizontalVirtualScrolling = function(_VirtualScrollingBase2) {\r\n _inheritsLoose(HorizontalVirtualScrolling, _VirtualScrollingBase2);\r\n\r\n function HorizontalVirtualScrolling(options) {\r\n return _VirtualScrollingBase2.call(this, {\r\n workspace: options.workspace,\r\n viewportSize: options.viewportWidth,\r\n itemSize: options.cellWidth\r\n }) || this\r\n }\r\n var _proto4 = HorizontalVirtualScrolling.prototype;\r\n _proto4.getTotalItemCount = function() {\r\n return this.workspace._getTotalCellCount(this.groupCount, this.isVerticalGrouping)\r\n };\r\n _proto4.getRenderState = function() {\r\n return {\r\n leftVirtualCellWidth: this.state.virtualItemSizeBefore,\r\n rightVirtualCellWidth: this.state.virtualItemSizeAfter,\r\n startCellIndex: this.state.startIndex,\r\n cellCount: this.state.itemCount,\r\n cellWidth: this.state.itemSize\r\n }\r\n };\r\n return HorizontalVirtualScrolling\r\n}(VirtualScrollingBase);\r\nvar Renderer = function() {\r\n function Renderer(workspace) {\r\n this._workspace = workspace;\r\n this._renderAppointmentTimeout = null\r\n }\r\n var _proto5 = Renderer.prototype;\r\n _proto5.getRenderTimeout = function() {\r\n return VIRTUAL_APPOINTMENTS_RENDER_TIMEOUT\r\n };\r\n _proto5.updateRender = function() {\r\n this._renderGrid();\r\n this._renderAppointments()\r\n };\r\n _proto5._renderGrid = function() {\r\n this.workspace.renderRWorkspace(false)\r\n };\r\n _proto5._renderAppointments = function() {\r\n var _this3 = this;\r\n var renderTimeout = this.getRenderTimeout();\r\n if (renderTimeout >= 0) {\r\n clearTimeout(this._renderAppointmentTimeout);\r\n this._renderAppointmentTimeout = setTimeout(function() {\r\n return _this3.workspace.updateAppointments()\r\n }, renderTimeout)\r\n } else {\r\n this.workspace.updateAppointments()\r\n }\r\n };\r\n _createClass(Renderer, [{\r\n key: \"workspace\",\r\n get: function() {\r\n return this._workspace\r\n }\r\n }]);\r\n return Renderer\r\n}();\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/view_data_provider.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/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 ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n enumerableOnly && (symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })), keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n i % 2 ? ownKeys(Object(source), !0).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n if (!o) {\r\n return\r\n }\r\n if (\"string\" === typeof o) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n var n = Object.prototype.toString.call(o).slice(8, -1);\r\n if (\"Object\" === n && o.constructor) {\r\n n = o.constructor.name\r\n }\r\n if (\"Map\" === n || \"Set\" === n) {\r\n return Array.from(o)\r\n }\r\n if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n if (\"undefined\" !== typeof Symbol && null != iter[Symbol.iterator] || null != iter[\"@@iterator\"]) {\r\n return Array.from(iter)\r\n }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return _arrayLikeToArray(arr)\r\n }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n if (null == len || len > arr.length) {\r\n len = arr.length\r\n }\r\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i]\r\n }\r\n return arr2\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n Object.defineProperty(Constructor, \"prototype\", {\r\n writable: false\r\n });\r\n return Constructor\r\n}\r\nvar ViewDataGenerator = function() {\r\n function ViewDataGenerator(workspace) {\r\n this.workspace = workspace\r\n }\r\n var _proto = ViewDataGenerator.prototype;\r\n _proto._getCompleteViewDataMap = function(options) {\r\n var rowCount = options.nonVirtualRowCount,\r\n cellCount = options.cellCount,\r\n verticalGroupCount = options.verticalGroupCount;\r\n var viewDataMap = [];\r\n for (var groupIndex = 0; groupIndex < verticalGroupCount; groupIndex += 1) {\r\n var allDayPanelData = this._generateAllDayPanelData(options, groupIndex, rowCount, cellCount);\r\n var viewCellsData = this._generateViewCellsData(options, rowCount, 0, rowCount * groupIndex);\r\n allDayPanelData && viewDataMap.push(allDayPanelData);\r\n viewDataMap.push.apply(viewDataMap, _toConsumableArray(viewCellsData))\r\n }\r\n return viewDataMap\r\n };\r\n _proto._generateViewDataMap = function(completeViewDataMap, options) {\r\n var startRowIndex = options.startRowIndex,\r\n rowCount = options.rowCount;\r\n var isVerticalGrouping = this.workspace._isVerticalGroupedWorkSpace();\r\n var showAllDayPanel = this.workspace._isShowAllDayPanel();\r\n var indexDifference = isVerticalGrouping || !showAllDayPanel ? 0 : 1;\r\n var correctedStartRowIndex = startRowIndex + indexDifference;\r\n return completeViewDataMap.slice(correctedStartRowIndex, correctedStartRowIndex + rowCount).map(function(cellsRow, rowIndex) {\r\n return cellsRow.map(function(cellData, cellIndex) {\r\n return {\r\n cellData: cellData,\r\n position: {\r\n rowIndex: rowIndex,\r\n cellIndex: cellIndex\r\n }\r\n }\r\n })\r\n })\r\n };\r\n _proto._getViewDataFromMap = function(viewDataMap, completeViewDataMap, options) {\r\n var topVirtualRowHeight = options.topVirtualRowHeight,\r\n bottomVirtualRowHeight = options.bottomVirtualRowHeight,\r\n cellCountInGroupRow = options.cellCountInGroupRow;\r\n var isGroupedAllDayPanel = this.workspace.isGroupedAllDayPanel();\r\n var _viewDataMap$reduce = viewDataMap.reduce(function(_ref, cellsRow) {\r\n var previousGroupIndex = _ref.previousGroupIndex,\r\n previousGroupedData = _ref.previousGroupedData;\r\n var cellDataRow = cellsRow.map(function(_ref2) {\r\n var cellData = _ref2.cellData;\r\n return cellData\r\n });\r\n var firstCell = cellDataRow[0];\r\n var isAllDayRow = firstCell.allDay;\r\n var currentGroupIndex = firstCell.groupIndex;\r\n if (currentGroupIndex !== previousGroupIndex) {\r\n previousGroupedData.push({\r\n dateTable: [],\r\n isGroupedAllDayPanel: isGroupedAllDayPanel,\r\n groupIndex: currentGroupIndex\r\n })\r\n }\r\n if (isAllDayRow) {\r\n previousGroupedData[previousGroupedData.length - 1].allDayPanel = cellDataRow\r\n } else {\r\n previousGroupedData[previousGroupedData.length - 1].dateTable.push(cellDataRow)\r\n }\r\n return {\r\n previousGroupedData: previousGroupedData,\r\n previousGroupIndex: currentGroupIndex\r\n }\r\n }, {\r\n previousGroupIndex: -1,\r\n previousGroupedData: []\r\n }),\r\n groupedData = _viewDataMap$reduce.previousGroupedData;\r\n var isVirtualScrolling = this.workspace.isVirtualScrolling();\r\n var isVerticalGrouping = this.workspace._isVerticalGroupedWorkSpace();\r\n var showAllDayPanel = this.workspace._isShowAllDayPanel();\r\n if (!isVerticalGrouping && showAllDayPanel) {\r\n groupedData[0].allDayPanel = completeViewDataMap[0]\r\n }\r\n return {\r\n groupedData: groupedData,\r\n isVirtual: isVirtualScrolling,\r\n topVirtualRowHeight: topVirtualRowHeight,\r\n bottomVirtualRowHeight: bottomVirtualRowHeight,\r\n cellCountInGroupRow: cellCountInGroupRow\r\n }\r\n };\r\n _proto._generateViewCellsData = function(options, renderRowCount, startRowIndex, rowOffset) {\r\n var cellCount = options.cellCount,\r\n cellDataGetters = options.cellDataGetters,\r\n rowCountInGroup = options.rowCountInGroup;\r\n var viewCellsData = [];\r\n for (var i = 0; i < renderRowCount; ++i) {\r\n var rowIndex = startRowIndex + rowOffset + i;\r\n var rowIndexInGroup = rowIndex % rowCountInGroup;\r\n viewCellsData.push(this._generateCellsRow(options, cellDataGetters, rowIndex, cellCount, rowIndexInGroup))\r\n }\r\n return viewCellsData\r\n };\r\n _proto._generateAllDayPanelData = function(options, groupIndex, rowCount, cellCount) {\r\n var workSpace = this.workspace;\r\n if (!workSpace._isShowAllDayPanel()) {\r\n return null\r\n }\r\n var rowIndex = Math.max(groupIndex * rowCount, 0);\r\n return this._generateCellsRow(options, [workSpace._getAllDayCellData.bind(workSpace)], rowIndex, cellCount, 0, groupIndex)\r\n };\r\n _proto._generateCellsRow = function(options, cellDataGetters, rowIndex, cellCount, rowIndexInGroup, groupIndex) {\r\n var _this = this;\r\n var cellsRow = [];\r\n var horizontalGroupCount = options.horizontalGroupCount,\r\n groupOrientation = options.groupOrientation,\r\n rowCountInGroup = options.rowCountInGroup,\r\n cellCountInGroupRow = options.cellCountInGroupRow,\r\n groupCount = options.groupCount;\r\n var _loop = function(columnIndex) {\r\n var cellDataValue = cellDataGetters.reduce(function(data, getter) {\r\n return _objectSpread(_objectSpread({}, data), getter(void 0, rowIndex, columnIndex, groupIndex).value)\r\n }, {});\r\n cellDataValue.index = _this._calculateCellIndex(horizontalGroupCount, groupOrientation, _this._workspace.isGroupedByDate(), rowIndexInGroup, columnIndex, cellCount);\r\n cellDataValue.isFirstGroupCell = _this._isFirstGroupCell(rowIndex, columnIndex, rowCountInGroup, cellCountInGroupRow, groupCount);\r\n cellDataValue.isLastGroupCell = _this._isLastGroupCell(rowIndex, columnIndex, rowCountInGroup, cellCountInGroupRow, groupCount);\r\n cellDataValue.key = _this._getKeyByRowAndColumn(rowIndex, columnIndex, cellCount);\r\n cellsRow.push(cellDataValue)\r\n };\r\n for (var columnIndex = 0; columnIndex < cellCount; ++columnIndex) {\r\n _loop(columnIndex)\r\n }\r\n return cellsRow\r\n };\r\n _proto._calculateCellIndex = function(horizontalGroupCount, groupOrientation, isGroupedByDate, rowIndex, columnIndex, columnsNumber) {\r\n var groupCount = horizontalGroupCount || 1;\r\n var index = rowIndex * columnsNumber + columnIndex;\r\n var columnsInGroup = columnsNumber / groupCount;\r\n if (\"horizontal\" === groupOrientation) {\r\n var columnIndexInCurrentGroup = columnIndex % columnsInGroup;\r\n if (isGroupedByDate) {\r\n columnIndexInCurrentGroup = Math.floor(columnIndex / groupCount)\r\n }\r\n index = rowIndex * columnsInGroup + columnIndexInCurrentGroup\r\n }\r\n return index\r\n };\r\n _proto._getKeyByRowAndColumn = function(rowIndex, columnIndex, cellCount) {\r\n return rowIndex * cellCount + columnIndex\r\n };\r\n _proto.generateGroupedDataMap = function(viewDataMap) {\r\n var _viewDataMap$reduce2 = viewDataMap.reduce(function(previousOptions, cellsRow) {\r\n var previousGroupedDataMap = previousOptions.previousGroupedDataMap,\r\n previousRowIndex = previousOptions.previousRowIndex,\r\n previousGroupIndex = previousOptions.previousGroupIndex;\r\n var currentGroupIndex = cellsRow[0].cellData.groupIndex;\r\n var currentRowIndex = currentGroupIndex === previousGroupIndex ? previousRowIndex + 1 : 0;\r\n cellsRow.forEach(function(cell) {\r\n var groupIndex = cell.cellData.groupIndex;\r\n if (!previousGroupedDataMap[groupIndex]) {\r\n previousGroupedDataMap[groupIndex] = []\r\n }\r\n if (!previousGroupedDataMap[groupIndex][currentRowIndex]) {\r\n previousGroupedDataMap[groupIndex][currentRowIndex] = []\r\n }\r\n previousGroupedDataMap[groupIndex][currentRowIndex].push(cell)\r\n });\r\n return {\r\n previousGroupedDataMap: previousGroupedDataMap,\r\n previousRowIndex: currentRowIndex,\r\n previousGroupIndex: currentGroupIndex\r\n }\r\n }, {\r\n previousGroupedDataMap: [],\r\n previousRowIndex: -1,\r\n previousGroupIndex: -1\r\n }),\r\n groupedDataMap = _viewDataMap$reduce2.previousGroupedDataMap;\r\n return groupedDataMap\r\n };\r\n _proto._isFirstGroupCell = function(rowIndex, columnIndex, singleGroupRowCount, singleGroupColumnCount, groupCount) {\r\n if (this.workspace.isGroupedByDate()) {\r\n return columnIndex % groupCount === 0\r\n }\r\n if (this.workspace._isHorizontalGroupedWorkSpace() || 0 === groupCount) {\r\n return columnIndex % singleGroupColumnCount === 0\r\n }\r\n return rowIndex % singleGroupRowCount === 0\r\n };\r\n _proto._isLastGroupCell = function(rowIndex, columnIndex, singleGroupRowCount, singleGroupColumnCount, groupCount) {\r\n if (this.workspace.isGroupedByDate()) {\r\n return (columnIndex + 1) % groupCount === 0\r\n }\r\n if (this.workspace._isHorizontalGroupedWorkSpace() || 0 === groupCount) {\r\n return (columnIndex + 1) % singleGroupColumnCount === 0\r\n }\r\n return (rowIndex + 1) % singleGroupRowCount === 0\r\n };\r\n _createClass(ViewDataGenerator, [{\r\n key: \"workspace\",\r\n get: function() {\r\n return this._workspace\r\n },\r\n set: function(value) {\r\n this._workspace = value\r\n }\r\n }]);\r\n return ViewDataGenerator\r\n}();\r\nvar ViewDataProvider = function() {\r\n function ViewDataProvider(workspace) {\r\n this._viewDataGenerator = null;\r\n this._viewData = [];\r\n this._completeViewDataMap = [];\r\n this._completeGroupedViewDataMap = [];\r\n this._viewDataMap = [];\r\n this._groupedDataMap = [];\r\n this._workspace = workspace\r\n }\r\n var _proto2 = ViewDataProvider.prototype;\r\n _proto2.update = function(isGenerateNewViewData) {\r\n var viewDataGenerator = this.viewDataGenerator,\r\n _workspace = this._workspace;\r\n var renderOptions = _workspace.generateRenderOptions();\r\n if (isGenerateNewViewData) {\r\n this.completeViewDataMap = viewDataGenerator._getCompleteViewDataMap(renderOptions)\r\n }\r\n this.viewDataMap = viewDataGenerator._generateViewDataMap(this.completeViewDataMap, renderOptions);\r\n this.viewData = viewDataGenerator._getViewDataFromMap(this.viewDataMap, this.completeViewDataMap, renderOptions);\r\n this.groupedDataMap = viewDataGenerator.generateGroupedDataMap(this.viewDataMap)\r\n };\r\n _proto2.getStartDate = function() {\r\n var groupedData = this.viewData.groupedData;\r\n var dateTable = groupedData[0].dateTable;\r\n return dateTable[0][0].startDate\r\n };\r\n _proto2.getGroupStartDate = function(groupIndex) {\r\n var _this$getGroupData = this.getGroupData(groupIndex),\r\n dateTable = _this$getGroupData.dateTable;\r\n return dateTable[0][0].startDate\r\n };\r\n _proto2.getGroupEndDate = function(groupIndex) {\r\n var _this$getGroupData2 = this.getGroupData(groupIndex),\r\n dateTable = _this$getGroupData2.dateTable;\r\n var lastRowIndex = dateTable.length - 1;\r\n var lastCellIndex = dateTable[lastRowIndex].length - 1;\r\n return dateTable[lastRowIndex][lastCellIndex].endDate\r\n };\r\n _proto2.findGroupCellStartDate = function(groupIndex, startDate, endDate, isAllDay) {\r\n if (isAllDay) {\r\n return this.findAllDayGroupCellStartDate(groupIndex, startDate)\r\n }\r\n var _this$getGroupData3 = this.getGroupData(groupIndex),\r\n dateTable = _this$getGroupData3.dateTable;\r\n if (!dateTable.length) {\r\n return\r\n }\r\n for (var i = 0; i < dateTable[0].length; ++i) {\r\n var cell = dateTable[0][i];\r\n var lastRowIndex = dateTable.length - 1;\r\n if (_date.default.sameDate(cell.startDate, startDate)) {\r\n var _lastCell;\r\n var lastCell = dateTable[lastRowIndex][i];\r\n if (lastCell.endDate <= startDate) {\r\n if (endDate.getDate() > startDate.getDate()) {\r\n cell = dateTable[0][i + 1];\r\n lastCell = dateTable[lastRowIndex][i + 1]\r\n }\r\n }\r\n if ((null === (_lastCell = lastCell) || void 0 === _lastCell ? void 0 : _lastCell.endDate) > startDate) {\r\n return cell.startDate\r\n }\r\n }\r\n }\r\n };\r\n _proto2.findAllDayGroupCellStartDate = function(groupIndex, startDate) {\r\n var groupStartDate = this.getGroupStartDate(groupIndex);\r\n return groupStartDate > startDate ? groupStartDate : startDate\r\n };\r\n _proto2.getCellsGroup = function(groupIndex) {\r\n var _this$getGroupData4 = this.getGroupData(groupIndex),\r\n dateTable = _this$getGroupData4.dateTable;\r\n return dateTable[0][0].groups\r\n };\r\n _proto2.getCellData = function(rowIndex, cellIndex, isAllDay) {\r\n if (isAllDay && !this._workspace._isVerticalGroupedWorkSpace()) {\r\n return this._viewData.groupedData[0].allDayPanel[cellIndex]\r\n }\r\n var cellData = this.viewDataMap[rowIndex][cellIndex].cellData;\r\n return cellData\r\n };\r\n _proto2.getCellsByGroupIndexAndAllDay = function(groupIndex, allDay) {\r\n var workspace = this._workspace;\r\n var rowsPerGroup = workspace._getRowCountWithAllDayRows();\r\n var isVerticalGrouping = workspace._isVerticalGroupedWorkSpace();\r\n var isShowAllDayPanel = workspace._isShowAllDayPanel();\r\n var firstRowInGroup = isVerticalGrouping ? groupIndex * rowsPerGroup : 0;\r\n var lastRowInGroup = isVerticalGrouping ? (groupIndex + 1) * rowsPerGroup - 1 : rowsPerGroup;\r\n var correctedFirstRow = isShowAllDayPanel && !allDay ? firstRowInGroup + 1 : firstRowInGroup;\r\n var correctedLastRow = allDay ? correctedFirstRow : lastRowInGroup;\r\n return this.completeViewDataMap.slice(correctedFirstRow, correctedLastRow + 1).map(function(row) {\r\n return row.filter(function(_ref3) {\r\n var currentGroupIndex = _ref3.groupIndex;\r\n return groupIndex === currentGroupIndex\r\n })\r\n })\r\n };\r\n _proto2.findCellPositionInMap = function(groupIndex, startDate, isAllDay) {\r\n var startTime = isAllDay ? _date.default.trimTime(startDate).getTime() : startDate.getTime();\r\n var isStartTimeInCell = function(cellData) {\r\n var cellStartTime = cellData.startDate.getTime();\r\n var cellEndTime = cellData.endDate.getTime();\r\n return isAllDay ? cellData.allDay && startTime >= cellStartTime && startTime <= cellEndTime : startTime >= cellStartTime && startTime < cellEndTime\r\n };\r\n var rows = isAllDay && !this._workspace._isVerticalGroupedWorkSpace() ? [this.completeViewDataMap[0].map(function(cell, index) {\r\n return {\r\n cellData: cell,\r\n position: {\r\n cellIndex: index,\r\n rowIndex: 0\r\n }\r\n }\r\n })] : this.groupedDataMap[groupIndex] || [];\r\n for (var rowIndex = 0; rowIndex < rows.length; ++rowIndex) {\r\n var row = rows[rowIndex];\r\n for (var cellIndex = 0; cellIndex < row.length; ++cellIndex) {\r\n var cell = row[cellIndex];\r\n var cellData = cell.cellData;\r\n if (cellData.groupIndex === groupIndex) {\r\n if (isStartTimeInCell(cellData)) {\r\n return cell.position\r\n }\r\n }\r\n }\r\n }\r\n return\r\n };\r\n _proto2.getGroupIndices = function() {\r\n var groupedData = this.viewData.groupedData;\r\n return groupedData.map(function(_ref4) {\r\n var groupIndex = _ref4.groupIndex;\r\n return groupIndex\r\n })\r\n };\r\n _proto2._getLastGroupRow = function(groupIndex) {\r\n var group = this.groupedDataMap[groupIndex];\r\n var lastIndex = group.length - 1;\r\n return group[lastIndex]\r\n };\r\n _proto2.getLasGroupCellPosition = function(groupIndex) {\r\n var groupRow = this._getLastGroupRow(groupIndex);\r\n return groupRow[0].position\r\n };\r\n _proto2.getLasGroupCellIndex = function(groupIndex) {\r\n var group = this.groupedDataMap[groupIndex];\r\n return group.length - 1\r\n };\r\n _proto2.getRowCountInGroup = function(groupIndex) {\r\n var groupRow = this._getLastGroupRow(groupIndex);\r\n var cellAmount = groupRow.length;\r\n var lastCellData = groupRow[cellAmount - 1].cellData;\r\n var lastCellIndex = lastCellData.index;\r\n return (lastCellIndex + 1) / groupRow.length\r\n };\r\n _proto2.getGroupData = function(groupIndex) {\r\n var groupedData = this.viewData.groupedData;\r\n return groupedData.filter(function(item) {\r\n return item.groupIndex === groupIndex\r\n })[0]\r\n };\r\n _proto2.isGroupIntersectDateInterval = function(groupIndex, startDate, endDate) {\r\n var groupStartDate = this.getGroupStartDate(groupIndex);\r\n var groupEndDate = this.getGroupEndDate(groupIndex);\r\n return startDate < groupEndDate && endDate > groupStartDate\r\n };\r\n _proto2.findGlobalCellPosition = function(date) {\r\n var groupIndex = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\r\n var allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n var completeViewDataMap = this.completeViewDataMap,\r\n workspace = this._workspace;\r\n var showAllDayPanel = workspace._isShowAllDayPanel();\r\n var isVerticalGroupOrientation = workspace._isVerticalGroupedWorkSpace();\r\n for (var rowIndex = 0; rowIndex < completeViewDataMap.length; rowIndex += 1) {\r\n var currentRow = completeViewDataMap[rowIndex];\r\n for (var columnIndex = 0; columnIndex < currentRow.length; columnIndex += 1) {\r\n var cellData = currentRow[columnIndex];\r\n var currentStartDate = cellData.startDate,\r\n currentEndDate = cellData.endDate,\r\n currentGroupIndex = cellData.groupIndex,\r\n currentAllDay = cellData.allDay;\r\n if (groupIndex === currentGroupIndex && allDay === currentAllDay && this._compareDatesAndAllDay(date, currentStartDate, currentEndDate, allDay)) {\r\n return {\r\n position: {\r\n columnIndex: columnIndex,\r\n rowIndex: showAllDayPanel && !isVerticalGroupOrientation ? rowIndex - 1 : rowIndex\r\n },\r\n cellData: cellData\r\n }\r\n }\r\n }\r\n }\r\n };\r\n _proto2._compareDatesAndAllDay = function(date, cellStartDate, cellEndDate, allDay) {\r\n var time = date.getTime();\r\n var trimmedTime = _date.default.trimTime(date).getTime();\r\n var cellStartTime = cellStartDate.getTime();\r\n var cellEndTime = cellEndDate.getTime();\r\n return !allDay && time >= cellStartTime && time < cellEndTime || allDay && trimmedTime === cellStartTime\r\n };\r\n _createClass(ViewDataProvider, [{\r\n key: \"viewDataGenerator\",\r\n get: function() {\r\n if (!this._viewDataGenerator) {\r\n this._viewDataGenerator = new ViewDataGenerator(this._workspace)\r\n }\r\n return this._viewDataGenerator\r\n }\r\n }, {\r\n key: \"completeViewDataMap\",\r\n get: function() {\r\n return this._completeViewDataMap\r\n },\r\n set: function(value) {\r\n this._completeViewDataMap = value\r\n }\r\n }, {\r\n key: \"completeGroupedViewDataMap\",\r\n get: function() {\r\n return this._completeGroupedViewDataMap\r\n },\r\n set: function(value) {\r\n this._completeGroupedViewDataMap = value\r\n }\r\n }, {\r\n key: \"viewData\",\r\n get: function() {\r\n return this._viewData\r\n },\r\n set: function(value) {\r\n this._viewData = value\r\n }\r\n }, {\r\n key: \"viewDataMap\",\r\n get: function() {\r\n return this._viewDataMap\r\n },\r\n set: function(value) {\r\n this._viewDataMap = value\r\n }\r\n }, {\r\n key: \"groupedDataMap\",\r\n get: function() {\r\n return this._groupedDataMap\r\n },\r\n set: function(value) {\r\n this._groupedDataMap = value\r\n }\r\n }]);\r\n return ViewDataProvider\r\n}();\r\nexports.default = ViewDataProvider;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/virtual_selection_state.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/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 _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 VirtualSelectionState = function() {\r\n function VirtualSelectionState(viewDataProvider) {\r\n this._viewDataProvider = viewDataProvider;\r\n this._focusedCell = null;\r\n this._selectedCells = null;\r\n this._firstSelectedCell = null\r\n }\r\n var _proto = VirtualSelectionState.prototype;\r\n _proto.setFocusedCell = function(rowIndex, columnIndex, isAllDay) {\r\n if (rowIndex >= 0) {\r\n var cell = this._viewDataProvider.getCellData(rowIndex, columnIndex, isAllDay);\r\n this._focusedCell = cell\r\n }\r\n };\r\n _proto.getFocusedCell = function(isVerticalGroupOrientation) {\r\n var _focusedCell = this._focusedCell;\r\n if (!_focusedCell) {\r\n return\r\n }\r\n var columnIndex = this._getColumnIndexByCellData(_focusedCell, isVerticalGroupOrientation);\r\n var rowIndex = this._getRowIndexByColumnAndData(_focusedCell, columnIndex, isVerticalGroupOrientation);\r\n return {\r\n coordinates: {\r\n cellIndex: columnIndex,\r\n rowIndex: rowIndex\r\n },\r\n cellData: _focusedCell\r\n }\r\n };\r\n _proto.setSelectedCells = function(lastCellCoordinates) {\r\n var _this = this;\r\n var firstCellCoordinates = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0;\r\n var viewDataProvider = this._viewDataProvider;\r\n var lastRowIndex = lastCellCoordinates.rowIndex,\r\n lastColumnIndex = lastCellCoordinates.columnIndex,\r\n isLastCellAllDay = lastCellCoordinates.allDay;\r\n if (lastRowIndex < 0) {\r\n return\r\n }\r\n var firstCell = firstCellCoordinates ? viewDataProvider.getCellData(firstCellCoordinates.rowIndex, firstCellCoordinates.columnIndex, firstCellCoordinates.allDay) : this._firstSelectedCell;\r\n var lastCell = viewDataProvider.getCellData(lastRowIndex, lastColumnIndex, isLastCellAllDay);\r\n this._firstSelectedCell = firstCell;\r\n if (firstCell.startDate.getTime() > lastCell.startDate.getTime()) {\r\n var _ref = [lastCell, firstCell];\r\n firstCell = _ref[0];\r\n lastCell = _ref[1]\r\n }\r\n var _firstCell = firstCell,\r\n firstStartDate = _firstCell.startDate,\r\n firstGroupIndex = _firstCell.groupIndex;\r\n var _lastCell = lastCell,\r\n lastStartDate = _lastCell.startDate;\r\n var cells = viewDataProvider.getCellsByGroupIndexAndAllDay(firstGroupIndex, isLastCellAllDay);\r\n var filteredCells = cells.reduce(function(selectedCells, cellsRow) {\r\n var filteredRow = _this._filterCellsByDate(cellsRow, firstStartDate, lastStartDate);\r\n selectedCells.push.apply(selectedCells, _toConsumableArray(filteredRow));\r\n return selectedCells\r\n }, []);\r\n this._selectedCells = filteredCells.sort(function(firstCell, secondCell) {\r\n return firstCell.startDate.getTime() - secondCell.startDate.getTime()\r\n })\r\n };\r\n _proto.getSelectedCells = function() {\r\n return this._selectedCells\r\n };\r\n _proto.releaseSelectedAndFocusedCells = function() {\r\n this.releaseSelectedCells();\r\n this.releaseFocusedCell()\r\n };\r\n _proto.releaseSelectedCells = function() {\r\n this._selectedCells = null;\r\n this._firstSelectedCell = null\r\n };\r\n _proto.releaseFocusedCell = function() {\r\n this._focusedCell = null\r\n };\r\n _proto.isValidFocusedCell = function(nextFocusedCellData) {\r\n var focusedCell = this._focusedCell;\r\n if (!focusedCell) {\r\n return true\r\n }\r\n var groupIndex = focusedCell.groupIndex,\r\n allDay = focusedCell.allDay;\r\n var nextGroupIndex = nextFocusedCellData.groupIndex,\r\n nextAllDay = nextFocusedCellData.allDay;\r\n return groupIndex === nextGroupIndex && allDay === nextAllDay\r\n };\r\n _proto._getColumnIndexByCellData = function(cellData, isVerticalGroupOrientation) {\r\n var viewDataMap = this._viewDataProvider.viewDataMap;\r\n var startDate = cellData.startDate,\r\n groupIndex = cellData.groupIndex;\r\n var firstRow = viewDataMap[0];\r\n var startTime = _date.default.trimTime(startDate).getTime();\r\n for (var columnIndex = 0; columnIndex < firstRow.length; columnIndex += 1) {\r\n var _firstRow$columnIndex = firstRow[columnIndex].cellData,\r\n currentStartDate = _firstRow$columnIndex.startDate,\r\n currentGroupIndex = _firstRow$columnIndex.groupIndex;\r\n if (startTime === _date.default.trimTime(currentStartDate).getTime() && (groupIndex === currentGroupIndex || isVerticalGroupOrientation)) {\r\n return columnIndex\r\n }\r\n }\r\n };\r\n _proto._getRowIndexByColumnAndData = function(cellData, columnIndex, isVerticalGroupOrientation) {\r\n var viewDataMap = this._viewDataProvider.viewDataMap;\r\n var startDate = cellData.startDate,\r\n groupIndex = cellData.groupIndex,\r\n allDay = cellData.allDay;\r\n if (allDay && !isVerticalGroupOrientation) {\r\n return 0\r\n }\r\n for (var rowIndex = 0; rowIndex < viewDataMap.length; rowIndex += 1) {\r\n var currentCellData = viewDataMap[rowIndex][columnIndex].cellData;\r\n var currentStartDate = currentCellData.startDate,\r\n currentGroupIndex = currentCellData.groupIndex,\r\n currentAllDay = currentCellData.allDay;\r\n if (startDate.getTime() === currentStartDate.getTime() && groupIndex === currentGroupIndex && allDay === currentAllDay) {\r\n return rowIndex\r\n }\r\n }\r\n };\r\n _proto._filterCellsByDate = function(cellsRow, firstDate, lastDate) {\r\n var firstTime = firstDate.getTime();\r\n var lastTime = lastDate.getTime();\r\n return cellsRow.filter(function(cell) {\r\n var startDate = cell.startDate;\r\n var time = startDate.getTime();\r\n return firstTime <= time && time <= lastTime\r\n })\r\n };\r\n return VirtualSelectionState\r\n}();\r\nexports.default = VirtualSelectionState;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.timeline_day.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.timeline\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline-day\";\r\nvar SchedulerTimelineDay = function(_SchedulerTimeline) {\r\n _inheritsLoose(SchedulerTimelineDay, _SchedulerTimeline);\r\n\r\n function SchedulerTimelineDay() {\r\n return _SchedulerTimeline.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerTimelineDay.prototype;\r\n _proto._getElementClass = function() {\r\n return TIMELINE_CLASS\r\n };\r\n _proto._setFirstViewDate = function() {\r\n this._firstViewDate = this._getViewStartByOptions();\r\n this._setStartDayHour(this._firstViewDate)\r\n };\r\n _proto._needRenderWeekHeader = function() {\r\n return this._isWorkSpaceWithCount()\r\n };\r\n return SchedulerTimelineDay\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerTimelineDay\", SchedulerTimelineDay);\r\nvar _default = SchedulerTimelineDay;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.timeline_month.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.timeline\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _month = require(\"./utils/month\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline-month\";\r\nvar DAY_IN_MILLISECONDS = 864e5;\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar SchedulerTimelineMonth = function(_SchedulerTimeline) {\r\n _inheritsLoose(SchedulerTimelineMonth, _SchedulerTimeline);\r\n\r\n function SchedulerTimelineMonth() {\r\n return _SchedulerTimeline.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerTimelineMonth.prototype;\r\n _proto._renderView = function() {\r\n _SchedulerTimeline.prototype._renderView.call(this);\r\n this._updateScrollable()\r\n };\r\n _proto._getElementClass = function() {\r\n return TIMELINE_CLASS\r\n };\r\n _proto._getDateHeaderTemplate = function() {\r\n return this.option(\"dateCellTemplate\")\r\n };\r\n _proto._getHiddenInterval = function() {\r\n return 0\r\n };\r\n _proto._calculateDurationInCells = function(timeDiff) {\r\n return timeDiff / this.getCellDuration()\r\n };\r\n _proto.getCellDuration = function() {\r\n return toMs(\"day\")\r\n };\r\n _proto.calculateEndViewDate = function(dateOfLastViewCell) {\r\n return new Date(dateOfLastViewCell.getTime() + this._calculateDayDuration() * toMs(\"hour\"))\r\n };\r\n _proto.isIndicatorVisible = function() {\r\n return true\r\n };\r\n _proto._getCellCount = function() {\r\n var currentDate = this.option(\"currentDate\");\r\n var cellCount = 0;\r\n if (this._isWorkSpaceWithCount()) {\r\n var intervalCount = this.option(\"intervalCount\");\r\n for (var i = 1; i <= intervalCount; i++) {\r\n cellCount += new Date(currentDate.getFullYear(), currentDate.getMonth() + i, 0).getDate()\r\n }\r\n } else {\r\n cellCount = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0).getDate()\r\n }\r\n return cellCount\r\n };\r\n _proto._setFirstViewDate = function() {\r\n this._firstViewDate = _date.default.getFirstMonthDate(this._getViewStartByOptions());\r\n this._setStartDayHour(this._firstViewDate)\r\n };\r\n _proto._getFormat = function() {\r\n return this._formatWeekdayAndDay\r\n };\r\n _proto._getDateByIndex = function(headerIndex) {\r\n var resultDate = new Date(this._firstViewDate);\r\n resultDate.setDate(this._firstViewDate.getDate() + headerIndex);\r\n return resultDate\r\n };\r\n _proto._getInterval = function() {\r\n return DAY_IN_MILLISECONDS\r\n };\r\n _proto._getIntervalBetween = function(currentDate) {\r\n var firstViewDate = this.getStartViewDate();\r\n var timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate);\r\n return currentDate.getTime() - (firstViewDate.getTime() - 36e5 * this.option(\"startDayHour\")) - timeZoneOffset\r\n };\r\n _proto.calculateEndDate = function(startDate) {\r\n var startDateCopy = new Date(startDate);\r\n return new Date(startDateCopy.setHours(this.option(\"endDayHour\")))\r\n };\r\n _proto._calculateHiddenInterval = function() {\r\n return 0\r\n };\r\n _proto._getDateByCellIndexes = function(rowIndex, cellIndex) {\r\n var date = _SchedulerTimeline.prototype._getDateByCellIndexes.call(this, rowIndex, cellIndex);\r\n this._setStartDayHour(date);\r\n return date\r\n };\r\n _proto.getPositionShift = function() {\r\n return {\r\n top: 0,\r\n left: 0,\r\n cellPosition: 0\r\n }\r\n };\r\n _proto._getStartViewDate = function() {\r\n var firstMonthDate = _date.default.getFirstMonthDate(this.option(\"startDate\"));\r\n return firstMonthDate\r\n };\r\n _proto._getViewStartByOptions = function() {\r\n return (0, _month.getViewStartByOptions)(this.option(\"startDate\"), this.option(\"currentDate\"), this.option(\"intervalCount\"), this._getStartViewDate())\r\n };\r\n return SchedulerTimelineMonth\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerTimelineMonth\", SchedulerTimelineMonth);\r\nvar _default = SchedulerTimelineMonth;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.timeline_work_week.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.timeline_week\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _work_week = require(\"./utils/work_week\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline-work-week\";\r\nvar LAST_DAY_WEEK_INDEX = 5;\r\nvar SchedulerTimelineWorkWeek = function(_SchedulerTimelineWee) {\r\n _inheritsLoose(SchedulerTimelineWorkWeek, _SchedulerTimelineWee);\r\n\r\n function SchedulerTimelineWorkWeek() {\r\n var _this;\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key]\r\n }\r\n _this = _SchedulerTimelineWee.call.apply(_SchedulerTimelineWee, [this].concat(args)) || this;\r\n _this._getWeekendsCount = _work_week.getWeekendsCount;\r\n _this._isSkippedData = _work_week.isDataOnWeekend;\r\n return _this\r\n }\r\n var _proto = SchedulerTimelineWorkWeek.prototype;\r\n _proto._getElementClass = function() {\r\n return TIMELINE_CLASS\r\n };\r\n _proto._getWeekDuration = function() {\r\n return 5\r\n };\r\n _proto._firstDayOfWeek = function() {\r\n return (0, _work_week.getFirstDayOfWeek)(this.option(\"firstDayOfWeek\"))\r\n };\r\n _proto._isSkippedData = function() {\r\n return _work_week.isDataOnWeekend\r\n };\r\n _proto._incrementDate = function(date) {\r\n var day = date.getDay();\r\n if (day === LAST_DAY_WEEK_INDEX) {\r\n date.setDate(date.getDate() + 2)\r\n }\r\n _SchedulerTimelineWee.prototype._incrementDate.call(this, date)\r\n };\r\n _proto._getOffsetByCount = function(cellIndex) {\r\n var weekendCount = Math.floor(cellIndex / (5 * this._getCellCountInDay()));\r\n return toMs(\"day\") * weekendCount * 2\r\n };\r\n _proto._setFirstViewDate = function() {\r\n this._firstViewDate = (0, _work_week.getFirstViewDate)(this._getViewStartByOptions(), this._firstDayOfWeek());\r\n this._setStartDayHour(this._firstViewDate)\r\n };\r\n return SchedulerTimelineWorkWeek\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerTimelineWorkWeek\", SchedulerTimelineWorkWeek);\r\nvar _default = SchedulerTimelineWorkWeek;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space_day.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.work_space_vertical\"));\r\nvar _layout = _interopRequireDefault(require(\"../../../renovation/ui/scheduler/workspaces/day/date_table/layout.j\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar DAY_CLASS = \"dx-scheduler-work-space-day\";\r\nvar SchedulerWorkSpaceDay = function(_SchedulerWorkSpaceVe) {\r\n _inheritsLoose(SchedulerWorkSpaceDay, _SchedulerWorkSpaceVe);\r\n\r\n function SchedulerWorkSpaceDay() {\r\n return _SchedulerWorkSpaceVe.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerWorkSpaceDay.prototype;\r\n _proto._getElementClass = function() {\r\n return DAY_CLASS\r\n };\r\n _proto._getRowCount = function() {\r\n return this._getCellCountInDay()\r\n };\r\n _proto._getCellCount = function() {\r\n return this.option(\"intervalCount\")\r\n };\r\n _proto._setFirstViewDate = function() {\r\n this._firstViewDate = this._getViewStartByOptions();\r\n this._setStartDayHour(this._firstViewDate)\r\n };\r\n _proto._getDateByIndex = function(headerIndex) {\r\n if (1 === this.option(\"intervalCount\")) {\r\n return this._firstViewDate\r\n }\r\n var resultDate = new Date(this._firstViewDate);\r\n resultDate.setDate(this._firstViewDate.getDate() + headerIndex);\r\n return resultDate\r\n };\r\n _proto._renderDateHeader = function() {\r\n return 1 === this.option(\"intervalCount\") ? null : _SchedulerWorkSpaceVe.prototype._renderDateHeader.call(this)\r\n };\r\n _proto.renderRDateTable = function() {\r\n this.renderRComponent(this._$dateTable, _layout.default, \"renovatedDateTable\", {\r\n viewData: this.viewDataProvider.viewData,\r\n dataCellTemplate: this.option(\"dataCellTemplate\")\r\n })\r\n };\r\n return SchedulerWorkSpaceDay\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerWorkSpaceDay\", SchedulerWorkSpaceDay);\r\nvar _default = SchedulerWorkSpaceDay;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space_month.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiSchedulerWork_space = _interopRequireDefault(require(\"./ui.scheduler.work_space.indicator\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _date2 = _interopRequireDefault(require(\"../../../localization/date\"));\r\nvar _month = require(\"./utils/month\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar MONTH_CLASS = \"dx-scheduler-work-space-month\";\r\nvar DATE_TABLE_CURRENT_DATE_CLASS = \"dx-scheduler-date-table-current-date\";\r\nvar DATE_TABLE_FIRST_OF_MONTH_CLASS = \"dx-scheduler-date-table-first-of-month\";\r\nvar DATE_TABLE_OTHER_MONTH_DATE_CLASS = \"dx-scheduler-date-table-other-month\";\r\nvar DATE_TABLE_SCROLLABLE_FIXED_CLASS = \"dx-scheduler-scrollable-fixed-content\";\r\nvar DAYS_IN_WEEK = 7;\r\nvar DAY_IN_MILLISECONDS = 864e5;\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar SchedulerWorkSpaceMonth = function(_SchedulerWorkSpace) {\r\n _inheritsLoose(SchedulerWorkSpaceMonth, _SchedulerWorkSpace);\r\n\r\n function SchedulerWorkSpaceMonth() {\r\n return _SchedulerWorkSpace.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerWorkSpaceMonth.prototype;\r\n _proto._toggleFixedScrollableClass = function() {\r\n this._dateTableScrollable.$content().toggleClass(DATE_TABLE_SCROLLABLE_FIXED_CLASS, !this._isWorkSpaceWithCount() && !this._isVerticalGroupedWorkSpace())\r\n };\r\n _proto._getElementClass = function() {\r\n return MONTH_CLASS\r\n };\r\n _proto._getRowCount = function() {\r\n return this._isWorkSpaceWithCount() ? 4 * this.option(\"intervalCount\") + 2 : 6\r\n };\r\n _proto._getCellCount = function() {\r\n return DAYS_IN_WEEK\r\n };\r\n _proto._getDateByIndex = function(headerIndex) {\r\n var resultDate = new Date(this._firstViewDate);\r\n resultDate.setDate(this._firstViewDate.getDate() + headerIndex);\r\n return resultDate\r\n };\r\n _proto._getFormat = function() {\r\n return this._formatWeekday\r\n };\r\n _proto._calculateCellIndex = function(rowIndex, cellIndex) {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n rowIndex %= this._getRowCount()\r\n } else {\r\n cellIndex %= this._getCellCount()\r\n }\r\n return rowIndex * this._getCellCount() + cellIndex\r\n };\r\n _proto._getInterval = function() {\r\n return DAY_IN_MILLISECONDS\r\n };\r\n _proto._getIntervalBetween = function(currentDate) {\r\n var firstViewDate = this.getStartViewDate();\r\n var timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate);\r\n return currentDate.getTime() - (firstViewDate.getTime() - 36e5 * this.option(\"startDayHour\")) - timeZoneOffset\r\n };\r\n _proto._getDateByCellIndexes = function(rowIndex, cellIndex) {\r\n var date = _SchedulerWorkSpace.prototype._getDateByCellIndexes.call(this, rowIndex, cellIndex);\r\n this._setStartDayHour(date);\r\n return date\r\n };\r\n _proto.getCellWidth = function() {\r\n var _this = this;\r\n return this.cache.get(\"cellWidth\", function() {\r\n var DAYS_IN_WEEK = 7;\r\n var averageWidth = 0;\r\n _this._getCells().slice(0, DAYS_IN_WEEK).each(function(index, element) {\r\n return averageWidth += (0, _position.getBoundingRect)(element).width\r\n });\r\n return averageWidth / DAYS_IN_WEEK\r\n })\r\n };\r\n _proto._calculateHiddenInterval = function() {\r\n return 0\r\n };\r\n _proto._insertAllDayRowsIntoDateTable = function() {\r\n return false\r\n };\r\n _proto._getCellCoordinatesByIndex = function(index) {\r\n var rowIndex = Math.floor(index / this._getCellCount());\r\n var cellIndex = index - this._getCellCount() * rowIndex;\r\n return {\r\n rowIndex: rowIndex,\r\n cellIndex: cellIndex\r\n }\r\n };\r\n _proto._createWorkSpaceElements = function() {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n this._createWorkSpaceScrollableElements()\r\n } else {\r\n _SchedulerWorkSpace.prototype._createWorkSpaceElements.call(this)\r\n }\r\n };\r\n _proto._needCreateCrossScrolling = function() {\r\n return this.option(\"crossScrollingEnabled\") || this._isVerticalGroupedWorkSpace()\r\n };\r\n _proto._renderTimePanel = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._renderAllDayPanel = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._getTableAllDay = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._toggleAllDayVisibility = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._changeAllDayVisibility = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._setFirstViewDate = function() {\r\n var firstMonthDate = _date.default.getFirstMonthDate(this._getViewStartByOptions());\r\n var firstDayOfWeek = this._getCalculatedFirstDayOfWeek();\r\n this._firstViewDate = _date.default.getFirstWeekDate(firstMonthDate, firstDayOfWeek);\r\n this._setStartDayHour(this._firstViewDate);\r\n var date = this._getViewStartByOptions();\r\n this._minVisibleDate = new Date(date.setDate(1));\r\n this._maxVisibleDate = new Date(new Date(date.setMonth(date.getMonth() + this.option(\"intervalCount\"))).setDate(0))\r\n };\r\n _proto._getViewStartByOptions = function() {\r\n return (0, _month.getViewStartByOptions)(this.option(\"startDate\"), this.option(\"currentDate\"), this.option(\"intervalCount\"), this._getStartViewDate())\r\n };\r\n _proto._getStartViewDate = function() {\r\n var firstMonthDate = _date.default.getFirstMonthDate(this.option(\"startDate\"));\r\n return firstMonthDate\r\n };\r\n _proto._renderTableBody = function(options) {\r\n options.getCellText = this._getCellText.bind(this);\r\n _SchedulerWorkSpace.prototype._renderTableBody.call(this, options)\r\n };\r\n _proto._getCellText = function(rowIndex, cellIndex) {\r\n if (this.isGroupedByDate()) {\r\n cellIndex = Math.floor(cellIndex / this._getGroupCount())\r\n } else {\r\n cellIndex %= this._getCellCount()\r\n }\r\n var date = this._getDate(rowIndex, cellIndex);\r\n if (this._isWorkSpaceWithCount() && this._isFirstDayOfMonth(date)) {\r\n return this._formatMonthAndDay(date)\r\n }\r\n return _date2.default.format(date, \"dd\")\r\n };\r\n _proto._formatMonthAndDay = function(date) {\r\n var monthName = _date2.default.getMonthNames(\"abbreviated\")[date.getMonth()];\r\n return [monthName, _date2.default.format(date, \"day\")].join(\" \")\r\n };\r\n _proto._getDate = function(week, day) {\r\n var result = new Date(this._firstViewDate);\r\n var lastRowInDay = this._getRowCount();\r\n result.setDate(result.getDate() + week % lastRowInDay * DAYS_IN_WEEK + day);\r\n return result\r\n };\r\n _proto._updateIndex = function(index) {\r\n return index\r\n };\r\n _proto._prepareCellData = function(rowIndex, cellIndex, cell) {\r\n var data = _SchedulerWorkSpace.prototype._prepareCellData.call(this, rowIndex, cellIndex, cell);\r\n var $cell = (0, _renderer.default)(cell);\r\n $cell.toggleClass(DATE_TABLE_CURRENT_DATE_CLASS, this._isCurrentDate(data.startDate)).toggleClass(DATE_TABLE_FIRST_OF_MONTH_CLASS, this._isFirstDayOfMonth(data.startDate)).toggleClass(DATE_TABLE_OTHER_MONTH_DATE_CLASS, this._isOtherMonth(data.startDate));\r\n return data\r\n };\r\n _proto._isCurrentDate = function(cellDate) {\r\n return _date.default.sameDate(cellDate, this._getToday())\r\n };\r\n _proto._isFirstDayOfMonth = function(cellDate) {\r\n return this._isWorkSpaceWithCount() && 1 === cellDate.getDate()\r\n };\r\n _proto._isOtherMonth = function(cellDate) {\r\n return !_date.default.dateInRange(cellDate, this._minVisibleDate, this._maxVisibleDate, \"date\")\r\n };\r\n _proto.isIndicationAvailable = function() {\r\n return false\r\n };\r\n _proto.getCellDuration = function() {\r\n return 36e5 * this._calculateDayDuration()\r\n };\r\n _proto.getIntervalDuration = function() {\r\n return toMs(\"day\")\r\n };\r\n _proto.getTimePanelWidth = function() {\r\n return 0\r\n };\r\n _proto.getPositionShift = function(timeShift) {\r\n return {\r\n cellPosition: timeShift * this.getCellWidth(),\r\n top: 0,\r\n left: 0\r\n }\r\n };\r\n _proto.getCellCountToLastViewDate = function(date) {\r\n var firstDateTime = date.getTime();\r\n var lastDateTime = this.getEndViewDate().getTime();\r\n var dayDurationInMs = this.getCellDuration();\r\n return Math.ceil((lastDateTime - firstDateTime) / dayDurationInMs)\r\n };\r\n _proto.supportAllDayRow = function() {\r\n return false\r\n };\r\n _proto.keepOriginalHours = function() {\r\n return true\r\n };\r\n _proto.calculateEndDate = function(startDate) {\r\n var startDateCopy = new Date(startDate);\r\n return new Date(startDateCopy.setHours(this.option(\"endDayHour\")))\r\n };\r\n _proto.getWorkSpaceLeftOffset = function() {\r\n return 0\r\n };\r\n _proto.needApplyCollectorOffset = function() {\r\n return true\r\n };\r\n _proto._getDateTableBorderOffset = function() {\r\n return this._getDateTableBorder()\r\n };\r\n _proto._getCellPositionByIndex = function(index, groupIndex) {\r\n var position = _SchedulerWorkSpace.prototype._getCellPositionByIndex.call(this, index, groupIndex);\r\n var rowIndex = this._getCellCoordinatesByIndex(index).rowIndex;\r\n var calculatedTopOffset;\r\n if (!this._isVerticalGroupedWorkSpace()) {\r\n calculatedTopOffset = this.getCellHeight() * rowIndex\r\n } else {\r\n calculatedTopOffset = this.getCellHeight() * (rowIndex + groupIndex * this._getRowCount())\r\n }\r\n if (calculatedTopOffset) {\r\n position.top = calculatedTopOffset\r\n }\r\n return position\r\n };\r\n _proto._getHeaderDate = function() {\r\n return this._getViewStartByOptions()\r\n };\r\n _proto._supportCompactDropDownAppointments = function() {\r\n return false\r\n };\r\n _proto.scrollToTime = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._getRowCountWithAllDayRows = function() {\r\n return this._getRowCount()\r\n };\r\n return SchedulerWorkSpaceMonth\r\n}(_uiSchedulerWork_space.default);\r\n(0, _component_registrator.default)(\"dxSchedulerWorkSpaceMonth\", SchedulerWorkSpaceMonth);\r\nvar _default = SchedulerWorkSpaceMonth;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space_work_week.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _work_week = require(\"./utils/work_week\");\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.work_space_week\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar WORK_WEEK_CLASS = \"dx-scheduler-work-space-work-week\";\r\nvar dayIndexes = [1, 2, 3, 4, 5];\r\nvar weekCounter = 0;\r\nvar SchedulerWorkSpaceWorkWeek = function(_SchedulerWorkSpaceWe) {\r\n _inheritsLoose(SchedulerWorkSpaceWorkWeek, _SchedulerWorkSpaceWe);\r\n\r\n function SchedulerWorkSpaceWorkWeek() {\r\n var _this;\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key]\r\n }\r\n _this = _SchedulerWorkSpaceWe.call.apply(_SchedulerWorkSpaceWe, [this].concat(args)) || this;\r\n _this._isSkippedData = _work_week.isDataOnWeekend;\r\n _this._getWeekendsCount = _work_week.getWeekendsCount;\r\n return _this\r\n }\r\n var _proto = SchedulerWorkSpaceWorkWeek.prototype;\r\n _proto._getElementClass = function() {\r\n return WORK_WEEK_CLASS\r\n };\r\n _proto._getCellCount = function() {\r\n return 5 * this.option(\"intervalCount\")\r\n };\r\n _proto._firstDayOfWeek = function() {\r\n return (0, _work_week.getFirstDayOfWeek)(this.option(\"firstDayOfWeek\"))\r\n };\r\n _proto._getDateByIndex = function(headerIndex) {\r\n var resultDate = new Date(this._firstViewDate);\r\n if (headerIndex % this._getCellCount() === 0) {\r\n weekCounter = 0\r\n }\r\n resultDate.setDate(this._firstViewDate.getDate() + headerIndex + weekCounter);\r\n var index = resultDate.getDay();\r\n while (dayIndexes.indexOf(index) === -1) {\r\n resultDate.setDate(resultDate.getDate() + 1);\r\n index = resultDate.getDay();\r\n weekCounter++\r\n }\r\n return resultDate\r\n };\r\n _proto._renderView = function() {\r\n weekCounter = 0;\r\n _SchedulerWorkSpaceWe.prototype._renderView.call(this)\r\n };\r\n _proto._setFirstViewDate = function() {\r\n this._firstViewDate = (0, _work_week.getFirstViewDate)(this._getViewStartByOptions(), this._firstDayOfWeek());\r\n this._setStartDayHour(this._firstViewDate)\r\n };\r\n _proto._getOffsetByCount = function(cellIndex) {\r\n var cellsInGroup = this._getCellCount();\r\n var inGroup = Math.floor(cellIndex / cellsInGroup);\r\n cellIndex -= cellsInGroup * inGroup;\r\n var weekendCount = Math.floor(cellIndex / 5);\r\n return toMs(\"day\") * weekendCount * 2\r\n };\r\n return SchedulerWorkSpaceWorkWeek\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerWorkSpaceWorkWeek\", SchedulerWorkSpaceWorkWeek);\r\nvar _default = SchedulerWorkSpaceWorkWeek;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/utils.timeZone.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _utils = _interopRequireDefault(require(\"./timezones/utils.timezones_data\"));\r\nvar _dateAdapter = _interopRequireDefault(require(\"./dateAdapter\"));\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 _slicedToArray(arr, i) {\r\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest()\r\n}\r\n\r\nfunction _nonIterableRest() {\r\n throw new TypeError(\"Invalid attempt to destructure 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 _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\n\r\nfunction _iterableToArrayLimit(arr, i) {\r\n var _i = null == arr ? null : \"undefined\" !== typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\r\n if (null == _i) {\r\n return\r\n }\r\n var _arr = [];\r\n var _n = true;\r\n var _d = false;\r\n var _s, _e;\r\n try {\r\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\r\n _arr.push(_s.value);\r\n if (i && _arr.length === i) {\r\n break\r\n }\r\n }\r\n } catch (err) {\r\n _d = true;\r\n _e = err\r\n } finally {\r\n try {\r\n if (!_n && null != _i.return) {\r\n _i.return()\r\n }\r\n } finally {\r\n if (_d) {\r\n throw _e\r\n }\r\n }\r\n }\r\n return _arr\r\n}\r\n\r\nfunction _arrayWithHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return arr\r\n }\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar MINUTES_IN_HOUR = 60;\r\nvar createUTCDateWithLocalOffset = function(date) {\r\n if (!date) {\r\n return null\r\n }\r\n return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()))\r\n};\r\nvar createDateFromUTCWithLocalOffset = function(date) {\r\n var result = (0, _dateAdapter.default)(date);\r\n var timezoneOffsetBeforeInMin = result.getTimezoneOffset();\r\n result.addTime(result.getTimezoneOffset(\"minute\"));\r\n result.subtractMinutes(timezoneOffsetBeforeInMin - result.getTimezoneOffset());\r\n return result.source\r\n};\r\nvar getTimeZones = function() {\r\n var date = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date;\r\n var dateInUTC = createUTCDate(date);\r\n return _utils.default.getDisplayedTimeZones(dateInUTC.getTime())\r\n};\r\nvar createUTCDate = function(date) {\r\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes()))\r\n};\r\nvar getTimezoneOffsetChangeInMinutes = function(startDate, endDate, updatedStartDate, updatedEndDate) {\r\n return getDaylightOffset(updatedStartDate, updatedEndDate) - getDaylightOffset(startDate, endDate)\r\n};\r\nvar getTimezoneOffsetChangeInMs = function(startDate, endDate, updatedStartDate, updatedEndDate) {\r\n return getTimezoneOffsetChangeInMinutes(startDate, endDate, updatedStartDate, updatedEndDate) * toMs(\"minute\")\r\n};\r\nvar getDaylightOffset = function(startDate, endDate) {\r\n return new Date(startDate).getTimezoneOffset() - new Date(endDate).getTimezoneOffset()\r\n};\r\nvar getDaylightOffsetInMs = function(startDate, endDate) {\r\n return getDaylightOffset(startDate, endDate) * toMs(\"minute\")\r\n};\r\nvar calculateTimezoneByValue = function(timezone) {\r\n var date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date;\r\n if (\"string\" === typeof timezone) {\r\n var dateUtc = createUTCDate(date);\r\n return _utils.default.getTimeZoneOffsetById(timezone, dateUtc.getTime())\r\n }\r\n return timezone\r\n};\r\nvar _getDaylightOffsetByTimezone = function(startDate, endDate, timeZone) {\r\n return calculateTimezoneByValue(timeZone, startDate) - calculateTimezoneByValue(timeZone, endDate)\r\n};\r\nvar getCorrectedDateByDaylightOffsets = function(convertedOriginalStartDate, convertedDate, date, timeZone, startDateTimezone) {\r\n var daylightOffsetByCommonTimezone = _getDaylightOffsetByTimezone(convertedOriginalStartDate, convertedDate, timeZone);\r\n var daylightOffsetByAppointmentTimezone = _getDaylightOffsetByTimezone(convertedOriginalStartDate, convertedDate, startDateTimezone);\r\n var diff = daylightOffsetByCommonTimezone - daylightOffsetByAppointmentTimezone;\r\n return new Date(date.getTime() - diff * toMs(\"hour\"))\r\n};\r\nvar correctRecurrenceExceptionByTimezone = function(exception, exceptionByStartDate, timeZone, startDateTimeZone) {\r\n var isBackConversion = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false;\r\n var timezoneOffset = (exception.getTimezoneOffset() - exceptionByStartDate.getTimezoneOffset()) / MINUTES_IN_HOUR;\r\n if (startDateTimeZone) {\r\n timezoneOffset = _getDaylightOffsetByTimezone(exceptionByStartDate, exception, startDateTimeZone)\r\n } else {\r\n if (timeZone) {\r\n timezoneOffset = _getDaylightOffsetByTimezone(exceptionByStartDate, exception, timeZone)\r\n }\r\n }\r\n return new Date(exception.getTime() + (isBackConversion ? -1 : 1) * timezoneOffset * toMs(\"hour\"))\r\n};\r\nvar isTimezoneChangeInDate = function(date) {\r\n var startDayDate = new Date(new Date(date).setHours(0, 0, 0, 0));\r\n var endDayDate = new Date(new Date(date).setHours(23, 59, 59, 0));\r\n return startDayDate.getTimezoneOffset() - endDayDate.getTimezoneOffset() !== 0\r\n};\r\nvar getDateWithoutTimezoneChange = function(date) {\r\n var clonedDate = new Date(date);\r\n if (isTimezoneChangeInDate(clonedDate)) {\r\n var result = new Date(clonedDate);\r\n return new Date(result.setDate(result.getDate() + 1))\r\n }\r\n return clonedDate\r\n};\r\nvar isSameAppointmentDates = function(startDate, endDate) {\r\n endDate = new Date(endDate.getTime() - 1);\r\n return _date.default.sameDate(startDate, endDate)\r\n};\r\nvar getClientTimezoneOffset = function() {\r\n var date = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date;\r\n return 6e4 * date.getTimezoneOffset()\r\n};\r\nvar isEqualLocalTimeZone = function(timeZoneName) {\r\n var date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date;\r\n if (Intl) {\r\n var localTimeZoneName = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n if (localTimeZoneName === timeZoneName) {\r\n return true\r\n }\r\n }\r\n return isEqualLocalTimeZoneByDeclaration(timeZoneName, date)\r\n};\r\nvar hasDSTInLocalTimeZone = function() {\r\n var _getExtremeDates = getExtremeDates(),\r\n _getExtremeDates2 = _slicedToArray(_getExtremeDates, 2),\r\n startDate = _getExtremeDates2[0],\r\n endDate = _getExtremeDates2[1];\r\n return startDate.getTimezoneOffset() !== endDate.getTimezoneOffset()\r\n};\r\nvar isEqualLocalTimeZoneByDeclaration = function(timeZoneName, date) {\r\n var year = date.getFullYear();\r\n var getOffset = function(date) {\r\n return -date.getTimezoneOffset() / 60\r\n };\r\n var getDateAndMoveHourBack = function(dateStamp) {\r\n return new Date(dateStamp - 36e5)\r\n };\r\n var configTuple = _utils.default.getTimeZoneDeclarationTuple(timeZoneName, year);\r\n var _configTuple = _slicedToArray(configTuple, 2),\r\n summerTime = _configTuple[0],\r\n winterTime = _configTuple[1];\r\n var noDSTInTargetTimeZone = 0 === configTuple.length;\r\n if (noDSTInTargetTimeZone) {\r\n var targetTimeZoneOffset = _utils.default.getTimeZoneOffsetById(timeZoneName, date);\r\n var localTimeZoneOffset = getOffset(date);\r\n if (targetTimeZoneOffset !== localTimeZoneOffset) {\r\n return false\r\n }\r\n return hasDSTInLocalTimeZone() ? false : true\r\n }\r\n var localSummerOffset = getOffset(new Date(summerTime.date));\r\n var localWinterOffset = getOffset(new Date(winterTime.date));\r\n if (localSummerOffset !== summerTime.offset) {\r\n return false\r\n }\r\n if (localSummerOffset === getOffset(getDateAndMoveHourBack(summerTime.date))) {\r\n return false\r\n }\r\n if (localWinterOffset !== winterTime.offset) {\r\n return false\r\n }\r\n if (localWinterOffset === getOffset(getDateAndMoveHourBack(winterTime.date))) {\r\n return false\r\n }\r\n return true\r\n};\r\nvar getExtremeDates = function() {\r\n var nowDate = new Date(Date.now());\r\n var startDate = new Date;\r\n var endDate = new Date;\r\n startDate.setFullYear(nowDate.getFullYear(), 0, 1);\r\n endDate.setFullYear(nowDate.getFullYear(), 6, 1);\r\n return [startDate, endDate]\r\n};\r\nvar utils = {\r\n getDaylightOffset: getDaylightOffset,\r\n getDaylightOffsetInMs: getDaylightOffsetInMs,\r\n getTimezoneOffsetChangeInMinutes: getTimezoneOffsetChangeInMinutes,\r\n getTimezoneOffsetChangeInMs: getTimezoneOffsetChangeInMs,\r\n calculateTimezoneByValue: calculateTimezoneByValue,\r\n getCorrectedDateByDaylightOffsets: getCorrectedDateByDaylightOffsets,\r\n isSameAppointmentDates: isSameAppointmentDates,\r\n correctRecurrenceExceptionByTimezone: correctRecurrenceExceptionByTimezone,\r\n getClientTimezoneOffset: getClientTimezoneOffset,\r\n createUTCDateWithLocalOffset: createUTCDateWithLocalOffset,\r\n createDateFromUTCWithLocalOffset: createDateFromUTCWithLocalOffset,\r\n createUTCDate: createUTCDate,\r\n isTimezoneChangeInDate: isTimezoneChangeInDate,\r\n getDateWithoutTimezoneChange: getDateWithoutTimezoneChange,\r\n hasDSTInLocalTimeZone: hasDSTInLocalTimeZone,\r\n isEqualLocalTimeZone: isEqualLocalTimeZone,\r\n isEqualLocalTimeZoneByDeclaration: isEqualLocalTimeZoneByDeclaration,\r\n getTimeZones: getTimeZones\r\n};\r\nvar _default = utils;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n"],"sourceRoot":""} |