{"version":3,"sources":["webpack:///./src/views/Components/Appt/Appts/Schedule.vue?d36e","webpack:///./src/views/Components/Appt/Appts/ApptCell.vue?f768","webpack:///./src/views/Pages/Appts/Schedule.vue?99d2","webpack:///./src/views/Components/Appt/Appts/Schedule.vue?40eb","webpack:///./src/views/Components/Appt/Appts/ApptCell.vue?be41","webpack:///src/views/Components/Appt/Appts/ApptCell.vue","webpack:///./src/views/Components/Appt/Appts/ApptCell.vue?161e","webpack:///./src/views/Components/Appt/Appts/ApptCell.vue","webpack:///./src/views/Components/Appt/Appts/Cell.vue?0331","webpack:///src/views/Components/Appt/Appts/Cell.vue","webpack:///./src/views/Components/Appt/Appts/Cell.vue?fd37","webpack:///./src/views/Components/Appt/Appts/Cell.vue","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/view-base.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/vertical-view.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/day.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/week.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/month.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/agenda-base.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/agenda.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/timeline-header-row.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/timeline-view.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/actions/action-base.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/year.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/actions/drag.js","webpack:///src/views/Components/Appt/Appts/Schedule.vue","webpack:///./src/views/Components/Appt/Appts/Schedule.vue?4f15","webpack:///./src/views/Components/Appt/Appts/Schedule.vue","webpack:///src/views/Pages/Appts/Schedule.vue","webpack:///./src/views/Pages/Appts/Schedule.vue?28d6","webpack:///./src/views/Pages/Appts/Schedule.vue","webpack:///./src/views/Components/Appt/Appts/Cell.vue?27ee"],"names":["render","_vm","this","_h","$createElement","_c","_self","_m","staticRenderFns","staticStyle","attrs","staticClass","_v","ref","highlight","eventSettings","selectedDate","onActionBegin","cellTemplate","group","on","dragStop","actionComplete","popupOpen","providerDataSource","class","cs","eventClicked","_s","data","customerName","_f","Status","balance","_e","Subject","StartTime","EndTime","id","Math","floor","random","methods","$emitter","emit","Id","created","component","workingCell","isWorking","inSchedule","providerSchedules","providersSchedules","groupIndex","props","ViewBase","parent","prototype","isTimelineView","currentView","indexOf","getContentRows","refreshHeader","refreshResourceHeader","element","querySelector","lastElementChild","firstElementChild","resTd","appendChild","resourceBase","createResourceColumn","notify","getDayName","date","getDayNames","getDay","getDate","globalize","formatDate","format","calendar","getCalendarMode","getTime","isAdaptive","activeViewOptions","timeFormat","skeleton","getTimeString","getTimelineDate","text","util","createEventTable","trCount","eventTable","className","getEventRows","eventContainer","eventRows","row","uiStateValues","isGroupAdaptive","renderedResources","setAttribute","toString","push","collapseRows","wrap","resources","length","hideResourceRows","createTableLayout","clsName","table","role","tbody","createColGroup","lastRow","colSpan","map","value","reduce","prev","next","colGroupEle","i","getScrollXIndent","content","offsetHeight","clientHeight","scrollTopPanel","target","getDatesHeaderElement","scrollLeft","scrollHeaderLabels","headerTable","colWidth","offsetWidth","querySelectorAll","applyLeft","headerCells","isRtl","currentCell","tdLeft","hiddenLeft","_i","headerCells_2","cell","parseInt","getAttribute","children","style","classNames","classNames_1","slice","call","_a","headerCells_1","enableRtl","addAttributes","td","template","getHeaderBarHeight","headerBarHeight","headerModule","getHeaderElement","resHeader","renderPanel","type","setPanel","panel","getPanel","getDateSlots","renderDates","workDays","generateColumnLevels","getColumnLevels","colLevels","highlightCurrentTime","startDate","endDate","getStartHour","startHour","getStartEndTime","Date","getEndHour","endHour","isCurrentDate","setHours","getCurrentTime","isCurrentMonth","displayDate","numberOfWeeks","activeView","getStartDate","getEndDate","getFullYear","getMonth","isWorkDay","isWorkHour","setMilliseconds","getRenderDates","start","firstDayOfWeek","length_1","interval","showWeekend","length_2","dayCount","agendaDaysCount","previousNextIconHandler","getNextPreviousDate","daysCount","count","weekLength","getLabelText","view","viewStr","charAt","toLowerCase","substring","localeObj","getConstant","getDateRangeText","dateFormat","formatDateRange","formattedStr","longDateFormat","mode","locale","trim","toLocaleLowerCase","substr","getMobileDateElement","innerHTML","setResourceHeaderContent","tdElement","tdData","resourceHeaderTemplate","resource","resourceData","scheduleId","viewName","resourceHeaderTemplateName","templateId","quickTemplate","getResourceHeaderTemplate","textField","renderResourceMobileLayout","lastResourceLevel","renderResourceHeader","renderResourceTree","addAutoHeightClass","rowAutoHeight","getColElements","setColWidth","colElements","contentBody","colWidth_1","getBoundingClientRect","width","forEach","col","resourceColumn","cssClass","headerCellElements","ele","headerCellColSpan","resetColWidth","colElements_1","getContentAreaElement","wireExpandCollapseIconEvents","resourceCollection","treeIcons","treeIcons_1","icon","clearEvents","add","onTreeIconClick","scrollToDate","scrollDate","scrollWrap","tdDate","dateElement","scrollTop","offsetTop","getContentTable","offsetLeft","setPersistence","enablePersistence","contentWrap","retainScrollPosition","conWrap","getViewStartDate","getResourceRenderDates","getViewEndDate","destroy","parentNode","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","create","_super","VerticalView","_this","viewClass","isInverseTableSelect","baseCssClass","appointment","getModuleName","addEventListener","scrollUiUpdate","renderEvents","removeEventListener","off","timeScale","enable","renderAppointments","onContentScroll","e","removeNewEventElement","scrollLeftPanel","top","left","quickPopup","quickPopupHide","onAdaptiveMove","action","preventDefault","onAdaptiveScroll","isDestroyed","leftPanel","getLeftPanelElement","args","dateHeader","timeCells","getScrollableElement","header","scrollerHeight","setContentHeight","scrollBarWidth","cssProperties","rtlBorder","rtlPadding","isDateHeaderScroll","enableAllDayScroll","clientWidth","classList","contains","border","padding","isPreventScrollUpdate","isInitial","scrollToWorkHour","leftPanelElement","height","workHours","firstWorkHourCell","scrollToHour","hour","getTopFromDateTime","level","columnLevels","generateResourceLevels","resourceLevel","resStartHour","startHourField","resEndHour","endHourField","dateSlots","workStartHour","workEndHour","end","dateCol","renderDates_1","isWorkHourRange","headerRows","option","showTimeIndicator","currentDateIndex","getCurrentTimeIndicatorIndex","workCells","changeCurrentTimePosition","currentTimeIndicatorTimer","currentDate","getSeconds","getMilliseconds","window","setTimeout","clearCurrentTimeIndicatorTimer","updateCurrentTimeIndicatorTimer","index","getIndexOfDate","resIndex","byDate","clearInterval","removeCurrentTimeIndicatorElements","setInterval","queryString","timeIndicator","timeIndicator_1","indicator","firstRow","rows","topInPx","rowIndex","cells","timeCellsWrap","timeTrs","isNaN","curTimeWrap","styles","currentDateIndex_1","day","currentTimeEle","diffInMinutes","getHours","getMinutes","getWorkCellHeight","slotCount","parseFloat","toFixed","getTdContent","cntEle","wrapper","templateName","dateHeaderTemplate","dateHeaderTemplateName","getDateHeaderTemplate","childNodes","majorSlotTemplate","getMajorSlotTemplate","minorSlotTemplate","getMinorSlotTemplate","cellTemplateName","getCellTemplate","renderHeader","renderLayout","clsList","allowVirtualScrolling","ignoreWhitespace","renderContent","tr","dateTd","renderDatesHeader","indentTd","renderLeftIndent","workTd","scrollContainer","renderTimeCells","renderContentArea","touchMoveEvent","timesTd","nth","tbl","trEle","rowCount","ntr_1","cloneNode","data_1","showWeekNumber","weekNo","getWeekNumberContent","title","createTd","renderHeaderIndentTemplate","ntr","appointmentExpandCollapse","container","lastLevel","j","createAllDayRow","ntd","wireCellEvents","thead","createEventWrapper","tdEle","isMinMaxDate","wireMouseEvents","elementType","trigger","workCellAction","cellMouseDown","cellClick","cellDblClick","handler","r","first","last","getTimeSlotRows","renderContentTable","createContentTd","renderContentTableHeader","getContentTdClass","cellDate","args_1","tooltipTemplate","levels","len","appointmentWrap","innerWrapper","getEndDateFromStartDate","msMajorInterval","msInterval","round","msStartHour","msEndHour","abs","getTimezoneOffset","dt","timeOffset","majorTickDivider","middle","contentScrollableEle","remove","scheduleTouchModule","resetValues","Day","Week","Month","dayNameFormat","monthEvent","monthDates","onScrollUIUpdate","onDataReady","onCellClick","event","headerHeight","scrollPosition","headerCell","getDayNameFormat","isCustomMonth","renderWeekNumberContent","contentArea","monthAgendaWrapper","renderAppointmentContainer","contentWrapper","contentWrapTable","noOfDays","dates","splice","weekNumber","createWeekNumberElement","createHeaderCell","cellArgs","elementId","dateTemplate","innerText","calendarUtil","isMonthStart","getContentSlots","slotDatas","prepareSlots","renderDate","resData","includeResource","colDates","colDates_2","colDate","resourcesTd","res","_b","colDates_1","updateClassList","isOtherMonth","isSelectedDate","monthDate","firstDateOfMonth","lastDateOfMonth","tBody","trows","renderDateHeaderElement","cellHeaderTemplate","cellHeaderTemplateName","getCellHeaderTemplate","announcementText","getMonthStart","useDisplayDate","isCustomRange","monthStart","getMonthEnd","numberOfDays","lastWeekOfMonth","getCurrentViewDates","selectedTime","weekFirstDate","monthEnd","updateCustomRange","isUpdateDateRange","monthNames","unWireEvents","AgendaBase","createAgendaContentElement","listData","aTd","groupOrder","listElement","fieldMapping","eventFields","noEvents","createList","createElement","moduleName","listClass","itemClass","listElements","li","templateEle","appWrapper","Guid","eventBase","getReadonlyAttribute","getAnnouncementString","applyResourceColor","eventTemplate","createAppointment","eventTemplateName","getAppointmentTemplate","recurrenceRule","iconClass","recurrenceID","cancel","eventArgs","renderTemplates","eventSubject","subject","fields","default","eventLocation","location","appSubjectWrap","strDate","startTime","endTime","isAllDay","allDayStr","timeStr","milliSeconds","eventString","displayStr","appDateTime","processAgendaEvents","events","eventsProcessed","events_1","event_1","spanned","splitEventByDay","concat","wireEventActions","eventElement","eventElement_1","wireAppointmentEvents","getEventDetails","dateHeaderElement","dateHeaderElement_1","agendaModule","dayNavigationClick","calculateResourceTableElement","agendaDate","agendaLastDate","days","resColl","initialDate","lastLevelInfo","tempLastLevelInfo","tempIndex","eventObj","dateObj","firstDate","finalDate","agendaCollection","filterEvents","hideEmptyAgendaDays","resDataCollection","resDayCollection","undefined","rowSpan","eventData","tempObj","topResources","tempGroupedData","totalRowSpan","y","dataSource","x","z","u","idField","createResourceTableRow","totalCollection","renderEmptyContent","tContent","tempData","tContentCollection","parentCollection","w","rowSpanCollection","filter","createDateHeaderElement","insertBefore","eTr","createTableRowElement","eTd","dTd","Agenda","agendaDates","virtualScrollTop","wireEvents","eventLoad","eventsData","generatedDates","eventCollection","processedData","filterEventsByResource","renderInitialContent","refreshEvent","refreshDate","generateOccurrence","emptyTBody","lastDate","contentChild","emptyTBody_1","minDate","isObject","appointmentFiltering","updateHeaderText","updateDateRange","updateHeaderItems","filterData","nTr","cTd","agendaScrolling","virtualScrolling","filterDate","scrollHeight","totalHeight","direction","topElement","getElementFromScrollerPosition","getDateFromElement","getPreviousNextDate","s","scrollToValue","selectedElements","getSelectedAppointments","focus","filterElement","liDetails","liCollection","a","showHeaderBar","getStartDateFromEndDate","dateStart","dateEnd","min","apply","max","maxDate","currentTarget","setProperties","changeView","onAgendaScrollUiUpdate","TimelineHeaderRow","groupByYear","result","dates_1","key","groupByMonth","dates_2","groupByWeek","dates_3","jsDate","tzOffsetDiff","ceil","generateSlots","colspan","cls","dateParser","tdDatas","keys","htmlCol","templateParser","viewTemplate","headerWrapper","hourSlots","lastLevelColspan","byYear","byMonth","byWeek","rows_1","TimelineViews","timelineAppointment","currDateTime","timeString","split","getLeftFromDateTime","generateTimeSlots","renderGn","timeSlotData","slots","dateSlots_1","tempTimeSlots","tempTimeSlots_1","slot","headerWrap","virtualScrollModule","transform","diffInDates","getWorkCellWidth","renderResourceHeaderIndent","getRowCount","renderVirtualTrack","getResourceTdData","resLevel","resSHr","resEHr","workDaysField","ActionBase","daysVariation","actionObj","X","Y","cellWidth","cellHeight","slotInterval","actionIndex","cloneElement","originalElement","excludeSelectors","navigationInterval","scrollInterval","scrollArgs","resizeEdges","right","bottom","scrollEdges","getChangedData","multiData","getOriginalElement","indexCol_1","cloneIndex_1","clone","getResourceData","saveChangedData","isMultiSelect","currentAction","activeEventData","eventsCollection","selectedData","eventsCollection_1","isSameResource","eveId","getEventMaxID","enableRecurrenceValidation","eventWindow","editOccurrenceValidation","startTimezone","endTimezone","timezoneConvert","crudModule","saveEvent","calculateIntervalTime","intervalTime","setMinutes","getContentAreaDimension","viewElement","trElement","enableAdaptiveUI","getResourceElements","leftOffset","rightOffset","viewDimension","getPageCoordinates","changedTouches","getIndex","contentElements","indexes","minIndex","maxIndex","groupElements","cellIndex","updateTimePosition","timeElement","wrapperClass","offsetValue","rightValue","leftValue","guid","isMorePopup","offsetParent","createCloneElement","cloneWrapper","outerHTML","cloneClassLists","parentElement","dragElement","document","eventDragArea","removeCloneElementClasses","elements","removeCloneElement","dynamicEle","dynamicEle_1","cloneEle","getCursorElement","pages","elementFromPoint","clientX","clientY","autoScroll","yIsScrollable","xIsScrollable","scrollWidth","yInBounds","xInBounds","tdCollections","scroll","scrollBy","autoScrollValidation","boundaryValidation","pageY","pageX","actionClass","updateScrollPosition","dragAndDropModule","updateDraggingDateTime","resizeModule","updateResizingDirection","timeDelay","updateOriginalElement","query","eventWrappers","getUpdatedEvent","JSON","parse","stringify","dynamicYearlyEventsRendering","isResize","appWidth","orientation","yearEvent","isSpannedEvent","isSpanned","appointmentElement","createAppointmentElement","backgroundColor","cellTd","appHeight","renderDynamicElement","isAppointment","appointmentWrapper","dynamicEventsRendering","dateRender","elementSelector","getSlotDates","eventWrappers_1","spannedEvents","splitEvent","spannedEvents_1","diffInDays","renderElement","EVENT_GAP","YearEvent","isResource","setDragArea","renderedEvents","yearViewEvents","removeCellHeight","timelineResourceEvents","timelineYearViewEvents","months","getMonths","months_1","month","getMonthStartDate","getMonthEndDate","workCell","cellHeader","eventHeight","wrapperCollection","eventWrapper","dayIndex","isSpannedCollection","wrapper_1","eventWrapper_1","rowTd","dayStart","dayEnd","dayEvents","sortByDateTime","_loop_1","this_1","updateSpannedEvents","overlapIndex","Index","availedHeight","moreIndicatorHeight","appArea","renderedAppCount","moreIndicatorCount","isRendered","MoreIndicator","moreIndex","renderMoreIndicator","isRowAutoHeight","renderEvent","updateCellHeight","isLeftRightResize","isLeft","isRight","isBottom","isTop","renderResourceEvent","eventDatas","createEventElement","moreIndicator","getMoreIndicatorElement","rowTr","moreIndicatorClick","record","isReadonly","getGroupIndexFromEvent","templateElement","locationEle","subjectEle","startTimeEle","endTimeEle","appointmentDetails","renderResizeHandler","eventStart","eventEnd","getOverlapEvents","appointments","appointmentsList","appointments_1","app","appStart","appEnd","timeCondition","monthsCount","firstMonthOfYear","MINUTES_PER_DAY","DragAndDrop","arguments","widthUptoCursorPoint","heightUptoCursorPoint","cursorPointIndex","isHeaderRows","isTimelineDayProcess","widthPerMinute","heightPerMinute","minDiff","isStepDragging","isMorePopupOpened","isAllDayDrag","updatedData","swagData","isAllDayTarget","targetTd","isCursorAhead","wireDragEvent","abort","isDragScroll","enableTapHold","enableTailMode","cursorAt","dragArea","dragStart","bind","drag","enableAutoScroll","helper","dragHelper","queryPositionInfo","dragPosition","setDragActionDefaultValues","allowMultiDrag","cursor","cloneRight","topValue","contentWrapRight","pointerEvents","top_1","cloneBottom","eventGuid","getEventByGuid","dragArgs","getSelectedData","navigation","dragEventArgs","dragObj","ej2_instances","intDestroy","timelineEventModule","verticalEvent","initializeValues","splitEvents","appWrap","appEle","calculateMinutesDiff","targetElement","updateNavigatingPosition","startEndHours","isAllowDrop","allowGroupEdit","byGroupID","crudObj","isCrudAction","sourceEvent","currentGroupIndex","targetEvent","currentDate_1","crtDate","viewNavigation","morePopupEventDragging","calculateTimelineTime","calculateVerticalDate","calculateVerticalTime","navigationWrapper","outWrapper","item","tarWrapper_1","elementHeight","getAllDayEventHeight","event_2","outerWrapperCls","targetWrapper","navigationType","pageXOffset","changeDate","eventDuration","dragEnd","appendCloneElement","swapDragging","pageYOffset","trCollections","colIndex","getEventWrapper","setDate","updateAllDayEvents","dynamicWrappers","dynamicWrappers_1","targetCellTime_1","eventObj_1","startTimeDiff","index_1","updateMultipleData","getDayIndex","updateEventHeight","startReferenceDate","endReferenceDate","timeDifference","endTimeDiff","differInDays","datesCount","indexGroup","dynamicIndex","isAllDayAppointment","spannedEventPlacement","filterQuery","eStart","eEnd","getHeight","getTopValue","renderSpannedEvents","timeDiff","allDayDifference","getRenderedDates","allDayElement","allDayElement_1","tagName","updateMultipleVerticalDate","setMonth","getOffsetValue","getColumnIndex","cursorDrag","leftVal","cloneIndex","cursorIndex","getCursorCurrentIndex","widthDiff","getWidthDiff","eventSrt","targetDate","dataIndex","events_2","getStartTime","getEndTime","getEventWidth","getPosition","calculateResourceGroupingPosition","viewEle","targetLeft","dateLength","currentIndex","trCollection","translateY","rowHeight","scrollY","cursorElement","dropSelectors","dropSelectors_1","selector","components","mounted","self","scheduledObject","$refs","ScheduleObj","$data","beforeDestroy","requestType","l","cellDoubleClick","console","log","scheduleObject","extends","Cell","propsData","ApptCell","provide","schedule"],"mappings":"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","file":"js/apptSchedule.e222fa7c.js","sourcesContent":["export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Schedule.vue?vue&type=style&index=0&id=2b700657&scoped=true&lang=css&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ApptCell.vue?vue&type=style&index=0&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),_c('Schedule')],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"text-align\":\"right\"}},[_c('a',{attrs:{\"href\":\"/#/appts/schedule\"}},[_c('i',{staticClass:\"fa-solid fa-calendar\"})]),_vm._v(\"  \\n \"),_c('a',{attrs:{\"href\":\"/#/appts\"}},[_c('i',{staticClass:\"fa-solid fa-list\"})])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',[_c('ejs-schedule',{ref:\"ScheduleObj\",attrs:{\"id\":\"Schedule\",\"width\":\"100%\",\"height\":\"800px\",\"showTimeIndicator\":\"true\",\"showWorkHours\":\"false\",\"workHours\":{ highlight: false },\"allowDragAndDrop\":true,\"allowResizing\":false,\"eventSettings\":_vm.eventSettings,\"selectedDate\":_vm.selectedDate,\"onActionBegin\":_vm.onActionBegin,\"cellTemplate\":_vm.cellTemplate,\"currentView\":\"Day\",\"group\":_vm.group},on:{\"dragStop\":_vm.dragStop,\"actionComplete\":_vm.actionComplete,\"popupOpen\":_vm.popupOpen}},[_c('e-views',[_c('e-view',{attrs:{\"option\":\"Day\"}}),_c('e-view',{attrs:{\"option\":\"Week\"}}),_c('e-view',{attrs:{\"option\":\"Month\"}}),_c('e-view',{attrs:{\"option\":\"Agenda\"}}),_c('e-view',{attrs:{\"option\":\"TimelineDay\"}}),_c('e-view',{attrs:{\"option\":\"TimelineWeek\"}}),_c('e-view',{attrs:{\"option\":\"TimelineMonth\"}})],1),_c('e-resources',[_c('e-resource',{attrs:{\"field\":\"ProviderId\",\"title\":\"ProviderName\",\"name\":\"Providers\",\"dataSource\":_vm.providerDataSource,\"textField\":\"ProviderName\",\"idField\":\"ProviderId\"}})],1)],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{class:_vm.cs,staticStyle:{\"padding\":\"5px\",\"height\":\"100%\",\"width\":\"100%\"},on:{\"dblclick\":_vm.eventClicked}},[_c('div',{staticStyle:{\"display\":\"grid\"}},[_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.data.customerName)+\" (\"+_vm._s(_vm._f(\"title\")(_vm.data.Status))+\")\\n \"),(_vm.data.balance > 0)?_c('span',{staticClass:\"balance\"},[_vm._v(\"Balance Due :\"+_vm._s(_vm._f(\"currency\")((_vm.data.balance / 100))))]):_vm._e()]),_c('div',[_vm._v(_vm._s(_vm.data.Subject))]),_c('small',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"moment\")(_vm.data.StartTime,\"h:mm:ss A\"))+\" -\\n \"+_vm._s(_vm._f(\"moment\")(_vm.data.EndTime,\"h:mm:ss A\"))+\"\\n \")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ApptCell.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ApptCell.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ApptCell.vue?vue&type=template&id=5754fdd3&\"\nimport script from \"./ApptCell.vue?vue&type=script&lang=js&\"\nexport * from \"./ApptCell.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ApptCell.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.data)?_c('div',{class:{ workingCell: _vm.isWorking },staticStyle:{\"height\":\"100%\",\"width\":\"100%\"}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cell.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cell.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Cell.vue?vue&type=template&id=5ff04990&scoped=true&\"\nimport script from \"./Cell.vue?vue&type=script&lang=js&\"\nexport * from \"./Cell.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Cell.vue?vue&type=style&index=0&id=5ff04990&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ff04990\",\n null\n \n)\n\nexport default component.exports","import { createElement, append, prepend, isNullOrUndefined, getValue, getDefaultDateObject, cldrData, addClass, setStyleAttribute, formatUnit, EventHandler, remove } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constant';\nimport * as event from '../base/constant';\nimport * as util from '../base/util';\n/**\n * view base\n */\nvar ViewBase = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {Schedule} parent Accepts the schedule instance\n */\n function ViewBase(parent) {\n this.parent = parent;\n }\n ViewBase.prototype.isTimelineView = function () {\n return this.parent.currentView.indexOf('Timeline') !== -1;\n };\n ViewBase.prototype.getContentRows = function () {\n return [];\n };\n ViewBase.prototype.refreshHeader = function () {\n // Method to refresh the date header\n };\n ViewBase.prototype.refreshResourceHeader = function () {\n remove(this.element.querySelector('tbody').lastElementChild.firstElementChild);\n var resTd = createElement('td');\n resTd.appendChild(this.parent.resourceBase.createResourceColumn());\n prepend([resTd], this.element.querySelector('tbody').lastElementChild);\n this.parent.notify(event.contentReady, {});\n };\n ViewBase.prototype.getDayName = function (date) {\n return this.parent.getDayNames('abbreviated')[date.getDay()];\n };\n ViewBase.prototype.getDate = function (date) {\n return this.parent.globalize.formatDate(date, { format: 'd', calendar: this.parent.getCalendarMode() });\n };\n ViewBase.prototype.getTime = function (date) {\n if (this.parent.isAdaptive) {\n if (this.parent.activeViewOptions.timeFormat === 'HH:mm' || this.parent.activeViewOptions.timeFormat === 'HH.mm') {\n return this.parent.globalize.formatDate(date, { format: 'H', calendar: this.parent.getCalendarMode() });\n }\n return this.parent.globalize.formatDate(date, { skeleton: 'h', calendar: this.parent.getCalendarMode() });\n }\n return this.parent.getTimeString(date);\n };\n ViewBase.prototype.getTimelineDate = function (date) {\n var text = this.parent.globalize.formatDate(date, { skeleton: 'MMMd', calendar: this.parent.getCalendarMode() }) + ', ' +\n this.parent.getDayNames('wide')[date.getDay()];\n return util.capitalizeFirstWord(text, 'multiple');\n };\n ViewBase.prototype.createEventTable = function (trCount) {\n var eventTable = createElement('div', { className: cls.EVENT_TABLE_CLASS });\n append(this.getEventRows(trCount), eventTable);\n return eventTable;\n };\n ViewBase.prototype.getEventRows = function (trCount) {\n var eventRows = [];\n var eventContainer;\n for (var row = 0; row < trCount; row++) {\n eventContainer = createElement('div', { className: cls.APPOINTMENT_CONTAINER_CLASS });\n if (this.parent.resourceBase && !this.parent.uiStateValues.isGroupAdaptive && this.parent.resourceBase.renderedResources) {\n eventContainer.setAttribute('data-group-index', this.parent.resourceBase.renderedResources[row].groupIndex.toString());\n }\n eventRows.push(eventContainer);\n }\n return eventRows;\n };\n ViewBase.prototype.collapseRows = function (wrap) {\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n this.parent.resourceBase.hideResourceRows(wrap.querySelector('tbody'));\n this.parent.resourceBase.hideResourceRows(wrap.querySelector('.' + cls.EVENT_TABLE_CLASS));\n }\n };\n ViewBase.prototype.createTableLayout = function (className) {\n var clsName = className || '';\n var table = createElement('table', { className: cls.SCHEDULE_TABLE_CLASS + ' ' + clsName, attrs: { role: 'table' } });\n var tbody = createElement('tbody');\n table.appendChild(tbody);\n return table;\n };\n ViewBase.prototype.createColGroup = function (table, lastRow) {\n var length = lastRow.length;\n if (lastRow[0] && lastRow[0].colSpan) {\n length = lastRow.map(function (value) { return value.colSpan; }).reduce(function (prev, next) { return prev + next; });\n }\n var colGroupEle = createElement('colgroup');\n for (var i = 0; i < length; i++) {\n colGroupEle.appendChild(createElement('col'));\n }\n prepend([colGroupEle], table);\n };\n ViewBase.prototype.getScrollXIndent = function (content) {\n return content.offsetHeight - content.clientHeight > 0 ? util.getScrollBarWidth() : 0;\n };\n ViewBase.prototype.scrollTopPanel = function (target) {\n this.getDatesHeaderElement().firstElementChild.scrollLeft = target.scrollLeft;\n };\n ViewBase.prototype.scrollHeaderLabels = function (target) {\n var headerTable = this.element.querySelector('.e-date-header-wrap table');\n var colWidth = headerTable.offsetWidth / headerTable.querySelectorAll('colgroup col').length;\n var applyLeft = function (headerCells, isRtl) {\n var currentCell;\n var tdLeft = 0;\n var colSpan = 0;\n var hiddenLeft = isRtl ? -(target.scrollLeft) : target.scrollLeft;\n for (var _i = 0, headerCells_2 = headerCells; _i < headerCells_2.length; _i++) {\n var cell = headerCells_2[_i];\n colSpan += parseInt(cell.getAttribute('colSpan'), 10);\n if (colSpan > Math.floor(hiddenLeft / colWidth)) {\n currentCell = cell;\n break;\n }\n tdLeft += cell.offsetWidth;\n }\n if (!isNullOrUndefined(currentCell)) {\n currentCell.children[0].style[isRtl ? 'right' : 'left'] = (hiddenLeft - tdLeft) + 'px';\n }\n };\n var classNames = ['.e-header-year-cell', '.e-header-month-cell', '.e-header-week-cell', '.e-header-cells'];\n for (var _i = 0, classNames_1 = classNames; _i < classNames_1.length; _i++) {\n var className = classNames_1[_i];\n var headerCells = [].slice.call(this.element.querySelectorAll(className));\n if (headerCells.length > 0) {\n for (var _a = 0, headerCells_1 = headerCells; _a < headerCells_1.length; _a++) {\n var element = headerCells_1[_a];\n element.children[0].style[this.parent.enableRtl ? 'right' : 'left'] = '';\n }\n applyLeft(headerCells, this.parent.enableRtl);\n }\n }\n };\n ViewBase.prototype.addAttributes = function (td, element) {\n if (td.template) {\n append(td.template, element);\n }\n if (td.colSpan) {\n element.setAttribute('colspan', td.colSpan.toString());\n }\n if (td.className) {\n addClass([element], td.className);\n }\n };\n ViewBase.prototype.getHeaderBarHeight = function () {\n var headerBarHeight = 2;\n if (this.parent.headerModule) {\n headerBarHeight += util.getOuterHeight(this.parent.headerModule.getHeaderElement());\n }\n if (this.parent.uiStateValues.isGroupAdaptive) {\n var resHeader = this.parent.element.querySelector('.' + cls.RESOURCE_HEADER_TOOLBAR);\n if (resHeader) {\n headerBarHeight += resHeader.offsetHeight;\n }\n }\n return headerBarHeight;\n };\n ViewBase.prototype.renderPanel = function (type) {\n if (type === cls.PREVIOUS_PANEL_CLASS) {\n prepend([this.element], this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS));\n }\n else {\n this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS).appendChild(this.element);\n }\n };\n ViewBase.prototype.setPanel = function (panel) {\n this.element = panel;\n };\n ViewBase.prototype.getPanel = function () {\n return this.element;\n };\n ViewBase.prototype.getDatesHeaderElement = function () {\n return this.element.querySelector('.' + cls.DATE_HEADER_CONTAINER_CLASS);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ViewBase.prototype.getDateSlots = function (renderDates, workDays) {\n return []; // Here getDateSlots only need in vertical and month views\n };\n ViewBase.prototype.generateColumnLevels = function () {\n return []; // Here generateColumnLevels only need in vertical and month views\n };\n ViewBase.prototype.getColumnLevels = function () {\n return this.colLevels;\n };\n ViewBase.prototype.highlightCurrentTime = function () {\n // Here showTimeIndicator functionalities\n };\n ViewBase.prototype.startDate = function () {\n return this.renderDates[0];\n };\n ViewBase.prototype.endDate = function () {\n return util.addDays(this.renderDates[this.renderDates.length - 1], 1);\n };\n ViewBase.prototype.getStartHour = function () {\n var startHour = this.parent.getStartEndTime(this.parent.activeViewOptions.startHour);\n if (isNullOrUndefined(startHour)) {\n startHour = new Date(2000, 0, 0, 0);\n }\n return startHour;\n };\n ViewBase.prototype.getEndHour = function () {\n var endHour = this.parent.getStartEndTime(this.parent.activeViewOptions.endHour);\n if (isNullOrUndefined(endHour)) {\n endHour = new Date(2000, 0, 0, 0);\n }\n return endHour;\n };\n ViewBase.prototype.isCurrentDate = function (date) {\n return date.setHours(0, 0, 0, 0) === this.parent.getCurrentTime().setHours(0, 0, 0, 0);\n };\n ViewBase.prototype.isCurrentMonth = function (date) {\n if (this.parent.activeViewOptions.displayDate || this.parent.activeViewOptions.numberOfWeeks > 0) {\n return this.parent.activeView.getStartDate().getTime() <= this.parent.getCurrentTime().getTime() &&\n this.parent.activeView.getEndDate().getTime() >= this.parent.getCurrentTime().getTime();\n }\n return date.getFullYear() ===\n this.parent.getCurrentTime().getFullYear() && date.getMonth() === this.parent.getCurrentTime().getMonth();\n };\n ViewBase.prototype.isWorkDay = function (date, workDays) {\n if (workDays === void 0) { workDays = this.parent.activeViewOptions.workDays; }\n if (workDays.indexOf(date.getDay()) >= 0) {\n return true;\n }\n return false;\n };\n ViewBase.prototype.isWorkHour = function (date, startHour, endHour, workDays) {\n if (isNullOrUndefined(startHour) || isNullOrUndefined(endHour)) {\n return false;\n }\n startHour.setMilliseconds(0);\n endHour.setMilliseconds(0);\n return !(util.getDateInMs(date) < util.getDateInMs(startHour) || util.getDateInMs(date) >= util.getDateInMs(endHour) ||\n !this.isWorkDay(date, workDays));\n };\n ViewBase.prototype.getRenderDates = function (workDays) {\n var renderDates = [];\n // Due to same code for vertical and time line, week & work week views, if condition has used\n if (this.parent.currentView === 'Week' || this.parent.currentView === 'TimelineWeek') {\n var selectedDate = util.resetTime(this.parent.selectedDate);\n var start = util.getWeekFirstDate(selectedDate, this.parent.activeViewOptions.firstDayOfWeek);\n for (var i = 0, length_1 = util.WEEK_LENGTH * this.parent.activeViewOptions.interval; i < length_1; i++) {\n if (this.parent.activeViewOptions.showWeekend) {\n renderDates.push(start);\n }\n else {\n if (this.isWorkDay(start, workDays)) {\n renderDates.push(start);\n }\n }\n start = util.addDays(start, 1);\n }\n }\n else if (this.parent.currentView === 'WorkWeek' || this.parent.currentView === 'TimelineWorkWeek') {\n var start = util.getWeekFirstDate(util.resetTime(this.parent.selectedDate), this.parent.activeViewOptions.firstDayOfWeek);\n for (var i = 0, length_2 = util.WEEK_LENGTH * this.parent.activeViewOptions.interval; i < length_2; i++) {\n if (this.isWorkDay(start, workDays)) {\n renderDates.push(start);\n }\n start = util.addDays(start, 1);\n }\n }\n else {\n var dayCount = this.parent.currentView === 'Agenda' ? this.parent.agendaDaysCount :\n this.parent.activeViewOptions.interval;\n var start = util.resetTime(this.parent.selectedDate);\n do {\n if (this.parent.activeViewOptions.showWeekend) {\n renderDates.push(start);\n }\n else {\n if (this.isWorkDay(start, workDays)) {\n renderDates.push(start);\n }\n }\n start = util.addDays(start, 1);\n } while (dayCount !== renderDates.length);\n }\n if (!workDays) {\n this.renderDates = renderDates;\n }\n if (this.parent.headerModule) {\n this.parent.headerModule.previousNextIconHandler();\n }\n return renderDates;\n };\n ViewBase.prototype.getNextPreviousDate = function (type) {\n if (this.parent.currentView === 'Day' || this.parent.currentView === 'TimelineDay') {\n if (this.parent.activeViewOptions.showWeekend) {\n var daysCount = this.parent.activeViewOptions.interval;\n return util.addDays(this.parent.selectedDate, type === 'next' ? daysCount : -daysCount);\n }\n else {\n var date = void 0;\n if (type === 'next') {\n date = util.addDays(this.renderDates.slice(-1)[0], 1);\n while (!this.isWorkDay(date)) {\n date = util.addDays(date, 1);\n }\n }\n else {\n date = util.addDays(this.renderDates[0], -1);\n var count = 0;\n do {\n if (this.isWorkDay(date)) {\n count += 1;\n }\n if (this.parent.activeViewOptions.interval !== count) {\n date = util.addDays(date, -1);\n }\n } while (this.parent.activeViewOptions.interval !== count);\n }\n return date;\n }\n }\n var weekLength = type === 'next' ? util.WEEK_LENGTH : -util.WEEK_LENGTH;\n return util.addDays(this.parent.selectedDate, weekLength * this.parent.activeViewOptions.interval);\n };\n ViewBase.prototype.getLabelText = function (view) {\n var viewStr = view.charAt(0).toLowerCase() + view.substring(1);\n return this.parent.localeObj.getConstant(viewStr) + ' of ' + util.capitalizeFirstWord(this.parent.globalize.formatDate(this.parent.selectedDate, { skeleton: 'long', calendar: this.parent.getCalendarMode() }), 'single');\n };\n ViewBase.prototype.getDateRangeText = function () {\n if (this.parent.isAdaptive) {\n var formatDate = (this.parent.activeViewOptions.dateFormat) ? this.parent.activeViewOptions.dateFormat : 'MMMM y';\n return util.capitalizeFirstWord(this.parent.globalize.formatDate(this.parent.selectedDate, { format: formatDate, calendar: this.parent.getCalendarMode() }), 'single');\n }\n return this.formatDateRange(this.renderDates[0], this.renderDates[this.renderDates.length - 1]);\n };\n ViewBase.prototype.formatDateRange = function (startDate, endDate) {\n var globalize = this.parent.globalize;\n var mode = this.parent.getCalendarMode();\n if (startDate === endDate) {\n endDate = null;\n }\n if (!isNullOrUndefined(this.parent.activeViewOptions.dateFormat)) {\n var text = '';\n if (!endDate) {\n text = globalize.formatDate(startDate, { format: this.parent.activeViewOptions.dateFormat, calendar: mode });\n return util.capitalizeFirstWord(text, 'multiple');\n }\n text = (globalize.formatDate(startDate, { format: this.parent.activeViewOptions.dateFormat, calendar: mode }) +\n ' - ' + globalize.formatDate(endDate, { format: this.parent.activeViewOptions.dateFormat, calendar: mode }));\n return util.capitalizeFirstWord(text, 'multiple');\n }\n var formattedStr;\n var longDateFormat;\n if (this.parent.locale === 'en' || this.parent.locale === 'en-US') {\n longDateFormat = getValue('dateFormats.long', getDefaultDateObject(mode));\n }\n else {\n longDateFormat = getValue('main.' + '' + this.parent.locale + '.dates.calendars.' + mode + '.dateFormats.long', cldrData);\n }\n if (!endDate) {\n return util.capitalizeFirstWord(globalize.formatDate(startDate, { format: longDateFormat, calendar: mode }), 'single');\n }\n var dateFormat = longDateFormat.trim().toLocaleLowerCase();\n if (dateFormat.substr(0, 1) === 'd') {\n if (startDate.getFullYear() === endDate.getFullYear()) {\n if (startDate.getMonth() === endDate.getMonth()) {\n formattedStr = globalize.formatDate(startDate, { format: 'dd', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'dd MMMM yyyy', calendar: mode });\n }\n else {\n formattedStr = globalize.formatDate(startDate, { format: 'dd MMM', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'dd MMM yyyy', calendar: mode });\n }\n }\n else {\n formattedStr = globalize.formatDate(startDate, { format: 'dd MMM yyyy', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'dd MMM yyyy', calendar: mode });\n }\n }\n else if (dateFormat.substr(0, 1) === 'm') {\n if (startDate.getFullYear() === endDate.getFullYear()) {\n if (startDate.getMonth() === endDate.getMonth()) {\n formattedStr = globalize.formatDate(startDate, { format: 'MMMM dd', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'dd, yyyy', calendar: mode });\n }\n else {\n formattedStr = globalize.formatDate(startDate, { format: 'MMM dd', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'MMM dd, yyyy', calendar: mode });\n }\n }\n else {\n formattedStr = globalize.\n formatDate(startDate, { format: 'MMM dd, yyyy', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'MMM dd, yyyy', calendar: mode });\n }\n }\n else {\n formattedStr = globalize.formatDate(startDate, { format: longDateFormat, calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: longDateFormat, calendar: mode });\n }\n return util.capitalizeFirstWord(formattedStr, 'multiple');\n };\n ViewBase.prototype.getMobileDateElement = function (date, className) {\n var wrap = createElement('div', {\n className: className,\n innerHTML: '
' + this.parent.globalize.formatDate(date, { format: 'd', calendar: this.parent.getCalendarMode() }) + '
' + '
' +\n util.capitalizeFirstWord(this.parent.globalize.formatDate(date, { format: 'E', calendar: this.parent.getCalendarMode() }), 'single') + '
'\n });\n return wrap;\n };\n ViewBase.prototype.setResourceHeaderContent = function (tdElement, tdData, className) {\n if (className === void 0) { className = cls.TEXT_ELLIPSIS; }\n if (this.parent.activeViewOptions.resourceHeaderTemplate) {\n var data = { resource: tdData.resource, resourceData: tdData.resourceData };\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.resourceHeaderTemplateName;\n var templateId = scheduleId + viewName + 'resourceHeaderTemplate';\n var quickTemplate = [].slice.call(this.parent.getResourceHeaderTemplate()(data, this.parent, 'resourceHeaderTemplate', templateId, false));\n append(quickTemplate, tdElement);\n }\n else {\n tdElement.appendChild(createElement('div', {\n className: className, innerHTML: tdData.resourceData[tdData.resource.textField]\n }));\n }\n };\n ViewBase.prototype.renderResourceMobileLayout = function () {\n if (this.parent.resourceBase.lastResourceLevel && this.parent.resourceBase.lastResourceLevel.length <= 0) {\n return;\n }\n this.parent.resourceBase.renderResourceHeader();\n this.parent.resourceBase.renderResourceTree();\n };\n ViewBase.prototype.addAutoHeightClass = function (element) {\n if (!this.parent.uiStateValues.isGroupAdaptive && this.parent.rowAutoHeight && this.isTimelineView()\n && this.parent.activeViewOptions.group.resources.length > 0) {\n addClass([element], cls.AUTO_HEIGHT);\n }\n };\n ViewBase.prototype.getColElements = function () {\n return [].slice.call(this.element.querySelectorAll('.' + cls.CONTENT_WRAP_CLASS + ' col, .' + cls.DATE_HEADER_WRAP_CLASS + ' col'));\n };\n ViewBase.prototype.setColWidth = function (content) {\n if (this.isTimelineView()) {\n var colElements = this.getColElements();\n var contentBody = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS + ' tbody');\n var colWidth_1 = (contentBody.getBoundingClientRect().width / (colElements.length / 2));\n colElements.forEach(function (col) { return setStyleAttribute(col, { 'width': formatUnit(colWidth_1) }); });\n if (content.offsetHeight !== content.clientHeight) {\n var resourceColumn = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);\n if (!isNullOrUndefined(resourceColumn)) {\n setStyleAttribute(resourceColumn, { 'height': formatUnit(content.clientHeight) });\n }\n }\n var cssClass = \".\" + cls.HEADER_CELLS_CLASS + \",.\" + cls.TIME_SLOT_CLASS + \",.\" + cls.HEADER_WEEK_CELLS_CLASS + \",.\" + cls.HEADER_MONTH_CELLS_CLASS + \",.\" + cls.HEADER_YEAR_CELLS_CLASS;\n var headerCellElements = [].slice.call(this.element.querySelectorAll(cssClass));\n headerCellElements.forEach(function (ele) {\n var colSpan = isNullOrUndefined(ele.getAttribute('colspan')) ? '1' : ele.getAttribute('colspan');\n var headerCellColSpan = parseInt(colSpan, 10);\n setStyleAttribute(ele, { 'width': formatUnit(colWidth_1 * headerCellColSpan) });\n });\n }\n };\n ViewBase.prototype.resetColWidth = function () {\n var colElements = this.getColElements();\n for (var _i = 0, colElements_1 = colElements; _i < colElements_1.length; _i++) {\n var col = colElements_1[_i];\n col.style.width = '';\n }\n };\n ViewBase.prototype.getContentAreaElement = function () {\n return this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n };\n ViewBase.prototype.wireExpandCollapseIconEvents = function () {\n if (this.parent.resourceBase && this.parent.resourceBase.resourceCollection.length > 1) {\n var treeIcons = [].slice.call(this.element.querySelectorAll('.' + cls.RESOURCE_TREE_ICON_CLASS));\n for (var _i = 0, treeIcons_1 = treeIcons; _i < treeIcons_1.length; _i++) {\n var icon = treeIcons_1[_i];\n EventHandler.clearEvents(icon);\n EventHandler.add(icon, 'click', this.parent.resourceBase.onTreeIconClick, this.parent.resourceBase);\n }\n }\n };\n ViewBase.prototype.scrollToDate = function (scrollDate) {\n if (['Month', 'TimelineMonth'].indexOf(this.parent.currentView) === -1 || isNullOrUndefined(scrollDate)) {\n return;\n }\n var scrollWrap = this.getContentAreaElement();\n var tdDate = new Date(util.resetTime(new Date(+scrollDate)).getTime()).getTime();\n var dateElement = scrollWrap.querySelector(\".\" + cls.WORK_CELLS_CLASS + \"[data-date=\\\"\" + tdDate + \"\\\"]\");\n if (this.parent.currentView === 'Month' && dateElement) {\n scrollWrap.scrollTop = dateElement.offsetTop;\n }\n if (this.parent.currentView === 'TimelineMonth' && dateElement) {\n if (!this.parent.enableRtl) {\n scrollWrap.scrollLeft = dateElement.offsetLeft;\n }\n else {\n scrollWrap.scrollLeft = -(this.parent.getContentTable().offsetWidth - dateElement.offsetLeft - dateElement.offsetWidth);\n }\n }\n };\n ViewBase.prototype.setPersistence = function () {\n if (this.parent.enablePersistence) {\n var contentWrap = this.element.querySelector('.e-content-wrap');\n if (!isNullOrUndefined(contentWrap)) {\n this.parent.scrollLeft = contentWrap.scrollLeft;\n this.parent.scrollTop = contentWrap.scrollTop;\n }\n }\n };\n ViewBase.prototype.retainScrollPosition = function () {\n if (this.parent.enablePersistence) {\n var conWrap = this.parent.element.querySelector('.e-content-wrap');\n if (!isNullOrUndefined(conWrap) && !isNullOrUndefined(this.parent.scrollLeft) && !isNullOrUndefined(this.parent.scrollTop)) {\n conWrap.scrollTop = this.parent.scrollTop;\n conWrap.scrollLeft = this.parent.scrollLeft;\n }\n }\n };\n ViewBase.prototype.getViewStartDate = function () {\n var startDate = this.renderDates[0];\n if (this.parent.activeViewOptions.group.resources.length > 0 && this.parent.resourceBase.lastResourceLevel.length > 0) {\n startDate = this.parent.resourceBase.getResourceRenderDates()[0];\n }\n return startDate;\n };\n ViewBase.prototype.getViewEndDate = function () {\n var endDate = util.addDays(this.renderDates[this.renderDates.length - 1], 1);\n if (this.parent.activeViewOptions.group.resources.length > 0 && this.parent.resourceBase.lastResourceLevel.length > 0) {\n endDate = util.addDays(this.parent.resourceBase.getResourceRenderDates().slice(-1)[0], 1);\n }\n return endDate;\n };\n ViewBase.prototype.destroy = function () {\n if (this.element && this.element.parentNode) {\n remove(this.element);\n }\n this.element = null;\n this.renderDates = null;\n this.colLevels = null;\n };\n return ViewBase;\n}());\nexport { ViewBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend, EventHandler, formatUnit, Browser } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, removeClass, append, prepend } from '@syncfusion/ej2-base';\nimport { ViewBase } from './view-base';\nimport { VerticalEvent } from '../event-renderer/vertical-view';\nimport { MonthEvent } from '../event-renderer/month';\nimport * as util from '../base/util';\nimport * as event from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * vertical view\n */\nvar VerticalView = /** @class */ (function (_super) {\n __extends(VerticalView, _super);\n function VerticalView(parent) {\n var _this = _super.call(this, parent) || this;\n _this.viewClass = 'e-day-view';\n _this.isInverseTableSelect = true;\n _this.baseCssClass = 'e-vertical-view';\n _this.appointment = null;\n return _this;\n }\n VerticalView.prototype.getModuleName = function () {\n return 'verticalView';\n };\n VerticalView.prototype.addEventListener = function () {\n this.parent.on(event.scrollUiUpdate, this.scrollUiUpdate, this);\n this.parent.on(event.dataReady, this.renderEvents, this);\n };\n VerticalView.prototype.removeEventListener = function () {\n if (this.parent) {\n this.parent.off(event.scrollUiUpdate, this.scrollUiUpdate);\n this.parent.off(event.dataReady, this.renderEvents);\n }\n };\n VerticalView.prototype.renderEvents = function () {\n this.appointment = this.parent.activeViewOptions.timeScale.enable ?\n new VerticalEvent(this.parent) : new MonthEvent(this.parent);\n this.appointment.renderAppointments();\n this.parent.notify(event.eventsLoaded, {});\n };\n VerticalView.prototype.onContentScroll = function (e) {\n this.parent.removeNewEventElement();\n var target = e.target;\n this.parent.notify(event.virtualScroll, e);\n this.scrollLeftPanel(target);\n this.scrollTopPanel(target);\n if (!this.parent.isAdaptive) {\n this.parent.uiStateValues.top = target.scrollTop;\n }\n this.parent.uiStateValues.left = target.scrollLeft;\n if (!isNullOrUndefined(this.parent.quickPopup)) {\n this.parent.quickPopup.quickPopupHide();\n }\n this.setPersistence();\n };\n VerticalView.prototype.onAdaptiveMove = function (e) {\n if (this.parent.uiStateValues.action) {\n e.preventDefault();\n }\n };\n VerticalView.prototype.onAdaptiveScroll = function (e) {\n if (this.parent && !this.parent.isDestroyed) {\n this.parent.removeNewEventElement();\n this.parent.uiStateValues.top = e.target.scrollTop;\n }\n };\n VerticalView.prototype.scrollLeftPanel = function (target) {\n var leftPanel = this.getLeftPanelElement();\n if (!isNullOrUndefined(leftPanel)) {\n leftPanel.scrollTop = target.scrollTop;\n }\n };\n VerticalView.prototype.scrollUiUpdate = function (args) {\n if (!this.parent) {\n return;\n }\n var dateHeader = this.parent.element.querySelector('.' + cls.DATE_HEADER_WRAP_CLASS);\n var headerBarHeight = this.getHeaderBarHeight();\n var timeCells = this.getLeftPanelElement();\n var content = this.getScrollableElement();\n var header = this.getDatesHeaderElement();\n var scrollerHeight = this.parent.element.offsetHeight - headerBarHeight - header.offsetHeight;\n this.setColWidth(content);\n this.setContentHeight(content, timeCells, scrollerHeight);\n var scrollBarWidth = util.getScrollBarWidth();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.firstElementChild.style[args.cssProperties.rtlBorder] = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.style[args.cssProperties.rtlPadding] = '';\n var isDateHeaderScroll = this.parent.enableAllDayScroll ? !((content.offsetWidth - content.clientWidth) <=\n (dateHeader.offsetWidth - dateHeader.clientWidth) && dateHeader.classList.contains('e-all-day-scroll')) : true;\n if (content.offsetWidth - content.clientWidth > 0 && isDateHeaderScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.firstElementChild.style[args.cssProperties.border] = scrollBarWidth > 0 ? '1px' : '0px';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.style[args.cssProperties.padding] = scrollBarWidth > 0 ? scrollBarWidth - 1 + 'px' : '0px';\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.firstElementChild.style[args.cssProperties.border] = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.style[args.cssProperties.padding] = '';\n }\n if (!args.isPreventScrollUpdate) {\n if (this.parent.uiStateValues.isInitial) {\n this.scrollToWorkHour();\n this.parent.uiStateValues.isInitial = false;\n }\n else {\n if (timeCells) {\n timeCells.scrollTop = this.parent.uiStateValues.top;\n }\n content.scrollTop = this.parent.uiStateValues.top;\n content.scrollLeft = this.parent.uiStateValues.left;\n }\n }\n if (this.parent.activeViewOptions.timeScale.enable) {\n this.highlightCurrentTime();\n }\n this.retainScrollPosition();\n };\n VerticalView.prototype.setContentHeight = function (element, leftPanelElement, height) {\n if (this.parent.isAdaptive && !this.isTimelineView()) {\n element.style.height = (this.parent.height === 'auto') ? 'auto' : formatUnit(height);\n }\n else {\n if (!isNullOrUndefined(leftPanelElement)) {\n leftPanelElement.style.height = (this.parent.height === 'auto') ? 'auto'\n : formatUnit(height - this.getScrollXIndent(element));\n }\n element.style.height = (this.parent.height === 'auto') ? 'auto' : formatUnit(height);\n }\n };\n VerticalView.prototype.scrollToWorkHour = function () {\n if (this.parent.workHours.highlight) {\n var firstWorkHourCell = this.element.querySelector('.' + cls.WORK_HOURS_CLASS);\n if (firstWorkHourCell) {\n this.getScrollableElement().scrollTop = firstWorkHourCell.offsetTop;\n this.parent.uiStateValues.top = firstWorkHourCell.offsetTop;\n this.parent.uiStateValues.left = 0;\n }\n }\n };\n VerticalView.prototype.scrollToHour = function (hour, scrollDate) {\n var date = this.parent.getStartEndTime(hour);\n if (isNullOrUndefined(date) || !isNullOrUndefined(scrollDate)) {\n return;\n }\n this.getScrollableElement().scrollTop = this.getTopFromDateTime(date);\n };\n VerticalView.prototype.generateColumnLevels = function () {\n var level = this.getDateSlots(this.renderDates, this.parent.activeViewOptions.workDays);\n var columnLevels = [];\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n columnLevels = this.parent.resourceBase.generateResourceLevels(level);\n if (this.parent.uiStateValues.isGroupAdaptive && this.parent.resourceBase.lastResourceLevel.length > 0) {\n var resourceLevel = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex];\n var resStartHour = resourceLevel.resourceData[resourceLevel.resource.startHourField];\n var resEndHour = resourceLevel.resourceData[resourceLevel.resource.endHourField];\n var dateSlots = this.getDateSlots(resourceLevel.renderDates, resourceLevel.workDays, resStartHour, resEndHour);\n columnLevels = [dateSlots];\n }\n }\n else {\n columnLevels.push(level);\n }\n this.colLevels = columnLevels;\n return columnLevels;\n };\n // eslint-disable-next-line max-len\n VerticalView.prototype.getDateSlots = function (renderDates, workDays, workStartHour, workEndHour) {\n if (workStartHour === void 0) { workStartHour = this.parent.workHours.start; }\n if (workEndHour === void 0) { workEndHour = this.parent.workHours.end; }\n var dateCol = [];\n var start = this.parent.getStartEndTime(workStartHour);\n var end = this.parent.getStartEndTime(workEndHour);\n for (var _i = 0, renderDates_1 = renderDates; _i < renderDates_1.length; _i++) {\n var col = renderDates_1[_i];\n var classList = [cls.HEADER_CELLS_CLASS];\n if (this.isCurrentDate(col)) {\n classList.push(cls.CURRENT_DAY_CLASS);\n }\n dateCol.push({\n date: col, type: 'dateHeader', className: classList, colSpan: 1,\n workDays: workDays, startHour: new Date(+start), endHour: new Date(+end)\n });\n }\n return dateCol;\n };\n VerticalView.prototype.isWorkHourRange = function (date) {\n return (this.getStartHour().getTime() <= date.getTime()) && (this.getEndHour().getTime() >= date.getTime());\n };\n VerticalView.prototype.highlightCurrentTime = function () {\n var _this = this;\n if (this.parent.activeViewOptions.headerRows.length > 0 &&\n this.parent.activeViewOptions.headerRows.slice(-1)[0].option !== 'Hour') {\n return;\n }\n if (this.parent.showTimeIndicator && this.isWorkHourRange(this.parent.getCurrentTime())) {\n var currentDateIndex = this.getCurrentTimeIndicatorIndex();\n if (currentDateIndex.length > 0) {\n var workCells = [].slice.call(this.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS));\n if (workCells.length > 0) {\n this.changeCurrentTimePosition();\n }\n if (isNullOrUndefined(this.currentTimeIndicatorTimer)) {\n var currentDate = this.parent.getCurrentTime();\n var interval = util.MS_PER_MINUTE - ((currentDate.getSeconds() * 1000) + currentDate.getMilliseconds());\n if (interval <= (util.MS_PER_MINUTE - 1000)) {\n window.setTimeout(function () {\n if (!isNullOrUndefined(_this.currentTimeIndicatorTimer)) {\n _this.clearCurrentTimeIndicatorTimer();\n _this.changeCurrentTimePosition();\n _this.updateCurrentTimeIndicatorTimer();\n }\n }, interval);\n }\n this.updateCurrentTimeIndicatorTimer();\n }\n }\n else {\n this.clearCurrentTimeIndicatorTimer();\n }\n }\n else {\n this.clearCurrentTimeIndicatorTimer();\n }\n };\n VerticalView.prototype.getCurrentTimeIndicatorIndex = function () {\n var currentDateIndex = [];\n if (!isNullOrUndefined(this.parent.resourceBase) && (this.parent.activeViewOptions.group.resources.length > 0) &&\n !this.parent.uiStateValues.isGroupAdaptive) {\n var count = 0;\n for (var _i = 0, _a = this.parent.resourceBase.lastResourceLevel; _i < _a.length; _i++) {\n var resource = _a[_i];\n var index = this.parent.getIndexOfDate(resource.renderDates, util.resetTime(this.parent.getCurrentTime()));\n if (index >= 0) {\n var resIndex = this.parent.activeViewOptions.group.byDate ?\n (this.parent.resourceBase.lastResourceLevel.length * index) + count : count + index;\n currentDateIndex.push(resIndex);\n }\n count += this.parent.activeViewOptions.group.byDate ? 1 : resource.renderDates.length;\n }\n }\n else {\n var renderDates = (this.parent.uiStateValues.isGroupAdaptive && this.parent.resourceBase.lastResourceLevel.length > 0)\n ? this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex].renderDates : this.renderDates;\n var index = this.parent.getIndexOfDate(renderDates, util.resetTime(this.parent.getCurrentTime()));\n if (index >= 0) {\n currentDateIndex.push(index);\n }\n }\n return currentDateIndex;\n };\n VerticalView.prototype.clearCurrentTimeIndicatorTimer = function () {\n if (!isNullOrUndefined(this.currentTimeIndicatorTimer)) {\n window.clearInterval(this.currentTimeIndicatorTimer);\n this.currentTimeIndicatorTimer = null;\n this.removeCurrentTimeIndicatorElements();\n }\n };\n VerticalView.prototype.updateCurrentTimeIndicatorTimer = function () {\n var _this = this;\n this.currentTimeIndicatorTimer = window.setInterval(function () { _this.changeCurrentTimePosition(); }, util.MS_PER_MINUTE);\n };\n VerticalView.prototype.removeCurrentTimeIndicatorElements = function () {\n var queryString = '.' + cls.PREVIOUS_TIMELINE_CLASS + ',.' + cls.CURRENT_TIMELINE_CLASS + ',.' + cls.CURRENT_TIME_CLASS;\n var timeIndicator = [].slice.call(this.element.querySelectorAll(queryString));\n for (var _i = 0, timeIndicator_1 = timeIndicator; _i < timeIndicator_1.length; _i++) {\n var indicator = timeIndicator_1[_i];\n remove(indicator);\n }\n };\n VerticalView.prototype.changeCurrentTimePosition = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.removeCurrentTimeIndicatorElements();\n var currentDateIndex = this.getCurrentTimeIndicatorIndex();\n var firstRow = this.parent.getContentTable().rows[0];\n var top = this.getTopFromDateTime(this.parent.getCurrentTime());\n var topInPx = formatUnit(top);\n var rowIndex = Math.floor(top / firstRow.cells[0].offsetHeight);\n var timeCellsWrap = this.getLeftPanelElement();\n var timeTrs = [].slice.call(timeCellsWrap.querySelectorAll('tr'));\n if (isNullOrUndefined(rowIndex) || isNaN(rowIndex) || rowIndex === timeTrs.length) {\n return;\n }\n var curTimeWrap = [].slice.call(this.element.querySelectorAll('.' + cls.TIMELINE_WRAPPER_CLASS));\n for (var i = 0, length_1 = currentDateIndex[0]; i < length_1; i++) {\n curTimeWrap[i].appendChild(createElement('div', { className: cls.PREVIOUS_TIMELINE_CLASS, styles: 'top:' + topInPx }));\n }\n for (var _i = 0, currentDateIndex_1 = currentDateIndex; _i < currentDateIndex_1.length; _i++) {\n var day = currentDateIndex_1[_i];\n curTimeWrap[day].appendChild(createElement('div', { className: cls.CURRENT_TIMELINE_CLASS, styles: 'top:' + topInPx }));\n }\n var currentTimeEle = createElement('div', {\n innerHTML: this.parent.getTimeString(this.parent.getCurrentTime()),\n className: cls.CURRENT_TIME_CLASS,\n styles: 'top:' + topInPx\n });\n if (rowIndex <= timeTrs.length) {\n removeClass(timeCellsWrap.querySelectorAll('.' + cls.HIDE_CHILDS_CLASS), cls.HIDE_CHILDS_CLASS);\n if (timeTrs[rowIndex]) {\n addClass([timeTrs[rowIndex].lastElementChild], cls.HIDE_CHILDS_CLASS);\n }\n prepend([currentTimeEle], timeCellsWrap);\n currentTimeEle.style.top = formatUnit(currentTimeEle.offsetTop - (currentTimeEle.offsetHeight / 2));\n }\n };\n VerticalView.prototype.getTopFromDateTime = function (date) {\n var startHour = this.getStartHour();\n var diffInMinutes = ((date.getHours() - startHour.getHours()) * 60) + (date.getMinutes() - startHour.getMinutes());\n return (diffInMinutes * this.getWorkCellHeight() * this.parent.activeViewOptions.timeScale.slotCount) /\n this.parent.activeViewOptions.timeScale.interval;\n };\n VerticalView.prototype.getWorkCellHeight = function () {\n return parseFloat(this.element.querySelector('.' + cls.WORK_CELLS_CLASS).getBoundingClientRect().height.toFixed(2));\n };\n VerticalView.prototype.getTdContent = function (date, type, groupIndex) {\n var cntEle;\n var wrapper = createElement('div');\n var templateName = '';\n var templateId = this.parent.element.id + '_';\n switch (type) {\n case 'dateHeader':\n if (this.parent.activeViewOptions.dateHeaderTemplate) {\n templateName = 'dateHeaderTemplate';\n var args = { date: date, type: type };\n var viewName = this.parent.activeViewOptions.dateHeaderTemplateName;\n cntEle = [].slice.call(this.parent.getDateHeaderTemplate()(args, this.parent, templateName, templateId + viewName + templateName, false));\n }\n else {\n wrapper.innerHTML = this.parent.activeView.isTimelineView() ?\n \"\" + this.getTimelineDate(date) + \"\" :\n \"
\" + util.capitalizeFirstWord(this.getDayName(date), 'single') + \"
\" +\n (\"
\" + this.getDate(date) + \"
\");\n cntEle = [].slice.call(wrapper.childNodes);\n }\n break;\n case 'majorSlot':\n if (this.parent.activeViewOptions.timeScale.majorSlotTemplate) {\n templateName = 'majorSlotTemplate';\n var args = { date: date, type: type };\n cntEle = [].slice.call(this.parent.getMajorSlotTemplate()(args, this.parent, templateName, templateId + templateName, false));\n }\n else {\n wrapper.innerHTML = \"\" + this.getTime(date) + \"\";\n cntEle = [].slice.call(wrapper.childNodes);\n }\n break;\n case 'minorSlot':\n if (this.parent.activeViewOptions.timeScale.minorSlotTemplate) {\n templateName = 'minorSlotTemplate';\n var args = { date: date, type: type };\n cntEle = [].slice.call(this.parent.getMinorSlotTemplate()(args, this.parent, templateName, templateId + templateName, false));\n }\n else {\n cntEle = [].slice.call(wrapper.childNodes);\n }\n break;\n case 'alldayCells':\n if (this.parent.activeViewOptions.cellTemplate) {\n var viewName = this.parent.activeViewOptions.cellTemplateName;\n templateName = 'cellTemplate';\n var args = { date: date, type: type, groupIndex: groupIndex };\n cntEle = [].slice.call(this.parent.getCellTemplate()(args, this.parent, templateName, templateId + viewName + templateName, false));\n }\n break;\n }\n return cntEle;\n };\n VerticalView.prototype.refreshHeader = function () {\n remove(this.element.querySelector('tbody tr'));\n this.renderHeader();\n this.parent.notify(event.contentReady, {});\n };\n VerticalView.prototype.renderLayout = function (type) {\n this.setPanel(createElement('div', { className: cls.TABLE_WRAP_CLASS }));\n var clsList = [this.baseCssClass, this.viewClass];\n clsList.push(type);\n if (this.parent.activeViewOptions.group.byDate) {\n clsList.push('e-by-date');\n }\n if (!this.parent.activeViewOptions.timeScale.enable) {\n addClass([this.element], [cls.TIMESCALE_DISABLE, this.viewClass]);\n }\n if (this.parent.activeViewOptions.allowVirtualScrolling) {\n clsList.push(cls.VIRTUAL_SCROLL_CLASS);\n }\n if (this.parent.rowAutoHeight && this.parent.eventSettings.ignoreWhitespace) {\n clsList.push(cls.IGNORE_WHITESPACE);\n }\n this.renderPanel(type);\n addClass([this.element], clsList);\n this.element.appendChild(this.createTableLayout(cls.OUTER_TABLE_CLASS));\n this.element.querySelector('table').setAttribute('role', 'presentation');\n this.colLevels = this.generateColumnLevels();\n this.renderHeader();\n this.renderContent();\n if (this.parent.uiStateValues.isGroupAdaptive && !this.parent.element.querySelector('.' + cls.RESOURCE_TOOLBAR_CONTAINER)) {\n this.renderResourceMobileLayout();\n }\n this.parent.notify(event.contentReady, {});\n };\n VerticalView.prototype.renderHeader = function () {\n var tr = createElement('tr');\n var dateTd = createElement('td');\n dateTd.appendChild(this.renderDatesHeader());\n if (this.parent.activeViewOptions.timeScale.enable) {\n var indentTd = createElement('td', { className: cls.LEFT_INDENT_CLASS });\n indentTd.appendChild(this.renderLeftIndent());\n tr.appendChild(indentTd);\n }\n tr.appendChild(dateTd);\n prepend([tr], this.element.querySelector('tbody'));\n };\n VerticalView.prototype.renderContent = function () {\n var tr = createElement('tr');\n var workTd = createElement('td');\n if (this.parent.isAdaptive) {\n workTd.setAttribute('colspan', (this.parent.activeViewOptions.timeScale.enable ? '2' : '1'));\n var scrollContainer = createElement('div', { className: cls.SCROLL_CONTAINER_CLASS });\n if (this.parent.activeViewOptions.timeScale.enable) {\n scrollContainer.appendChild(this.renderTimeCells());\n }\n scrollContainer.appendChild(this.renderContentArea());\n workTd.appendChild(scrollContainer);\n EventHandler.add(scrollContainer, 'scroll', this.onAdaptiveScroll, this);\n EventHandler.add(scrollContainer, Browser.touchMoveEvent, this.onAdaptiveMove, this);\n tr.appendChild(workTd);\n }\n else {\n workTd.appendChild(this.renderContentArea());\n if (this.parent.activeViewOptions.timeScale.enable) {\n var timesTd = createElement('td');\n timesTd.appendChild(this.renderTimeCells());\n tr.appendChild(timesTd);\n }\n tr.appendChild(workTd);\n }\n this.element.querySelector('tbody').appendChild(tr);\n };\n VerticalView.prototype.renderLeftIndent = function () {\n var wrap = createElement('div', { className: cls.LEFT_INDENT_WRAP_CLASS });\n var tbl = this.createTableLayout();\n var trEle = createElement('tr');\n var rowCount = this.colLevels.length;\n var nth;\n for (var i = 0; i < rowCount; i++) {\n var ntr_1 = trEle.cloneNode();\n var data_1 = { className: [(this.colLevels[i][0] && this.colLevels[i][0].className[0])], type: 'emptyCells' };\n if (this.parent.activeViewOptions.showWeekNumber && data_1.className.indexOf(cls.HEADER_CELLS_CLASS) !== -1) {\n data_1.className.push(cls.WEEK_NUMBER_CLASS);\n var weekNo = this.parent.getWeekNumberContent(this.renderDates);\n data_1.template = [createElement('span', {\n innerHTML: '' + weekNo,\n attrs: { title: this.parent.localeObj.getConstant('week') + ' ' + weekNo }\n })];\n }\n nth = this.createTd(data_1);\n this.parent.renderHeaderIndentTemplate(data_1, nth);\n ntr_1.appendChild(nth);\n tbl.querySelector('tbody').appendChild(ntr_1);\n }\n var ntr = trEle.cloneNode();\n var appointmentExpandCollapse = createElement('div', {\n attrs: {\n 'tabindex': '0', 'role': 'list',\n title: this.parent.localeObj.getConstant('expandAllDaySection'), 'aria-disabled': 'false', 'aria-label': 'Expand section'\n },\n className: cls.ALLDAY_APPOINTMENT_SECTION_CLASS + ' ' + cls.APPOINTMENT_ROW_EXPAND_CLASS + ' ' +\n cls.ICON + ' ' + cls.DISABLE_CLASS\n });\n var data = { className: [cls.ALLDAY_CELLS_CLASS], type: 'emptyCells' };\n nth = this.createTd(data);\n nth.appendChild(appointmentExpandCollapse);\n this.parent.renderHeaderIndentTemplate(data, nth);\n ntr.appendChild(nth);\n tbl.querySelector('tbody').appendChild(ntr);\n wrap.appendChild(tbl);\n return wrap;\n };\n VerticalView.prototype.renderDatesHeader = function () {\n var container = createElement('div', { className: cls.DATE_HEADER_CONTAINER_CLASS });\n var wrap = createElement('div', { className: cls.DATE_HEADER_WRAP_CLASS });\n container.appendChild(wrap);\n var tbl = this.createTableLayout();\n var trEle = createElement('tr');\n var rowCount = this.colLevels.length;\n var lastLevel = this.colLevels[rowCount - 1];\n for (var i = 0; i < rowCount; i++) {\n var ntr = trEle.cloneNode();\n addClass([ntr], cls.HEADER_ROW_CLASS);\n var level = this.colLevels[i];\n for (var j = 0; j < level.length; j++) {\n ntr.appendChild(this.createTd(level[j]));\n }\n tbl.querySelector('tbody').appendChild(ntr);\n }\n this.createAllDayRow(tbl, lastLevel);\n this.createColGroup(tbl, lastLevel);\n wrap.appendChild(tbl);\n return container;\n };\n VerticalView.prototype.createAllDayRow = function (table, tdData) {\n var ntr = createElement('tr');\n addClass([ntr], cls.ALLDAY_ROW_CLASS);\n for (var j = 0; j < tdData.length; j++) {\n var td = extend({}, tdData[j]);\n td.className = [cls.ALLDAY_CELLS_CLASS];\n td.type = 'alldayCells';\n var ntd = this.createTd(td);\n ntd.setAttribute('data-date', td.date.getTime().toString());\n if (!isNullOrUndefined(td.groupIndex)) {\n ntd.setAttribute('data-group-index', '' + td.groupIndex);\n }\n else if (this.parent.uiStateValues.isGroupAdaptive) {\n ntd.setAttribute('data-group-index', '' + this.parent.uiStateValues.groupIndex);\n }\n this.wireCellEvents(ntd);\n ntr.appendChild(ntd);\n }\n table.querySelector('tbody').appendChild(ntr);\n var thead = createElement('thead');\n thead.appendChild(this.createEventWrapper('allDay'));\n prepend([thead], table);\n };\n VerticalView.prototype.createTd = function (td) {\n var tdEle = createElement('td');\n this.addAttributes(td, tdEle);\n if (td.date && td.type) {\n var ele = this.getTdContent(td.date, td.type, td.groupIndex);\n if (ele && ele.length) {\n append(ele, tdEle);\n }\n }\n if (!this.parent.isMinMaxDate(util.resetTime(new Date('' + td.date)))) {\n addClass([tdEle], cls.DISABLE_DATES);\n }\n if (td.type === 'resourceHeader') {\n this.setResourceHeaderContent(tdEle, td);\n }\n if (td.type === 'dateHeader' && td.className.indexOf(cls.HEADER_CELLS_CLASS) >= 0) {\n tdEle.setAttribute('data-date', td.date.getTime().toString());\n if (!isNullOrUndefined(td.groupIndex)) {\n tdEle.setAttribute('data-group-index', '' + td.groupIndex);\n }\n this.wireMouseEvents(tdEle);\n }\n var args = { elementType: td.type, element: tdEle, date: td.date, groupIndex: td.groupIndex };\n this.parent.trigger(event.renderCell, args);\n return tdEle;\n };\n VerticalView.prototype.wireCellEvents = function (element) {\n EventHandler.add(element, 'mousedown', this.parent.workCellAction.cellMouseDown, this.parent.workCellAction);\n this.wireMouseEvents(element);\n };\n VerticalView.prototype.wireMouseEvents = function (element) {\n EventHandler.add(element, 'click', this.parent.workCellAction.cellClick, this.parent.workCellAction);\n if (!this.parent.isAdaptive) {\n EventHandler.add(element, 'dblclick', this.parent.workCellAction.cellDblClick, this.parent.workCellAction);\n }\n };\n VerticalView.prototype.renderTimeCells = function () {\n var _this = this;\n var wrap = createElement('div', { className: cls.TIME_CELLS_WRAP_CLASS });\n var tbl = this.createTableLayout();\n var trEle = createElement('tr');\n var handler = function (r) {\n r.type = r.first ? 'majorSlot' : 'minorSlot';\n r.className = r.last ? [cls.TIME_CELLS_CLASS, cls.TIME_SLOT_CLASS] : [cls.TIME_SLOT_CLASS];\n var ntr = trEle.cloneNode();\n var data = { date: r.date, type: r.type, className: r.className };\n ntr.appendChild(_this.createTd(data));\n tbl.querySelector('tbody').appendChild(ntr);\n return r;\n };\n this.getTimeSlotRows(handler);\n wrap.appendChild(tbl);\n return wrap;\n };\n VerticalView.prototype.renderContentArea = function () {\n var wrap = createElement('div', { className: cls.CONTENT_WRAP_CLASS });\n var tbl = this.createTableLayout(cls.CONTENT_TABLE_CLASS);\n this.addAutoHeightClass(tbl);\n this.renderContentTable(tbl);\n this.createColGroup(tbl, this.colLevels.slice(-1)[0]);\n wrap.appendChild(tbl);\n this.wireCellEvents(tbl.querySelector('tbody'));\n EventHandler.add(wrap, 'scroll', this.onContentScroll, this);\n EventHandler.add(wrap, Browser.touchMoveEvent, this.onAdaptiveMove, this);\n return wrap;\n };\n VerticalView.prototype.renderContentTable = function (table) {\n var _this = this;\n var tr = createElement('tr', { attrs: { role: 'row' } });\n var td = createElement('td', { attrs: { role: 'gridcell', 'aria-selected': 'false' } });\n var tbody = table.querySelector('tbody');\n var handler = function (r) {\n var ntr = tr.cloneNode();\n for (var _i = 0, _a = _this.colLevels[_this.colLevels.length - 1]; _i < _a.length; _i++) {\n var tdData = _a[_i];\n var ntd = _this.createContentTd(tdData, r, td);\n ntr.appendChild(ntd);\n }\n tbody.appendChild(ntr);\n return r;\n };\n this.getTimeSlotRows(handler);\n this.renderContentTableHeader(table);\n };\n VerticalView.prototype.createContentTd = function (tdData, r, td) {\n var ntd = td.cloneNode();\n if (tdData.colSpan) {\n ntd.setAttribute('colspan', tdData.colSpan.toString());\n }\n var clsName = this.getContentTdClass(r);\n var cellDate = util.resetTime(tdData.date);\n if (!this.parent.isMinMaxDate(cellDate)) {\n clsName.push(cls.DISABLE_DATES);\n }\n util.setTime(cellDate, util.getDateInMs(r.date));\n var type = 'workCells';\n if (tdData.className.indexOf(cls.RESOURCE_PARENT_CLASS) !== -1) {\n clsName.push(cls.RESOURCE_GROUP_CELLS_CLASS);\n type = 'resourceGroupCells';\n }\n if (this.parent.workHours.highlight && ((this.parent.activeViewOptions.timeScale.enable &&\n this.isWorkHour(cellDate, tdData.startHour, tdData.endHour, tdData.workDays)) ||\n (!this.parent.activeViewOptions.timeScale.enable && this.isWorkDay(cellDate, tdData.workDays)))) {\n clsName.push(cls.WORK_HOURS_CLASS);\n }\n addClass([ntd], clsName);\n if (this.parent.activeViewOptions.cellTemplate) {\n var args_1 = { date: cellDate, type: type, groupIndex: tdData.groupIndex };\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.cellTemplateName;\n var templateId = scheduleId + viewName + 'cellTemplate';\n var tooltipTemplate = [].slice.call(this.parent.getCellTemplate()(args_1, this.parent, 'cellTemplate', templateId, false));\n append(tooltipTemplate, ntd);\n }\n ntd.setAttribute('data-date', cellDate.getTime().toString());\n if (!isNullOrUndefined(tdData.groupIndex) || this.parent.uiStateValues.isGroupAdaptive) {\n var groupIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex :\n tdData.groupIndex;\n ntd.setAttribute('data-group-index', '' + groupIndex);\n }\n var args = { elementType: type, element: ntd, date: cellDate, groupIndex: tdData.groupIndex };\n this.parent.trigger(event.renderCell, args);\n return ntd;\n };\n VerticalView.prototype.getContentTdClass = function (r) {\n return r.last ? [cls.WORK_CELLS_CLASS] : [cls.WORK_CELLS_CLASS, cls.ALTERNATE_CELLS_CLASS];\n };\n VerticalView.prototype.renderContentTableHeader = function (table) {\n var thead = createElement('thead');\n thead.appendChild(this.createEventWrapper());\n if (this.parent.activeViewOptions.timeScale.enable) {\n thead.appendChild(this.createEventWrapper('timeIndicator'));\n }\n prepend([thead], table);\n };\n VerticalView.prototype.createEventWrapper = function (type) {\n if (type === void 0) { type = ''; }\n var tr = createElement('tr');\n var levels = this.colLevels.slice(-1)[0];\n for (var i = 0, len = levels.length; i < len; i++) {\n var col = levels[i];\n var appointmentWrap = createElement('td', {\n className: (type === 'allDay') ? cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS : (type === 'timeIndicator') ?\n cls.TIMELINE_WRAPPER_CLASS : cls.DAY_WRAPPER_CLASS, attrs: { 'data-date': col.date.getTime().toString() }\n });\n if (!isNullOrUndefined(col.groupIndex)) {\n appointmentWrap.setAttribute('data-group-index', col.groupIndex.toString());\n }\n if (type === '') {\n var innerWrapper = createElement('div', {\n id: cls.APPOINTMENT_WRAPPER_CLASS + '-' + i.toString(),\n className: cls.APPOINTMENT_WRAPPER_CLASS\n });\n appointmentWrap.appendChild(innerWrapper);\n }\n tr.appendChild(appointmentWrap);\n }\n return tr;\n };\n VerticalView.prototype.getScrollableElement = function () {\n if (this.parent.isAdaptive && !this.isTimelineView()) {\n return this.element.querySelector('.' + cls.SCROLL_CONTAINER_CLASS);\n }\n else {\n return this.getContentAreaElement();\n }\n };\n VerticalView.prototype.getLeftPanelElement = function () {\n return this.element.querySelector('.' + cls.TIME_CELLS_WRAP_CLASS);\n };\n VerticalView.prototype.getEndDateFromStartDate = function (start) {\n var msMajorInterval = this.parent.activeViewOptions.timeScale.interval * util.MS_PER_MINUTE;\n var msInterval = msMajorInterval / this.parent.activeViewOptions.timeScale.slotCount;\n var end = new Date(start.getTime());\n end.setMilliseconds(end.getMilliseconds() + msInterval);\n return end;\n };\n VerticalView.prototype.getTimeSlotRows = function (handler) {\n var rows = [];\n var startHour = this.getStartHour();\n var endHour = this.getEndHour();\n var msMajorInterval = this.parent.activeViewOptions.timeScale.interval * util.MS_PER_MINUTE;\n var msInterval = msMajorInterval / this.parent.activeViewOptions.timeScale.slotCount;\n var length = Math.round(util.MS_PER_DAY / msInterval);\n var msStartHour = startHour.getTime();\n var msEndHour = endHour.getTime();\n if (msStartHour !== msEndHour) {\n length = (Math.abs(msEndHour - msStartHour) / msInterval) - ((new Date(msEndHour).getTimezoneOffset()\n - new Date(msStartHour).getTimezoneOffset()) / (60 / this.parent.activeViewOptions.timeScale.slotCount));\n }\n if (!this.parent.activeViewOptions.timeScale.enable) {\n length = 1;\n }\n var start = this.parent.getStartEndTime(this.parent.workHours.start);\n var end = this.parent.getStartEndTime(this.parent.workHours.end);\n for (var i = 0; i < length; i++) {\n var dt = new Date(msStartHour + (msInterval * i));\n if (util.isDaylightSavingTime(dt) || new Date(msStartHour).getTimezoneOffset() !== dt.getTimezoneOffset()) {\n var timeOffset = new Date(msStartHour).getTimezoneOffset() - dt.getTimezoneOffset();\n dt = new Date(dt.getTime() - (1000 * 60 * timeOffset));\n }\n var majorTickDivider = i % (msMajorInterval / msInterval);\n var row = {\n date: new Date('' + dt),\n startHour: start,\n endHour: end,\n first: (majorTickDivider === 0),\n middle: (majorTickDivider < this.parent.activeViewOptions.timeScale.slotCount - 1),\n last: (majorTickDivider === this.parent.activeViewOptions.timeScale.slotCount - 1),\n type: ''\n };\n if (handler) {\n handler(row);\n }\n rows.push(row);\n }\n return rows;\n };\n VerticalView.prototype.destroy = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.clearCurrentTimeIndicatorTimer();\n if (this.element) {\n if (this.appointment) {\n this.appointment.destroy();\n this.appointment = null;\n }\n var contentScrollableEle = this.getContentAreaElement();\n if (contentScrollableEle) {\n EventHandler.remove(contentScrollableEle, 'scroll', this.onContentScroll);\n EventHandler.remove(contentScrollableEle, Browser.touchMoveEvent, this.onAdaptiveMove);\n }\n if (this.parent.resourceBase) {\n this.parent.resourceBase.destroy();\n }\n if (this.parent.scheduleTouchModule) {\n this.parent.scheduleTouchModule.resetValues();\n }\n _super.prototype.destroy.call(this);\n }\n };\n return VerticalView;\n}(ViewBase));\nexport { VerticalView };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { VerticalView } from './vertical-view';\n/**\n * day view\n */\nvar Day = /** @class */ (function (_super) {\n __extends(Day, _super);\n /**\n * Constructor for day view\n *\n * @param {Schedule} parent Accepts the schedule instance\n */\n function Day(parent) {\n var _this = _super.call(this, parent) || this;\n _this.viewClass = 'e-day-view';\n return _this;\n }\n /**\n * Get module name.\n *\n * @returns {string} Returns the module name.\n */\n Day.prototype.getModuleName = function () {\n return 'day';\n };\n return Day;\n}(VerticalView));\nexport { Day };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { VerticalView } from './vertical-view';\n/**\n * week view\n */\nvar Week = /** @class */ (function (_super) {\n __extends(Week, _super);\n /**\n * Constructor for week view\n *\n * @param {Schedule} parent Accepts the schedule instance\n */\n function Week(parent) {\n var _this = _super.call(this, parent) || this;\n _this.viewClass = 'e-week-view';\n return _this;\n }\n Week.prototype.startDate = function () {\n return this.getViewStartDate();\n };\n Week.prototype.endDate = function () {\n return this.getViewEndDate();\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the module name.\n */\n Week.prototype.getModuleName = function () {\n return 'week';\n };\n return Week;\n}(VerticalView));\nexport { Week };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EventHandler, formatUnit, isNullOrUndefined, createElement, addClass, append, prepend, remove } from '@syncfusion/ej2-base';\nimport { ViewBase } from './view-base';\nimport { MonthEvent } from '../event-renderer/month';\nimport * as util from '../base/util';\nimport * as event from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * month view\n */\nvar Month = /** @class */ (function (_super) {\n __extends(Month, _super);\n function Month(parent) {\n var _this = _super.call(this, parent) || this;\n _this.dayNameFormat = 'wide';\n _this.viewClass = 'e-month-view';\n _this.isInverseTableSelect = false;\n _this.monthEvent = null;\n _this.monthDates = {};\n return _this;\n }\n Month.prototype.addEventListener = function () {\n this.parent.on(event.scrollUiUpdate, this.onScrollUIUpdate, this);\n this.parent.on(event.dataReady, this.onDataReady, this);\n this.parent.on(event.cellClick, this.onCellClick, this);\n };\n Month.prototype.removeEventListener = function () {\n if (this.parent) {\n this.parent.off(event.scrollUiUpdate, this.onScrollUIUpdate);\n this.parent.off(event.dataReady, this.onDataReady);\n this.parent.off(event.cellClick, this.onCellClick);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Month.prototype.onDataReady = function (args) {\n this.monthEvent = new MonthEvent(this.parent);\n this.monthEvent.renderAppointments();\n this.parent.notify(event.eventsLoaded, {});\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Month.prototype.onCellClick = function (event) { };\n Month.prototype.onContentScroll = function (e) {\n this.parent.removeNewEventElement();\n this.parent.notify(event.virtualScroll, e);\n this.scrollTopPanel(e.target);\n this.scrollLeftPanel(e.target);\n this.setPersistence();\n };\n Month.prototype.scrollLeftPanel = function (target) {\n var leftPanel = this.getLeftPanelElement();\n if (leftPanel) {\n leftPanel.scrollTop = target.scrollTop;\n }\n };\n Month.prototype.getLeftPanelElement = function () {\n return this.element.querySelector('.' + cls.WEEK_NUMBER_WRAPPER_CLASS);\n };\n Month.prototype.onScrollUIUpdate = function (args) {\n var headerHeight = this.getHeaderBarHeight();\n var header = this.getDatesHeaderElement();\n var content = this.getContentAreaElement();\n var height = this.parent.element.offsetHeight - headerHeight - header.offsetHeight;\n var leftPanel = this.getLeftPanelElement();\n if (this.parent.height !== 'auto') {\n this.setContentHeight(content, leftPanel, height);\n }\n var scrollBarWidth = util.getScrollBarWidth();\n header.firstElementChild.style[args.cssProperties.rtlBorder] = '';\n header.style[args.cssProperties.rtlPadding] = '';\n if (content.offsetWidth - content.clientWidth > 0) {\n header.firstElementChild.style[args.cssProperties.border] = scrollBarWidth > 0 ? '1px' : '0px';\n header.style[args.cssProperties.padding] = scrollBarWidth > 0 ? scrollBarWidth - 1 + 'px' : '0px';\n }\n else {\n header.firstElementChild.style[args.cssProperties.border] = '';\n header.style[args.cssProperties.padding] = '';\n }\n this.setColWidth(content);\n if (args.scrollPosition) {\n if (leftPanel) {\n leftPanel.scrollTop = args.scrollPosition.top;\n }\n content.scrollTop = args.scrollPosition.top;\n content.scrollLeft = args.scrollPosition.left;\n }\n else {\n var headerCell = this.element.querySelector('.' + cls.HEADER_CELLS_CLASS + '[data-date=\"'\n + this.parent.selectedDate.getTime().toString() + '\"]');\n if (!isNullOrUndefined(headerCell)) {\n content.scrollLeft = !this.parent.enableRtl ?\n headerCell.offsetLeft : -(this.parent.getContentTable().offsetWidth - headerCell.offsetLeft - headerCell.offsetWidth);\n }\n else {\n content.scrollLeft = 0;\n }\n }\n this.retainScrollPosition();\n };\n Month.prototype.setContentHeight = function (content, leftPanelElement, height) {\n content.style.height = 'auto';\n if (this.parent.currentView === 'Month') {\n content.style.height = formatUnit(height);\n }\n if (leftPanelElement) {\n if (this.parent.currentView === 'MonthAgenda') {\n height = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS).offsetHeight;\n }\n leftPanelElement.style.height = 'auto';\n leftPanelElement.style.height = formatUnit(height - this.getScrollXIndent(content));\n }\n };\n Month.prototype.generateColumnLevels = function () {\n var colLevels = [];\n var level = this.getDateSlots(this.renderDates, this.parent.activeViewOptions.workDays);\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n colLevels = this.parent.resourceBase.generateResourceLevels(level);\n if (this.parent.currentView === 'MonthAgenda') {\n colLevels = [level];\n }\n if (this.parent.uiStateValues.isGroupAdaptive && this.parent.resourceBase.lastResourceLevel.length > 0) {\n var resourceLevel = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex];\n colLevels = [this.getDateSlots(resourceLevel.renderDates, resourceLevel.workDays)];\n }\n }\n else {\n colLevels.push(level);\n }\n this.colLevels = colLevels;\n return colLevels;\n };\n Month.prototype.getDateSlots = function (renderDates, workDays) {\n var count = this.parent.activeViewOptions.showWeekend ? util.WEEK_LENGTH : workDays.length;\n var dateSlots = [];\n var isCurrentMonth = this.isCurrentMonth(this.parent.selectedDate);\n for (var col = 0; col < count; col++) {\n var classList = [cls.HEADER_CELLS_CLASS];\n var currentDateIndex = renderDates.slice(0, count).map(function (date) { return date.getDay(); });\n if (isCurrentMonth && currentDateIndex.indexOf(this.parent.getCurrentTime().getDay()) === col) {\n classList.push(cls.CURRENT_DAY_CLASS);\n }\n dateSlots.push({ date: renderDates[col], type: 'monthDay', className: classList, colSpan: 1, workDays: workDays });\n }\n return dateSlots;\n };\n Month.prototype.getDayNameFormat = function () {\n if (this.parent.isAdaptive || this.parent.activeViewOptions.group.resources.length > 0) {\n return 'abbreviated';\n }\n return 'wide';\n };\n Month.prototype.renderLayout = function (type) {\n this.dayNameFormat = this.getDayNameFormat();\n this.setPanel(createElement('div', { className: cls.TABLE_WRAP_CLASS }));\n var clsList = [this.viewClass];\n clsList.push(type);\n if (this.parent.activeViewOptions.group.byDate) {\n clsList.push('e-by-date');\n }\n if (this.parent.activeViewOptions.allowVirtualScrolling) {\n clsList.push(cls.VIRTUAL_SCROLL_CLASS);\n }\n if (this.parent.rowAutoHeight && this.parent.eventSettings.ignoreWhitespace) {\n clsList.push(cls.IGNORE_WHITESPACE);\n }\n addClass([this.element], clsList);\n this.renderPanel(type);\n this.element.appendChild(this.createTableLayout(cls.OUTER_TABLE_CLASS));\n this.element.querySelector('table').setAttribute('role', 'presentation');\n this.colLevels = this.generateColumnLevels();\n this.renderHeader();\n this.renderContent();\n var target = (this.parent.currentView === 'MonthAgenda') ? this.parent.activeView.getPanel() : this.parent.element;\n if (this.parent.uiStateValues.isGroupAdaptive && !target.querySelector('.' + cls.RESOURCE_TOOLBAR_CONTAINER)) {\n this.renderResourceMobileLayout();\n }\n this.parent.notify(event.contentReady, {});\n if (this.parent.uiStateValues.isCustomMonth) {\n this.parent.uiStateValues.isCustomMonth = false;\n }\n };\n Month.prototype.refreshHeader = function () {\n remove(this.element.querySelector('tbody tr'));\n this.renderHeader();\n this.parent.notify(event.contentReady, {});\n };\n Month.prototype.wireCellEvents = function (element) {\n EventHandler.add(element, 'mousedown', this.parent.workCellAction.cellMouseDown, this.parent.workCellAction);\n EventHandler.add(element, 'click', this.parent.workCellAction.cellClick, this.parent.workCellAction);\n if (!this.parent.isAdaptive) {\n EventHandler.add(element, 'dblclick', this.parent.workCellAction.cellDblClick, this.parent.workCellAction);\n }\n };\n Month.prototype.renderHeader = function () {\n var tr = createElement('tr');\n this.renderLeftIndent(tr);\n var dateTd = createElement('td');\n dateTd.appendChild(this.renderDatesHeader());\n tr.appendChild(dateTd);\n prepend([tr], this.element.querySelector('tbody'));\n };\n Month.prototype.renderLeftIndent = function (tr) {\n if (this.parent.activeViewOptions.showWeekNumber) {\n tr.appendChild(createElement('td', { className: 'e-left-indent' }));\n }\n };\n Month.prototype.renderContent = function () {\n var tr = createElement('tr');\n if (this.parent.activeViewOptions.showWeekNumber) {\n tr.appendChild(this.renderWeekNumberContent());\n }\n var workTd = createElement('td');\n var wrap = createElement('div', { className: cls.CONTENT_WRAP_CLASS });\n var contentArea = this.renderContentArea();\n if (this.parent.currentView === 'Month') {\n wrap.appendChild(contentArea);\n }\n else {\n var monthAgendaWrapper = createElement('div', { className: cls.TABLE_CONTAINER_CLASS });\n monthAgendaWrapper.appendChild(contentArea);\n wrap.appendChild(monthAgendaWrapper);\n }\n EventHandler.add(wrap, 'scroll', this.onContentScroll, this);\n workTd.appendChild(wrap);\n tr.appendChild(workTd);\n this.element.querySelector('tbody').appendChild(tr);\n this.renderAppointmentContainer();\n };\n Month.prototype.renderWeekNumberContent = function () {\n var dateCol = this.renderDates.map(function (date) { return new Date(+date); });\n var td = createElement('td');\n var contentWrapper = createElement('div', { className: cls.WEEK_NUMBER_WRAPPER_CLASS });\n td.appendChild(contentWrapper);\n var contentWrapTable = this.createTableLayout();\n contentWrapper.appendChild(contentWrapTable);\n var noOfDays = this.parent.activeViewOptions.showWeekend ? util.WEEK_LENGTH :\n this.parent.activeViewOptions.workDays.length;\n for (var i = 0, length_1 = (this.renderDates.length / noOfDays); i < length_1; i++) {\n var dates = dateCol.splice(0, noOfDays);\n var weekNumber = this.parent.getWeekNumberContent(dates);\n contentWrapTable.querySelector('tbody').appendChild(this.createWeekNumberElement(weekNumber));\n }\n return td;\n };\n Month.prototype.renderAppointmentContainer = function () {\n //Here needs to render mobile view appointment details on selected date\n };\n Month.prototype.renderDatesHeader = function () {\n var container = createElement('div', { className: cls.DATE_HEADER_CONTAINER_CLASS });\n var wrap = createElement('div', { className: cls.DATE_HEADER_WRAP_CLASS });\n container.appendChild(wrap);\n var table = this.createTableLayout();\n this.createColGroup(table, this.colLevels[this.colLevels.length - 1]);\n var trEle = createElement('tr');\n for (var i = 0; i < this.colLevels.length; i++) {\n var level = this.colLevels[i];\n var ntr = trEle.cloneNode();\n for (var j = 0; j < level.length; j++) {\n var td = level[j];\n ntr.appendChild(this.createHeaderCell(td));\n }\n table.querySelector('tbody').appendChild(ntr);\n }\n wrap.appendChild(table);\n return container;\n };\n Month.prototype.createHeaderCell = function (td) {\n var tdEle = createElement('td');\n this.addAttributes(td, tdEle);\n if (td.type === 'monthDay') {\n var ele = createElement('span', { innerHTML: util.capitalizeFirstWord(this.parent.getDayNames(this.dayNameFormat)[td.date.getDay()], 'single') });\n tdEle.appendChild(ele);\n }\n if (td.type === 'resourceHeader') {\n this.setResourceHeaderContent(tdEle, td);\n }\n if (td.type === 'dateHeader') {\n addClass([tdEle], cls.DATE_HEADER_CLASS);\n tdEle.setAttribute('data-date', td.date.getTime().toString());\n if (this.parent.activeViewOptions.dateHeaderTemplate) {\n var cellArgs = { date: td.date, type: td.type };\n var elementId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.dateHeaderTemplateName;\n var templateId = elementId + viewName + 'dateHeaderTemplate';\n var dateTemplate = [].slice.call(this.parent.getDateHeaderTemplate()(cellArgs, this.parent, 'dateHeaderTemplate', templateId, false));\n if (dateTemplate && dateTemplate.length) {\n append(dateTemplate, tdEle);\n }\n }\n else {\n var ele = createElement('span', { className: cls.NAVIGATE_CLASS });\n var skeleton = 'full';\n var title = this.parent.globalize.formatDate(td.date, { skeleton: skeleton, calendar: this.parent.getCalendarMode() });\n ele.setAttribute('title', util.capitalizeFirstWord(title, 'multiple'));\n var innerText = (this.parent.calendarUtil.isMonthStart(td.date) && !this.isCurrentDate(td.date) && !this.parent.isAdaptive) ?\n this.parent.globalize.formatDate(td.date, { format: 'MMM d', calendar: this.parent.getCalendarMode() }) :\n this.parent.globalize.formatDate(td.date, { skeleton: 'd', calendar: this.parent.getCalendarMode() });\n ele.innerHTML = util.capitalizeFirstWord(innerText, 'single');\n tdEle.appendChild(ele);\n }\n this.wireCellEvents(tdEle);\n }\n var args = { elementType: td.type, element: tdEle, date: td.date, groupIndex: td.groupIndex };\n this.parent.trigger(event.renderCell, args);\n return tdEle;\n };\n Month.prototype.getContentSlots = function () {\n if (!(this.colLevels[this.colLevels.length - 1] && this.colLevels[this.colLevels.length - 1][0])) {\n return [];\n }\n var slotDatas = [];\n var prepareSlots = function (rowIndex, renderDate, resData, classList) {\n var data = {\n date: new Date(+renderDate), groupIndex: resData.groupIndex, workDays: resData.workDays,\n type: 'monthCells', className: classList || [cls.WORK_CELLS_CLASS]\n };\n if (!slotDatas[rowIndex]) {\n slotDatas[rowIndex] = [];\n }\n slotDatas[rowIndex].push(data);\n };\n var includeResource = this.parent.currentView !== 'MonthAgenda' &&\n this.parent.activeViewOptions.group.resources.length > 0;\n if (includeResource && !this.parent.uiStateValues.isGroupAdaptive && !this.parent.activeViewOptions.group.byDate) {\n for (var _i = 0, _a = this.colLevels[this.colLevels.length - 2]; _i < _a.length; _i++) {\n var res = _a[_i];\n var dates = res.renderDates.map(function (date) { return new Date(+date); });\n var count = this.parent.activeViewOptions.showWeekend ? util.WEEK_LENGTH : res.workDays.length;\n for (var i = 0; i < (res.renderDates.length / count); i++) {\n var colDates = dates.splice(0, count);\n for (var _b = 0, colDates_1 = colDates; _b < colDates_1.length; _b++) {\n var colDate = colDates_1[_b];\n prepareSlots(i, colDate, res);\n }\n }\n }\n }\n else {\n var dates = this.renderDates.map(function (date) { return new Date(+date); });\n var count = this.parent.activeViewOptions.showWeekend ? util.WEEK_LENGTH :\n this.parent.activeViewOptions.workDays.length;\n for (var i = 0; i < (this.renderDates.length / count); i++) {\n var colDates = dates.splice(0, count);\n for (var _c = 0, colDates_2 = colDates; _c < colDates_2.length; _c++) {\n var colDate = colDates_2[_c];\n if (includeResource) {\n var lastRow = this.colLevels[(this.colLevels.length - 1)];\n var resourcesTd = lastRow.slice(0, lastRow.length / count);\n for (var resIndex = 0; resIndex < resourcesTd.length; resIndex++) {\n var clsList = void 0;\n if (resIndex !== 0) {\n clsList = [cls.WORK_CELLS_CLASS, cls.DISABLE_DATE];\n }\n prepareSlots(i, colDate, resourcesTd[resIndex], clsList);\n }\n }\n else {\n prepareSlots(i, colDate, this.colLevels[this.colLevels.length - 1][0]);\n }\n }\n }\n }\n return slotDatas;\n };\n Month.prototype.updateClassList = function (data) {\n if (!this.isCustomMonth() && this.isOtherMonth(data.date)) {\n data.className.push(cls.OTHERMONTH_CLASS);\n }\n if (!this.parent.isMinMaxDate(data.date)) {\n data.className.push(cls.DISABLE_DATES);\n }\n if (this.parent.currentView === 'MonthAgenda' && this.parent.isSelectedDate(data.date)) {\n data.className.push(cls.SELECTED_CELL_CLASS);\n }\n };\n Month.prototype.isOtherMonth = function (date) {\n return date.getTime() < this.monthDates.start.getTime() || date.getTime() > this.monthDates.end.getTime();\n };\n Month.prototype.renderContentArea = function () {\n var tbl = this.createTableLayout(cls.CONTENT_TABLE_CLASS);\n this.addAutoHeightClass(tbl);\n if (this.parent.currentView === 'TimelineMonth') {\n this.createColGroup(tbl, this.colLevels[this.colLevels.length - 1]);\n }\n var monthDate = new Date(this.parent.selectedDate.getTime());\n this.monthDates = {\n start: this.parent.calendarUtil.firstDateOfMonth(monthDate),\n end: this.parent.calendarUtil.lastDateOfMonth(util.addMonths(monthDate, this.parent.activeViewOptions.interval - 1))\n };\n var tBody = tbl.querySelector('tbody');\n append(this.getContentRows(), tBody);\n this.wireCellEvents(tBody);\n return tbl;\n };\n Month.prototype.getContentRows = function () {\n var trows = [];\n var tr = createElement('tr', { attrs: { role: 'row' } });\n var td = createElement('td', { attrs: { role: 'gridcell', 'aria-selected': 'false' } });\n var slotDatas = this.getContentSlots();\n for (var row = 0; row < slotDatas.length; row++) {\n var ntr = tr.cloneNode();\n for (var col = 0; col < slotDatas[row].length; col++) {\n var ntd = this.createContentTd(slotDatas[row][col], td);\n ntr.appendChild(ntd);\n }\n trows.push(ntr);\n }\n return trows;\n };\n Month.prototype.createContentTd = function (data, td) {\n var ntd = td.cloneNode();\n if (data.colSpan) {\n ntd.setAttribute('colspan', data.colSpan.toString());\n }\n this.updateClassList(data);\n var type = data.type;\n if (data.className.indexOf(cls.RESOURCE_PARENT_CLASS) !== -1) {\n data.className.push(cls.RESOURCE_GROUP_CELLS_CLASS);\n type = 'resourceGroupCells';\n }\n if (this.parent.workHours.highlight && this.isWorkDay(data.date, data.workDays)) {\n data.className.push(cls.WORKDAY_CLASS);\n }\n if (this.isCurrentDate(data.date)) {\n data.className.push(cls.CURRENTDATE_CLASS);\n }\n addClass([ntd], data.className);\n ntd.setAttribute('data-date', data.date.getTime().toString());\n if (!isNullOrUndefined(data.groupIndex) || this.parent.uiStateValues.isGroupAdaptive) {\n var groupIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex :\n data.groupIndex;\n ntd.setAttribute('data-group-index', '' + groupIndex);\n }\n this.renderDateHeaderElement(data, ntd);\n if (this.parent.activeViewOptions.cellTemplate) {\n var args_1 = { date: data.date, type: type, groupIndex: data.groupIndex };\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.cellTemplateName;\n var templateId = scheduleId + viewName + 'cellTemplate';\n var cellTemplate = [].slice.call(this.parent.getCellTemplate()(args_1, this.parent, 'cellTemplate', templateId, false));\n append(cellTemplate, ntd);\n }\n var args = { elementType: type, element: ntd, date: data.date, groupIndex: data.groupIndex };\n this.parent.trigger(event.renderCell, args);\n return ntd;\n };\n Month.prototype.renderDateHeaderElement = function (data, ntd) {\n if (this.parent.currentView === 'TimelineMonth') {\n return;\n }\n var dateHeader = createElement('div', { className: cls.DATE_HEADER_CLASS });\n if (this.parent.activeViewOptions.cellHeaderTemplate) {\n var args = { date: data.date, type: data.type, groupIndex: data.groupIndex };\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.cellHeaderTemplateName;\n var templateId = scheduleId + viewName + 'cellHeaderTemplate';\n var cellHeaderTemplate = [].slice.call(this.parent.getCellHeaderTemplate()(args, this.parent, 'cellHeaderTemplate', templateId, false));\n append(cellHeaderTemplate, dateHeader);\n }\n else {\n var innerText = (this.parent.calendarUtil.isMonthStart(data.date) && !this.isCurrentDate(data.date) && !this.parent.isAdaptive) ?\n this.parent.globalize.formatDate(data.date, { format: 'MMM d', calendar: this.parent.getCalendarMode() }) :\n this.parent.globalize.formatDate(data.date, { skeleton: 'd', calendar: this.parent.getCalendarMode() });\n dateHeader.innerHTML = util.capitalizeFirstWord(innerText, 'single');\n }\n ntd.appendChild(dateHeader);\n if (this.getModuleName() === 'month') {\n addClass([dateHeader], cls.NAVIGATE_CLASS);\n var skeleton = 'full';\n var announcementText = this.parent.globalize.formatDate(data.date, { skeleton: skeleton, calendar: this.parent.getCalendarMode() });\n dateHeader.setAttribute('aria-label', announcementText);\n }\n };\n Month.prototype.getMonthStart = function (currentDate) {\n var useDisplayDate = this.parent.currentView === 'Month' && !isNullOrUndefined(this.parent.activeViewOptions.displayDate) && (this.parent.uiStateValues.isCustomMonth || this.isCustomRange());\n var date = useDisplayDate ? this.parent.activeViewOptions.displayDate : !(this.parent.uiStateValues.isCustomMonth ||\n this.isCustomRange()) && this.isCustomMonth() ? currentDate : this.parent.calendarUtil.firstDateOfMonth(currentDate);\n var monthStart = util.getWeekFirstDate(date, this.parent.activeViewOptions.firstDayOfWeek);\n return new Date(monthStart.getFullYear(), monthStart.getMonth(), monthStart.getDate());\n };\n Month.prototype.getMonthEnd = function (currentDate) {\n if (this.isCustomMonth()) {\n var start = this.getMonthStart(currentDate);\n var numberOfDays = util.WEEK_LENGTH * (this.parent.activeViewOptions.numberOfWeeks > 0 ?\n this.parent.activeViewOptions.numberOfWeeks : util.DEFAULT_WEEKS);\n return util.addDays(start, (numberOfDays - 1));\n }\n else {\n var endDate = util.addMonths(currentDate, this.parent.activeViewOptions.interval - 1);\n var lastWeekOfMonth = util.getWeekFirstDate(this.parent.calendarUtil.lastDateOfMonth(endDate), this.parent.activeViewOptions.firstDayOfWeek);\n return util.addDays(lastWeekOfMonth, util.WEEK_LENGTH - 1);\n }\n };\n Month.prototype.isCustomRange = function () {\n var dates = this.parent.getCurrentViewDates();\n if (dates && dates.length > 0) {\n var selectedTime = util.resetTime(this.parent.selectedDate).getTime();\n var weekFirstDate = util.getWeekFirstDate(dates[dates.length - 1], this.parent.activeViewOptions.firstDayOfWeek);\n return !(selectedTime >= util.getWeekFirstDate(dates[0], this.parent.activeViewOptions.firstDayOfWeek).getTime() &&\n selectedTime <= util.addDays(weekFirstDate, 6).getTime());\n }\n return false;\n };\n Month.prototype.getRenderDates = function (workDays) {\n var renderDates = [];\n var currentDate = util.resetTime(this.parent.selectedDate);\n var start = this.getMonthStart(currentDate);\n var monthEnd = this.getMonthEnd(currentDate);\n do {\n if (this.parent.activeViewOptions.showWeekend) {\n renderDates.push(start);\n }\n else {\n if (this.isWorkDay(start, workDays)) {\n renderDates.push(start);\n }\n }\n start = util.addDays(start, 1);\n if (start.getHours() > 0) {\n start = util.resetTime(start);\n }\n } while (start.getTime() <= monthEnd.getTime());\n if (!workDays) {\n this.renderDates = renderDates;\n }\n if (this.parent.headerModule) {\n this.parent.headerModule.previousNextIconHandler();\n }\n return renderDates;\n };\n Month.prototype.getNextPreviousDate = function (type) {\n if (this.isCustomMonth()) {\n var dates = this.parent.getCurrentViewDates();\n var date = util.getWeekFirstDate(type === 'next' ? dates[dates.length - 1]\n : dates[0], this.parent.activeViewOptions.firstDayOfWeek);\n return util.addDays(date, type === 'next' ? util.WEEK_LENGTH : -(this.parent.activeViewOptions.numberOfWeeks > 0 ?\n this.parent.activeViewOptions.numberOfWeeks : util.DEFAULT_WEEKS) * util.WEEK_LENGTH);\n }\n else {\n return util.addMonths(this.parent.selectedDate, ((type === 'next' ? 1 : -1) * this.parent.activeViewOptions.interval));\n }\n };\n Month.prototype.getStartDate = function () {\n return this.getMonthStart(this.parent.selectedDate);\n };\n Month.prototype.getEndDate = function () {\n return this.getMonthEnd(this.parent.selectedDate);\n };\n Month.prototype.getEndDateFromStartDate = function (start) {\n return util.addDays(new Date(start.getTime()), 1);\n };\n Month.prototype.getDateRangeText = function () {\n if (this.parent.isAdaptive || isNullOrUndefined(this.parent.activeViewOptions.dateFormat)) {\n var startDate = this.parent.selectedDate;\n var endDate = void 0;\n var updateCustomRange = false;\n if (this.isCustomMonth()) {\n var dates = this.parent.getCurrentViewDates();\n updateCustomRange = dates[0].getMonth() !== dates[dates.length - 1].getMonth() ||\n dates[0].getFullYear() !== dates[dates.length - 1].getFullYear();\n if (updateCustomRange) {\n startDate = dates[0];\n endDate = dates[dates.length - 1];\n }\n }\n var isUpdateDateRange = (this.parent.currentView !== 'Month' || !this.isCustomMonth());\n if (this.parent.activeViewOptions.interval > 1 && isUpdateDateRange || updateCustomRange) {\n endDate = endDate ? endDate : util.addMonths(util.lastDateOfMonth(startDate), this.parent.activeViewOptions.interval - 1);\n if (startDate.getFullYear() === endDate.getFullYear()) {\n var monthNames = (this.parent.globalize.formatDate(startDate, { format: 'MMMM', calendar: this.parent.getCalendarMode() })) + ' - ' +\n (this.parent.globalize.formatDate(endDate, { format: 'MMMM ', calendar: this.parent.getCalendarMode() })) +\n this.parent.globalize.formatDate(endDate, { skeleton: 'y', calendar: this.parent.getCalendarMode() });\n return util.capitalizeFirstWord(monthNames, 'single');\n }\n var text = (this.parent.globalize.formatDate(startDate, { format: 'MMMM', calendar: this.parent.getCalendarMode() })) + ' ' +\n startDate.getFullYear() + ' - ' +\n this.parent.globalize.formatDate(endDate, { format: 'MMMM ', calendar: this.parent.getCalendarMode() }) +\n this.parent.globalize.formatDate(endDate, { skeleton: 'y', calendar: this.parent.getCalendarMode() });\n return util.capitalizeFirstWord(text, 'single');\n }\n var format = (this.parent.activeViewOptions.dateFormat) ? this.parent.activeViewOptions.dateFormat : 'MMMM y';\n return util.capitalizeFirstWord(this.parent.globalize.formatDate(startDate, { format: format, calendar: this.parent.getCalendarMode() }), 'single');\n }\n return this.formatDateRange(this.parent.selectedDate);\n };\n Month.prototype.getLabelText = function (view) {\n return this.parent.localeObj.getConstant(view) + ' of ' + util.capitalizeFirstWord(this.parent.globalize.formatDate(this.parent.selectedDate, { format: 'MMMM y', calendar: this.parent.getCalendarMode() }), 'single');\n };\n Month.prototype.createWeekNumberElement = function (text) {\n var tr = createElement('tr');\n var td = createElement('td', {\n className: cls.WEEK_NUMBER_CLASS,\n attrs: { 'title': (text ? this.parent.localeObj.getConstant('week') + ' ' + text : '') },\n innerHTML: (text || '')\n });\n tr.appendChild(td);\n var args = { elementType: 'weekNumberCell', element: td };\n this.parent.trigger(event.renderCell, args);\n return tr;\n };\n Month.prototype.unWireEvents = function () {\n var contentScrollableEle = this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (contentScrollableEle) {\n EventHandler.remove(contentScrollableEle, 'scroll', this.onContentScroll);\n }\n };\n Month.prototype.isCustomMonth = function () {\n return this.parent.currentView === 'Month' &&\n (!isNullOrUndefined(this.parent.activeViewOptions.displayDate) || this.parent.activeViewOptions.numberOfWeeks > 0);\n };\n Month.prototype.getModuleName = function () {\n return 'month';\n };\n Month.prototype.destroy = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n if (this.element) {\n if (this.monthEvent) {\n this.monthEvent.destroy();\n this.monthEvent = null;\n }\n this.unWireEvents();\n if (this.parent.resourceBase) {\n this.parent.resourceBase.destroy();\n }\n if (this.parent.scheduleTouchModule) {\n this.parent.scheduleTouchModule.resetValues();\n }\n _super.prototype.destroy.call(this);\n }\n };\n return Month;\n}(ViewBase));\nexport { Month };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined, addClass, createElement, append, EventHandler, extend, remove } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { ViewBase } from '../renderer/view-base';\nimport * as util from '../base/util';\nimport * as cls from '../base/css-constant';\nimport * as event from '../base/constant';\nvar AgendaBase = /** @class */ (function (_super) {\n __extends(AgendaBase, _super);\n function AgendaBase(parent) {\n return _super.call(this, parent) || this;\n }\n // eslint-disable-next-line max-len\n AgendaBase.prototype.createAgendaContentElement = function (type, listData, aTd, groupOrder, groupIndex) {\n var _this = this;\n var listElement;\n var fieldMapping = this.parent.eventFields;\n if (type === 'noEvents') {\n var noEvents = [{ 'subject': this.parent.localeObj.getConstant('noEvents') }];\n listElement = ListBase.createList(this.parent.createElement, noEvents, {\n moduleName: 'agenda',\n listClass: this.parent.activeView.viewClass,\n itemClass: this.parent.activeView.viewClass,\n template: '
${subject}
'\n });\n }\n else {\n listElement = ListBase.createList(this.parent.createElement, listData, {\n moduleName: 'agenda',\n listClass: this.parent.activeView.viewClass,\n itemClass: this.parent.activeView.viewClass\n });\n var listElements = [].slice.call(listElement.children);\n listElements.forEach(function (element, li) {\n var appWrapper = createElement('div', {\n className: cls.APPOINTMENT_CLASS, attrs: {\n 'data-id': 'Appointment_' + listData[li][_this.parent.eventFields.id],\n 'data-guid': listData[li].Guid,\n 'role': 'button',\n 'tabindex': '0',\n 'aria-readonly': _this.parent.eventBase.getReadonlyAttribute(listData[li]),\n 'aria-selected': 'false',\n 'aria-grabbed': 'true',\n 'aria-label': _this.parent.getAnnouncementString(listData[li])\n }\n });\n if (!isNullOrUndefined(groupIndex)) {\n appWrapper.setAttribute('data-group-index', groupIndex.toString());\n }\n _this.parent.eventBase.applyResourceColor(appWrapper, listData[li], 'borderColor', groupOrder);\n var templateEle;\n if (!isNullOrUndefined(_this.parent.activeViewOptions.eventTemplate)) {\n addClass([appWrapper], cls.EVENT_TEMPLATE);\n var scheduleId = _this.parent.element.id + '_';\n var viewName = _this.parent.activeViewOptions.eventTemplateName;\n var templateId = scheduleId + viewName + 'eventTemplate';\n templateEle = _this.parent.getAppointmentTemplate()(listData[li], _this.parent, 'eventTemplate', templateId, false);\n if (!isNullOrUndefined(listData[li][fieldMapping.recurrenceRule])) {\n var iconClass = (listData[li][fieldMapping.id] === listData[li][fieldMapping.recurrenceID]) ?\n cls.EVENT_RECURRENCE_ICON_CLASS : cls.EVENT_RECURRENCE_EDIT_ICON_CLASS;\n appWrapper.appendChild(createElement('div', { className: cls.ICON + ' ' + iconClass }));\n }\n }\n else {\n templateEle = _this.createAppointment(listData[li]);\n }\n append([].slice.call(templateEle), appWrapper);\n util.removeChildren(element);\n element.appendChild(appWrapper);\n var args = {\n data: extend({}, listData[li], null, true),\n element: element, cancel: false\n };\n _this.parent.trigger(event.eventRendered, args, function (eventArgs) {\n if (eventArgs.cancel) {\n remove(element);\n }\n });\n });\n }\n aTd.appendChild(listElement);\n if ((this.parent.currentView === 'MonthAgenda' && this.parent.activeViewOptions.group.resources.length > 0)\n || this.parent.currentView === 'Agenda') {\n addClass([aTd], cls.AGENDA_DAY_BORDER_CLASS);\n }\n this.parent.renderTemplates();\n return aTd;\n };\n AgendaBase.prototype.createAppointment = function (event) {\n var fieldMapping = this.parent.eventFields;\n var eventSubject = (event[fieldMapping.subject] || this.parent.eventSettings.fields.subject.default\n || this.parent.localeObj.getConstant('addTitle'));\n var eventLocation = (event[fieldMapping.location] || this.parent.eventSettings.fields.location.default);\n var appSubjectWrap = createElement('div', { className: cls.SUBJECT_WRAP });\n if (!isNullOrUndefined(eventLocation) && eventLocation !== '') {\n eventSubject += ',';\n }\n appSubjectWrap.appendChild(createElement('div', { className: cls.SUBJECT_CLASS, innerHTML: eventSubject }));\n if (!isNullOrUndefined(eventLocation) && eventLocation !== '') {\n appSubjectWrap.appendChild(createElement('div', { className: cls.LOCATION_CLASS, innerHTML: eventLocation }));\n }\n if (!isNullOrUndefined(event[fieldMapping.recurrenceRule])) {\n var iconClass = (event[fieldMapping.id] === event[fieldMapping.recurrenceID]) ?\n cls.EVENT_RECURRENCE_ICON_CLASS : cls.EVENT_RECURRENCE_EDIT_ICON_CLASS;\n appSubjectWrap.appendChild(createElement('div', { className: cls.ICON + ' ' + iconClass }));\n }\n var strDate = event[fieldMapping.startTime];\n var endDate = event[fieldMapping.endTime];\n var isAllDay = event[fieldMapping.isAllDay];\n var allDayStr = this.parent.localeObj.getConstant('allDay');\n var timeStr = this.parent.getTimeString(strDate) + ' - ' + this.parent.getTimeString(endDate);\n if (!isNullOrUndefined(event.data)) {\n var milliSeconds = (endDate.getTimezoneOffset() !== strDate.getTimezoneOffset()) ?\n (endDate.getTime() - strDate.getTime() + 3600000) : (endDate.getTime() - strDate.getTime());\n var eventString = (milliSeconds / util.MS_PER_DAY) >= 1 ? allDayStr : timeStr;\n allDayStr = eventString + ' (' + this.parent.localeObj.getConstant('day') + ' '\n + event.data.index + '/' + event.data.count + ')';\n }\n var displayStr = (!isNullOrUndefined(event.data) || isAllDay) ? allDayStr : timeStr;\n var appDateTime = createElement('div', { className: cls.DATE_TIME_CLASS, innerHTML: displayStr });\n return [appSubjectWrap, appDateTime];\n };\n AgendaBase.prototype.processAgendaEvents = function (events) {\n var eventsProcessed = [];\n if (isNullOrUndefined(events)) {\n return eventsProcessed;\n }\n for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {\n var event_1 = events_1[_i];\n var spanned = this.parent.eventBase.splitEventByDay(event_1);\n eventsProcessed = eventsProcessed.concat(spanned.length > 1 ? spanned : event_1);\n }\n return eventsProcessed;\n };\n AgendaBase.prototype.wireEventActions = function () {\n var eventElement = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n for (var _i = 0, eventElement_1 = eventElement; _i < eventElement_1.length; _i++) {\n var element = eventElement_1[_i];\n this.parent.eventBase.wireAppointmentEvents(element, this.parent.getEventDetails(element), true);\n }\n var dateHeaderElement = [].slice.call(this.parent.element.querySelectorAll('.e-m-date'));\n for (var _a = 0, dateHeaderElement_1 = dateHeaderElement; _a < dateHeaderElement_1.length; _a++) {\n var element = dateHeaderElement_1[_a];\n EventHandler.add(element, 'click', this.parent.agendaModule.dayNavigationClick, this);\n }\n };\n AgendaBase.prototype.calculateResourceTableElement = function (tBody, noOfDays, agendaDate) {\n if (isNullOrUndefined(this.parent.resourceBase.lastResourceLevel)) {\n var level = this.getDateSlots(this.renderDates, this.parent.activeViewOptions.workDays);\n this.parent.resourceBase.generateResourceLevels(level);\n }\n var agendaLastDate = util.addDays(new Date(agendaDate.getTime()), noOfDays);\n var days = (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') ? noOfDays : 1;\n var resColl = this.parent.resourceBase.resourceCollection;\n var resData = this.parent.resourceBase.lastResourceLevel;\n var initialDate = agendaDate;\n for (var i = 0; i < days; i++) {\n var lastLevelInfo = [];\n var tempLastLevelInfo = [];\n var tempIndex = 0;\n var eventObj = void 0;\n var dateObj = void 0;\n var firstDate = util.addDays(initialDate, i);\n var finalDate = (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda')\n ? util.addDays(firstDate, 1) : agendaLastDate;\n var agendaCollection = this.parent.eventBase.filterEvents(firstDate, finalDate);\n if (agendaCollection.length > 0 || !this.parent.hideEmptyAgendaDays || this.parent.currentView === 'MonthAgenda') {\n for (var res = 0; res < resData.length; res++) {\n noOfDays = (!this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') ? noOfDays : 1;\n var data = [];\n agendaDate = firstDate;\n // eslint-disable-next-line max-len\n var resDataCollection = this.parent.eventBase.filterEvents(agendaDate, agendaLastDate, agendaCollection, resData[res]);\n if (resDataCollection.length > 0 || !this.parent.hideEmptyAgendaDays || this.parent.currentView === 'MonthAgenda') {\n for (var r = 0; r < noOfDays; r++) {\n // eslint-disable-next-line max-len\n var resDayCollection = this.parent.eventBase.filterEvents(agendaDate, util.addDays(agendaDate, 1), resDataCollection, undefined);\n if (resDayCollection.length > 0 || !this.parent.hideEmptyAgendaDays ||\n this.parent.currentView === 'MonthAgenda') {\n data.push(resDayCollection[0]);\n eventObj = {\n rowSpan: 1, type: 'eventColumn', resource: resColl[resColl.length - 1],\n groupIndex: resData[res].groupIndex, groupOrder: resData[res].groupOrder,\n resourceData: resData[res].resourceData, eventData: resDayCollection, date: agendaDate\n };\n dateObj = {\n rowSpan: 1, type: 'dateColumn', resource: resColl[resColl.length - 1],\n groupOrder: resData[res].groupOrder, resourceData: resData[res].resourceData,\n date: agendaDate\n };\n if (!lastLevelInfo[tempIndex]) {\n lastLevelInfo[tempIndex] = [];\n }\n lastLevelInfo[tempIndex].push(eventObj);\n lastLevelInfo[tempIndex].push(dateObj);\n tempIndex++;\n }\n agendaDate = util.addDays(agendaDate, 1);\n if (agendaDate.getTime() >= agendaLastDate.getTime() || this.parent.activeViewOptions.group.byDate\n || this.parent.currentView === 'MonthAgenda') {\n lastLevelInfo[lastLevelInfo.length - 1][1].cssClass = cls.AGENDA_DAY_BORDER_CLASS;\n var tempObj = {\n rowSpan: data.length, type: 'resourceColumn', resource: resColl[resColl.length - 1],\n groupOrder: resData[res].groupOrder.slice(0, -1), resourceData: resData[res].resourceData,\n groupIndex: (lastLevelInfo.length - data.length), className: [cls.RESOURCE_NAME],\n date: agendaDate\n };\n lastLevelInfo[lastLevelInfo.length - data.length].push(tempObj);\n tempLastLevelInfo.push(extend({}, tempObj, null, true));\n break;\n }\n }\n }\n }\n var topResources = resColl.slice(0, -1);\n var tempGroupedData = [];\n var totalRowSpan = 0;\n for (var y = 0; y < topResources.length; y++) {\n var data = topResources[topResources.length - (y + 1)].dataSource;\n for (var x = 0; x < data.length; x++) {\n var z = 0;\n for (var u = 0; u < tempLastLevelInfo.length; u++) {\n // eslint-disable-next-line max-len\n if (tempLastLevelInfo[u].groupOrder[topResources.length - (y + 1)] === data[x][topResources[topResources.length - (y + 1)].idField]) {\n totalRowSpan = totalRowSpan + tempLastLevelInfo[u].rowSpan;\n tempGroupedData.push(extend({}, tempLastLevelInfo[u], null, true));\n }\n if (++z === tempLastLevelInfo.length && tempGroupedData.length > 0) {\n tempGroupedData[0].rowSpan = totalRowSpan;\n tempGroupedData[0].type = 'parentColumnLevel_' + (y + 1);\n tempGroupedData[0].resource = topResources[topResources.length - (y + 1)];\n tempGroupedData[0].resourceData = data[x];\n tempGroupedData[0].date = agendaDate;\n lastLevelInfo[tempGroupedData[0].groupIndex].push(tempGroupedData[0]);\n tempGroupedData = [];\n totalRowSpan = 0;\n }\n }\n }\n }\n this.createResourceTableRow(lastLevelInfo, tBody);\n }\n }\n var totalCollection = this.parent.eventBase.filterEvents(initialDate, agendaLastDate);\n if (totalCollection.length === 0 && !this.parent.activeViewOptions.allowVirtualScrolling && this.parent.hideEmptyAgendaDays) {\n this.renderEmptyContent(tBody, initialDate);\n }\n };\n AgendaBase.prototype.createResourceTableRow = function (tContent, tBody) {\n var tr = createElement('tr', { attrs: { role: 'row' } });\n var ntr;\n var td = createElement('td', { attrs: { role: 'gridcell', 'aria-selected': 'false' } });\n var tempData;\n var rowSpan = 0;\n var level;\n if (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') {\n var tContentCollection = [];\n var parentCollection = this.parent.resourceBase.resourceCollection.slice(0, -1);\n for (var w = 0; w < tContent.length; w++) {\n tContentCollection = tContentCollection.concat(tContent[w]);\n }\n level = (parentCollection.length > 0) ? 'parentColumnLevel_' + parentCollection.length : 'resourceColumn';\n var rowSpanCollection = tContentCollection.filter(function (data) { return data.type === level; });\n for (var x = 0; x < rowSpanCollection.length; x++) {\n rowSpan = rowSpan + rowSpanCollection[x].rowSpan;\n }\n }\n for (var row = 0; row < tContent.length; row++) {\n ntr = tr.cloneNode();\n for (var col = tContent[row].length - 1; col >= 0; col--) {\n var data = tContent[row][col];\n var ntd = td.cloneNode();\n if (data.type === 'dateColumn') {\n if (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') {\n tempData = tContent[row][col];\n continue;\n }\n ntd.setAttribute('data-date', data.date.getTime().toString());\n ntd.appendChild(this.createDateHeaderElement(data.date));\n var className = [cls.AGENDA_CELLS_CLASS, cls.AGENDA_DATE_CLASS];\n if (data.cssClass) {\n className.push(data.cssClass);\n }\n addClass([ntd], className);\n ntr.appendChild(ntd);\n }\n else if (data.type === 'eventColumn') {\n var elementType = (data.eventData.length === 0) ? 'noEvents' : 'data';\n ntd = this.createAgendaContentElement(elementType, data.eventData, ntd, data.groupOrder, data.groupIndex);\n ntd.setAttribute('data-date', data.date.getTime().toString());\n if (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') {\n addClass([ntd], [cls.AGENDA_CELLS_CLASS, cls.AGENDA_DAY_PADDING_CLASS]);\n }\n ntr.appendChild(ntd);\n }\n else {\n ntd.setAttribute('rowspan', data.rowSpan.toString());\n addClass([ntd], cls.AGENDA_RESOURCE_CLASS);\n this.setResourceHeaderContent(ntd, data, data.className[0]);\n ntr.appendChild(ntd);\n }\n }\n if (this.parent.activeViewOptions.group.byDate && row === 0 && this.parent.currentView !== 'MonthAgenda') {\n var ntd = td.cloneNode();\n ntd.setAttribute('data-date', tempData.date.getTime().toString());\n ntd.setAttribute('rowspan', rowSpan.toString());\n ntd.appendChild(this.createDateHeaderElement(tempData.date));\n addClass([ntd], [cls.AGENDA_CELLS_CLASS, cls.AGENDA_DATE_CLASS, cls.DATE_BORDER_CLASS]);\n var daysCount = util.getDaysCount(this.parent.selectedDate.getTime(), tempData.date.getTime());\n ntr.setAttribute('aria-rowindex', daysCount.toString());\n if (this.parent.element.querySelector(\".e-agenda-view tr[aria-rowindex=\\\"\" + daysCount + \"\\\"]\")) {\n break;\n }\n ntr.insertBefore(ntd, ntr.childNodes[0]);\n }\n tBody.appendChild(ntr);\n }\n };\n AgendaBase.prototype.createDateHeaderElement = function (date) {\n var dateHeader;\n if (this.parent.activeViewOptions.dateHeaderTemplate) {\n dateHeader = createElement('div', { className: cls.AGENDA_HEADER_CLASS });\n var args = { date: date, type: 'dateHeader' };\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.dateHeaderTemplateName;\n var templateId = scheduleId + viewName + 'dateHeaderTemplate';\n var dateTemplate = [].slice.call(this.parent.getDateHeaderTemplate()(args, this.parent, 'dateHeaderTemplate', templateId, false));\n append(dateTemplate, dateHeader);\n }\n else {\n dateHeader = this.getMobileDateElement(date, cls.AGENDA_HEADER_CLASS);\n }\n return dateHeader;\n };\n AgendaBase.prototype.renderEmptyContent = function (tBody, agendaDate) {\n var eTr = this.createTableRowElement(agendaDate, 'noEvents');\n var eTd = eTr.children[0];\n var noEvents = createElement('div', {\n className: cls.AGENDA_EMPTY_EVENT_CLASS,\n innerHTML: this.parent.localeObj.getConstant('noEvents')\n });\n eTd.appendChild(noEvents);\n tBody.appendChild(eTr);\n };\n AgendaBase.prototype.createTableRowElement = function (date, type) {\n var daysCount = util.getDaysCount(this.parent.selectedDate.getTime(), date.getTime());\n var tr = createElement('tr', { attrs: { 'role': 'row', 'aria-rowindex': daysCount.toString() } });\n var td = createElement('td', {\n attrs: {\n 'class': (type === 'monthHeader') ? cls.MONTH_HEADER_CLASS : cls.AGENDA_CELLS_CLASS,\n 'role': 'gridcell',\n 'aria-selected': 'false',\n 'aria-colindex': daysCount.toString(),\n 'data-date': date.getTime().toString()\n }\n });\n var dTd = td.cloneNode();\n var aTd = td.cloneNode();\n tr.appendChild(dTd);\n if (type !== 'noEvents') {\n tr.appendChild(aTd);\n }\n return tr;\n };\n AgendaBase.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n return AgendaBase;\n}(ViewBase));\nexport { AgendaBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { formatUnit, isNullOrUndefined, closest, extend, append, prepend, remove } from '@syncfusion/ej2-base';\nimport { createElement, addClass, EventHandler } from '@syncfusion/ej2-base';\nimport { AgendaBase } from '../event-renderer/agenda-base';\nimport * as util from '../base/util';\nimport * as event from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * agenda view\n */\nvar Agenda = /** @class */ (function (_super) {\n __extends(Agenda, _super);\n function Agenda(parent) {\n var _this = _super.call(this, parent) || this;\n _this.viewClass = 'e-agenda-view';\n _this.isInverseTableSelect = false;\n _this.agendaDates = {};\n _this.virtualScrollTop = 1;\n return _this;\n }\n Agenda.prototype.getModuleName = function () {\n return 'agenda';\n };\n Agenda.prototype.renderLayout = function () {\n this.agendaDates = {};\n this.element = createElement('div', { className: cls.TABLE_WRAP_CLASS });\n addClass([this.element], this.viewClass);\n this.element.appendChild(this.createTableLayout(cls.OUTER_TABLE_CLASS));\n this.element.querySelector('table').setAttribute('role', 'presentation');\n this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS).appendChild(this.element);\n var eTr = createElement('tr');\n this.element.querySelector('tbody').appendChild(eTr);\n var workTd = createElement('td');\n eTr.appendChild(workTd);\n var wrap = createElement('div', { className: cls.CONTENT_WRAP_CLASS });\n workTd.appendChild(wrap);\n var tbl = this.createTableLayout(cls.CONTENT_TABLE_CLASS);\n wrap.appendChild(tbl);\n var tBody = tbl.querySelector('tbody');\n var agendaDate = util.resetTime(this.parent.selectedDate);\n this.renderEmptyContent(tBody, agendaDate);\n this.wireEvents();\n if (this.parent.resourceBase) {\n this.parent.resourceBase.generateResourceLevels([{ renderDates: this.parent.activeView.renderDates }]);\n }\n if (this.parent.uiStateValues.isGroupAdaptive && !this.parent.element.querySelector('.' + cls.RESOURCE_TOOLBAR_CONTAINER)) {\n this.renderResourceMobileLayout();\n }\n this.parent.notify(event.contentReady, {});\n };\n Agenda.prototype.eventLoad = function (args) {\n this.dataSource = extend([], this.parent.eventsData, null, true);\n for (var _i = 0, _a = this.parent.eventsData; _i < _a.length; _i++) {\n var event_1 = _a[_i];\n delete event_1.generatedDates;\n }\n var eventCollection = this.parent.activeViewOptions.allowVirtualScrolling ?\n args.processedData : this.parent.eventsProcessed;\n if (this.parent.uiStateValues.isGroupAdaptive) {\n var resource = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex];\n this.dataSource = this.parent.eventBase.filterEventsByResource(resource, this.dataSource);\n eventCollection = this.parent.eventBase.filterEventsByResource(resource, eventCollection);\n }\n this.parent.eventsProcessed = this.processAgendaEvents(eventCollection);\n var agendaDate = util.resetTime(this.parent.selectedDate);\n var tBody = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS + ' tbody');\n util.removeChildren(tBody);\n this.renderInitialContent(tBody, agendaDate);\n this.wireEventActions();\n var contentArea = closest(tBody, '.' + cls.CONTENT_WRAP_CLASS);\n contentArea.scrollTop = 1;\n this.parent.notify(event.eventsLoaded, {});\n if (!this.parent.activeViewOptions.allowVirtualScrolling) {\n this.retainScrollPosition();\n }\n };\n Agenda.prototype.refreshEvent = function (refreshDate) {\n var processedData = [];\n var fields = this.parent.eventFields;\n for (var _i = 0, _a = this.dataSource; _i < _a.length; _i++) {\n var data = _a[_i];\n if (isNullOrUndefined(data[fields.recurrenceID]) && !isNullOrUndefined(data[fields.recurrenceRule]) &&\n !isNullOrUndefined(data.generatedDates) && refreshDate >= data.generatedDates.end) {\n processedData = processedData.concat(this.parent.eventBase.generateOccurrence(data, refreshDate));\n }\n }\n this.parent.eventsProcessed = this.parent.eventsProcessed.concat(this.processAgendaEvents(processedData));\n };\n Agenda.prototype.refreshHeader = function () {\n var tBody = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS + ' tbody');\n if (this.parent.activeViewOptions.group.byDate) {\n util.removeChildren(tBody);\n }\n else {\n remove(tBody.firstElementChild);\n }\n var agendaDate = util.resetTime(this.parent.selectedDate);\n var emptyTBody = createElement('tbody');\n var firstDate = new Date(agendaDate.getTime());\n var lastDate = (this.parent.activeViewOptions.allowVirtualScrolling && this.parent.hideEmptyAgendaDays) ?\n this.getEndDateFromStartDate(firstDate) : util.addDays(firstDate, this.parent.agendaDaysCount);\n this.renderContent(emptyTBody, firstDate, lastDate);\n append([].slice.call(emptyTBody.childNodes), tBody);\n };\n Agenda.prototype.renderInitialContent = function (tBody, agendaDate) {\n var emptyTBody = createElement('tbody');\n var firstDate = new Date(agendaDate.getTime());\n var lastDate = (this.parent.activeViewOptions.allowVirtualScrolling && this.parent.hideEmptyAgendaDays) ?\n this.getEndDateFromStartDate(firstDate) : util.addDays(firstDate, this.parent.agendaDaysCount);\n this.renderContent(emptyTBody, firstDate, lastDate);\n append([].slice.call(emptyTBody.childNodes), tBody);\n // Initial rendering, to load previous date events upto scroll bar enable\n if (this.parent.activeViewOptions.allowVirtualScrolling && this.parent.hideEmptyAgendaDays && this.parent.eventsData.length > 0) {\n var contentArea = this.getContentAreaElement();\n var contentChild = contentArea.querySelector('.e-content-table');\n while (contentArea.offsetWidth <= contentArea.clientWidth) {\n if (this.parent.isAdaptive && contentChild.offsetHeight >= contentArea.clientHeight) {\n break;\n }\n var emptyTBody_1 = createElement('tbody');\n lastDate = firstDate;\n firstDate = util.addDays(lastDate, -this.parent.agendaDaysCount);\n this.renderContent(emptyTBody_1, firstDate, lastDate);\n prepend([].slice.call(emptyTBody_1.childNodes), tBody);\n if (firstDate <= this.parent.minDate) {\n break;\n }\n }\n }\n if (tBody.childNodes.length <= 0) {\n this.renderEmptyContent(tBody, agendaDate);\n }\n };\n Agenda.prototype.renderContent = function (tBody, agendaDate, lastDate) {\n var fieldMapping = this.parent.eventFields;\n var firstDate = new Date(agendaDate.getTime());\n var isObject = this.appointmentFiltering(firstDate, lastDate);\n if (isObject.length > 0 && this.parent.activeViewOptions.allowVirtualScrolling && this.parent.hideEmptyAgendaDays) {\n agendaDate = isObject[0][fieldMapping.startTime];\n agendaDate = new Date(new Date(agendaDate.getTime()).setHours(0, 0, 0, 0));\n this.updateHeaderText(isObject[0][fieldMapping.startTime]);\n }\n var endDate;\n if (!this.parent.hideEmptyAgendaDays || (this.parent.agendaDaysCount > 0 && isObject.length > 0)) {\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n var date = agendaDate;\n if (!this.parent.activeViewOptions.group.byDate) {\n this.parent.activeViewOptions.allowVirtualScrolling = false;\n date = firstDate;\n if (this.parent.headerModule) {\n this.parent.headerModule.updateDateRange(this.parent.activeView.getDateRangeText());\n this.parent.headerModule.updateHeaderItems('remove');\n }\n }\n this.calculateResourceTableElement(tBody, this.parent.agendaDaysCount, date);\n }\n else {\n for (var day = 0; day < this.parent.agendaDaysCount; day++) {\n var filterData = this.appointmentFiltering(agendaDate);\n var nTr = this.createTableRowElement(agendaDate, 'data');\n if (this.element.querySelector('tr[aria-rowindex=\"' + parseInt(nTr.getAttribute('aria-rowindex'), 10) + '\"]')) {\n agendaDate = util.addDays(agendaDate, 1);\n continue;\n }\n var dTd = nTr.children[0];\n var aTd = nTr.children[1];\n if (filterData.length > 0 || (!this.parent.hideEmptyAgendaDays && filterData.length === 0)) {\n var elementType = (!this.parent.hideEmptyAgendaDays && filterData.length === 0) ? 'noEvents' : 'data';\n dTd.appendChild(this.createDateHeaderElement(agendaDate));\n nTr.appendChild(dTd);\n var cTd = this.createAgendaContentElement(elementType, filterData, aTd);\n nTr.appendChild(cTd);\n if (cTd.querySelectorAll('li').length > 0) {\n tBody.appendChild(nTr);\n }\n }\n else if (this.parent.activeViewOptions.allowVirtualScrolling) {\n day--;\n }\n if (this.isCurrentDate(new Date(agendaDate.getTime()))) {\n addClass(dTd.childNodes, cls.AGENDA_CURRENT_DAY_CLASS);\n }\n agendaDate = util.addDays(agendaDate, 1);\n if (agendaDate.getTime() > lastDate.getTime()) {\n break;\n }\n }\n }\n endDate = new Date(agendaDate.getTime() - util.MS_PER_DAY);\n }\n this.agendaDates = { start: firstDate, end: endDate };\n };\n Agenda.prototype.agendaScrolling = function (event) {\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide();\n }\n if (this.parent.activeViewOptions.allowVirtualScrolling) {\n this.virtualScrolling(event);\n }\n if (!this.parent.activeViewOptions.allowVirtualScrolling) {\n this.setPersistence();\n }\n };\n Agenda.prototype.virtualScrolling = function (event) {\n var target = event.target;\n var scrollTop = target.scrollTop;\n var scrollHeight = target.scrollHeight;\n var offsetHeight = target.clientHeight;\n var totalHeight = scrollTop + offsetHeight;\n var direction = (this.virtualScrollTop < scrollTop) ? 'next' : 'previous';\n var tBody = target.querySelector('tbody');\n var emptyTBody = createElement('tbody');\n var topElement = this.getElementFromScrollerPosition(event);\n var scrollDate = this.parent.getDateFromElement(topElement);\n var filterDate;\n var filterData;\n if (scrollTop === 0) {\n filterDate = this.getPreviousNextDate(util.addDays(scrollDate, -1), direction);\n filterData = this.appointmentFiltering(filterDate.start, filterDate.end);\n if (filterData.length > 0 || !this.parent.hideEmptyAgendaDays) {\n this.renderContent(emptyTBody, filterDate.start, filterDate.end);\n prepend([].slice.call(emptyTBody.childNodes), tBody);\n this.wireEventActions();\n for (var s = 0, element = tBody.children; s < element.length; s++) {\n if (element[s].getAttribute('aria-rowindex') === topElement.getAttribute('aria-colindex')) {\n var scrollToValue = element[s].offsetTop -\n this.element.querySelector('.e-agenda-item').offsetHeight;\n target.scrollTop = scrollToValue;\n break;\n }\n }\n this.updateHeaderText(scrollDate);\n }\n }\n else if (totalHeight >= (scrollHeight - 5)) {\n filterDate = this.getPreviousNextDate(util.addDays(scrollDate, 1), direction);\n filterData = this.appointmentFiltering(filterDate.start, filterDate.end);\n if (filterData.length > 0 || !this.parent.hideEmptyAgendaDays) {\n this.renderContent(emptyTBody, filterDate.start, filterDate.end);\n append([].slice.call(emptyTBody.childNodes), tBody);\n this.wireEventActions();\n this.updateHeaderText(scrollDate);\n }\n }\n else {\n this.updateHeaderText(scrollDate);\n }\n this.virtualScrollTop = scrollTop;\n var selectedElements = this.parent.eventBase.getSelectedAppointments();\n if (selectedElements.length > 0) {\n selectedElements[selectedElements.length - 1].focus();\n }\n };\n Agenda.prototype.getElementFromScrollerPosition = function (event) {\n var filterElement;\n var target = event.target;\n var scrollTop = target.scrollTop;\n var scrollHeight = target.scrollHeight;\n var offsetHeight = target.clientHeight;\n var totalHeight = scrollTop + offsetHeight;\n var liCollection = [].slice.call(target.querySelectorAll('.e-agenda-item'));\n var li;\n var liDetails;\n if (liCollection.length > 0) {\n if (scrollTop === 0) {\n li = liCollection[0];\n filterElement = closest(li, '.' + cls.AGENDA_CELLS_CLASS);\n }\n else if (totalHeight === scrollHeight) {\n li = liCollection[liCollection.length - 1];\n filterElement = closest(li, '.' + cls.AGENDA_CELLS_CLASS);\n }\n else {\n for (var a = 0, length_1 = liCollection.length; a < length_1; a++) {\n li = liCollection[a];\n liDetails = li.getBoundingClientRect();\n if (liDetails.top >= 0) {\n filterElement = closest(li, '.' + cls.AGENDA_CELLS_CLASS);\n break;\n }\n }\n }\n }\n return filterElement;\n };\n Agenda.prototype.updateHeaderText = function (date) {\n if (this.parent.showHeaderBar) {\n this.parent.headerModule.updateDateRange(this.getDateRangeText(date));\n }\n };\n Agenda.prototype.getPreviousNextDate = function (date, type) {\n var currentDate = new Date(date.getTime());\n var firstDate = this.getStartDateFromEndDate(date);\n var lastDate = this.getEndDateFromStartDate(date);\n var daysCount = 0;\n do {\n var filterData = this.appointmentFiltering(currentDate);\n if (filterData.length > 0 || !this.parent.hideEmptyAgendaDays) {\n daysCount++;\n }\n currentDate = util.addDays(currentDate, (type === 'next') ? 1 : -1);\n if (currentDate < firstDate || currentDate > lastDate) {\n break;\n }\n } while (daysCount !== this.parent.agendaDaysCount);\n var endDate = util.addDays(currentDate, (type === 'next') ? -1 : 1);\n return (type === 'next') ? { start: date, end: util.addDays(endDate, 1) } : { start: endDate, end: util.addDays(date, 1) };\n };\n Agenda.prototype.appointmentFiltering = function (startDate, endDate) {\n var dateStart;\n var dateEnd;\n if (!isNullOrUndefined(startDate) && isNullOrUndefined(endDate)) {\n dateStart = util.resetTime(new Date(startDate.getTime()));\n dateEnd = util.setTime(new Date(dateStart.getTime()), util.MS_PER_DAY);\n }\n else {\n dateStart = new Date(startDate.getTime());\n dateEnd = new Date(endDate.getTime());\n }\n var filterData = this.parent.eventBase.filterEvents(dateStart, dateEnd);\n if (filterData.length === 0) {\n this.refreshEvent(startDate);\n filterData = this.parent.eventBase.filterEvents(dateStart, dateEnd);\n }\n return filterData;\n };\n Agenda.prototype.getStartDateFromEndDate = function (endDate) {\n var filterDate;\n var fields = this.parent.eventFields;\n if (this.parent.eventsProcessed.length > 0) {\n var firstDate = Math.min.apply(Math, this.parent.eventsProcessed.map(function (a) {\n return a[fields.startTime].getTime();\n }));\n filterDate = this.parent.hideEmptyAgendaDays ? new Date(firstDate) : this.parent.minDate;\n }\n else {\n filterDate = this.parent.hideEmptyAgendaDays ? util.addMonths(endDate, -1) : this.parent.minDate;\n }\n return util.resetTime(filterDate);\n };\n Agenda.prototype.getEndDateFromStartDate = function (startDate) {\n var filterDate;\n var fieldMapping = this.parent.eventFields;\n if (this.parent.eventsProcessed.length > 0) {\n var lastDate = Math.max.apply(Math, this.parent.eventsProcessed.map(function (a) {\n return a[fieldMapping.endTime].getTime();\n }));\n filterDate = this.parent.hideEmptyAgendaDays ? new Date(lastDate) : this.parent.maxDate;\n }\n else {\n filterDate = this.parent.hideEmptyAgendaDays ? util.addMonths(startDate, 1) : this.parent.maxDate;\n }\n return util.resetTime(util.addDays(filterDate, 1));\n };\n Agenda.prototype.getNextPreviousDate = function (type) {\n var noOfDays = (type === 'next') ? 1 : -1;\n return util.addDays(this.parent.selectedDate, noOfDays);\n };\n Agenda.prototype.startDate = function () {\n return util.resetTime(this.parent.selectedDate);\n };\n Agenda.prototype.endDate = function () {\n if (this.parent.activeViewOptions.allowVirtualScrolling) {\n return this.getEndDateFromStartDate(this.startDate());\n }\n else {\n return util.addDays(this.startDate(), this.parent.agendaDaysCount);\n }\n };\n Agenda.prototype.getDateRangeText = function (date) {\n var formatDate = (this.parent.activeViewOptions.dateFormat) ? this.parent.activeViewOptions.dateFormat : 'MMMM y';\n if (this.parent.activeViewOptions.allowVirtualScrolling || this.parent.isAdaptive) {\n var currentDate = isNullOrUndefined(date) ? this.parent.selectedDate : date;\n return util.capitalizeFirstWord(this.parent.globalize.formatDate(currentDate, { format: formatDate, calendar: this.parent.getCalendarMode() }), 'multiple');\n }\n else {\n var startDate = this.parent.selectedDate;\n var endDate = util.addDays(startDate, this.parent.agendaDaysCount - 1);\n return this.formatDateRange(startDate, endDate);\n }\n };\n Agenda.prototype.dayNavigationClick = function (e) {\n var element = closest(e.currentTarget, '.' + cls.AGENDA_CELLS_CLASS);\n var date = this.parent.getDateFromElement(element);\n if (!isNullOrUndefined(date) && !this.parent.isAdaptive && this.parent.isMinMaxDate(date)) {\n this.parent.setProperties({ selectedDate: date }, true);\n this.parent.changeView('Day', e);\n }\n };\n Agenda.prototype.wireEvents = function () {\n EventHandler.add(this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS), event.scroll, this.agendaScrolling, this);\n };\n Agenda.prototype.unWireEvents = function () {\n EventHandler.remove(this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS), event.scroll, this.agendaScrolling);\n var dateHeaderElement = [].slice.call(this.element.querySelectorAll('.e-m-date'));\n for (var _i = 0, dateHeaderElement_1 = dateHeaderElement; _i < dateHeaderElement_1.length; _i++) {\n var element = dateHeaderElement_1[_i];\n EventHandler.remove(element, 'click', this.dayNavigationClick);\n }\n };\n Agenda.prototype.addEventListener = function () {\n this.parent.on(event.scrollUiUpdate, this.onAgendaScrollUiUpdate, this);\n this.parent.on(event.dataReady, this.eventLoad, this);\n };\n Agenda.prototype.removeEventListener = function () {\n if (this.parent) {\n this.parent.off(event.scrollUiUpdate, this.onAgendaScrollUiUpdate);\n this.parent.off(event.dataReady, this.eventLoad);\n }\n };\n Agenda.prototype.onAgendaScrollUiUpdate = function () {\n var headerHeight = this.getHeaderBarHeight();\n if (this.parent.headerModule) {\n if (this.parent.activeViewOptions.allowVirtualScrolling) {\n this.parent.headerModule.updateHeaderItems('add');\n }\n else {\n this.parent.headerModule.updateHeaderItems('remove');\n }\n }\n var contentArea = this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (this.parent.height !== 'auto') {\n contentArea.style.height = formatUnit(this.parent.element.offsetHeight - headerHeight);\n }\n };\n Agenda.prototype.destroy = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n if (this.element) {\n this.unWireEvents();\n if (this.parent.resourceBase) {\n this.parent.resourceBase.destroy();\n }\n if (this.parent.headerModule && this.parent.activeViewOptions.allowVirtualScrolling) {\n this.parent.headerModule.updateHeaderItems('remove');\n }\n _super.prototype.destroy.call(this);\n }\n };\n return Agenda;\n}(AgendaBase));\nexport { Agenda };\n","import { createElement } from '@syncfusion/ej2-base';\nimport { MS_PER_DAY, capitalizeFirstWord } from '../base/util';\n/**\n * timeline header rows\n */\nvar TimelineHeaderRow = /** @class */ (function () {\n function TimelineHeaderRow(parent, renderDates) {\n this.parent = parent;\n this.renderDates = renderDates;\n }\n TimelineHeaderRow.prototype.groupByYear = function (dates) {\n var result = {};\n for (var _i = 0, dates_1 = dates; _i < dates_1.length; _i++) {\n var d = dates_1[_i];\n var key = d.getFullYear();\n result[key] = result[key] || [];\n result[key].push(d);\n }\n return result;\n };\n TimelineHeaderRow.prototype.groupByMonth = function (dates) {\n var result = {};\n for (var _i = 0, dates_2 = dates; _i < dates_2.length; _i++) {\n var d = dates_2[_i];\n var key = (d.getFullYear() - 1970) * 12 + d.getMonth();\n result[key] = result[key] || [];\n result[key].push(d);\n }\n return result;\n };\n TimelineHeaderRow.prototype.groupByWeek = function (dates) {\n var result = {};\n for (var _i = 0, dates_3 = dates; _i < dates_3.length; _i++) {\n var d = dates_3[_i];\n var jsDate = +new Date(1970, 0, 1);\n var tzOffsetDiff = d.getTimezoneOffset() - new Date(1970, 0, 1).getTimezoneOffset();\n var key = Math.ceil(((((+d - jsDate) - (tzOffsetDiff * 60 * 1000)) / MS_PER_DAY) + new Date(jsDate).getDay() + 1) / 7);\n if (this.parent.firstDayOfWeek && this.parent.firstDayOfWeek > new Date(+d).getDay()) {\n key = key - 1;\n }\n result[key] = result[key] || [];\n result[key].push(d);\n }\n return result;\n };\n TimelineHeaderRow.prototype.generateSlots = function (data, colspan, row, cls, type) {\n var _this = this;\n var dateParser = function (date, format) {\n return _this.parent.globalize.formatDate(date, { format: format, calendar: _this.parent.getCalendarMode() });\n };\n var tdDatas = [];\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n var dates = data[keys[i]];\n var htmlCol = void 0;\n if (row.template) {\n var args = { date: dates[0], type: type };\n var templateId = this.parent.element.id + '_headerRowTemplate';\n htmlCol = [].slice.call(this.parent.templateParser(row.template)(args, this.parent, 'template', templateId, false));\n }\n else {\n var viewTemplate = void 0;\n switch (row.option) {\n case 'Year':\n viewTemplate = \"\" + dateParser(dates[0], 'y') + \"\";\n break;\n case 'Month':\n viewTemplate = \"\" + capitalizeFirstWord(dateParser(dates[0], 'MMMM'), 'single') + \"\";\n break;\n case 'Week':\n viewTemplate = \"\" + this.parent.getWeekNumberContent(dates) + \"\";\n }\n var headerWrapper = createElement('div', { innerHTML: viewTemplate });\n htmlCol = [].slice.call(headerWrapper.childNodes);\n }\n tdDatas.push({ date: dates[0], type: type, className: [cls], colSpan: dates.length * colspan, template: htmlCol });\n }\n return tdDatas;\n };\n TimelineHeaderRow.prototype.generateColumnLevels = function (dateSlots, hourSlots) {\n var levels = [];\n var rows = this.parent.activeViewOptions.headerRows;\n var lastLevelColspan = 1;\n if (rows[rows.length - 1].option === 'Hour' && hourSlots.length > 0) {\n lastLevelColspan = hourSlots.length / dateSlots.length;\n }\n var tdDatas = [];\n var byYear;\n var byMonth;\n var byWeek;\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n switch (row.option) {\n case 'Year':\n byYear = this.groupByYear(this.renderDates);\n tdDatas = this.generateSlots(byYear, lastLevelColspan, row, 'e-header-year-cell', 'yearHeader');\n levels.push(tdDatas);\n break;\n case 'Month':\n byMonth = this.groupByMonth(this.renderDates);\n tdDatas = this.generateSlots(byMonth, lastLevelColspan, row, 'e-header-month-cell', 'monthHeader');\n levels.push(tdDatas);\n break;\n case 'Week':\n byWeek = this.groupByWeek(this.renderDates);\n tdDatas = this.generateSlots(byWeek, lastLevelColspan, row, 'e-header-week-cell', 'weekHeader');\n levels.push(tdDatas);\n break;\n case 'Date':\n tdDatas = dateSlots;\n tdDatas = tdDatas.map(function (value) {\n value.colSpan = lastLevelColspan;\n return value;\n });\n levels.push(tdDatas);\n break;\n case 'Hour':\n if (hourSlots.length > 0) {\n levels.push(hourSlots);\n }\n break;\n }\n }\n return levels;\n };\n return TimelineHeaderRow;\n}());\nexport { TimelineHeaderRow };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, createElement, prepend, extend, formatUnit, append, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { VerticalView } from './vertical-view';\nimport { TimelineEvent } from '../event-renderer/timeline-view';\nimport { TimelineHeaderRow } from './timeline-header-row';\nimport * as event from '../base/constant';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\n/**\n * timeline views\n */\nvar TimelineViews = /** @class */ (function (_super) {\n __extends(TimelineViews, _super);\n function TimelineViews(parent) {\n var _this = _super.call(this, parent) || this;\n _this.timelineAppointment = null;\n _this.baseCssClass = 'e-timeline-view';\n return _this;\n }\n TimelineViews.prototype.getModuleName = function () {\n return 'timelineViews';\n };\n TimelineViews.prototype.getLeftPanelElement = function () {\n return this.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);\n };\n TimelineViews.prototype.scrollTopPanel = function (target) {\n _super.prototype.scrollTopPanel.call(this, target);\n this.scrollHeaderLabels(target);\n };\n TimelineViews.prototype.scrollToWorkHour = function () {\n var start = this.parent.getStartEndTime(this.parent.workHours.start);\n var currDateTime = this.isWorkDay(this.parent.selectedDate) && this.parent.workHours.highlight &&\n !isNullOrUndefined(start) ? new Date(+this.parent.selectedDate).setHours(start.getHours(), start.getMinutes(), 0, 0)\n : new Date(+this.parent.selectedDate).setHours(0, 0, 0, 0);\n var queryString = '[data-date=\"' + new Date(currDateTime).getTime().toString() + '\"]';\n var firstWorkHourCell = this.element.querySelector(queryString);\n if (firstWorkHourCell) {\n this.getContentAreaElement().scrollLeft = !this.parent.enableRtl ? firstWorkHourCell.offsetLeft :\n -(this.parent.getContentTable().offsetWidth - firstWorkHourCell.offsetLeft - firstWorkHourCell.offsetWidth);\n }\n };\n TimelineViews.prototype.scrollToHour = function (hour, scrollDate) {\n var date;\n var index;\n if (scrollDate) {\n index = this.parent.getIndexOfDate(this.renderDates, util.resetTime(scrollDate));\n if (index >= 0) {\n var timeString = hour.split(':');\n if (timeString.length === 2) {\n date = new Date(scrollDate.setHours(parseInt(timeString[0], 10), parseInt(timeString[1], 10), 0));\n }\n }\n }\n date = isNullOrUndefined(scrollDate) ? this.parent.getStartEndTime(hour) : date;\n if (isNullOrUndefined(date)) {\n return;\n }\n var scrollLeft = isNullOrUndefined(scrollDate) ? this.getLeftFromDateTime(null, date) :\n this.getLeftFromDateTime([index], date);\n this.getScrollableElement().scrollLeft = !this.parent.enableRtl ? scrollLeft : -scrollLeft;\n };\n TimelineViews.prototype.generateColumnLevels = function () {\n var levels = [];\n var dateSlots = this.getDateSlots(this.renderDates, this.parent.activeViewOptions.workDays);\n levels.push(dateSlots);\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.parent.resourceBase.generateResourceLevels(dateSlots, !this.parent.uiStateValues.isGroupAdaptive);\n }\n var hourSlots = [];\n if (this.parent.activeViewOptions.timeScale.enable) {\n hourSlots = this.generateTimeSlots(levels[levels.length - 1]);\n levels.push(hourSlots);\n }\n if (this.parent.activeViewOptions.headerRows.length > 0) {\n var renderGn = new TimelineHeaderRow(this.parent, this.renderDates);\n levels = renderGn.generateColumnLevels(dateSlots, hourSlots);\n }\n return levels;\n };\n TimelineViews.prototype.generateTimeSlots = function (dateSlots) {\n var _this = this;\n var handler = function (r) {\n r.type = r.first ? 'majorSlot' : 'minorSlot';\n r.className = r.first ? [cls.TIME_SLOT_CLASS] : [cls.TIME_SLOT_CLASS, cls.TIME_CELLS_CLASS];\n r.workDays = _this.parent.activeViewOptions.workDays;\n return r;\n };\n var timeSlotData = this.getTimeSlotRows(handler);\n var slots = [];\n for (var _i = 0, dateSlots_1 = dateSlots; _i < dateSlots_1.length; _i++) {\n var data = dateSlots_1[_i];\n data.colSpan = timeSlotData.length;\n var tempTimeSlots = extend([], timeSlotData, null, true);\n for (var _a = 0, tempTimeSlots_1 = tempTimeSlots; _a < tempTimeSlots_1.length; _a++) {\n var slot = tempTimeSlots_1[_a];\n var cellDate = util.resetTime(new Date('' + data.date));\n slot.date = util.setTime(cellDate, util.getDateInMs(slot.date));\n slots.push(slot);\n }\n }\n return slots;\n };\n TimelineViews.prototype.changeCurrentTimePosition = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.removeCurrentTimeIndicatorElements();\n var currentDateIndex = this.getCurrentTimeIndicatorIndex();\n var left = this.getLeftFromDateTime(currentDateIndex, this.parent.getCurrentTime());\n var height = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS).offsetHeight;\n var headerWrap = this.element.querySelector('.' + cls.DATE_HEADER_WRAP_CLASS);\n var contentWrap = this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n contentWrap.appendChild(createElement('div', {\n className: cls.CURRENT_TIMELINE_CLASS,\n styles: (this.parent.enableRtl ? 'right' : 'left') + ':' + formatUnit(left) + '; height:' + formatUnit(height)\n }));\n if (this.parent.virtualScrollModule) {\n var timeIndicator = this.parent.element.querySelector('.' + cls.CURRENT_TIMELINE_CLASS);\n var element = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS + ' table');\n setStyleAttribute(timeIndicator, {\n transform: element.style.transform\n });\n }\n var currentTimeEle = createElement('div', {\n innerHTML: this.parent.getTimeString(this.parent.getCurrentTime()),\n className: cls.CURRENT_TIME_CLASS\n });\n headerWrap.appendChild(currentTimeEle);\n currentTimeEle.style[this.parent.enableRtl ? 'right' : 'left'] = formatUnit(left - (currentTimeEle.offsetWidth / 2));\n };\n TimelineViews.prototype.getLeftFromDateTime = function (currentDateIndex, date) {\n var startHour = this.getStartHour();\n var endHour = this.getEndHour();\n var diffInDates = 0;\n var diffInMinutes = ((date.getHours() - startHour.getHours()) * 60) + (date.getMinutes() - startHour.getMinutes());\n if (!isNullOrUndefined(currentDateIndex)) {\n var end = (endHour.getHours() === 0) ? 24 : endHour.getHours();\n if (currentDateIndex[0] !== 0) {\n diffInDates = (currentDateIndex[0]) * ((end - startHour.getHours()) * 60) + (endHour.getMinutes() - startHour.getMinutes());\n }\n diffInMinutes = diffInDates + diffInMinutes;\n }\n return (diffInMinutes * this.getWorkCellWidth() * this.parent.activeViewOptions.timeScale.slotCount) /\n this.parent.activeViewOptions.timeScale.interval;\n };\n TimelineViews.prototype.getWorkCellWidth = function () {\n return this.element.querySelector('.e-work-cells').getBoundingClientRect().width;\n };\n TimelineViews.prototype.renderHeader = function () {\n var tr = createElement('tr');\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n this.parent.resourceBase.renderResourceHeaderIndent(tr);\n }\n var dateTd = createElement('td');\n dateTd.appendChild(this.renderDatesHeader());\n tr.appendChild(dateTd);\n prepend([tr], this.element.querySelector('tbody'));\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimelineViews.prototype.createAllDayRow = function (table, tdData) { };\n TimelineViews.prototype.getCurrentTimeIndicatorIndex = function () {\n var currentDateIndex = [];\n var index = this.parent.getIndexOfDate(this.renderDates, util.resetTime(this.parent.getCurrentTime()));\n if (index >= 0) {\n currentDateIndex.push(index);\n }\n return currentDateIndex;\n };\n TimelineViews.prototype.renderContent = function () {\n var tr = createElement('tr');\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n var resTd = createElement('td');\n resTd.appendChild(this.parent.resourceBase.createResourceColumn());\n tr.appendChild(resTd);\n }\n var workTd = createElement('td');\n var wrap = this.renderContentArea();\n wrap.appendChild(this.createEventTable(this.getRowCount()));\n this.collapseRows(wrap);\n workTd.appendChild(wrap);\n tr.appendChild(workTd);\n if (this.parent.virtualScrollModule) {\n this.parent.virtualScrollModule.renderVirtualTrack(wrap);\n }\n this.element.querySelector('tbody').appendChild(tr);\n };\n TimelineViews.prototype.getRowCount = function () {\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n return this.parent.resourceBase.renderedResources.length;\n }\n return 1;\n };\n TimelineViews.prototype.getResourceTdData = function (i, tdData) {\n var resLevel = this.parent.resourceBase.renderedResources[i];\n var resSHr = resLevel.resourceData[resLevel.resource.startHourField] || this.parent.workHours.start;\n var resEHr = resLevel.resourceData[resLevel.resource.endHourField] || this.parent.workHours.end;\n tdData.startHour = this.parent.getStartEndTime(resSHr);\n tdData.endHour = this.parent.getStartEndTime(resEHr);\n tdData.workDays = resLevel.resourceData[resLevel.resource.workDaysField] || this.parent.workDays;\n tdData.className = resLevel.className;\n tdData.groupIndex = resLevel.groupIndex;\n tdData.groupOrder = resLevel.groupOrder;\n return tdData;\n };\n TimelineViews.prototype.renderContentTable = function (table) {\n var tBody = table.querySelector('tbody');\n append(this.getContentRows(), tBody);\n };\n TimelineViews.prototype.getContentRows = function () {\n var rows = [];\n var tr = createElement('tr', { attrs: { role: 'row' } });\n var td = createElement('td', { attrs: { role: 'gridcell', 'aria-selected': 'false' } });\n var trCount = this.getRowCount();\n for (var i = 0; i < trCount; i++) {\n var ntr = tr.cloneNode();\n for (var _i = 0, _a = this.colLevels[this.colLevels.length - 1]; _i < _a.length; _i++) {\n var tdData = _a[_i];\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n tdData = this.getResourceTdData(i, tdData);\n }\n var ntd = this.createContentTd(tdData, tdData, td);\n ntr.appendChild(ntd);\n }\n rows.push(ntr);\n }\n return rows;\n };\n TimelineViews.prototype.getContentTdClass = function (r) {\n return (r.first || !this.parent.activeViewOptions.timeScale.enable) ? [cls.WORK_CELLS_CLASS] :\n [cls.WORK_CELLS_CLASS, cls.ALTERNATE_CELLS_CLASS];\n };\n TimelineViews.prototype.renderEvents = function () {\n this.timelineAppointment = new TimelineEvent(this.parent, this.parent.activeViewOptions.timeScale.enable ? 'hour' : 'day');\n this.timelineAppointment.renderAppointments();\n this.parent.notify(event.eventsLoaded, {});\n };\n TimelineViews.prototype.destroy = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n if (this.timelineAppointment) {\n this.timelineAppointment.destroy();\n this.timelineAppointment = null;\n }\n _super.prototype.destroy.call(this);\n };\n return TimelineViews;\n}(VerticalView));\nexport { TimelineViews };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { addClass, createElement, extend, isNullOrUndefined, closest, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { formatUnit, remove, removeClass } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\n/**\n * Base class for the common drag and resize related actions\n */\nvar ActionBase = /** @class */ (function () {\n function ActionBase(parent) {\n this.daysVariation = 0;\n this.parent = parent;\n this.actionObj = {\n X: 0, Y: 0, groupIndex: 0, cellWidth: 0, cellHeight: 0, slotInterval: 0, interval: 0, actionIndex: 0,\n cloneElement: [], originalElement: [], action: null, isAllDay: null, excludeSelectors: null,\n index: 0, navigationInterval: null, scrollInterval: null\n };\n this.scrollArgs = { element: null, width: 0, height: 0 };\n this.resizeEdges = { left: false, right: false, top: false, bottom: false };\n this.scrollEdges = { left: false, right: false, top: false, bottom: false };\n }\n ActionBase.prototype.getChangedData = function (multiData) {\n var _this = this;\n var eventObj = extend({}, this.actionObj.event, null, true);\n eventObj[this.parent.eventFields.startTime] = this.actionObj.start;\n eventObj[this.parent.eventFields.endTime] = this.actionObj.end;\n if (!isNullOrUndefined(this.actionObj.isAllDay)) {\n eventObj[this.parent.eventFields.isAllDay] = this.actionObj.isAllDay;\n }\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var originalElement = this.getOriginalElement(this.actionObj.element);\n if (originalElement) {\n var indexCol_1 = originalElement.map(function (element) { return parseInt(element.getAttribute('data-group-index'), 10); });\n if (indexCol_1.indexOf(this.actionObj.groupIndex) === -1 || (!isNullOrUndefined(multiData) && multiData.length > 0)) {\n var cloneIndex_1 = parseInt(this.actionObj.clone.getAttribute('data-group-index'), 10);\n indexCol_1 = indexCol_1.filter(function (index) { return index !== cloneIndex_1; });\n indexCol_1.push(this.actionObj.groupIndex);\n if (multiData && multiData.length > 0) {\n multiData.forEach(function (data) {\n _this.parent.resourceBase.getResourceData(data, _this.actionObj.groupIndex, indexCol_1);\n });\n }\n else {\n this.parent.resourceBase.getResourceData(eventObj, this.actionObj.groupIndex, indexCol_1);\n }\n }\n }\n }\n return eventObj;\n };\n ActionBase.prototype.saveChangedData = function (eventArgs, isMultiSelect) {\n if (isMultiSelect === void 0) { isMultiSelect = false; }\n this.parent.activeEventData.event = this.actionObj.event;\n this.parent.currentAction = 'Save';\n var currentAction;\n var eventsCollection = [eventArgs.data];\n if (isMultiSelect) {\n eventsCollection = eventArgs.selectedData;\n }\n for (var _i = 0, eventsCollection_1 = eventsCollection; _i < eventsCollection_1.length; _i++) {\n var eventObj = eventsCollection_1[_i];\n var isSameResource = (this.parent.activeViewOptions.group.resources.length > 0) ?\n parseInt(this.actionObj.element.getAttribute('data-group-index'), 10) === this.actionObj.groupIndex : true;\n if (+eventObj[this.parent.eventFields.startTime] === +this.actionObj.event[this.parent.eventFields.startTime] &&\n +eventObj[this.parent.eventFields.endTime] === +this.actionObj.event[this.parent.eventFields.endTime] && isSameResource) {\n return;\n }\n if (eventObj[this.parent.eventFields.recurrenceRule]) {\n var eveId = (eventObj[this.parent.eventFields.recurrenceID] || eventObj[this.parent.eventFields.id]);\n if (eventObj[this.parent.eventFields.id] === eventObj[this.parent.eventFields.recurrenceID]) {\n eventObj[this.parent.eventFields.id] = this.parent.eventBase.getEventMaxID();\n currentAction = 'EditOccurrence';\n }\n if (this.parent.enableRecurrenceValidation\n && this.parent.eventWindow.editOccurrenceValidation(eveId, eventObj, this.actionObj.event)) {\n return;\n }\n }\n else {\n currentAction = null;\n }\n if (eventObj[this.parent.eventFields.startTimezone] || eventObj[this.parent.eventFields.endTimezone]) {\n this.parent.eventBase.timezoneConvert(eventObj);\n }\n this.parent.crudModule.saveEvent(eventObj, currentAction);\n }\n };\n ActionBase.prototype.calculateIntervalTime = function (date) {\n var intervalTime = new Date(+date);\n intervalTime.setMinutes(Math.floor(intervalTime.getMinutes() / this.actionObj.interval) * this.actionObj.interval);\n return intervalTime;\n };\n ActionBase.prototype.getContentAreaDimension = function () {\n var viewElement = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var trElement = [].slice.call(viewElement.querySelector('tr').children);\n if (!this.parent.activeView.isTimelineView() && this.parent.activeViewOptions.group.resources.length > 0 &&\n !this.parent.isAdaptive && !this.parent.enableAdaptiveUI) {\n trElement = this.getResourceElements(trElement);\n }\n var leftOffset = trElement[0].getBoundingClientRect();\n var rightOffset = trElement.slice(-1)[0].getBoundingClientRect();\n var viewDimension = {\n bottom: viewElement.scrollHeight - 5,\n left: this.parent.enableRtl ? rightOffset.left : leftOffset.left,\n right: this.parent.enableRtl ? leftOffset.right : rightOffset.right,\n top: 0,\n leftOffset: this.parent.enableRtl ? rightOffset.right : leftOffset.right,\n rightOffset: this.parent.enableRtl ? leftOffset.left : rightOffset.left\n };\n return viewDimension;\n };\n ActionBase.prototype.getPageCoordinates = function (e) {\n var eventArgs = e.event;\n return eventArgs && eventArgs.changedTouches ? eventArgs.changedTouches[0] : e.changedTouches ? e.changedTouches[0] :\n eventArgs || e;\n };\n ActionBase.prototype.getIndex = function (index) {\n var contentElements = [].slice.call(this.parent.getContentTable().querySelector('tr').children);\n var indexes = { minIndex: 0, maxIndex: contentElements.length - 1 };\n if (this.actionObj.action === 'resize' && this.parent.activeViewOptions.group.resources.length > 0 &&\n !this.parent.uiStateValues.isGroupAdaptive && !this.parent.activeView.isTimelineView()) {\n var groupElements = this.getResourceElements(contentElements);\n indexes.minIndex = groupElements[0].cellIndex;\n indexes.maxIndex = groupElements.slice(-1)[0].cellIndex;\n }\n if (index < indexes.minIndex) {\n index = indexes.minIndex;\n }\n if (index > indexes.maxIndex) {\n index = indexes.maxIndex;\n }\n return index;\n };\n ActionBase.prototype.updateTimePosition = function (date, multiData) {\n var index = 0;\n for (var _i = 0, _a = this.actionObj.cloneElement; _i < _a.length; _i++) {\n var cloneElement = _a[_i];\n var timeElement = cloneElement.querySelector('.' + cls.APPOINTMENT_TIME);\n if (timeElement) {\n var startTime = this.actionObj.start;\n var endTime = this.actionObj.end;\n if (multiData && multiData.length > 0) {\n startTime = multiData[index][this.parent.eventFields.startTime];\n endTime = multiData[index][this.parent.eventFields.endTime];\n }\n timeElement.innerHTML = this.parent.getTimeString(startTime) + ' - ' +\n this.parent.getTimeString(endTime);\n }\n index++;\n }\n if (!this.parent.activeViewOptions.timeScale.enable || !this.parent.isAdaptive || this.parent.currentView === 'Month' ||\n this.parent.currentView === 'TimelineMonth') {\n return;\n }\n var timeIndicator = this.parent.element.querySelector('.' + cls.CLONE_TIME_INDICATOR_CLASS);\n if (!timeIndicator) {\n timeIndicator = createElement('div', { className: cls.CLONE_TIME_INDICATOR_CLASS });\n var wrapperClass = this.parent.activeView.isTimelineView() ? cls.DATE_HEADER_WRAP_CLASS : cls.TIME_CELLS_WRAP_CLASS;\n this.parent.element.querySelector('.' + wrapperClass).appendChild(timeIndicator);\n }\n timeIndicator.innerHTML = this.parent.getTimeString(date);\n var offsetValue = 0;\n if (this.parent.activeView.isTimelineView()) {\n if (this.parent.enableRtl) {\n var rightValue = parseInt(this.actionObj.clone.style.right, 10);\n offsetValue = this.actionObj.action === 'drag' || this.resizeEdges.left ?\n rightValue + this.actionObj.clone.offsetWidth : rightValue;\n timeIndicator.style.right = formatUnit(offsetValue);\n }\n else {\n var leftValue = parseInt(this.actionObj.clone.style.left, 10);\n offsetValue = this.actionObj.action === 'drag' || this.resizeEdges.left ?\n leftValue : leftValue + this.actionObj.clone.offsetWidth;\n timeIndicator.style.left = formatUnit(offsetValue);\n }\n }\n else {\n offsetValue = this.actionObj.action === 'drag' || this.resizeEdges.top ? this.actionObj.clone.offsetTop :\n this.actionObj.clone.offsetTop + this.actionObj.clone.offsetHeight;\n timeIndicator.style.top = formatUnit(offsetValue);\n }\n };\n ActionBase.prototype.getResourceElements = function (table) {\n var _this = this;\n return table.filter(function (element) {\n return parseInt(element.getAttribute('data-group-index'), 10) === _this.actionObj.groupIndex;\n });\n };\n ActionBase.prototype.getOriginalElement = function (element) {\n var originalElement;\n var guid = element.getAttribute('data-guid');\n var isMorePopup = element.offsetParent && element.offsetParent.classList.contains(cls.MORE_EVENT_POPUP_CLASS);\n if (isMorePopup || this.parent.activeView.isTimelineView()) {\n originalElement = [].slice.call(this.parent.element.querySelectorAll('[data-guid=\"' + guid + '\"]'));\n }\n else {\n var tr = closest(element, 'tr');\n if (tr) {\n originalElement = [].slice.call(tr.querySelectorAll('[data-guid=\"' + guid + '\"]'));\n }\n }\n return originalElement;\n };\n ActionBase.prototype.createCloneElement = function (element) {\n var cloneWrapper = createElement('div', { innerHTML: element.outerHTML });\n var cloneElement = cloneWrapper.children[0];\n var cloneClassLists = [cls.CLONE_ELEMENT_CLASS];\n cloneClassLists.push((this.actionObj.action === 'drag') ? cls.DRAG_CLONE_CLASS : cls.RESIZE_CLONE_CLASS);\n if (this.parent.currentView === 'Month' || this.parent.currentView === 'TimelineMonth') {\n cloneClassLists.push(cls.MONTH_CLONE_ELEMENT_CLASS);\n }\n addClass([cloneElement], cloneClassLists);\n addClass([element], cls.EVENT_ACTION_CLASS);\n if (!isNullOrUndefined(element.parentElement)) {\n element.parentElement.appendChild(cloneElement);\n }\n cloneElement.style.width = formatUnit(cloneElement.offsetWidth - 2);\n var dragElement = document.querySelector(this.parent.eventDragArea);\n if (this.parent.eventDragArea && this.actionObj.action === 'drag' && dragElement) {\n dragElement.appendChild(cloneElement);\n }\n setStyleAttribute(cloneElement, { border: '0px' });\n return cloneElement;\n };\n ActionBase.prototype.removeCloneElementClasses = function () {\n var elements = this.actionObj.originalElement;\n if (this.parent.currentView === 'Month' || this.parent.currentView === 'TimelineYear' ||\n this.parent.currentView === 'Day' || this.parent.currentView === 'Week' || this.parent.currentView === 'WorkWeek') {\n elements = [].slice.call(this.parent.element.querySelectorAll('.' + cls.EVENT_ACTION_CLASS));\n }\n removeClass(elements, cls.EVENT_ACTION_CLASS);\n };\n ActionBase.prototype.removeCloneElement = function () {\n this.actionObj.originalElement = [];\n var dynamicEle = [].slice.call(this.parent.element.querySelectorAll('.e-dynamic-clone'));\n for (var _i = 0, dynamicEle_1 = dynamicEle; _i < dynamicEle_1.length; _i++) {\n var cloneEle = dynamicEle_1[_i];\n remove(cloneEle);\n }\n for (var _a = 0, _b = this.actionObj.cloneElement; _a < _b.length; _a++) {\n var cloneElement = _b[_a];\n if (!isNullOrUndefined(cloneElement.parentNode)) {\n remove(cloneElement);\n }\n }\n this.actionObj.cloneElement = [];\n var timeIndicator = this.parent.element.querySelector('.' + cls.CLONE_TIME_INDICATOR_CLASS);\n if (timeIndicator) {\n remove(timeIndicator);\n }\n };\n ActionBase.prototype.getCursorElement = function (e) {\n var pages = this.getPageCoordinates(e);\n return document.elementFromPoint(pages.clientX, pages.clientY);\n };\n ActionBase.prototype.autoScroll = function () {\n var parent = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var yIsScrollable = parent.offsetHeight <= parent.scrollHeight;\n var xIsScrollable = parent.offsetWidth <= parent.scrollWidth;\n var yInBounds = yIsScrollable && parent.scrollTop >= 0 && parent.scrollTop + parent.offsetHeight <= parent.scrollHeight;\n var xInBounds = xIsScrollable && parent.scrollLeft >= 0 && parent.scrollLeft + parent.offsetWidth <= parent.scrollWidth;\n if (this.actionObj.action === 'resize' && this.scrollEdges.right && (parent.scrollLeft + parent.offsetWidth) > parent.scrollWidth) {\n var tdCollections = ([].slice.call(this.parent.getContentTable().querySelector('tr').children)).length - 1;\n var cellIndex = Math.ceil((this.actionObj.clone.offsetLeft + (this.actionObj.clone.offsetWidth)) /\n this.actionObj.cellWidth);\n xInBounds = cellIndex === tdCollections;\n }\n if (yInBounds && (this.scrollEdges.top || this.scrollEdges.bottom)) {\n parent.scrollTop += this.scrollEdges.top ? -this.actionObj.scroll.scrollBy : this.actionObj.scroll.scrollBy;\n if (this.actionObj.action === 'resize') {\n if (parent.scrollHeight !== parent.offsetHeight + parent.scrollTop && parent.scrollTop > 0) {\n this.actionObj.Y += this.scrollEdges.top ? this.actionObj.scroll.scrollBy : -this.actionObj.scroll.scrollBy;\n }\n }\n }\n if (xInBounds && (this.scrollEdges.left || this.scrollEdges.right)) {\n parent.scrollLeft += this.scrollEdges.left ? -this.actionObj.scroll.scrollBy : this.actionObj.scroll.scrollBy;\n if (this.actionObj.action === 'resize') {\n if (parent.scrollWidth !== parent.offsetWidth + parent.scrollLeft && parent.scrollLeft > 0) {\n this.actionObj.X += this.scrollEdges.left ? this.actionObj.scroll.scrollBy : -this.actionObj.scroll.scrollBy;\n }\n }\n }\n };\n ActionBase.prototype.autoScrollValidation = function () {\n if (!this.actionObj.scroll.enable) {\n return false;\n }\n var res = this.parent.boundaryValidation(this.actionObj.pageY, this.actionObj.pageX);\n this.scrollEdges = res;\n return res.bottom || res.top || res.left || res.right;\n };\n ActionBase.prototype.actionClass = function (type) {\n if (type === 'addClass') {\n addClass([this.parent.element], cls.EVENT_ACTION_CLASS);\n }\n else {\n removeClass([this.parent.element], cls.EVENT_ACTION_CLASS);\n }\n };\n ActionBase.prototype.updateScrollPosition = function (e) {\n var _this = this;\n if (this.actionObj.scroll.enable && isNullOrUndefined(this.actionObj.scrollInterval)) {\n this.actionObj.scrollInterval = window.setInterval(function () {\n if (_this.autoScrollValidation() && !_this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS)) {\n if (_this.parent.activeView.isTimelineView() && _this.parent.activeViewOptions.group.resources.length > 0\n && _this.actionObj.groupIndex < 0) {\n return;\n }\n _this.autoScroll();\n if (_this.actionObj.action === 'drag') {\n _this.parent.dragAndDropModule.updateDraggingDateTime(e);\n }\n else {\n _this.parent.resizeModule.updateResizingDirection(e);\n }\n }\n }, this.actionObj.scroll.timeDelay);\n }\n };\n ActionBase.prototype.updateOriginalElement = function (cloneElement) {\n var query = '[data-id=\"' + cloneElement.getAttribute('data-id') + '\"]';\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n query = query.concat('[data-group-index = \"' + cloneElement.getAttribute('data-group-index') + '\"]');\n }\n var elements = [].slice.call(this.parent.element.querySelectorAll(query));\n addClass(elements, cls.EVENT_ACTION_CLASS);\n var eventWrappers = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CLONE_ELEMENT_CLASS));\n removeClass(eventWrappers, cls.EVENT_ACTION_CLASS);\n };\n ActionBase.prototype.getUpdatedEvent = function (startTime, endTime, eventObj) {\n var event = JSON.parse(JSON.stringify(eventObj));\n event[this.parent.eventFields.startTime] = startTime;\n event[this.parent.eventFields.endTime] = endTime;\n return event;\n };\n ActionBase.prototype.dynamicYearlyEventsRendering = function (event, isResize) {\n if (isResize === void 0) { isResize = false; }\n var appWidth = this.actionObj.cellWidth - 7;\n if (isResize && (this.resizeEdges.left || this.resizeEdges.right)) {\n appWidth = this.actionObj.cellWidth * event.count;\n }\n if (!isResize && (this.parent.activeViewOptions.orientation === 'Horizontal' && this.parent.activeViewOptions.group.resources.length === 0)) {\n var eventObj = this.yearEvent.isSpannedEvent(event, event[this.parent.eventFields.startTime]);\n if (eventObj[this.parent.eventFields.startTime].getTime() ===\n eventObj[this.parent.eventFields.endTime].getTime()) {\n eventObj.isSpanned.count = 1;\n }\n appWidth = eventObj.isSpanned.count * this.actionObj.cellWidth;\n }\n var appointmentElement = this.createAppointmentElement(this.actionObj.groupIndex, event[this.parent.eventFields.subject]);\n appointmentElement.setAttribute('drag', 'true');\n addClass([appointmentElement], cls.CLONE_ELEMENT_CLASS);\n setStyleAttribute(appointmentElement, {\n 'width': appWidth + 'px', 'border': '0px', 'pointer-events': 'none',\n 'position': 'absolute', 'overflow': 'hidden', 'padding': '3px'\n });\n if (this.actionObj.clone.style.backgroundColor !== '') {\n setStyleAttribute(appointmentElement, { 'backgroundColor': this.actionObj.clone.style.backgroundColor });\n }\n var date = util.resetTime(event[this.parent.eventFields.startTime]).getTime();\n var query = '.' + cls.WORK_CELLS_CLASS + '[data-date=\"' + date + '\"]';\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n query = '.' + cls.WORK_CELLS_CLASS + '[data-date=\"' + date + '\"][data-group-index=\"' + this.actionObj.groupIndex + '\"]';\n }\n var cellTd = this.parent.element.querySelector(query);\n if (isNullOrUndefined(cellTd)) {\n return;\n }\n if (isResize) {\n var dateHeader = cellTd.querySelector('.' + cls.DATE_HEADER_CLASS);\n var appHeight = this.actionObj.cellHeight * event.count -\n (dateHeader ? dateHeader.offsetHeight : 0) - 7;\n if (this.resizeEdges.right || this.resizeEdges.left) {\n appHeight = parseInt(this.actionObj.clone.style.height, 10);\n }\n setStyleAttribute(appointmentElement, { 'height': appHeight + 'px' });\n }\n this.renderDynamicElement(cellTd, appointmentElement, true);\n this.actionObj.cloneElement.push(appointmentElement);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ActionBase.prototype.renderDynamicElement = function (cellTd, element, isAppointment) {\n if (isAppointment === void 0) { isAppointment = false; }\n if (cellTd.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS)) {\n cellTd.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS).appendChild(element);\n }\n else {\n var wrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n wrapper.appendChild(element);\n cellTd.appendChild(wrapper);\n }\n };\n ActionBase.prototype.createAppointmentElement = function (resIndex, innerText) {\n var appointmentWrapper = createElement('div', {\n className: cls.APPOINTMENT_CLASS,\n innerHTML: innerText\n });\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n appointmentWrapper.setAttribute('data-group-index', resIndex.toString());\n }\n return appointmentWrapper;\n };\n ActionBase.prototype.dynamicEventsRendering = function (event) {\n var _this = this;\n var dateRender = this.parent.activeView.renderDates;\n var workCells = [].slice.call(this.parent.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS));\n var workDays = this.parent.activeViewOptions.workDays;\n var groupOrder;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var resources = this.parent.resourceBase.lastResourceLevel.\n filter(function (res) { return res.groupIndex === _this.actionObj.groupIndex; });\n dateRender = resources[0].renderDates;\n var elementSelector = \".\" + cls.WORK_CELLS_CLASS + \"[data-group-index=\\\"\" + this.actionObj.groupIndex + \"\\\"]\";\n workCells = [].slice.call(this.parent.element.querySelectorAll(elementSelector));\n workDays = resources[0].workDays;\n groupOrder = resources[0].groupOrder;\n }\n this.monthEvent.dateRender = dateRender;\n this.monthEvent.getSlotDates(workDays);\n if (this.resizeEdges.left || this.resizeEdges.right) {\n var eventWrappers = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CLONE_ELEMENT_CLASS));\n for (var _i = 0, eventWrappers_1 = eventWrappers; _i < eventWrappers_1.length; _i++) {\n var wrapper = eventWrappers_1[_i];\n remove(wrapper);\n }\n }\n var spannedEvents = this.monthEvent.splitEvent(event, dateRender);\n for (var _a = 0, spannedEvents_1 = spannedEvents; _a < spannedEvents_1.length; _a++) {\n var event_1 = spannedEvents_1[_a];\n var day = this.parent.getIndexOfDate(dateRender, util.resetTime(event_1[this.monthEvent.fields.startTime]));\n var diffInDays = event_1.data.count;\n var appWidth = (diffInDays * this.actionObj.cellWidth) - 7;\n var appointmentElement = this.monthEvent.createAppointmentElement(event_1, this.actionObj.groupIndex, true);\n appointmentElement.setAttribute('drag', 'true');\n addClass([appointmentElement], cls.CLONE_ELEMENT_CLASS);\n this.monthEvent.applyResourceColor(appointmentElement, event_1, 'backgroundColor', groupOrder);\n setStyleAttribute(appointmentElement, { 'width': appWidth + 'px', 'border': '0px', 'pointer-events': 'none' });\n var cellTd = workCells[day];\n if (cellTd && isNullOrUndefined(this.parent.eventDragArea)) {\n this.monthEvent.renderElement(cellTd, appointmentElement, true);\n this.actionObj.cloneElement.push(appointmentElement);\n }\n }\n };\n ActionBase.prototype.destroy = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.actionObj = {};\n this.scrollArgs = {};\n this.resizeEdges = { left: false, right: false, top: false, bottom: false };\n this.scrollEdges = { left: false, right: false, top: false, bottom: false };\n };\n return ActionBase;\n}());\nexport { ActionBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { addClass, append, createElement, extend, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, EventHandler } from '@syncfusion/ej2-base';\nimport { TimelineEvent } from './timeline-view';\nimport * as util from '../base/util';\nimport * as events from '../base/constant';\nimport * as cls from '../base/css-constant';\nvar EVENT_GAP = 2;\n/**\n * Year view events render\n */\nvar YearEvent = /** @class */ (function (_super) {\n __extends(YearEvent, _super);\n function YearEvent(parent) {\n var _this = _super.call(this, parent, 'day') || this;\n _this.isResource = false;\n return _this;\n }\n YearEvent.prototype.renderAppointments = function () {\n if (this.parent.dragAndDropModule) {\n this.parent.dragAndDropModule.setDragArea();\n }\n this.fields = this.parent.eventFields;\n var elementSelector = (this.parent.currentView === 'Year') ? '.' + cls.APPOINTMENT_CLASS :\n '.' + cls.APPOINTMENT_WRAPPER_CLASS + ',.' + cls.MORE_INDICATOR_CLASS;\n var eventWrappers = [].slice.call(this.parent.element.querySelectorAll(elementSelector));\n for (var _i = 0, eventWrappers_1 = eventWrappers; _i < eventWrappers_1.length; _i++) {\n var wrapper = eventWrappers_1[_i];\n remove(wrapper);\n }\n this.renderedEvents = [];\n if (this.parent.currentView === 'Year') {\n this.yearViewEvents();\n }\n else {\n this.removeCellHeight();\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n this.isResource = true;\n this.timelineResourceEvents();\n }\n else {\n this.timelineYearViewEvents();\n }\n }\n this.parent.renderTemplates();\n this.parent.notify(events.contentReady, {});\n };\n YearEvent.prototype.yearViewEvents = function () {\n var months = this.getMonths();\n for (var _i = 0, months_1 = months; _i < months_1.length; _i++) {\n var month = months_1[_i];\n var queryString = \".e-month-calendar:nth-child(\" + (months.indexOf(month) + 1) + \") td.e-work-cells\";\n var workCells = [].slice.call(this.parent.element.querySelectorAll(queryString));\n var monthDate = new Date(this.parent.selectedDate.getFullYear(), month, 1);\n var monthStart = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));\n var monthEnd = this.parent.calendarUtil.getMonthEndDate(new Date(monthDate.getTime()));\n var startDate = util.getWeekFirstDate(monthStart, this.parent.firstDayOfWeek);\n var endDate = util.addDays(util.getWeekLastDate(monthEnd, this.parent.firstDayOfWeek), 1);\n for (var index = 0; startDate.getTime() < endDate.getTime(); index++) {\n var start = util.resetTime(new Date(startDate.getTime()));\n var end = util.addDays(new Date(start.getTime()), 1);\n var filterEvents = this.parent.eventBase.filterEvents(start, end);\n if (filterEvents.length > 0) {\n var workCell = workCells[index];\n if (workCell) {\n workCell.appendChild(createElement('div', { className: cls.APPOINTMENT_CLASS }));\n }\n }\n startDate = util.addDays(new Date(startDate.getTime()), 1);\n }\n }\n };\n YearEvent.prototype.timelineYearViewEvents = function () {\n var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS);\n this.cellWidth = workCell.offsetWidth;\n this.cellHeader = util.getOuterHeight(workCell.querySelector('.' + cls.DATE_HEADER_CLASS));\n var eventTable = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);\n this.eventHeight = util.getElementHeightFromClass(eventTable, cls.APPOINTMENT_CLASS);\n var wrapperCollection = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS));\n var months = this.getMonths();\n for (var row = 0; row < months.length; row++) {\n var wrapper = wrapperCollection[row];\n var td = row + 1;\n var eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n wrapper.appendChild(eventWrapper);\n var monthStart = new Date(this.parent.selectedDate.getFullYear(), months[row], 1);\n var monthEnd = new Date(monthStart.getFullYear(), monthStart.getMonth() + 1, 0);\n var dayIndex = monthStart.getDay();\n var isSpannedCollection = [];\n if (this.parent.activeViewOptions.orientation === 'Horizontal') {\n this.renderedEvents = [];\n }\n while (monthStart.getTime() <= monthEnd.getTime()) {\n var leftValue = void 0;\n var rightValue = void 0;\n if (this.parent.activeViewOptions.orientation === 'Vertical') {\n var wrapper_1 = wrapperCollection[dayIndex];\n td = dayIndex + 1;\n var eventWrapper_1 = wrapper_1.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS);\n if (!eventWrapper_1) {\n eventWrapper_1 = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n wrapper_1.appendChild(eventWrapper_1);\n }\n if (this.parent.enableRtl) {\n rightValue = row * this.cellWidth;\n }\n else {\n leftValue = row * this.cellWidth;\n }\n }\n else {\n if (this.parent.enableRtl) {\n rightValue = ((dayIndex + monthStart.getDate()) - 1) * this.cellWidth;\n }\n else {\n leftValue = ((dayIndex + monthStart.getDate()) - 1) * this.cellWidth;\n }\n }\n var rowTd = this.parent.element.querySelector(\".e-content-wrap tr:nth-child(\" + td + \") td\");\n this.cellHeight = rowTd.offsetHeight;\n var dayStart = util.resetTime(new Date(monthStart.getTime()));\n var dayEnd = util.addDays(new Date(dayStart.getTime()), 1);\n var resource = void 0;\n if (this.parent.uiStateValues.isGroupAdaptive) {\n resource = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex];\n }\n var dayEvents = this.parent.eventBase.filterEvents(dayStart, dayEnd, undefined, resource);\n dayEvents = this.parent.eventBase.sortByDateTime(dayEvents);\n var _loop_1 = function (index, count) {\n var eventData = extend({}, dayEvents[index], null, true);\n this_1.updateSpannedEvents(eventData, dayStart, dayEnd);\n var overlapIndex = this_1.getIndex(dayStart);\n eventData.Index = overlapIndex;\n var availedHeight = this_1.cellHeader + (this_1.eventHeight * (overlapIndex + 1)) + EVENT_GAP +\n this_1.moreIndicatorHeight;\n var appArea = this_1.cellHeight - this_1.cellHeader - this_1.moreIndicatorHeight;\n var renderedAppCount = Math.floor(appArea / (this_1.eventHeight + EVENT_GAP));\n var moreIndicatorCount = (count - renderedAppCount) <= 0 ? 1 : (count - renderedAppCount);\n if (this_1.parent.activeViewOptions.orientation === 'Horizontal') {\n var isRendered = this_1.renderedEvents.filter(function (eventObj) {\n return eventObj.Guid === eventData.Guid;\n });\n var isSpanned = isSpannedCollection.filter(function (eventObj) {\n return eventObj.Guid === eventData.Guid;\n });\n if (isRendered.length > 0 && isRendered[0].MoreIndicator || isSpanned.length > 0 && isSpanned[0].MoreIndicator) {\n var moreIndex = this_1.parent.activeViewOptions.orientation === 'Horizontal' ? row : dayIndex;\n this_1.renderMoreIndicator(eventWrapper, moreIndicatorCount, dayStart, moreIndex, leftValue, rightValue);\n return \"continue\";\n }\n else if (isRendered.length > 0 || isSpanned.length > 0) {\n return \"continue\";\n }\n }\n var isRowAutoHeight = this_1.parent.rowAutoHeight && this_1.parent.activeViewOptions.orientation === 'Horizontal';\n if (isRowAutoHeight || this_1.cellHeight > availedHeight) {\n this_1.renderEvent(eventWrapper, eventData, row, leftValue, rightValue, monthStart, dayIndex);\n this_1.updateCellHeight(rowTd, availedHeight);\n isSpannedCollection.push(eventData);\n }\n else {\n var moreIndex = this_1.parent.activeViewOptions.orientation === 'Horizontal' ? row : dayIndex;\n this_1.renderMoreIndicator(eventWrapper, moreIndicatorCount, dayStart, moreIndex, leftValue, rightValue);\n if (this_1.parent.activeViewOptions.orientation === 'Horizontal') {\n eventData.MoreIndicator = true;\n this_1.renderedEvents.push(eventData);\n isSpannedCollection.push(eventData);\n }\n }\n };\n var this_1 = this;\n for (var index = 0, count = dayEvents.length; index < count; index++) {\n _loop_1(index, count);\n }\n monthStart = util.addDays(new Date(monthStart.getTime()), 1);\n if (this.parent.activeViewOptions.orientation === 'Vertical') {\n dayIndex++;\n this.renderedEvents = [];\n }\n }\n }\n };\n YearEvent.prototype.updateSpannedEvents = function (eventObj, dayStart, dayEnd) {\n var isLeftRightResize = (this.isResource && this.parent.activeViewOptions.orientation === 'Vertical') ||\n (!this.isResource && this.parent.activeViewOptions.orientation === 'Horizontal');\n var data = { isLeft: true, isRight: true, isBottom: true, isTop: true };\n if (dayStart.getTime() <= eventObj[this.fields.startTime].getTime()) {\n if (isLeftRightResize) {\n data.isLeft = false;\n }\n else {\n data.isTop = false;\n }\n }\n if ((dayEnd.getTime() >= eventObj[this.fields.endTime].getTime()) || (isLeftRightResize && !this.isResource &&\n util.addDays(dayEnd, -1).getMonth() === eventObj[this.fields.endTime].getMonth())) {\n if (isLeftRightResize) {\n data.isRight = false;\n }\n else {\n data.isBottom = false;\n }\n }\n eventObj.data = data;\n };\n YearEvent.prototype.timelineResourceEvents = function () {\n var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS);\n this.cellWidth = workCell.offsetWidth;\n this.cellHeader = 0;\n var eventTable = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);\n this.eventHeight = util.getElementHeightFromClass(eventTable, cls.APPOINTMENT_CLASS);\n var wrapperCollection = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS));\n var resources = this.parent.uiStateValues.isGroupAdaptive ?\n [this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex]] : this.parent.resourceBase.lastResourceLevel;\n var months = this.getMonths();\n if (this.parent.activeViewOptions.orientation === 'Horizontal') {\n for (var month = 0; month < months.length; month++) {\n var monthStart = new Date(this.parent.selectedDate.getFullYear(), months[month], 1);\n for (var i = 0, len = resources.length; i < len; i++) {\n this.renderedEvents = [];\n this.renderResourceEvent(wrapperCollection[month], resources[i], month, i, monthStart);\n }\n }\n }\n else {\n for (var i = 0, len = resources.length; i < len; i++) {\n this.renderedEvents = [];\n for (var month = 0; month < months.length; month++) {\n var monthStart = new Date(this.parent.selectedDate.getFullYear(), months[month], 1);\n this.renderResourceEvent(wrapperCollection[i], resources[i], month, i, monthStart);\n }\n }\n }\n };\n YearEvent.prototype.renderResourceEvent = function (wrapper, resource, month, index, monthStart) {\n var eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n wrapper.appendChild(eventWrapper);\n var monthEnd = util.addDays(util.lastDateOfMonth(new Date(monthStart.getTime())), 1);\n var eventDatas = this.parent.eventBase.filterEvents(monthStart, monthEnd, undefined, resource);\n var rowIndex = this.parent.activeViewOptions.orientation === 'Vertical' ? index : month;\n var td = this.parent.element.querySelector(\".e-content-wrap tr:nth-child(\" + (rowIndex + 1) + \") td\");\n this.cellHeight = td.offsetHeight;\n this.groupOrder = resource.groupOrder;\n for (var a = 0; a < eventDatas.length; a++) {\n var data = eventDatas[a];\n var overlapIndex = void 0;\n var eventData = extend({}, data, null, true);\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var eventObj = this.isSpannedEvent(eventData, monthStart);\n overlapIndex = this.getIndex(eventObj[this.fields.startTime]);\n eventData.Index = overlapIndex;\n }\n else {\n overlapIndex = this.getIndex(eventData[this.fields.startTime]);\n eventData.Index = overlapIndex;\n }\n var availedHeight = this.cellHeader + (this.eventHeight * (a + 1)) + EVENT_GAP + this.moreIndicatorHeight;\n var leftValue = (this.parent.activeViewOptions.orientation === 'Vertical') ?\n month * this.cellWidth : index * this.cellWidth;\n if (this.parent.rowAutoHeight || this.cellHeight > availedHeight) {\n this.renderEvent(eventWrapper, eventData, month, leftValue, leftValue, monthStart, index);\n this.updateCellHeight(td, availedHeight);\n }\n else {\n var moreIndex = this.parent.activeViewOptions.orientation === 'Horizontal' ? month : index;\n this.renderMoreIndicator(eventWrapper, eventDatas.length - a, monthStart, moreIndex, leftValue, leftValue, index);\n if (this.parent.activeViewOptions.orientation === 'Horizontal') {\n for (var i = index; i < eventDatas.length; i++) {\n this.renderedEvents.push(extend({}, eventDatas[i], { Index: overlapIndex + i }, true));\n }\n }\n break;\n }\n }\n };\n // eslint-disable-next-line max-len\n YearEvent.prototype.renderEvent = function (wrapper, eventData, row, left, right, monthDate, rowIndex) {\n var _this = this;\n var eventObj = this.isSpannedEvent(eventData, monthDate);\n var wrap = this.createEventElement(eventObj);\n var width;\n var index;\n if (eventObj.isSpanned.count === 1) {\n var endTime = util.addDays(eventObj[this.fields.endTime], -1);\n eventObj[this.fields.endTime] = (endTime > eventObj[this.fields.startTime]) ? endTime : eventObj[this.fields.endTime];\n }\n if (eventObj[this.fields.startTime] > eventObj[this.fields.endTime]) {\n return;\n }\n if (this.parent.activeViewOptions.orientation === 'Horizontal') {\n index = row + 1;\n if (eventObj[this.fields.startTime].getTime() === eventObj[this.fields.endTime].getTime()) {\n eventObj.isSpanned.count = 1;\n }\n width = eventObj.isSpanned.count * this.cellWidth;\n }\n else {\n index = rowIndex + 1;\n width = this.cellWidth;\n }\n var rowTd = this.parent.element.querySelector(\".e-content-wrap tr:nth-child(\" + index + \") td\");\n var top = rowTd.offsetTop + this.cellHeader + (this.eventHeight * eventObj.Index) + EVENT_GAP;\n setStyleAttribute(wrap, {\n 'width': width + 'px', 'height': this.eventHeight + 'px', 'left': left + 'px', 'right': right + 'px', 'top': top + 'px'\n });\n var args = { data: eventObj, element: wrap, cancel: false, type: 'event' };\n this.parent.trigger(events.eventRendered, args, function (eventArgs) {\n if (!eventArgs.cancel) {\n wrapper.appendChild(wrap);\n _this.wireAppointmentEvents(wrap, eventObj);\n if (_this.parent.activeViewOptions.group.resources.length > 0) {\n _this.renderedEvents.push(extend({}, eventObj, null, true));\n }\n else if (_this.parent.activeViewOptions.orientation === 'Vertical') {\n _this.renderedEvents.push(extend({}, eventObj, null, true));\n }\n else if ((eventObj.isSpanned.isRight || eventObj.isSpanned.isLeft) && _this.parent.activeViewOptions.orientation === 'Horizontal'\n || !eventObj.isSpanned.isRight) {\n _this.renderedEvents.push(extend({}, eventObj, null, true));\n }\n }\n });\n };\n // eslint-disable-next-line max-len\n YearEvent.prototype.renderMoreIndicator = function (wrapper, count, startDate, row, left, right, index) {\n if (this.parent.activeViewOptions.group.resources.length === 0 && wrapper.querySelector('[data-start-date=\"' + startDate.getTime() + '\"]')) {\n return;\n }\n var endDate;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n endDate = util.addDays(util.lastDateOfMonth(new Date(startDate.getTime())), 1);\n }\n else {\n endDate = util.addDays(new Date(startDate.getTime()), 1);\n }\n var moreIndicator = this.getMoreIndicatorElement(count, startDate, endDate);\n var rowTr = this.parent.element.querySelector(\".e-content-wrap tr:nth-child(\" + (row + 1) + \")\");\n var top = rowTr.offsetTop + (this.cellHeight - this.moreIndicatorHeight);\n left = (Math.floor(left / this.cellWidth) * this.cellWidth);\n right = (Math.floor(right / this.cellWidth) * this.cellWidth);\n setStyleAttribute(moreIndicator, { 'width': this.cellWidth + 'px', 'left': left + 'px', 'right': right + 'px', 'top': top + 'px' });\n if (!isNullOrUndefined(index)) {\n moreIndicator.setAttribute('data-group-index', index.toString());\n }\n wrapper.appendChild(moreIndicator);\n EventHandler.add(moreIndicator, 'click', this.moreIndicatorClick, this);\n };\n YearEvent.prototype.createEventElement = function (record) {\n var eventSubject = (record[this.fields.subject] || this.parent.eventSettings.fields.subject.default\n || this.parent.localeObj.getConstant('addTitle'));\n var eventWrapper = createElement('div', {\n className: cls.APPOINTMENT_CLASS,\n attrs: {\n 'data-id': 'Appointment_' + record[this.fields.id],\n 'data-guid': record.Guid,\n 'role': 'button', 'tabindex': '0',\n 'aria-readonly': this.parent.eventBase.getReadonlyAttribute(record), 'aria-selected': 'false', 'aria-grabbed': 'true',\n 'aria-label': this.parent.getAnnouncementString(record)\n }\n });\n if (this.cssClass) {\n addClass([eventWrapper], this.cssClass);\n }\n if (record[this.fields.isReadonly]) {\n addClass([eventWrapper], cls.READ_ONLY);\n }\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var resIndex = this.getGroupIndexFromEvent(record);\n eventWrapper.setAttribute('data-group-index', resIndex.toString());\n }\n var templateElement = [];\n var eventObj = extend({}, record, null, true);\n if (this.parent.activeViewOptions.eventTemplate) {\n var templateId = this.parent.element.id + '_' + this.parent.activeViewOptions.eventTemplateName + 'eventTemplate';\n templateElement = this.parent.getAppointmentTemplate()(eventObj, this.parent, 'eventTemplate', templateId, false);\n }\n else {\n var locationEle = (record[this.fields.location] || this.parent.eventSettings.fields.location.default || '');\n var subjectEle = createElement('div', {\n className: cls.SUBJECT_CLASS,\n innerHTML: (eventSubject + (locationEle ? '; ' + locationEle : ''))\n });\n var startTimeEle = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''),\n innerHTML: this.parent.getTimeString(eventObj[this.fields.startTime])\n });\n var endTimeEle = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''),\n innerHTML: this.parent.getTimeString(eventObj[this.fields.endTime])\n });\n addClass([subjectEle], 'e-text-center');\n if (record[this.fields.isAllDay]) {\n templateElement = [subjectEle];\n }\n else if (!eventObj.isLeft && !eventObj.isRight) {\n templateElement = [startTimeEle, subjectEle, endTimeEle];\n }\n else {\n if (!eventObj.isLeft) {\n templateElement.push(startTimeEle);\n }\n templateElement.push(subjectEle);\n if (!eventObj.isRight) {\n templateElement.push(endTimeEle);\n }\n }\n }\n var appointmentDetails = createElement('div', { className: cls.APPOINTMENT_DETAILS });\n append(templateElement, appointmentDetails);\n eventWrapper.appendChild(appointmentDetails);\n this.renderResizeHandler(eventWrapper, record.data, record[this.fields.isReadonly]);\n this.applyResourceColor(eventWrapper, eventObj, 'backgroundColor', this.groupOrder);\n return eventWrapper;\n };\n YearEvent.prototype.isSpannedEvent = function (eventObj, monthDate) {\n var monthStart = new Date(monthDate.getFullYear(), monthDate.getMonth(), 1);\n var monthEnd = util.addDays(new Date(monthDate.getFullYear(), monthDate.getMonth() + 1, 0), 1);\n var eventData = extend({}, eventObj, null, true);\n var eventStart = eventData[this.fields.startTime];\n var eventEnd = eventData[this.fields.endTime];\n var isSpanned = { isLeft: false, isRight: false, count: 1 };\n if (this.isResource) {\n this.updateSpannedEvents(eventObj, monthStart, monthEnd);\n }\n if (eventStart.getTime() < monthStart.getTime()) {\n eventData[this.fields.startTime] = monthStart;\n isSpanned.isLeft = true;\n }\n if (eventEnd.getTime() > monthEnd.getTime()) {\n eventData[this.fields.endTime] = monthEnd;\n isSpanned.isRight = true;\n }\n if (this.parent.activeViewOptions.group.resources.length === 0) {\n var end = util.resetTime(eventData[this.fields.endTime]).getTime();\n var start = util.resetTime(eventData[this.fields.startTime]).getTime();\n if (eventObj[this.fields.isAllDay] && end === eventObj[this.fields.endTime].getTime() || isSpanned.isRight) {\n end = util.addDays(new Date(end), -1).getTime();\n }\n isSpanned.count = Math.ceil((end - start) / util.MS_PER_DAY) + 1;\n }\n eventData.isSpanned = isSpanned;\n if (util.resetTime(eventStart).getTime() < util.resetTime(this.parent.minDate).getTime()) {\n eventData[this.fields.startTime] = this.parent.minDate;\n }\n if (util.resetTime(eventEnd).getTime() > util.resetTime(this.parent.maxDate).getTime()) {\n eventData[this.fields.endTime] = this.parent.maxDate;\n }\n return eventData;\n };\n YearEvent.prototype.getOverlapEvents = function (date, appointments) {\n var appointmentsList = [];\n var dateStart;\n var dateEnd;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var monthStart = this.parent.calendarUtil.getMonthStartDate(new Date(date.getTime()));\n var monthEnd = util.addDays(this.parent.calendarUtil.getMonthEndDate(new Date(date.getTime())), -1);\n dateStart = util.resetTime(new Date(monthStart.getTime())).getTime();\n dateEnd = util.resetTime(new Date(monthEnd.getTime())).getTime();\n }\n else {\n if (this.parent.rowAutoHeight) {\n dateStart = util.resetTime(new Date(date.getTime())).getTime();\n dateEnd = util.addDays(util.resetTime(new Date(date.getTime())), 1).getTime();\n }\n else {\n dateStart = dateEnd = util.resetTime(new Date(date.getTime())).getTime();\n }\n }\n for (var _i = 0, appointments_1 = appointments; _i < appointments_1.length; _i++) {\n var app = appointments_1[_i];\n var appStart = new Date(app[this.fields.startTime].getTime());\n var appEnd = new Date(app[this.fields.endTime].getTime());\n if (this.parent.activeViewOptions.orientation === 'Vertical' &&\n this.parent.activeViewOptions.group.resources.length > 0) {\n if ((util.resetTime(appStart).getTime() >= dateStart) && (util.resetTime(appEnd).getTime() <= dateEnd)) {\n appointmentsList.push(app);\n }\n }\n else {\n var timeCondition = app[this.fields.isAllDay] ? util.resetTime(appEnd).getTime() > dateStart :\n util.resetTime(appEnd).getTime() >= dateStart;\n if (((util.resetTime(appStart).getTime() <= dateStart) && (timeCondition)) ||\n (util.resetTime(appStart).getTime() >= dateStart) && (util.resetTime(appEnd).getTime() <= dateEnd)) {\n appointmentsList.push(app);\n }\n }\n }\n return appointmentsList;\n };\n YearEvent.prototype.getMonths = function () {\n var _this = this;\n // eslint-disable-next-line prefer-spread\n return Array.apply(null, { length: this.parent.monthsCount }).map(function (value, index) {\n return _this.parent.firstMonthOfYear + index;\n });\n };\n YearEvent.prototype.removeCellHeight = function () {\n var elementSelector = \".\" + cls.MONTH_HEADER_WRAPPER + \" tbody tr,.\" + cls.RESOURCE_COLUMN_TABLE_CLASS + \" tbody tr,.\" + cls.CONTENT_TABLE_CLASS + \" tbody tr\";\n var rows = [].slice.call(this.element.querySelectorAll(elementSelector));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n row.firstElementChild.style.height = '';\n }\n };\n YearEvent.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.parent = null;\n };\n return YearEvent;\n}(TimelineEvent));\nexport { YearEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createElement, closest, Draggable, extend, formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, remove, removeClass, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { ActionBase } from '../actions/action-base';\nimport { MonthEvent } from '../event-renderer/month';\nimport { TimelineEvent } from '../event-renderer/timeline-view';\nimport { YearEvent } from '../event-renderer/year';\nimport { VerticalEvent } from '../event-renderer/vertical-view';\nimport * as cls from '../base/css-constant';\nimport * as events from '../base/constant';\nimport * as util from '../base/util';\nvar MINUTES_PER_DAY = 1440;\n/**\n * Schedule events drag actions\n */\nvar DragAndDrop = /** @class */ (function (_super) {\n __extends(DragAndDrop, _super);\n function DragAndDrop() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.widthUptoCursorPoint = 0;\n _this.heightUptoCursorPoint = 0;\n _this.cursorPointIndex = 0;\n _this.isHeaderRows = false;\n _this.isTimelineDayProcess = false;\n _this.widthPerMinute = 0;\n _this.heightPerMinute = 0;\n _this.minDiff = 0;\n _this.isStepDragging = false;\n _this.isMorePopupOpened = false;\n _this.isAllDayDrag = false;\n _this.isMultiSelect = false;\n _this.multiData = [];\n _this.updatedData = [];\n _this.swagData = [];\n _this.startTime = 0;\n _this.isAllDayTarget = false;\n _this.targetTd = null;\n _this.isCursorAhead = false;\n return _this;\n }\n DragAndDrop.prototype.wireDragEvent = function (element) {\n new Draggable(element, {\n abort: '.' + cls.EVENT_RESIZE_CLASS,\n clone: true,\n isDragScroll: true,\n enableTapHold: this.parent.isAdaptive,\n enableTailMode: (this.parent.eventDragArea) ? true : false,\n cursorAt: (this.parent.eventDragArea) ? { left: -20, top: -20 } : { left: 0, top: 0 },\n dragArea: this.dragArea,\n dragStart: this.dragStart.bind(this),\n drag: this.drag.bind(this),\n dragStop: this.dragStop.bind(this),\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this),\n queryPositionInfo: this.dragPosition.bind(this)\n });\n };\n DragAndDrop.prototype.setDragArea = function () {\n var dragElement = document.querySelector(this.parent.eventDragArea);\n this.dragArea = this.parent.eventDragArea && dragElement ? dragElement :\n this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS);\n };\n DragAndDrop.prototype.dragHelper = function (e) {\n var _this = this;\n this.setDragActionDefaultValues();\n this.actionObj.element = e.element;\n this.actionObj.action = 'drag';\n var elements = [];\n if (!this.parent.allowMultiDrag || isNullOrUndefined(this.parent.selectedElements) || this.parent.selectedElements.length === 0 ||\n (this.parent.selectedElements.length > 0 && this.parent.selectedElements.indexOf(this.actionObj.element) === -1)) {\n elements = [e.element];\n }\n else {\n elements = this.parent.selectedElements;\n this.isMultiSelect = true;\n }\n elements.forEach(function (ele) {\n var cloneElement = _this.createCloneElement(ele);\n if (ele.getAttribute('data-guid') === _this.actionObj.element.getAttribute('data-guid')) {\n _this.actionObj.clone = cloneElement;\n if (!_this.parent.eventDragArea && _this.parent.currentView !== 'Month' &&\n _this.parent.activeViewOptions.timeScale.enable && !_this.parent.activeView.isTimelineView() &&\n !_this.actionObj.element.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS)) {\n setStyleAttribute(_this.actionObj.clone, { cursor: 'move', left: '0%', right: '0%', width: '100%' });\n }\n _this.actionObj.clone.style.top = formatUnit(_this.actionObj.element.offsetTop);\n }\n _this.actionObj.cloneElement.push(cloneElement);\n _this.actionObj.originalElement.push(ele);\n });\n return this.actionObj.clone;\n };\n DragAndDrop.prototype.dragPosition = function (e) {\n if (this.parent.eventDragArea) {\n return { left: e.left, top: e.top };\n }\n var cellHeight = (this.actionObj.cellHeight / this.actionObj.slotInterval) * this.actionObj.interval;\n var leftValue = formatUnit(0);\n if (this.parent.currentView === 'Month') {\n leftValue = e.left;\n }\n var cloneRight;\n if (this.isStepDragging) {\n cloneRight = Math.ceil(this.actionObj.clone.getBoundingClientRect().right) + this.actionObj.interval;\n }\n else {\n cloneRight = this.actionObj.clone.getBoundingClientRect().right;\n }\n var dragArea = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var contentWrapRight = dragArea.getBoundingClientRect().right;\n if (this.parent.activeView.isTimelineView() && this.parent.currentView !== 'TimelineYear' && !this.parent.enableRtl &&\n this.actionObj.pageX > cloneRight && !this.isMorePopupOpened && !(this.actionObj.pageX > contentWrapRight)) {\n this.isCursorAhead = true;\n }\n if (this.parent.activeView.isTimelineView()) {\n leftValue = formatUnit(this.actionObj.clone.offsetLeft);\n }\n var topValue;\n if ((this.parent.activeView.isTimelineView() || !this.parent.timeScale.enable ||\n (!isNullOrUndefined(this.actionObj.clone.offsetParent) &&\n this.actionObj.clone.offsetParent.classList.contains(cls.MORE_EVENT_POPUP_CLASS)))) {\n topValue = formatUnit(this.actionObj.clone.offsetTop);\n }\n else if (this.parent.currentView === 'Month') {\n topValue = formatUnit(0);\n }\n else if (this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS)) {\n topValue = formatUnit(this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS).offsetTop);\n setStyleAttribute(this.actionObj.clone, {\n width: formatUnit(Math.ceil(this.actionObj.clone.offsetWidth / this.actionObj.cellWidth) * this.actionObj.cellWidth),\n right: this.parent.enableRtl && formatUnit(0)\n });\n }\n else {\n if (this.actionObj.element.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS) &&\n !this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS)) {\n setStyleAttribute(this.actionObj.clone, {\n height: formatUnit(this.actionObj.cellHeight),\n width: formatUnit(this.actionObj.cellWidth - 1),\n pointerEvents: 'none'\n });\n }\n var top_1 = parseInt(e.top, 10);\n top_1 = top_1 < 0 ? 0 : top_1;\n topValue = formatUnit(Math.ceil(top_1 / cellHeight) * cellHeight);\n var scrollHeight = this.parent.element.querySelector('.e-content-wrap').scrollHeight;\n var cloneBottom = parseInt(topValue, 10) + this.actionObj.clone.offsetHeight;\n if (cloneBottom > scrollHeight) {\n topValue = (parseInt(topValue, 10) - (cloneBottom - scrollHeight)) + 'px';\n }\n }\n return { left: leftValue, top: topValue };\n };\n DragAndDrop.prototype.setDragActionDefaultValues = function () {\n this.actionObj.action = 'drag';\n this.actionObj.isAllDay = null;\n this.actionObj.slotInterval = this.parent.activeViewOptions.timeScale.interval / this.parent.activeViewOptions.timeScale.slotCount;\n this.actionObj.interval = this.actionObj.slotInterval;\n var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS);\n this.actionObj.cellWidth = workCell.offsetWidth;\n this.actionObj.cellHeight = workCell.offsetHeight;\n };\n DragAndDrop.prototype.dragStart = function (e) {\n var _this = this;\n var eventGuid = this.actionObj.element.getAttribute('data-guid');\n this.actionObj.event = this.parent.eventBase.getEventByGuid(eventGuid);\n var eventObj = extend({}, this.actionObj.event, null, true);\n if (!isNullOrUndefined(eventObj)) {\n this.startTime = eventObj[this.parent.eventFields.startTime].getTime();\n }\n var dragArgs = {\n cancel: false,\n data: eventObj,\n selectedData: this.getSelectedData(),\n event: e,\n excludeSelectors: null,\n element: this.actionObj.element,\n interval: this.actionObj.interval,\n navigation: { enable: false, timeDelay: 2000 },\n scroll: { enable: true, scrollBy: 30, timeDelay: 100 }\n };\n this.parent.trigger(events.dragStart, dragArgs, function (dragEventArgs) {\n if (dragEventArgs.cancel || (!isNullOrUndefined(_this.actionObj.element) &&\n isNullOrUndefined(_this.actionObj.element.parentElement))) {\n var dragObj = _this.actionObj.element.ej2_instances[0];\n if (!isNullOrUndefined(dragObj)) {\n dragObj.intDestroy(e.event);\n }\n _this.actionObj.action = '';\n _this.removeCloneElementClasses();\n _this.removeCloneElement();\n return;\n }\n _this.actionClass('addClass');\n _this.parent.uiStateValues.action = true;\n _this.actionObj.start = eventObj[_this.parent.eventFields.startTime];\n _this.actionObj.end = eventObj[_this.parent.eventFields.endTime];\n _this.actionObj.groupIndex = parseInt(_this.actionObj.element.getAttribute('data-group-index') || '0', 10);\n _this.actionObj.interval = dragEventArgs.interval;\n _this.actionObj.navigation = dragEventArgs.navigation;\n _this.actionObj.scroll = dragEventArgs.scroll;\n _this.actionObj.excludeSelectors = dragEventArgs.excludeSelectors;\n var viewElement = _this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n _this.scrollArgs = { element: viewElement, width: viewElement.scrollWidth, height: viewElement.scrollHeight };\n _this.widthPerMinute = (_this.actionObj.cellWidth / _this.actionObj.slotInterval) * _this.actionObj.interval;\n _this.heightPerMinute = (_this.actionObj.cellHeight / _this.actionObj.slotInterval) * _this.actionObj.interval;\n _this.widthUptoCursorPoint = 0;\n _this.heightUptoCursorPoint = 0;\n _this.cursorPointIndex = -1;\n _this.isHeaderRows = false;\n _this.isTimelineDayProcess = false;\n _this.minDiff = 0;\n _this.isMorePopupOpened = false;\n _this.daysVariation = -1;\n _this.isAllDayTarget = _this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS);\n if ((_this.parent.activeView.isTimelineView() || !_this.parent.timeScale.enable) && _this.parent.currentView !== 'TimelineYear') {\n if (!isNullOrUndefined(_this.actionObj.clone.offsetParent) &&\n _this.actionObj.clone.offsetParent.classList.contains(cls.MORE_EVENT_POPUP_CLASS)) {\n _this.isMorePopupOpened = true;\n }\n _this.actionObj.pageX = e.event.pageX;\n var rows = _this.parent.activeViewOptions.headerRows;\n _this.isHeaderRows = rows.length > 0 && rows[rows.length - 1].option !== 'Hour' &&\n rows[rows.length - 1].option !== 'Date';\n _this.isTimelineDayProcess = !_this.parent.activeViewOptions.timeScale.enable || _this.isHeaderRows ||\n _this.parent.currentView === 'TimelineMonth' || (rows.length > 0 && rows[rows.length - 1].option === 'Date');\n _this.isStepDragging = !_this.isTimelineDayProcess && (_this.actionObj.slotInterval !== _this.actionObj.interval);\n if (_this.isTimelineDayProcess) {\n _this.timelineEventModule = new TimelineEvent(_this.parent, 'day');\n }\n else {\n _this.timelineEventModule = new TimelineEvent(_this.parent, 'hour');\n }\n }\n if (_this.parent.currentView === 'TimelineYear') {\n _this.yearEvent = new YearEvent(_this.parent);\n }\n if (_this.parent.currentView === 'Month') {\n _this.startTime = util.resetTime(new Date(_this.startTime)).getTime();\n _this.updateOriginalElement(_this.actionObj.clone);\n _this.monthEvent = new MonthEvent(_this.parent);\n }\n if (_this.parent.currentView === 'Day' || _this.parent.currentView === 'Week' || _this.parent.currentView === 'WorkWeek') {\n _this.verticalEvent = new VerticalEvent(_this.parent);\n _this.verticalEvent.initializeValues();\n var splitEvents = _this.splitEvent(_this.actionObj.event);\n splitEvents.forEach(function (event) {\n var query = \".e-day-wrapper[data-date=\\\"\" + util.resetTime(event[_this.parent.eventFields.startTime]).getTime() + \"\\\"]\";\n if (_this.parent.activeViewOptions.group.resources.length > 0) {\n query = query.concat('[data-group-index = \"' + _this.actionObj.groupIndex + '\"]');\n }\n var appWrap = _this.parent.element.querySelector(query);\n if (appWrap) {\n var appEle = appWrap.querySelector('[data-id=\"' + _this.actionObj.clone.getAttribute('data-id') + '\"]');\n if (appEle) {\n addClass([appEle], cls.EVENT_ACTION_CLASS);\n }\n }\n });\n }\n });\n };\n DragAndDrop.prototype.getSelectedData = function () {\n if (this.isMultiSelect && this.multiData.length === 0 && this.parent.selectedElements.length > 0) {\n for (var _i = 0, _a = this.parent.selectedElements; _i < _a.length; _i++) {\n var element = _a[_i];\n var eventGuid = element.getAttribute('data-guid');\n var data = this.parent.eventBase.getEventByGuid(eventGuid);\n this.multiData.push(extend({}, data, null, true));\n }\n }\n return this.multiData;\n };\n DragAndDrop.prototype.drag = function (e) {\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide(true);\n }\n if ((!isNullOrUndefined(e.target)) && e.target.classList.contains(cls.DISABLE_DATES)) {\n return;\n }\n var eventObj = extend({}, this.actionObj.event, null, true);\n var eventArgs = this.getPageCoordinates(e);\n this.actionObj.Y = this.actionObj.pageY = eventArgs.pageY;\n this.actionObj.X = this.actionObj.pageX = eventArgs.pageX;\n this.actionObj.target = e.target;\n this.widthUptoCursorPoint = (this.widthUptoCursorPoint === 0) ?\n Math.ceil((Math.abs(this.actionObj.clone.getBoundingClientRect().left - this.actionObj.X) / this.widthPerMinute)) *\n this.widthPerMinute : this.widthUptoCursorPoint;\n this.widthUptoCursorPoint = this.isMorePopupOpened ? this.actionObj.cellWidth : this.widthUptoCursorPoint;\n this.heightUptoCursorPoint = (this.heightUptoCursorPoint === 0) ?\n Math.ceil((Math.abs(this.actionObj.clone.getBoundingClientRect().top - this.actionObj.Y) / this.heightPerMinute)) *\n this.heightPerMinute : this.heightUptoCursorPoint;\n this.isAllDayDrag = (this.parent.activeViewOptions.timeScale.enable) ?\n this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS) :\n this.actionObj.event[this.parent.eventFields.isAllDay];\n if (this.isStepDragging && this.minDiff === 0) {\n this.calculateMinutesDiff(eventObj);\n }\n if ((this.parent.currentView === 'Month' || this.isAllDayDrag) && this.daysVariation < 0) {\n var date = this.parent.getDateFromElement(this.actionObj.target);\n if (!isNullOrUndefined(date)) {\n var currentDate = util.resetTime(date);\n var startDate = util.resetTime(new Date(eventObj[this.parent.eventFields.startTime].getTime()));\n this.daysVariation = (currentDate.getTime() - startDate.getTime()) / util.MS_PER_DAY;\n }\n else {\n this.daysVariation = 0;\n }\n }\n else {\n this.daysVariation = 0;\n }\n if (this.parent.eventDragArea) {\n var targetElement = eventArgs.target;\n this.actionObj.clone.style.top = formatUnit(targetElement.offsetTop);\n this.actionObj.clone.style.left = formatUnit(targetElement.offsetLeft);\n var currentTarget = closest(targetElement, '.' + cls.ROOT);\n if (!currentTarget) {\n this.actionObj.clone.style.height = '';\n this.actionObj.clone.style.width = '';\n }\n else {\n if (!(this.parent.currentView === 'Week' || this.parent.currentView === 'WorkWeek' || this.parent.currentView === 'Day')) {\n this.actionObj.clone.style.width = formatUnit(this.actionObj.element.offsetWidth);\n }\n }\n }\n this.updateScrollPosition(e);\n this.updateNavigatingPosition(e);\n this.updateDraggingDateTime(e);\n var dragArgs = {\n data: eventObj, event: e, element: this.actionObj.element, startTime: this.actionObj.start,\n endTime: this.actionObj.end, selectedData: this.updatedData\n };\n if (this.parent.group.resources.length > 0) {\n dragArgs.groupIndex = this.actionObj.groupIndex;\n }\n this.parent.trigger(events.drag, dragArgs);\n };\n DragAndDrop.prototype.calculateMinutesDiff = function (eventObj) {\n if (this.parent.enableRtl) {\n this.minDiff =\n ((this.actionObj.clone.offsetWidth - this.widthUptoCursorPoint) / this.widthPerMinute) * this.actionObj.interval;\n }\n else {\n this.minDiff = (this.widthUptoCursorPoint / this.widthPerMinute) * this.actionObj.interval;\n }\n var startDate = eventObj[this.parent.eventFields.startTime];\n var startTime = this.parent.activeView.renderDates[0];\n var startEndHours = util.getStartEndHours(startTime, this.parent.activeView.getStartHour(), this.parent.activeView.getEndHour());\n if (startEndHours.startHour.getTime() > startDate.getTime()) {\n this.minDiff = this.minDiff + ((startEndHours.startHour.getTime() - startDate.getTime()) / util.MS_PER_MINUTE);\n }\n };\n DragAndDrop.prototype.dragStop = function (e) {\n var _this = this;\n this.isCursorAhead = false;\n this.removeCloneElementClasses();\n this.removeCloneElement();\n clearInterval(this.actionObj.navigationInterval);\n this.actionObj.navigationInterval = null;\n clearInterval(this.actionObj.scrollInterval);\n this.actionObj.scrollInterval = null;\n this.actionClass('removeClass');\n this.parent.uiStateValues.action = false;\n this.actionObj.action = null;\n if (this.isAllowDrop(e)) {\n return;\n }\n var target = ((!e.target.classList.contains('e-work-cells') && this.parent.cellTemplate) ?\n closest(e.target, '.e-work-cells') : e.target);\n var dragArgs = {\n cancel: false, data: this.getChangedData(this.updatedData), selectedData: this.updatedData,\n event: e, element: this.actionObj.element, target: target\n };\n this.parent.trigger(events.dragStop, dragArgs, function (dragEventArgs) {\n if (dragEventArgs.cancel) {\n return;\n }\n if (_this.parent.activeViewOptions.group.resources.length > 0 && !_this.parent.activeViewOptions.group.allowGroupEdit\n && !_this.parent.rowAutoHeight && !_this.parent.virtualScrollModule && _this.parent.activeViewOptions.group.byGroupID) {\n _this.parent.crudModule.crudObj.isCrudAction = true;\n _this.parent.crudModule.crudObj.sourceEvent =\n [_this.parent.resourceBase.lastResourceLevel[parseInt(dragArgs.element.getAttribute('data-group-index'), 10)]];\n var currentGroupIndex = parseInt(dragArgs.target.getAttribute('data-group-index'), 10) || _this.actionObj.groupIndex;\n _this.parent.crudModule.crudObj.targetEvent = [_this.parent.resourceBase.lastResourceLevel[currentGroupIndex]];\n }\n _this.saveChangedData(dragEventArgs, _this.isMultiSelect);\n });\n this.updatedData = [];\n this.multiData = [];\n this.isMultiSelect = false;\n this.parent.selectedElements = [];\n };\n DragAndDrop.prototype.updateNavigatingPosition = function (e) {\n var _this = this;\n if (this.actionObj.navigation.enable) {\n var currentDate_1 = this.parent.getCurrentTime();\n if (isNullOrUndefined(this.actionObj.navigationInterval)) {\n this.actionObj.navigationInterval = window.setInterval(function () {\n if (currentDate_1) {\n var crtDate = _this.parent.getCurrentTime();\n var end = crtDate.getSeconds();\n var start = currentDate_1.getSeconds() + (_this.actionObj.navigation.timeDelay / 1000);\n start = (start >= 60) ? start - 60 : start;\n if (start === end) {\n currentDate_1 = _this.parent.getCurrentTime();\n _this.viewNavigation(e);\n _this.updateDraggingDateTime(e);\n }\n }\n }, this.actionObj.navigation.timeDelay);\n }\n }\n };\n DragAndDrop.prototype.updateDraggingDateTime = function (e) {\n if (!isNullOrUndefined(this.actionObj.clone.offsetParent) &&\n this.actionObj.clone.offsetParent.classList.contains(cls.MORE_EVENT_POPUP_CLASS)) {\n this.morePopupEventDragging(e);\n }\n else if (this.parent.activeView.isTimelineView() && this.parent.currentView !== 'TimelineYear') {\n this.timelineEventModule.dateRender = this.parent.activeView.renderDates;\n this.timelineEventModule.cellWidth = this.actionObj.cellWidth;\n this.timelineEventModule.getSlotDates();\n this.actionObj.cellWidth = this.isHeaderRows ? this.timelineEventModule.cellWidth : this.actionObj.cellWidth;\n this.calculateTimelineTime(e);\n }\n else {\n if (this.parent.currentView === 'Month' || this.parent.currentView === 'TimelineYear') {\n this.calculateVerticalDate(e);\n }\n else {\n this.calculateVerticalTime(e);\n }\n }\n };\n DragAndDrop.prototype.navigationWrapper = function () {\n if (!this.parent.activeView.isTimelineView()) {\n if (this.parent.currentView === 'Month' || !this.parent.timeScale.enable) {\n var outerWrapperCls = [].slice.call(this.parent.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS));\n this.actionObj.index = (this.parent.activeView.renderDates.length < this.actionObj.index) ?\n this.parent.activeView.renderDates.length - 1 : this.actionObj.index;\n var targetWrapper = outerWrapperCls[this.actionObj.index].querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS);\n if (!targetWrapper) {\n targetWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n outerWrapperCls[this.actionObj.index].appendChild(targetWrapper);\n }\n targetWrapper.appendChild(this.actionObj.clone);\n }\n else {\n var wrapperClass = this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS) ?\n '.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS : '.' + cls.APPOINTMENT_WRAPPER_CLASS;\n this.parent.element.querySelectorAll(wrapperClass)\n .item(this.actionObj.index).appendChild(this.actionObj.clone);\n if (wrapperClass === '.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS) {\n var elementHeight = this.getAllDayEventHeight();\n var event_2 = [].slice.call(this.parent.element.querySelectorAll('.' + cls.ALLDAY_CELLS_CLASS + ':first-child'));\n if (event_2[0].offsetHeight < elementHeight) {\n for (var _i = 0, event_1 = event_2; _i < event_1.length; _i++) {\n var e = event_1[_i];\n e.style.height = ((elementHeight + 2) / 12) + 'em';\n }\n }\n this.actionObj.clone.style.height = formatUnit(elementHeight);\n }\n this.actionObj.height = parseInt(this.actionObj.clone.style.height, 10);\n }\n }\n else {\n var outWrapper = void 0;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n outWrapper = this.parent.element.querySelectorAll('.e-appointment-container:not(.e-hidden)').item(this.actionObj.index);\n }\n else {\n outWrapper = this.parent.element.querySelector('.' + cls.APPOINTMENT_CONTAINER_CLASS);\n }\n if (!isNullOrUndefined(outWrapper)) {\n var tarWrapper_1 = outWrapper.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS);\n if (!tarWrapper_1) {\n tarWrapper_1 = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n outWrapper.appendChild(tarWrapper_1);\n }\n this.actionObj.cloneElement.forEach(function (ele) {\n tarWrapper_1.appendChild(ele);\n });\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DragAndDrop.prototype.viewNavigation = function (e) {\n var navigationType;\n var dragArea = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (dragArea && ((!this.scrollEdges.top && !this.scrollEdges.bottom) ||\n closest(this.actionObj.clone, '.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS))) {\n if ((dragArea.scrollLeft === 0) &&\n (Math.round(this.actionObj.X) <=\n Math.round(dragArea.getBoundingClientRect().left + this.actionObj.cellWidth + window.pageXOffset))) {\n navigationType = this.parent.enableRtl ? 'next' : 'previous';\n }\n else if ((Math.round(dragArea.scrollLeft) + dragArea.clientWidth === dragArea.scrollWidth) &&\n (Math.round(this.actionObj.X) >=\n Math.round(dragArea.getBoundingClientRect().right - this.actionObj.cellWidth + window.pageXOffset))) {\n navigationType = this.parent.enableRtl ? 'previous' : 'next';\n }\n if (navigationType) {\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate(navigationType));\n }\n }\n };\n DragAndDrop.prototype.morePopupEventDragging = function (e) {\n if (isNullOrUndefined(e.target) || (e.target && isNullOrUndefined(closest(e.target, 'td')))) {\n return;\n }\n var eventObj = extend({}, this.actionObj.event, null, true);\n var eventDuration = eventObj[this.parent.eventFields.endTime].getTime() -\n eventObj[this.parent.eventFields.startTime].getTime();\n var td = closest(e.target, 'td');\n if (this.parent.currentView === 'TimelineYear' && !td.classList.contains('e-work-cells')) {\n return;\n }\n var dragStart = this.parent.getDateFromElement(td);\n var dragEnd = new Date(dragStart.getTime());\n dragEnd.setMilliseconds(eventDuration);\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.actionObj.groupIndex = parseInt(td.getAttribute('data-group-index'), 10);\n }\n this.actionObj.start = new Date(dragStart.getTime());\n this.actionObj.end = new Date(dragEnd.getTime());\n this.actionObj.clone.style.top = formatUnit(td.offsetParent.offsetTop);\n this.actionObj.clone.style.left = formatUnit(td.offsetLeft);\n this.actionObj.clone.style.width = formatUnit(td.offsetWidth);\n var eventContainer = td;\n var eventWrapper;\n if (this.parent.activeView.isTimelineView()) {\n var rowIndex = closest(td, 'tr').rowIndex;\n eventContainer = this.parent.element.querySelectorAll('.e-appointment-container').item(rowIndex);\n }\n eventWrapper = eventContainer.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS);\n if (!eventWrapper) {\n eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n eventContainer.appendChild(eventWrapper);\n }\n this.appendCloneElement(eventWrapper);\n };\n DragAndDrop.prototype.calculateVerticalTime = function (e) {\n var _this = this;\n if (isNullOrUndefined(this.actionObj.target) ||\n (this.actionObj.target && isNullOrUndefined(closest(this.actionObj.target, 'tr'))) ||\n (!(closest(this.actionObj.target, 'td').classList.contains(cls.WORK_CELLS_CLASS)) &&\n !(closest(this.actionObj.target, 'td').classList.contains(cls.ALLDAY_CELLS_CLASS)))) {\n return;\n }\n if (this.parent.activeViewOptions.timeScale.enable) {\n this.swapDragging(e);\n }\n var dragArea = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var eventObj = extend({}, this.actionObj.event, null, true);\n var eventStart = eventObj[this.parent.eventFields.startTime];\n var eventEnd = eventObj[this.parent.eventFields.endTime];\n var eventDuration = eventEnd.getTime() - eventStart.getTime();\n var offsetTop = Math.floor(parseInt(this.actionObj.clone.style.top, 10) / this.actionObj.cellHeight)\n * this.actionObj.cellHeight;\n offsetTop = offsetTop < 0 ? 0 : offsetTop;\n if (this.scrollEdges.top || this.scrollEdges.bottom) {\n offsetTop = this.scrollEdges.top ? dragArea.scrollTop - this.heightUptoCursorPoint +\n this.actionObj.cellHeight + window.pageYOffset :\n (dragArea.scrollTop + dragArea.offsetHeight - this.actionObj.clone.offsetHeight + window.pageYOffset) +\n (this.actionObj.clone.offsetHeight - this.heightUptoCursorPoint);\n offsetTop = Math.round(offsetTop / this.actionObj.cellHeight) * this.actionObj.cellHeight;\n this.actionObj.clone.style.top = formatUnit(offsetTop);\n }\n var rowIndex = (this.parent.activeViewOptions.timeScale.enable) ? (offsetTop / this.actionObj.cellHeight) : 0;\n var heightPerMinute = this.actionObj.cellHeight / this.actionObj.slotInterval;\n var diffInMinutes = parseInt(this.actionObj.clone.style.top, 10) - offsetTop;\n var tr;\n if (this.isAllDayDrag) {\n tr = this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS);\n }\n else {\n var trCollections = [].slice.call(this.parent.getContentTable().querySelectorAll('tr'));\n tr = trCollections[rowIndex];\n }\n var index;\n if (closest(this.actionObj.target, 'td').classList.contains(cls.WORK_CELLS_CLASS) ||\n closest(this.actionObj.target, 'td').classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n index = closest(this.actionObj.target, 'td').cellIndex;\n }\n var colIndex = isNullOrUndefined(index) ? closest(this.actionObj.clone, 'td').cellIndex : index;\n this.actionObj.index = colIndex;\n if (isNullOrUndefined(tr)) {\n return;\n }\n var td = tr.children[colIndex];\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n this.actionObj.groupIndex = parseInt(td.getAttribute('data-group-index'), 10);\n }\n var dragStart;\n var dragEnd;\n if (this.parent.activeViewOptions.timeScale.enable && !this.isAllDayDrag) {\n this.appendCloneElement(this.getEventWrapper(colIndex));\n dragStart = this.parent.getDateFromElement(td);\n dragStart.setMinutes(dragStart.getMinutes() + (diffInMinutes / heightPerMinute));\n dragEnd = new Date(dragStart.getTime());\n if (this.actionObj.element.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS)) {\n dragEnd.setMinutes(dragEnd.getMinutes() + this.actionObj.slotInterval);\n }\n else {\n dragEnd.setMilliseconds(eventDuration);\n }\n }\n else {\n dragStart = this.parent.getDateFromElement(td);\n dragStart.setDate(dragStart.getDate() - this.daysVariation);\n dragStart.setHours(eventStart.getHours(), eventStart.getMinutes(), eventStart.getSeconds());\n dragEnd = new Date(dragStart.getTime());\n dragEnd.setMilliseconds(eventDuration);\n if (!this.actionObj.element.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS) &&\n this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS)) {\n dragEnd = util.addDays(util.resetTime(dragEnd), 1);\n }\n this.updateAllDayEvents(dragStart, dragEnd, this.parent.activeViewOptions.group.byDate ? colIndex : undefined);\n }\n this.actionObj.start = new Date(+dragStart);\n this.actionObj.end = new Date(+dragEnd);\n var event = this.getUpdatedEvent(this.actionObj.start, this.actionObj.end, this.actionObj.event);\n var dynamicWrappers = [].slice.call(this.parent.element.querySelectorAll('.e-dynamic-clone'));\n for (var _i = 0, dynamicWrappers_1 = dynamicWrappers; _i < dynamicWrappers_1.length; _i++) {\n var wrapper = dynamicWrappers_1[_i];\n remove(wrapper);\n }\n if (this.multiData.length > 0) {\n if (this.isAllDayTarget && this.isAllDayDrag && !isNullOrUndefined(this.actionObj.isAllDay) && !this.actionObj.isAllDay) {\n var targetCellTime_1 = parseInt((closest(this.actionObj.target, 'td')).getAttribute('data-date'), 10);\n this.multiData.forEach(function (data) {\n _this.swagData.push(extend({}, data, null, true));\n if (data[_this.parent.eventFields.isAllDay]) {\n data[_this.parent.eventFields.startTime] =\n new Date(data[_this.parent.eventFields.startTime].getTime() + (targetCellTime_1 - _this.startTime));\n var startTime = new Date(data[_this.parent.eventFields.startTime]);\n var endTime = new Date(startTime.setMinutes(startTime.getMinutes() + _this.actionObj.slotInterval));\n data[_this.parent.eventFields.endTime] = endTime;\n data[_this.parent.eventFields.isAllDay] = false;\n }\n });\n this.startTime = targetCellTime_1;\n }\n if (this.isAllDayTarget && this.isAllDayDrag &&\n !isNullOrUndefined(this.actionObj.isAllDay) && this.actionObj.isAllDay && this.swagData.length > 0) {\n this.multiData = this.swagData;\n this.swagData = [];\n var eventObj_1 = extend({}, this.actionObj.event, null, true);\n this.startTime = eventObj_1[this.parent.eventFields.startTime].getTime();\n }\n var startTimeDiff = event[this.parent.eventFields.startTime].getTime() - this.startTime;\n for (var index_1 = 0; index_1 < this.multiData.length; index_1++) {\n this.updatedData[index_1] = this.updateMultipleData(this.multiData[index_1], startTimeDiff);\n var dayIndex = this.getDayIndex(this.updatedData[index_1]);\n if (dayIndex >= 0) {\n var wrapper = this.getEventWrapper(dayIndex, this.updatedData[index_1][this.parent.eventFields.isAllDay]);\n this.appendCloneElement(wrapper, this.actionObj.cloneElement[index_1]);\n this.updateEventHeight(this.updatedData[index_1], index_1, dayIndex);\n }\n else {\n if (!isNullOrUndefined(this.actionObj.cloneElement[index_1].parentNode)) {\n remove(this.actionObj.cloneElement[index_1]);\n }\n }\n }\n }\n else {\n this.updateEventHeight(event);\n }\n this.updateTimePosition(this.actionObj.start, this.updatedData);\n };\n DragAndDrop.prototype.splitEvent = function (event) {\n var eventFields = this.parent.eventFields;\n var eventData = [];\n var startTime = event[eventFields.startTime];\n var endTime = event[eventFields.endTime];\n if (util.resetTime(new Date(startTime.getTime())) < util.resetTime(new Date(endTime.getTime()))) {\n var startReferenceDate = util.resetTime(new Date(startTime.getTime()));\n var endReferenceDate = new Date(startReferenceDate.getTime());\n for (var i = 0; startReferenceDate < new Date(endTime.getTime()); i++) {\n endReferenceDate = new Date(endReferenceDate.setDate(startReferenceDate.getDate() + 1));\n var eventObj = extend({}, event, null, true);\n eventObj[eventFields.startTime] = new Date(startReferenceDate);\n eventObj[eventFields.endTime] = new Date(endReferenceDate);\n startReferenceDate = new Date(startReferenceDate.setDate(startReferenceDate.getDate() + 1));\n eventData.push(eventObj);\n }\n var index = eventData.length - 1;\n eventData[0][eventFields.startTime] = startTime;\n eventData[index][eventFields.endTime] = endTime;\n }\n else {\n eventData.push(event);\n }\n return eventData;\n };\n DragAndDrop.prototype.updateMultipleData = function (data, timeDifference) {\n var eventObj = extend({}, data, null, true);\n if (!isNullOrUndefined(this.actionObj.isAllDay) && this.parent.activeViewOptions.timeScale.enable &&\n ((this.isAllDayTarget && eventObj[this.parent.eventFields.isAllDay]) ||\n (!this.isAllDayTarget && !eventObj[this.parent.eventFields.isAllDay]))) {\n eventObj[this.parent.eventFields.isAllDay] = this.actionObj.isAllDay;\n }\n var endTimeDiff = eventObj[this.parent.eventFields.endTime].getTime() -\n eventObj[this.parent.eventFields.startTime].getTime();\n if (eventObj[this.parent.eventFields.isAllDay]) {\n var differInDays = Math.ceil(timeDifference / (1000 * 3600 * 24));\n var day = Math.ceil(endTimeDiff / (1000 * 3600 * 24));\n var startTime = new Date(eventObj[this.parent.eventFields.startTime]);\n eventObj[this.parent.eventFields.startTime] = util.resetTime(new Date(startTime.setDate(startTime.getDate() + differInDays)));\n eventObj[this.parent.eventFields.endTime] = util.addDays(eventObj[this.parent.eventFields.startTime], day);\n }\n else {\n eventObj[this.parent.eventFields.startTime] =\n new Date(eventObj[this.parent.eventFields.startTime].getTime() + timeDifference);\n eventObj[this.parent.eventFields.endTime] =\n new Date(eventObj[this.parent.eventFields.startTime].getTime() + endTimeDiff);\n }\n return eventObj;\n };\n DragAndDrop.prototype.getDayIndex = function (event) {\n var eventObj = extend({}, event, null, true);\n var startTime = util.resetTime(eventObj[this.parent.eventFields.startTime]).getTime();\n var query = '';\n var wrapper = cls.DAY_WRAPPER_CLASS;\n if (this.parent.activeViewOptions.timeScale.enable && (eventObj[this.parent.eventFields.isAllDay])) {\n wrapper = cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS;\n }\n else {\n wrapper = cls.WORK_CELLS_CLASS;\n }\n query = '.' + wrapper + '[data-date=\"' + startTime + '\"]';\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n query = query + '[data-group-index=\"' + this.actionObj.groupIndex + '\"]';\n }\n this.targetTd = this.parent.element.querySelector(query);\n if (isNullOrUndefined(this.targetTd)) {\n return -1;\n }\n return this.targetTd.cellIndex;\n };\n DragAndDrop.prototype.updateEventHeight = function (event, index, colIndex) {\n this.verticalEvent.initializeValues();\n var datesCount = 0;\n if (!this.parent.uiStateValues.isGroupAdaptive) {\n for (var i = 0; i < this.actionObj.groupIndex; i++) {\n datesCount = datesCount + this.verticalEvent.dateRender[i].length;\n }\n }\n var indexGroup = this.parent.uiStateValues.isGroupAdaptive ? datesCount : this.actionObj.groupIndex;\n var target = (this.parent.activeViewOptions.group.byDate &&\n !isNullOrUndefined(this.parent.getDateFromElement(this.actionObj.target))) ? true : false;\n if (target || !this.parent.activeViewOptions.group.byDate) {\n var dynamicIndex = -1;\n var dayIndex = !this.parent.activeViewOptions.group.byDate ?\n isNullOrUndefined(index) ? this.actionObj.index - datesCount : colIndex - datesCount\n : this.parent.getIndexOfDate(this.verticalEvent.dateRender[indexGroup], util.resetTime(\n // eslint-disable-next-line max-len\n this.parent.getDateFromElement(isNullOrUndefined(index) ? this.actionObj.target : this.targetTd)));\n var splitEvents = this.splitEvent(event);\n var events_1 = this.parent.eventBase.isAllDayAppointment(event) || splitEvents.length > 2 ||\n this.parent.eventSettings.spannedEventPlacement !== 'TimeSlot' ? [event] : splitEvents;\n for (var i = 0; i < events_1.length; i++) {\n if (i > 0) {\n var filterQuery = \".e-day-wrapper[data-date=\\\"\" + util.resetTime(events_1[i][this.parent.eventFields.startTime]).getTime() + \"\\\"]\";\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n filterQuery = filterQuery.concat('[data-group-index = \"' + this.actionObj.groupIndex + '\"]');\n }\n var appWrap = this.parent.element.querySelector(filterQuery);\n if (appWrap) {\n dayIndex = dayIndex + 1;\n dynamicIndex = appWrap.cellIndex;\n }\n else {\n dayIndex = -1;\n }\n }\n if (dayIndex >= 0) {\n var record = this.verticalEvent.isSpannedEvent(events_1[i], dayIndex, indexGroup);\n var eStart = record[this.verticalEvent.fields.startTime];\n var eEnd = record[this.verticalEvent.fields.endTime];\n var appHeight = this.parent.activeViewOptions.timeScale.enable ? this.verticalEvent.getHeight(eStart, eEnd) :\n this.actionObj.element.offsetHeight;\n var topValue = this.parent.activeViewOptions.timeScale.enable ?\n this.verticalEvent.getTopValue(eStart, dayIndex, indexGroup) : this.actionObj.element.offsetTop;\n if (isNullOrUndefined(index)) {\n if (i === 0) {\n this.actionObj.clone.style.top = formatUnit(topValue);\n this.actionObj.clone.style.height = formatUnit(appHeight);\n }\n else {\n this.renderSpannedEvents(record, dynamicIndex, topValue, appHeight);\n }\n }\n else {\n var appWidth = this.actionObj.cellWidth;\n if (event[this.parent.eventFields.isAllDay]) {\n topValue = this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS).offsetTop;\n appHeight = this.getAllDayEventHeight();\n var timeDiff = event[this.parent.eventFields.endTime].getTime() -\n event[this.parent.eventFields.startTime].getTime();\n var allDayDifference = Math.ceil(timeDiff / (1000 * 3600 * 24));\n if (allDayDifference >= 0) {\n appWidth = (allDayDifference * this.actionObj.cellWidth);\n }\n }\n if (this.actionObj.cloneElement[index]) {\n if (i === 0) {\n this.actionObj.cloneElement[index].style.top = formatUnit(topValue);\n this.actionObj.cloneElement[index].style.height = formatUnit(appHeight);\n this.actionObj.cloneElement[index].style.width = formatUnit(appWidth);\n this.actionObj.cloneElement[index].style.left = formatUnit(0);\n }\n else {\n this.renderSpannedEvents(record, dynamicIndex, topValue, appHeight);\n }\n }\n }\n }\n }\n }\n };\n DragAndDrop.prototype.renderSpannedEvents = function (record, index, top, height) {\n var startTime = record[this.parent.eventFields.startTime].getTime();\n var endTime = record[this.parent.eventFields.endTime].getTime();\n if (startTime !== endTime) {\n var appointmentElement = this.verticalEvent.\n createAppointmentElement(record, false, record.isSpanned, this.actionObj.groupIndex);\n addClass([appointmentElement], [cls.CLONE_ELEMENT_CLASS, 'e-dynamic-clone']);\n setStyleAttribute(appointmentElement, {\n 'width': '100%',\n 'height': height + 'px',\n 'top': top + 'px',\n 'border': '0px'\n });\n var appointmentWrap = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_WRAPPER_CLASS));\n appointmentWrap[index].appendChild(appointmentElement);\n }\n };\n DragAndDrop.prototype.getRenderedDates = function () {\n var _this = this;\n var _a, _b;\n var renderDates = this.parent.activeView.renderDates;\n (_a = this.parent.eventBase.slots).push.apply(_a, this.parent.activeView.renderDates.map(function (date) { return +date; }));\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.parent.eventBase.slots = [];\n var resources = this.parent.resourceBase.lastResourceLevel.\n filter(function (res) { return res.groupIndex === _this.actionObj.groupIndex; });\n renderDates = resources[0].renderDates;\n (_b = this.parent.eventBase.slots).push.apply(_b, renderDates.map(function (date) { return +date; }));\n }\n return renderDates;\n };\n DragAndDrop.prototype.updateAllDayEvents = function (startDate, endDate, colIndex) {\n this.parent.eventBase.slots = [];\n var event = this.getUpdatedEvent(startDate, endDate, this.actionObj.event);\n var renderDates = this.getRenderedDates();\n var events = this.parent.eventBase.splitEvent(event, renderDates);\n var query = \".e-all-day-cells[data-date=\\\"\" + events[0][this.parent.eventFields.startTime].getTime() + \"\\\"]\";\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n query = query.concat('[data-group-index = \"' + this.actionObj.groupIndex + '\"]');\n }\n var cell = [].slice.call(this.parent.element.querySelectorAll(query));\n if (cell.length > 0 || !isNullOrUndefined(colIndex)) {\n var cellIndex = !isNullOrUndefined(colIndex) ? colIndex : cell[0].cellIndex;\n this.appendCloneElement(this.getEventWrapper(cellIndex));\n // eslint-disable-next-line max-len\n this.actionObj.clone.style.width = formatUnit(events[0].data.count * this.actionObj.cellWidth);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DragAndDrop.prototype.swapDragging = function (e) {\n var colIndex = closest(this.actionObj.target, 'td').cellIndex;\n if (closest(this.actionObj.target, '.' + cls.DATE_HEADER_WRAP_CLASS) &&\n !closest(this.actionObj.clone, '.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS)) {\n addClass([this.actionObj.clone], cls.ALLDAY_APPOINTMENT_CLASS);\n this.appendCloneElement(this.getEventWrapper(colIndex));\n this.actionObj.isAllDay = true;\n var eventHeight = this.getAllDayEventHeight();\n var allDayElement = [].slice.call(this.parent.element.querySelectorAll('.' + cls.ALLDAY_CELLS_CLASS + ':first-child'));\n if (allDayElement[0].offsetHeight < eventHeight) {\n for (var _i = 0, allDayElement_1 = allDayElement; _i < allDayElement_1.length; _i++) {\n var element = allDayElement_1[_i];\n element.style.height = ((eventHeight + 2) / 12) + 'em';\n }\n }\n setStyleAttribute(this.actionObj.clone, {\n width: formatUnit(this.actionObj.cellWidth),\n height: formatUnit(eventHeight),\n top: formatUnit(this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS).offsetTop)\n });\n }\n if (closest(this.actionObj.target, '.' + cls.WORK_CELLS_CLASS) &&\n !closest(this.actionObj.clone, '.' + cls.DAY_WRAPPER_CLASS)) {\n removeClass([this.actionObj.clone], cls.ALLDAY_APPOINTMENT_CLASS);\n this.appendCloneElement(this.getEventWrapper(colIndex));\n this.actionObj.isAllDay = false;\n // eslint-disable-next-line max-len\n var height = (this.actionObj.element.offsetHeight === 0) ? this.actionObj.height : this.actionObj.element.offsetHeight;\n setStyleAttribute(this.actionObj.clone, {\n left: formatUnit(0),\n height: formatUnit(height),\n width: formatUnit(this.actionObj.cellWidth)\n });\n }\n };\n DragAndDrop.prototype.calculateVerticalDate = function (e) {\n if (isNullOrUndefined(e.target) || (e.target && isNullOrUndefined(closest(e.target, 'tr'))) ||\n (e.target && e.target.tagName === 'DIV')) {\n return;\n }\n var eventObj = extend({}, this.actionObj.event, null, true);\n if (isNullOrUndefined(this.parent.eventDragArea)) {\n this.removeCloneElement();\n }\n var eventDuration = eventObj[this.parent.eventFields.endTime].getTime() -\n eventObj[this.parent.eventFields.startTime].getTime();\n var td = closest(this.actionObj.target, 'td');\n if (!isNullOrUndefined(td)) {\n var tr = td.parentElement;\n this.actionObj.index = (tr.rowIndex * tr.children.length) + td.cellIndex;\n var workCells = [].slice.call(this.parent.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS));\n td = workCells[this.actionObj.index];\n var currentDate = this.parent.getDateFromElement(td);\n if (!isNullOrUndefined(currentDate)) {\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.actionObj.groupIndex = parseInt(td.getAttribute('data-group-index'), 10);\n }\n var timeString = new Date(currentDate.setDate(currentDate.getDate() - this.daysVariation));\n var dragStart = new Date(timeString.getTime());\n var dragEnd = new Date(dragStart.getTime());\n var startTimeDiff = eventObj[this.parent.eventFields.startTime].getTime() -\n (util.resetTime(new Date(+eventObj[this.parent.eventFields.startTime]))).getTime();\n dragStart = new Date(dragStart.getTime() + startTimeDiff);\n dragEnd = new Date(dragStart.getTime() + eventDuration);\n this.actionObj.start = new Date(dragStart.getTime());\n this.actionObj.end = new Date(dragEnd.getTime());\n }\n }\n var event = this.getUpdatedEvent(this.actionObj.start, this.actionObj.end, this.actionObj.event);\n var eventWrappers = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CLONE_ELEMENT_CLASS));\n for (var _i = 0, eventWrappers_1 = eventWrappers; _i < eventWrappers_1.length; _i++) {\n var wrapper = eventWrappers_1[_i];\n remove(wrapper);\n }\n if (this.multiData && this.multiData.length > 0) {\n var startTime = util.resetTime(new Date(event[this.parent.eventFields.startTime]));\n var startTimeDiff = startTime.getTime() - this.startTime;\n if (this.parent.currentView === 'TimelineYear' && this.parent.group.resources.length > 0) {\n startTimeDiff = (startTime.getFullYear() - new Date(this.startTime).getFullYear()) * 12;\n startTimeDiff -= new Date(this.startTime).getMonth();\n startTimeDiff += startTime.getMonth();\n }\n for (var index = 0; index < this.multiData.length; index++) {\n this.updatedData[index] = this.updateMultipleVerticalDate(this.multiData[index], startTimeDiff);\n if (this.parent.currentView === 'TimelineYear') {\n this.dynamicYearlyEventsRendering(this.updatedData[index]);\n }\n else {\n this.dynamicEventsRendering(this.updatedData[index]);\n }\n }\n }\n else {\n if (this.parent.currentView === 'TimelineYear') {\n this.dynamicYearlyEventsRendering(event);\n }\n else {\n this.dynamicEventsRendering(event);\n }\n }\n };\n DragAndDrop.prototype.updateMultipleVerticalDate = function (data, timeDifference) {\n var eventObj = extend({}, data, null, true);\n var eventDuration = eventObj[this.parent.eventFields.endTime].getTime() -\n eventObj[this.parent.eventFields.startTime].getTime();\n var startDate = new Date(eventObj[this.parent.eventFields.startTime]);\n if (this.parent.currentView === 'TimelineYear' && this.parent.group.resources.length > 0) {\n eventObj[this.parent.eventFields.startTime] = new Date(startDate.setMonth(startDate.getMonth() + timeDifference));\n }\n else {\n var differInDays = Math.ceil(timeDifference / util.MS_PER_DAY);\n eventObj[this.parent.eventFields.startTime] = new Date(startDate.setDate(startDate.getDate() + differInDays));\n }\n eventObj[this.parent.eventFields.endTime] =\n new Date(eventObj[this.parent.eventFields.startTime].getTime() + eventDuration);\n return eventObj;\n };\n DragAndDrop.prototype.calculateTimelineTime = function (e) {\n var eventObj = extend({}, this.actionObj.event, null, true);\n var eventDuration = eventObj[this.parent.eventFields.endTime].getTime() -\n eventObj[this.parent.eventFields.startTime].getTime();\n var offsetLeft = this.parent.enableRtl ? Math.abs(this.actionObj.clone.offsetLeft) - this.actionObj.clone.offsetWidth :\n parseInt(this.actionObj.clone.style.left, 10);\n offsetLeft = Math.floor(offsetLeft / this.actionObj.cellWidth) * this.actionObj.cellWidth;\n var rightOffset;\n if (this.parent.enableRtl) {\n rightOffset = Math.abs(parseInt(this.actionObj.clone.style.right, 10));\n this.actionObj.clone.style.right = formatUnit(rightOffset);\n }\n offsetLeft = this.getOffsetValue(offsetLeft, rightOffset);\n var colIndex = this.getColumnIndex(offsetLeft);\n var dragArea = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var contentWrapRight = dragArea.getBoundingClientRect().right;\n var cursorDrag = this.parent.activeView.isTimelineView() && !this.parent.enableRtl &&\n this.actionObj.pageX > this.actionObj.clone.getBoundingClientRect().right &&\n !this.isMorePopupOpened && !(this.actionObj.pageX > contentWrapRight);\n var leftVal = (this.parent.eventDragArea) ? dragArea.scrollLeft - dragArea.offsetLeft : 0;\n if ((this.isCursorAhead || cursorDrag) && !this.isStepDragging) {\n this.isCursorAhead = true;\n }\n var cloneIndex = Math.floor((this.actionObj.pageX - this.actionObj.clone.getBoundingClientRect().left + leftVal) / this.actionObj.cellWidth);\n if (this.parent.enableRtl) {\n cloneIndex = Math.abs(Math.floor((this.actionObj.pageX - this.actionObj.clone.getBoundingClientRect().right) /\n this.actionObj.cellWidth)) - 1;\n }\n if (this.cursorPointIndex < 0) {\n this.cursorIndex(e, eventObj, offsetLeft, cloneIndex);\n }\n var tr = this.parent.getContentTable().querySelector('tr');\n var index = this.getCursorCurrentIndex(colIndex, cloneIndex, tr);\n index = index < 0 ? 0 : index;\n var eventStart = this.isHeaderRows ? new Date(this.timelineEventModule.dateRender[index].getTime()) :\n this.parent.getDateFromElement(tr.children[index]);\n if (this.isStepDragging) {\n var widthDiff = this.getWidthDiff(tr, index);\n if (widthDiff !== 0) {\n var timeDiff = Math.round(widthDiff / this.widthPerMinute);\n eventStart.setMinutes(eventStart.getMinutes() + (timeDiff * this.actionObj.interval));\n if (this.isCursorAhead || cursorDrag) {\n eventStart.setMilliseconds(-(eventDuration));\n }\n else {\n eventStart.setMinutes(eventStart.getMinutes() - this.minDiff);\n }\n }\n else {\n eventStart = this.actionObj.start;\n }\n }\n else {\n if (this.isCursorAhead || cursorDrag) {\n eventStart.setMinutes(eventStart.getMinutes() +\n (this.isTimelineDayProcess ? MINUTES_PER_DAY : this.actionObj.slotInterval));\n eventStart.setMilliseconds(-(eventDuration));\n }\n else {\n eventStart.setMinutes(eventStart.getMinutes() -\n (this.cursorPointIndex * (this.isTimelineDayProcess ? MINUTES_PER_DAY : this.actionObj.slotInterval)));\n }\n }\n eventStart = this.calculateIntervalTime(eventStart);\n if (this.isTimelineDayProcess) {\n var eventSrt = eventObj[this.parent.eventFields.startTime];\n eventStart.setHours(eventSrt.getHours(), eventSrt.getMinutes(), eventSrt.getSeconds());\n }\n if (this.parent.eventDragArea) {\n var targetDate = this.parent.getDateFromElement(e.target);\n if (!isNullOrUndefined(targetDate)) {\n if (!this.parent.activeViewOptions.timeScale.enable || (this.parent.currentView === 'TimelineMonth')) {\n var eventSrt = eventObj[this.parent.eventFields.startTime];\n eventStart = new Date(targetDate.setHours(eventSrt.getHours(), eventSrt.getMinutes(), eventSrt.getSeconds()));\n }\n else {\n eventStart = targetDate;\n }\n }\n }\n var eventEnd = new Date(eventStart.getTime());\n eventEnd.setMilliseconds(eventDuration);\n var eventsData = [this.getUpdatedEvent(eventStart, eventEnd, this.actionObj.event)];\n if (this.multiData.length > 0) {\n var startTimeDiff = eventsData[0][this.parent.eventFields.startTime].getTime() - this.startTime;\n for (var i = 0; i < this.multiData.length; i++) {\n this.updatedData[i] = this.updateMultipleData(this.multiData[i], startTimeDiff);\n }\n eventsData = this.updatedData;\n }\n for (var dataIndex = 0; dataIndex < eventsData.length; dataIndex++) {\n var events_2 = this.timelineEventModule.splitEvent(eventsData[dataIndex], this.timelineEventModule.dateRender);\n var eventData = events_2[0].data;\n var startTime = this.timelineEventModule.getStartTime(events_2[0], eventData);\n var endTime = this.timelineEventModule.getEndTime(events_2[0], eventData);\n // eslint-disable-next-line max-len\n var width = this.timelineEventModule.getEventWidth(startTime, endTime, eventObj[this.parent.eventFields.isAllDay], eventData.count);\n // eslint-disable-next-line max-len\n var day = this.parent.getIndexOfDate(this.timelineEventModule.dateRender, util.resetTime(new Date(startTime.getTime())));\n day = day < 0 ? 0 : day;\n var left = this.timelineEventModule.getPosition(startTime, endTime, eventObj[this.parent.eventFields.isAllDay], day);\n var cloneElement = this.multiData.length > 0 ? this.actionObj.cloneElement[dataIndex] : this.actionObj.clone;\n if (this.parent.enableRtl) {\n cloneElement.style.right = formatUnit(left);\n }\n else {\n cloneElement.style.left = formatUnit(left);\n }\n if (!this.isMorePopupOpened) {\n cloneElement.style.width = formatUnit(width);\n }\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.calculateResourceGroupingPosition(e, cloneElement);\n }\n this.actionObj.start = new Date(eventStart.getTime());\n this.actionObj.end = new Date(eventEnd.getTime());\n this.updateTimePosition(this.actionObj.start, this.updatedData);\n }\n };\n DragAndDrop.prototype.getOffsetValue = function (offsetLeft, rightOffset) {\n if (this.scrollEdges.left || this.scrollEdges.right) {\n var viewEle = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (this.parent.enableRtl) {\n rightOffset = viewEle.offsetWidth - viewEle.scrollLeft;\n if (this.scrollEdges.right) {\n rightOffset = (rightOffset - viewEle.offsetWidth + this.actionObj.clone.offsetWidth) -\n (this.actionObj.clone.offsetWidth - this.widthUptoCursorPoint);\n }\n else {\n rightOffset = rightOffset + this.widthUptoCursorPoint;\n if (rightOffset - this.widthUptoCursorPoint >= viewEle.scrollWidth) {\n this.actionObj.clone.style.width =\n formatUnit(this.actionObj.clone.offsetWidth - this.widthUptoCursorPoint + this.actionObj.cellWidth);\n rightOffset = (viewEle.scrollLeft - viewEle.scrollWidth);\n }\n }\n this.actionObj.clone.style.left = formatUnit(rightOffset);\n }\n else {\n if (this.scrollEdges.left) {\n offsetLeft = viewEle.scrollLeft - this.widthUptoCursorPoint + this.actionObj.cellWidth;\n if (viewEle.scrollLeft + viewEle.offsetWidth >= viewEle.offsetWidth) {\n viewEle.scrollLeft = viewEle.scrollLeft - 1;\n }\n else if (this.actionObj.clone.offsetLeft === 0) {\n offsetLeft = viewEle.scrollLeft;\n }\n }\n else {\n offsetLeft = (viewEle.scrollLeft + viewEle.offsetWidth -\n this.actionObj.clone.offsetWidth) + (this.actionObj.clone.offsetWidth - this.widthUptoCursorPoint);\n }\n offsetLeft = offsetLeft < 0 ? 0 : offsetLeft;\n this.actionObj.clone.style.left = formatUnit(offsetLeft);\n }\n }\n return offsetLeft;\n };\n DragAndDrop.prototype.getWidthDiff = function (tr, index) {\n var pages = this.scrollArgs.element.getBoundingClientRect();\n if (pages.left <= this.actionObj.pageX && pages.right >= this.actionObj.pageX) {\n var targetLeft = tr.children[index].offsetLeft;\n var pageX = this.actionObj.pageX - pages.left;\n if (this.parent.enableRtl) {\n return (targetLeft + this.actionObj.cellWidth) - (this.scrollArgs.element.scrollLeft + pageX);\n }\n else {\n return (this.scrollArgs.element.scrollLeft + pageX) - targetLeft;\n }\n }\n return 0;\n };\n DragAndDrop.prototype.getColumnIndex = function (offsetLeft) {\n var index = Math.floor(offsetLeft / this.actionObj.cellWidth);\n if (this.isHeaderRows) {\n return index;\n }\n return this.getIndex(index);\n };\n DragAndDrop.prototype.getCursorCurrentIndex = function (colIndex, cloneIndex, tr) {\n var index = colIndex + cloneIndex;\n if (this.isHeaderRows) {\n var dateLength = Math.floor(tr.offsetWidth / this.actionObj.cellWidth);\n return (index > dateLength - 1) ? dateLength - 1 : index;\n }\n return (index > tr.children.length - 1) ? tr.children.length - 1 : index;\n };\n DragAndDrop.prototype.cursorIndex = function (e, event, left, index) {\n var td = closest(e.target, '.e-work-cells');\n if (!isNullOrUndefined(td) && !this.isMorePopupOpened) {\n var targetDate = this.parent.getDateFromElement(td);\n if (this.isHeaderRows) {\n var currentIndex = Math.floor(left / this.actionObj.cellWidth);\n targetDate = new Date(this.timelineEventModule.dateRender[currentIndex + index].getTime());\n }\n var timeDiff = targetDate.getTime() - event[this.parent.eventFields.startTime].getTime();\n if (this.isTimelineDayProcess) {\n this.cursorPointIndex = Math.abs(Math.ceil(timeDiff / (util.MS_PER_DAY)));\n }\n else {\n var widthDiff = Math.floor((timeDiff / util.MS_PER_MINUTE) / (this.actionObj.slotInterval / this.actionObj.cellWidth));\n this.cursorPointIndex = Math.floor(widthDiff / this.actionObj.cellWidth);\n this.cursorPointIndex = this.cursorPointIndex < 0 ? 0 : this.cursorPointIndex;\n }\n }\n else {\n this.cursorPointIndex = 0;\n }\n };\n DragAndDrop.prototype.calculateResourceGroupingPosition = function (e, cloneElement) {\n var dragArea = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var trCollection = [].slice.call(this.parent.element.querySelectorAll('.e-content-wrap .e-content-table tr:not(.e-hidden)'));\n var translateY = util.getTranslateY(dragArea.querySelector('table'));\n translateY = (isNullOrUndefined(translateY)) ? 0 : translateY;\n var rowHeight = (this.parent.rowAutoHeight) ?\n ~~(dragArea.querySelector('table').offsetHeight / trCollection.length) : this.actionObj.cellHeight;\n var rowIndex = Math.floor(Math.floor((this.actionObj.Y +\n (dragArea.scrollTop - translateY - (window.scrollY || window.pageYOffset))) -\n dragArea.getBoundingClientRect().top) / rowHeight);\n rowIndex = (rowIndex < 0) ? 0 : (rowIndex > trCollection.length - 1) ? trCollection.length - 1 : rowIndex;\n this.actionObj.index = rowIndex;\n var eventContainer = this.parent.element.querySelectorAll('.e-appointment-container:not(.e-hidden)').item(rowIndex);\n var eventWrapper = eventContainer.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS);\n if (!eventWrapper) {\n eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n eventContainer.appendChild(eventWrapper);\n }\n this.appendCloneElement(eventWrapper, cloneElement);\n var td = closest(this.actionObj.target, 'td');\n this.actionObj.groupIndex = (td && !isNaN(parseInt(td.getAttribute('data-group-index'), 10)))\n ? parseInt(td.getAttribute('data-group-index'), 10) : this.actionObj.groupIndex;\n var top = trCollection[rowIndex].getBoundingClientRect().height * rowIndex;\n if (this.parent.rowAutoHeight) {\n var cursorElement = this.getCursorElement(e);\n if (cursorElement) {\n top = cursorElement.classList.contains(cls.WORK_CELLS_CLASS) ? cursorElement.offsetTop :\n cursorElement.offsetParent.classList.contains(cls.APPOINTMENT_CLASS) ?\n cursorElement.offsetParent.offsetTop : top;\n }\n }\n cloneElement.style.top = formatUnit(top);\n };\n DragAndDrop.prototype.appendCloneElement = function (element, cloneElement) {\n if (cloneElement === void 0) { cloneElement = null; }\n cloneElement = isNullOrUndefined(cloneElement) ? this.actionObj.clone : cloneElement;\n var dragElement = document.querySelector(this.parent.eventDragArea);\n if (this.parent.eventDragArea && dragElement) {\n dragElement.appendChild(cloneElement);\n }\n else {\n element.appendChild(cloneElement);\n }\n };\n DragAndDrop.prototype.getEventWrapper = function (index, isAllDayDrag) {\n var eventWrapper;\n if (isNullOrUndefined(isAllDayDrag)) {\n isAllDayDrag = this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS);\n }\n if (this.parent.activeViewOptions.timeScale.enable) {\n var wrapperClass = isAllDayDrag ? '.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS : '.' + cls.APPOINTMENT_WRAPPER_CLASS;\n eventWrapper = this.parent.element.querySelectorAll(wrapperClass).item(index);\n }\n else {\n var targetWrapper = this.parent.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS).item(index);\n eventWrapper = targetWrapper.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS);\n if (!eventWrapper) {\n eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n targetWrapper.appendChild(eventWrapper);\n }\n }\n return eventWrapper;\n };\n DragAndDrop.prototype.getAllDayEventHeight = function () {\n var eventWrapper = createElement('div', { className: cls.APPOINTMENT_CLASS });\n this.parent.element.querySelector('.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS).appendChild(eventWrapper);\n var eventHeight = eventWrapper.offsetHeight;\n remove(eventWrapper);\n return eventHeight;\n };\n DragAndDrop.prototype.isAllowDrop = function (e) {\n if (!this.actionObj.excludeSelectors) {\n return false;\n }\n var dropSelectors = this.actionObj.excludeSelectors.split(',');\n var isAllowDrop = false;\n for (var _i = 0, dropSelectors_1 = dropSelectors; _i < dropSelectors_1.length; _i++) {\n var selector = dropSelectors_1[_i];\n if (e.target.classList.contains(selector)) {\n isAllowDrop = true;\n break;\n }\n }\n return isAllowDrop;\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the module name\n */\n DragAndDrop.prototype.getModuleName = function () {\n return 'dragAndDrop';\n };\n return DragAndDrop;\n}(ActionBase));\nexport { DragAndDrop };\n","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Schedule.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Schedule.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Schedule.vue?vue&type=template&id=2b700657&scoped=true&\"\nimport script from \"./Schedule.vue?vue&type=script&lang=js&\"\nexport * from \"./Schedule.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Schedule.vue?vue&type=style&index=0&id=2b700657&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2b700657\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Schedule.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Schedule.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Schedule.vue?vue&type=template&id=387ee734&\"\nimport script from \"./Schedule.vue?vue&type=script&lang=js&\"\nexport * from \"./Schedule.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cell.vue?vue&type=style&index=0&id=5ff04990&scoped=true&lang=css&\""],"sourceRoot":""}