{"version":3,"sources":["webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.recurrence_editor.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.loading.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.appointment_form.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.appointments.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.appointment.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.appointments.layout_manager.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.appointment_model.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.header.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.navigator.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.resource_manager.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.subscribes.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.publisher_mixin.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.table_creator.js"],"names":["exports","default","_component_registrator","_interopRequireDefault","_guid","_renderer","_date","_extend","_type","_date2","_message","_form","_button_group","_date_box","_editor","_number_box","_recurrence","obj","__esModule","_toConsumableArray","arr","Array","isArray","_arrayLikeToArray","_arrayWithoutHoles","iter","Symbol","iterator","from","_iterableToArray","o","minLen","n","Object","prototype","toString","call","slice","constructor","name","test","_unsupportedIterableToArray","TypeError","_nonIterableSpread","len","length","i","arr2","_setPrototypeOf","p","setPrototypeOf","__proto__","REPEAT_END_EDITOR","INTERVAL_EDITOR","frequenciesMessages","recurrence","value","frequencies","map","item","text","format","repeatEndTypes","type","days","RecurrenceRule","rule","this","_recurrenceProcessor","getRecurrenceProcessor","_recurrenceRule","evalRecurrenceRule","_proto","makeRules","string","makeRule","field","isDefined","count","until","getRepeatEndRule","rules","getRecurrenceString","getRules","getDaysFromByDayRule","daysFromByDayRule","RecurrenceEditor","_Editor","subClass","superClass","apply","arguments","create","_proto2","_getDefaultOptions","defaultOptions","extend","startDate","Date","firstDayOfWeek","_getFirstDayOfWeek","option","firstDayOfWeekIndex","_createComponent","element","config","_extendConfig","readOnly","_init","_render","$element","addClass","_$container","appendTo","_prepareEditors","_renderEditors","getEditorByField","fieldName","editor","getRecurrenceForm","getEditor","_weekEditor","_repeatCountEditor","_repeatUntilDate","freq","toLowerCase","_editors","_createFreqEditor","_createIntervalEditor","_createRepeatOnLabel","itemType","cssClass","colCount","colCountByScreen","xs","items","_createRepeatOnEditor","_createRepeatEndEditor","_this","dataField","editorType","editorOptions","valueExpr","displayExpr","layout","elementAttr","onValueChanged","args","_valueChangedHandler","label","_this2","interval","concat","width","min","showSpinButtons","useLargeSpinButtons","template","charAt","toUpperCase","substr","colSpan","visible","_createByDayEditor","_createByMonthEditor","_createByMonthDayEditor","_this3","_","itemElement","byDay","_daysOfWeekByRules","localDaysNames","getDayNames","dayNames","itemsButtonGroup","index","key","_$repeatOnWeek","selectionMode","selectedItemKeys","keyExpr","onSelectionChanged","e","selectedKeys","component","_changeEditorValue","_this4","monthsName","getMonthNames","_monthOfYearByRules","_this5","max","_dayOfMonthByRules","_this6","repeatType","itemTemplate","itemData","_renderRepeatCountEditor","_renderRepeatUntilEditor","_renderDefaultRepeatEnd","_repeatEndValueChangedHandler","$container","_recurrenceForm","showValidationSummary","scrollingEnabled","showColonAfterLabel","labelLocation","_disableRepeatEndParts","_setAriaDescribedBy","$label","labelId","setAria","changeValueByVisibility","_handleDefaults","daysByRule","getDay","dayByRule","bymonthday","getDate","monthByRule","bymonth","getMonth","String","$editorTemplate","_getUntilValue","repeatCount","$editorWrapper","_$repeatCountEditor","_repeatCountValueChangeHandler","bind","_formatUntilDate","date","sameDate","setToDayEnd","repeatUntil","_$repeatDateEditor","_repeatUntilValueChangeHandler","calendarOptions","untilDate","previousValue","_makeRepeatOnRule","_changeRepeatOnVisibility","_optionChanged","_changeRepeatIntervalLabel","_changeEditorsValue","previousFreq","itemOption","_changeDayOfWeekValue","_changeDayOfMonthValue","_changeMonthOfYearValue","_changeIntervalValue","_changeRepeatCountValue","_changeRepeatEndValue","_changeRepeatUntilValue","_days","day","month","toggle","_freqEditor","focus","_switchEditor","_default","module","show","options","removeLoadPanel","loading","_load_panel","container","_view_port","createLoadPanel","hide","_deferred","Deferred","resolve","done","promise","remove","_config","_devices","_bindable_template","_empty_template","_array","_browser","_callbacks","_common","_data","_position","_date_serialization","_iterator","_support","_window","_data_helper","_visibility_change","_dialog","_themes","_ui","_ui2","_appointmentPopup","_compactAppointmentsHelper","_desktopTooltipStrategy","_mobileTooltipStrategy","_ui3","_uiScheduler","_uiSchedulerAppointments","_uiScheduler2","_uiScheduler3","_uiScheduler4","_uiScheduler5","_utils","_uiScheduler6","_uiScheduler7","_uiScheduler8","_uiScheduler9","_uiScheduler10","_uiScheduler11","_uiScheduler12","_uiScheduler13","_uiScheduler14","_appointmentAdapter","_timeZoneCalculator","_dataStructures","_appointmentSettingsGenerator","_utils2","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","_defineProperty","defineProperty","configurable","writable","WIDGET_SMALL_CLASS","WIDGET_ADAPTIVE_CLASS","WIDGET_WIN_NO_TOUCH_CLASS","WIDGET_READONLY_CLASS","VIEWS_CONFIG","workSpace","renderingStrategy","week","workWeek","timelineDay","timelineWeek","timelineWorkWeek","timelineMonth","agenda","StoreEventNames","Scheduler","_Widget","views","currentView","currentDate","trimTime","dateSerializationFormat","groups","resources","dataSource","customizeDateNavigatorText","appointmentTemplate","dropDownAppointmentTemplate","appointmentCollectorTemplate","dataCellTemplate","timeCellTemplate","resourceCellTemplate","dateCellTemplate","startDayHour","endDayHour","editing","allowAdding","allowDeleting","allowDragging","allowResizing","allowUpdating","allowTimeZoneEditing","allowEditingTimeZones","showAllDayPanel","showCurrentTimeIndicator","shadeUntilCurrentTime","indicatorUpdateInterval","indicatorTime","recurrenceEditMode","cellDuration","maxAppointmentsPerCell","selectedCellData","groupByDate","onAppointmentRendered","onAppointmentClick","onAppointmentDblClick","onAppointmentContextMenu","onCellClick","onCellContextMenu","onAppointmentAdding","onAppointmentAdded","onAppointmentUpdating","onAppointmentUpdated","onAppointmentDeleting","onAppointmentDeleted","onAppointmentFormOpening","appointmentTooltipTemplate","appointmentPopupTemplate","crossScrollingEnabled","useDropDownViewSwitcher","startDateExpr","endDateExpr","textExpr","descriptionExpr","allDayExpr","recurrenceRuleExpr","recurrenceExceptionExpr","disabledExpr","remoteFiltering","timeZone","startDateTimeZoneExpr","endDateTimeZoneExpr","noDataText","adaptivityEnabled","allowMultipleCellSelection","scrolling","mode","renovateRender","_appointmentTooltipOffset","x","y","_appointmentTooltipButtonsPosition","_appointmentTooltipOpenButtonText","_dropDownButtonIcon","_appointmentCountPerCell","_collectorOffset","_appointmentOffset","integrationOptions","useDeferUpdateForTemplates","_defaultOptionsRules","device","real","deviceType","isSimulator","focusStateEnabled","current","generic","isMaterial","data","split","forEach","span","append","_setDeprecatedOptions","_deprecatedOptions","since","message","alias","_getAppointmentSettingsGenerator","AppointmentSettingsGenerator","_postponeDataSourceLoading","postponedOperations","add","_reloadDataSource","_postponeResourceLoading","whenLoaded","_loadResources","resolveCallbacks","_updateOption","_dateOption","_workSpace","_header","_getViewStartByOptions","_appointments","_filterAppointmentsByDate","_initDataSource","_appointmentModel","setDataSource","_dataSource","_processCurrentView","_getCurrentViewOptions","repaint","fire","getLayoutManager","initRenderingStrategy","_getAppointmentsRenderingStrategy","_validateCellDuration","allowDrag","_allowDragging","allowResize","_allowResizing","_getAppointmentTemplate","_refreshWorkSpace","_updateHeader","_resourcesManager","setResources","setDataAccessors","_combineDataAccessors","_actions","_createActionByOption","_getAppointmentRenderedAction","_readyToRenderAppointments","_getAppointmentsToRepaint","_dimensionChanged","_initEditing","_editing","_bringEditingModeToAppointments","hideAppointmentTooltip","_cleanPopup","_updateExpression","_initAppointmentTemplate","_toggleAdaptiveClass","fullName","viewCountConfig","_getViewCountConfig","intervalCount","_getCurrentViewOption","_currentView","optionName","optionValue","deserializeDate","_getSerializationFormat","isString","getDateSerializationFormat","editingConfig","allowDelete","_isAgenda","allowAllDayResize","_supportAllDayResizing","_allowAllDayResizing","_getCurrentViewType","_isAllDayExpanded","hasAllDayAppointments","_getTimezoneOffsetByOption","calculateTimezoneByValue","dateRange","getDateRange","filterByDate","result","loadResources","_loadedResources","load","_fireContentReadyAction","fail","reject","isLoading","position","of","_this$_workSpaceRecal","contentReadyBase","fireContentReady","_workSpaceRecalculation","filteredItems","getFilteredItems","_toggleSmallClass","_isVisible","_cleanAllowedPositions","appointments","_layoutManager","createAppointmentsMap","triggerResize","updatePopupFullScreenMode","_clean","getBoundingRect","get","toggleClass","_visibilityChanged","_dataSourceOptions","paginate","_initExpressions","endDate","startDateTimeZone","endDateTimeZone","allDay","description","recurrenceRule","recurrenceException","disabled","msie","touch","combinedDataAccessors","getAppointmentDurationInMinutes","_initActions","CompactAppointmentsHelper","_asyncTemplatesTimers","_dataSourceLoadedCallback","_subscribes","timeZoneCalculator","TimeZoneCalculator","getClientOffset","getClientTimezoneOffset","getCommonOffset","getAppointmentOffset","appointmentTimezone","_initTemplates","_templateManager","addDefaultTemplates","appointmentTooltip","EmptyTemplate","dropDownAppointment","expr","_dataAccessors","createGetter","property","compileGetter","getter","valueOf","BindableTemplate","model","getAppointmentsInstance","_renderAppointmentTemplate","resourcesDataAccessors","each","accessor","_renderContent","_renderContentImpl","_dataSourceChangedHandler","_renderAppointments","_renderView","fireWith","isVirtualScrolling","_this$getWorkSpace","getWorkSpace","_filterAppointments","prerenderFilterName","_filteredItems","getRenderingStrategyInstance","calculateRows","cleanModelState","getRepaintedAppointments","fields","setter","dateGetter","dateSetter","compileSetter","that","forceIsoDateParsing","serializeDate","exprObj","replace","isObject","_isReadOnly","prop","hasOwnProperty","_dispose","_appointmentTooltip","dispose","hideAppointmentPopup","clearTimeout","excludeValidators","_renderFocusTarget","noop","_initMarkup","_renderHeader","_appointmentsConfig","MobileTooltipStrategy","DesktopTooltipStrategy","_getAppointmentTooltipOptions","_isLoaded","_isDataSourceLoading","_initMarkupCore","createComponent","getScrollableContainer","getWorkSpaceScrollableContainer","getAppointmentTemplate","showAppointmentPopup","checkAndDeleteAppointment","isAppointmentInAllDayPanel","createFormattedDateText","appointment","targetedAppointment","getAppointmentDisabled","createAppointmentAdapter","targetedAdapter","_checkRecurringAppointment","deleteAppointment","_getExtraAppointmentTooltipOptions","rtlEnabled","offset","appointmentData","appointmentTakesAllDay","supportAllDayRow","_this7","hasWindow","_cleanWorkspace","_renderWorkSpace","fixedContainer","getFixedContainer","allDayContainer","getAllDayContainer","_waitAsyncTemplate","_this7$_workSpaceReca","_isResourcesLoaded","_isDataSourceLoaded","isLoaded","$header","_headerConfig","_this8","currentViewOptions","countConfig","isAdaptive","tabIndex","observer","todayDate","createDate","path","onItemRendered","onItemClick","onItemContextMenu","onContentReady","getCollectorOffset","needApplyCollectorOffset","view","viewName","viewType","log","$workSpace","workSpaceComponent","workSpaceConfig","_workSpaceConfig","initDragBehavior","_all","_attachTablesEvents","getWorkArea","_recalculateWorkspace","_getHeaderDate","_getViewByName","_this9","triggerResizeEvent","_refreshDateTimeIndication","_currentViewOptions$s","_this10","accessKey","allDayExpanded","hoursInterval","_getTemplate","callback","_options","silent","timer","setTimeout","_getTemplateByOption","_this11","detach","getWorkSpaceScrollable","getScrollable","getWorkSpaceScrollableScrollTop","getGroupedScrollableScrollTop","getWorkSpaceScrollableScrollLeft","getScrollableScrollLeft","getWorkSpaceAllDayHeight","getAllDayHeight","getWorkSpaceAllDayOffset","getAllDayOffset","getWorkSpaceHeaderPanelHeight","getHeaderPanelHeight","getWorkSpaceDateTableOffset","getWorkSpaceLeftOffset","getAppointmentModel","getHeader","getMaxAppointmentsPerCell","targetAppointment","singleAppointment","exceptionDate","isDeleted","isPopupEditing","dragEvent","_this12","_updatedRecAppointment","isValid","_excludeAppointmentFromSeries","cancel","_showRecurrenceChangeConfirm","moveAppointmentBack","rawAppointment","newRawAppointment","_this13","target","source","getOwnPropertyDescriptors","defineProperties","_objectSpread","newAppointment","keyName","addAppointment","_createRecurrenceException","_editAppointmentData","_updateAppointment","_getSerializedDate","join","isAllDay","setHours","getHours","getMinutes","getSeconds","getMilliseconds","FULL_DATE_FORMAT","seriesText","occurrenceText","custom","messageHtml","showCloseButton","showTitle","buttons","onClick","_getUpdatedData","_this14","getConvertedFromGrid","isValidDate","isNaN","getTime","targetCell","getTargetCellData","cellStartDate","cellEndDate","appointmentStartDate","appointmentEndDate","resultedStartDate","duration","keepOriginalHours","timeInMs","resultedEndDate","calculateEndDate","dateCopy","timeZoneOffset","getTimezoneOffsetChangeInMs","rawResult","setResourcesToItem","getTargetedAppointment","settings","dataAccessors","getAppointmentSettings","info","getAppointmentInfo","appointmentIndex","_itemIndexKey","adapter","clone","isRecurrent","newStartDate","getAppointmentDataCalculator","getStartDate","sourceAppointment","rawTargetedAppointment","setTargetedAppointmentResources","subscribe","subject","action","isFunction","Error","getDataByDroppableCell","onUpdatePrevented","updatingOptions","newData","oldData","performFailAction","err","isDeferred","_processActionResult","canceled","_this15","deferred","_expandAllDayPanel","update","always","storeAppointment","_onDataPromiseCompleted","actionOptions","_this16","resolveCallback","callbackResult","when","fromPromise","isPromise","state","handlerName","error","isVisible","getAppointmentPopup","getPopup","getUpdatedAppointment","getUpdatedAppointmentKeys","getResourceManager","getActions","_getRecurrenceException","exceptions","_convertRecurrenceException","exceptionString","_this17","getConvertedToTimeZone","convertedStartDate","convertedExceptionDate","correctRecurrenceExceptionByTimezone","dayHasAppointment","_this18","dayTimeStamp","startDateTimeStamp","endDateTimeStamp","inArray","getGroups","setResourceCallback","resourcesSetter","apptSettings","_positionMap","_getCellGroups","groupIndex","group","id","setting","getCellDataByCoordinates","left","top","getStartViewDate","getEndViewDate","createNewAppointment","_this19","newTargetedAppointment","isEmptyObject","saveChanges","showAppointmentTooltip","AppointmentTooltipInfo","_tryGetAppointmentColor","showAppointmentTooltipCore","isAlreadyShown","scrollToTime","hours","minutes","scrollTo","_this20","serializedAppointment","addingOptions","updateAppointment","deletingOptions","_this21","getFirstDayOfWeek","_this22","getField","setField","getTimeZoneCalculator","include","AppointmentForm","APPOINTMENT_FORM_GROUP_NAMES","_data_source","Main","Recurrence","SchedulerAppointmentForm","_appointmentForm","_lockDateShiftFlag","_validateAppointmentFormDate","_getAllDayStartDate","_getAllDayEndDate","setDate","_getStartDateWithStartHour","componentCreator","isReadOnly","formData","lg","screenByWidth","_dateBoxValueChanged","dateExpr","isNeedCorrect","dateEditor","dateValue","_createTimezoneEditor","timeZoneExpr","secondTimeZoneExpr","visibleIndex","isMainTimeZone","isShow","noTzTitle","placeholder","searchEnabled","secondTimezoneEditor","_createDateBoxEditor","dataExpr","validationRules","_createDateBoxItems","dataExprs","schedulerInst","endValue","startValue","_createMainItems","changeSize","location","startDateEditor","endDateEditor","allDayStartDate","startDateWithStartHour","form","_updateRecurrenceItemVisibility","_form$getEditor","updateData","prepareAppointmentFormEditors","recurrenceEditorVisibility","getRecurrenceRule","_createRecurrenceEditor","concatResources","setEditorsType","startDateItemPath","endDateItemPath","startDateFormItem","endDateFormItem","startDateEditorOptions","endDateEditorOptions","updateTimeZoneEditorDataSource","expression","store","getDisplayedTimeZones","pageSize","setEditorOptions","updateRecurrenceEditorStartDate","groupName","editorPath","updateFormData","appointmentForm","_dom_adapter","_events_engine","_element_data","_translator","_object","_element","_index","_double_click","_uiCollection_widget","_utilsTimeZone","_constants","DBLCLICK_EVENT_NAME","addNamespace","toMs","dateToMilliseconds","SchedulerAppointments","inherit","ctor","callBase","_supportedKeys","parent","escape","_escPressed","del","preventDefault","_getItemData","notifyObserver","tab","_getAccessAppointments","APPOINTMENT_SETTINGS_KEY","sortedIndex","lastIndex","shiftKey","$nextAppointment","_getAppointmentByIndex","_resetTabIndex","trigger","$item","eq","_itemElements","not","$appointment","_focusTarget","attr","_moveFocus","_focusInHandler","_$currentAppointment","getPublicElement","_focusOutHandler","_eventBindingTarget","_itemContainer","activeStateEnabled","hoverStateEnabled","_cleanFocusState","_clearDropDownItems","_clearDropDownItemsElements","_repaintAppointments","_renderDropDownAppointments","_attachAppointmentsEvents","_invalidate","_isAllDayAppointment","_isRepaintAppointment","needRepaint","_isRepaintAll","invoke","_applyFragment","fragment","children","_getAppointmentContainer","_onEachAppointment","isRepaintAll","needRemove","_clearItem","_renderItem","_renderByFragments","$commonFragment","$allDayFragment","html","_cleanItemContainer","renderFunction","createDocumentFragment","_attachClickEvent","_attachHoldEvent","_attachContextMenuEvent","_attachAppointmentDblClick","_renderFocusState","_attachFeedbackEvents","_attachHoverEvents","$items","_findItemElementByItem","_virtualAppointments","itemElements","_itemDataKey","_itemClass","$result","$allDayContainer","empty","_initialSize","_initialCoordinates","_preventSingleAppointmentClick","formatText","_currentAppointmentSettings","agendaSettings","targetedAppointmentData","isPlainObject","$contentDetails","formatDate","RECURRING_ICON_CLASS","prependTo","_executeItemRenderAction","_getItemRenderAction","_itemClickHandler","afterExecute","_processItemClick","event","$target","currentTarget","isFakeClickEvent","_appointmentClickTimeout","getBody","contains","_extendActionArgs","itemSelector","_itemSelector","itemContainer","off","on","_itemDXEventHandler","_dblClickHandler","$targetAppointment","_getItemContent","$itemFrame","_createItemByTemplate","renderArgs","render","itemsContainer","_postprocessRenderItem","_renderAppointment","_applyResourceDataAttr","geometry","skipResizing","deferredColor","_getAppointmentColor","virtual","_processVirtualAppointment","direction","reduced","appointmentReduced","isCompact","cellWidth","cellHeight","resizableConfig","_resizableConfig","color","css","values","normalizeKey","itemSetting","area","_calculateResizableArea","onResizeStart","updatedArea","_renderDragOffsets","height","locate","onResizeEnd","_resizeEndHandler","closest","coordinates","scheduler","modifiedAppointmentAdapter","_getEndResizeAppointmentStartDate","_getDateRange","pathTimeZone","appointmentInfo","appointmentAdapter","recurrenceProcessor","isValidRecurrenceRule","handles","appointmentTimeZone","startTime","endTime","deltaTime","renderingStrategyDirection","needCorrectDates","right","_correctStartDateByDelta","_correctEndDateByDelta","visibleDayDuration","daysCount","Math","ceil","floor","maxDate","minDate","tailOfPrevDays","lastDay","firstDay","res","_calculateBoundOffset","appointmentSetting","virtualAppointment","virtualGroupIndex","colors","buttonColor","virtualGroup","virtualItems","virtualCoordinates","$fragment","buttonWidth","buttonHeight","rtlOffset","_isGroupCompact","applyOffset","_sortAppointmentsByStartDate","sort","a","b","firstDate","secondDate","_processRecurrenceAppointment","skipLongAppointments","parts","indexes","dates","appointmentDuration","startViewDate","endViewDate","recurrentDates","generateDates","exception","start","end","recurrentDateCount","appointmentPart","appointmentSettings","_applyStartDateToObj","_applyEndDateToObj","_processLongAppointment","splitAppointmentByDay","partCount","_reduceRecurrenceAppointments","recurrenceIndexes","splice","_combineAppointments","additionalAppointments","merge","size","coords","_removeDragSourceClassFromDraggedAppointment","move","outerWidth","outerHeight","focusedElement","originalStartDate","makeDate","maxAllowedDate","appointmentIsLong","currentStartDate","currentEndDate","_checkStartDate","_checkEndDate","deepExtendArraySafe","originalDate","APPOINTMENT_DRAG_SOURCE_CLASS","dxSchedulerAppointment","_setDragSourceAppointment","$appointments","_settings$info$source","_$item$data","itemInfo","itemGroupIndex","_itemInfo$sourceAppoi","itemStartDate","itemEndDate","appointmentInstance","isDragSource","_pointer","_dom_component","_resizable","REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME","enter","REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME","leave","Appointment","_renderDragSourceClass","_getHorizontalResizingRule","reducedHandles","head","body","tail","minHeight","minWidth","step","roundStepValue","_getVerticalResizingRule","_renderAppointmentGeometry","_renderEmptyClass","_renderReducedAppointment","_renderAllDayClass","_renderDirection","_renderRecurrenceClass","_renderResizable","EMPTY_APPOINTMENT_CLASS","reducedPart","REDUCED_APPOINTMENT_CLASS","REDUCED_APPOINTMENT_PARTS_CLASSES","_renderAppointmentReducedIcon","$icon","REDUCED_APPOINTMENT_ICON","_getEndDate","tooltipText","content","ALL_DAY_APPOINTMENT_CLASS","RECURRENCE_APPOINTMENT_CLASS","DIRECTION_APPOINTMENT_CLASSES","_createResizingConfig","stepPrecision","_useTemplates","_uiSchedulerAppointmentsStrategy","_uiSchedulerAppointmentsStrategy2","_uiSchedulerAppointmentsStrategy3","_uiSchedulerAppointmentsStrategy4","_uiSchedulerAppointmentsStrategy5","RENDERING_STRATEGIES","horizontal","horizontalMonth","horizontalMonthLine","vertical","AppointmentLayoutManager","instance","getCellDimensions","getCellWidth","getCellHeight","allDayHeight","getGroupOrientation","_getRealGroupOrientation","Strategy","_renderingStrategyInstance","_allDayCellHeight","groupOrientation","_groupOrientation","createTaskPositionMap","_createAppointmentsMapCore","list","positionMap","keepAppointmentSettings","_isDataChanged","some","_isAppointmentShouldAppear","currentAppointment","_isSettingChanged","sourceSetting","newSettings","oldSettings","equalByValue","_getAssociatedSourceAppointment","sourceAppointments","_getDeletedAppointments","currentAppointments","_query","_defineProperties","props","descriptor","FilterMaker","_filterRegistry","isRegistered","clearRegistry","make","_make","useAccessors","userFilter","user","combine","dateFilter","AppointmentModel","baseAppointmentDuration","_updatedAppointmentKeys","_filterMaker","_baseAppointmentDuration","Constructor","protoProps","staticProps","_createFilter","userFilterPosition","_excessFiltering","_combineRemoteFilter","dataSourceFilter","_combineFilter","_getStoreKey","keyOf","_filterAppointmentByResources","resourceName","checkAppointmentResourceValues","resource","resourceGetter","appointmentResourceValues","wrapToArray","resourceData","j","itemDataCount","_filterAppointmentByRRule","_appointmentPartInInterval","trimmedDates","_trimDates","hasRecurrence","apptStartDayHour","apptEndDayHour","_createCombinedFilter","filterOptions","getRecurrenceException","viewStartDayHour","viewEndDayHour","appointmentTakesSeveralDays","useRecurrence","comparableStartDate","comparableEndDate","severalDays","dateTimeFromDecimal","compareDateWithStartDayHour","hiddenInterval","apptDuration","delta","apptStartHour","apptStartMinutes","compareDateWithEndDayHour","_initStoreChangeHandlers","newItem","_updatedAppointment","pushItems","pushItem","_this$_dataSource$fil","_serializeRemoteFilter","combinedFilter","_createAppointmentFilter","customizeDateFilter","filterLoadedAppointments","filterOption","getPreparedDataItems","toArray","dataItems","replaceWrongEndDate","_isEndDateWrong","calculatedEndDate","_calculateAppointmentEndDate","filterLoadedVirtualAppointments","groupCount","combinedFilters","itemsToFilter","minCopy","maxCopy","_appointmentHasAllDayDuration","_getAppointmentDurationInHours","_appointmentHasShortDayDuration","currentFilter","insert","d","_inflector","_drop_down_menu","_tabs","_errors","STEP_MAP","VIEWS","SchedulerHeader","_setOptionsByReference","_optionsByReference","_validateViews","_viewSwitcher","selectedItem","_navigator","_changeViewSwitcherLabelText","_refreshViewSwitcher","_renderNavigator","_renderViewSwitcher","$viewSwitcher","_renderViewSwitcherDropDownMenu","_renderViewSwitcherTabs","TABS_EXPANDED_CLASS","selectionRequired","_updateCurrentView","_getItemText","camelize","_removeViewSwitcherLabel","_$viewSwitcherLabel","buttonIcon","currentViewText","_getCurrentViewName","_button","_calendar","_popover","_popup","getDateMonthFormat","short","monthName","getMonthYearFormat","getCaptionFormat","dateMonthFormat","lastIntervalDate","defaultViewDuration","isDifferentMonthDates","useShortFormat","getWeekCaption","shift","rejectWeekend","getDefaultFirstDayOfWeekIndex","firstWeekDate","getFirstWeekDate","normalizeDateByWeek","lastWeekDate","formatCaptionByMonths","lastDate","lastDateText","firstDateText","isDifferentYears","getFullYear","getMonthCaption","getFirstMonthDate","getLastMonthDate","setMonth","isSameYear","getYear","getConfig","agendaDuration","getCaption","_getConfig","getLastMonthDay","isNumeric","SchedulerNavigator","displayedDate","_useShortDateFormat","_updateButtonsState","_renderCaption","_setCalendarOption","_next","_caption","_prev","_initButtons","$next","icon","_updateCurrentDate","$caption","$prev","caption","_getNextDate","normalizeDate","initialDate","stepConfig","_renderPopover","_renderCaptionKeys","_isMobileLayout","overlayType","popoverContainer","contentTemplate","_createPopupContent","defaultOptionsRules","fullScreen","toolbarItems","shortcut","_createScrollable","$content","_calendarOptions","_todayDate","hasFocus","captionConfig","customizationFunction","onKeyboardHandled","opts","_keyboardHandler","executeHandler","is","registerKeyHandler","getValueExpr","getDisplayExpr","ResourceManager","_resourceLoader","_createWrappedDataSource","DataSource","normalizeDataSourceOptions","_mapResourceData","valueGetter","displayGetter","_isMultipleResource","resourceField","getResources","allowMultiple","getDataAccessors","accessorName","accessors","fieldExpr","_resources","_resourceFields","getResourcesData","_resourcesData","getEditors","currentResourceItems","_getResourceDataByField","getResourceDataByValue","filteredData","getResourcesFromItem","wrapOnlyMultipleResources","fieldValue","tempObject","deferreds","getResourcesByFields","mapFunction","grep","getResourceByField","getResourceColor","colorExpr","colorGetter","resourceDataLength","getResourceForPainting","useColorAsDefault","createResourcesTree","leafIndex","currentGroupItem","resultItem","title","nextGroupIndex","_hasGroupItem","appointmentResources","itemValue","loadedResources","currentResourceData","resourceCount","getResourceTreeLeaves","tree","groupAppointmentsByResources","treeLeaves","reduceResourcesTree","existingAppointments","_result","node","ok","resourceValue","resourceTitle","resourceFromAppointment","indexOf","getResourcesDataByGroups","resourcesData","fieldNames","getOwnPropertyNames","currentResourcesData","currentItems","currentData","HOUR_MS","isCurrentViewAgenda","currentViewUpdated","currentDateUpdated","getOption","setCellDataCacheAlias","createAppointmentSettings","isGroupedByDate","showAddAppointmentPopup","cellData","cellGroups","resultAppointment","showEditAppointmentPopup","targetedData","updateAppointmentAfterResize","getUpdatedData","updateAppointmentAfterDrag","_ref","targetedRawAppointment","newCellIndex","getDroppableCellIndex","oldCellIndex","getCellIndexByCoordinates","becomeAllDay","wasAllDay","movedBetweenAllDayAndSimple","onDeleteButtonPress","getAppointmentColor","resourcesManager","resourceForPainting","response","resourceValues","groupId","getHeaderHeight","_$element","parseInt","getBoundOffset","getTextAndFormatDate","appointmentRaw","targetedAppointmentRaw","formatType","_getTypeFormat","_createAppointmentTitle","_formatDates","isSameDate","getResizableAppointmentArea","_needHorizontalGroupBounds","horizontalGroupBounds","getGroupBounds","bottom","_needVerticalGroupBounds","_isVerticalGroupedWorkSpace","verticalGroupBounds","needRecalculateResizableArea","getAppointmentGeometry","getDeltaTime","initialSize","getDropDownAppointmentWidth","getDropDownAppointmentHeight","getResizableStep","_getGroupCount","getRenderingStrategy","getMaxAppointmentCountPerCellByType","_getMaxAppointmentCountPerCellByType","needCorrectAppointmentDates","getRenderingStrategyDirection","getDirection","getFullWeekAppointmentWidth","getGroupWidth","getMaxAppointmentWidth","getCellCountToLastViewDate","updateAppointmentStartDate","updatedStartDate","firstViewDate","roundDateByStartDayHour","updateAppointmentEndDate","updatedEndDate","renderCompactAppointments","clearCompactAppointments","clear","supportCompactDropDownAppointments","_supportCompactDropDownAppointments","isApplyCompactAppointmentOffset","_isApplyCompactAppointmentOffset","getGroupCount","mapAppointmentFields","appointmentElement","getOffsetByAllDayPanel","_getOffsetByAllDayPanel","getGroupTop","_getGroupTop","updateResizableArea","$allResizableElements","find","horizontalResizables","el","resizableInst","dxResizable","$el","splitExprStr","rootField","emptyChain","tmp","arrLength","renderAppointments","prerenderFilter","prerenderFilterVirtual","workspace","isAllDaySupported","viewDataProvider","groupedDataToRender","viewData","groupedData","_ref2","dateTable","isVerticalGrouping","getEndViewDateByEndDayHour","_ref3","allDayPanel","getGroupStartDate","getGroupEndDate","getCellsGroup","groupResources","createReducedResourcesTree","0","totalResourceCount","getAgendaRows","rowsCalculated","getAgendaVerticalStepHeight","getAgendaDuration","forceMaxAppointmentPerCell","onAgendaReady","rows","$appts","total","applyClass","AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS","getTimezone","getTargetedAppointmentData","getAppointmentDurationInMs","dayDuration","getVisibleDayDuration","tailDuration","isDifferentDates","isSameAppointmentDates","floorQuantityOfDays","startDateEndHour","hiddenDayDuration","startDayTime","endPartDuration","calculateAppointmentEndDate","getEndDayHour","getStartDayHour","validateDayHours","removeDroppableCellClass","tableCreator","SchedulerTableCreator","VERTICAL","HORIZONTAL","insertAllDayRow","allDayElements","tableBody","row","createElement","appendChild","makeTable","templateCallbacks","rowCountInGroup","rowCount","allDayElementIndex","isLastRowInGroup","rowClass","className","cellCount","td","cellClass","cellDataObject","dataKey","dataValue","getCellData","cellTemplate","templateOptions","getCellText","getCellDate","innerHTML","makeGroupedTable","cssClasses","_makeVerticalGroupedRows","_makeHorizontalGroupedRows","makeGroupedTableFromJSON","table","cellStorage","rowIndex","cellTag","childrenField","titleField","groupTableClass","groupRowClass","groupCellClass","groupCellCustomContent","createCell","childCount","cell","cellText","createTextNode","generateCells","cells","rowspans","prev","rowspan","reverse","setAttribute","_makeFlexGroupedRowCells","repeatByDate","itemCount","groupHeaderClass","cellTemplates","cellsArray","cellIterator","_i","groupHeaderRowClass","_i2","currentColumnLength","elements","_makeGroupedRowCells","maxCellCount","$cell","colspan","groupHeaderContentClass"],"mappings":"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","file":"vendors~056261f3.baa2fe159ff925dd7658.bundle.js","sourcesContent":["/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.recurrence_editor.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _date2 = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _form = _interopRequireDefault(require(\"../form\"));\r\nvar _button_group = _interopRequireDefault(require(\"../button_group\"));\r\nvar _date_box = _interopRequireDefault(require(\"../date_box\"));\r\nvar _editor = _interopRequireDefault(require(\"../editor/editor\"));\r\nvar _number_box = _interopRequireDefault(require(\"../number_box\"));\r\nvar _recurrence = require(\"./recurrence\");\r\nrequire(\"../radio_group\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n if (!o) {\r\n return\r\n }\r\n if (\"string\" === typeof o) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n var n = Object.prototype.toString.call(o).slice(8, -1);\r\n if (\"Object\" === n && o.constructor) {\r\n n = o.constructor.name\r\n }\r\n if (\"Map\" === n || \"Set\" === n) {\r\n return Array.from(o)\r\n }\r\n if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n if (\"undefined\" !== typeof Symbol && null != iter[Symbol.iterator] || null != iter[\"@@iterator\"]) {\r\n return Array.from(iter)\r\n }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return _arrayLikeToArray(arr)\r\n }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n if (null == len || len > arr.length) {\r\n len = arr.length\r\n }\r\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i]\r\n }\r\n return arr2\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar RECURRENCE_EDITOR = \"dx-recurrence-editor\";\r\nvar LABEL_POSTFIX = \"-label\";\r\nvar WRAPPER_POSTFIX = \"-wrapper\";\r\nvar RECURRENCE_EDITOR_CONTAINER = \"dx-recurrence-editor-container\";\r\nvar REPEAT_END_EDITOR = \"dx-recurrence-repeat-end\";\r\nvar REPEAT_END_TYPE_EDITOR = \"dx-recurrence-radiogroup-repeat-type\";\r\nvar REPEAT_COUNT_EDITOR = \"dx-recurrence-numberbox-repeat-count\";\r\nvar REPEAT_UNTIL_DATE_EDITOR = \"dx-recurrence-datebox-until-date\";\r\nvar RECURRENCE_BUTTON_GROUP = \"dx-recurrence-button-group\";\r\nvar FREQUENCY_EDITOR = \"dx-recurrence-selectbox-freq\";\r\nvar INTERVAL_EDITOR = \"dx-recurrence-numberbox-interval\";\r\nvar REPEAT_ON_EDITOR = \"dx-recurrence-repeat-on\";\r\nvar DAY_OF_MONTH = \"dx-recurrence-numberbox-day-of-month\";\r\nvar MONTH_OF_YEAR = \"dx-recurrence-selectbox-month-of-year\";\r\nvar recurrentEditorNumberBoxWidth = 70;\r\nvar recurrentEditorSelectBoxWidth = 120;\r\nvar defaultRecurrenceTypeIndex = 1;\r\nvar frequenciesMessages = [{\r\n recurrence: \"dxScheduler-recurrenceHourly\",\r\n value: \"hourly\"\r\n}, {\r\n recurrence: \"dxScheduler-recurrenceDaily\",\r\n value: \"daily\"\r\n}, {\r\n recurrence: \"dxScheduler-recurrenceWeekly\",\r\n value: \"weekly\"\r\n}, {\r\n recurrence: \"dxScheduler-recurrenceMonthly\",\r\n value: \"monthly\"\r\n}, {\r\n recurrence: \"dxScheduler-recurrenceYearly\",\r\n value: \"yearly\"\r\n}];\r\nvar frequencies = frequenciesMessages.map(function(item) {\r\n return {\r\n text: function() {\r\n return _message.default.format(item.recurrence)\r\n },\r\n value: item.value\r\n }\r\n});\r\nvar repeatEndTypes = [{\r\n type: \"never\"\r\n}, {\r\n type: \"until\"\r\n}, {\r\n type: \"count\"\r\n}];\r\nvar days = [\"SU\", \"MO\", \"TU\", \"WE\", \"TH\", \"FR\", \"SA\"];\r\nvar RecurrenceRule = function() {\r\n function RecurrenceRule(rule) {\r\n this._recurrenceProcessor = (0, _recurrence.getRecurrenceProcessor)();\r\n this._recurrenceRule = this._recurrenceProcessor.evalRecurrenceRule(rule).rule\r\n }\r\n var _proto = RecurrenceRule.prototype;\r\n _proto.makeRules = function(string) {\r\n this._recurrenceRule = this._recurrenceProcessor.evalRecurrenceRule(string).rule\r\n };\r\n _proto.makeRule = function(field, value) {\r\n if (!value || Array.isArray(value) && !value.length) {\r\n delete this._recurrenceRule[field];\r\n return\r\n }\r\n if ((0, _type.isDefined)(field)) {\r\n if (\"until\" === field) {\r\n delete this._recurrenceRule.count\r\n }\r\n if (\"count\" === field) {\r\n delete this._recurrenceRule.until\r\n }\r\n this._recurrenceRule[field] = value\r\n }\r\n };\r\n _proto.getRepeatEndRule = function() {\r\n var rules = this._recurrenceRule;\r\n if (\"count\" in rules) {\r\n return \"count\"\r\n }\r\n if (\"until\" in rules) {\r\n return \"until\"\r\n }\r\n return \"never\"\r\n };\r\n _proto.getRecurrenceString = function() {\r\n return this._recurrenceProcessor.getRecurrenceString(this._recurrenceRule)\r\n };\r\n _proto.getRules = function() {\r\n return this._recurrenceRule\r\n };\r\n _proto.getDaysFromByDayRule = function() {\r\n return this._recurrenceProcessor.daysFromByDayRule(this._recurrenceRule)\r\n };\r\n return RecurrenceRule\r\n}();\r\nvar RecurrenceEditor = function(_Editor) {\r\n _inheritsLoose(RecurrenceEditor, _Editor);\r\n\r\n function RecurrenceEditor() {\r\n return _Editor.apply(this, arguments) || this\r\n }\r\n var _proto2 = RecurrenceEditor.prototype;\r\n _proto2._getDefaultOptions = function() {\r\n var defaultOptions = _Editor.prototype._getDefaultOptions.call(this);\r\n return (0, _extend.extend)(defaultOptions, {\r\n value: null,\r\n startDate: new Date,\r\n firstDayOfWeek: void 0\r\n })\r\n };\r\n _proto2._getFirstDayOfWeek = function() {\r\n var firstDayOfWeek = this.option(\"firstDayOfWeek\");\r\n return (0, _type.isDefined)(firstDayOfWeek) ? firstDayOfWeek : _date2.default.firstDayOfWeekIndex()\r\n };\r\n _proto2._createComponent = function(element, name) {\r\n var config = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n this._extendConfig(config, {\r\n readOnly: this.option(\"readOnly\")\r\n });\r\n return _Editor.prototype._createComponent.call(this, element, name, config)\r\n };\r\n _proto2._init = function() {\r\n _Editor.prototype._init.call(this);\r\n this._recurrenceRule = new RecurrenceRule(this.option(\"value\"))\r\n };\r\n _proto2._render = function() {\r\n _Editor.prototype._render.call(this);\r\n this.$element().addClass(RECURRENCE_EDITOR);\r\n this._$container = (0, _renderer.default)(\"
\").addClass(RECURRENCE_EDITOR_CONTAINER).appendTo(this.$element());\r\n this._prepareEditors();\r\n this._renderEditors(this._$container)\r\n };\r\n _proto2.getEditorByField = function(fieldName) {\r\n var editor = this.getRecurrenceForm().getEditor(fieldName);\r\n if (!(0, _type.isDefined)(editor)) {\r\n switch (fieldName) {\r\n case \"byday\":\r\n editor = this._weekEditor;\r\n break;\r\n case \"count\":\r\n editor = this._repeatCountEditor;\r\n break;\r\n case \"until\":\r\n editor = this._repeatUntilDate\r\n }\r\n }\r\n return editor\r\n };\r\n _proto2._prepareEditors = function() {\r\n var freq = (this._recurrenceRule.getRules().freq || frequenciesMessages[defaultRecurrenceTypeIndex].value).toLowerCase();\r\n this._editors = [this._createFreqEditor(freq), this._createIntervalEditor(freq), this._createRepeatOnLabel(freq), {\r\n itemType: \"group\",\r\n cssClass: REPEAT_ON_EDITOR,\r\n colCount: 2,\r\n colCountByScreen: {\r\n xs: 2\r\n },\r\n items: this._createRepeatOnEditor(freq)\r\n }, {\r\n itemType: \"group\",\r\n items: this._createRepeatEndEditor()\r\n }];\r\n return this._editors\r\n };\r\n _proto2._createFreqEditor = function(freq) {\r\n var _this = this;\r\n return {\r\n dataField: \"freq\",\r\n name: \"FREQ\",\r\n editorType: \"dxSelectBox\",\r\n cssClass: FREQUENCY_EDITOR,\r\n editorOptions: {\r\n items: frequencies,\r\n value: freq,\r\n field: \"freq\",\r\n valueExpr: \"value\",\r\n displayExpr: \"text\",\r\n layout: \"horizontal\",\r\n elementAttr: {\r\n \"class\": FREQUENCY_EDITOR\r\n },\r\n onValueChanged: function(args) {\r\n return _this._valueChangedHandler(args)\r\n }\r\n },\r\n label: {\r\n text: _message.default.format(\"dxScheduler-editorLabelRecurrence\")\r\n }\r\n }\r\n };\r\n _proto2._createIntervalEditor = function(freq) {\r\n var _this2 = this;\r\n var interval = this._recurrenceRule.getRules().interval || 1;\r\n return {\r\n itemType: \"group\",\r\n colCount: 2,\r\n cssClass: \"\".concat(INTERVAL_EDITOR).concat(WRAPPER_POSTFIX),\r\n colCountByScreen: {\r\n xs: 2\r\n },\r\n items: [{\r\n dataField: \"interval\",\r\n editorType: \"dxNumberBox\",\r\n editorOptions: {\r\n width: recurrentEditorNumberBoxWidth,\r\n min: 1,\r\n field: \"interval\",\r\n value: interval,\r\n showSpinButtons: true,\r\n useLargeSpinButtons: false,\r\n elementAttr: {\r\n \"class\": INTERVAL_EDITOR\r\n },\r\n onValueChanged: function(args) {\r\n return _this2._valueChangedHandler(args)\r\n }\r\n },\r\n label: {\r\n text: _message.default.format(\"dxScheduler-recurrenceRepeatEvery\")\r\n }\r\n }, {\r\n name: \"intervalLabel\",\r\n cssClass: \"\".concat(INTERVAL_EDITOR).concat(LABEL_POSTFIX),\r\n template: function() {\r\n return _message.default.format(\"dxScheduler-recurrenceRepeat\".concat(freq.charAt(0).toUpperCase()).concat(freq.substr(1).toLowerCase()))\r\n }\r\n }]\r\n }\r\n };\r\n _proto2._createRepeatOnLabel = function(freq) {\r\n return {\r\n itemType: \"group\",\r\n cssClass: \"\".concat(REPEAT_ON_EDITOR).concat(LABEL_POSTFIX),\r\n items: [{\r\n name: \"repeatOnLabel\",\r\n colSpan: 2,\r\n template: function() {\r\n return _message.default.format(\"dxScheduler-recurrenceRepeatOn\")\r\n },\r\n visible: freq && \"daily\" !== freq && \"hourly\" !== freq\r\n }]\r\n }\r\n };\r\n _proto2._createRepeatOnEditor = function(freq) {\r\n return [this._createByDayEditor(freq), this._createByMonthEditor(freq), this._createByMonthDayEditor(freq)]\r\n };\r\n _proto2._createByDayEditor = function(freq) {\r\n var _this3 = this;\r\n return {\r\n dataField: \"byday\",\r\n colSpan: 2,\r\n template: function(_, itemElement) {\r\n var firstDayOfWeek = _this3._getFirstDayOfWeek();\r\n var byDay = _this3._daysOfWeekByRules();\r\n var localDaysNames = _date2.default.getDayNames(\"abbreviated\");\r\n var dayNames = days.slice(firstDayOfWeek).concat(days.slice(0, firstDayOfWeek));\r\n var itemsButtonGroup = localDaysNames.slice(firstDayOfWeek).concat(localDaysNames.slice(0, firstDayOfWeek)).map(function(item, index) {\r\n return {\r\n text: item,\r\n key: dayNames[index]\r\n }\r\n });\r\n _this3._$repeatOnWeek = (0, _renderer.default)(\"
\").addClass(RECURRENCE_BUTTON_GROUP).appendTo(itemElement);\r\n _this3._weekEditor = _this3._createComponent(_this3._$repeatOnWeek, _button_group.default, {\r\n items: itemsButtonGroup,\r\n field: \"byday\",\r\n selectionMode: \"multiple\",\r\n selectedItemKeys: byDay,\r\n keyExpr: \"key\",\r\n onSelectionChanged: function(e) {\r\n var selectedKeys = e.component.option(\"selectedItemKeys\");\r\n _this3._recurrenceRule.makeRule(\"byday\", selectedKeys);\r\n _this3._changeEditorValue()\r\n }\r\n })\r\n },\r\n visible: \"weekly\" === freq,\r\n label: {\r\n visible: false\r\n }\r\n }\r\n };\r\n _proto2._createByMonthEditor = function(freq) {\r\n var _this4 = this;\r\n var monthsName = _date2.default.getMonthNames(\"wide\");\r\n var months = _toConsumableArray(Array(12)).map(function(_, i) {\r\n return {\r\n value: \"\".concat(i + 1),\r\n text: monthsName[i]\r\n }\r\n });\r\n return {\r\n dataField: \"bymonth\",\r\n editorType: \"dxSelectBox\",\r\n editorOptions: {\r\n field: \"bymonth\",\r\n items: months,\r\n value: this._monthOfYearByRules(),\r\n width: recurrentEditorSelectBoxWidth,\r\n displayExpr: \"text\",\r\n valueExpr: \"value\",\r\n elementAttr: {\r\n \"class\": MONTH_OF_YEAR\r\n },\r\n onValueChanged: function(args) {\r\n return _this4._valueChangedHandler(args)\r\n }\r\n },\r\n visible: \"yearly\" === freq,\r\n label: {\r\n visible: false\r\n }\r\n }\r\n };\r\n _proto2._createByMonthDayEditor = function(freq) {\r\n var _this5 = this;\r\n return {\r\n dataField: \"bymonthday\",\r\n editorType: \"dxNumberBox\",\r\n editorOptions: {\r\n min: 1,\r\n max: 31,\r\n width: recurrentEditorNumberBoxWidth,\r\n field: \"bymonthday\",\r\n showSpinButtons: true,\r\n useLargeSpinButtons: false,\r\n value: this._dayOfMonthByRules(),\r\n elementAttr: {\r\n \"class\": DAY_OF_MONTH\r\n },\r\n onValueChanged: function(args) {\r\n return _this5._valueChangedHandler(args)\r\n }\r\n },\r\n visible: \"monthly\" === freq || \"yearly\" === freq,\r\n label: {\r\n visible: false\r\n }\r\n }\r\n };\r\n _proto2._createRepeatEndEditor = function() {\r\n var _this6 = this;\r\n var repeatType = this._recurrenceRule.getRepeatEndRule();\r\n return [{\r\n dataField: \"repeatEnd\",\r\n editorType: \"dxRadioGroup\",\r\n editorOptions: {\r\n items: repeatEndTypes,\r\n value: repeatType,\r\n valueExpr: \"type\",\r\n field: \"repeatEnd\",\r\n itemTemplate: function(itemData) {\r\n if (\"count\" === itemData.type) {\r\n return _this6._renderRepeatCountEditor()\r\n }\r\n if (\"until\" === itemData.type) {\r\n return _this6._renderRepeatUntilEditor()\r\n }\r\n return _this6._renderDefaultRepeatEnd()\r\n },\r\n layout: \"vertical\",\r\n elementAttr: {\r\n \"class\": REPEAT_END_TYPE_EDITOR\r\n },\r\n onValueChanged: function(args) {\r\n return _this6._repeatEndValueChangedHandler(args)\r\n }\r\n },\r\n label: {\r\n text: _message.default.format(\"dxScheduler-recurrenceEnd\")\r\n }\r\n }]\r\n };\r\n _proto2._renderEditors = function($container) {\r\n this._recurrenceForm = this._createComponent($container, _form.default, {\r\n items: this._editors,\r\n showValidationSummary: true,\r\n scrollingEnabled: true,\r\n showColonAfterLabel: false,\r\n labelLocation: \"top\"\r\n });\r\n this._disableRepeatEndParts()\r\n };\r\n _proto2._setAriaDescribedBy = function(editor, $label) {\r\n var labelId = \"label-\".concat(new _guid.default);\r\n editor.setAria(\"describedby\", labelId);\r\n editor.setAria(\"id\", labelId, $label)\r\n };\r\n _proto2.getRecurrenceForm = function() {\r\n return this._recurrenceForm\r\n };\r\n _proto2.changeValueByVisibility = function(value) {\r\n if (value) {\r\n if (!this.option(\"value\")) {\r\n this._handleDefaults()\r\n }\r\n } else {\r\n this._recurrenceRule.makeRules(\"\");\r\n this.option(\"value\", \"\")\r\n }\r\n };\r\n _proto2._handleDefaults = function() {\r\n this._recurrenceRule.makeRule(\"freq\", frequenciesMessages[defaultRecurrenceTypeIndex].value);\r\n this._changeEditorValue()\r\n };\r\n _proto2._changeEditorValue = function() {\r\n this.option(\"value\", this._recurrenceRule.getRecurrenceString() || \"\")\r\n };\r\n _proto2._daysOfWeekByRules = function() {\r\n var daysByRule = this._recurrenceRule.getDaysFromByDayRule();\r\n if (!daysByRule.length) {\r\n daysByRule = [days[this.option(\"startDate\").getDay()]]\r\n }\r\n return daysByRule\r\n };\r\n _proto2._dayOfMonthByRules = function() {\r\n var dayByRule = this._recurrenceRule.getRules().bymonthday;\r\n if (!dayByRule) {\r\n dayByRule = this.option(\"startDate\").getDate()\r\n }\r\n return dayByRule\r\n };\r\n _proto2._monthOfYearByRules = function() {\r\n var monthByRule = this._recurrenceRule.getRules().bymonth;\r\n if (!monthByRule) {\r\n monthByRule = this.option(\"startDate\").getMonth() + 1\r\n }\r\n return String(monthByRule)\r\n };\r\n _proto2._renderDefaultRepeatEnd = function() {\r\n var $editorTemplate = (0, _renderer.default)(\"
\").addClass(REPEAT_END_EDITOR + WRAPPER_POSTFIX);\r\n (0, _renderer.default)(\"
\").text(_message.default.format(\"dxScheduler-recurrenceNever\")).addClass(REPEAT_END_EDITOR + LABEL_POSTFIX).appendTo($editorTemplate);\r\n return $editorTemplate\r\n };\r\n _proto2._repeatEndValueChangedHandler = function(args) {\r\n var value = args.value;\r\n this._disableRepeatEndParts(value);\r\n if (\"until\" === value) {\r\n this._recurrenceRule.makeRule(value, this._getUntilValue())\r\n }\r\n if (\"count\" === value) {\r\n this._recurrenceRule.makeRule(value, this._repeatCountEditor.option(\"value\"))\r\n }\r\n if (\"never\" === value) {\r\n this._recurrenceRule.makeRule(\"count\", \"\");\r\n this._recurrenceRule.makeRule(\"until\", \"\")\r\n }\r\n this._changeEditorValue()\r\n };\r\n _proto2._disableRepeatEndParts = function() {\r\n var value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._recurrenceRule.getRepeatEndRule();\r\n if (\"until\" === value) {\r\n this._repeatCountEditor.option(\"disabled\", true);\r\n this._repeatUntilDate.option(\"disabled\", false)\r\n }\r\n if (\"count\" === value) {\r\n this._repeatCountEditor.option(\"disabled\", false);\r\n this._repeatUntilDate.option(\"disabled\", true)\r\n }\r\n if (\"never\" === value) {\r\n this._repeatCountEditor.option(\"disabled\", true);\r\n this._repeatUntilDate.option(\"disabled\", true)\r\n }\r\n };\r\n _proto2._renderRepeatCountEditor = function() {\r\n var repeatCount = this._recurrenceRule.getRules().count || 1;\r\n var $editorWrapper = (0, _renderer.default)(\"
\").addClass(REPEAT_END_EDITOR + WRAPPER_POSTFIX);\r\n (0, _renderer.default)(\"
\").text(_message.default.format(\"dxScheduler-recurrenceAfter\")).addClass(REPEAT_END_EDITOR + LABEL_POSTFIX).appendTo($editorWrapper);\r\n this._$repeatCountEditor = (0, _renderer.default)(\"
\").addClass(REPEAT_COUNT_EDITOR).appendTo($editorWrapper);\r\n (0, _renderer.default)(\"
\").text(_message.default.format(\"dxScheduler-recurrenceRepeatCount\")).addClass(REPEAT_END_EDITOR + LABEL_POSTFIX).appendTo($editorWrapper);\r\n this._repeatCountEditor = this._createComponent(this._$repeatCountEditor, _number_box.default, {\r\n field: \"count\",\r\n width: recurrentEditorNumberBoxWidth,\r\n min: 1,\r\n showSpinButtons: true,\r\n useLargeSpinButtons: false,\r\n value: repeatCount,\r\n onValueChanged: this._repeatCountValueChangeHandler.bind(this)\r\n });\r\n return $editorWrapper\r\n };\r\n _proto2._repeatCountValueChangeHandler = function(args) {\r\n if (\"count\" === this._recurrenceRule.getRepeatEndRule()) {\r\n var value = args.value;\r\n this._recurrenceRule.makeRule(\"count\", value);\r\n this._changeEditorValue()\r\n }\r\n };\r\n _proto2._formatUntilDate = function(date) {\r\n if (this._recurrenceRule.getRules().until && _date.default.sameDate(this._recurrenceRule.getRules().until, date)) {\r\n return date\r\n }\r\n return _date.default.setToDayEnd(date)\r\n };\r\n _proto2._renderRepeatUntilEditor = function() {\r\n var repeatUntil = this._recurrenceRule.getRules().until || this._formatUntilDate(new Date);\r\n var $editorWrapper = (0, _renderer.default)(\"
\").addClass(REPEAT_END_EDITOR + WRAPPER_POSTFIX);\r\n (0, _renderer.default)(\"
\").text(_message.default.format(\"dxScheduler-recurrenceOn\")).addClass(REPEAT_END_EDITOR + LABEL_POSTFIX).appendTo($editorWrapper);\r\n this._$repeatDateEditor = (0, _renderer.default)(\"
\").addClass(REPEAT_UNTIL_DATE_EDITOR).appendTo($editorWrapper);\r\n this._repeatUntilDate = this._createComponent(this._$repeatDateEditor, _date_box.default, {\r\n field: \"until\",\r\n value: repeatUntil,\r\n type: \"date\",\r\n onValueChanged: this._repeatUntilValueChangeHandler.bind(this),\r\n calendarOptions: {\r\n firstDayOfWeek: this._getFirstDayOfWeek()\r\n }\r\n });\r\n return $editorWrapper\r\n };\r\n _proto2._repeatUntilValueChangeHandler = function(args) {\r\n if (\"until\" === this._recurrenceRule.getRepeatEndRule()) {\r\n var untilDate = this._formatUntilDate(new Date(args.value));\r\n this._repeatUntilDate.option(\"value\", untilDate);\r\n this._recurrenceRule.makeRule(\"until\", untilDate);\r\n this._changeEditorValue()\r\n }\r\n };\r\n _proto2._valueChangedHandler = function(args) {\r\n var value = args.value,\r\n previousValue = args.previousValue;\r\n var field = args.component.option(\"field\");\r\n if (!this.option(\"visible\")) {\r\n this.option(\"value\", \"\")\r\n } else {\r\n this._recurrenceRule.makeRule(field, value);\r\n if (\"freq\" === field) {\r\n this._makeRepeatOnRule(value);\r\n this._changeRepeatOnVisibility(value, previousValue)\r\n }\r\n this._changeEditorValue()\r\n }\r\n };\r\n _proto2._makeRepeatOnRule = function(value) {\r\n if (\"daily\" === value || \"hourly\" === value) {\r\n this._recurrenceRule.makeRule(\"byday\", \"\");\r\n this._recurrenceRule.makeRule(\"bymonth\", \"\");\r\n this._recurrenceRule.makeRule(\"bymonthday\", \"\")\r\n }\r\n if (\"weekly\" === value) {\r\n this._recurrenceRule.makeRule(\"byday\", this._daysOfWeekByRules());\r\n this._recurrenceRule.makeRule(\"bymonth\", \"\");\r\n this._recurrenceRule.makeRule(\"bymonthday\", \"\")\r\n }\r\n if (\"monthly\" === value) {\r\n this._recurrenceRule.makeRule(\"bymonthday\", this._dayOfMonthByRules());\r\n this._recurrenceRule.makeRule(\"bymonth\", \"\");\r\n this._recurrenceRule.makeRule(\"byday\", \"\")\r\n }\r\n if (\"yearly\" === value) {\r\n this._recurrenceRule.makeRule(\"bymonthday\", this._dayOfMonthByRules());\r\n this._recurrenceRule.makeRule(\"bymonth\", this._monthOfYearByRules());\r\n this._recurrenceRule.makeRule(\"byday\", \"\")\r\n }\r\n };\r\n _proto2._optionChanged = function(args) {\r\n switch (args.name) {\r\n case \"value\":\r\n this._recurrenceRule.makeRules(args.value);\r\n this._changeRepeatIntervalLabel();\r\n this._disableRepeatEndParts();\r\n this._changeEditorsValue(this._recurrenceRule.getRules());\r\n _Editor.prototype._optionChanged.call(this, args);\r\n break;\r\n case \"startDate\":\r\n this._makeRepeatOnRule(this._recurrenceRule.getRules().freq);\r\n if ((0, _type.isDefined)(this._recurrenceRule.getRecurrenceString())) {\r\n this._changeEditorValue()\r\n }\r\n break;\r\n case \"firstDayOfWeek\":\r\n if (this._weekEditor) {\r\n var localDaysNames = _date2.default.getDayNames(\"abbreviated\");\r\n var dayNames = days.slice(args.value).concat(days.slice(0, args.value));\r\n var itemsButtonGroup = localDaysNames.slice(args.value).concat(localDaysNames.slice(0, args.value)).map(function(item, index) {\r\n return {\r\n text: item,\r\n key: dayNames[index]\r\n }\r\n });\r\n this._weekEditor.option(\"items\", itemsButtonGroup)\r\n }\r\n if (this._$repeatDateEditor) {\r\n this._repeatUntilDate.option(\"calendarOptions.firstDayOfWeek\", this._getFirstDayOfWeek())\r\n }\r\n break;\r\n default:\r\n _Editor.prototype._optionChanged.call(this, args)\r\n }\r\n };\r\n _proto2._changeRepeatOnVisibility = function(freq, previousFreq) {\r\n if (freq !== previousFreq) {\r\n this._recurrenceForm.itemOption(\"byday\", \"visible\", false);\r\n this._recurrenceForm.itemOption(\"bymonthday\", \"visible\", false);\r\n this._recurrenceForm.itemOption(\"bymonth\", \"visible\", false);\r\n this._recurrenceForm.itemOption(\"repeatOnLabel\", \"visible\", freq && \"daily\" !== freq && \"hourly\" !== freq);\r\n if (\"weekly\" === freq) {\r\n this._recurrenceForm.itemOption(\"byday\", \"visible\", true)\r\n }\r\n if (\"monthly\" === freq) {\r\n this._recurrenceForm.itemOption(\"bymonthday\", \"visible\", true)\r\n }\r\n if (\"yearly\" === freq) {\r\n this._recurrenceForm.itemOption(\"bymonthday\", \"visible\", true);\r\n this._recurrenceForm.itemOption(\"bymonth\", \"visible\", true)\r\n }\r\n }\r\n };\r\n _proto2._changeRepeatIntervalLabel = function() {\r\n var freq = this._recurrenceRule.getRules().freq;\r\n freq && this._recurrenceForm.itemOption(\"intervalLabel\", \"template\", _message.default.format(\"dxScheduler-recurrenceRepeat\".concat(freq.charAt(0).toUpperCase()).concat(freq.substr(1).toLowerCase())))\r\n };\r\n _proto2._changeEditorsValue = function(rules) {\r\n this._recurrenceForm.getEditor(\"freq\").option(\"value\", (rules.freq || frequenciesMessages[defaultRecurrenceTypeIndex].value).toLowerCase());\r\n this._changeDayOfWeekValue();\r\n this._changeDayOfMonthValue();\r\n this._changeMonthOfYearValue();\r\n this._changeIntervalValue(rules.interval);\r\n this._changeRepeatCountValue();\r\n this._changeRepeatEndValue();\r\n this._changeRepeatUntilValue()\r\n };\r\n _proto2._changeIntervalValue = function(value) {\r\n this._recurrenceForm.getEditor(\"interval\").option(\"value\", value || 1)\r\n };\r\n _proto2._changeRepeatEndValue = function() {\r\n var repeatType = this._recurrenceRule.getRepeatEndRule();\r\n this._recurrenceForm.getEditor(\"repeatEnd\").option(\"value\", repeatType)\r\n };\r\n _proto2._changeDayOfWeekValue = function() {\r\n var isEditorVisible = this._recurrenceForm.itemOption(\"byday\").visible;\r\n if (isEditorVisible) {\r\n var _days = this._daysOfWeekByRules();\r\n this.getEditorByField(\"byday\").option(\"selectedItemKeys\", _days)\r\n }\r\n };\r\n _proto2._changeDayOfMonthValue = function() {\r\n var isEditorVisible = this._recurrenceForm.itemOption(\"bymonthday\").visible;\r\n if (isEditorVisible) {\r\n var day = this._dayOfMonthByRules();\r\n this._recurrenceForm.getEditor(\"bymonthday\").option(\"value\", day)\r\n }\r\n };\r\n _proto2._changeMonthOfYearValue = function() {\r\n var isEditorVisible = this._recurrenceForm.itemOption(\"bymonth\").visible;\r\n if (isEditorVisible) {\r\n var month = this._monthOfYearByRules();\r\n this._recurrenceForm.getEditor(\"bymonth\").option(\"value\", month)\r\n }\r\n };\r\n _proto2._changeRepeatCountValue = function() {\r\n var count = this._recurrenceRule.getRules().count || 1;\r\n this._repeatCountEditor.option(\"value\", count)\r\n };\r\n _proto2._changeRepeatUntilValue = function() {\r\n this._repeatUntilDate.option(\"value\", this._getUntilValue())\r\n };\r\n _proto2._getUntilValue = function() {\r\n return this._recurrenceRule.getRules().until || this._formatUntilDate(new Date)\r\n };\r\n _proto2.toggle = function() {\r\n this._freqEditor.focus()\r\n };\r\n _proto2.setAria = function() {\r\n if (this._switchEditor) {\r\n this._switchEditor.setAria(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1])\r\n }\r\n };\r\n return RecurrenceEditor\r\n}(_editor.default);\r\n(0, _component_registrator.default)(\"dxRecurrenceEditor\", RecurrenceEditor);\r\nvar _default = RecurrenceEditor;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.loading.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.show = show;\r\nexports.hide = hide;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _view_port = require(\"../../core/utils/view_port\");\r\nvar _load_panel = _interopRequireDefault(require(\"../load_panel\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar loading = null;\r\nvar createLoadPanel = function(options) {\r\n return new _load_panel.default((0, _renderer.default)(\"
\").appendTo(options && options.container || (0, _view_port.value)()), options)\r\n};\r\nvar removeLoadPanel = function() {\r\n if (!loading) {\r\n return\r\n }\r\n loading.$element().remove();\r\n loading = null\r\n};\r\n\r\nfunction show(options) {\r\n removeLoadPanel();\r\n loading = createLoadPanel(options);\r\n return loading.show()\r\n}\r\n\r\nfunction hide() {\r\n if (!loading) {\r\n return (new _deferred.Deferred).resolve()\r\n }\r\n return loading.hide().done(removeLoadPanel).promise()\r\n}\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _config = _interopRequireDefault(require(\"../../core/config\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _bindable_template = require(\"../../core/templates/bindable_template\");\r\nvar _empty_template = require(\"../../core/templates/empty_template\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _support = require(\"../../core/utils/support\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _data_helper = _interopRequireDefault(require(\"../../data_helper\"));\r\nvar _visibility_change = require(\"../../events/visibility_change\");\r\nvar _date2 = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _dialog = require(\"../dialog\");\r\nvar _themes = require(\"../themes\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _ui2 = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _appointmentPopup = _interopRequireDefault(require(\"./appointmentPopup\"));\r\nvar _compactAppointmentsHelper = require(\"./compactAppointmentsHelper\");\r\nvar _desktopTooltipStrategy = require(\"./tooltip_strategies/desktopTooltipStrategy\");\r\nvar _mobileTooltipStrategy = require(\"./tooltip_strategies/mobileTooltipStrategy\");\r\nvar _ui3 = require(\"./ui.loading\");\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.appointments\"));\r\nvar _uiSchedulerAppointments = _interopRequireDefault(require(\"./ui.scheduler.appointments.layout_manager\"));\r\nvar _uiScheduler2 = _interopRequireDefault(require(\"./ui.scheduler.appointment_model\"));\r\nvar _uiScheduler3 = _interopRequireDefault(require(\"./ui.scheduler.header\"));\r\nvar _uiScheduler4 = _interopRequireDefault(require(\"./ui.scheduler.resource_manager\"));\r\nvar _uiScheduler5 = _interopRequireDefault(require(\"./ui.scheduler.subscribes\"));\r\nvar _recurrence = require(\"./recurrence\");\r\nvar _utils = _interopRequireDefault(require(\"./utils.timeZone\"));\r\nvar _uiScheduler6 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.agenda\"));\r\nvar _uiScheduler7 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.timeline_day\"));\r\nvar _uiScheduler8 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.timeline_month\"));\r\nvar _uiScheduler9 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.timeline_week\"));\r\nvar _uiScheduler10 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.timeline_work_week\"));\r\nvar _uiScheduler11 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.work_space_day\"));\r\nvar _uiScheduler12 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.work_space_month\"));\r\nvar _uiScheduler13 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.work_space_week\"));\r\nvar _uiScheduler14 = _interopRequireDefault(require(\"./workspaces/ui.scheduler.work_space_work_week\"));\r\nvar _appointmentAdapter = _interopRequireDefault(require(\"./appointmentAdapter\"));\r\nvar _timeZoneCalculator = require(\"./timeZoneCalculator\");\r\nvar _dataStructures = require(\"./dataStructures\");\r\nvar _appointmentSettingsGenerator = require(\"./appointmentSettingsGenerator\");\r\nvar _utils2 = _interopRequireDefault(require(\"./utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n if (enumerableOnly) {\r\n symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })\r\n }\r\n keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n })\r\n } else {\r\n if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n } else {\r\n ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar MINUTES_IN_HOUR = 60;\r\nvar WIDGET_CLASS = \"dx-scheduler\";\r\nvar WIDGET_SMALL_CLASS = \"\".concat(WIDGET_CLASS, \"-small\");\r\nvar WIDGET_ADAPTIVE_CLASS = \"\".concat(WIDGET_CLASS, \"-adaptive\");\r\nvar WIDGET_WIN_NO_TOUCH_CLASS = \"\".concat(WIDGET_CLASS, \"-win-no-touch\");\r\nvar WIDGET_READONLY_CLASS = \"\".concat(WIDGET_CLASS, \"-readonly\");\r\nvar WIDGET_SMALL_WIDTH = 400;\r\nvar FULL_DATE_FORMAT = \"yyyyMMddTHHmmss\";\r\nvar UTC_FULL_DATE_FORMAT = FULL_DATE_FORMAT + \"Z\";\r\nvar VIEWS_CONFIG = {\r\n day: {\r\n workSpace: _uiScheduler11.default,\r\n renderingStrategy: \"vertical\"\r\n },\r\n week: {\r\n workSpace: _uiScheduler13.default,\r\n renderingStrategy: \"vertical\"\r\n },\r\n workWeek: {\r\n workSpace: _uiScheduler14.default,\r\n renderingStrategy: \"vertical\"\r\n },\r\n month: {\r\n workSpace: _uiScheduler12.default,\r\n renderingStrategy: \"horizontalMonth\"\r\n },\r\n timelineDay: {\r\n workSpace: _uiScheduler7.default,\r\n renderingStrategy: \"horizontal\"\r\n },\r\n timelineWeek: {\r\n workSpace: _uiScheduler9.default,\r\n renderingStrategy: \"horizontal\"\r\n },\r\n timelineWorkWeek: {\r\n workSpace: _uiScheduler10.default,\r\n renderingStrategy: \"horizontal\"\r\n },\r\n timelineMonth: {\r\n workSpace: _uiScheduler8.default,\r\n renderingStrategy: \"horizontalMonthLine\"\r\n },\r\n agenda: {\r\n workSpace: _uiScheduler6.default,\r\n renderingStrategy: \"agenda\"\r\n }\r\n};\r\nvar StoreEventNames = {\r\n ADDING: \"onAppointmentAdding\",\r\n ADDED: \"onAppointmentAdded\",\r\n DELETING: \"onAppointmentDeleting\",\r\n DELETED: \"onAppointmentDeleted\",\r\n UPDATING: \"onAppointmentUpdating\",\r\n UPDATED: \"onAppointmentUpdated\"\r\n};\r\nvar Scheduler = function(_Widget) {\r\n _inheritsLoose(Scheduler, _Widget);\r\n\r\n function Scheduler() {\r\n return _Widget.apply(this, arguments) || this\r\n }\r\n var _proto = Scheduler.prototype;\r\n _proto._getDefaultOptions = function() {\r\n var defaultOptions = (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {\r\n views: [\"day\", \"week\"],\r\n currentView: \"day\",\r\n currentDate: _date.default.trimTime(new Date),\r\n min: void 0,\r\n max: void 0,\r\n dateSerializationFormat: void 0,\r\n firstDayOfWeek: void 0,\r\n groups: [],\r\n resources: [],\r\n dataSource: null,\r\n customizeDateNavigatorText: void 0,\r\n appointmentTemplate: \"item\",\r\n dropDownAppointmentTemplate: \"dropDownAppointment\",\r\n appointmentCollectorTemplate: \"appointmentCollector\",\r\n dataCellTemplate: null,\r\n timeCellTemplate: null,\r\n resourceCellTemplate: null,\r\n dateCellTemplate: null,\r\n startDayHour: 0,\r\n endDayHour: 24,\r\n editing: {\r\n allowAdding: true,\r\n allowDeleting: true,\r\n allowDragging: true,\r\n allowResizing: true,\r\n allowUpdating: true,\r\n allowTimeZoneEditing: false,\r\n allowEditingTimeZones: false\r\n },\r\n showAllDayPanel: true,\r\n showCurrentTimeIndicator: true,\r\n shadeUntilCurrentTime: false,\r\n indicatorUpdateInterval: 3e5,\r\n indicatorTime: void 0,\r\n recurrenceEditMode: \"dialog\",\r\n cellDuration: 30,\r\n maxAppointmentsPerCell: \"auto\",\r\n selectedCellData: [],\r\n groupByDate: false,\r\n onAppointmentRendered: null,\r\n onAppointmentClick: null,\r\n onAppointmentDblClick: null,\r\n onAppointmentContextMenu: null,\r\n onCellClick: null,\r\n onCellContextMenu: null,\r\n onAppointmentAdding: null,\r\n onAppointmentAdded: null,\r\n onAppointmentUpdating: null,\r\n onAppointmentUpdated: null,\r\n onAppointmentDeleting: null,\r\n onAppointmentDeleted: null,\r\n onAppointmentFormOpening: null,\r\n appointmentTooltipTemplate: \"appointmentTooltip\",\r\n appointmentPopupTemplate: \"appointmentPopup\",\r\n crossScrollingEnabled: false,\r\n useDropDownViewSwitcher: false,\r\n startDateExpr: \"startDate\",\r\n endDateExpr: \"endDate\",\r\n textExpr: \"text\",\r\n descriptionExpr: \"description\",\r\n allDayExpr: \"allDay\",\r\n recurrenceRuleExpr: \"recurrenceRule\",\r\n recurrenceExceptionExpr: \"recurrenceException\",\r\n disabledExpr: \"disabled\",\r\n remoteFiltering: false,\r\n timeZone: \"\",\r\n startDateTimeZoneExpr: \"startDateTimeZone\",\r\n endDateTimeZoneExpr: \"endDateTimeZone\",\r\n noDataText: _message.default.format(\"dxCollectionWidget-noDataText\"),\r\n adaptivityEnabled: false,\r\n allowMultipleCellSelection: true,\r\n scrolling: {\r\n mode: \"standard\"\r\n },\r\n renovateRender: false,\r\n _appointmentTooltipOffset: {\r\n x: 0,\r\n y: 0\r\n },\r\n _appointmentTooltipButtonsPosition: \"bottom\",\r\n _appointmentTooltipOpenButtonText: _message.default.format(\"dxScheduler-openAppointment\"),\r\n _dropDownButtonIcon: \"overflow\",\r\n _appointmentCountPerCell: 2,\r\n _collectorOffset: 0,\r\n _appointmentOffset: 26\r\n });\r\n return (0, _extend.extend)(true, defaultOptions, {\r\n integrationOptions: {\r\n useDeferUpdateForTemplates: false\r\n }\r\n })\r\n };\r\n _proto._defaultOptionsRules = function() {\r\n return _Widget.prototype._defaultOptionsRules.call(this).concat([{\r\n device: function() {\r\n return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return !_devices.default.current().generic\r\n },\r\n options: {\r\n useDropDownViewSwitcher: true,\r\n editing: {\r\n allowDragging: false,\r\n allowResizing: false\r\n }\r\n }\r\n }, {\r\n device: function() {\r\n return (0, _themes.isMaterial)()\r\n },\r\n options: {\r\n useDropDownViewSwitcher: true,\r\n dateCellTemplate: function(data, index, element) {\r\n var text = data.text;\r\n text.split(\" \").forEach(function(text, index) {\r\n var span = (0, _renderer.default)(\"\").text(text).addClass(\"dx-scheduler-header-panel-cell-date\");\r\n (0, _renderer.default)(element).append(span);\r\n if (!index) {\r\n (0, _renderer.default)(element).append(\" \")\r\n }\r\n })\r\n },\r\n _appointmentTooltipOffset: {\r\n x: 0,\r\n y: 11\r\n },\r\n _appointmentTooltipButtonsPosition: \"top\",\r\n _appointmentTooltipOpenButtonText: null,\r\n _dropDownButtonIcon: \"chevrondown\",\r\n _appointmentCountPerCell: 1,\r\n _collectorOffset: 20,\r\n _appointmentOffset: 30\r\n }\r\n }])\r\n };\r\n _proto._setDeprecatedOptions = function() {\r\n _Widget.prototype._setDeprecatedOptions.call(this);\r\n (0, _extend.extend)(this._deprecatedOptions, {\r\n dropDownAppointmentTemplate: {\r\n since: \"19.2\",\r\n message: \"appointmentTooltipTemplate\"\r\n },\r\n allowEditingTimeZones: {\r\n since: \"20.1\",\r\n alias: \"allowTimeZoneEditing\"\r\n }\r\n })\r\n };\r\n _proto._getAppointmentSettingsGenerator = function() {\r\n return new _appointmentSettingsGenerator.AppointmentSettingsGenerator(this)\r\n };\r\n _proto._postponeDataSourceLoading = function(promise) {\r\n this.postponedOperations.add(\"_reloadDataSource\", this._reloadDataSource.bind(this), promise)\r\n };\r\n _proto._postponeResourceLoading = function() {\r\n var _this = this;\r\n var whenLoaded = this.postponedOperations.add(\"_loadResources\", function() {\r\n return _this._loadResources()\r\n });\r\n var resolveCallbacks = new _deferred.Deferred;\r\n whenLoaded.done(function(resources) {\r\n resolveCallbacks.resolve(resources)\r\n });\r\n this._postponeDataSourceLoading(whenLoaded);\r\n return resolveCallbacks.promise()\r\n };\r\n _proto._optionChanged = function(args) {\r\n var _this2 = this;\r\n var value = args.value;\r\n var name = args.name;\r\n switch (args.name) {\r\n case \"customizeDateNavigatorText\":\r\n this._updateOption(\"header\", name, value);\r\n break;\r\n case \"firstDayOfWeek\":\r\n this._updateOption(\"workSpace\", name, value);\r\n this._updateOption(\"header\", name, value);\r\n break;\r\n case \"currentDate\":\r\n value = this._dateOption(name);\r\n value = _date.default.trimTime(new Date(value));\r\n this.option(\"selectedCellData\", []);\r\n this._workSpace.option(name, new Date(value));\r\n this._header.option(name, new Date(value));\r\n this._header.option(\"displayedDate\", this._workSpace._getViewStartByOptions());\r\n this._appointments.option(\"items\", []);\r\n this._filterAppointmentsByDate();\r\n this._postponeDataSourceLoading();\r\n break;\r\n case \"dataSource\":\r\n this._initDataSource();\r\n this._appointmentModel.setDataSource(this._dataSource);\r\n this._postponeResourceLoading().done(function(resources) {\r\n _this2._filterAppointmentsByDate();\r\n _this2._updateOption(\"workSpace\", \"showAllDayPanel\", _this2.option(\"showAllDayPanel\"))\r\n });\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n value = this._dateOption(name);\r\n this._updateOption(\"header\", name, new Date(value));\r\n this._updateOption(\"workSpace\", name, new Date(value));\r\n break;\r\n case \"views\":\r\n this._processCurrentView();\r\n if (this._getCurrentViewOptions()) {\r\n this.repaint()\r\n } else {\r\n this._header.option(name, value)\r\n }\r\n break;\r\n case \"useDropDownViewSwitcher\":\r\n this._header.option(name, value);\r\n break;\r\n case \"currentView\":\r\n this._processCurrentView();\r\n this.fire(\"validateDayHours\");\r\n this.getLayoutManager().initRenderingStrategy(this._getAppointmentsRenderingStrategy());\r\n this._validateCellDuration();\r\n this._appointments.option({\r\n items: [],\r\n allowDrag: this._allowDragging(),\r\n allowResize: this._allowResizing(),\r\n itemTemplate: this._getAppointmentTemplate(\"appointmentTemplate\")\r\n });\r\n this._postponeResourceLoading().done(function(resources) {\r\n _this2._refreshWorkSpace(resources);\r\n _this2._updateHeader();\r\n _this2._filterAppointmentsByDate();\r\n _this2._appointments.option(\"allowAllDayResize\", \"day\" !== value)\r\n });\r\n break;\r\n case \"appointmentTemplate\":\r\n this._appointments.option(\"itemTemplate\", value);\r\n break;\r\n case \"dateCellTemplate\":\r\n case \"resourceCellTemplate\":\r\n case \"dataCellTemplate\":\r\n case \"timeCellTemplate\":\r\n this._updateOption(\"workSpace\", name, value);\r\n this.repaint();\r\n break;\r\n case \"groups\":\r\n this._postponeResourceLoading().done(function(resources) {\r\n _this2._refreshWorkSpace(resources);\r\n _this2._filterAppointmentsByDate()\r\n });\r\n break;\r\n case \"resources\":\r\n this._resourcesManager.setResources(this.option(\"resources\"));\r\n this._appointmentModel.setDataAccessors(this._combineDataAccessors());\r\n this._postponeResourceLoading().done(function(resources) {\r\n _this2._appointments.option(\"items\", []);\r\n _this2._refreshWorkSpace(resources);\r\n _this2._filterAppointmentsByDate()\r\n });\r\n break;\r\n case \"startDayHour\":\r\n case \"endDayHour\":\r\n this.fire(\"validateDayHours\");\r\n this._appointments.option(\"items\", []);\r\n this._updateOption(\"workSpace\", name, value);\r\n this._appointments.repaint();\r\n this._filterAppointmentsByDate();\r\n this._postponeDataSourceLoading();\r\n break;\r\n case StoreEventNames.ADDING:\r\n case StoreEventNames.ADDED:\r\n case StoreEventNames.UPDATING:\r\n case StoreEventNames.UPDATED:\r\n case StoreEventNames.DELETING:\r\n case StoreEventNames.DELETED:\r\n case \"onAppointmentFormOpening\":\r\n this._actions[name] = this._createActionByOption(name);\r\n break;\r\n case \"onAppointmentRendered\":\r\n this._appointments.option(\"onItemRendered\", this._getAppointmentRenderedAction());\r\n break;\r\n case \"onAppointmentClick\":\r\n this._appointments.option(\"onItemClick\", this._createActionByOption(name));\r\n break;\r\n case \"onAppointmentDblClick\":\r\n this._appointments.option(name, this._createActionByOption(name));\r\n break;\r\n case \"onAppointmentContextMenu\":\r\n this._appointments.option(\"onItemContextMenu\", this._createActionByOption(name));\r\n break;\r\n case \"noDataText\":\r\n case \"allowMultipleCellSelection\":\r\n case \"selectedCellData\":\r\n case \"accessKey\":\r\n case \"onCellClick\":\r\n this._workSpace.option(name, value);\r\n break;\r\n case \"onCellContextMenu\":\r\n this._workSpace.option(name, value);\r\n break;\r\n case \"crossScrollingEnabled\":\r\n this._postponeResourceLoading().done(function(resources) {\r\n _this2._appointments.option(\"items\", []);\r\n _this2._refreshWorkSpace(resources);\r\n if (_this2._readyToRenderAppointments) {\r\n _this2._appointments.option(\"items\", _this2._getAppointmentsToRepaint())\r\n }\r\n });\r\n break;\r\n case \"cellDuration\":\r\n this._validateCellDuration();\r\n this._appointments.option(\"items\", []);\r\n if (this._readyToRenderAppointments) {\r\n this._updateOption(\"workSpace\", \"hoursInterval\", value / 60);\r\n this._appointments.option(\"items\", this._getAppointmentsToRepaint())\r\n }\r\n break;\r\n case \"tabIndex\":\r\n case \"focusStateEnabled\":\r\n this._updateOption(\"header\", name, value);\r\n this._updateOption(\"workSpace\", name, value);\r\n this._appointments.option(name, value);\r\n _Widget.prototype._optionChanged.call(this, args);\r\n break;\r\n case \"width\":\r\n this._updateOption(\"header\", name, value);\r\n if (this.option(\"crossScrollingEnabled\")) {\r\n this._updateOption(\"workSpace\", \"width\", value)\r\n }\r\n _Widget.prototype._optionChanged.call(this, args);\r\n this._dimensionChanged();\r\n break;\r\n case \"height\":\r\n _Widget.prototype._optionChanged.call(this, args);\r\n this._dimensionChanged();\r\n break;\r\n case \"editing\":\r\n this._initEditing();\r\n var editing = this._editing;\r\n this._bringEditingModeToAppointments(editing);\r\n this.hideAppointmentTooltip();\r\n this._cleanPopup();\r\n break;\r\n case \"showAllDayPanel\":\r\n this._postponeResourceLoading().done(function(resources) {\r\n _this2._filterAppointmentsByDate();\r\n _this2._updateOption(\"workSpace\", \"allDayExpanded\", value);\r\n _this2._updateOption(\"workSpace\", name, value)\r\n });\r\n break;\r\n case \"showCurrentTimeIndicator\":\r\n case \"indicatorTime\":\r\n case \"indicatorUpdateInterval\":\r\n case \"shadeUntilCurrentTime\":\r\n case \"groupByDate\":\r\n this._updateOption(\"workSpace\", name, value);\r\n this.repaint();\r\n break;\r\n case \"appointmentDragging\":\r\n case \"appointmentTooltipTemplate\":\r\n case \"appointmentPopupTemplate\":\r\n case \"recurrenceEditMode\":\r\n case \"remoteFiltering\":\r\n case \"timeZone\":\r\n case \"dropDownAppointmentTemplate\":\r\n case \"appointmentCollectorTemplate\":\r\n case \"_appointmentTooltipOffset\":\r\n case \"_appointmentTooltipButtonsPosition\":\r\n case \"_appointmentTooltipOpenButtonText\":\r\n case \"_dropDownButtonIcon\":\r\n case \"_appointmentCountPerCell\":\r\n case \"_collectorOffset\":\r\n case \"_appointmentOffset\":\r\n this.repaint();\r\n break;\r\n case \"dateSerializationFormat\":\r\n break;\r\n case \"maxAppointmentsPerCell\":\r\n break;\r\n case \"startDateExpr\":\r\n case \"endDateExpr\":\r\n case \"startDateTimeZoneExpr\":\r\n case \"endDateTimeZoneExpr\":\r\n case \"textExpr\":\r\n case \"descriptionExpr\":\r\n case \"allDayExpr\":\r\n case \"recurrenceRuleExpr\":\r\n case \"recurrenceExceptionExpr\":\r\n case \"disabledExpr\":\r\n this._updateExpression(name, value);\r\n this._appointmentModel.setDataAccessors(this._combineDataAccessors());\r\n this._initAppointmentTemplate();\r\n this.repaint();\r\n break;\r\n case \"adaptivityEnabled\":\r\n this._toggleAdaptiveClass();\r\n this.repaint();\r\n break;\r\n case \"scrolling\":\r\n this._updateOption(\"workSpace\", args.fullName, value);\r\n break;\r\n case \"renovateRender\":\r\n this._updateOption(\"workSpace\", name, value);\r\n break;\r\n default:\r\n _Widget.prototype._optionChanged.call(this, args)\r\n }\r\n };\r\n _proto._updateHeader = function() {\r\n var viewCountConfig = this._getViewCountConfig();\r\n this._header.option(\"intervalCount\", viewCountConfig.intervalCount);\r\n this._header.option(\"displayedDate\", this._workSpace._getViewStartByOptions());\r\n this._header.option(\"min\", this._dateOption(\"min\"));\r\n this._header.option(\"max\", this._dateOption(\"max\"));\r\n this._header.option(\"currentDate\", this._dateOption(\"currentDate\"));\r\n this._header.option(\"firstDayOfWeek\", this._getCurrentViewOption(\"firstDayOfWeek\"));\r\n this._header.option(\"currentView\", this._currentView)\r\n };\r\n _proto._dateOption = function(optionName) {\r\n var optionValue = this._getCurrentViewOption(optionName);\r\n return _date_serialization.default.deserializeDate(optionValue)\r\n };\r\n _proto._getSerializationFormat = function(optionName) {\r\n var value = this._getCurrentViewOption(optionName);\r\n if (\"number\" === typeof value) {\r\n return \"number\"\r\n }\r\n if (!(0, _type.isString)(value)) {\r\n return\r\n }\r\n return _date_serialization.default.getDateSerializationFormat(value)\r\n };\r\n _proto._bringEditingModeToAppointments = function(editing) {\r\n var editingConfig = {\r\n allowDelete: editing.allowUpdating && editing.allowDeleting\r\n };\r\n if (!this._isAgenda()) {\r\n editingConfig.allowDrag = editing.allowDragging;\r\n editingConfig.allowResize = editing.allowResizing;\r\n editingConfig.allowAllDayResize = editing.allowResizing && this._supportAllDayResizing()\r\n }\r\n this._appointments.option(editingConfig);\r\n this.repaint()\r\n };\r\n _proto._isAgenda = function() {\r\n return \"agenda\" === this._getAppointmentsRenderingStrategy()\r\n };\r\n _proto._allowDragging = function() {\r\n return this._editing.allowDragging && !this._isAgenda()\r\n };\r\n _proto._allowResizing = function() {\r\n return this._editing.allowResizing && !this._isAgenda()\r\n };\r\n _proto._allowAllDayResizing = function() {\r\n return this._editing.allowResizing && this._supportAllDayResizing()\r\n };\r\n _proto._supportAllDayResizing = function() {\r\n return \"day\" !== this._getCurrentViewType() || this._currentView.intervalCount > 1\r\n };\r\n _proto._isAllDayExpanded = function(items) {\r\n return this.option(\"showAllDayPanel\") && this._appointmentModel.hasAllDayAppointments(items, this._getCurrentViewOption(\"startDayHour\"), this._getCurrentViewOption(\"endDayHour\"))\r\n };\r\n _proto._getTimezoneOffsetByOption = function(date) {\r\n return _utils.default.calculateTimezoneByValue(this.option(\"timeZone\"), date)\r\n };\r\n _proto._filterAppointmentsByDate = function() {\r\n var dateRange = this._workSpace.getDateRange();\r\n this._appointmentModel.filterByDate(dateRange[0], dateRange[1], this.option(\"remoteFiltering\"), this.option(\"dateSerializationFormat\"))\r\n };\r\n _proto._loadResources = function() {\r\n var groups = this._getCurrentViewOption(\"groups\");\r\n var result = new _deferred.Deferred;\r\n this._resourcesManager.loadResources(groups).done(function(resources) {\r\n this._loadedResources = resources;\r\n result.resolve(resources)\r\n }.bind(this));\r\n return result.promise()\r\n };\r\n _proto._reloadDataSource = function() {\r\n var result = new _deferred.Deferred;\r\n if (this._dataSource) {\r\n this._dataSource.load().done(function() {\r\n (0, _ui3.hide)();\r\n this._fireContentReadyAction(result)\r\n }.bind(this)).fail(function() {\r\n (0, _ui3.hide)();\r\n result.reject()\r\n });\r\n this._dataSource.isLoading() && (0, _ui3.show)({\r\n container: this.$element(),\r\n position: {\r\n of: this.$element()\r\n }\r\n })\r\n } else {\r\n this._fireContentReadyAction(result)\r\n }\r\n return result.promise()\r\n };\r\n _proto._fireContentReadyAction = function(result) {\r\n var contentReadyBase = _Widget.prototype._fireContentReadyAction.bind(this);\r\n var fireContentReady = function() {\r\n contentReadyBase();\r\n null === result || void 0 === result ? void 0 : result.resolve()\r\n };\r\n if (this._workSpaceRecalculation) {\r\n var _this$_workSpaceRecal;\r\n null === (_this$_workSpaceRecal = this._workSpaceRecalculation) || void 0 === _this$_workSpaceRecal ? void 0 : _this$_workSpaceRecal.done(function() {\r\n fireContentReady()\r\n })\r\n } else {\r\n fireContentReady()\r\n }\r\n };\r\n _proto._dimensionChanged = function() {\r\n var filteredItems = this.getFilteredItems();\r\n this._toggleSmallClass();\r\n if (!this._isAgenda() && filteredItems && this._isVisible()) {\r\n this._workSpace._cleanAllowedPositions();\r\n this._workSpace.option(\"allDayExpanded\", this._isAllDayExpanded(filteredItems));\r\n this._workSpace._dimensionChanged();\r\n var appointments = this._layoutManager.createAppointmentsMap(filteredItems);\r\n this._appointments.option(\"items\", appointments)\r\n }\r\n this.hideAppointmentTooltip();\r\n this._appointmentPopup.triggerResize();\r\n this._appointmentPopup.updatePopupFullScreenMode()\r\n };\r\n _proto._clean = function() {\r\n this._cleanPopup();\r\n _Widget.prototype._clean.call(this)\r\n };\r\n _proto._toggleSmallClass = function() {\r\n var width = (0, _position.getBoundingRect)(this.$element().get(0)).width;\r\n this.$element().toggleClass(WIDGET_SMALL_CLASS, width < WIDGET_SMALL_WIDTH)\r\n };\r\n _proto._toggleAdaptiveClass = function() {\r\n this.$element().toggleClass(WIDGET_ADAPTIVE_CLASS, this.option(\"adaptivityEnabled\"))\r\n };\r\n _proto._visibilityChanged = function(visible) {\r\n visible && this._dimensionChanged()\r\n };\r\n _proto._dataSourceOptions = function() {\r\n return {\r\n paginate: false\r\n }\r\n };\r\n _proto._init = function() {\r\n var _this3 = this;\r\n this._initExpressions({\r\n startDate: this.option(\"startDateExpr\"),\r\n endDate: this.option(\"endDateExpr\"),\r\n startDateTimeZone: this.option(\"startDateTimeZoneExpr\"),\r\n endDateTimeZone: this.option(\"endDateTimeZoneExpr\"),\r\n allDay: this.option(\"allDayExpr\"),\r\n text: this.option(\"textExpr\"),\r\n description: this.option(\"descriptionExpr\"),\r\n recurrenceRule: this.option(\"recurrenceRuleExpr\"),\r\n recurrenceException: this.option(\"recurrenceExceptionExpr\"),\r\n disabled: this.option(\"disabledExpr\")\r\n });\r\n _Widget.prototype._init.call(this);\r\n this._initDataSource();\r\n this._loadedResources = [];\r\n this.$element().addClass(WIDGET_CLASS).toggleClass(WIDGET_WIN_NO_TOUCH_CLASS, !!(_browser.default.msie && _support.touch));\r\n this._initEditing();\r\n this._resourcesManager = new _uiScheduler4.default(this.option(\"resources\"));\r\n var combinedDataAccessors = this._combineDataAccessors();\r\n this._appointmentModel = new _uiScheduler2.default(this._dataSource, combinedDataAccessors, this.getAppointmentDurationInMinutes());\r\n this._initActions();\r\n this._compactAppointmentsHelper = new _compactAppointmentsHelper.CompactAppointmentsHelper(this);\r\n this._asyncTemplatesTimers = [];\r\n this._dataSourceLoadedCallback = (0, _callbacks.default)();\r\n this._subscribes = _uiScheduler5.default;\r\n this.timeZoneCalculator = new _timeZoneCalculator.TimeZoneCalculator({\r\n getClientOffset: function(date) {\r\n return _utils.default.getClientTimezoneOffset(date)\r\n },\r\n getCommonOffset: function(date, timeZone) {\r\n return _utils.default.calculateTimezoneByValue(timeZone || _this3.option(\"timeZone\"), date)\r\n },\r\n getAppointmentOffset: function(date, appointmentTimezone) {\r\n return _utils.default.calculateTimezoneByValue(appointmentTimezone, date)\r\n }\r\n })\r\n };\r\n _proto._initTemplates = function() {\r\n this._initAppointmentTemplate();\r\n this._templateManager.addDefaultTemplates({\r\n appointmentTooltip: new _empty_template.EmptyTemplate,\r\n dropDownAppointment: new _empty_template.EmptyTemplate\r\n });\r\n _Widget.prototype._initTemplates.call(this)\r\n };\r\n _proto._initAppointmentTemplate = function() {\r\n var _this4 = this;\r\n var expr = this._dataAccessors.expr;\r\n var createGetter = function(property) {\r\n return (0, _data.compileGetter)(\"appointmentData.\".concat(property))\r\n };\r\n var getDate = function(getter) {\r\n return function(data) {\r\n var value = getter(data);\r\n if (value instanceof Date) {\r\n return value.valueOf()\r\n }\r\n return value\r\n }\r\n };\r\n this._templateManager.addDefaultTemplates(_defineProperty({}, \"item\", new _bindable_template.BindableTemplate(function($container, data, model) {\r\n return _this4.getAppointmentsInstance()._renderAppointmentTemplate($container, data, model)\r\n }, [\"html\", \"text\", \"startDate\", \"endDate\", \"allDay\", \"description\", \"recurrenceRule\", \"recurrenceException\", \"startDateTimeZone\", \"endDateTimeZone\"], this.option(\"integrationOptions.watchMethod\"), {\r\n text: createGetter(expr.textExpr),\r\n startDate: getDate(createGetter(expr.startDateExpr)),\r\n endDate: getDate(createGetter(expr.endDateExpr)),\r\n startDateTimeZone: createGetter(expr.startDateTimeZoneExpr),\r\n endDateTimeZone: createGetter(expr.endDateTimeZoneExpr),\r\n allDay: createGetter(expr.allDayExpr),\r\n recurrenceRule: createGetter(expr.recurrenceRuleExpr)\r\n })))\r\n };\r\n _proto._combineDataAccessors = function() {\r\n var resourcesDataAccessors = this._resourcesManager._dataAccessors;\r\n var result = (0, _extend.extend)(true, {}, this._dataAccessors);\r\n (0, _iterator.each)(resourcesDataAccessors, function(type, accessor) {\r\n result[type].resources = accessor\r\n }.bind(this));\r\n return result\r\n };\r\n _proto._renderContent = function() {\r\n this._renderContentImpl()\r\n };\r\n _proto._dataSourceChangedHandler = function(result) {\r\n if (this._readyToRenderAppointments) {\r\n this._workSpaceRecalculation.done(function() {\r\n this._renderAppointments();\r\n if (this._isAgenda()) {\r\n this._workSpace._renderView();\r\n this._dataSourceLoadedCallback.fireWith(this, [this.getFilteredItems()])\r\n }\r\n }.bind(this))\r\n }\r\n };\r\n _proto.isVirtualScrolling = function() {\r\n var _this$getWorkSpace;\r\n return null === (_this$getWorkSpace = this.getWorkSpace()) || void 0 === _this$getWorkSpace ? void 0 : _this$getWorkSpace.isVirtualScrolling()\r\n };\r\n _proto._filterAppointments = function() {\r\n var prerenderFilterName = this.isVirtualScrolling() ? \"prerenderFilterVirtual\" : \"prerenderFilter\";\r\n return this.fire(prerenderFilterName)\r\n };\r\n _proto._renderAppointments = function() {\r\n this._filteredItems = this._filterAppointments();\r\n this._workSpace.option(\"allDayExpanded\", this._isAllDayExpanded(this._filteredItems));\r\n if (this._isAgenda()) {\r\n this.getRenderingStrategyInstance().calculateRows(this._filteredItems, 7, this.option(\"currentDate\"), true)\r\n }\r\n if (this._filteredItems.length && this._isVisible()) {\r\n this._appointments.option(\"items\", this._getAppointmentsToRepaint());\r\n this._appointmentModel.cleanModelState()\r\n } else {\r\n this._appointments.option(\"items\", [])\r\n }\r\n };\r\n _proto._getAppointmentsToRepaint = function() {\r\n var appointments = this._layoutManager.createAppointmentsMap(this._filteredItems);\r\n return this._layoutManager.getRepaintedAppointments(appointments, this.getAppointmentsInstance().option(\"items\"))\r\n };\r\n _proto._initExpressions = function(fields) {\r\n var isDateField = function(field) {\r\n return \"startDate\" === field || \"endDate\" === field\r\n };\r\n if (!this._dataAccessors) {\r\n this._dataAccessors = {\r\n getter: {},\r\n setter: {},\r\n expr: {}\r\n }\r\n }(0, _iterator.each)(fields, function(name, expr) {\r\n if (expr) {\r\n var getter = (0, _data.compileGetter)(expr);\r\n var setter = (0, _data.compileSetter)(expr);\r\n var dateGetter;\r\n var dateSetter;\r\n if (isDateField(name)) {\r\n var that = this;\r\n dateGetter = function() {\r\n var value = getter.apply(this, arguments);\r\n if ((0, _config.default)().forceIsoDateParsing) {\r\n if (!that.option(\"dateSerializationFormat\")) {\r\n var format = _date_serialization.default.getDateSerializationFormat(value);\r\n if (format) {\r\n that.option(\"dateSerializationFormat\", format)\r\n }\r\n }\r\n value = _date_serialization.default.deserializeDate(value)\r\n }\r\n return value\r\n };\r\n dateSetter = function(object, value) {\r\n if ((0, _config.default)().forceIsoDateParsing || that.option(\"dateSerializationFormat\")) {\r\n value = _date_serialization.default.serializeDate(value, that.option(\"dateSerializationFormat\"))\r\n }\r\n setter.call(this, object, value)\r\n }\r\n }\r\n this._dataAccessors.getter[name] = dateGetter || getter;\r\n this._dataAccessors.setter[name] = dateSetter || setter;\r\n this._dataAccessors.expr[name + \"Expr\"] = expr\r\n } else {\r\n delete this._dataAccessors.getter[name];\r\n delete this._dataAccessors.setter[name];\r\n delete this._dataAccessors.expr[name + \"Expr\"]\r\n }\r\n }.bind(this))\r\n };\r\n _proto._updateExpression = function(name, value) {\r\n var exprObj = {};\r\n exprObj[name.replace(\"Expr\", \"\")] = value;\r\n this._initExpressions(exprObj)\r\n };\r\n _proto._initEditing = function() {\r\n var editing = this.option(\"editing\");\r\n this._editing = {\r\n allowAdding: !!editing,\r\n allowUpdating: !!editing,\r\n allowDeleting: !!editing,\r\n allowResizing: !!editing,\r\n allowDragging: !!editing\r\n };\r\n if ((0, _type.isObject)(editing)) {\r\n this._editing = (0, _extend.extend)(this._editing, editing)\r\n }\r\n this._editing.allowDragging = this._editing.allowDragging && this._editing.allowUpdating;\r\n this._editing.allowResizing = this._editing.allowResizing && this._editing.allowUpdating;\r\n this.$element().toggleClass(WIDGET_READONLY_CLASS, this._isReadOnly())\r\n };\r\n _proto._isReadOnly = function() {\r\n var result = true;\r\n var editing = this._editing;\r\n for (var prop in editing) {\r\n if (Object.prototype.hasOwnProperty.call(editing, prop)) {\r\n result = result && !editing[prop]\r\n }\r\n }\r\n return result\r\n };\r\n _proto._dispose = function() {\r\n this._appointmentTooltip && this._appointmentTooltip.dispose();\r\n this.hideAppointmentPopup();\r\n this.hideAppointmentTooltip();\r\n this._asyncTemplatesTimers.forEach(clearTimeout);\r\n this._asyncTemplatesTimers = [];\r\n _Widget.prototype._dispose.call(this)\r\n };\r\n _proto._initActions = function() {\r\n this._actions = {\r\n onAppointmentAdding: this._createActionByOption(StoreEventNames.ADDING),\r\n onAppointmentAdded: this._createActionByOption(StoreEventNames.ADDED),\r\n onAppointmentUpdating: this._createActionByOption(StoreEventNames.UPDATING),\r\n onAppointmentUpdated: this._createActionByOption(StoreEventNames.UPDATED),\r\n onAppointmentDeleting: this._createActionByOption(StoreEventNames.DELETING),\r\n onAppointmentDeleted: this._createActionByOption(StoreEventNames.DELETED),\r\n onAppointmentFormOpening: this._createActionByOption(\"onAppointmentFormOpening\")\r\n }\r\n };\r\n _proto._getAppointmentRenderedAction = function() {\r\n return this._createActionByOption(\"onAppointmentRendered\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n };\r\n _proto._renderFocusTarget = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._initMarkup = function() {\r\n _Widget.prototype._initMarkup.call(this);\r\n this.fire(\"validateDayHours\");\r\n this._validateCellDuration();\r\n this._processCurrentView();\r\n this._renderHeader();\r\n this._layoutManager = new _uiSchedulerAppointments.default(this, this._getAppointmentsRenderingStrategy());\r\n this._appointments = this._createComponent(\"
\", _uiScheduler.default, this._appointmentsConfig());\r\n this._appointments.option(\"itemTemplate\", this._getAppointmentTemplate(\"appointmentTemplate\"));\r\n this._appointmentTooltip = new(this.option(\"adaptivityEnabled\") ? _mobileTooltipStrategy.MobileTooltipStrategy : _desktopTooltipStrategy.DesktopTooltipStrategy)(this._getAppointmentTooltipOptions());\r\n this._appointmentPopup = new _appointmentPopup.default(this);\r\n if (this._isLoaded() || this._isDataSourceLoading()) {\r\n this._initMarkupCore(this._loadedResources);\r\n this._dataSourceChangedHandler(this._dataSource.items());\r\n this._fireContentReadyAction()\r\n } else {\r\n this._loadResources().done(function(resources) {\r\n this._initMarkupCore(resources);\r\n this._reloadDataSource()\r\n }.bind(this))\r\n }\r\n };\r\n _proto._getAppointmentTooltipOptions = function() {\r\n var _this5 = this;\r\n var that = this;\r\n return {\r\n createComponent: that._createComponent.bind(that),\r\n container: that.$element(),\r\n getScrollableContainer: that.getWorkSpaceScrollableContainer.bind(that),\r\n addDefaultTemplates: that._templateManager.addDefaultTemplates.bind(that._templateManager),\r\n getAppointmentTemplate: that._getAppointmentTemplate.bind(that),\r\n showAppointmentPopup: that.showAppointmentPopup.bind(that),\r\n checkAndDeleteAppointment: that.checkAndDeleteAppointment.bind(that),\r\n isAppointmentInAllDayPanel: that.isAppointmentInAllDayPanel.bind(that),\r\n createFormattedDateText: function(appointment, targetedAppointment, format) {\r\n return _this5.fire(\"getTextAndFormatDate\", appointment, targetedAppointment, format)\r\n },\r\n getAppointmentDisabled: function(appointment) {\r\n return _this5.createAppointmentAdapter(appointment).disabled\r\n }\r\n }\r\n };\r\n _proto.checkAndDeleteAppointment = function(appointment, targetedAppointment) {\r\n var _this6 = this;\r\n var targetedAdapter = this.createAppointmentAdapter(targetedAppointment);\r\n this._checkRecurringAppointment(appointment, targetedAppointment, targetedAdapter.startDate, function() {\r\n _this6.deleteAppointment(appointment)\r\n }, true)\r\n };\r\n _proto._getExtraAppointmentTooltipOptions = function() {\r\n return {\r\n rtlEnabled: this.option(\"rtlEnabled\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n editing: this.option(\"editing\"),\r\n offset: this.option(\"_appointmentTooltipOffset\")\r\n }\r\n };\r\n _proto.isAppointmentInAllDayPanel = function(appointmentData) {\r\n var workSpace = this._workSpace;\r\n var itTakesAllDay = this.appointmentTakesAllDay(appointmentData);\r\n return itTakesAllDay && workSpace.supportAllDayRow() && workSpace.option(\"showAllDayPanel\")\r\n };\r\n _proto._initMarkupCore = function(resources) {\r\n var _this7 = this;\r\n this._readyToRenderAppointments = (0, _window.hasWindow)();\r\n this._workSpace && this._cleanWorkspace();\r\n this._renderWorkSpace(resources);\r\n this._appointments.option({\r\n fixedContainer: this._workSpace.getFixedContainer(),\r\n allDayContainer: this._workSpace.getAllDayContainer()\r\n });\r\n this._waitAsyncTemplate(function() {\r\n var _this7$_workSpaceReca;\r\n return null === (_this7$_workSpaceReca = _this7._workSpaceRecalculation) || void 0 === _this7$_workSpaceReca ? void 0 : _this7$_workSpaceReca.resolve()\r\n });\r\n this._filterAppointmentsByDate()\r\n };\r\n _proto._isLoaded = function() {\r\n return this._isResourcesLoaded() && this._isDataSourceLoaded()\r\n };\r\n _proto._isResourcesLoaded = function() {\r\n return (0, _type.isDefined)(this._loadedResources)\r\n };\r\n _proto._isDataSourceLoaded = function() {\r\n return this._dataSource && this._dataSource.isLoaded()\r\n };\r\n _proto._render = function() {\r\n this._toggleSmallClass();\r\n this._toggleAdaptiveClass();\r\n _Widget.prototype._render.call(this)\r\n };\r\n _proto._renderHeader = function() {\r\n var $header = (0, _renderer.default)(\"
\").appendTo(this.$element());\r\n this._header = this._createComponent($header, _uiScheduler3.default, this._headerConfig())\r\n };\r\n _proto._headerConfig = function() {\r\n var _this8 = this;\r\n var currentViewOptions = this._getCurrentViewOptions();\r\n var countConfig = this._getViewCountConfig();\r\n var result = (0, _extend.extend)({\r\n isAdaptive: this.option(\"adaptivityEnabled\"),\r\n firstDayOfWeek: this.option(\"firstDayOfWeek\"),\r\n currentView: this._currentView,\r\n tabIndex: this.option(\"tabIndex\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n width: this.option(\"width\"),\r\n rtlEnabled: this.option(\"rtlEnabled\"),\r\n useDropDownViewSwitcher: this.option(\"useDropDownViewSwitcher\"),\r\n _dropDownButtonIcon: this.option(\"_dropDownButtonIcon\"),\r\n customizeDateNavigatorText: this.option(\"customizeDateNavigatorText\")\r\n }, currentViewOptions);\r\n result.observer = this;\r\n result.intervalCount = countConfig.intervalCount;\r\n result.views = this.option(\"views\");\r\n result.min = new Date(this._dateOption(\"min\"));\r\n result.max = new Date(this._dateOption(\"max\"));\r\n result.currentDate = _date.default.trimTime(new Date(this._dateOption(\"currentDate\")));\r\n result.todayDate = function() {\r\n var result = _this8.timeZoneCalculator.createDate(new Date, {\r\n path: \"toGrid\"\r\n });\r\n return result\r\n };\r\n return result\r\n };\r\n _proto._appointmentsConfig = function() {\r\n var that = this;\r\n var config = {\r\n observer: this,\r\n onItemRendered: this._getAppointmentRenderedAction(),\r\n onItemClick: this._createActionByOption(\"onAppointmentClick\"),\r\n onItemContextMenu: this._createActionByOption(\"onAppointmentContextMenu\"),\r\n onAppointmentDblClick: this._createActionByOption(\"onAppointmentDblClick\"),\r\n tabIndex: this.option(\"tabIndex\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n allowDrag: this._allowDragging(),\r\n allowDelete: this._editing.allowUpdating && this._editing.allowDeleting,\r\n allowResize: this._allowResizing(),\r\n allowAllDayResize: this._allowAllDayResizing(),\r\n rtlEnabled: this.option(\"rtlEnabled\"),\r\n currentView: this.option(\"currentView\"),\r\n onContentReady: function() {\r\n that._workSpace && that._workSpace.option(\"allDayExpanded\", that._isAllDayExpanded(that.getFilteredItems()))\r\n }\r\n };\r\n return config\r\n };\r\n _proto.getCollectorOffset = function() {\r\n if (this._workSpace.needApplyCollectorOffset() && !this.option(\"adaptivityEnabled\")) {\r\n return this.option(\"_collectorOffset\")\r\n } else {\r\n return 0\r\n }\r\n };\r\n _proto.getAppointmentDurationInMinutes = function() {\r\n return this._getCurrentViewOption(\"cellDuration\")\r\n };\r\n _proto._processCurrentView = function() {\r\n var views = this.option(\"views\");\r\n var currentView = this.option(\"currentView\");\r\n var that = this;\r\n this._currentView = currentView;\r\n (0, _iterator.each)(views, function(_, view) {\r\n var isViewIsObject = (0, _type.isObject)(view);\r\n var viewName = isViewIsObject ? view.name : view;\r\n var viewType = view.type;\r\n if (currentView === viewName || currentView === viewType) {\r\n that._currentView = view;\r\n return false\r\n }\r\n })\r\n };\r\n _proto._validateCellDuration = function() {\r\n var endDayHour = this._getCurrentViewOption(\"endDayHour\");\r\n var startDayHour = this._getCurrentViewOption(\"startDayHour\");\r\n var cellDuration = this._getCurrentViewOption(\"cellDuration\");\r\n if ((endDayHour - startDayHour) * MINUTES_IN_HOUR % cellDuration !== 0) {\r\n _ui.default.log(\"W1015\")\r\n }\r\n };\r\n _proto._getCurrentViewType = function() {\r\n return this._currentView.type || this._currentView\r\n };\r\n _proto._getAppointmentsRenderingStrategy = function() {\r\n return VIEWS_CONFIG[this._getCurrentViewType()].renderingStrategy\r\n };\r\n _proto._renderWorkSpace = function(groups) {\r\n this._readyToRenderAppointments && this._toggleSmallClass();\r\n var $workSpace = (0, _renderer.default)(\"
\").appendTo(this.$element());\r\n var countConfig = this._getViewCountConfig();\r\n var workSpaceComponent = VIEWS_CONFIG[this._getCurrentViewType()].workSpace;\r\n var workSpaceConfig = this._workSpaceConfig(groups, countConfig);\r\n this._workSpace = this._createComponent($workSpace, workSpaceComponent, workSpaceConfig);\r\n this._allowDragging() && this._workSpace.initDragBehavior(this, this._all);\r\n this._workSpace._attachTablesEvents();\r\n this._workSpace.getWorkArea().append(this._appointments.$element());\r\n this._recalculateWorkspace();\r\n countConfig.startDate && this._header && this._header.option(\"currentDate\", this._workSpace._getHeaderDate());\r\n this._appointments.option(\"_collectorOffset\", this.getCollectorOffset())\r\n };\r\n _proto._getViewCountConfig = function() {\r\n var currentView = this.option(\"currentView\");\r\n var view = this._getViewByName(currentView);\r\n var viewCount = view && view.intervalCount || 1;\r\n var startDate = view && view.startDate || null;\r\n return {\r\n intervalCount: viewCount,\r\n startDate: startDate\r\n }\r\n };\r\n _proto._getViewByName = function(name) {\r\n var views = this.option(\"views\");\r\n for (var i = 0; i < views.length; i++) {\r\n if (views[i].name === name || views[i].type === name || views[i] === name) {\r\n return views[i]\r\n }\r\n }\r\n };\r\n _proto._recalculateWorkspace = function() {\r\n var _this9 = this;\r\n this._workSpaceRecalculation = new _deferred.Deferred;\r\n this._waitAsyncTemplate(function() {\r\n (0, _visibility_change.triggerResizeEvent)(_this9._workSpace.$element());\r\n _this9._workSpace._refreshDateTimeIndication()\r\n })\r\n };\r\n _proto._workSpaceConfig = function(groups, countConfig) {\r\n var _currentViewOptions$s, _this10 = this;\r\n var currentViewOptions = this._getCurrentViewOptions();\r\n var scrolling = this.option(\"scrolling\");\r\n var result = (0, _extend.extend)({\r\n noDataText: this.option(\"noDataText\"),\r\n firstDayOfWeek: this.option(\"firstDayOfWeek\"),\r\n startDayHour: this.option(\"startDayHour\"),\r\n endDayHour: this.option(\"endDayHour\"),\r\n tabIndex: this.option(\"tabIndex\"),\r\n accessKey: this.option(\"accessKey\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n cellDuration: this.option(\"cellDuration\"),\r\n showAllDayPanel: this.option(\"showAllDayPanel\"),\r\n showCurrentTimeIndicator: this.option(\"showCurrentTimeIndicator\"),\r\n indicatorTime: this.option(\"indicatorTime\"),\r\n indicatorUpdateInterval: this.option(\"indicatorUpdateInterval\"),\r\n shadeUntilCurrentTime: this.option(\"shadeUntilCurrentTime\"),\r\n allDayExpanded: this._appointments.option(\"items\"),\r\n crossScrollingEnabled: this.option(\"crossScrollingEnabled\"),\r\n dataCellTemplate: this.option(\"dataCellTemplate\"),\r\n timeCellTemplate: this.option(\"timeCellTemplate\"),\r\n resourceCellTemplate: this.option(\"resourceCellTemplate\"),\r\n dateCellTemplate: this.option(\"dateCellTemplate\"),\r\n allowMultipleCellSelection: this.option(\"allowMultipleCellSelection\"),\r\n selectedCellData: this.option(\"selectedCellData\"),\r\n onSelectionChanged: function(args) {\r\n _this10.option(\"selectedCellData\", args.selectedCellData)\r\n },\r\n groupByDate: this._getCurrentViewOption(\"groupByDate\"),\r\n scrolling: scrolling,\r\n renovateRender: this.option(\"renovateRender\") || \"virtual\" === scrolling.mode || \"virtual\" === (null === (_currentViewOptions$s = currentViewOptions.scrolling) || void 0 === _currentViewOptions$s ? void 0 : _currentViewOptions$s.mode)\r\n }, currentViewOptions);\r\n result.observer = this;\r\n result.intervalCount = countConfig.intervalCount;\r\n result.startDate = countConfig.startDate;\r\n result.groups = groups;\r\n result.onCellClick = this._createActionByOption(\"onCellClick\");\r\n result.onCellContextMenu = this._createActionByOption(\"onCellContextMenu\");\r\n result.min = new Date(this._dateOption(\"min\"));\r\n result.max = new Date(this._dateOption(\"max\"));\r\n result.currentDate = _date.default.trimTime(new Date(this._dateOption(\"currentDate\")));\r\n result.hoursInterval = result.cellDuration / 60;\r\n result.allDayExpanded = this._isAllDayExpanded(this.getFilteredItems());\r\n result.dataCellTemplate = result.dataCellTemplate ? this._getTemplate(result.dataCellTemplate) : null;\r\n result.timeCellTemplate = result.timeCellTemplate ? this._getTemplate(result.timeCellTemplate) : null;\r\n result.resourceCellTemplate = result.resourceCellTemplate ? this._getTemplate(result.resourceCellTemplate) : null;\r\n result.dateCellTemplate = result.dateCellTemplate ? this._getTemplate(result.dateCellTemplate) : null;\r\n return result\r\n };\r\n _proto._waitAsyncTemplate = function(callback) {\r\n if (this._options.silent(\"templatesRenderAsynchronously\")) {\r\n var timer = setTimeout(function() {\r\n callback();\r\n clearTimeout(timer)\r\n });\r\n this._asyncTemplatesTimers.push(timer)\r\n } else {\r\n callback()\r\n }\r\n };\r\n _proto._getCurrentViewOptions = function() {\r\n return this._currentView\r\n };\r\n _proto._getCurrentViewOption = function(optionName) {\r\n var currentViewOptions = this._getCurrentViewOptions();\r\n if (currentViewOptions && void 0 !== currentViewOptions[optionName]) {\r\n return currentViewOptions[optionName]\r\n }\r\n return this.option(optionName)\r\n };\r\n _proto._getAppointmentTemplate = function(optionName) {\r\n var currentViewOptions = this._getCurrentViewOptions();\r\n if (currentViewOptions && currentViewOptions[optionName]) {\r\n return this._getTemplate(currentViewOptions[optionName])\r\n }\r\n return this._getTemplateByOption(optionName)\r\n };\r\n _proto._updateOption = function(viewName, optionName, value) {\r\n var currentViewOptions = this._getCurrentViewOptions();\r\n if (!currentViewOptions || !(0, _type.isDefined)(currentViewOptions[optionName])) {\r\n this[\"_\" + viewName].option(optionName, value)\r\n }\r\n };\r\n _proto._refreshWorkSpace = function(groups) {\r\n var _this11 = this;\r\n this._cleanWorkspace();\r\n delete this._workSpace;\r\n this._renderWorkSpace(groups);\r\n if (this._readyToRenderAppointments) {\r\n this._appointments.option({\r\n fixedContainer: this._workSpace.getFixedContainer(),\r\n allDayContainer: this._workSpace.getAllDayContainer()\r\n });\r\n this._waitAsyncTemplate(function() {\r\n return _this11._workSpaceRecalculation.resolve()\r\n })\r\n }\r\n };\r\n _proto._cleanWorkspace = function() {\r\n this._appointments.$element().detach();\r\n this._workSpace._dispose();\r\n this._workSpace.$element().remove();\r\n this.option(\"selectedCellData\", [])\r\n };\r\n _proto.getWorkSpaceScrollable = function() {\r\n return this._workSpace.getScrollable()\r\n };\r\n _proto.getWorkSpaceScrollableScrollTop = function(allDay) {\r\n return this._workSpace.getGroupedScrollableScrollTop(allDay)\r\n };\r\n _proto.getWorkSpaceScrollableScrollLeft = function() {\r\n return this._workSpace.getScrollableScrollLeft()\r\n };\r\n _proto.getWorkSpaceScrollableContainer = function() {\r\n return this._workSpace.getScrollableContainer()\r\n };\r\n _proto.getWorkSpaceAllDayHeight = function() {\r\n return this._workSpace.getAllDayHeight()\r\n };\r\n _proto.getWorkSpaceAllDayOffset = function() {\r\n return this._workSpace.getAllDayOffset()\r\n };\r\n _proto.getWorkSpaceHeaderPanelHeight = function() {\r\n return this._workSpace.getHeaderPanelHeight()\r\n };\r\n _proto.getWorkSpaceDateTableOffset = function() {\r\n return !this.option(\"crossScrollingEnabled\") || this.option(\"rtlEnabled\") ? this._workSpace.getWorkSpaceLeftOffset() : 0\r\n };\r\n _proto.getWorkSpace = function() {\r\n return this._workSpace\r\n };\r\n _proto.getAppointmentModel = function() {\r\n return this._appointmentModel\r\n };\r\n _proto.getHeader = function() {\r\n return this._header\r\n };\r\n _proto.getMaxAppointmentsPerCell = function() {\r\n return this._getCurrentViewOption(\"maxAppointmentsPerCell\")\r\n };\r\n _proto._cleanPopup = function() {\r\n this._appointmentPopup && this._appointmentPopup.dispose()\r\n };\r\n _proto._checkRecurringAppointment = function(targetAppointment, singleAppointment, exceptionDate, callback, isDeleted, isPopupEditing, dragEvent) {\r\n var _this12 = this;\r\n delete this._updatedRecAppointment;\r\n var recurrenceRule = this.fire(\"getField\", \"recurrenceRule\", targetAppointment);\r\n if (!(0, _recurrence.getRecurrenceProcessor)().evalRecurrenceRule(recurrenceRule).isValid || !this._editing.allowUpdating) {\r\n callback();\r\n return\r\n }\r\n var editMode = this.option(\"recurrenceEditMode\");\r\n switch (editMode) {\r\n case \"series\":\r\n callback();\r\n break;\r\n case \"occurrence\":\r\n this._excludeAppointmentFromSeries(targetAppointment, singleAppointment, exceptionDate, isDeleted, isPopupEditing, dragEvent);\r\n break;\r\n default:\r\n if (dragEvent) {\r\n dragEvent.cancel = new _deferred.Deferred\r\n }\r\n this._showRecurrenceChangeConfirm(isDeleted).done(function(result) {\r\n result && callback();\r\n !result && _this12._excludeAppointmentFromSeries(targetAppointment, singleAppointment, exceptionDate, isDeleted, isPopupEditing, dragEvent)\r\n }).fail(function() {\r\n return _this12._appointments.moveAppointmentBack(dragEvent)\r\n })\r\n }\r\n };\r\n _proto._excludeAppointmentFromSeries = function(rawAppointment, newRawAppointment, exceptionDate, isDeleted, isPopupEditing, dragEvent) {\r\n var _this13 = this;\r\n var appointment = this.createAppointmentAdapter(_objectSpread({}, rawAppointment));\r\n var newAppointment = this.createAppointmentAdapter(newRawAppointment);\r\n newAppointment.recurrenceRule = \"\";\r\n newAppointment.recurrenceException = \"\";\r\n var canCreateNewAppointment = !isDeleted && !isPopupEditing;\r\n if (canCreateNewAppointment) {\r\n var keyPropertyName = this._appointmentModel.keyName;\r\n delete newRawAppointment[keyPropertyName];\r\n this.addAppointment(newRawAppointment)\r\n }\r\n appointment.recurrenceException = this._createRecurrenceException(appointment, exceptionDate);\r\n if (isPopupEditing) {\r\n this._updatedRecAppointment = appointment.source();\r\n this._appointmentPopup.show(newRawAppointment, true);\r\n this._editAppointmentData = rawAppointment\r\n } else {\r\n this._updateAppointment(rawAppointment, appointment.source(), function() {\r\n _this13._appointments.moveAppointmentBack(dragEvent)\r\n }, dragEvent)\r\n }\r\n };\r\n _proto._createRecurrenceException = function(appointment, exceptionDate) {\r\n var result = [];\r\n if (appointment.recurrenceException) {\r\n result.push(appointment.recurrenceException)\r\n }\r\n result.push(this._getSerializedDate(exceptionDate, appointment.startDate, appointment.allDay));\r\n return result.join()\r\n };\r\n _proto._getSerializedDate = function(date, startDate, isAllDay) {\r\n isAllDay && date.setHours(startDate.getHours(), startDate.getMinutes(), startDate.getSeconds(), startDate.getMilliseconds());\r\n return _date_serialization.default.serializeDate(date, UTC_FULL_DATE_FORMAT)\r\n };\r\n _proto._showRecurrenceChangeConfirm = function(isDeleted) {\r\n var message = _message.default.format(isDeleted ? \"dxScheduler-confirmRecurrenceDeleteMessage\" : \"dxScheduler-confirmRecurrenceEditMessage\");\r\n var seriesText = _message.default.format(isDeleted ? \"dxScheduler-confirmRecurrenceDeleteSeries\" : \"dxScheduler-confirmRecurrenceEditSeries\");\r\n var occurrenceText = _message.default.format(isDeleted ? \"dxScheduler-confirmRecurrenceDeleteOccurrence\" : \"dxScheduler-confirmRecurrenceEditOccurrence\");\r\n return (0, _dialog.custom)({\r\n messageHtml: message,\r\n showCloseButton: true,\r\n showTitle: true,\r\n buttons: [{\r\n text: seriesText,\r\n onClick: function() {\r\n return true\r\n }\r\n }, {\r\n text: occurrenceText,\r\n onClick: function() {\r\n return false\r\n }\r\n }]\r\n }).show()\r\n };\r\n _proto._getUpdatedData = function(rawAppointment) {\r\n var _this14 = this;\r\n var getConvertedFromGrid = function(date) {\r\n return date ? _this14.timeZoneCalculator.createDate(date, {\r\n path: \"fromGrid\"\r\n }) : void 0\r\n };\r\n var isValidDate = function(date) {\r\n return !isNaN(new Date(date).getTime())\r\n };\r\n var targetCell = this.getTargetCellData();\r\n var appointment = this.createAppointmentAdapter(rawAppointment);\r\n var cellStartDate = getConvertedFromGrid(targetCell.startDate);\r\n var cellEndDate = getConvertedFromGrid(targetCell.endDate);\r\n var appointmentStartDate = new Date(appointment.startDate);\r\n var appointmentEndDate = new Date(appointment.endDate);\r\n var resultedStartDate = cellStartDate || appointmentStartDate;\r\n if (!isValidDate(appointmentStartDate)) {\r\n appointmentStartDate = resultedStartDate\r\n }\r\n if (!isValidDate(appointmentEndDate)) {\r\n appointmentEndDate = cellEndDate\r\n }\r\n var duration = appointmentEndDate.getTime() - appointmentStartDate.getTime();\r\n var isKeepAppointmentHours = this._workSpace.keepOriginalHours() && isValidDate(appointment.startDate) && isValidDate(cellStartDate);\r\n if (isKeepAppointmentHours) {\r\n var trimTime = _date.default.trimTime;\r\n var startDate = this.timeZoneCalculator.createDate(appointment.startDate, {\r\n path: \"toGrid\"\r\n });\r\n var timeInMs = startDate.getTime() - trimTime(startDate).getTime();\r\n resultedStartDate = new Date(trimTime(targetCell.startDate).getTime() + timeInMs);\r\n resultedStartDate = this.timeZoneCalculator.createDate(resultedStartDate, {\r\n path: \"fromGrid\"\r\n })\r\n }\r\n var result = this.createAppointmentAdapter({});\r\n if (void 0 !== targetCell.allDay) {\r\n result.allDay = targetCell.allDay\r\n }\r\n result.startDate = resultedStartDate;\r\n var resultedEndDate = new Date(resultedStartDate.getTime() + duration);\r\n if (this.appointmentTakesAllDay(rawAppointment) && !result.allDay && this._workSpace.supportAllDayRow()) {\r\n resultedEndDate = this._workSpace.calculateEndDate(resultedStartDate)\r\n }\r\n if (appointment.allDay && !this._workSpace.supportAllDayRow() && !this._workSpace.keepOriginalHours()) {\r\n var dateCopy = new Date(resultedStartDate);\r\n dateCopy.setHours(0);\r\n resultedEndDate = new Date(dateCopy.getTime() + duration);\r\n if (0 !== resultedEndDate.getHours()) {\r\n resultedEndDate.setHours(this._getCurrentViewOption(\"endDayHour\"))\r\n }\r\n }\r\n var timeZoneOffset = _utils.default.getTimezoneOffsetChangeInMs(appointmentStartDate, appointmentEndDate, resultedStartDate, resultedEndDate);\r\n result.endDate = new Date(resultedEndDate.getTime() - timeZoneOffset);\r\n var rawResult = result.source();\r\n this._resourcesManager.setResourcesToItem(rawResult, targetCell.groups);\r\n return rawResult\r\n };\r\n _proto.getTargetedAppointment = function(appointment, element) {\r\n var settings = _utils2.default.dataAccessors.getAppointmentSettings(element);\r\n var info = _utils2.default.dataAccessors.getAppointmentInfo(element);\r\n var appointmentIndex = (0, _renderer.default)(element).data(this._appointments._itemIndexKey());\r\n var adapter = this.createAppointmentAdapter(appointment);\r\n var targetedAdapter = adapter.clone();\r\n if (this._isAgenda() && adapter.isRecurrent) {\r\n var getStartDate = this.getRenderingStrategyInstance().getAppointmentDataCalculator();\r\n var newStartDate = getStartDate((0, _renderer.default)(element), adapter.startDate).startDate;\r\n targetedAdapter.startDate = newStartDate;\r\n targetedAdapter.endDate = new Date(newStartDate.getTime() + adapter.duration)\r\n } else {\r\n if (settings) {\r\n targetedAdapter.startDate = info ? info.sourceAppointment.startDate : adapter.startDate;\r\n targetedAdapter.endDate = info ? info.sourceAppointment.endDate : adapter.endDate\r\n }\r\n }\r\n var rawTargetedAppointment = targetedAdapter.source();\r\n if (element) {\r\n this.setTargetedAppointmentResources(rawTargetedAppointment, element, appointmentIndex)\r\n }\r\n return rawTargetedAppointment\r\n };\r\n _proto.subscribe = function(subject, action) {\r\n this._subscribes[subject] = _uiScheduler5.default[subject] = action\r\n };\r\n _proto.fire = function(subject) {\r\n var callback = this._subscribes[subject];\r\n var args = Array.prototype.slice.call(arguments);\r\n if (!(0, _type.isFunction)(callback)) {\r\n throw _ui.default.Error(\"E1031\", subject)\r\n }\r\n return callback.apply(this, args.slice(1))\r\n };\r\n _proto.getTargetCellData = function() {\r\n return this._workSpace.getDataByDroppableCell()\r\n };\r\n _proto._updateAppointment = function(target, rawAppointment, onUpdatePrevented, dragEvent) {\r\n var updatingOptions = {\r\n newData: rawAppointment,\r\n oldData: (0, _extend.extend)({}, target),\r\n cancel: false\r\n };\r\n var performFailAction = function(err) {\r\n if (onUpdatePrevented) {\r\n onUpdatePrevented.call(this)\r\n }\r\n if (err && \"Error\" === err.name) {\r\n throw err\r\n }\r\n }.bind(this);\r\n this._actions[StoreEventNames.UPDATING](updatingOptions);\r\n if (dragEvent && !(0, _type.isDeferred)(dragEvent.cancel)) {\r\n dragEvent.cancel = new _deferred.Deferred\r\n }\r\n return this._processActionResult(updatingOptions, function(canceled) {\r\n var _this15 = this;\r\n var deferred = new _deferred.Deferred;\r\n if (!canceled) {\r\n this._expandAllDayPanel(rawAppointment);\r\n try {\r\n deferred = this._appointmentModel.update(target, rawAppointment).done(function() {\r\n dragEvent && dragEvent.cancel.resolve(false)\r\n }).always(function(storeAppointment) {\r\n return _this15._onDataPromiseCompleted(StoreEventNames.UPDATED, storeAppointment)\r\n }).fail(function() {\r\n return performFailAction()\r\n })\r\n } catch (err) {\r\n performFailAction(err);\r\n deferred.resolve()\r\n }\r\n } else {\r\n performFailAction();\r\n deferred.resolve()\r\n }\r\n return deferred.promise()\r\n })\r\n };\r\n _proto._processActionResult = function(actionOptions, callback) {\r\n var _this16 = this;\r\n var deferred = new _deferred.Deferred;\r\n var resolveCallback = function(callbackResult) {\r\n (0, _deferred.when)((0, _deferred.fromPromise)(callbackResult)).always(deferred.resolve)\r\n };\r\n if ((0, _type.isPromise)(actionOptions.cancel)) {\r\n (0, _deferred.when)((0, _deferred.fromPromise)(actionOptions.cancel)).always(function(cancel) {\r\n if (!(0, _type.isDefined)(cancel)) {\r\n cancel = \"rejected\" === actionOptions.cancel.state()\r\n }\r\n resolveCallback(callback.call(_this16, cancel))\r\n })\r\n } else {\r\n resolveCallback(callback.call(this, actionOptions.cancel))\r\n }\r\n return deferred.promise()\r\n };\r\n _proto._expandAllDayPanel = function(appointment) {\r\n if (!this._isAllDayExpanded(this.getFilteredItems()) && this.appointmentTakesAllDay(appointment)) {\r\n this._workSpace.option(\"allDayExpanded\", true)\r\n }\r\n };\r\n _proto._onDataPromiseCompleted = function(handlerName, storeAppointment, appointment) {\r\n var args = {\r\n appointmentData: appointment || storeAppointment\r\n };\r\n if (storeAppointment instanceof Error) {\r\n args.error = storeAppointment\r\n } else {\r\n this._appointmentPopup.isVisible() && this._appointmentPopup.hide()\r\n }\r\n this._actions[handlerName](args);\r\n this._fireContentReadyAction()\r\n };\r\n _proto.getAppointmentPopup = function() {\r\n return this._appointmentPopup.getPopup()\r\n };\r\n _proto.getUpdatedAppointment = function() {\r\n return this._appointmentModel.getUpdatedAppointment()\r\n };\r\n _proto.getUpdatedAppointmentKeys = function() {\r\n return this._appointmentModel.getUpdatedAppointmentKeys()\r\n };\r\n _proto.getAppointmentsInstance = function() {\r\n return this._appointments\r\n };\r\n _proto.getResourceManager = function() {\r\n return this._resourcesManager\r\n };\r\n _proto.getLayoutManager = function() {\r\n return this._layoutManager\r\n };\r\n _proto.getRenderingStrategyInstance = function() {\r\n return this._layoutManager.getRenderingStrategyInstance()\r\n };\r\n _proto.getFilteredItems = function() {\r\n return this._filteredItems\r\n };\r\n _proto.getActions = function() {\r\n return this._actions\r\n };\r\n _proto.appointmentTakesAllDay = function(appointment) {\r\n return this._appointmentModel.appointmentTakesAllDay(appointment, this._getCurrentViewOption(\"startDayHour\"), this._getCurrentViewOption(\"endDayHour\"))\r\n };\r\n _proto._getRecurrenceException = function(rawAppointment) {\r\n var appointment = this.createAppointmentAdapter(rawAppointment);\r\n var recurrenceException = appointment.recurrenceException;\r\n if (recurrenceException) {\r\n var exceptions = recurrenceException.split(\",\");\r\n for (var i = 0; i < exceptions.length; i++) {\r\n exceptions[i] = this._convertRecurrenceException(exceptions[i], appointment.startDate)\r\n }\r\n return exceptions.join()\r\n }\r\n return recurrenceException\r\n };\r\n _proto._convertRecurrenceException = function(exceptionString, startDate) {\r\n var _this17 = this;\r\n exceptionString = exceptionString.replace(/\\s/g, \"\");\r\n var getConvertedToTimeZone = function(date) {\r\n return _this17.timeZoneCalculator.createDate(date, {\r\n path: \"toGrid\"\r\n })\r\n };\r\n var exceptionDate = _date_serialization.default.deserializeDate(exceptionString);\r\n var convertedStartDate = getConvertedToTimeZone(startDate);\r\n var convertedExceptionDate = getConvertedToTimeZone(exceptionDate);\r\n convertedExceptionDate = _utils.default.correctRecurrenceExceptionByTimezone(convertedExceptionDate, convertedStartDate, this.option(\"timeZone\"));\r\n exceptionString = _date_serialization.default.serializeDate(convertedExceptionDate, FULL_DATE_FORMAT);\r\n return exceptionString\r\n };\r\n _proto.dayHasAppointment = function(day, rawAppointment, trimTime) {\r\n var _this18 = this;\r\n var getConvertedToTimeZone = function(date) {\r\n return _this18.timeZoneCalculator.createDate(date, {\r\n path: \"toGrid\"\r\n })\r\n };\r\n var appointment = this.createAppointmentAdapter(rawAppointment);\r\n var startDate = new Date(appointment.startDate);\r\n var endDate = new Date(appointment.endDate);\r\n startDate = getConvertedToTimeZone(startDate);\r\n endDate = getConvertedToTimeZone(endDate);\r\n if (day.getTime() === endDate.getTime()) {\r\n return startDate.getTime() === endDate.getTime()\r\n }\r\n if (trimTime) {\r\n day = _date.default.trimTime(day);\r\n startDate = _date.default.trimTime(startDate);\r\n endDate = _date.default.trimTime(endDate)\r\n }\r\n var dayTimeStamp = day.getTime();\r\n var startDateTimeStamp = startDate.getTime();\r\n var endDateTimeStamp = endDate.getTime();\r\n return (0, _array.inArray)(dayTimeStamp, [startDateTimeStamp, endDateTimeStamp]) > -1 || startDateTimeStamp < dayTimeStamp && endDateTimeStamp > dayTimeStamp\r\n };\r\n _proto.setTargetedAppointmentResources = function(rawAppointment, element, appointmentIndex) {\r\n var groups = this._getCurrentViewOption(\"groups\");\r\n if (null !== groups && void 0 !== groups && groups.length) {\r\n var resourcesSetter = this._resourcesManager._dataAccessors.setter;\r\n var workSpace = this._workSpace;\r\n var getGroups;\r\n var setResourceCallback;\r\n if (this._isAgenda()) {\r\n getGroups = function() {\r\n var apptSettings = this.getLayoutManager()._positionMap[appointmentIndex];\r\n return workSpace._getCellGroups(apptSettings[0].groupIndex)\r\n };\r\n setResourceCallback = function(_, group) {\r\n resourcesSetter[group.name](rawAppointment, group.id)\r\n }\r\n } else {\r\n getGroups = function() {\r\n var setting = _utils2.default.dataAccessors.getAppointmentSettings(element) || {};\r\n return workSpace.getCellDataByCoordinates({\r\n left: setting.left,\r\n top: setting.top\r\n }).groups\r\n };\r\n setResourceCallback = function(field, value) {\r\n resourcesSetter[field](rawAppointment, value)\r\n }\r\n }(0, _iterator.each)(getGroups.call(this), setResourceCallback)\r\n }\r\n };\r\n _proto.getStartViewDate = function() {\r\n return this._workSpace.getStartViewDate()\r\n };\r\n _proto.getEndViewDate = function() {\r\n return this._workSpace.getEndViewDate()\r\n };\r\n _proto.showAppointmentPopup = function(rawAppointment, createNewAppointment, rawTargetedAppointment) {\r\n var _this19 = this;\r\n var appointment = this.createAppointmentAdapter(rawTargetedAppointment || rawAppointment);\r\n var newTargetedAppointment = (0, _extend.extend)({}, rawAppointment, rawTargetedAppointment);\r\n this._checkRecurringAppointment(rawAppointment, newTargetedAppointment, appointment.startDate, function() {\r\n if (createNewAppointment || (0, _type.isEmptyObject)(rawAppointment)) {\r\n delete _this19._editAppointmentData;\r\n _this19._editing.allowAdding && _this19._appointmentPopup.show(rawAppointment, true)\r\n } else {\r\n _this19._editAppointmentData = rawAppointment;\r\n _this19._appointmentPopup.show(rawAppointment, _this19._editing.allowUpdating)\r\n }\r\n }, false, true)\r\n };\r\n _proto.hideAppointmentPopup = function(saveChanges) {\r\n if (this._appointmentPopup && this._appointmentPopup.isVisible()) {\r\n saveChanges && this._appointmentPopup.saveChanges();\r\n this._appointmentPopup.hide()\r\n }\r\n };\r\n _proto.showAppointmentTooltip = function(appointment, target, targetedAppointment) {\r\n if (appointment) {\r\n var info = new _dataStructures.AppointmentTooltipInfo(appointment, targetedAppointment, this._appointments._tryGetAppointmentColor(target));\r\n this.showAppointmentTooltipCore(target, [info])\r\n }\r\n };\r\n _proto.showAppointmentTooltipCore = function(target, data, options) {\r\n if (this._appointmentTooltip.isAlreadyShown(target)) {\r\n this.hideAppointmentTooltip()\r\n } else {\r\n this._appointmentTooltip.show(target, data, (0, _extend.extend)(this._getExtraAppointmentTooltipOptions(), options))\r\n }\r\n };\r\n _proto.hideAppointmentTooltip = function() {\r\n this._appointmentTooltip && this._appointmentTooltip.hide()\r\n };\r\n _proto.scrollToTime = function(hours, minutes, date) {\r\n this._workSpace.scrollToTime(hours, minutes, date)\r\n };\r\n _proto.scrollTo = function(date, groups, allDay) {\r\n this._workSpace.scrollTo(date, groups, allDay)\r\n };\r\n _proto.addAppointment = function(rawAppointment) {\r\n var _this20 = this;\r\n var appointment = this.createAppointmentAdapter(rawAppointment);\r\n appointment.text = appointment.text || \"\";\r\n var serializedAppointment = appointment.source(true);\r\n var addingOptions = {\r\n appointmentData: serializedAppointment,\r\n cancel: false\r\n };\r\n this._actions[StoreEventNames.ADDING](addingOptions);\r\n return this._processActionResult(addingOptions, function(canceled) {\r\n if (canceled) {\r\n return (new _deferred.Deferred).resolve()\r\n }\r\n _this20._expandAllDayPanel(serializedAppointment);\r\n return _this20._appointmentModel.add(serializedAppointment).always(function(storeAppointment) {\r\n return _this20._onDataPromiseCompleted(StoreEventNames.ADDED, storeAppointment)\r\n })\r\n })\r\n };\r\n _proto.updateAppointment = function(target, appointment) {\r\n return this._updateAppointment(target, appointment)\r\n };\r\n _proto.deleteAppointment = function(rawAppointment) {\r\n var deletingOptions = {\r\n appointmentData: rawAppointment,\r\n cancel: false\r\n };\r\n this._actions[StoreEventNames.DELETING](deletingOptions);\r\n this._processActionResult(deletingOptions, function(canceled) {\r\n var _this21 = this;\r\n if (!canceled) {\r\n this._appointmentModel.remove(rawAppointment).always(function(storeAppointment) {\r\n return _this21._onDataPromiseCompleted(StoreEventNames.DELETED, storeAppointment, rawAppointment)\r\n })\r\n }\r\n })\r\n };\r\n _proto.focus = function() {\r\n if (this._editAppointmentData) {\r\n this._appointments.focus()\r\n } else {\r\n this._workSpace.focus()\r\n }\r\n };\r\n _proto.getFirstDayOfWeek = function() {\r\n return (0, _type.isDefined)(this.option(\"firstDayOfWeek\")) ? this.option(\"firstDayOfWeek\") : _date2.default.firstDayOfWeekIndex()\r\n };\r\n _proto.createAppointmentAdapter = function(rawAppointment) {\r\n var _this22 = this;\r\n var options = {\r\n getField: function(rawAppointment, property) {\r\n return _this22.fire(\"getField\", property, rawAppointment)\r\n },\r\n setField: function(rawAppointment, property, value) {\r\n return _this22.fire(\"setField\", property, rawAppointment, value)\r\n },\r\n getTimeZoneCalculator: function() {\r\n return _this22.timeZoneCalculator\r\n }\r\n };\r\n return new _appointmentAdapter.default(rawAppointment, options)\r\n };\r\n return Scheduler\r\n}(_ui2.default);\r\nScheduler.include(_data_helper.default);\r\n(0, _component_registrator.default)(\"dxScheduler\", Scheduler);\r\nvar _default = Scheduler;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.appointment_form.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.AppointmentForm = exports.APPOINTMENT_FORM_GROUP_NAMES = void 0;\r\nvar _form = _interopRequireDefault(require(\"../form\"));\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _data_source = _interopRequireDefault(require(\"../../data/data_source\"));\r\nvar _utils = _interopRequireDefault(require(\"./timezones/utils.timezones_data\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nrequire(\"./ui.scheduler.recurrence_editor\");\r\nrequire(\"../text_area\");\r\nrequire(\"../tag_box\");\r\nrequire(\"../switch\");\r\nrequire(\"../select_box\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SCREEN_SIZE_OF_SINGLE_COLUMN = 600;\r\nvar APPOINTMENT_FORM_GROUP_NAMES = {\r\n Main: \"mainGroup\",\r\n Recurrence: \"recurrenceGroup\"\r\n};\r\nexports.APPOINTMENT_FORM_GROUP_NAMES = APPOINTMENT_FORM_GROUP_NAMES;\r\nvar SchedulerAppointmentForm = {\r\n _appointmentForm: {},\r\n _lockDateShiftFlag: false,\r\n _validateAppointmentFormDate: function(editor, value, previousValue) {\r\n var isCurrentDateCorrect = null === value || !!value;\r\n var isPreviousDateCorrect = null === previousValue || !!previousValue;\r\n if (!isCurrentDateCorrect && isPreviousDateCorrect) {\r\n editor.option(\"value\", previousValue)\r\n }\r\n },\r\n _getAllDayStartDate: function(startDate) {\r\n return new Date(new Date(startDate).setHours(0, 0, 0, 0))\r\n },\r\n _getAllDayEndDate: function(startDate) {\r\n return new Date(new Date(startDate).setDate(startDate.getDate() + 1))\r\n },\r\n _getStartDateWithStartHour: function(startDate, startDayHour) {\r\n return new Date(new Date(startDate).setHours(startDayHour))\r\n },\r\n create: function(componentCreator, $container, isReadOnly, formData) {\r\n this._appointmentForm = componentCreator($container, _form.default, {\r\n items: this._editors,\r\n readOnly: isReadOnly,\r\n showValidationSummary: true,\r\n scrollingEnabled: true,\r\n colCount: \"auto\",\r\n colCountByScreen: {\r\n lg: 2,\r\n xs: 1\r\n },\r\n formData: formData,\r\n showColonAfterLabel: false,\r\n labelLocation: \"top\",\r\n screenByWidth: function(width) {\r\n return width < SCREEN_SIZE_OF_SINGLE_COLUMN || \"desktop\" !== _devices.default.current().deviceType ? \"xs\" : \"lg\"\r\n }\r\n });\r\n return this._appointmentForm\r\n },\r\n _dateBoxValueChanged: function(args, dateExpr, isNeedCorrect) {\r\n this._validateAppointmentFormDate(args.component, args.value, args.previousValue);\r\n var value = _date_serialization.default.deserializeDate(args.value);\r\n var previousValue = _date_serialization.default.deserializeDate(args.previousValue);\r\n var dateEditor = this._appointmentForm.getEditor(dateExpr);\r\n var dateValue = _date_serialization.default.deserializeDate(dateEditor.option(\"value\"));\r\n if (!this._appointmentForm._lockDateShiftFlag && dateValue && value && isNeedCorrect(dateValue, value)) {\r\n var duration = previousValue ? dateValue.getTime() - previousValue.getTime() : 0;\r\n dateEditor.option(\"value\", new Date(value.getTime() + duration))\r\n }\r\n },\r\n _createTimezoneEditor: function(timeZoneExpr, secondTimeZoneExpr, visibleIndex, colSpan, isMainTimeZone) {\r\n var _this = this;\r\n var isShow = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : false;\r\n var noTzTitle = _message.default.format(\"dxScheduler-noTimezoneTitle\");\r\n return {\r\n dataField: timeZoneExpr,\r\n editorType: \"dxSelectBox\",\r\n visibleIndex: visibleIndex,\r\n colSpan: colSpan,\r\n label: {\r\n text: \" \"\r\n },\r\n editorOptions: {\r\n displayExpr: \"title\",\r\n valueExpr: \"id\",\r\n placeholder: noTzTitle,\r\n searchEnabled: true,\r\n onValueChanged: function(args) {\r\n var form = _this._appointmentForm;\r\n var secondTimezoneEditor = form.getEditor(secondTimeZoneExpr);\r\n if (isMainTimeZone) {\r\n secondTimezoneEditor.option(\"value\", args.value)\r\n }\r\n }\r\n },\r\n visible: isShow\r\n }\r\n },\r\n _createDateBoxEditor: function(dataExpr, colSpan, firstDayOfWeek, label, callback) {\r\n return {\r\n dataField: dataExpr,\r\n editorType: \"dxDateBox\",\r\n colSpan: colSpan,\r\n label: {\r\n text: _message.default.format(label)\r\n },\r\n validationRules: [{\r\n type: \"required\"\r\n }],\r\n editorOptions: {\r\n width: \"100%\",\r\n calendarOptions: {\r\n firstDayOfWeek: firstDayOfWeek\r\n },\r\n onValueChanged: callback\r\n }\r\n }\r\n },\r\n _createDateBoxItems: function(dataExprs, schedulerInst, allowTimeZoneEditing) {\r\n var _this2 = this;\r\n var colSpan = allowTimeZoneEditing ? 2 : 1;\r\n var firstDayOfWeek = schedulerInst.option(\"firstDayOfWeek\");\r\n return [this._createDateBoxEditor(dataExprs.startDateExpr, colSpan, firstDayOfWeek, \"dxScheduler-editorLabelStartDate\", function(args) {\r\n _this2._dateBoxValueChanged(args, dataExprs.endDateExpr, function(endValue, startValue) {\r\n return endValue < startValue\r\n })\r\n }), this._createTimezoneEditor(dataExprs.startDateTimeZoneExpr, dataExprs.endDateTimeZoneExpr, 1, colSpan, true, allowTimeZoneEditing), this._createDateBoxEditor(dataExprs.endDateExpr, colSpan, firstDayOfWeek, \"dxScheduler-editorLabelEndDate\", function(args) {\r\n _this2._dateBoxValueChanged(args, dataExprs.startDateExpr, function(startValue, endValue) {\r\n return endValue < startValue\r\n })\r\n }), this._createTimezoneEditor(dataExprs.endDateTimeZoneExpr, dataExprs.startDateTimeZoneExpr, 3, colSpan, false, allowTimeZoneEditing)]\r\n },\r\n _createMainItems: function(dataExprs, schedulerInst, triggerResize, changeSize, allowTimeZoneEditing) {\r\n var _this3 = this;\r\n return [{\r\n dataField: dataExprs.textExpr,\r\n editorType: \"dxTextBox\",\r\n colSpan: 2,\r\n label: {\r\n text: _message.default.format(\"dxScheduler-editorLabelTitle\")\r\n }\r\n }, {\r\n itemType: \"group\",\r\n colSpan: 2,\r\n colCountByScreen: {\r\n lg: 2,\r\n xs: 1\r\n },\r\n items: this._createDateBoxItems(dataExprs, schedulerInst, allowTimeZoneEditing)\r\n }, {\r\n itemType: \"group\",\r\n colCountByScreen: {\r\n lg: 3,\r\n xs: 3\r\n },\r\n colSpan: 2,\r\n items: [{\r\n dataField: dataExprs.allDayExpr,\r\n cssClass: \"dx-appointment-form-switch\",\r\n editorType: \"dxSwitch\",\r\n label: {\r\n text: _message.default.format(\"dxScheduler-allDay\"),\r\n location: \"right\"\r\n },\r\n editorOptions: {\r\n onValueChanged: function(args) {\r\n var value = args.value;\r\n var startDateEditor = _this3._appointmentForm.getEditor(dataExprs.startDateExpr);\r\n var endDateEditor = _this3._appointmentForm.getEditor(dataExprs.endDateExpr);\r\n var startDate = _date_serialization.default.deserializeDate(startDateEditor.option(\"value\"));\r\n if (!_this3._appointmentForm._lockDateShiftFlag && startDate) {\r\n if (value) {\r\n var allDayStartDate = _this3._getAllDayStartDate(startDate);\r\n startDateEditor.option(\"value\", allDayStartDate);\r\n endDateEditor.option(\"value\", _this3._getAllDayEndDate(allDayStartDate))\r\n } else {\r\n var startDateWithStartHour = _this3._getStartDateWithStartHour(startDate, schedulerInst.option(\"startDayHour\"));\r\n var endDate = schedulerInst._workSpace.calculateEndDate(startDateWithStartHour);\r\n startDateEditor.option(\"value\", startDateWithStartHour);\r\n endDateEditor.option(\"value\", endDate)\r\n }\r\n }\r\n startDateEditor.option(\"type\", value ? \"date\" : \"datetime\");\r\n endDateEditor.option(\"type\", value ? \"date\" : \"datetime\")\r\n }\r\n }\r\n }, {\r\n editorType: \"dxSwitch\",\r\n dataField: \"repeat\",\r\n cssClass: \"dx-appointment-form-switch\",\r\n name: \"visibilityChanged\",\r\n label: {\r\n text: _message.default.format(\"dxScheduler-editorLabelRecurrence\"),\r\n location: \"right\"\r\n },\r\n editorOptions: {\r\n onValueChanged: function(args) {\r\n var form = _this3._appointmentForm;\r\n var colSpan = args.value ? 1 : 2;\r\n form.itemOption(APPOINTMENT_FORM_GROUP_NAMES.Main, \"colSpan\", colSpan);\r\n form.itemOption(APPOINTMENT_FORM_GROUP_NAMES.Recurrence, \"colSpan\", colSpan);\r\n _this3._updateRecurrenceItemVisibility(dataExprs.recurrenceRuleExpr, args.value, form);\r\n changeSize(args.value);\r\n triggerResize()\r\n }\r\n }\r\n }]\r\n }, {\r\n itemType: \"empty\",\r\n colSpan: 2\r\n }, {\r\n dataField: dataExprs.descriptionExpr,\r\n editorType: \"dxTextArea\",\r\n colSpan: 2,\r\n label: {\r\n text: _message.default.format(\"dxScheduler-editorLabelDescription\")\r\n }\r\n }, {\r\n itemType: \"empty\",\r\n colSpan: 2\r\n }]\r\n },\r\n _updateRecurrenceItemVisibility: function(recurrenceRuleExpr, value, form) {\r\n var _form$getEditor;\r\n form.itemOption(APPOINTMENT_FORM_GROUP_NAMES.Recurrence, \"visible\", value);\r\n !value && form.updateData(recurrenceRuleExpr, \"\");\r\n null === (_form$getEditor = form.getEditor(recurrenceRuleExpr)) || void 0 === _form$getEditor ? void 0 : _form$getEditor.changeValueByVisibility(value)\r\n },\r\n prepareAppointmentFormEditors: function(dataExprs, schedulerInst, triggerResize, changeSize, appointmentData, allowTimeZoneEditing, readOnly) {\r\n var recurrenceEditorVisibility = !!this.getRecurrenceRule(appointmentData, dataExprs);\r\n changeSize(recurrenceEditorVisibility);\r\n this._editors = [{\r\n itemType: \"group\",\r\n name: APPOINTMENT_FORM_GROUP_NAMES.Main,\r\n colCountByScreen: {\r\n lg: 2,\r\n xs: 1\r\n },\r\n colSpan: recurrenceEditorVisibility ? 1 : 2,\r\n items: this._createMainItems(dataExprs, schedulerInst, triggerResize, changeSize, allowTimeZoneEditing)\r\n }, {\r\n itemType: \"group\",\r\n name: APPOINTMENT_FORM_GROUP_NAMES.Recurrence,\r\n visible: recurrenceEditorVisibility,\r\n colSpan: recurrenceEditorVisibility ? 1 : 2,\r\n items: this._createRecurrenceEditor(dataExprs, schedulerInst, readOnly)\r\n }];\r\n return this._editors\r\n },\r\n _createRecurrenceEditor: function(dataExprs, schedulerInst, readOnly) {\r\n return [{\r\n dataField: dataExprs.recurrenceRuleExpr,\r\n editorType: \"dxRecurrenceEditor\",\r\n editorOptions: {\r\n readOnly: readOnly,\r\n firstDayOfWeek: schedulerInst.option(\"firstDayOfWeek\")\r\n },\r\n label: {\r\n text: \" \",\r\n visible: false\r\n }\r\n }]\r\n },\r\n getRecurrenceRule: function(data, dataExprs) {\r\n return data[dataExprs.recurrenceRuleExpr]\r\n },\r\n concatResources: function(resources) {\r\n this._editors[0].items = this._editors[0].items.concat(resources)\r\n },\r\n setEditorsType: function(form, startDateExpr, endDateExpr, allDay) {\r\n var startDateItemPath = \"\".concat(APPOINTMENT_FORM_GROUP_NAMES.Main, \".\").concat(startDateExpr);\r\n var endDateItemPath = \"\".concat(APPOINTMENT_FORM_GROUP_NAMES.Recurrence, \".\").concat(endDateExpr);\r\n var startDateFormItem = form.itemOption(startDateItemPath);\r\n var endDateFormItem = form.itemOption(endDateItemPath);\r\n if (startDateFormItem && endDateFormItem) {\r\n var startDateEditorOptions = startDateFormItem.editorOptions;\r\n var endDateEditorOptions = endDateFormItem.editorOptions;\r\n startDateEditorOptions.type = endDateEditorOptions.type = allDay ? \"date\" : \"datetime\";\r\n form.itemOption(startDateItemPath, \"editorOptions\", startDateEditorOptions);\r\n form.itemOption(endDateItemPath, \"editorOptions\", endDateEditorOptions)\r\n }\r\n },\r\n updateTimeZoneEditorDataSource: function(date, expression) {\r\n var timeZoneDataSource = new _data_source.default({\r\n store: _utils.default.getDisplayedTimeZones(date),\r\n paginate: true,\r\n pageSize: 10\r\n });\r\n var options = {\r\n dataSource: timeZoneDataSource\r\n };\r\n this.setEditorOptions(expression, \"Main\", options)\r\n },\r\n updateRecurrenceEditorStartDate: function(date, expression) {\r\n var options = {\r\n startDate: date\r\n };\r\n this.setEditorOptions(expression, \"Recurrence\", options)\r\n },\r\n setEditorOptions: function(name, groupName, options) {\r\n var editorPath = \"\".concat(APPOINTMENT_FORM_GROUP_NAMES.groupName, \".\").concat(name);\r\n var editor = this._appointmentForm.itemOption(editorPath);\r\n editor && this._appointmentForm.itemOption(editorPath, \"editorOptions\", (0, _extend.extend)({}, editor.editorOptions, options))\r\n },\r\n updateFormData: function(appointmentForm, formData, dataExprs) {\r\n appointmentForm._lockDateShiftFlag = true;\r\n var startDate = new Date(formData[dataExprs.startDateExpr]);\r\n var endDate = new Date(formData[dataExprs.endDateExpr]);\r\n this.updateTimeZoneEditorDataSource(startDate, dataExprs.startDateTimeZoneExpr);\r\n this.updateTimeZoneEditorDataSource(endDate, dataExprs.endDateTimeZoneExpr);\r\n this.updateRecurrenceEditorStartDate(startDate, dataExprs.recurrenceRuleExpr);\r\n appointmentForm.option(\"formData\", formData);\r\n appointmentForm._lockDateShiftFlag = false\r\n }\r\n};\r\nexports.AppointmentForm = SchedulerAppointmentForm;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.appointments.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _element_data = require(\"../../core/element_data\");\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _element = require(\"../../core/element\");\r\nvar _recurrence = require(\"./recurrence\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.publisher_mixin\"));\r\nvar _uiScheduler2 = _interopRequireDefault(require(\"./ui.scheduler.appointment\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _double_click = require(\"../../events/double_click\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"../collection/ui.collection_widget.edit\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _utilsTimeZone = _interopRequireDefault(require(\"./utils.timeZone.js\"));\r\nvar _constants = require(\"./constants\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COMPONENT_CLASS = \"dx-scheduler-scrollable-appointments\";\r\nvar APPOINTMENT_ITEM_CLASS = \"dx-scheduler-appointment\";\r\nvar APPOINTMENT_TITLE_CLASS = \"dx-scheduler-appointment-title\";\r\nvar APPOINTMENT_CONTENT_DETAILS_CLASS = \"dx-scheduler-appointment-content-details\";\r\nvar APPOINTMENT_DATE_CLASS = \"dx-scheduler-appointment-content-date\";\r\nvar RECURRING_ICON_CLASS = \"dx-scheduler-appointment-recurrence-icon\";\r\nvar ALL_DAY_CONTENT_CLASS = \"dx-scheduler-appointment-content-allday\";\r\nvar DBLCLICK_EVENT_NAME = (0, _index.addNamespace)(_double_click.name, \"dxSchedulerAppointment\");\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar SchedulerAppointments = _uiCollection_widget.default.inherit({\r\n ctor: function(element, options) {\r\n this.callBase(element, options)\r\n },\r\n _supportedKeys: function() {\r\n var parent = this.callBase();\r\n var tabHandler = function(e) {\r\n var appointments = this._getAccessAppointments();\r\n var focusedAppointment = appointments.filter(\".dx-state-focused\");\r\n var index = focusedAppointment.data(_constants.APPOINTMENT_SETTINGS_KEY).sortedIndex;\r\n var lastIndex = appointments.length - 1;\r\n if (index > 0 && e.shiftKey || index < lastIndex && !e.shiftKey) {\r\n e.preventDefault();\r\n e.shiftKey ? index-- : index++;\r\n var $nextAppointment = this._getAppointmentByIndex(index);\r\n this._resetTabIndex($nextAppointment);\r\n _events_engine.default.trigger($nextAppointment, \"focus\")\r\n }\r\n };\r\n return (0, _extend.extend)(parent, {\r\n escape: function() {\r\n this.moveAppointmentBack();\r\n this._escPressed = true\r\n }.bind(this),\r\n del: function(e) {\r\n if (this.option(\"allowDelete\")) {\r\n e.preventDefault();\r\n var data = this._getItemData(e.target);\r\n this.notifyObserver(\"onDeleteButtonPress\", {\r\n data: data,\r\n target: e.target\r\n })\r\n }\r\n }.bind(this),\r\n tab: tabHandler\r\n })\r\n },\r\n _getAppointmentByIndex: function(sortedIndex) {\r\n var appointments = this._getAccessAppointments();\r\n return appointments.filter(function(_, $item) {\r\n return (0, _element_data.data)($item, _constants.APPOINTMENT_SETTINGS_KEY).sortedIndex === sortedIndex\r\n }).eq(0)\r\n },\r\n _getAccessAppointments: function() {\r\n return this._itemElements().filter(\":visible\").not(\".dx-state-disabled\")\r\n },\r\n _resetTabIndex: function($appointment) {\r\n this._focusTarget().attr(\"tabIndex\", -1);\r\n $appointment.attr(\"tabIndex\", this.option(\"tabIndex\"))\r\n },\r\n _moveFocus: _common.noop,\r\n _focusTarget: function() {\r\n return this._itemElements()\r\n },\r\n _renderFocusTarget: function() {\r\n var $appointment = this._getAppointmentByIndex(0);\r\n this._resetTabIndex($appointment)\r\n },\r\n _focusInHandler: function(e) {\r\n this.callBase.apply(this, arguments);\r\n this._$currentAppointment = (0, _renderer.default)(e.target);\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)((0, _renderer.default)(e.target)))\r\n },\r\n _focusOutHandler: function() {\r\n var $appointment = this._getAppointmentByIndex(0);\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($appointment));\r\n this.callBase.apply(this, arguments)\r\n },\r\n _eventBindingTarget: function() {\r\n return this._itemContainer()\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n noDataText: null,\r\n activeStateEnabled: true,\r\n hoverStateEnabled: true,\r\n tabIndex: 0,\r\n fixedContainer: null,\r\n allDayContainer: null,\r\n allowDrag: true,\r\n allowResize: true,\r\n allowAllDayResize: true,\r\n onAppointmentDblClick: null,\r\n _collectorOffset: 0\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"items\":\r\n this._cleanFocusState();\r\n this._clearDropDownItems();\r\n this._clearDropDownItemsElements();\r\n this._repaintAppointments(args.value);\r\n this._renderDropDownAppointments();\r\n this._attachAppointmentsEvents();\r\n break;\r\n case \"fixedContainer\":\r\n case \"allDayContainer\":\r\n case \"onAppointmentDblClick\":\r\n break;\r\n case \"allowDrag\":\r\n case \"allowResize\":\r\n case \"allowAllDayResize\":\r\n this._invalidate();\r\n break;\r\n case \"focusedElement\":\r\n this._resetTabIndex((0, _renderer.default)(args.value));\r\n this.callBase(args);\r\n break;\r\n case \"allowDelete\":\r\n break;\r\n case \"focusStateEnabled\":\r\n this._clearDropDownItemsElements();\r\n this._renderDropDownAppointments();\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _isAllDayAppointment: function(appointment) {\r\n return appointment.settings.length && appointment.settings[0].allDay || false\r\n },\r\n _isRepaintAppointment: function(appointment) {\r\n return !(0, _type.isDefined)(appointment.needRepaint) || true === appointment.needRepaint\r\n },\r\n _isRepaintAll: function(appointments) {\r\n if (this.invoke(\"isVirtualScrolling\")) {\r\n return true\r\n }\r\n if (this.invoke(\"isCurrentViewAgenda\")) {\r\n return true\r\n }\r\n for (var i = 0; i < appointments.length; i++) {\r\n var appointment = appointments[i];\r\n if (!this._isRepaintAppointment(appointment)) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n _applyFragment: function(fragment, allDay) {\r\n if (fragment.children().length > 0) {\r\n this._getAppointmentContainer(allDay).append(fragment)\r\n }\r\n },\r\n _onEachAppointment: function(appointment, index, container, isRepaintAll) {\r\n var _this = this;\r\n var repaintAppointment = function() {\r\n appointment.needRepaint = false;\r\n _this._clearItem(appointment);\r\n _this._renderItem(index, appointment, container)\r\n };\r\n if (true === (null === appointment || void 0 === appointment ? void 0 : appointment.needRemove)) {\r\n this._clearItem(appointment)\r\n } else {\r\n if (isRepaintAll || this._isRepaintAppointment(appointment)) {\r\n repaintAppointment()\r\n }\r\n }\r\n },\r\n _repaintAppointments: function(appointments) {\r\n var _this2 = this;\r\n this._renderByFragments(function($commonFragment, $allDayFragment) {\r\n var isRepaintAll = _this2._isRepaintAll(appointments);\r\n if (isRepaintAll) {\r\n _this2._getAppointmentContainer(true).html(\"\");\r\n _this2._getAppointmentContainer(false).html(\"\")\r\n }!appointments.length && _this2._cleanItemContainer();\r\n appointments.forEach(function(appointment, index) {\r\n var container = _this2._isAllDayAppointment(appointment) ? $allDayFragment : $commonFragment;\r\n _this2._onEachAppointment(appointment, index, container, isRepaintAll)\r\n })\r\n })\r\n },\r\n _renderByFragments: function(renderFunction) {\r\n var isVirtualScrolling = this.invoke(\"isVirtualScrolling\");\r\n if (isVirtualScrolling) {\r\n var $commonFragment = (0, _renderer.default)(_dom_adapter.default.createDocumentFragment());\r\n var $allDayFragment = (0, _renderer.default)(_dom_adapter.default.createDocumentFragment());\r\n renderFunction($commonFragment, $allDayFragment);\r\n this._applyFragment($commonFragment, false);\r\n this._applyFragment($allDayFragment, true)\r\n } else {\r\n renderFunction(this._getAppointmentContainer(false), this._getAppointmentContainer(true))\r\n }\r\n },\r\n _attachAppointmentsEvents: function() {\r\n this._attachClickEvent();\r\n this._attachHoldEvent();\r\n this._attachContextMenuEvent();\r\n this._attachAppointmentDblClick();\r\n this._renderFocusState();\r\n this._attachFeedbackEvents();\r\n this._attachHoverEvents()\r\n },\r\n _clearItem: function(item) {\r\n var $items = this._findItemElementByItem(item.itemData);\r\n if (!$items.length) {\r\n return\r\n }(0, _iterator.each)($items, function(_, $item) {\r\n $item.detach();\r\n $item.remove()\r\n })\r\n },\r\n _clearDropDownItems: function() {\r\n this._virtualAppointments = {}\r\n },\r\n _clearDropDownItemsElements: function() {\r\n this.invoke(\"clearCompactAppointments\")\r\n },\r\n _findItemElementByItem: function(item) {\r\n var result = [];\r\n var that = this;\r\n this.itemElements().each(function() {\r\n var $item = (0, _renderer.default)(this);\r\n if ($item.data(that._itemDataKey()) === item) {\r\n result.push($item)\r\n }\r\n });\r\n return result\r\n },\r\n _itemClass: function() {\r\n return APPOINTMENT_ITEM_CLASS\r\n },\r\n _itemContainer: function() {\r\n var $container = this.callBase();\r\n var $result = $container;\r\n var $allDayContainer = this.option(\"allDayContainer\");\r\n if ($allDayContainer) {\r\n $result = $container.add($allDayContainer)\r\n }\r\n return $result\r\n },\r\n _cleanItemContainer: function() {\r\n this.callBase();\r\n var $allDayContainer = this.option(\"allDayContainer\");\r\n if ($allDayContainer) {\r\n $allDayContainer.empty()\r\n }\r\n this._virtualAppointments = {}\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n delete this._$currentAppointment;\r\n delete this._initialSize;\r\n delete this._initialCoordinates\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(COMPONENT_CLASS);\r\n this._preventSingleAppointmentClick = false\r\n },\r\n _renderAppointmentTemplate: function($container, data, model) {\r\n var formatText = this.invoke(\"getTextAndFormatDate\", model.appointmentData, this._currentAppointmentSettings.agendaSettings || model.targetedAppointmentData, \"TIME\");\r\n (0, _renderer.default)(\"
\").text(formatText.text).addClass(APPOINTMENT_TITLE_CLASS).appendTo($container);\r\n if ((0, _type.isPlainObject)(data)) {\r\n if (data.html) {\r\n $container.html(data.html)\r\n }\r\n }\r\n var $contentDetails = (0, _renderer.default)(\"
\").addClass(APPOINTMENT_CONTENT_DETAILS_CLASS);\r\n (0, _renderer.default)(\"
\").addClass(APPOINTMENT_DATE_CLASS).text(formatText.formatDate).appendTo($contentDetails);\r\n $contentDetails.appendTo($container);\r\n if (data.recurrenceRule) {\r\n (0, _renderer.default)(\"\").addClass(RECURRING_ICON_CLASS + \" dx-icon-repeat\").appendTo($container)\r\n }\r\n if (data.allDay) {\r\n (0, _renderer.default)(\"
\").text(\" \" + _message.default.format(\"dxScheduler-allDay\") + \": \").addClass(ALL_DAY_CONTENT_CLASS).prependTo($contentDetails)\r\n }\r\n },\r\n _executeItemRenderAction: function(index, itemData, itemElement) {\r\n var action = this._getItemRenderAction();\r\n if (action) {\r\n action(this.invoke(\"mapAppointmentFields\", {\r\n itemData: itemData,\r\n itemElement: itemElement\r\n }))\r\n }\r\n delete this._currentAppointmentSettings\r\n },\r\n _itemClickHandler: function(e) {\r\n this.callBase(e, {}, {\r\n afterExecute: function(e) {\r\n this._processItemClick(e.args[0].event)\r\n }.bind(this)\r\n })\r\n },\r\n _processItemClick: function(e) {\r\n var $target = (0, _renderer.default)(e.currentTarget);\r\n var data = this._getItemData($target);\r\n if (\"keydown\" === e.type || (0, _index.isFakeClickEvent)(e)) {\r\n this.notifyObserver(\"showEditAppointmentPopup\", {\r\n data: data,\r\n target: $target\r\n });\r\n return\r\n }\r\n this._appointmentClickTimeout = setTimeout(function() {\r\n if (!this._preventSingleAppointmentClick && _dom_adapter.default.getBody().contains($target[0])) {\r\n this.notifyObserver(\"showAppointmentTooltip\", {\r\n data: data,\r\n target: $target\r\n })\r\n }\r\n this._preventSingleAppointmentClick = false\r\n }.bind(this), 300)\r\n },\r\n _extendActionArgs: function() {\r\n var args = this.callBase.apply(this, arguments);\r\n return this.invoke(\"mapAppointmentFields\", args)\r\n },\r\n _render: function() {\r\n this.callBase.apply(this, arguments);\r\n this._attachAppointmentDblClick()\r\n },\r\n _attachAppointmentDblClick: function() {\r\n var that = this;\r\n var itemSelector = that._itemSelector();\r\n var itemContainer = this._itemContainer();\r\n _events_engine.default.off(itemContainer, DBLCLICK_EVENT_NAME, itemSelector);\r\n _events_engine.default.on(itemContainer, DBLCLICK_EVENT_NAME, itemSelector, function(e) {\r\n that._itemDXEventHandler(e, \"onAppointmentDblClick\", {}, {\r\n afterExecute: function(e) {\r\n that._dblClickHandler(e.args[0].event)\r\n }\r\n })\r\n })\r\n },\r\n _dblClickHandler: function(e) {\r\n var $targetAppointment = (0, _renderer.default)(e.currentTarget);\r\n var appointmentData = this._getItemData($targetAppointment);\r\n clearTimeout(this._appointmentClickTimeout);\r\n this._preventSingleAppointmentClick = true;\r\n this.notifyObserver(\"showEditAppointmentPopup\", {\r\n data: appointmentData,\r\n target: $targetAppointment\r\n })\r\n },\r\n _renderItem: function(index, item, container) {\r\n var itemData = item.itemData;\r\n var $items = [];\r\n for (var i = 0; i < item.settings.length; i++) {\r\n var setting = item.settings[i];\r\n this._currentAppointmentSettings = setting;\r\n var $item = this.callBase(index, itemData, container);\r\n $item.data(_constants.APPOINTMENT_SETTINGS_KEY, setting);\r\n $items.push($item)\r\n }\r\n return $items\r\n },\r\n _getItemContent: function($itemFrame) {\r\n $itemFrame.data(_constants.APPOINTMENT_SETTINGS_KEY, this._currentAppointmentSettings);\r\n var $itemContent = this.callBase($itemFrame);\r\n return $itemContent\r\n },\r\n _createItemByTemplate: function(itemTemplate, renderArgs) {\r\n var itemData = renderArgs.itemData,\r\n container = renderArgs.container,\r\n index = renderArgs.index;\r\n return itemTemplate.render({\r\n model: {\r\n appointmentData: itemData,\r\n targetedAppointmentData: this.invoke(\"getTargetedAppointmentData\", itemData, (0, _renderer.default)(container).parent())\r\n },\r\n container: container,\r\n index: index\r\n })\r\n },\r\n _getAppointmentContainer: function(allDay) {\r\n var $allDayContainer = this.option(\"allDayContainer\");\r\n var $container = this.itemsContainer().not($allDayContainer);\r\n if (allDay && $allDayContainer) {\r\n $container = $allDayContainer\r\n }\r\n return $container\r\n },\r\n _postprocessRenderItem: function(args) {\r\n this._renderAppointment(args.itemElement, this._currentAppointmentSettings)\r\n },\r\n _renderAppointment: function($appointment, settings) {\r\n $appointment.data(_constants.APPOINTMENT_SETTINGS_KEY, settings);\r\n this._applyResourceDataAttr($appointment);\r\n var data = this._getItemData($appointment);\r\n var geometry = this.invoke(\"getAppointmentGeometry\", settings);\r\n var allowResize = this.option(\"allowResize\") && (!(0, _type.isDefined)(settings.skipResizing) || (0, _type.isString)(settings.skipResizing));\r\n var allowDrag = this.option(\"allowDrag\");\r\n var allDay = settings.allDay;\r\n this.invoke(\"setCellDataCacheAlias\", this._currentAppointmentSettings, geometry);\r\n var deferredColor = this._getAppointmentColor($appointment, settings.groupIndex);\r\n if (settings.virtual) {\r\n this._processVirtualAppointment(settings, $appointment, data, deferredColor)\r\n } else {\r\n var info = settings.info;\r\n this._createComponent($appointment, _uiScheduler2.default, {\r\n observer: this.option(\"observer\"),\r\n data: data,\r\n geometry: geometry,\r\n direction: settings.direction || \"vertical\",\r\n allowResize: allowResize,\r\n allowDrag: allowDrag,\r\n allDay: allDay,\r\n reduced: settings.appointmentReduced,\r\n isCompact: settings.isCompact,\r\n startDate: new Date(null === info || void 0 === info ? void 0 : info.appointment.startDate),\r\n cellWidth: this.invoke(\"getCellWidth\"),\r\n cellHeight: this.invoke(\"getCellHeight\"),\r\n resizableConfig: this._resizableConfig(data, settings)\r\n });\r\n deferredColor.done(function(color) {\r\n if (color) {\r\n $appointment.css(\"backgroundColor\", color)\r\n }\r\n })\r\n }\r\n },\r\n _applyResourceDataAttr: function($appointment) {\r\n var resources = this.invoke(\"getResourcesFromItem\", this._getItemData($appointment));\r\n if (resources) {\r\n (0, _iterator.each)(resources, function(name, values) {\r\n var attr = \"data-\" + (0, _common.normalizeKey)(name.toLowerCase()) + \"-\";\r\n for (var i = 0; i < values.length; i++) {\r\n $appointment.attr(attr + (0, _common.normalizeKey)(values[i]), true)\r\n }\r\n })\r\n }\r\n },\r\n _resizableConfig: function(appointmentData, itemSetting) {\r\n return {\r\n area: this._calculateResizableArea(itemSetting, appointmentData),\r\n onResizeStart: function(e) {\r\n this._$currentAppointment = (0, _renderer.default)(e.element);\r\n if (this.invoke(\"needRecalculateResizableArea\")) {\r\n var updatedArea = this._calculateResizableArea(this._$currentAppointment.data(_constants.APPOINTMENT_SETTINGS_KEY), this._$currentAppointment.data(\"dxItemData\"));\r\n e.component.option(\"area\", updatedArea);\r\n e.component._renderDragOffsets(e.event)\r\n }\r\n this._initialSize = {\r\n width: e.width,\r\n height: e.height\r\n };\r\n this._initialCoordinates = (0, _translator.locate)(this._$currentAppointment)\r\n }.bind(this),\r\n onResizeEnd: function(e) {\r\n if (this._escPressed) {\r\n e.event.cancel = true;\r\n return\r\n }\r\n this._resizeEndHandler(e)\r\n }.bind(this)\r\n }\r\n },\r\n _calculateResizableArea: function(itemSetting, appointmentData) {\r\n var area = this.$element().closest(\".dx-scrollable-content\");\r\n return this.invoke(\"getResizableAppointmentArea\", {\r\n coordinates: {\r\n left: itemSetting.left,\r\n top: 0,\r\n groupIndex: itemSetting.groupIndex\r\n },\r\n allDay: itemSetting.allDay\r\n }) || area\r\n },\r\n _resizeEndHandler: function(e) {\r\n var scheduler = this.option(\"observer\");\r\n var $element = (0, _renderer.default)(e.element);\r\n var _$element$data = $element.data(\"dxAppointmentSettings\"),\r\n info = _$element$data.info;\r\n var sourceAppointment = this._getItemData($element);\r\n var modifiedAppointmentAdapter = scheduler.createAppointmentAdapter(sourceAppointment).clone();\r\n var startDate = this._getEndResizeAppointmentStartDate(e, sourceAppointment, info.appointment);\r\n var endDate = info.appointment.endDate;\r\n var dateRange = this._getDateRange(e, startDate, endDate);\r\n modifiedAppointmentAdapter.startDate = new Date(dateRange[0]);\r\n modifiedAppointmentAdapter.endDate = new Date(dateRange[1]);\r\n this.notifyObserver(\"updateAppointmentAfterResize\", {\r\n target: sourceAppointment,\r\n data: modifiedAppointmentAdapter.clone({\r\n pathTimeZone: \"fromGrid\"\r\n }).source(),\r\n $appointment: $element\r\n })\r\n },\r\n _getEndResizeAppointmentStartDate: function(e, rawAppointment, appointmentInfo) {\r\n var scheduler = this.option(\"observer\");\r\n var appointmentAdapter = scheduler.createAppointmentAdapter(rawAppointment);\r\n var startDate = appointmentInfo.startDate;\r\n var recurrenceProcessor = (0, _recurrence.getRecurrenceProcessor)();\r\n var recurrenceRule = appointmentAdapter.recurrenceRule,\r\n startDateTimeZone = appointmentAdapter.startDateTimeZone;\r\n var isAllDay = this.invoke(\"isAllDay\", rawAppointment);\r\n var isRecurrent = recurrenceProcessor.isValidRecurrenceRule(recurrenceRule);\r\n if (!e.handles.top && !isRecurrent && !isAllDay) {\r\n startDate = scheduler.timeZoneCalculator.createDate(appointmentAdapter.startDate, {\r\n appointmentTimeZone: startDateTimeZone,\r\n path: \"toGrid\"\r\n })\r\n }\r\n return startDate\r\n },\r\n _getDateRange: function(e, startDate, endDate) {\r\n var itemData = this._getItemData(e.element);\r\n var deltaTime = this.invoke(\"getDeltaTime\", e, this._initialSize, itemData);\r\n var renderingStrategyDirection = this.invoke(\"getRenderingStrategyDirection\");\r\n var isStartDateChanged = false;\r\n var isAllDay = this.invoke(\"isAllDay\", itemData);\r\n var needCorrectDates = this.invoke(\"needCorrectAppointmentDates\") && !isAllDay;\r\n var startTime;\r\n var endTime;\r\n if (\"vertical\" !== renderingStrategyDirection || isAllDay) {\r\n isStartDateChanged = this.option(\"rtlEnabled\") ? e.handles.right : e.handles.left\r\n } else {\r\n isStartDateChanged = e.handles.top\r\n }\r\n if (isStartDateChanged) {\r\n startTime = needCorrectDates ? this._correctStartDateByDelta(startDate, deltaTime) : startDate.getTime() - deltaTime;\r\n startTime += _utilsTimeZone.default.getTimezoneOffsetChangeInMs(startDate, endDate, startTime, endDate);\r\n endTime = endDate.getTime()\r\n } else {\r\n startTime = startDate.getTime();\r\n endTime = needCorrectDates ? this._correctEndDateByDelta(endDate, deltaTime) : endDate.getTime() + deltaTime;\r\n endTime -= _utilsTimeZone.default.getTimezoneOffsetChangeInMs(startDate, endDate, startDate, endTime)\r\n }\r\n return [startTime, endTime]\r\n },\r\n _correctEndDateByDelta: function(endDate, deltaTime) {\r\n var endDayHour = this.invoke(\"getEndDayHour\");\r\n var startDayHour = this.invoke(\"getStartDayHour\");\r\n var result = endDate.getTime() + deltaTime;\r\n var visibleDayDuration = (endDayHour - startDayHour) * toMs(\"hour\");\r\n var daysCount = deltaTime > 0 ? Math.ceil(deltaTime / visibleDayDuration) : Math.floor(deltaTime / visibleDayDuration);\r\n var maxDate = new Date(endDate);\r\n var minDate = new Date(endDate);\r\n minDate.setHours(startDayHour, 0, 0, 0);\r\n maxDate.setHours(endDayHour, 0, 0, 0);\r\n if (result > maxDate.getTime() || result <= minDate.getTime()) {\r\n var tailOfCurrentDay = maxDate.getTime() - endDate.getTime();\r\n var tailOfPrevDays = deltaTime - tailOfCurrentDay;\r\n var lastDay = new Date(endDate.setDate(endDate.getDate() + daysCount));\r\n lastDay.setHours(startDayHour, 0, 0, 0);\r\n result = lastDay.getTime() + tailOfPrevDays - visibleDayDuration * (daysCount - 1)\r\n }\r\n return result\r\n },\r\n _correctStartDateByDelta: function(startDate, deltaTime) {\r\n var endDayHour = this.invoke(\"getEndDayHour\");\r\n var startDayHour = this.invoke(\"getStartDayHour\");\r\n var result = startDate.getTime() - deltaTime;\r\n var visibleDayDuration = (endDayHour - startDayHour) * toMs(\"hour\");\r\n var daysCount = deltaTime > 0 ? Math.ceil(deltaTime / visibleDayDuration) : Math.floor(deltaTime / visibleDayDuration);\r\n var maxDate = new Date(startDate);\r\n var minDate = new Date(startDate);\r\n minDate.setHours(startDayHour, 0, 0, 0);\r\n maxDate.setHours(endDayHour, 0, 0, 0);\r\n if (result < minDate.getTime() || result >= maxDate.getTime()) {\r\n var tailOfCurrentDay = startDate.getTime() - minDate.getTime();\r\n var tailOfPrevDays = deltaTime - tailOfCurrentDay;\r\n var firstDay = new Date(startDate.setDate(startDate.getDate() - daysCount));\r\n firstDay.setHours(endDayHour, 0, 0, 0);\r\n result = firstDay.getTime() - tailOfPrevDays + visibleDayDuration * (daysCount - 1)\r\n }\r\n return result\r\n },\r\n _tryGetAppointmentColor: function(appointment) {\r\n var settings = (0, _renderer.default)(appointment).data(_constants.APPOINTMENT_SETTINGS_KEY);\r\n if (!settings) {\r\n return\r\n }\r\n return this._getAppointmentColor(appointment, settings.groupIndex)\r\n },\r\n _getAppointmentColor: function($appointment, groupIndex) {\r\n var res = new _deferred.Deferred;\r\n var response = this.invoke(\"getAppointmentColor\", {\r\n itemData: this._getItemData($appointment),\r\n groupIndex: groupIndex\r\n });\r\n response.done(function(color) {\r\n return res.resolve(color)\r\n });\r\n return res.promise()\r\n },\r\n _calculateBoundOffset: function() {\r\n return this.invoke(\"getBoundOffset\")\r\n },\r\n _virtualAppointments: {},\r\n _processVirtualAppointment: function(appointmentSetting, $appointment, appointmentData, color) {\r\n var virtualAppointment = appointmentSetting.virtual;\r\n var virtualGroupIndex = virtualAppointment.index;\r\n if (!(0, _type.isDefined)(this._virtualAppointments[virtualGroupIndex])) {\r\n this._virtualAppointments[virtualGroupIndex] = {\r\n coordinates: {\r\n top: virtualAppointment.top,\r\n left: virtualAppointment.left\r\n },\r\n items: {\r\n data: [],\r\n colors: [],\r\n settings: []\r\n },\r\n isAllDay: virtualAppointment.isAllDay ? true : false,\r\n buttonColor: color\r\n }\r\n }\r\n appointmentSetting.targetedAppointmentData = this.invoke(\"getTargetedAppointmentData\", appointmentData, $appointment);\r\n this._virtualAppointments[virtualGroupIndex].items.settings.push(appointmentSetting);\r\n this._virtualAppointments[virtualGroupIndex].items.data.push(appointmentData);\r\n this._virtualAppointments[virtualGroupIndex].items.colors.push(color);\r\n $appointment.remove()\r\n },\r\n _renderContentImpl: function() {\r\n this.callBase();\r\n this._renderDropDownAppointments()\r\n },\r\n _renderDropDownAppointments: function() {\r\n var _this3 = this;\r\n this._renderByFragments(function($commonFragment, $allDayFragment) {\r\n (0, _iterator.each)(_this3._virtualAppointments, function(groupIndex) {\r\n var virtualGroup = this._virtualAppointments[groupIndex];\r\n var virtualItems = virtualGroup.items;\r\n var virtualCoordinates = virtualGroup.coordinates;\r\n var $fragment = virtualGroup.isAllDay ? $allDayFragment : $commonFragment;\r\n var left = virtualCoordinates.left;\r\n var buttonWidth = this.invoke(\"getDropDownAppointmentWidth\", virtualGroup.isAllDay);\r\n var buttonHeight = this.invoke(\"getDropDownAppointmentHeight\");\r\n var rtlOffset = this.option(\"rtlEnabled\") ? buttonWidth : 0;\r\n this.notifyObserver(\"renderCompactAppointments\", {\r\n $container: $fragment,\r\n coordinates: {\r\n top: virtualCoordinates.top,\r\n left: left + rtlOffset\r\n },\r\n items: virtualItems,\r\n buttonColor: virtualGroup.buttonColor,\r\n width: buttonWidth - this.option(\"_collectorOffset\"),\r\n height: buttonHeight,\r\n onAppointmentClick: this.option(\"onItemClick\"),\r\n allowDrag: this.option(\"allowDrag\"),\r\n cellWidth: this.invoke(\"getCellWidth\"),\r\n isCompact: this.invoke(\"isAdaptive\") || this._isGroupCompact(virtualGroup),\r\n applyOffset: !virtualGroup.isAllDay && this.invoke(\"isApplyCompactAppointmentOffset\")\r\n })\r\n }.bind(_this3))\r\n })\r\n },\r\n _isGroupCompact: function(virtualGroup) {\r\n return !virtualGroup.isAllDay && this.invoke(\"supportCompactDropDownAppointments\")\r\n },\r\n _sortAppointmentsByStartDate: function(appointments) {\r\n appointments.sort(function(a, b) {\r\n var result = 0;\r\n var firstDate = new Date(this.invoke(\"getField\", \"startDate\", a.settings || a)).getTime();\r\n var secondDate = new Date(this.invoke(\"getField\", \"startDate\", b.settings || b)).getTime();\r\n if (firstDate < secondDate) {\r\n result = -1\r\n }\r\n if (firstDate > secondDate) {\r\n result = 1\r\n }\r\n return result\r\n }.bind(this))\r\n },\r\n _processRecurrenceAppointment: function(appointment, index, skipLongAppointments) {\r\n var recurrenceRule = this.invoke(\"getField\", \"recurrenceRule\", appointment);\r\n var result = {\r\n parts: [],\r\n indexes: []\r\n };\r\n if (recurrenceRule) {\r\n var dates = appointment.settings || appointment;\r\n var startDate = new Date(this.invoke(\"getField\", \"startDate\", dates));\r\n var endDate = new Date(this.invoke(\"getField\", \"endDate\", dates));\r\n var appointmentDuration = endDate.getTime() - startDate.getTime();\r\n var recurrenceException = this.invoke(\"getField\", \"recurrenceException\", appointment);\r\n var startViewDate = this.invoke(\"getStartViewDate\");\r\n var endViewDate = this.invoke(\"getEndViewDate\");\r\n var recurrentDates = (0, _recurrence.getRecurrenceProcessor)().generateDates({\r\n rule: recurrenceRule,\r\n exception: recurrenceException,\r\n start: startDate,\r\n end: endDate,\r\n min: startViewDate,\r\n max: endViewDate\r\n });\r\n var recurrentDateCount = appointment.settings ? 1 : recurrentDates.length;\r\n for (var i = 0; i < recurrentDateCount; i++) {\r\n var appointmentPart = (0, _extend.extend)({}, appointment, true);\r\n if (recurrentDates[i]) {\r\n var appointmentSettings = this._applyStartDateToObj(recurrentDates[i], {});\r\n this._applyEndDateToObj(new Date(recurrentDates[i].getTime() + appointmentDuration), appointmentSettings);\r\n appointmentPart.settings = appointmentSettings\r\n } else {\r\n appointmentPart.settings = dates\r\n }\r\n result.parts.push(appointmentPart);\r\n if (!skipLongAppointments) {\r\n this._processLongAppointment(appointmentPart, result)\r\n }\r\n }\r\n result.indexes.push(index)\r\n }\r\n return result\r\n },\r\n _processLongAppointment: function(appointment, result) {\r\n var parts = this.splitAppointmentByDay(appointment);\r\n var partCount = parts.length;\r\n var endViewDate = this.invoke(\"getEndViewDate\").getTime();\r\n var startViewDate = this.invoke(\"getStartViewDate\").getTime();\r\n var timeZoneCalculator = this.invoke(\"getTimeZoneCalculator\");\r\n result = result || {\r\n parts: []\r\n };\r\n if (partCount > 1) {\r\n (0, _extend.extend)(appointment, parts[0]);\r\n for (var i = 1; i < partCount; i++) {\r\n var startDate = this.invoke(\"getField\", \"startDate\", parts[i].settings).getTime();\r\n startDate = timeZoneCalculator.createDate(startDate, {\r\n path: \"toGrid\"\r\n });\r\n if (startDate < endViewDate && startDate > startViewDate) {\r\n result.parts.push(parts[i])\r\n }\r\n }\r\n }\r\n return result\r\n },\r\n _reduceRecurrenceAppointments: function(recurrenceIndexes, appointments) {\r\n (0, _iterator.each)(recurrenceIndexes, function(i, index) {\r\n appointments.splice(index - i, 1)\r\n })\r\n },\r\n _combineAppointments: function(appointments, additionalAppointments) {\r\n if (additionalAppointments.length) {\r\n (0, _array.merge)(appointments, additionalAppointments)\r\n }\r\n this._sortAppointmentsByStartDate(appointments)\r\n },\r\n _applyStartDateToObj: function(startDate, obj) {\r\n this.invoke(\"setField\", \"startDate\", obj, startDate);\r\n return obj\r\n },\r\n _applyEndDateToObj: function(endDate, obj) {\r\n this.invoke(\"setField\", \"endDate\", obj, endDate);\r\n return obj\r\n },\r\n moveAppointmentBack: function(dragEvent) {\r\n var $appointment = this._$currentAppointment;\r\n var size = this._initialSize;\r\n var coords = this._initialCoordinates;\r\n if (dragEvent) {\r\n this._removeDragSourceClassFromDraggedAppointment();\r\n if ((0, _type.isDeferred)(dragEvent.cancel)) {\r\n dragEvent.cancel.resolve(true)\r\n } else {\r\n dragEvent.cancel = true\r\n }\r\n }\r\n if ($appointment && !dragEvent) {\r\n if (coords) {\r\n (0, _translator.move)($appointment, coords);\r\n delete this._initialSize\r\n }\r\n if (size) {\r\n $appointment.outerWidth(size.width);\r\n $appointment.outerHeight(size.height);\r\n delete this._initialCoordinates\r\n }\r\n }\r\n },\r\n focus: function() {\r\n if (this._$currentAppointment) {\r\n var focusedElement = (0, _element.getPublicElement)(this._$currentAppointment);\r\n this.option(\"focusedElement\", focusedElement);\r\n _events_engine.default.trigger(focusedElement, \"focus\")\r\n }\r\n },\r\n splitAppointmentByDay: function(appointment) {\r\n var dates = appointment.settings || appointment;\r\n var originalStartDate = new Date(this.invoke(\"getField\", \"startDate\", dates));\r\n var startDate = _date.default.makeDate(originalStartDate);\r\n var endDate = _date.default.makeDate(this.invoke(\"getField\", \"endDate\", dates));\r\n var maxAllowedDate = this.invoke(\"getEndViewDate\");\r\n var startDayHour = this.invoke(\"getStartDayHour\");\r\n var endDayHour = this.invoke(\"getEndDayHour\");\r\n var appointmentIsLong = this.invoke(\"appointmentTakesSeveralDays\", appointment);\r\n var result = [];\r\n var timeZoneCalculator = this.invoke(\"getTimeZoneCalculator\");\r\n startDate = timeZoneCalculator.createDate(startDate, {\r\n path: \"toGrid\"\r\n });\r\n endDate = timeZoneCalculator.createDate(endDate, {\r\n path: \"toGrid\"\r\n });\r\n if (startDate.getHours() <= endDayHour && startDate.getHours() >= startDayHour && !appointmentIsLong) {\r\n result.push(this._applyStartDateToObj(new Date(startDate), {\r\n appointmentData: appointment\r\n }));\r\n startDate.setDate(startDate.getDate() + 1)\r\n }\r\n while (appointmentIsLong && startDate.getTime() < endDate.getTime() && startDate < maxAllowedDate) {\r\n var currentStartDate = new Date(startDate);\r\n var currentEndDate = new Date(startDate);\r\n this._checkStartDate(currentStartDate, originalStartDate, startDayHour);\r\n this._checkEndDate(currentEndDate, endDate, endDayHour);\r\n var appointmentData = (0, _object.deepExtendArraySafe)({}, appointment, true);\r\n var appointmentSettings = {};\r\n this._applyStartDateToObj(currentStartDate, appointmentSettings);\r\n this._applyEndDateToObj(currentEndDate, appointmentSettings);\r\n appointmentData.settings = appointmentSettings;\r\n result.push(appointmentData);\r\n startDate = _date.default.trimTime(startDate);\r\n startDate.setDate(startDate.getDate() + 1);\r\n startDate.setHours(startDayHour)\r\n }\r\n return result\r\n },\r\n _checkStartDate: function(currentDate, originalDate, startDayHour) {\r\n if (!_date.default.sameDate(currentDate, originalDate) || currentDate.getHours() <= startDayHour) {\r\n currentDate.setHours(startDayHour, 0, 0, 0)\r\n } else {\r\n currentDate.setHours(originalDate.getHours(), originalDate.getMinutes(), originalDate.getSeconds(), originalDate.getMilliseconds())\r\n }\r\n },\r\n _checkEndDate: function(currentDate, originalDate, endDayHour) {\r\n if (!_date.default.sameDate(currentDate, originalDate) || currentDate.getHours() > endDayHour) {\r\n currentDate.setHours(endDayHour, 0, 0, 0)\r\n } else {\r\n currentDate.setHours(originalDate.getHours(), originalDate.getMinutes(), originalDate.getSeconds(), originalDate.getMilliseconds())\r\n }\r\n },\r\n _removeDragSourceClassFromDraggedAppointment: function() {\r\n var $appointments = this._itemElements().filter(\".\".concat(_constants.APPOINTMENT_DRAG_SOURCE_CLASS));\r\n $appointments.each(function(_, element) {\r\n var appointmentInstance = (0, _renderer.default)(element).dxSchedulerAppointment(\"instance\");\r\n appointmentInstance.option(\"isDragSource\", false)\r\n })\r\n },\r\n _setDragSourceAppointment: function(appointment, settings) {\r\n var $appointments = this._findItemElementByItem(appointment);\r\n var _settings$info$source = settings.info.sourceAppointment,\r\n startDate = _settings$info$source.startDate,\r\n endDate = _settings$info$source.endDate;\r\n var groupIndex = settings.groupIndex;\r\n $appointments.forEach(function($item) {\r\n var _$item$data = $item.data(_constants.APPOINTMENT_SETTINGS_KEY),\r\n itemInfo = _$item$data.info,\r\n itemGroupIndex = _$item$data.groupIndex;\r\n var _itemInfo$sourceAppoi = itemInfo.sourceAppointment,\r\n itemStartDate = _itemInfo$sourceAppoi.startDate,\r\n itemEndDate = _itemInfo$sourceAppoi.endDate;\r\n var appointmentInstance = $item.dxSchedulerAppointment(\"instance\");\r\n var isDragSource = startDate.getTime() === itemStartDate.getTime() && endDate.getTime() === itemEndDate.getTime() && groupIndex === itemGroupIndex;\r\n appointmentInstance.option(\"isDragSource\", isDragSource)\r\n })\r\n }\r\n}).include(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerAppointments\", SchedulerAppointments);\r\nvar _default = SchedulerAppointments;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.appointment.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _recurrence = require(\"./recurrence\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _ui = require(\"../tooltip/ui.tooltip\");\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.publisher_mixin\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _dom_component = _interopRequireDefault(require(\"../../core/dom_component\"));\r\nvar _resizable = _interopRequireDefault(require(\"../resizable\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _constants = require(\"./constants\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DEFAULT_HORIZONTAL_HANDLES = \"left right\";\r\nvar DEFAULT_VERTICAL_HANDLES = \"top bottom\";\r\nvar REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.enter, \"dxSchedulerAppointment\");\r\nvar REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.leave, \"dxSchedulerAppointment\");\r\nvar Appointment = _dom_component.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n data: {},\r\n geometry: {\r\n top: 0,\r\n left: 0,\r\n width: 0,\r\n height: 0\r\n },\r\n allowDrag: true,\r\n allowResize: true,\r\n reduced: null,\r\n isCompact: false,\r\n direction: \"vertical\",\r\n resizableConfig: {},\r\n cellHeight: 0,\r\n cellWidth: 0,\r\n isDragSource: false\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"data\":\r\n case \"geometry\":\r\n case \"allowDrag\":\r\n case \"allowResize\":\r\n case \"reduced\":\r\n case \"sortedIndex\":\r\n case \"isCompact\":\r\n case \"direction\":\r\n case \"resizableConfig\":\r\n case \"cellHeight\":\r\n case \"cellWidth\":\r\n this._invalidate();\r\n break;\r\n case \"isDragSource\":\r\n this._renderDragSourceClass();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _getHorizontalResizingRule: function() {\r\n var reducedHandles = {\r\n head: this.option(\"rtlEnabled\") ? \"right\" : \"left\",\r\n body: \"\",\r\n tail: this.option(\"rtlEnabled\") ? \"left\" : \"right\"\r\n };\r\n return {\r\n handles: this.option(\"reduced\") ? reducedHandles[this.option(\"reduced\")] : DEFAULT_HORIZONTAL_HANDLES,\r\n minHeight: 0,\r\n minWidth: this.invoke(\"getCellWidth\"),\r\n step: this.invoke(\"getResizableStep\"),\r\n roundStepValue: false\r\n }\r\n },\r\n _getVerticalResizingRule: function() {\r\n var height = this.invoke(\"getCellHeight\");\r\n return {\r\n handles: DEFAULT_VERTICAL_HANDLES,\r\n minWidth: 0,\r\n minHeight: height,\r\n step: height,\r\n roundStepValue: true\r\n }\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderAppointmentGeometry();\r\n this._renderEmptyClass();\r\n this._renderReducedAppointment();\r\n this._renderAllDayClass();\r\n this._renderDragSourceClass();\r\n this._renderDirection();\r\n this.$element().data(\"dxAppointmentStartDate\", this.option(\"startDate\"));\r\n this.$element().attr(\"title\", this.invoke(\"getField\", \"text\", this.option(\"data\")));\r\n this.$element().attr(\"role\", \"button\");\r\n this._renderRecurrenceClass();\r\n this._renderResizable()\r\n },\r\n _renderAppointmentGeometry: function() {\r\n var geometry = this.option(\"geometry\");\r\n var $element = this.$element();\r\n (0, _translator.move)($element, {\r\n top: geometry.top,\r\n left: geometry.left\r\n });\r\n $element.css({\r\n width: geometry.width < 0 ? 0 : geometry.width,\r\n height: geometry.height < 0 ? 0 : geometry.height\r\n })\r\n },\r\n _renderEmptyClass: function() {\r\n var geometry = this.option(\"geometry\");\r\n if (geometry.empty || this.option(\"isCompact\")) {\r\n this.$element().addClass(_constants.EMPTY_APPOINTMENT_CLASS)\r\n }\r\n },\r\n _renderReducedAppointment: function() {\r\n var reducedPart = this.option(\"reduced\");\r\n if (!reducedPart) {\r\n return\r\n }\r\n this.$element().toggleClass(_constants.REDUCED_APPOINTMENT_CLASS, true).toggleClass(_constants.REDUCED_APPOINTMENT_PARTS_CLASSES[reducedPart], true);\r\n this._renderAppointmentReducedIcon()\r\n },\r\n _renderAppointmentReducedIcon: function() {\r\n var $icon = (0, _renderer.default)(\"
\").addClass(_constants.REDUCED_APPOINTMENT_ICON).appendTo(this.$element());\r\n var endDate = this._getEndDate();\r\n var tooltipLabel = _message.default.format(\"dxScheduler-editorLabelEndDate\");\r\n var tooltipText = [tooltipLabel, \": \", _date.default.format(endDate, \"monthAndDay\"), \", \", _date.default.format(endDate, \"year\")].join(\"\");\r\n _events_engine.default.off($icon, REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME);\r\n _events_engine.default.on($icon, REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME, function() {\r\n (0, _ui.show)({\r\n target: $icon,\r\n content: tooltipText\r\n })\r\n });\r\n _events_engine.default.off($icon, REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME);\r\n _events_engine.default.on($icon, REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME, function() {\r\n (0, _ui.hide)()\r\n })\r\n },\r\n _getEndDate: function() {\r\n var result = this.invoke(\"getField\", \"endDate\", this.option(\"data\"));\r\n if (result) {\r\n return new Date(result)\r\n }\r\n return result\r\n },\r\n _renderAllDayClass: function() {\r\n this.$element().toggleClass(_constants.ALL_DAY_APPOINTMENT_CLASS, !!this.option(\"allDay\"))\r\n },\r\n _renderDragSourceClass: function() {\r\n this.$element().toggleClass(_constants.APPOINTMENT_DRAG_SOURCE_CLASS, !!this.option(\"isDragSource\"))\r\n },\r\n _renderRecurrenceClass: function() {\r\n var rule = this.invoke(\"getField\", \"recurrenceRule\", this.option(\"data\"));\r\n if ((0, _recurrence.getRecurrenceProcessor)().isValidRecurrenceRule(rule)) {\r\n this.$element().addClass(_constants.RECURRENCE_APPOINTMENT_CLASS)\r\n }\r\n },\r\n _renderDirection: function() {\r\n this.$element().addClass(_constants.DIRECTION_APPOINTMENT_CLASSES[this.option(\"direction\")])\r\n },\r\n _createResizingConfig: function() {\r\n var config = \"vertical\" === this.option(\"direction\") ? this._getVerticalResizingRule() : this._getHorizontalResizingRule();\r\n if (!this.invoke(\"isGroupedByDate\")) {\r\n config.stepPrecision = \"strict\"\r\n }\r\n return config\r\n },\r\n _renderResizable: function() {\r\n if (this.option(\"allowResize\")) {\r\n this._createComponent(this.$element(), _resizable.default, (0, _extend.extend)(this._createResizingConfig(), this.option(\"resizableConfig\")))\r\n }\r\n },\r\n _useTemplates: function() {\r\n return false\r\n }\r\n}).include(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerAppointment\", Appointment);\r\nvar _default = Appointment;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.appointments.layout_manager.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiSchedulerAppointmentsStrategy = _interopRequireDefault(require(\"./rendering_strategies/ui.scheduler.appointments.strategy.vertical\"));\r\nvar _uiSchedulerAppointmentsStrategy2 = _interopRequireDefault(require(\"./rendering_strategies/ui.scheduler.appointments.strategy.horizontal\"));\r\nvar _uiSchedulerAppointmentsStrategy3 = _interopRequireDefault(require(\"./rendering_strategies/ui.scheduler.appointments.strategy.horizontal_month_line\"));\r\nvar _uiSchedulerAppointmentsStrategy4 = _interopRequireDefault(require(\"./rendering_strategies/ui.scheduler.appointments.strategy.horizontal_month\"));\r\nvar _uiSchedulerAppointmentsStrategy5 = _interopRequireDefault(require(\"./rendering_strategies/ui.scheduler.appointments.strategy.agenda\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar RENDERING_STRATEGIES = {\r\n horizontal: _uiSchedulerAppointmentsStrategy2.default,\r\n horizontalMonth: _uiSchedulerAppointmentsStrategy4.default,\r\n horizontalMonthLine: _uiSchedulerAppointmentsStrategy3.default,\r\n vertical: _uiSchedulerAppointmentsStrategy.default,\r\n agenda: _uiSchedulerAppointmentsStrategy5.default\r\n};\r\nvar AppointmentLayoutManager = function() {\r\n function AppointmentLayoutManager(instance, renderingStrategy) {\r\n this.instance = instance;\r\n renderingStrategy && this.initRenderingStrategy(renderingStrategy)\r\n }\r\n var _proto = AppointmentLayoutManager.prototype;\r\n _proto.getCellDimensions = function(options) {\r\n if (this.instance._workSpace) {\r\n return {\r\n width: this.instance._workSpace.getCellWidth(),\r\n height: this.instance._workSpace.getCellHeight(),\r\n allDayHeight: this.instance._workSpace.getAllDayHeight()\r\n }\r\n }\r\n };\r\n _proto.getGroupOrientation = function(options) {\r\n if (this.instance._workSpace) {\r\n options.callback(this.instance._workSpace._getRealGroupOrientation())\r\n }\r\n };\r\n _proto.initRenderingStrategy = function(renderingStrategy) {\r\n var Strategy = RENDERING_STRATEGIES[renderingStrategy];\r\n this._renderingStrategyInstance = new Strategy(this.instance);\r\n this.renderingStrategy = renderingStrategy\r\n };\r\n _proto.createAppointmentsMap = function(items) {\r\n var _this = this;\r\n var _this$getCellDimensio = this.getCellDimensions(),\r\n allDayHeight = _this$getCellDimensio.allDayHeight;\r\n this.instance._allDayCellHeight = allDayHeight;\r\n this.getGroupOrientation({\r\n callback: function(groupOrientation) {\r\n return _this.instance._groupOrientation = groupOrientation\r\n }\r\n });\r\n var appointments = items ? items.slice() : [];\r\n this._positionMap = this._renderingStrategyInstance.createTaskPositionMap(appointments);\r\n return this._createAppointmentsMapCore(appointments, this._positionMap)\r\n };\r\n _proto._createAppointmentsMapCore = function(list, positionMap) {\r\n var _this2 = this;\r\n return list.map(function(data, index) {\r\n if (!_this2._renderingStrategyInstance.keepAppointmentSettings()) {\r\n delete data.settings\r\n }\r\n var appointmentSettings = positionMap[index];\r\n appointmentSettings.forEach(function(settings) {\r\n settings.direction = \"vertical\" === _this2.renderingStrategy && !settings.allDay ? \"vertical\" : \"horizontal\"\r\n });\r\n return {\r\n itemData: data,\r\n settings: appointmentSettings,\r\n needRepaint: true,\r\n needRemove: false\r\n }\r\n })\r\n };\r\n _proto._isDataChanged = function(data) {\r\n var updatedData = this.instance.getUpdatedAppointment();\r\n return updatedData === data || this.instance.getUpdatedAppointmentKeys().some(function(item) {\r\n return data[item.key] === item.value\r\n })\r\n };\r\n _proto._isAppointmentShouldAppear = function(currentAppointment, sourceAppointment) {\r\n return currentAppointment.needRepaint && sourceAppointment.needRemove\r\n };\r\n _proto._isSettingChanged = function(settings, sourceSetting) {\r\n if (settings.length !== sourceSetting.length) {\r\n return true\r\n }\r\n for (var i = 0; i < settings.length; i++) {\r\n var newSettings = settings[i];\r\n var oldSettings = sourceSetting[i];\r\n if (oldSettings) {\r\n oldSettings.sortedIndex = newSettings.sortedIndex\r\n }\r\n if (!(0, _common.equalByValue)(newSettings, oldSettings)) {\r\n return true\r\n }\r\n }\r\n return false\r\n };\r\n _proto._getAssociatedSourceAppointment = function(currentAppointment, sourceAppointments) {\r\n for (var i = 0; i < sourceAppointments.length; i++) {\r\n var item = sourceAppointments[i];\r\n if (item.itemData === currentAppointment.itemData) {\r\n return item\r\n }\r\n }\r\n return null\r\n };\r\n _proto._getDeletedAppointments = function(currentAppointments, sourceAppointments) {\r\n var result = [];\r\n for (var i = 0; i < sourceAppointments.length; i++) {\r\n var sourceAppointment = sourceAppointments[i];\r\n var currentAppointment = this._getAssociatedSourceAppointment(sourceAppointment, currentAppointments);\r\n if (!currentAppointment) {\r\n sourceAppointment.needRemove = true;\r\n result.push(sourceAppointment)\r\n }\r\n }\r\n return result\r\n };\r\n _proto.getRepaintedAppointments = function(currentAppointments, sourceAppointments) {\r\n var _this3 = this;\r\n if (0 === sourceAppointments.length || \"agenda\" === this.renderingStrategy) {\r\n return currentAppointments\r\n }\r\n currentAppointments.forEach(function(appointment) {\r\n var sourceAppointment = _this3._getAssociatedSourceAppointment(appointment, sourceAppointments);\r\n if (sourceAppointment) {\r\n appointment.needRepaint = _this3._isDataChanged(appointment.itemData) || _this3._isSettingChanged(appointment.settings, sourceAppointment.settings) || _this3._isAppointmentShouldAppear(appointment, sourceAppointment)\r\n }\r\n });\r\n return currentAppointments.concat(this._getDeletedAppointments(currentAppointments, sourceAppointments))\r\n };\r\n _proto.getRenderingStrategyInstance = function() {\r\n return this._renderingStrategyInstance\r\n };\r\n return AppointmentLayoutManager\r\n}();\r\nvar _default = AppointmentLayoutManager;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.appointment_model.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _config = _interopRequireDefault(require(\"../../core/config\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _recurrence = require(\"./recurrence\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n return Constructor\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar DATE_FILTER_POSITION = 0;\r\nvar USER_FILTER_POSITION = 1;\r\nvar FilterMaker = function() {\r\n function FilterMaker(dataAccessors) {\r\n this._filterRegistry = null;\r\n this._dataAccessors = dataAccessors\r\n }\r\n var _proto = FilterMaker.prototype;\r\n _proto.isRegistered = function() {\r\n return !!this._filterRegistry\r\n };\r\n _proto.clearRegistry = function() {\r\n delete this._filterRegistry\r\n };\r\n _proto.make = function(type, args) {\r\n if (!this._filterRegistry) {\r\n this._filterRegistry = {}\r\n }\r\n this._make(type).apply(this, args)\r\n };\r\n _proto._make = function(type) {\r\n var _this = this;\r\n switch (type) {\r\n case \"date\":\r\n return function(min, max, useAccessors) {\r\n var startDate = useAccessors ? _this._dataAccessors.getter.startDate : _this._dataAccessors.expr.startDateExpr;\r\n var endDate = useAccessors ? _this._dataAccessors.getter.endDate : _this._dataAccessors.expr.endDateExpr;\r\n var recurrenceRule = _this._dataAccessors.expr.recurrenceRuleExpr;\r\n _this._filterRegistry.date = [\r\n [\r\n [endDate, \">\", min],\r\n [startDate, \"<\", max]\r\n ], \"or\", [recurrenceRule, \"startswith\", \"freq\"], \"or\", [\r\n [endDate, min],\r\n [startDate, min]\r\n ]\r\n ];\r\n if (!recurrenceRule) {\r\n _this._filterRegistry.date.splice(1, 2)\r\n }\r\n };\r\n case \"user\":\r\n return function(userFilter) {\r\n _this._filterRegistry.user = userFilter\r\n }\r\n }\r\n };\r\n _proto.combine = function() {\r\n var filter = [];\r\n this._filterRegistry.date && filter.push(this._filterRegistry.date);\r\n this._filterRegistry.user && filter.push(this._filterRegistry.user);\r\n return filter\r\n };\r\n _proto.dateFilter = function() {\r\n return this._filterRegistry.date\r\n };\r\n return FilterMaker\r\n}();\r\nvar compareDateWithStartDayHour = function(startDate, endDate, startDayHour, allDay, severalDays) {\r\n var startTime = _date.default.dateTimeFromDecimal(startDayHour);\r\n var result = startDate.getHours() >= startTime.hours && startDate.getMinutes() >= startTime.minutes || endDate.getHours() === startTime.hours && endDate.getMinutes() > startTime.minutes || endDate.getHours() > startTime.hours || severalDays || allDay;\r\n return result\r\n};\r\nvar compareDateWithEndDayHour = function(startDate, endDate, startDayHour, endDayHour, allDay, severalDays, max, min) {\r\n var hiddenInterval = (24 - endDayHour + startDayHour) * toMs(\"hour\");\r\n var apptDuration = endDate.getTime() - startDate.getTime();\r\n var delta = (hiddenInterval - apptDuration) / toMs(\"hour\");\r\n var apptStartHour = startDate.getHours();\r\n var apptStartMinutes = startDate.getMinutes();\r\n var result;\r\n var endTime = _date.default.dateTimeFromDecimal(endDayHour);\r\n var startTime = _date.default.dateTimeFromDecimal(startDayHour);\r\n result = apptStartHour < endTime.hours || apptStartHour === endTime.hours && apptStartMinutes < endTime.minutes || allDay && startDate <= max || severalDays && startDate < max && endDate > min && (apptStartHour < endTime.hours || 60 * endDate.getHours() + endDate.getMinutes() > 60 * startTime.hours);\r\n if (apptDuration < hiddenInterval) {\r\n if (apptStartHour > endTime.hours && apptStartMinutes > endTime.minutes && delta <= apptStartHour - endDayHour) {\r\n result = false\r\n }\r\n }\r\n return result\r\n};\r\nvar AppointmentModel = function() {\r\n function AppointmentModel(dataSource, dataAccessors, baseAppointmentDuration) {\r\n this.setDataAccessors(dataAccessors);\r\n this.setDataSource(dataSource);\r\n this._updatedAppointmentKeys = [];\r\n this._filterMaker = new FilterMaker(dataAccessors);\r\n this._baseAppointmentDuration = baseAppointmentDuration\r\n }\r\n var _proto2 = AppointmentModel.prototype;\r\n _proto2._createFilter = function(min, max, remoteFiltering, dateSerializationFormat) {\r\n this._filterMaker.make(\"date\", [min, max]);\r\n var userFilterPosition = this._excessFiltering() ? this._dataSource.filter()[USER_FILTER_POSITION] : this._dataSource.filter();\r\n this._filterMaker.make(\"user\", [userFilterPosition]);\r\n if (remoteFiltering) {\r\n this._dataSource.filter(this._combineRemoteFilter(dateSerializationFormat))\r\n }\r\n };\r\n _proto2._excessFiltering = function() {\r\n var dateFilter = this._filterMaker.dateFilter();\r\n var dataSourceFilter = this._dataSource.filter();\r\n return dataSourceFilter && ((0, _common.equalByValue)(dataSourceFilter, dateFilter) || dataSourceFilter.length && (0, _common.equalByValue)(dataSourceFilter[DATE_FILTER_POSITION], dateFilter))\r\n };\r\n _proto2._combineFilter = function() {\r\n return this._filterMaker.combine()\r\n };\r\n _proto2._getStoreKey = function(target) {\r\n var store = this._dataSource.store();\r\n return store.keyOf(target)\r\n };\r\n _proto2._filterAppointmentByResources = function(appointment, resources) {\r\n var _this2 = this;\r\n var result = false;\r\n var i;\r\n var len;\r\n var resourceName;\r\n var checkAppointmentResourceValues = function() {\r\n var resourceGetter = _this2._dataAccessors.getter.resources[resourceName];\r\n var resource;\r\n if ((0, _type.isFunction)(resourceGetter)) {\r\n resource = resourceGetter(appointment)\r\n }\r\n var appointmentResourceValues = (0, _array.wrapToArray)(resource);\r\n var resourceData = (0, _iterator.map)(resources[i].items, function(item) {\r\n return item.id\r\n });\r\n for (var j = 0, itemDataCount = appointmentResourceValues.length; j < itemDataCount; j++) {\r\n if ((0, _array.inArray)(appointmentResourceValues[j], resourceData) > -1) {\r\n return true\r\n }\r\n }\r\n return false\r\n };\r\n for (i = 0, len = resources.length; i < len; i++) {\r\n resourceName = resources[i].name;\r\n result = checkAppointmentResourceValues.call(this);\r\n if (!result) {\r\n return false\r\n }\r\n }\r\n return result\r\n };\r\n _proto2._filterAppointmentByRRule = function(appointment, min, max, startDayHour, endDayHour, firstDayOfWeek) {\r\n var recurrenceRule = appointment.recurrenceRule;\r\n var recurrenceException = appointment.recurrenceException;\r\n var allDay = appointment.allDay;\r\n var result = true;\r\n var appointmentStartDate = appointment.startDate;\r\n var appointmentEndDate = appointment.endDate;\r\n var recurrenceProcessor = (0, _recurrence.getRecurrenceProcessor)();\r\n if (allDay || this._appointmentPartInInterval(appointmentStartDate, appointmentEndDate, startDayHour, endDayHour)) {\r\n var trimmedDates = this._trimDates(min, max);\r\n min = trimmedDates.min;\r\n max = new Date(trimmedDates.max.getTime() - toMs(\"minute\"))\r\n }\r\n if (recurrenceRule && !recurrenceProcessor.isValidRecurrenceRule(recurrenceRule)) {\r\n result = appointmentEndDate > min && appointmentStartDate <= max\r\n }\r\n if (result && recurrenceProcessor.isValidRecurrenceRule(recurrenceRule)) {\r\n result = recurrenceProcessor.hasRecurrence({\r\n rule: recurrenceRule,\r\n exception: recurrenceException,\r\n start: appointmentStartDate,\r\n end: appointmentEndDate,\r\n min: min,\r\n max: max,\r\n firstDayOfWeek: firstDayOfWeek\r\n })\r\n }\r\n return result\r\n };\r\n _proto2._appointmentPartInInterval = function(startDate, endDate, startDayHour, endDayHour) {\r\n var apptStartDayHour = startDate.getHours();\r\n var apptEndDayHour = endDate.getHours();\r\n return apptStartDayHour <= startDayHour && apptEndDayHour <= endDayHour && apptEndDayHour >= startDayHour || apptEndDayHour >= endDayHour && apptStartDayHour <= endDayHour && apptStartDayHour >= startDayHour\r\n };\r\n _proto2._createCombinedFilter = function(filterOptions, timeZoneCalculator) {\r\n var dataAccessors = this._dataAccessors;\r\n var min = new Date(filterOptions.min);\r\n var max = new Date(filterOptions.max);\r\n var getRecurrenceException = filterOptions.recurrenceException;\r\n var startDayHour = filterOptions.startDayHour,\r\n endDayHour = filterOptions.endDayHour,\r\n viewStartDayHour = filterOptions.viewStartDayHour,\r\n viewEndDayHour = filterOptions.viewEndDayHour,\r\n resources = filterOptions.resources,\r\n firstDayOfWeek = filterOptions.firstDayOfWeek;\r\n var that = this;\r\n return [\r\n [function(appointment) {\r\n var result = true;\r\n var startDate = new Date(dataAccessors.getter.startDate(appointment));\r\n var endDate = new Date(dataAccessors.getter.endDate(appointment));\r\n var appointmentTakesAllDay = that.appointmentTakesAllDay(appointment, viewStartDayHour, viewEndDayHour);\r\n var appointmentTakesSeveralDays = that.appointmentTakesSeveralDays(appointment);\r\n var isAllDay = dataAccessors.getter.allDay(appointment);\r\n var appointmentIsLong = appointmentTakesSeveralDays || appointmentTakesAllDay;\r\n var useRecurrence = (0, _type.isDefined)(dataAccessors.getter.recurrenceRule);\r\n var recurrenceRule;\r\n if (useRecurrence) {\r\n recurrenceRule = dataAccessors.getter.recurrenceRule(appointment)\r\n }\r\n if (resources && resources.length) {\r\n result = that._filterAppointmentByResources(appointment, resources)\r\n }\r\n if (appointmentTakesAllDay && false === filterOptions.allDay) {\r\n result = false\r\n }\r\n var startDateTimeZone = dataAccessors.getter.startDateTimeZone(appointment);\r\n var endDateTimeZone = dataAccessors.getter.endDateTimeZone(appointment);\r\n var comparableStartDate = timeZoneCalculator.createDate(startDate, {\r\n appointmentTimeZone: startDateTimeZone,\r\n path: \"toGrid\"\r\n });\r\n var comparableEndDate = timeZoneCalculator.createDate(endDate, {\r\n appointmentTimeZone: endDateTimeZone,\r\n path: \"toGrid\"\r\n });\r\n if (result && useRecurrence) {\r\n var recurrenceException = getRecurrenceException ? getRecurrenceException(appointment) : dataAccessors.getter.recurrenceException(appointment);\r\n result = that._filterAppointmentByRRule({\r\n startDate: comparableStartDate,\r\n endDate: comparableEndDate,\r\n recurrenceRule: recurrenceRule,\r\n recurrenceException: recurrenceException,\r\n allDay: appointmentTakesAllDay\r\n }, min, max, startDayHour, endDayHour, firstDayOfWeek)\r\n }\r\n if (result && comparableEndDate < min && appointmentIsLong && !isAllDay && (!useRecurrence || useRecurrence && !recurrenceRule)) {\r\n result = false\r\n }\r\n if (result && void 0 !== startDayHour && (!useRecurrence || !filterOptions.isVirtualScrolling)) {\r\n result = compareDateWithStartDayHour(comparableStartDate, comparableEndDate, startDayHour, appointmentTakesAllDay, appointmentTakesSeveralDays)\r\n }\r\n if (result && void 0 !== endDayHour) {\r\n result = compareDateWithEndDayHour(comparableStartDate, comparableEndDate, startDayHour, endDayHour, appointmentTakesAllDay, appointmentTakesSeveralDays, max, min)\r\n }\r\n if (result && useRecurrence && !recurrenceRule) {\r\n if (comparableEndDate < min && !isAllDay) {\r\n result = false\r\n }\r\n }\r\n return result\r\n }]\r\n ]\r\n };\r\n _proto2.setDataSource = function(dataSource) {\r\n this._dataSource = dataSource;\r\n this.cleanModelState();\r\n this._initStoreChangeHandlers();\r\n this._filterMaker && this._filterMaker.clearRegistry()\r\n };\r\n _proto2._initStoreChangeHandlers = function() {\r\n var _this3 = this;\r\n var dataSource = this._dataSource;\r\n var store = null === dataSource || void 0 === dataSource ? void 0 : dataSource.store();\r\n if (store) {\r\n store.on(\"updating\", function(newItem) {\r\n _this3._updatedAppointment = newItem\r\n });\r\n store.on(\"push\", function(pushItems) {\r\n var items = dataSource.items();\r\n var keyName = store.key();\r\n pushItems.forEach(function(pushItem) {\r\n var itemExists = 0 !== items.filter(function(item) {\r\n return item[keyName] === pushItem.key\r\n }).length;\r\n if (itemExists) {\r\n _this3._updatedAppointmentKeys.push({\r\n key: keyName,\r\n value: pushItem.key\r\n })\r\n } else {\r\n var data = pushItem.data;\r\n data && items.push(data)\r\n }\r\n })\r\n })\r\n }\r\n };\r\n _proto2.getUpdatedAppointment = function() {\r\n return this._updatedAppointment\r\n };\r\n _proto2.getUpdatedAppointmentKeys = function() {\r\n return this._updatedAppointmentKeys\r\n };\r\n _proto2.cleanModelState = function() {\r\n this._updatedAppointment = null;\r\n this._updatedAppointmentKeys = []\r\n };\r\n _proto2.setDataAccessors = function(dataAccessors) {\r\n this._dataAccessors = dataAccessors;\r\n this._filterMaker = new FilterMaker(dataAccessors)\r\n };\r\n _proto2.filterByDate = function(min, max, remoteFiltering, dateSerializationFormat) {\r\n if (!this._dataSource) {\r\n return\r\n }\r\n var trimmedDates = this._trimDates(min, max);\r\n if (!this._filterMaker.isRegistered()) {\r\n this._createFilter(trimmedDates.min, trimmedDates.max, remoteFiltering, dateSerializationFormat)\r\n } else {\r\n var _this$_dataSource$fil;\r\n this._filterMaker.make(\"date\", [trimmedDates.min, trimmedDates.max]);\r\n if ((null === (_this$_dataSource$fil = this._dataSource.filter()) || void 0 === _this$_dataSource$fil ? void 0 : _this$_dataSource$fil.length) > 1) {\r\n var userFilter = this._serializeRemoteFilter([this._dataSource.filter()[1]], dateSerializationFormat);\r\n this._filterMaker.make(\"user\", userFilter)\r\n }\r\n if (remoteFiltering) {\r\n this._dataSource.filter(this._combineRemoteFilter(dateSerializationFormat))\r\n }\r\n }\r\n };\r\n _proto2._combineRemoteFilter = function(dateSerializationFormat) {\r\n var combinedFilter = this._filterMaker.combine();\r\n return this._serializeRemoteFilter(combinedFilter, dateSerializationFormat)\r\n };\r\n _proto2._serializeRemoteFilter = function(filter, dateSerializationFormat) {\r\n if (!Array.isArray(filter)) {\r\n return filter\r\n }\r\n filter = (0, _extend.extend)([], filter);\r\n var startDate = this._dataAccessors.expr.startDateExpr;\r\n var endDate = this._dataAccessors.expr.endDateExpr;\r\n if ((0, _type.isString)(filter[0])) {\r\n if ((0, _config.default)().forceIsoDateParsing && filter.length > 1) {\r\n if (filter[0] === startDate || filter[0] === endDate) {\r\n filter[filter.length - 1] = _date_serialization.default.serializeDate(new Date(filter[filter.length - 1]), dateSerializationFormat)\r\n }\r\n }\r\n }\r\n for (var i = 0; i < filter.length; i++) {\r\n filter[i] = this._serializeRemoteFilter(filter[i], dateSerializationFormat)\r\n }\r\n return filter\r\n };\r\n _proto2._createAppointmentFilter = function(filterOptions, timeZoneCalculator) {\r\n var combinedFilter = this._createCombinedFilter(filterOptions, timeZoneCalculator);\r\n if (this._filterMaker.isRegistered()) {\r\n this._filterMaker.make(\"user\", void 0);\r\n var trimmedDates = this._trimDates(filterOptions.min, filterOptions.max);\r\n this._filterMaker.make(\"date\", [trimmedDates.min, trimmedDates.max, true]);\r\n var dateFilter = this.customizeDateFilter(this._filterMaker.combine(), timeZoneCalculator);\r\n combinedFilter.push([dateFilter])\r\n }\r\n return combinedFilter\r\n };\r\n _proto2.filterLoadedAppointments = function(filterOption, timeZoneCalculator) {\r\n var combinedFilter = this._createAppointmentFilter(filterOption, timeZoneCalculator);\r\n return (0, _query.default)(this.getPreparedDataItems()).filter(combinedFilter).toArray()\r\n };\r\n _proto2.getPreparedDataItems = function() {\r\n var _this4 = this;\r\n var dataItems = this._dataSource.items();\r\n return (0, _iterator.map)(dataItems, function(item) {\r\n var startDate = new Date(_this4._dataAccessors.getter.startDate(item));\r\n var endDate = new Date(_this4._dataAccessors.getter.endDate(item));\r\n _this4.replaceWrongEndDate(item, startDate, endDate);\r\n return item\r\n })\r\n };\r\n _proto2.replaceWrongEndDate = function(appointment, startDate, endDate) {\r\n if (this._isEndDateWrong(startDate, endDate)) {\r\n var isAllDay = this._dataAccessors.getter.allDay(appointment);\r\n var calculatedEndDate = this._calculateAppointmentEndDate(isAllDay, startDate);\r\n this._dataAccessors.setter.endDate(appointment, calculatedEndDate)\r\n }\r\n };\r\n _proto2.filterLoadedVirtualAppointments = function(filterOptions, timeZoneCalculator, groupCount) {\r\n var _this5 = this;\r\n var combinedFilters = [];\r\n var itemsToFilter = this.getPreparedDataItems();\r\n var needPreFilter = groupCount > 0;\r\n if (needPreFilter) {\r\n itemsToFilter = itemsToFilter.filter(function(item) {\r\n for (var i = 0; i < filterOptions.length; ++i) {\r\n var resources = filterOptions[i].resources;\r\n if (_this5._filterAppointmentByResources(item, resources)) {\r\n return true\r\n }\r\n }\r\n })\r\n }\r\n filterOptions.forEach(function(filterOption) {\r\n combinedFilters.length && combinedFilters.push(\"or\");\r\n var filter = _this5._createAppointmentFilter(filterOption, timeZoneCalculator);\r\n combinedFilters.push(filter)\r\n });\r\n return (0, _query.default)(itemsToFilter).filter(combinedFilters).toArray()\r\n };\r\n _proto2._trimDates = function(min, max) {\r\n var minCopy = _date.default.trimTime(new Date(min));\r\n var maxCopy = _date.default.trimTime(new Date(max));\r\n maxCopy.setDate(maxCopy.getDate() + 1);\r\n return {\r\n min: minCopy,\r\n max: maxCopy\r\n }\r\n };\r\n _proto2.hasAllDayAppointments = function(items, startDayHour, endDayHour) {\r\n if (!items) {\r\n return false\r\n }\r\n var that = this;\r\n var result = false;\r\n (0, _iterator.each)(items, function(index, item) {\r\n if (that.appointmentTakesAllDay(item, startDayHour, endDayHour)) {\r\n result = true;\r\n return false\r\n }\r\n });\r\n return result\r\n };\r\n _proto2.appointmentTakesAllDay = function(appointment, startDayHour, endDayHour) {\r\n var dataAccessors = this._dataAccessors;\r\n var startDate = dataAccessors.getter.startDate(appointment);\r\n var endDate = dataAccessors.getter.endDate(appointment);\r\n var allDay = dataAccessors.getter.allDay(appointment);\r\n return allDay || this._appointmentHasAllDayDuration(startDate, endDate, startDayHour, endDayHour)\r\n };\r\n _proto2._appointmentHasAllDayDuration = function(startDate, endDate, startDayHour, endDayHour) {\r\n startDate = new Date(startDate);\r\n endDate = new Date(endDate);\r\n var dayDuration = 24;\r\n var appointmentDurationInHours = this._getAppointmentDurationInHours(startDate, endDate);\r\n return appointmentDurationInHours >= dayDuration || this._appointmentHasShortDayDuration(startDate, endDate, startDayHour, endDayHour)\r\n };\r\n _proto2._appointmentHasShortDayDuration = function(startDate, endDate, startDayHour, endDayHour) {\r\n var appointmentDurationInHours = this._getAppointmentDurationInHours(startDate, endDate);\r\n var shortDayDurationInHours = endDayHour - startDayHour;\r\n return appointmentDurationInHours >= shortDayDurationInHours && startDate.getHours() === startDayHour && endDate.getHours() === endDayHour\r\n };\r\n _proto2._getAppointmentDurationInHours = function(startDate, endDate) {\r\n return (endDate.getTime() - startDate.getTime()) / toMs(\"hour\")\r\n };\r\n _proto2.appointmentTakesSeveralDays = function(appointment) {\r\n var dataAccessors = this._dataAccessors;\r\n var startDate = new Date(dataAccessors.getter.startDate(appointment));\r\n var endDate = new Date(dataAccessors.getter.endDate(appointment));\r\n return !_date.default.sameDate(startDate, endDate)\r\n };\r\n _proto2.customizeDateFilter = function(dateFilter, timeZoneCalculator) {\r\n var _this6 = this;\r\n var currentFilter = (0, _extend.extend)(true, [], dateFilter);\r\n return function(appointment) {\r\n var startDate = new Date(_this6._dataAccessors.getter.startDate(appointment));\r\n var endDate = new Date(_this6._dataAccessors.getter.endDate(appointment));\r\n appointment = (0, _extend.extend)(true, {}, appointment);\r\n var startDateTimeZone = _this6._dataAccessors.getter.startDateTimeZone(appointment);\r\n var endDateTimeZone = _this6._dataAccessors.getter.endDateTimeZone(appointment);\r\n var comparableStartDate = timeZoneCalculator.createDate(startDate, {\r\n appointmentTimeZone: startDateTimeZone,\r\n path: \"toGrid\"\r\n });\r\n var comparableEndDate = timeZoneCalculator.createDate(endDate, {\r\n appointmentTimeZone: endDateTimeZone,\r\n path: \"toGrid\"\r\n });\r\n _this6._dataAccessors.setter.startDate(appointment, comparableStartDate);\r\n _this6._dataAccessors.setter.endDate(appointment, comparableEndDate);\r\n return (0, _query.default)([appointment]).filter(currentFilter).toArray().length > 0\r\n }.bind(this)\r\n };\r\n _proto2._calculateAppointmentEndDate = function(isAllDay, startDate) {\r\n if (isAllDay) {\r\n return _date.default.setToDayEnd(new Date(startDate))\r\n }\r\n return new Date(startDate.getTime() + this._baseAppointmentDuration * toMs(\"minute\"))\r\n };\r\n _proto2._isEndDateWrong = function(startDate, endDate) {\r\n return !endDate || isNaN(endDate.getTime()) || startDate.getTime() > endDate.getTime()\r\n };\r\n _proto2.add = function(rawAppointment) {\r\n var _this7 = this;\r\n return this._dataSource.store().insert(rawAppointment).done(function() {\r\n return _this7._dataSource.load()\r\n })\r\n };\r\n _proto2.update = function(target, data) {\r\n var _this8 = this;\r\n var key = this._getStoreKey(target);\r\n var d = new _deferred.Deferred;\r\n this._dataSource.store().update(key, data).done(function(result) {\r\n return _this8._dataSource.load().done(function() {\r\n return d.resolve(result)\r\n }).fail(d.reject)\r\n }).fail(d.reject);\r\n return d.promise()\r\n };\r\n _proto2.remove = function(rawAppointment) {\r\n var _this9 = this;\r\n var key = this._getStoreKey(rawAppointment);\r\n return this._dataSource.store().remove(key).done(function() {\r\n return _this9._dataSource.load()\r\n })\r\n };\r\n _createClass(AppointmentModel, [{\r\n key: \"keyName\",\r\n get: function() {\r\n var store = this._dataSource.store();\r\n return store.key()\r\n }\r\n }]);\r\n return AppointmentModel\r\n}();\r\nvar _default = AppointmentModel;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.header.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.publisher_mixin\"));\r\nvar _uiScheduler2 = _interopRequireDefault(require(\"./ui.scheduler.navigator\"));\r\nvar _drop_down_menu = _interopRequireDefault(require(\"../drop_down_menu\"));\r\nvar _tabs = _interopRequireDefault(require(\"../tabs\"));\r\nvar _constants = require(\"../tabs/constants\");\r\nvar _errors = _interopRequireDefault(require(\"../../core/errors\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar COMPONENT_CLASS = \"dx-scheduler-header\";\r\nvar VIEW_SWITCHER_CLASS = \"dx-scheduler-view-switcher\";\r\nvar VIEW_SWITCHER_LABEL_CLASS = \"dx-scheduler-view-switcher-label\";\r\nvar STEP_MAP = {\r\n day: \"day\",\r\n week: \"week\",\r\n workWeek: \"workWeek\",\r\n month: \"month\",\r\n timelineDay: \"day\",\r\n timelineWeek: \"week\",\r\n timelineWorkWeek: \"workWeek\",\r\n timelineMonth: \"month\",\r\n agenda: \"agenda\"\r\n};\r\nvar VIEWS = [\"day\", \"week\", \"workWeek\", \"month\", \"timelineDay\", \"timelineWeek\", \"timelineWorkWeek\", \"timelineMonth\", \"agenda\"];\r\nvar SchedulerHeader = _ui.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n views: [],\r\n isAdaptive: false,\r\n intervalCount: 1,\r\n currentView: \"day\",\r\n firstDayOfWeek: void 0,\r\n currentDate: new Date,\r\n min: void 0,\r\n max: void 0,\r\n useDropDownViewSwitcher: false,\r\n _dropDownButtonIcon: \"overlay\"\r\n })\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n (0, _extend.extend)(this._optionsByReference, {\r\n currentView: true\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n var value = args.value;\r\n switch (args.name) {\r\n case \"views\":\r\n this._validateViews();\r\n this._viewSwitcher.option({\r\n items: value,\r\n selectedItem: this.option(\"currentView\")\r\n });\r\n break;\r\n case \"customizeDateNavigatorText\":\r\n this._navigator.option(args.name, value);\r\n break;\r\n case \"currentView\":\r\n this._viewSwitcher.option(\"selectedItem\", value);\r\n this._navigator.option(\"step\", STEP_MAP[this._getCurrentViewType()]);\r\n this._changeViewSwitcherLabelText();\r\n break;\r\n case \"currentDate\":\r\n this._navigator.option(\"date\", value);\r\n break;\r\n case \"displayedDate\":\r\n this._navigator.option(\"displayedDate\", value);\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n case \"firstDayOfWeek\":\r\n case \"intervalCount\":\r\n this._navigator.option(args.name, value);\r\n break;\r\n case \"tabIndex\":\r\n case \"focusStateEnabled\":\r\n this._viewSwitcher.option(args.name, value);\r\n this._navigator.option(args.name, value);\r\n this.callBase(args);\r\n break;\r\n case \"useDropDownViewSwitcher\":\r\n this._refreshViewSwitcher();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(COMPONENT_CLASS)\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderNavigator();\r\n this._renderViewSwitcher()\r\n },\r\n _renderNavigator: function() {\r\n this._navigator = this._createComponent(\"
\", _uiScheduler2.default, {\r\n min: this.option(\"min\"),\r\n max: this.option(\"max\"),\r\n intervalCount: this.option(\"intervalCount\"),\r\n date: this.option(\"currentDate\"),\r\n step: STEP_MAP[this._getCurrentViewType()],\r\n firstDayOfWeek: this.option(\"firstDayOfWeek\"),\r\n tabIndex: this.option(\"tabIndex\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n observer: this.option(\"observer\"),\r\n customizeDateNavigatorText: this.option(\"customizeDateNavigatorText\"),\r\n todayDate: this.option(\"todayDate\")\r\n });\r\n this._navigator.$element().appendTo(this.$element())\r\n },\r\n _renderViewSwitcher: function() {\r\n this._validateViews();\r\n var $viewSwitcher = (0, _renderer.default)(\"
\").addClass(VIEW_SWITCHER_CLASS).appendTo(this.$element());\r\n this.option(\"useDropDownViewSwitcher\") ? this._renderViewSwitcherDropDownMenu($viewSwitcher) : this._renderViewSwitcherTabs($viewSwitcher)\r\n },\r\n _validateViews: function() {\r\n var views = this.option(\"views\");\r\n (0, _iterator.each)(views, function(_, view) {\r\n var isViewIsObject = (0, _type.isObject)(view);\r\n var viewType = isViewIsObject && view.type ? view.type : view;\r\n if ((0, _array.inArray)(viewType, VIEWS) === -1) {\r\n _errors.default.log(\"W0008\", viewType)\r\n }\r\n })\r\n },\r\n _getCurrentViewType: function() {\r\n var currentView = this.option(\"currentView\");\r\n return currentView.type || currentView\r\n },\r\n _renderViewSwitcherTabs: function($element) {\r\n var that = this;\r\n $element.addClass(_constants.TABS_EXPANDED_CLASS);\r\n this._viewSwitcher = this._createComponent($element, _tabs.default, {\r\n selectionRequired: true,\r\n scrollingEnabled: true,\r\n onSelectionChanged: this._updateCurrentView.bind(this),\r\n items: this.option(\"views\"),\r\n itemTemplate: function(item) {\r\n return (0, _renderer.default)(\"\").addClass(\"dx-tab-text\").text(that._getItemText(item))\r\n },\r\n selectedItem: this.option(\"currentView\"),\r\n tabIndex: this.option(\"tabIndex\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\")\r\n })\r\n },\r\n _getItemText: function(item) {\r\n return item.name || _message.default.format(\"dxScheduler-switcher\" + (0, _inflector.camelize)(item.type || item, true))\r\n },\r\n _refreshViewSwitcher: function() {\r\n this._viewSwitcher._dispose();\r\n this._viewSwitcher.$element().remove();\r\n delete this._viewSwitcher;\r\n this._removeViewSwitcherLabel();\r\n this._renderViewSwitcher()\r\n },\r\n _removeViewSwitcherLabel: function() {\r\n if ((0, _type.isDefined)(this._$viewSwitcherLabel)) {\r\n this._$viewSwitcherLabel.detach();\r\n this._$viewSwitcherLabel.remove();\r\n delete this._$viewSwitcherLabel\r\n }\r\n },\r\n _renderViewSwitcherDropDownMenu: function($element) {\r\n var that = this;\r\n this._$viewSwitcherLabel = (0, _renderer.default)(\"
\").addClass(VIEW_SWITCHER_LABEL_CLASS).appendTo(this.$element());\r\n this._changeViewSwitcherLabelText();\r\n this._viewSwitcher = this._createComponent($element, _drop_down_menu.default, {\r\n onItemClick: this._updateCurrentView.bind(this),\r\n buttonIcon: this.option(\"_dropDownButtonIcon\"),\r\n items: this.option(\"views\"),\r\n selectionMode: this.option(\"isAdaptive\") ? \"single\" : \"none\",\r\n selectedItemKeys: [this.option(\"currentView\")],\r\n itemTemplate: function(item) {\r\n return (0, _renderer.default)(\"\").addClass(\"dx-dropdownmenu-item-text\").text(that._getItemText(item))\r\n }\r\n })\r\n },\r\n _changeViewSwitcherLabelText: function() {\r\n if (!(0, _type.isDefined)(this._$viewSwitcherLabel)) {\r\n return\r\n }\r\n var currentView = this.option(\"currentView\");\r\n var currentViewText = this._getItemText(currentView);\r\n this._$viewSwitcherLabel.text(currentViewText)\r\n },\r\n _getCurrentViewName: function(currentView) {\r\n return (0, _type.isObject)(currentView) ? currentView.name || currentView.type : currentView\r\n },\r\n _updateCurrentView: function(e) {\r\n var selectedItem = e.itemData || e.component.option(\"selectedItem\");\r\n var viewName = this._getCurrentViewName(selectedItem);\r\n this.notifyObserver(\"currentViewUpdated\", viewName)\r\n },\r\n _renderFocusTarget: _common.noop\r\n}).include(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerHeader\", SchedulerHeader);\r\nvar _default = SchedulerHeader;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.navigator.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _ui2 = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nvar _calendar = _interopRequireDefault(require(\"../calendar\"));\r\nvar _popover = _interopRequireDefault(require(\"../popover\"));\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.publisher_mixin\"));\r\nvar _date2 = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _ui3 = _interopRequireDefault(require(\"../scroll_view/ui.scrollable\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar ELEMENT_CLASS = \"dx-scheduler-navigator\";\r\nvar CALENDAR_CLASS = \"dx-scheduler-navigator-calendar\";\r\nvar NEXT_BUTTON_CLASS = \"dx-scheduler-navigator-next\";\r\nvar CAPTION_BUTTON_CLASS = \"dx-scheduler-navigator-caption\";\r\nvar PREVIOUS_BUTTON_CLASS = \"dx-scheduler-navigator-previous\";\r\nvar CALENDAR_POPOVER_CLASS = \"dx-scheduler-navigator-calendar-popover\";\r\nvar MONDAY_INDEX = 1;\r\nvar getDefaultFirstDayOfWeekIndex = function(shift) {\r\n return shift ? MONDAY_INDEX : _date2.default.firstDayOfWeekIndex()\r\n};\r\nvar getDateMonthFormat = function(short) {\r\n return function(date) {\r\n var monthName = _date2.default.getMonthNames(short ? \"abbreviated\" : \"wide\")[date.getMonth()];\r\n return [_date2.default.format(date, \"day\"), monthName].join(\" \")\r\n }\r\n};\r\nvar getMonthYearFormat = function(date) {\r\n return _date2.default.getMonthNames(\"abbreviated\")[date.getMonth()] + \" \" + _date2.default.format(date, \"year\")\r\n};\r\nvar getCaptionFormat = function getCaptionFormat(short, intervalCount, duration) {\r\n var dateMonthFormat = getDateMonthFormat(short);\r\n return function(date) {\r\n if (intervalCount > 1) {\r\n var lastIntervalDate = new Date(date);\r\n var defaultViewDuration = duration;\r\n lastIntervalDate.setDate(date.getDate() + defaultViewDuration - 1);\r\n var isDifferentMonthDates = date.getMonth() !== lastIntervalDate.getMonth();\r\n var useShortFormat = isDifferentMonthDates || short;\r\n var firstWeekDateText = _date2.default.format(date, isDifferentMonthDates ? getDateMonthFormat(useShortFormat) : \"d\");\r\n var lastWeekDateText = _date2.default.format(lastIntervalDate, getCaptionFormat(useShortFormat));\r\n return firstWeekDateText + \"-\" + lastWeekDateText\r\n }\r\n return [dateMonthFormat(date), _date2.default.format(date, \"year\")].join(\" \")\r\n }\r\n};\r\nvar getWeekCaption = function(date, shift, rejectWeekend) {\r\n var firstDayOfWeek = this.option(\"firstDayOfWeek\");\r\n var firstDayOfWeekIndex = (0, _type.isDefined)(firstDayOfWeek) ? firstDayOfWeek : getDefaultFirstDayOfWeekIndex(shift);\r\n if (0 === firstDayOfWeekIndex && rejectWeekend) {\r\n firstDayOfWeekIndex = MONDAY_INDEX\r\n }\r\n var firstWeekDate = _date.default.getFirstWeekDate(date, firstDayOfWeekIndex);\r\n var weekendDuration = 2;\r\n if (rejectWeekend) {\r\n firstWeekDate = _date.default.normalizeDateByWeek(firstWeekDate, date)\r\n }\r\n if (firstDayOfWeek >= 6 && rejectWeekend) {\r\n firstWeekDate.setDate(firstWeekDate.getDate() + (7 - firstDayOfWeek + 1))\r\n }\r\n var lastWeekDate = new Date(firstWeekDate);\r\n var intervalCount = this.option(\"intervalCount\");\r\n shift = shift || 6;\r\n lastWeekDate = new Date(lastWeekDate.setDate(lastWeekDate.getDate() + (intervalCount > 1 ? 7 * (intervalCount - 1) + shift : shift)));\r\n if (lastWeekDate.getDay() % 6 === 0 && rejectWeekend) {\r\n lastWeekDate.setDate(lastWeekDate.getDate() + weekendDuration)\r\n }\r\n return {\r\n text: formatCaptionByMonths.call(this, lastWeekDate, firstWeekDate),\r\n startDate: firstWeekDate,\r\n endDate: lastWeekDate\r\n }\r\n};\r\nvar formatCaptionByMonths = function(lastDate, firstDate) {\r\n var isDifferentMonthDates = firstDate.getMonth() !== lastDate.getMonth();\r\n var isDifferentYears = firstDate.getFullYear() !== lastDate.getFullYear();\r\n var useShortFormat = isDifferentMonthDates || this.option(\"_useShortDateFormat\");\r\n var lastDateText;\r\n var firstDateText;\r\n if (isDifferentYears) {\r\n firstDateText = _date2.default.format(firstDate, getCaptionFormat(true));\r\n lastDateText = _date2.default.format(lastDate, getCaptionFormat(true))\r\n } else {\r\n firstDateText = _date2.default.format(firstDate, isDifferentMonthDates ? getDateMonthFormat(useShortFormat) : \"d\");\r\n lastDateText = _date2.default.format(lastDate, getCaptionFormat(useShortFormat))\r\n }\r\n return firstDateText + \"-\" + lastDateText\r\n};\r\nvar getMonthCaption = function(date) {\r\n var firstDate = new Date(_date.default.getFirstMonthDate(date));\r\n var lastDate = new Date(_date.default.getLastMonthDate(firstDate));\r\n var text;\r\n if (this.option(\"intervalCount\") > 1) {\r\n lastDate = new Date(firstDate);\r\n lastDate.setMonth(firstDate.getMonth() + this.option(\"intervalCount\") - 1);\r\n lastDate = new Date(_date.default.getLastMonthDate(lastDate));\r\n var isSameYear = firstDate.getYear() === lastDate.getYear();\r\n var lastDateText = getMonthYearFormat(lastDate);\r\n var firstDateText = isSameYear ? _date2.default.getMonthNames(\"abbreviated\")[firstDate.getMonth()] : getMonthYearFormat(firstDate);\r\n text = firstDateText + \"-\" + lastDateText\r\n } else {\r\n text = _date2.default.format(date, \"monthandyear\")\r\n }\r\n return {\r\n text: text,\r\n startDate: firstDate,\r\n endDate: lastDate\r\n }\r\n};\r\nvar dateGetter = function(date, offset) {\r\n return new Date(date[this.setter](date[this.getter]() + offset))\r\n};\r\nvar getConfig = function(step) {\r\n var agendaDuration;\r\n switch (step) {\r\n case \"day\":\r\n return {\r\n duration: 1 * this.option(\"intervalCount\"), setter: \"setDate\", getter: \"getDate\", getDate: dateGetter, getCaption: function(date) {\r\n var format = getCaptionFormat(false, this.option(\"intervalCount\"), this._getConfig().duration);\r\n return {\r\n text: _date2.default.format(date, format),\r\n startDate: date,\r\n endDate: date\r\n }\r\n }\r\n };\r\n case \"week\":\r\n return {\r\n duration: 7 * this.option(\"intervalCount\"), setter: \"setDate\", getter: \"getDate\", getDate: dateGetter, getCaption: getWeekCaption\r\n };\r\n case \"workWeek\":\r\n return {\r\n duration: 7 * this.option(\"intervalCount\"), setter: \"setDate\", getter: \"getDate\", getDate: dateGetter, getCaption: function(date) {\r\n return getWeekCaption.call(this, date, 4, true)\r\n }\r\n };\r\n case \"month\":\r\n return {\r\n duration: 1 * this.option(\"intervalCount\"), setter: \"setMonth\", getter: \"getMonth\", getDate: function(date, offset) {\r\n var currentDate = date.getDate();\r\n date.setDate(1);\r\n date = dateGetter.call(this, date, offset);\r\n var lastDate = _date.default.getLastMonthDay(date);\r\n date.setDate(currentDate < lastDate ? currentDate : lastDate);\r\n return date\r\n }, getCaption: getMonthCaption\r\n };\r\n case \"agenda\":\r\n agendaDuration = this.invoke(\"getAgendaDuration\");\r\n agendaDuration = (0, _type.isNumeric)(agendaDuration) && agendaDuration > 0 ? agendaDuration : 7;\r\n return {\r\n duration: agendaDuration, setter: \"setDate\", getter: \"getDate\", getDate: dateGetter, getCaption: function(date) {\r\n var format = getCaptionFormat(this.option(\"_useShortDateFormat\"));\r\n var firstDate = new Date(date);\r\n var lastDate = new Date(date);\r\n var text;\r\n if (agendaDuration > 1) {\r\n lastDate.setDate(lastDate.getDate() + agendaDuration - 1);\r\n text = formatCaptionByMonths.call(this, lastDate, date)\r\n } else {\r\n text = _date2.default.format(date, format)\r\n }\r\n return {\r\n text: text,\r\n startDate: firstDate,\r\n endDate: lastDate\r\n }\r\n }\r\n }\r\n }\r\n};\r\nvar SchedulerNavigator = _ui2.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n date: new Date,\r\n displayedDate: void 0,\r\n step: \"day\",\r\n intervalCount: 1,\r\n min: void 0,\r\n max: void 0,\r\n firstDayOfWeek: void 0,\r\n _useShortDateFormat: false,\r\n todayDate: function() {\r\n return new Date\r\n }\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return !_devices.default.real().generic || _devices.default.isSimulator()\r\n },\r\n options: {\r\n _useShortDateFormat: true\r\n }\r\n }])\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"step\":\r\n case \"date\":\r\n case \"intervalCount\":\r\n case \"displayedDate\":\r\n this._updateButtonsState();\r\n this._renderCaption();\r\n this._setCalendarOption(\"value\", this.option(\"date\"));\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n this._updateButtonsState();\r\n this._setCalendarOption(args.name, args.value);\r\n break;\r\n case \"firstDayOfWeek\":\r\n this._setCalendarOption(args.name, args.value);\r\n break;\r\n case \"customizeDateNavigatorText\":\r\n this._renderCaption();\r\n break;\r\n case \"tabIndex\":\r\n case \"focusStateEnabled\":\r\n this._next.option(args.name, args.value);\r\n this._caption.option(args.name, args.value);\r\n this._prev.option(args.name, args.value);\r\n this._setCalendarOption(args.name, args.value);\r\n this.callBase(args);\r\n break;\r\n case \"_useShortDateFormat\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(ELEMENT_CLASS);\r\n this._initButtons()\r\n },\r\n _initButtons: function() {\r\n var $next = (0, _renderer.default)(\"
\").addClass(NEXT_BUTTON_CLASS);\r\n this._next = this._createComponent($next, _button.default, {\r\n icon: \"chevronnext\",\r\n onClick: this._updateCurrentDate.bind(this, 1),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n tabIndex: this.option(\"tabIndex\"),\r\n integrationOptions: {}\r\n });\r\n var $caption = (0, _renderer.default)(\"
\").addClass(CAPTION_BUTTON_CLASS);\r\n this._caption = this._createComponent($caption, _button.default, {\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n tabIndex: this.option(\"tabIndex\"),\r\n integrationOptions: {}\r\n });\r\n var $prev = (0, _renderer.default)(\"
\").addClass(PREVIOUS_BUTTON_CLASS);\r\n this._prev = this._createComponent($prev, _button.default, {\r\n icon: \"chevronprev\",\r\n onClick: this._updateCurrentDate.bind(this, -1),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n tabIndex: this.option(\"tabIndex\"),\r\n integrationOptions: {}\r\n });\r\n this.setAria(\"label\", \"Next period\", $next);\r\n this.setAria(\"label\", \"Previous period\", $prev);\r\n this._updateButtonsState();\r\n this.$element().append($prev, $caption, $next)\r\n },\r\n _updateButtonsState: function() {\r\n var min = this.option(\"min\");\r\n var max = this.option(\"max\");\r\n var caption = this._getConfig().getCaption.call(this, this.option(\"displayedDate\") || this.option(\"date\"));\r\n min = min ? _date.default.trimTime(min) : min;\r\n max = max ? _date.default.trimTime(max) : max;\r\n max && max.setHours(23, 59, 59);\r\n this._prev.option(\"disabled\", min && !isNaN(min.getTime()) && this._getNextDate(-1, caption.endDate) < min);\r\n this._next.option(\"disabled\", max && !isNaN(max.getTime()) && this._getNextDate(1, caption.startDate) > max)\r\n },\r\n _updateCurrentDate: function(direction) {\r\n var date = this._getNextDate(direction);\r\n _date.default.normalizeDate(date, this.option(\"min\"), this.option(\"max\"));\r\n this.notifyObserver(\"currentDateUpdated\", date)\r\n },\r\n _getNextDate: function(direction) {\r\n var initialDate = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\r\n var stepConfig = this._getConfig();\r\n var offset = stepConfig.duration * direction;\r\n var date = stepConfig.getDate(new Date(initialDate || this.option(\"date\")), offset);\r\n return date\r\n },\r\n _renderFocusTarget: _common.noop,\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderCaption()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderPopover();\r\n this._renderCaptionKeys()\r\n },\r\n _isMobileLayout: function() {\r\n return !_devices.default.current().generic\r\n },\r\n _renderPopover: function() {\r\n var _this = this;\r\n var overlayType = this._isMobileLayout() ? _popup.default : _popover.default;\r\n var popoverContainer = (0, _renderer.default)(\"
\").addClass(CALENDAR_POPOVER_CLASS);\r\n this._popover = this._createComponent(popoverContainer, overlayType, {\r\n contentTemplate: function() {\r\n return _this._createPopupContent()\r\n },\r\n defaultOptionsRules: [{\r\n device: function() {\r\n return !_devices.default.current().generic\r\n },\r\n options: {\r\n fullScreen: true,\r\n showCloseButton: false,\r\n toolbarItems: [{\r\n shortcut: \"cancel\"\r\n }]\r\n }\r\n }, {\r\n device: function() {\r\n return _devices.default.current().generic\r\n },\r\n options: {\r\n target: this._caption.$element()\r\n }\r\n }]\r\n });\r\n this._popover.$element().appendTo(this.$element())\r\n },\r\n _createScrollable: function(content) {\r\n var result = this._createComponent((0, _renderer.default)(\"
\"), _ui3.default, {\r\n direction: \"vertical\"\r\n });\r\n result.$content().append(content);\r\n return result\r\n },\r\n _createPopupContent: function() {\r\n var result = (0, _renderer.default)(\"
\").addClass(CALENDAR_CLASS);\r\n this._calendar = this._createComponent(result, _calendar.default, this._calendarOptions());\r\n if (this._isMobileLayout()) {\r\n var scrollable = this._createScrollable(result);\r\n return scrollable.$element()\r\n }\r\n return result\r\n },\r\n _calendarOptions: function() {\r\n return {\r\n min: this.option(\"min\"),\r\n max: this.option(\"max\"),\r\n firstDayOfWeek: this.option(\"firstDayOfWeek\"),\r\n value: this.option(\"date\"),\r\n _todayDate: this.option(\"todayDate\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n onValueChanged: function(e) {\r\n if (!this.option(\"visible\")) {\r\n return\r\n }\r\n this.notifyObserver(\"currentDateUpdated\", e.value);\r\n this._popover.hide()\r\n }.bind(this),\r\n hasFocus: function() {\r\n return true\r\n },\r\n tabIndex: null\r\n }\r\n },\r\n _renderCaption: function() {\r\n var _this2 = this;\r\n var date = this.option(\"displayedDate\") || this.option(\"date\");\r\n var captionConfig = this._getConfig().getCaption.call(this, date);\r\n var customizationFunction = this.option(\"customizeDateNavigatorText\");\r\n var caption = (0, _type.isFunction)(customizationFunction) ? customizationFunction(captionConfig) : captionConfig.text;\r\n this._caption.option({\r\n text: caption,\r\n onKeyboardHandled: function(opts) {\r\n _this2.option(\"focusStateEnabled\") && !_this2.option(\"disabled\") && _this2._calendar._keyboardHandler(opts)\r\n },\r\n onClick: function() {\r\n return _this2._popover.toggle()\r\n }\r\n })\r\n },\r\n _renderCaptionKeys: function() {\r\n if (!this.option(\"focusStateEnabled\") || this.option(\"disabled\")) {\r\n return\r\n }\r\n var that = this;\r\n var executeHandler = function() {\r\n if (that._popover.$content().is(\":hidden\")) {\r\n that._popover.show()\r\n } else {\r\n return true\r\n }\r\n };\r\n var tabHandler = function() {\r\n that._popover.hide()\r\n };\r\n this._caption.registerKeyHandler(\"enter\", executeHandler);\r\n this._caption.registerKeyHandler(\"space\", executeHandler);\r\n this._caption.registerKeyHandler(\"tab\", tabHandler)\r\n },\r\n _setCalendarOption: function(name, value) {\r\n if (this._calendar) {\r\n this._calendar.option(name, value)\r\n }\r\n },\r\n _getConfig: function() {\r\n var step = this.option(\"step\");\r\n var config = getConfig.call(this, step);\r\n if (!config) {\r\n throw _ui.default.Error(\"E1033\", step)\r\n }\r\n return config\r\n }\r\n}).include(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerNavigator\", SchedulerNavigator);\r\nvar _default = SchedulerNavigator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.resource_manager.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _utils = require(\"../../data/data_source/utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar getValueExpr = function(resource) {\r\n return resource.valueExpr || \"id\"\r\n};\r\nvar getDisplayExpr = function(resource) {\r\n return resource.displayExpr || \"text\"\r\n};\r\nvar ResourceManager = function() {\r\n function ResourceManager(resources) {\r\n this._resourceLoader = {};\r\n this.setResources(resources)\r\n }\r\n var _proto = ResourceManager.prototype;\r\n _proto._createWrappedDataSource = function(dataSource) {\r\n if (dataSource instanceof _data_source.DataSource) {\r\n return dataSource\r\n }\r\n var result = {\r\n store: (0, _utils.normalizeDataSourceOptions)(dataSource).store,\r\n pageSize: 0\r\n };\r\n if (!Array.isArray(dataSource)) {\r\n result.filter = dataSource.filter\r\n }\r\n return new _data_source.DataSource(result)\r\n };\r\n _proto._mapResourceData = function(resource, data) {\r\n var valueGetter = (0, _data.compileGetter)(getValueExpr(resource));\r\n var displayGetter = (0, _data.compileGetter)(getDisplayExpr(resource));\r\n return (0, _iterator.map)(data, function(item) {\r\n var result = {\r\n id: valueGetter(item),\r\n text: displayGetter(item)\r\n };\r\n if (item.color) {\r\n result.color = item.color\r\n }\r\n return result\r\n })\r\n };\r\n _proto._isMultipleResource = function(resourceField) {\r\n var result = false;\r\n (0, _iterator.each)(this.getResources(), function(_, resource) {\r\n var field = this.getField(resource);\r\n if (field === resourceField) {\r\n result = resource.allowMultiple;\r\n return false\r\n }\r\n }.bind(this));\r\n return result\r\n };\r\n _proto.getDataAccessors = function(field, type) {\r\n var result = null;\r\n (0, _iterator.each)(this._dataAccessors[type], function(accessorName, accessors) {\r\n if (field === accessorName) {\r\n result = accessors;\r\n return false\r\n }\r\n });\r\n return result\r\n };\r\n _proto.getField = function(resource) {\r\n return resource.fieldExpr || resource.field\r\n };\r\n _proto.setResources = function(resources) {\r\n this._resources = resources;\r\n this._dataAccessors = {\r\n getter: {},\r\n setter: {}\r\n };\r\n this._resourceFields = (0, _iterator.map)(resources || [], function(resource) {\r\n var field = this.getField(resource);\r\n this._dataAccessors.getter[field] = (0, _data.compileGetter)(field);\r\n this._dataAccessors.setter[field] = (0, _data.compileSetter)(field);\r\n return field\r\n }.bind(this))\r\n };\r\n _proto.getResources = function() {\r\n return this._resources || []\r\n };\r\n _proto.getResourcesData = function() {\r\n return this._resourcesData || []\r\n };\r\n _proto.getEditors = function() {\r\n var result = [];\r\n var that = this;\r\n (0, _iterator.each)(this.getResources(), function(i, resource) {\r\n var field = that.getField(resource);\r\n var currentResourceItems = that._getResourceDataByField(field);\r\n result.push({\r\n editorOptions: {\r\n dataSource: currentResourceItems.length ? currentResourceItems : that._createWrappedDataSource(resource.dataSource),\r\n displayExpr: getDisplayExpr(resource),\r\n valueExpr: getValueExpr(resource)\r\n },\r\n dataField: field,\r\n editorType: resource.allowMultiple ? \"dxTagBox\" : \"dxSelectBox\",\r\n label: {\r\n text: resource.label || field\r\n }\r\n })\r\n });\r\n return result\r\n };\r\n _proto.getResourceDataByValue = function(field, value) {\r\n var that = this;\r\n var result = new _deferred.Deferred;\r\n (0, _iterator.each)(this.getResources(), function(_, resource) {\r\n var resourceField = that.getField(resource);\r\n if (resourceField === field) {\r\n var dataSource = that._createWrappedDataSource(resource.dataSource);\r\n var valueExpr = getValueExpr(resource);\r\n if (!that._resourceLoader[field]) {\r\n that._resourceLoader[field] = dataSource.load()\r\n }\r\n that._resourceLoader[field].done(function(data) {\r\n var filteredData = (0, _query.default)(data).filter(valueExpr, value).toArray();\r\n delete that._resourceLoader[field];\r\n result.resolve(filteredData[0])\r\n }).fail(function() {\r\n delete that._resourceLoader[field];\r\n result.reject()\r\n });\r\n return false\r\n }\r\n });\r\n return result.promise()\r\n };\r\n _proto.setResourcesToItem = function(itemData, resources) {\r\n var resourcesSetter = this._dataAccessors.setter;\r\n for (var name in resources) {\r\n if (Object.prototype.hasOwnProperty.call(resources, name)) {\r\n var resourceData = resources[name];\r\n resourcesSetter[name](itemData, this._isMultipleResource(name) ? (0, _array.wrapToArray)(resourceData) : resourceData)\r\n }\r\n }\r\n };\r\n _proto.getResourcesFromItem = function(itemData, wrapOnlyMultipleResources) {\r\n var _this = this;\r\n var result = null;\r\n if (!(0, _type.isDefined)(wrapOnlyMultipleResources)) {\r\n wrapOnlyMultipleResources = false\r\n }\r\n this._resourceFields.forEach(function(field) {\r\n (0, _iterator.each)(itemData, function(fieldName, fieldValue) {\r\n var tempObject = {};\r\n tempObject[fieldName] = fieldValue;\r\n var resourceData = _this.getDataAccessors(field, \"getter\")(tempObject);\r\n if ((0, _type.isDefined)(resourceData)) {\r\n if (!result) {\r\n result = {}\r\n }\r\n if (1 === resourceData.length) {\r\n resourceData = resourceData[0]\r\n }\r\n if (!wrapOnlyMultipleResources || wrapOnlyMultipleResources && _this._isMultipleResource(field)) {\r\n _this.getDataAccessors(field, \"setter\")(tempObject, (0, _array.wrapToArray)(resourceData))\r\n } else {\r\n _this.getDataAccessors(field, \"setter\")(tempObject, resourceData)\r\n }(0, _extend.extend)(result, tempObject);\r\n return true\r\n }\r\n })\r\n });\r\n return result\r\n };\r\n _proto.loadResources = function(groups) {\r\n var result = new _deferred.Deferred;\r\n var that = this;\r\n var deferreds = [];\r\n (0, _iterator.each)(this.getResourcesByFields(groups), function(i, resource) {\r\n var deferred = new _deferred.Deferred;\r\n var field = that.getField(resource);\r\n deferreds.push(deferred);\r\n that._createWrappedDataSource(resource.dataSource).load().done(function(data) {\r\n deferred.resolve({\r\n name: field,\r\n items: that._mapResourceData(resource, data),\r\n data: data\r\n })\r\n }).fail(function() {\r\n deferred.reject()\r\n })\r\n });\r\n if (!deferreds.length) {\r\n that._resourcesData = [];\r\n return result.resolve([])\r\n }\r\n _deferred.when.apply(null, deferreds).done(function() {\r\n var data = Array.prototype.slice.call(arguments);\r\n var mapFunction = function(obj) {\r\n return {\r\n name: obj.name,\r\n items: obj.items,\r\n data: obj.data\r\n }\r\n };\r\n that._resourcesData = data;\r\n result.resolve(data.map(mapFunction))\r\n }).fail(function() {\r\n result.reject()\r\n });\r\n return result.promise()\r\n };\r\n _proto.getResourcesByFields = function(fields) {\r\n return (0, _common.grep)(this.getResources(), function(resource) {\r\n var field = this.getField(resource);\r\n return (0, _array.inArray)(field, fields) > -1\r\n }.bind(this))\r\n };\r\n _proto.getResourceByField = function(field) {\r\n return this.getResourcesByFields([field])[0] || {}\r\n };\r\n _proto.getResourceColor = function(field, value) {\r\n var valueExpr = this.getResourceByField(field).valueExpr || \"id\";\r\n var valueGetter = (0, _data.compileGetter)(valueExpr);\r\n var colorExpr = this.getResourceByField(field).colorExpr || \"color\";\r\n var colorGetter = (0, _data.compileGetter)(colorExpr);\r\n var result = new _deferred.Deferred;\r\n var resourceData = this._getResourceDataByField(field);\r\n var resourceDataLength = resourceData.length;\r\n var color;\r\n if (resourceDataLength) {\r\n for (var i = 0; i < resourceDataLength; i++) {\r\n if (valueGetter(resourceData[i]) === value) {\r\n color = colorGetter(resourceData[i]);\r\n break\r\n }\r\n }\r\n result.resolve(color)\r\n } else {\r\n this.getResourceDataByValue(field, value).done(function(resourceData) {\r\n if (resourceData) {\r\n color = colorGetter(resourceData)\r\n }\r\n result.resolve(color)\r\n }).fail(function() {\r\n result.reject()\r\n })\r\n }\r\n return result.promise()\r\n };\r\n _proto.getResourceForPainting = function(groups) {\r\n var resources = this.getResources();\r\n var result;\r\n (0, _iterator.each)(resources, function(index, resource) {\r\n if (resource.useColorAsDefault) {\r\n result = resource;\r\n return false\r\n }\r\n });\r\n if (!result) {\r\n if (Array.isArray(groups) && groups.length) {\r\n resources = this.getResourcesByFields(groups)\r\n }\r\n result = resources[resources.length - 1]\r\n }\r\n return result\r\n };\r\n _proto.createResourcesTree = function(groups) {\r\n var leafIndex = 0;\r\n var groupIndex = groupIndex || 0;\r\n\r\n function make(group, groupIndex, result, parent) {\r\n result = result || [];\r\n for (var i = 0; i < group.items.length; i++) {\r\n var currentGroupItem = group.items[i];\r\n var resultItem = {\r\n name: group.name,\r\n value: currentGroupItem.id,\r\n title: currentGroupItem.text,\r\n data: group.data && group.data[i],\r\n children: [],\r\n parent: parent ? parent : null\r\n };\r\n result.push(resultItem);\r\n var nextGroupIndex = groupIndex + 1;\r\n if (groups[nextGroupIndex]) {\r\n make.call(this, groups[nextGroupIndex], nextGroupIndex, resultItem.children, resultItem)\r\n }\r\n if (!resultItem.children.length) {\r\n resultItem.leafIndex = leafIndex;\r\n leafIndex++\r\n }\r\n }\r\n return result\r\n }\r\n return make.call(this, groups[0], 0)\r\n };\r\n _proto._hasGroupItem = function(appointmentResources, groupName, itemValue) {\r\n var group = this.getDataAccessors(groupName, \"getter\")(appointmentResources);\r\n if (group) {\r\n if ((0, _array.inArray)(itemValue, group) > -1) {\r\n return true\r\n }\r\n }\r\n return false\r\n };\r\n _proto._getResourceDataByField = function(fieldName) {\r\n var loadedResources = this.getResourcesData();\r\n var currentResourceData = [];\r\n for (var i = 0, resourceCount = loadedResources.length; i < resourceCount; i++) {\r\n if (loadedResources[i].name === fieldName) {\r\n currentResourceData = loadedResources[i].data;\r\n break\r\n }\r\n }\r\n return currentResourceData\r\n };\r\n _proto.getResourceTreeLeaves = function(tree, appointmentResources, result) {\r\n result = result || [];\r\n for (var i = 0; i < tree.length; i++) {\r\n if (!this._hasGroupItem(appointmentResources, tree[i].name, tree[i].value)) {\r\n continue\r\n }\r\n if ((0, _type.isDefined)(tree[i].leafIndex)) {\r\n result.push(tree[i].leafIndex)\r\n }\r\n if (tree[i].children) {\r\n this.getResourceTreeLeaves(tree[i].children, appointmentResources, result)\r\n }\r\n }\r\n return result\r\n };\r\n _proto.groupAppointmentsByResources = function(appointments, resources) {\r\n var tree = this.createResourcesTree(resources);\r\n var result = {};\r\n (0, _iterator.each)(appointments, function(_, appointment) {\r\n var appointmentResources = this.getResourcesFromItem(appointment);\r\n var treeLeaves = this.getResourceTreeLeaves(tree, appointmentResources);\r\n for (var i = 0; i < treeLeaves.length; i++) {\r\n if (!result[treeLeaves[i]]) {\r\n result[treeLeaves[i]] = []\r\n }\r\n result[treeLeaves[i]].push((0, _object.deepExtendArraySafe)({}, appointment, true))\r\n }\r\n }.bind(this));\r\n return result\r\n };\r\n _proto.reduceResourcesTree = function(tree, existingAppointments, _result) {\r\n _result = _result ? _result.children : [];\r\n var that = this;\r\n tree.forEach(function(node, index) {\r\n var ok = false;\r\n var resourceName = node.name;\r\n var resourceValue = node.value;\r\n var resourceTitle = node.title;\r\n var resourceData = node.data;\r\n var resourceGetter = that.getDataAccessors(resourceName, \"getter\");\r\n existingAppointments.forEach(function(appointment) {\r\n if (!ok) {\r\n var resourceFromAppointment = resourceGetter(appointment);\r\n if (Array.isArray(resourceFromAppointment)) {\r\n if (resourceFromAppointment.indexOf(resourceValue) > -1) {\r\n _result.push({\r\n name: resourceName,\r\n value: resourceValue,\r\n title: resourceTitle,\r\n data: resourceData,\r\n children: []\r\n });\r\n ok = true\r\n }\r\n } else {\r\n if (resourceFromAppointment === resourceValue) {\r\n _result.push({\r\n name: resourceName,\r\n value: resourceValue,\r\n title: resourceTitle,\r\n data: resourceData,\r\n children: []\r\n });\r\n ok = true\r\n }\r\n }\r\n }\r\n });\r\n if (ok && node.children && node.children.length) {\r\n that.reduceResourcesTree(node.children, existingAppointments, _result[index])\r\n }\r\n });\r\n return _result\r\n };\r\n _proto.getResourcesDataByGroups = function(groups) {\r\n var _this2 = this;\r\n var resourcesData = this.getResourcesData();\r\n if (!groups) {\r\n return resourcesData\r\n }\r\n var fieldNames = Object.getOwnPropertyNames(groups);\r\n var resourceData = resourcesData.filter(function(item) {\r\n return fieldNames.indexOf(item.name) !== -1\r\n });\r\n var currentResourcesData = [];\r\n resourceData.forEach(function(data) {\r\n return currentResourcesData.push((0, _extend.extend)({}, data))\r\n });\r\n (0, _iterator.each)(groups, function(_, value) {\r\n currentResourcesData.forEach(function(resourceData) {\r\n var items = resourceData.items,\r\n data = resourceData.data,\r\n name = resourceData.name;\r\n var resource = _this2.getResourceByField(name);\r\n var valueExpr = getValueExpr(resource);\r\n var currentItems = items.filter(function(item) {\r\n return item.id === value\r\n });\r\n var currentData = data.filter(function(item) {\r\n return item[valueExpr] === value\r\n });\r\n resourceData.items = currentItems;\r\n resourceData.data = currentData\r\n })\r\n });\r\n return currentResourcesData\r\n };\r\n return ResourceManager\r\n}();\r\nexports.default = ResourceManager;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.subscribes.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _date2 = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _utils = _interopRequireDefault(require(\"./utils.timeZone\"));\r\nvar _constants = require(\"./constants\");\r\nvar _utils2 = _interopRequireDefault(require(\"./utils\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar HOURS_IN_DAY = 24;\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar HOUR_MS = toMs(\"hour\");\r\nvar subscribes = {\r\n getTimeZoneCalculator: function() {\r\n return this.timeZoneCalculator\r\n },\r\n isCurrentViewAgenda: function() {\r\n return \"agenda\" === this.option(\"currentView\")\r\n },\r\n currentViewUpdated: function(currentView) {\r\n this.option(\"currentView\", currentView)\r\n },\r\n currentDateUpdated: function(date) {\r\n this.option(\"currentDate\", date)\r\n },\r\n getOption: function(name) {\r\n return this.option(name)\r\n },\r\n isVirtualScrolling: function() {\r\n return this.isVirtualScrolling()\r\n },\r\n setCellDataCacheAlias: function(appointment, geometry) {\r\n this._workSpace.setCellDataCacheAlias(appointment, geometry)\r\n },\r\n createAppointmentSettings: function(appointment) {\r\n return this._getAppointmentSettingsGenerator().create(appointment)\r\n },\r\n isGroupedByDate: function() {\r\n return this.getWorkSpace().isGroupedByDate()\r\n },\r\n showAppointmentTooltip: function(options) {\r\n var targetedAppointment = this.getTargetedAppointment(options.data, options.target);\r\n this.showAppointmentTooltip(options.data, options.target, targetedAppointment)\r\n },\r\n hideAppointmentTooltip: function() {\r\n this.hideAppointmentTooltip()\r\n },\r\n showAddAppointmentPopup: function(cellData, cellGroups) {\r\n var appointmentAdapter = this.createAppointmentAdapter({});\r\n appointmentAdapter.allDay = cellData.allDay;\r\n appointmentAdapter.startDate = this.timeZoneCalculator.createDate(cellData.startDate, {\r\n path: \"fromGrid\"\r\n });\r\n appointmentAdapter.endDate = this.timeZoneCalculator.createDate(cellData.endDate, {\r\n path: \"fromGrid\"\r\n });\r\n var resultAppointment = (0, _extend.extend)(appointmentAdapter.source(), cellGroups);\r\n this.showAppointmentPopup(resultAppointment, true)\r\n },\r\n showEditAppointmentPopup: function(options) {\r\n var targetedData = this.getTargetedAppointment(options.data, options.target);\r\n this.showAppointmentPopup(options.data, false, targetedData)\r\n },\r\n updateAppointmentAfterResize: function(options) {\r\n var info = _utils2.default.dataAccessors.getAppointmentInfo(options.$appointment);\r\n var exceptionDate = info.sourceAppointment.exceptionDate;\r\n this._checkRecurringAppointment(options.target, options.data, exceptionDate, function() {\r\n this._updateAppointment(options.target, options.data, function() {\r\n this._appointments.moveAppointmentBack()\r\n })\r\n }.bind(this))\r\n },\r\n getUpdatedData: function(rawAppointment) {\r\n return this._getUpdatedData(rawAppointment)\r\n },\r\n updateAppointmentAfterDrag: function(_ref) {\r\n var event = _ref.event,\r\n element = _ref.element,\r\n rawAppointment = _ref.rawAppointment,\r\n coordinates = _ref.coordinates;\r\n var info = _utils2.default.dataAccessors.getAppointmentInfo(element);\r\n var appointment = this.createAppointmentAdapter(rawAppointment);\r\n var targetedAppointment = this.createAppointmentAdapter((0, _extend.extend)({}, rawAppointment, this._getUpdatedData(rawAppointment)));\r\n var targetedRawAppointment = targetedAppointment.source();\r\n var newCellIndex = this._workSpace.getDroppableCellIndex();\r\n var oldCellIndex = this._workSpace.getCellIndexByCoordinates(coordinates);\r\n var becomeAllDay = targetedAppointment.allDay;\r\n var wasAllDay = appointment.allDay;\r\n var movedBetweenAllDayAndSimple = this._workSpace.supportAllDayRow() && (wasAllDay && !becomeAllDay || !wasAllDay && becomeAllDay);\r\n if (newCellIndex !== oldCellIndex || movedBetweenAllDayAndSimple) {\r\n this._checkRecurringAppointment(rawAppointment, targetedRawAppointment, info.sourceAppointment.exceptionDate, function() {\r\n this._updateAppointment(rawAppointment, targetedRawAppointment, function() {\r\n this._appointments.moveAppointmentBack(event)\r\n }, event)\r\n }.bind(this), void 0, void 0, event)\r\n } else {\r\n this._appointments.moveAppointmentBack(event)\r\n }\r\n },\r\n onDeleteButtonPress: function(options) {\r\n var targetedData = this.getTargetedAppointment(options.data, (0, _renderer.default)(options.target));\r\n this.checkAndDeleteAppointment(options.data, targetedData);\r\n this.hideAppointmentTooltip()\r\n },\r\n getAppointmentColor: function(options) {\r\n var resourcesManager = this._resourcesManager;\r\n var resourceForPainting = resourcesManager.getResourceForPainting(this._getCurrentViewOption(\"groups\"));\r\n var response = (new _deferred.Deferred).resolve().promise();\r\n if (resourceForPainting) {\r\n var field = resourcesManager.getField(resourceForPainting);\r\n var groupIndex = options.groupIndex;\r\n var groups = this._workSpace._getCellGroups(groupIndex);\r\n var resourceValues = (0, _array.wrapToArray)(resourcesManager.getDataAccessors(field, \"getter\")(options.itemData));\r\n var groupId = resourceValues.length ? resourceValues[0] : void 0;\r\n for (var i = 0; i < groups.length; i++) {\r\n if (groups[i].name === field) {\r\n groupId = groups[i].id;\r\n break\r\n }\r\n }\r\n response = resourcesManager.getResourceColor(field, groupId)\r\n }\r\n return response\r\n },\r\n getHeaderHeight: function() {\r\n return this._header._$element && parseInt(this._header._$element.outerHeight(), 10)\r\n },\r\n getResourcesFromItem: function(itemData) {\r\n return this._resourcesManager.getResourcesFromItem(itemData)\r\n },\r\n getBoundOffset: function() {\r\n return {\r\n top: -this.getWorkSpaceAllDayHeight()\r\n }\r\n },\r\n appointmentTakesSeveralDays: function(appointment) {\r\n return this._appointmentModel.appointmentTakesSeveralDays(appointment)\r\n },\r\n getTextAndFormatDate: function(appointmentRaw, targetedAppointmentRaw, format) {\r\n var appointmentAdapter = this.createAppointmentAdapter(appointmentRaw);\r\n var targetedAdapter = this.createAppointmentAdapter(targetedAppointmentRaw || appointmentRaw);\r\n var startDate = this.timeZoneCalculator.createDate(targetedAdapter.startDate, {\r\n path: \"toGrid\"\r\n });\r\n var endDate = this.timeZoneCalculator.createDate(targetedAdapter.endDate, {\r\n path: \"toGrid\"\r\n });\r\n var formatType = format || this.fire(\"_getTypeFormat\", startDate, endDate, targetedAdapter.allDay);\r\n return {\r\n text: targetedAdapter.text || appointmentAdapter.text,\r\n formatDate: this.fire(\"_formatDates\", startDate, endDate, formatType)\r\n }\r\n },\r\n _getTypeFormat: function(startDate, endDate, isAllDay) {\r\n if (isAllDay) {\r\n return \"DATE\"\r\n }\r\n if (\"month\" !== this.option(\"currentView\") && _date.default.sameDate(startDate, endDate)) {\r\n return \"TIME\"\r\n }\r\n return \"DATETIME\"\r\n },\r\n _createAppointmentTitle: function(data) {\r\n if ((0, _type.isPlainObject)(data)) {\r\n return data.text\r\n }\r\n return String(data)\r\n },\r\n _formatDates: function(startDate, endDate, formatType) {\r\n var dateFormat = \"monthandday\";\r\n var timeFormat = \"shorttime\";\r\n var isSameDate = startDate.getDate() === endDate.getDate();\r\n switch (formatType) {\r\n case \"DATETIME\":\r\n return [_date2.default.format(startDate, dateFormat), \" \", _date2.default.format(startDate, timeFormat), \" - \", isSameDate ? \"\" : _date2.default.format(endDate, dateFormat) + \" \", _date2.default.format(endDate, timeFormat)].join(\"\");\r\n case \"TIME\":\r\n return \"\".concat(_date2.default.format(startDate, timeFormat), \" - \").concat(_date2.default.format(endDate, timeFormat));\r\n case \"DATE\":\r\n return \"\".concat(_date2.default.format(startDate, dateFormat)).concat(isSameDate ? \"\" : \" - \" + _date2.default.format(endDate, dateFormat))\r\n }\r\n },\r\n getResizableAppointmentArea: function(options) {\r\n var allDay = options.allDay;\r\n var groups = this._getCurrentViewOption(\"groups\");\r\n if (groups && groups.length) {\r\n if (allDay || this.getLayoutManager().getRenderingStrategyInstance()._needHorizontalGroupBounds()) {\r\n var horizontalGroupBounds = this._workSpace.getGroupBounds(options.coordinates);\r\n return {\r\n left: horizontalGroupBounds.left,\r\n right: horizontalGroupBounds.right,\r\n top: 0,\r\n bottom: 0\r\n }\r\n }\r\n if (this.getLayoutManager().getRenderingStrategyInstance()._needVerticalGroupBounds(allDay) && this._workSpace._isVerticalGroupedWorkSpace()) {\r\n var verticalGroupBounds = this._workSpace.getGroupBounds(options.coordinates);\r\n return {\r\n left: 0,\r\n right: 0,\r\n top: verticalGroupBounds.top,\r\n bottom: verticalGroupBounds.bottom\r\n }\r\n }\r\n }\r\n },\r\n needRecalculateResizableArea: function() {\r\n return this.getWorkSpace().needRecalculateResizableArea()\r\n },\r\n getAppointmentGeometry: function(settings) {\r\n return this.getLayoutManager().getRenderingStrategyInstance().getAppointmentGeometry(settings)\r\n },\r\n isAllDay: function(appointmentData) {\r\n return this.getLayoutManager().getRenderingStrategyInstance().isAllDay(appointmentData)\r\n },\r\n getDeltaTime: function(e, initialSize, itemData) {\r\n return this.getLayoutManager().getRenderingStrategyInstance().getDeltaTime(e, initialSize, itemData)\r\n },\r\n getDropDownAppointmentWidth: function(isAllDay) {\r\n return this.getLayoutManager().getRenderingStrategyInstance().getDropDownAppointmentWidth(this._getViewCountConfig().intervalCount, isAllDay)\r\n },\r\n getDropDownAppointmentHeight: function() {\r\n return this.getLayoutManager().getRenderingStrategyInstance().getDropDownAppointmentHeight()\r\n },\r\n getCellWidth: function() {\r\n return this.getWorkSpace().getCellWidth()\r\n },\r\n getCellHeight: function() {\r\n return this.getWorkSpace().getCellHeight()\r\n },\r\n getResizableStep: function() {\r\n var workSpace = this.getWorkSpace();\r\n var cellWidth = workSpace.getCellWidth();\r\n if (workSpace.isGroupedByDate()) {\r\n return workSpace._getGroupCount() * cellWidth\r\n }\r\n return cellWidth\r\n },\r\n getRenderingStrategy: function() {\r\n return this._getAppointmentsRenderingStrategy()\r\n },\r\n getMaxAppointmentCountPerCellByType: function(isAllDay) {\r\n return this.getRenderingStrategyInstance()._getMaxAppointmentCountPerCellByType(isAllDay)\r\n },\r\n needCorrectAppointmentDates: function() {\r\n return this.getRenderingStrategyInstance().needCorrectAppointmentDates()\r\n },\r\n getRenderingStrategyDirection: function() {\r\n return this.getRenderingStrategyInstance().getDirection()\r\n },\r\n getWorkSpaceDateTableOffset: function() {\r\n return this.getWorkSpaceDateTableOffset()\r\n },\r\n getFullWeekAppointmentWidth: function(options) {\r\n var groupIndex = options.groupIndex;\r\n return this._workSpace.getGroupWidth(groupIndex)\r\n },\r\n getMaxAppointmentWidth: function(options) {\r\n var workSpace = this._workSpace;\r\n return workSpace.getCellCountToLastViewDate(options.date) * workSpace.getCellWidth()\r\n },\r\n updateAppointmentStartDate: function(options) {\r\n var appointment = options.appointment;\r\n var firstViewDate = this._workSpace.getStartViewDate();\r\n var startDate = new Date(options.startDate);\r\n var startDayHour = this._getCurrentViewOption(\"startDayHour\");\r\n var updatedStartDate;\r\n if (this.appointmentTakesAllDay(appointment)) {\r\n updatedStartDate = _date.default.normalizeDate(startDate, firstViewDate)\r\n } else {\r\n if (startDate < firstViewDate) {\r\n startDate = firstViewDate\r\n }\r\n updatedStartDate = _date.default.normalizeDate(options.startDate, new Date(startDate))\r\n }\r\n return _date.default.roundDateByStartDayHour(updatedStartDate, startDayHour)\r\n },\r\n updateAppointmentEndDate: function(options) {\r\n var endDate = options.endDate;\r\n var endDayHour = this._getCurrentViewOption(\"endDayHour\");\r\n var startDayHour = this._getCurrentViewOption(\"startDayHour\");\r\n var updatedEndDate = endDate;\r\n if (endDate.getHours() >= endDayHour) {\r\n updatedEndDate.setHours(endDayHour, 0, 0, 0)\r\n } else {\r\n if (!options.isSameDate && startDayHour > 0 && 60 * endDate.getHours() + endDate.getMinutes() < 60 * startDayHour) {\r\n updatedEndDate = new Date(updatedEndDate.getTime() - toMs(\"day\"));\r\n updatedEndDate.setHours(endDayHour, 0, 0, 0)\r\n }\r\n }\r\n return updatedEndDate\r\n },\r\n renderCompactAppointments: function(options) {\r\n this._compactAppointmentsHelper.render(options)\r\n },\r\n clearCompactAppointments: function() {\r\n this._compactAppointmentsHelper.clear()\r\n },\r\n supportCompactDropDownAppointments: function() {\r\n return this._workSpace._supportCompactDropDownAppointments()\r\n },\r\n isApplyCompactAppointmentOffset: function() {\r\n return this._workSpace._isApplyCompactAppointmentOffset()\r\n },\r\n getGroupCount: function() {\r\n return this._workSpace._getGroupCount()\r\n },\r\n mapAppointmentFields: function(config) {\r\n var targetedData = this.getTargetedAppointment(config.itemData, config.itemElement);\r\n return {\r\n appointmentData: config.itemData,\r\n appointmentElement: config.itemElement,\r\n targetedAppointmentData: targetedData\r\n }\r\n },\r\n getOffsetByAllDayPanel: function(groupIndex) {\r\n return this._workSpace._getOffsetByAllDayPanel(groupIndex)\r\n },\r\n getGroupTop: function(groupIndex) {\r\n return this._workSpace._getGroupTop(groupIndex)\r\n },\r\n updateResizableArea: function() {\r\n var $allResizableElements = this.$element().find(\".dx-scheduler-appointment.dx-resizable\");\r\n var horizontalResizables = (0, _common.grep)($allResizableElements, function(el) {\r\n var $el = (0, _renderer.default)(el);\r\n var resizableInst = $el.dxResizable(\"instance\");\r\n var area = resizableInst.option(\"area\");\r\n return (0, _array.inArray)(resizableInst.option(\"handles\"), [\"right left\", \"left right\"]) > -1 && (0, _type.isPlainObject)(area)\r\n });\r\n (0, _iterator.each)(horizontalResizables, function(_, el) {\r\n var $el = (0, _renderer.default)(el);\r\n var position = (0, _translator.locate)($el);\r\n var appointmentData = this._appointments._getItemData($el);\r\n var area = this._appointments._calculateResizableArea({\r\n left: position.left\r\n }, appointmentData);\r\n $el.dxResizable(\"instance\").option(\"area\", area)\r\n }.bind(this))\r\n },\r\n getField: function(field, obj) {\r\n if (!(0, _type.isDefined)(this._dataAccessors.getter[field])) {\r\n return\r\n }\r\n return this._dataAccessors.getter[field](obj)\r\n },\r\n setField: function(field, obj, value) {\r\n if (!(0, _type.isDefined)(this._dataAccessors.setter[field])) {\r\n return\r\n }\r\n var splitExprStr = this.option(field + \"Expr\").split(\".\");\r\n var rootField = splitExprStr[0];\r\n if (void 0 === obj[rootField] && splitExprStr.length > 1) {\r\n var emptyChain = function(arr) {\r\n var result = {};\r\n var tmp = result;\r\n var arrLength = arr.length - 1;\r\n for (var i = 1; i < arrLength; i++) {\r\n tmp = tmp[arr[i]] = {}\r\n }\r\n return result\r\n }(splitExprStr);\r\n obj[rootField] = emptyChain\r\n }\r\n this._dataAccessors.setter[field](obj, value);\r\n return obj\r\n },\r\n renderAppointments: function() {\r\n this._renderAppointments()\r\n },\r\n prerenderFilter: function() {\r\n var dateRange = this.getWorkSpace().getDateRange();\r\n var resources = this._resourcesManager.getResourcesData();\r\n var startDayHour = this._getCurrentViewOption(\"startDayHour\");\r\n var endDayHour = this._getCurrentViewOption(\"endDayHour\");\r\n var allDay;\r\n if (!this.option(\"showAllDayPanel\") && this._workSpace.supportAllDayRow()) {\r\n allDay = false\r\n }\r\n return this._appointmentModel.filterLoadedAppointments({\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour,\r\n viewStartDayHour: startDayHour,\r\n viewEndDayHour: endDayHour,\r\n min: dateRange[0],\r\n max: dateRange[1],\r\n resources: resources,\r\n allDay: allDay,\r\n firstDayOfWeek: this.getFirstDayOfWeek(),\r\n recurrenceException: this._getRecurrenceException.bind(this)\r\n }, this.timeZoneCalculator)\r\n },\r\n prerenderFilterVirtual: function() {\r\n var _this = this;\r\n var workspace = this.getWorkSpace();\r\n var resourcesManager = this._resourcesManager;\r\n var isAllDaySupported = this.option(\"showAllDayPanel\") || !this._workSpace.supportAllDayRow();\r\n var viewDataProvider = workspace.viewDataProvider;\r\n var groupedData = viewDataProvider.viewData.groupedData;\r\n var groupedDataToRender = groupedData.filter(function(_ref2) {\r\n var dateTable = _ref2.dateTable;\r\n return dateTable.length > 0\r\n });\r\n var isVerticalGrouping = workspace._isVerticalGroupedWorkSpace();\r\n var endViewDate = workspace.getEndViewDateByEndDayHour();\r\n var filterOptions = [];\r\n groupedDataToRender.forEach(function(_ref3) {\r\n var groupIndex = _ref3.groupIndex,\r\n allDayPanel = _ref3.allDayPanel;\r\n var startDate = viewDataProvider.getGroupStartDate(groupIndex);\r\n var endDate = new Date(Math.min(viewDataProvider.getGroupEndDate(groupIndex), endViewDate));\r\n var startDayHour = startDate.getHours();\r\n var endDayHour = (startDayHour + (endDate - startDate) / HOUR_MS) % HOURS_IN_DAY;\r\n var allDay = false !== isAllDaySupported && (null === allDayPanel || void 0 === allDayPanel ? void 0 : allDayPanel.length) > 0;\r\n var groups = viewDataProvider.getCellsGroup(groupIndex);\r\n var groupResources = isVerticalGrouping ? resourcesManager.getResourcesDataByGroups(groups) : resourcesManager.getResourcesData();\r\n filterOptions.push({\r\n isVirtualScrolling: true,\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour,\r\n viewStartDayHour: _this._getCurrentViewOption(\"startDayHour\"),\r\n viewEndDayHour: _this._getCurrentViewOption(\"endDayHour\"),\r\n min: startDate,\r\n max: endDate,\r\n resources: groupResources,\r\n allDay: allDay,\r\n firstDayOfWeek: _this.getFirstDayOfWeek(),\r\n recurrenceException: _this._getRecurrenceException.bind(_this)\r\n })\r\n });\r\n var result = this._appointmentModel.filterLoadedVirtualAppointments(filterOptions, this.timeZoneCalculator, workspace._getGroupCount());\r\n return result\r\n },\r\n dayHasAppointment: function(day, appointment, trimTime) {\r\n return this.dayHasAppointment(day, appointment, trimTime)\r\n },\r\n createResourcesTree: function() {\r\n return this._resourcesManager.createResourcesTree(this._loadedResources)\r\n },\r\n getResourceTreeLeaves: function(tree, appointmentResources) {\r\n return this._resourcesManager.getResourceTreeLeaves(tree, appointmentResources)\r\n },\r\n createReducedResourcesTree: function() {\r\n var tree = this._resourcesManager.createResourcesTree(this._loadedResources);\r\n return this._resourcesManager.reduceResourcesTree(tree, this.getFilteredItems())\r\n },\r\n groupAppointmentsByResources: function(appointments) {\r\n var result = {\r\n 0: appointments\r\n };\r\n var groups = this._getCurrentViewOption(\"groups\");\r\n if (groups && groups.length && this._resourcesManager.getResourcesData().length) {\r\n result = this._resourcesManager.groupAppointmentsByResources(appointments, this._loadedResources)\r\n }\r\n var totalResourceCount = 0;\r\n (0, _iterator.each)(this._loadedResources, function(i, resource) {\r\n if (!i) {\r\n totalResourceCount = resource.items.length\r\n } else {\r\n totalResourceCount *= resource.items.length\r\n }\r\n });\r\n for (var j = 0; j < totalResourceCount; j++) {\r\n var index = j.toString();\r\n if (result[index]) {\r\n continue\r\n }\r\n result[index] = []\r\n }\r\n return result\r\n },\r\n getAgendaRows: function(options) {\r\n var renderingStrategy = this._layoutManager.getRenderingStrategyInstance();\r\n var calculateRows = renderingStrategy.calculateRows.bind(renderingStrategy);\r\n var d = new _deferred.Deferred;\r\n\r\n function rowsCalculated(appointments) {\r\n var result = calculateRows(appointments, options.agendaDuration, options.currentDate);\r\n this._dataSourceLoadedCallback.remove(rowsCalculated);\r\n d.resolve(result)\r\n }\r\n this._dataSourceLoadedCallback.add(rowsCalculated);\r\n return d.promise()\r\n },\r\n getAgendaVerticalStepHeight: function() {\r\n return this.getWorkSpace().getAgendaVerticalStepHeight()\r\n },\r\n getAgendaDuration: function() {\r\n return this._getCurrentViewOption(\"agendaDuration\")\r\n },\r\n getStartViewDate: function() {\r\n return this.getStartViewDate()\r\n },\r\n getEndViewDate: function() {\r\n return this.getEndViewDate()\r\n },\r\n getMaxAppointmentsPerCell: function() {\r\n return this.getMaxAppointmentsPerCell()\r\n },\r\n forceMaxAppointmentPerCell: function() {\r\n return this.forceMaxAppointmentPerCell()\r\n },\r\n onAgendaReady: function(rows) {\r\n var $appts = this.getAppointmentsInstance()._itemElements();\r\n var total = 0;\r\n var applyClass = function(_, count) {\r\n var index = count + total - 1;\r\n $appts.eq(index).addClass(_constants.AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS);\r\n total += count\r\n };\r\n for (var i = 0; i < rows.length; i++) {\r\n (0, _iterator.each)(rows[i], applyClass)\r\n }\r\n },\r\n getTimezone: function() {\r\n return this._getTimezoneOffsetByOption()\r\n },\r\n getTargetedAppointmentData: function(appointment, element) {\r\n return this.getTargetedAppointment(appointment, element)\r\n },\r\n getAppointmentDurationInMs: function(options) {\r\n var startDate = options.startDate;\r\n var endDate = options.endDate;\r\n var allDay = options.allDay;\r\n var appointmentDuration = endDate.getTime() - startDate.getTime();\r\n var dayDuration = toMs(\"day\");\r\n var visibleDayDuration = this._workSpace.getVisibleDayDuration();\r\n var result = 0;\r\n if (allDay) {\r\n var ceilQuantityOfDays = Math.ceil(appointmentDuration / dayDuration);\r\n result = ceilQuantityOfDays * visibleDayDuration\r\n } else {\r\n var isDifferentDates = !_utils.default.isSameAppointmentDates(startDate, endDate);\r\n var floorQuantityOfDays = Math.floor(appointmentDuration / dayDuration);\r\n var tailDuration;\r\n if (isDifferentDates) {\r\n var startDateEndHour = new Date(new Date(startDate).setHours(this.option(\"endDayHour\"), 0, 0));\r\n var hiddenDayDuration = dayDuration - visibleDayDuration - (startDate.getTime() > startDateEndHour.getTime() ? startDate.getTime() - startDateEndHour.getTime() : 0);\r\n tailDuration = appointmentDuration - (floorQuantityOfDays ? floorQuantityOfDays * dayDuration : hiddenDayDuration);\r\n var startDayTime = this.option(\"startDayHour\") * toMs(\"hour\");\r\n var endPartDuration = endDate - _date.default.trimTime(endDate);\r\n if (endPartDuration < startDayTime) {\r\n if (floorQuantityOfDays) {\r\n tailDuration -= hiddenDayDuration\r\n }\r\n tailDuration += startDayTime - endPartDuration\r\n }\r\n } else {\r\n tailDuration = appointmentDuration % dayDuration\r\n }\r\n if (tailDuration > visibleDayDuration) {\r\n tailDuration = visibleDayDuration\r\n }\r\n result = floorQuantityOfDays * visibleDayDuration + tailDuration || toMs(\"minute\")\r\n }\r\n return result\r\n },\r\n replaceWrongEndDate: function(appointment, startDate, endDate) {\r\n this._appointmentModel.replaceWrongEndDate(appointment, startDate, endDate)\r\n },\r\n calculateAppointmentEndDate: function(isAllDay, startDate) {\r\n return this._appointmentModel._calculateAppointmentEndDate(isAllDay, startDate)\r\n },\r\n getEndDayHour: function() {\r\n return this._workSpace.option(\"endDayHour\") || this.option(\"endDayHour\")\r\n },\r\n getStartDayHour: function() {\r\n return this._workSpace.option(\"startDayHour\") || this.option(\"startDayHour\")\r\n },\r\n isAdaptive: function() {\r\n return this.option(\"adaptivityEnabled\")\r\n },\r\n validateDayHours: function() {\r\n var endDayHour = this._getCurrentViewOption(\"endDayHour\");\r\n var startDayHour = this._getCurrentViewOption(\"startDayHour\");\r\n if (startDayHour >= endDayHour) {\r\n throw _ui.default.Error(\"E1058\")\r\n }\r\n },\r\n removeDroppableCellClass: function() {\r\n this._workSpace.removeDroppableCellClass()\r\n }\r\n};\r\nvar _default = subscribes;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.publisher_mixin.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar publisherMixin = {\r\n notifyObserver: function(subject, args) {\r\n var observer = this.option(\"observer\");\r\n if (observer) {\r\n observer.fire(subject, args)\r\n }\r\n },\r\n invoke: function() {\r\n var observer = this.option(\"observer\");\r\n if (observer) {\r\n return observer.fire.apply(observer, arguments)\r\n }\r\n }\r\n};\r\nvar _default = publisherMixin;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/ui.scheduler.table_creator.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _element_data = require(\"../../core/element_data\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _element = require(\"../../core/element\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar ROW_SELECTOR = \"tr\";\r\nvar SchedulerTableCreator = function() {\r\n function SchedulerTableCreator() {\r\n this.VERTICAL = \"vertical\";\r\n this.HORIZONTAL = \"horizontal\"\r\n }\r\n var _proto = SchedulerTableCreator.prototype;\r\n _proto.insertAllDayRow = function(allDayElements, tableBody, index) {\r\n if (allDayElements[index]) {\r\n var row = allDayElements[index].find(ROW_SELECTOR);\r\n if (!row.length) {\r\n row = (0, _renderer.default)(_dom_adapter.default.createElement(ROW_SELECTOR));\r\n row.append(allDayElements[index].get(0))\r\n }\r\n tableBody.appendChild(row.get ? row.get(0) : row)\r\n }\r\n };\r\n _proto.makeTable = function(options) {\r\n var tableBody = _dom_adapter.default.createElement(\"tbody\");\r\n var templateCallbacks = [];\r\n var row;\r\n var rowCountInGroup = options.groupCount ? options.rowCount / options.groupCount : options.rowCount;\r\n var allDayElementIndex = 0;\r\n var allDayElements = options.allDayElements;\r\n var groupIndex = options.groupIndex;\r\n var rowCount = options.rowCount;\r\n (0, _renderer.default)(options.container).append(tableBody);\r\n if (allDayElements) {\r\n this.insertAllDayRow(allDayElements, tableBody, 0);\r\n allDayElementIndex++\r\n }\r\n for (var i = 0; i < rowCount; i++) {\r\n row = _dom_adapter.default.createElement(ROW_SELECTOR);\r\n tableBody.appendChild(row);\r\n var isLastRowInGroup = (i + 1) % rowCountInGroup === 0;\r\n if (options.rowClass) {\r\n row.className = options.rowClass\r\n }\r\n for (var j = 0; j < options.cellCount; j++) {\r\n var td = _dom_adapter.default.createElement(\"td\");\r\n row.appendChild(td);\r\n if (options.cellClass) {\r\n if ((0, _type.isFunction)(options.cellClass)) {\r\n td.className = options.cellClass(i, j)\r\n } else {\r\n td.className = options.cellClass\r\n }\r\n }\r\n var cellDataObject = void 0;\r\n var dataKey = void 0;\r\n var dataValue = void 0;\r\n if (options.getCellData) {\r\n cellDataObject = options.getCellData(td, i, j, groupIndex);\r\n dataKey = cellDataObject.key;\r\n dataValue = cellDataObject.value;\r\n dataKey && (0, _element_data.data)(td, dataKey, dataValue)\r\n }\r\n if (options.cellTemplate && options.cellTemplate.render) {\r\n var templateOptions = {\r\n model: {\r\n text: options.getCellText ? options.getCellText(i, j) : \"\",\r\n date: options.getCellDate ? options.getCellDate(i) : void 0\r\n },\r\n container: (0, _element.getPublicElement)((0, _renderer.default)(td)),\r\n index: i * options.cellCount + j\r\n };\r\n if (dataValue) {\r\n if (dataValue.startDate) {\r\n templateOptions.model.startDate = dataValue.startDate\r\n }\r\n if (dataValue.endDate) {\r\n templateOptions.model.endDate = dataValue.endDate\r\n }\r\n if (dataValue.groups) {\r\n templateOptions.model.groups = dataValue.groups\r\n }\r\n if (dataValue.allDay) {\r\n templateOptions.model.allDay = dataValue.allDay\r\n }\r\n }\r\n templateCallbacks.push(options.cellTemplate.render.bind(options.cellTemplate, templateOptions))\r\n } else {\r\n if (options.getCellText) {\r\n td.innerHTML = \"
\" + options.getCellText(i, j) + \"
\"\r\n }\r\n }\r\n }\r\n if (allDayElements && isLastRowInGroup) {\r\n this.insertAllDayRow(allDayElements, tableBody, allDayElementIndex);\r\n allDayElementIndex++\r\n }\r\n }\r\n return templateCallbacks\r\n };\r\n _proto.makeGroupedTable = function(type, groups, cssClasses, cellCount, cellTemplate, rowCount, groupByDate) {\r\n var rows = [];\r\n if (type === this.VERTICAL) {\r\n rows = this._makeVerticalGroupedRows(groups, cssClasses, cellTemplate, rowCount)\r\n } else {\r\n rows = this._makeHorizontalGroupedRows(groups, cssClasses, cellCount, cellTemplate, groupByDate)\r\n }\r\n return rows\r\n };\r\n _proto.makeGroupedTableFromJSON = function(type, data, config) {\r\n var table;\r\n var cellStorage = [];\r\n var rowIndex = 0;\r\n config = config || {};\r\n var cellTag = config.cellTag || \"td\";\r\n var childrenField = config.childrenField || \"children\";\r\n var titleField = config.titleField || \"title\";\r\n var groupTableClass = config.groupTableClass;\r\n var groupRowClass = config.groupRowClass;\r\n var groupCellClass = config.groupCellClass;\r\n var groupCellCustomContent = config.groupCellCustomContent;\r\n\r\n function createTable() {\r\n table = _dom_adapter.default.createElement(\"table\");\r\n if (groupTableClass) {\r\n table.className = groupTableClass\r\n }\r\n }\r\n\r\n function getChildCount(item) {\r\n if (item[childrenField]) {\r\n return item[childrenField].length\r\n }\r\n return 0\r\n }\r\n\r\n function createCell(text, childCount, index, data) {\r\n var cell = {\r\n element: _dom_adapter.default.createElement(cellTag),\r\n childCount: childCount\r\n };\r\n if (groupCellClass) {\r\n cell.element.className = groupCellClass\r\n }\r\n var cellText = _dom_adapter.default.createTextNode(text);\r\n if (\"function\" === typeof groupCellCustomContent) {\r\n groupCellCustomContent(cell.element, cellText, index, data)\r\n } else {\r\n cell.element.appendChild(cellText)\r\n }\r\n return cell\r\n }\r\n\r\n function generateCells(data) {\r\n for (var i = 0; i < data.length; i++) {\r\n var childCount = getChildCount(data[i]);\r\n var cell = createCell(data[i][titleField], childCount, i, data[i]);\r\n if (!cellStorage[rowIndex]) {\r\n cellStorage[rowIndex] = []\r\n }\r\n cellStorage[rowIndex].push(cell);\r\n if (childCount) {\r\n generateCells(data[i][childrenField])\r\n } else {\r\n rowIndex++\r\n }\r\n }\r\n }\r\n\r\n function putCellsToRows() {\r\n cellStorage.forEach(function(cells) {\r\n var row = _dom_adapter.default.createElement(ROW_SELECTOR);\r\n if (groupRowClass) {\r\n row.className = groupRowClass\r\n }\r\n var rowspans = [];\r\n for (var i = cells.length - 1; i >= 0; i--) {\r\n var prev = cells[i + 1];\r\n var rowspan = cells[i].childCount;\r\n if (prev && prev.childCount) {\r\n rowspan *= prev.childCount\r\n }\r\n rowspans.push(rowspan)\r\n }\r\n rowspans.reverse();\r\n cells.forEach(function(cell, index) {\r\n if (rowspans[index]) {\r\n cell.element.setAttribute(\"rowSpan\", rowspans[index])\r\n }\r\n row.appendChild(cell.element)\r\n });\r\n table.appendChild(row)\r\n })\r\n }\r\n createTable();\r\n generateCells(data);\r\n putCellsToRows();\r\n return table\r\n };\r\n _proto._makeFlexGroupedRowCells = function(group, repeatCount, cssClasses, cellTemplate) {\r\n var repeatByDate = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 1;\r\n var cells = [];\r\n var items = group.items;\r\n var itemCount = items.length;\r\n for (var i = 0; i < repeatCount * repeatByDate; i++) {\r\n for (var j = 0; j < itemCount; j++) {\r\n var $container = (0, _renderer.default)(\"
\");\r\n var cell = {};\r\n if (cellTemplate && cellTemplate.render) {\r\n var templateOptions = {\r\n model: items[j],\r\n container: (0, _element.getPublicElement)($container),\r\n index: i * itemCount + j\r\n };\r\n if (group.data) {\r\n templateOptions.model.data = group.data[j]\r\n }\r\n cell.template = cellTemplate.render.bind(cellTemplate, templateOptions)\r\n } else {\r\n $container.text(items[j].text).attr(\"title\", items[j].text).addClass(\"dx-scheduler-group-header-content\");\r\n $container = (0, _renderer.default)(\"
\").append($container)\r\n }\r\n var cssClass = (0, _type.isFunction)(cssClasses.groupHeaderClass) ? cssClasses.groupHeaderClass(j) : cssClasses.groupHeaderClass;\r\n cell.element = $container.addClass(cssClass);\r\n cells.push(cell)\r\n }\r\n }\r\n return cells\r\n };\r\n _proto._makeVerticalGroupedRows = function(groups, cssClasses, cellTemplate) {\r\n var cellTemplates = [];\r\n var repeatCount = 1;\r\n var cellsArray = [];\r\n var cellIterator = function(cell) {\r\n if (cell.template) {\r\n cellTemplates.push(cell.template)\r\n }\r\n };\r\n for (var i = 0; i < groups.length; i++) {\r\n if (i > 0) {\r\n repeatCount = groups[i - 1].items.length * repeatCount\r\n }\r\n var cells = this._makeFlexGroupedRowCells(groups[i], repeatCount, cssClasses, cellTemplate);\r\n cells.forEach(cellIterator);\r\n cellsArray.push(cells)\r\n }\r\n var rows = [];\r\n var groupCount = cellsArray.length;\r\n for (var _i = 0; _i < groupCount; _i++) {\r\n rows.push((0, _renderer.default)(\"
\").addClass(cssClasses.groupHeaderRowClass))\r\n }\r\n for (var _i2 = groupCount - 1; _i2 >= 0; _i2--) {\r\n var currentColumnLength = cellsArray[_i2].length;\r\n for (var j = 0; j < currentColumnLength; j++) {\r\n rows[_i2].append(cellsArray[_i2][j].element)\r\n }\r\n }\r\n return {\r\n elements: (0, _renderer.default)(\"
\").addClass(\"dx-scheduler-group-flex-container\").append(rows),\r\n cellTemplates: cellTemplates\r\n }\r\n };\r\n _proto._makeHorizontalGroupedRows = function(groups, cssClasses, cellCount, cellTemplate, groupByDate) {\r\n var repeatCount = 1;\r\n var groupCount = groups.length;\r\n var rows = [];\r\n var cellTemplates = [];\r\n var repeatByDate = groupByDate ? cellCount : 1;\r\n var cellIterator = function(cell) {\r\n if (cell.template) {\r\n cellTemplates.push(cell.template)\r\n }\r\n return cell.element\r\n };\r\n for (var i = 0; i < groupCount; i++) {\r\n if (i > 0) {\r\n repeatCount = groups[i - 1].items.length * repeatCount\r\n }\r\n var cells = this._makeGroupedRowCells(groups[i], repeatCount, cssClasses, cellTemplate, repeatByDate);\r\n rows.push((0, _renderer.default)(\"\").addClass(cssClasses.groupRowClass).append(cells.map(cellIterator)))\r\n }\r\n var maxCellCount = rows[groupCount - 1].find(\"th\").length;\r\n for (var j = 0; j < groupCount; j++) {\r\n var $cell = rows[j].find(\"th\");\r\n var colspan = maxCellCount / $cell.length;\r\n if (!groupByDate) {\r\n colspan *= cellCount\r\n }\r\n if (colspan > 1 && 1 === repeatByDate || groupByDate && groupCount > 1) {\r\n $cell.attr(\"colSpan\", colspan)\r\n }\r\n }\r\n return {\r\n elements: rows,\r\n cellTemplates: cellTemplates\r\n }\r\n };\r\n _proto._makeGroupedRowCells = function(group, repeatCount, cssClasses, cellTemplate, repeatByDate) {\r\n repeatByDate = repeatByDate || 1;\r\n repeatCount *= repeatByDate;\r\n var cells = [];\r\n var items = group.items;\r\n var itemCount = items.length;\r\n for (var i = 0; i < repeatCount; i++) {\r\n for (var j = 0; j < itemCount; j++) {\r\n var $container = (0, _renderer.default)(\"
\");\r\n var cell = {};\r\n if (cellTemplate && cellTemplate.render) {\r\n var templateOptions = {\r\n model: items[j],\r\n container: (0, _element.getPublicElement)($container),\r\n index: i * itemCount + j\r\n };\r\n if (group.data) {\r\n templateOptions.model.data = group.data[j]\r\n }\r\n cell.template = cellTemplate.render.bind(cellTemplate, templateOptions)\r\n } else {\r\n $container.text(items[j].text);\r\n $container = (0, _renderer.default)(\"
\").append($container)\r\n }\r\n $container.addClass(cssClasses.groupHeaderContentClass);\r\n var cssClass = void 0;\r\n if ((0, _type.isFunction)(cssClasses.groupHeaderClass)) {\r\n cssClass = cssClasses.groupHeaderClass(j)\r\n } else {\r\n cssClass = cssClasses.groupHeaderClass\r\n }\r\n cell.element = (0, _renderer.default)(\"\").addClass(cssClass).append($container);\r\n cells.push(cell)\r\n }\r\n }\r\n return cells\r\n };\r\n return SchedulerTableCreator\r\n}();\r\nvar _default = {\r\n tableCreator: new SchedulerTableCreator\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n"],"sourceRoot":""}