{"version":3,"sources":["webpack:///./node_modules/devextreme/ui/scheduler/utils.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/cache.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline_week.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/utils.work_week.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_vertical.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_week.js","webpack:///./node_modules/devextreme/ui/scheduler/utils.timeZone.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.agenda.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.horizontal.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.vertical.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.virtual_scrolling.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/view_data_provider.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/virtual_selection_state.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline_day.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline_month.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline_work_week.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_day.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_month.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_work_week.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.indicator.js"],"names":["exports","default","obj","_renderer","__esModule","KEYS","utils","dataAccessors","getAppointmentSettings","element","data","getAppointmentInfo","settings","info","_default","module","_interopRequireDefault","_dom_adapter","_events_engine","_element_data","_date","_window","_element","_extend","_iterator","_position","_message","_date2","_common","_type","_index","_pointer","_ui","_click","_contextmenu","_drag","_ui2","_uiSchedulerWork_spaceGroupedStrategy","_uiSchedulerWork_spaceGroupedStrategy2","_uiScheduler","_uiSchedulerCurrent_time_shader","_appointmentDragBehavior","_constants","_utils","_widgetObserver","_translator","_uiScheduler2","_view_data_provider","_layout","_title","_layout2","_virtual_selection_state","_cache","_objectWithoutProperties","source","excluded","key","i","target","sourceKeys","Object","keys","length","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","prototype","propertyIsEnumerable","call","ownKeys","object","enumerableOnly","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","configurable","writable","_defineProperties","props","descriptor","_setPrototypeOf","o","p","setPrototypeOf","__proto__","tableCreator","abstract","toMs","dateToMilliseconds","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","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","this","counter","_proto","isFree","take","release","formatWeekday","date","getDayNames","getDay","_WidgetObserver","subClass","superClass","SchedulerWorkSpace","create","constructor","Constructor","protoProps","staticProps","_proto2","_supportedKeys","clickHandler","e","preventDefault","stopPropagation","_selectedCells","$itemElement","option","$cellElement","_showPopup","_cellClickAction","event","cellElement","cellData","getCellData","arrowPressHandler","cell","_moveToCell","shiftKey","extend","space","downArrow","$cell","_getCellFromNextRow","upArrow","rightArrow","$rightCell","_getCellFromNextColumn","leftArrow","$leftCell","_dispose","_this$virtualScrollin","virtualScrollingDispatcher","dispose","_disposeRenovatedComponents","_isRTL","_getFocusedCell","_$focusedCell","_$dateTable","find","eq","_getAllFocusedCells","direction","$currentCell","isDefined","cellIndex","index","parent","children","_checkForViewBounds","$item","isMultiSelection","$focusedCell","$nextCell","$row","nextColumnDirection","isDirectionNext","previousColumnDirection","isRTL","groupCount","_getGroupCount","isHorizontalGrouping","_isHorizontalGroupedWorkSpace","isGroupedByDate","totalCellCount","_getTotalCellCount","rowCellCount","_getCellCount","lastIndexInRow","currentIndex","step","resultingSign","_isEdgeCell","_isGroupEndCell","nextIndex","edgeCellIndex","isNextCellGreaterThanEdge","isNextCellLessThanEdge","cellsInRow","result","endCell","startCell","_setSelectedAndFocusedCells","_dateTableScrollable","scrollToElement","updateViewData","isVirtualScrolling","$correctedCell","_correctCellForGroup","hasClass","_setSelectedCells","_setFocusedCell","_releaseFocusedCell","_this$_getCoordinates","_getCoordinatesByCell","rowIndex","columnIndex","isAllDayCell","_hasAllDayClass","virtualSelectionState","setFocusedCell","focusedCell","getFocusedCell","_isVerticalGroupedWorkSpace","coordinates","allDay","_dom_getAllDayPanelCell","_dom_getDateCell","_toggleFocusedCellClass","$firstCell","_releaseSelectedCells","_setSelectedCellsInVirtualMode","_setSelectedCellsInStandardMode","$selectedCells","_toggleFocusClass","setAria","selectedCellData","getSelectedCellData","map","_ref","startDate","endDate","groups","groupIndex","_selectionChangedAction","$previousCell","_$prevCell","orientation","$targetCells","_getCellsBetween","toArray","get","_this$_getCoordinates2","firstCell","setSelectedCells","_this$_getCoordinates3","_firstCell","_setSelectedCellsByCellData","getSelectedCells","isValidFocusedCell","cellGroupIndex","_getGroupIndexByCell","focusedCellGroupIndex","isDifferentTables","$first","$last","isAllDayTable","$cells","_getCells","firstIndex","lastIndex","buffer","slice","focusedGroupIndex","each","_","bind","_this$_getCoordinates4","viewDataProvider","_groupedStrategy","getGroupIndexByCell","isFocused","$element","_focusTarget","toggleClass","_releaseSelectedAndFocusedCells","_focusInHandler","is","_isCellClick","_contextMenuHandled","_focusOutHandler","_this$virtualSelectio","releaseSelectedAndFocusedCells","_getDefaultOptions","currentDate","Date","intervalCount","firstDayOfWeek","startDayHour","endDayHour","hoursInterval","activeStateEnabled","hoverStateEnabled","showAllDayPanel","allDayExpanded","onCellClick","crossScrollingEnabled","dataCellTemplate","timeCellTemplate","resourceCellTemplate","dateCellTemplate","allowMultipleCellSelection","indicatorTime","indicatorUpdateInterval","shadeUntilCurrentTime","groupOrientation","groupByDate","scrolling","mode","renovateRender","height","_optionChanged","args","invoke","_cleanWorkSpace","_cleanView","_removeAllDayElements","_initGrouping","repaint","_initGroupedStrategy","_createAllDayPanelElements","_toggleGroupByDateClass","_toggleAllDayVisibility","_changeAllDayVisibility","_attachTablesEvents","headerPanelOffsetRecalculate","_updateScrollable","_createSelectionChangedAction","_createCellClickAction","_attachContextMenuEvent","_toggleWorkSpaceCountClass","_toggleFixedScrollableClass","_toggleHorizontalScrollClass","_dateTableScrollableConfig","_dimensionChanged","_isVirtualModeOn","_toggleGroupedClass","_toggleWorkSpaceWithOddCells","_renderView","_init","_headerSemaphore","_sideBarSemaphore","_dataTableSemaphore","_viewDataProvider","_virtualSelectionState","_activeStateUnit","_maxAllowedVerticalPosition","_maxAllowedPosition","addClass","_getElementClass","_toggleGroupingDirectionClass","Strategy","_getDefaultGroupStrategy","_isWorkSpaceWithCount","_isWorkspaceWithOddCells","_getRealGroupOrientation","_getTimePanelClass","_getDateTableClass","_getDateTableRowClass","_getDateTableCellClass","j","cellClass","_needApplyLastGroupCellClass","addAdditionalGroupCellClasses","_getGroupRowClass","_getGroupHeaderClass","_getGroupHeaderContentClass","_initWorkSpaceUnits","_$headerPanel","_$thead","appendTo","_$fixedContainer","FIXED_CONTAINER_CLASS","_$allDayContainer","_initAllDayPanelElements","isRenovatedRender","createRAllDayPanelElements","_$timePanel","_$groupTable","_allDayTitles","_allDayTables","_allDayPanels","_$allDayPanel","_$allDayTitle","$allDayTitle","text","format","_$allDayTable","append","_initDateTableScrollable","$dateTableScrollable","_createComponent","config","useKeyboard","bounceEnabled","updateManually","pushBackValue","_needCreateCrossScrolling","_createCrossScrollingConfig","_this","_sidebarScrollable","scrollTo","top","scrollOffset","_headerScrollable","left","notifyObserver","_createWorkSpaceElements","_createWorkSpaceScrollableElements","_createWorkSpaceStaticElements","$content","_createHeaderScrollable","_createSidebarScrollable","prepend","$headerScrollable","_headerScrollableConfig","_this2","showScrollbar","useNative","onScroll","_this3","$timePanelScrollable","_visibilityChanged","visible","cache","clear","_setHorizontalGroupHeaderCellsHeight","_setTableSizes","_attachTableClasses","_addTableClass","_attachHeaderTableClasses","$el","className","cellWidth","getCellWidth","getCellMinWidth","minWidth","getWorkSpaceMinWidth","width","last","_cleanAllowedPositions","noop","_getRowCount","_getRowCountWithAllDayRows","allDayRowCount","_isShowAllDayPanel","_initMarkup","_initVirtualScrolling","_attachEvents","_setFocusOnCellByOption","renovatedRenderSupported","_render","_renderDateTimeIndication","_setIndicationUpdateInterval","_setFirstViewDate","_applyCellTemplates","_renderGroupHeader","_renderDateHeader","renderRWorkspace","_renderTimePanel","_renderGroupAllDayPanel","_renderDateTable","_renderAllDayPanel","_updateGroupTableHeight","_shader","isGroupedAllDayPanel","generateRenderOptions","verticalGroupCount","horizontalGroupCount","allDayElements","_insertAllDayRowsIntoDateTable","options","rowCountInGroup","cellCount","cellCountInGroupRow","cellDataGetters","_getCellData","startRowIndex","nonVirtualRowCount","renderState","rowCount","_getTotalRowCount","_this$virtualScrollin2","isGenerateNewViewData","update","renderRAllDayPanel","renderRTimeTable","renderRDateTable","updateRSelection","updateDimensions","viewData","renderRComponent","renovatedAllDayPanel","parentElement","componentClass","componentName","viewModel","component","getOwnPropertyNames","optionName","container","getPublicElement","isVerticalGrouping","selectedCells","hasWindow","_refreshDateTimeIndication","_data$","_this4","cells","_getAllCells","_isGroupsSpecified","_getGroupIndexByResourceId","findCellPositionInMap","getCoordinatesByDate","resources","id","resourceTree","_getGroupIndexRecursively","_this5","currentKey","currentValue","reduce","prevIndex","_ref2","leafIndex","areValuesEqual","_getCalculatedFirstDayOfWeek","firstDayOfWeekOption","_firstDayOfWeek","firstDayOfWeekIndex","_firstViewDate","getFirstWeekDate","_getViewStartByOptions","_setStartDayHour","trimTime","_getStartViewDate","diff","getTime","_getIntervalDuration","_dateInRange","_getHeaderDate","getStartViewDate","dateInRange","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","_getGroupHeaderContainer","_getDateHeaderContainer","$container","cellTemplates","groupRows","_makeGroupRows","_attachGroupCountAttr","elements","_detachGroupCountAttr","templates","template","groupedAttr","getGroupCountAttr","removeAttr","attr","groupRowCount","count","headerPanelHeight","getHeaderPanelHeight","headerHeight","allDayPanelHeight","supportAllDayRow","getAllDayTableHeight","css","paddingBottom","marginBottom","parseInt","tableCreatorStrategy","VERTICAL","HORIZONTAL","makeGroupedTable","groupHeaderRowClass","groupRowClass","groupHeaderClass","groupHeaderContentClass","_getDateHeaderTemplate","$headerRow","cellTemplate","repeatCount","_getCalculateHeaderCellRepeatCount","templateCallbacks","colSpan","_cellIndex","_templateIndex","_renderDateHeaderTemplate","templateIndex","panelCellIndex","_getHeaderText","_getHeaderPanelCellClass","render","model","_getDateByIndex","HEADER_PANEL_CELL_CLASS","calculateHeaderCellRepeatCount","_renderTableBody","_getAllDayPanelCellClass","rowClass","_getAllDayCellData","_getDateByCellIndexes","_getGroupIndex","_getCellGroups","toggle","_this7","calculateTimeCellRepeatCount","startViewDate","getDateWithoutTimezoneChange","_getTimePanelRowCount","_getTimeCellClass","getCellText","_getTimeCellDateCore","getCellDate","_getTimeCellDate","_getCellCountInDay","skipRound","_calculateDayDuration","Math","ceil","TIME_PANEL_CELL_CLASS","timeCellDuration","round","getCellDuration","cellCountInDay","setMilliseconds","getMilliseconds","insertAllDayRowsIntoDateTable","getTotalCellCount","includeAllDayPanelRows","getTotalRowCount","_prepareCellData","calculateEndDate","_getTableAllDay","getGroupIndex","_getInterval","len","items","_getPathToLeaf","makeBranch","leaf","findLeafByIndex","_leaf","reverse","path","cellHeight","_this8","isPointerDown","itemSizeFunc","getBoundingRect","checkDropTarget","_isOutsideScrollable","_$currentTableTarget","removeDroppableCellClass","draggingElement","getDocument","removeClass","_getDateTables","add","_getDateTable","_getAllDayTable","_interval","headerIndex","_getDateForHeaderText","_getFormat","_calculateCellIndex","calculateCellIndex","delayCellTemplateRendering","makeTable","remove","_this$virtualSelectio2","empty","clean","_hiddenInterval","_clean","_this$renovatedAllDay","_this$renovatedDateTa","_this$renovatedTimePa","renovatedDateTable","renovatedTimePanel","getWorkArea","getScrollable","getScrollableScrollTop","scrollTop","getGroupedScrollableScrollTop","getScrollableScrollLeft","scrollLeft","getScrollableOuterWidth","scrollWidth","getScrollableContainer","_container","outerHeight","getTimePanelWidth","getGroupTableWidth","outerWidth","getWorkSpaceLeftOffset","getLeftOffset","getGroupedStrategy","_getCellCoordinatesByIndex","floor","patchedIndexes","_patchCellIndex","firstViewDate","_getMillisecondsOffset","_getOffsetByCount","setTime","getTimezonesDifference","_calculateHiddenInterval","_getHiddenInterval","getVisibleDayDuration","_getIntervalBetween","startDayTime","timeZoneOffset","fullInterval","days","_getDaysOfInterval","weekendsCount","_getWeekendsCount","_getGroupIndexes","appointmentResources","tree","_updateIndex","_getDroppableCell","_getWorkSpaceWidth","_this9","_getCellPositionByIndex","inAllDayRow","cellCoordinates","_getCellByCoordinates","_getCellPositionWithCache","_getCellPosition","setCellDataCache","position","indexes","prepareCellIndexes","_getDateTableBorder","_getDateTableBorderOffset","_getGroupHeaderCellsContent","_getGroupHeaderCells","_getScrollCoordinates","hours","minutes","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","getPositionShift","getTimeShift","horizontalHMax","Error","cellPosition","hMax","vMax","getVerticalMax","getCellIndexByDate","_getOffsetByAllDayPanel","_getGroupTop","timeInterval","dateTimeStamp","timeShift","isAllDay","getCellHeight","currentDayStart","cellDuration","currentDayEndHour","timeZoneDifference","currentDateTime","currentDayStartTime","_isSkippedData","getCoordinatesByDateInGroup","_this10","getDroppableCellIndex","$droppableCell","getDataByDroppableCell","getDateRange","getEndViewDateByEndDayHour","_this11","getRoundedCellWidth","startIndex","_this12","useCache","callbackResult","getAllDayHeight","getAllDayOffset","getMaxAllowedPosition","isRtl","maxPosition","getMaxAllowedVerticalPosition","getMaxAllowedVerticalPositionVirtual","getMaxAllowedVerticalPositionStandard","_this13","row","_this14","getMaxPosition","getLasGroupCellPosition","getFixedContainer","getAllDayContainer","getCellIndexByCoordinates","leftOffset","topIndex","leftIndex","getEndViewDate","dateOfLastViewCell","getDateOfLastViewCell","endDateOfLastViewCell","calculateEndViewDate","_adjustEndViewDateByDaylightDiff","endTime","dateTimeFromDecimal","daylightDiff","getDaylightOffsetInMs","_getEndViewDateTimeDiff","getIntervalDuration","getGroupBounds","getGroupBoundsOffset","startOffset","right","needRecalculateResizableArea","getCellDataByCoordinates","_this15","getVisibleBounds","$scrollable","scrolledCellCount","bottom","updateScrollPosition","scheduler","newDate","timeZoneCalculator","createDate","needUpdateScrollPosition","_this16","_getCellsInViewport","time","trimmedTime","currentResult","_this16$getCellData","cellStartDate","cellEndDate","cellStartTime","cellEndTime","totalColumnCount","scrollableScrollTop","scrollableScrollLeft","fullScrolledRowCount","scrolledRowCount","fullScrolledColumnCount","scrolledColumnCount","columnCount","getGroupWidth","currentPosition","scrollToTime","_isValidScrollDate","scrollable","scrollBy","throwWarning","isScrollToAllDay","getHours","getMinutes","offset","scrollableHeight","scrollableWidth","xShift","yShift","setTimeout","min","max","log","getDistanceBetweenCells","endIndex","needApplyCollectorOffset","initDragBehavior","dragBehavior","_createDragBehavior","_createDragBehaviorBase","itemElement","appointments","_getItemData","APPOINTMENT_SETTINGS_KEY","getItemData","getItemSettings","dragElement","itemData","_this17","_ref3","isSetCursorOffset","restOptions","addTo","dragTemplate","onDragStart","canceled","cancel","_appointments","disabled","isCompact","updateDragSource","_createDragAppointment","initialPosition","locate","itemSettings","resetPosition","onDragEnd","_dragElement","cursorOffset","$dragElement","x","y","appointmentIndex","virtual","_renderItem","_isApplyCompactAppointmentOffset","_supportCompactDropDownAppointments","_formatWeekday","_formatWeekdayAndDay","updateAppointments","_this$dragBehavior","GroupedStrategy","workSpace","_workSpace","getLastGroupCellClass","getFirstGroupCellClass","Cache","Map","callback","has","size","_component_registrator","SchedulerTimelineWeek","_SchedulerTimeline","_getWeekDuration","_getHeaderPanelCellWidth","_needRenderWeekHeader","_incrementDate","setDate","getDate","workWeekUtils","isDataOnWeekend","day","getFirstDayOfWeek","getWeekendsCount","getFirstViewDate","viewStart","normalizeDateByWeek","_uiSchedulerWork_space","_SchedulerWorkSpaceIn","SchedulerWorkspaceVertical","firstColumn","firstRow","lastColumn","lastRow","lastCellGroup","indexesDifference","newFirstIndex","newLastIndex","arr","column","SchedulerWorkSpaceWeek","_SchedulerWorkSpaceVe","resultDate","_dateAdapter","_slicedToArray","Array","isArray","_arrayWithHoles","_i","Symbol","iterator","_s","_e","_arr","_n","_d","next","done","err","return","_iterableToArrayLimit","minLen","_arrayLikeToArray","n","toString","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","arr2","createUTCDate","UTC","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getTimezoneOffsetChangeInMinutes","updatedStartDate","updatedEndDate","getDaylightOffset","getTimezoneOffset","calculateTimezoneByValue","timezone","dateUtc","getTimeZoneOffsetById","_getDaylightOffsetByTimezone","timeZone","isTimezoneChangeInDate","startDayDate","endDayDate","hasDSTInLocalTimeZone","_getExtremeDates2","getExtremeDates","isEqualLocalTimeZoneByDeclaration","timeZoneName","year","getFullYear","getOffset","getDateAndMoveHourBack","dateStamp","configTuple","getTimeZoneDeclarationTuple","_configTuple","summerTime","winterTime","localSummerOffset","localWinterOffset","nowDate","now","setFullYear","getTimezoneOffsetChangeInMs","getCorrectedDateByDaylightOffsets","convertedOriginalStartDate","convertedDate","startDateTimezone","isSameAppointmentDates","sameDate","correctRecurrenceExceptionByTimezone","exception","exceptionByStartDate","startDateTimeZone","isBackConversion","timezoneOffset","getClientTimezoneOffset","createUTCDateWithLocalOffset","getMonth","getSeconds","createDateFromUTCWithLocalOffset","timezoneOffsetBeforeInMin","addTime","subtractMinutes","clonedDate","isEqualLocalTimeZone","Intl","localTimeZoneName","DateTimeFormat","resolvedOptions","getTimeZones","dateInUTC","getDisplayedTimeZones","SchedulerAgenda","_SchedulerWorkSpace","agendaDuration","rowHeight","noDataText","_recalculateAgenda","_rows","_initGroupTable","_renderFocusState","_renderFocusTarget","_cleanFocusState","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","isIndicationAvailable","_prepareCellTemplateOptions","groupsOpt","resourceValue","resourceIndex","resourceName","cellTemplateOpt","_$rows","fillTableBody","rowSize","cellDateNumber","cellDayName","$td","_getRowHeight","getStartDate","templateOptions","_setLastRowClass","_getTimePanelStartDate","current","baseHeight","getAgendaVerticalStepHeight","bounds","startDateHour","startDateMinutes","isUpdateNeeded","_uiSchedulerWork_spaceGrouped","_GroupedStrategy","HorizontalGroupedStrategy","inAllDay","groupByDay","applyUnconditionally","_addLastGroupCellClass","_addFirstGroupCellClass","startCellIndex","endOffset","shiftIndicator","$indicator","rtlOffset","_getIndicatorOffset","horizontalOffset","_calculateGroupByDateOffset","_calculateOffset","getIndicatorOffset","getShaderOffset","getShaderTopOffset","getShaderMaxHeight","getShaderHeight","getIndicationHeight","getShaderWidth","getIndicationWidth","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","_verticalVirtualScrolling","_horizontalVirtualScrolling","innerHeight","innerWidth","virtualItemCountBefore","_this$verticalVirtual2","_this$horizontalVirtu2","vertical","state","horizontal","scrollingState","_this$verticalVirtual3","_this$horizontalVirtu3","verticalRenderState","getRenderState","horizontalRenderState","scrollingType","VirtualScrollingBase","_state","defaultState","_viewportSize","viewportSize","_itemSize","itemSize","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","_VirtualScrollingBase","_proto3","topVirtualRowHeight","bottomVirtualRowHeight","_VirtualScrollingBase2","_proto4","leftVirtualCellWidth","rightVirtualCellWidth","_renderAppointmentTimeout","_proto5","getRenderTimeout","_renderAppointments","renderTimeout","clearTimeout","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","ViewDataGenerator","_getCompleteViewDataMap","viewDataMap","allDayPanelData","_generateAllDayPanelData","viewCellsData","_generateViewCellsData","_generateViewDataMap","completeViewDataMap","correctedStartRowIndex","cellsRow","_getViewDataFromMap","groupedData","previousGroupIndex","previousGroupedData","cellDataRow","isAllDayRow","currentGroupIndex","dateTable","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","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","SchedulerTimelineMonth","_calculateDurationInCells","timeDiff","isIndicatorVisible","getFirstMonthDate","startDateCopy","SchedulerTimelineWorkWeek","_SchedulerTimelineWee","_len","_key","weekendCount","SchedulerWorkSpaceDay","SchedulerWorkSpaceMonth","averageWidth","firstMonthDate","_minVisibleDate","_maxVisibleDate","setMonth","_getCellText","_getDate","_isFirstDayOfMonth","_formatMonthAndDay","getMonthNames","join","week","lastRowInDay","_isCurrentDate","_isOtherMonth","cellDate","_getToday","getCellCountToLastViewDate","firstDateTime","lastDateTime","dayDurationInMs","calculatedTopOffset","dayIndexes","weekCounter","SchedulerWorkSpaceWorkWeek","_SchedulerWorkSpaceWe","cellsInGroup","SchedulerTimeline","_$sidebarTable","newFirstViewDate","_getDateByIndexCore","dayIndex","_getWorkSpaceHeight","timelineConfig","scrollByContent","colspan","$th","before","groupCellTemplates","getIndicationCellCount","_getTimeDiff","today","_getIndicationFirstViewDate","differenceInDays","duration","integerPart","fractionPart","_renderIndicator","_createIndicator","_isVerticalShader","_isCurrentTimeHeaderCell","isIndicationOnView","startCellDate","endCellDate","minHeight","_getWorkSpaceMinHeight","workspaceContainerHeight","_ensureGroupHeaderCellsHeight","minCellHeight","_calculateMinCellHeight","dateTableRowSelector","firstViewDateTime","hiddenInterval","apptStart","fullDays","tailDuration","tailDelta","gapBeforeAppt","positionShift","visibleCellCount","leftDate","rightDate","SchedulerWorkSpaceIndicator","_getTimeZoneCalculator","todayDate","endViewDate","_getRtlOffset","groupedByDate","_clearIndicatorUpdateInterval","_indicatorInterval","setInterval","clearInterval","maxWidth","difference","_getIndicatorDuration","_cleanDateTimeIndicator","_isCurrentTime","showCurrentTimeIndicator"],"mappings":"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","file":"vendors~86721f69.b33c303e10679728f212.bundle.js","sourcesContent":["/**\r\n * DevExtreme (ui/scheduler/utils.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../../events/core/events_engine\"));\r\nvar _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\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 if (enumerableOnly) {\r\n symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })\r\n }\r\n keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n })\r\n } else {\r\n if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n } else {\r\n ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n return Constructor\r\n}\r\n\r\nfunction _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 (!this._dateInRange(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._dateInRange = 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\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 return (0, _position.getBoundingRect)(_this9.$element().get(0)).width - _this9.getTimePanelWidth()\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 = startDate && this.invoke(\"calculateAppointmentEndDate\", allDay, startDate);\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 this._createDragBehaviorBase($element, getItemData, getItemSettings)\r\n };\r\n _proto2._createDragBehaviorBase = function($element, getItemData, getItemSettings) {\r\n var _this17 = this;\r\n var _ref3 = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {},\r\n isSetCursorOffset = _ref3.isSetCursorOffset,\r\n restOptions = _objectWithoutProperties(_ref3, [\"isSetCursorOffset\"]);\r\n var dragElement;\r\n var dragBehavior = this.dragBehavior;\r\n var itemData;\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 = (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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar 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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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 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/ui.scheduler.timeline_week.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.timeline\"));\r\nvar _position = require(\"../../../core/utils/position\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\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 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.work_week.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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 workWeekUtils = function() {\r\n function workWeekUtils() {}\r\n workWeekUtils.isDataOnWeekend = function(date) {\r\n var day = date.getDay();\r\n return day === SATURDAY_INDEX || day === SUNDAY_INDEX\r\n };\r\n workWeekUtils.getFirstDayOfWeek = function(firstDayOfWeekOption) {\r\n return firstDayOfWeekOption || MONDAY_INDEX\r\n };\r\n workWeekUtils.getWeekendsCount = function(days) {\r\n return 2 * Math.floor(days / 7)\r\n };\r\n workWeekUtils.getFirstViewDate = function(viewStart, firstDayOfWeek) {\r\n var firstViewDate = _date.default.getFirstWeekDate(viewStart, firstDayOfWeek);\r\n return _date.default.normalizeDateByWeek(firstViewDate, viewStart)\r\n };\r\n return workWeekUtils\r\n}();\r\nvar _default = workWeekUtils;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space_vertical.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _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 _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 toMs = _date.default.dateToMilliseconds;\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 7 * toMs(\"day\") * 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/utils.timeZone.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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 = arr && (\"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","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.agenda.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../../core/dom_adapter\"));\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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 return _cache.cache.get(\"groupBoundsOffset\", 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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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 if (enumerableOnly) {\r\n symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })\r\n }\r\n keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n })\r\n } else {\r\n if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n } else {\r\n ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n return Constructor\r\n}\r\nvar ROW_HEIGHT = 50;\r\nvar CELL_WIDTH = 150;\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 = ROW_HEIGHT;\r\n this._cellWidth = CELL_WIDTH;\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.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.workspace.getCellHeight(false);\r\n var cellWidth = this.workspace.getCellWidth();\r\n var needUpdate = cellHeight !== this.rowHeight || cellWidth !== this.cellWidth;\r\n if (needUpdate) {\r\n this.rowHeight = cellHeight;\r\n this.cellWidth = cellWidth;\r\n this._createVirtualScrolling();\r\n this.renderer._renderDateTable()\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$verticalVirtual2, _this$horizontalVirtu2;\r\n return {\r\n vertical: null === (_this$verticalVirtual2 = this.verticalVirtualScrolling) || void 0 === _this$verticalVirtual2 ? void 0 : _this$verticalVirtual2.state,\r\n horizontal: null === (_this$horizontalVirtu2 = this.horizontalVirtualScrolling) || void 0 === _this$horizontalVirtu2 ? void 0 : _this$horizontalVirtu2.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$verticalVirtual3, _this$horizontalVirtu3;\r\n var verticalRenderState = (null === (_this$verticalVirtual3 = this.verticalVirtualScrolling) || void 0 === _this$verticalVirtual3 ? void 0 : _this$verticalVirtual3.getRenderState()) || {};\r\n var horizontalRenderState = (null === (_this$horizontalVirtu3 = this.horizontalVirtualScrolling) || void 0 === _this$horizontalVirtu3 ? void 0 : _this$horizontalVirtu3.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.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._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 = isAppend || isPrepend;\r\n if (needAddItems) {\r\n state.virtualItemSizeBefore = virtualItemSizeBefore;\r\n state.virtualItemSizeAfter = virtualItemSizeAfter\r\n }\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 }, {\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._renderDateTable();\r\n this._renderAppointments()\r\n };\r\n _proto5._renderDateTable = 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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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 if (enumerableOnly) {\r\n symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })\r\n }\r\n keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n })\r\n } else {\r\n if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n } else {\r\n ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n if (!o) {\r\n return\r\n }\r\n if (\"string\" === typeof o) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n var n = Object.prototype.toString.call(o).slice(8, -1);\r\n if (\"Object\" === n && o.constructor) {\r\n n = o.constructor.name\r\n }\r\n if (\"Map\" === n || \"Set\" === n) {\r\n return Array.from(o)\r\n }\r\n if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n if (\"undefined\" !== typeof Symbol && null != iter[Symbol.iterator] || null != iter[\"@@iterator\"]) {\r\n return Array.from(iter)\r\n }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return _arrayLikeToArray(arr)\r\n }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n if (null == len || len > arr.length) {\r\n len = arr.length\r\n }\r\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i]\r\n }\r\n return arr2\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n return Constructor\r\n}\r\nvar 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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _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.option(\"currentDate\");\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.timeline\"));\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 _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.option(\"currentDate\"));\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 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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.timeline_week\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _utils = _interopRequireDefault(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 = _utils.default.getWeekendsCount;\r\n _this._isSkippedData = _utils.default.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 _utils.default.getFirstDayOfWeek(this.option(\"firstDayOfWeek\"))\r\n };\r\n _proto._isSkippedData = function() {\r\n return _utils.default.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 = _utils.default.getFirstViewDate(this.option(\"currentDate\"), 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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _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\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 if (!this.option(\"startDate\")) {\r\n return new Date(this.option(\"currentDate\").getTime())\r\n } else {\r\n var startDate = 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(new Date(this._getStartViewDate().setMonth(this._getStartViewDate().getMonth() + diff * this.option(\"intervalCount\"))));\r\n while (!this._dateInRange(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 * this.option(\"intervalCount\"))))\r\n }\r\n return diff > 0 ? startDate : endDate\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._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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _utils = _interopRequireDefault(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 = _utils.default.isDataOnWeekend;\r\n _this._getWeekendsCount = _utils.default.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 _utils.default.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 = _utils.default.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/workspaces/ui.scheduler.timeline.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _position = require(\"../../../core/utils/position\");\r\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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _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"],"sourceRoot":""} |