{"version":3,"sources":["webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.indicator.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.header.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/utils.js","webpack:///./node_modules/luxon/build/cjs-browser/luxon.js","webpack:///./node_modules/devextreme/ui/scheduler/tooltip_strategies/tooltipStrategyBase.js","webpack:///./node_modules/rrule/dist/esm/src/weekday.js","webpack:///./node_modules/devextreme/ui/scheduler/dateAdapter.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/view_data_provider.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/cell.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/day/date_table/layout.j.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.js","webpack:///./src/shared/dtos/collaborative-area-member.ts","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_month.js","webpack:///./node_modules/devextreme/renovation/utils/combine_classes.js","webpack:///./node_modules/devextreme/ui/text_box/utils.scroll.js","webpack:///./node_modules/core-js/modules/es.number.parse-int.js","webpack:///./node_modules/devextreme/ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.horizontal_month_line.js","webpack:///./node_modules/devextreme/ui/scheduler/rendering_strategies/ui.scheduler.appointmentsPositioning.strategy.base.js","webpack:///./node_modules/rrule/dist/esm/src/helpers.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.publisher_mixin.js","webpack:///./node_modules/devextreme/ui/scheduler/appointmentDragBehavior.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.resource_manager.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/layout.j.js","webpack:///./node_modules/preact/hooks/dist/hooks.module.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.agenda.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.appointments.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/week/date_table/layout.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/consts.js","webpack:///./src/shared/dtos/collaborative-area-type.ts","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.js","webpack:///./node_modules/devextreme/ui/scheduler/tooltip_strategies/mobileTooltipStrategy.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.j.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.appointment_model.js","webpack:///./node_modules/devextreme/renovation/preact_wrapper/utils.js","webpack:///./node_modules/devextreme/ui/scheduler/appointmentAdapter.js","webpack:///./node_modules/devextreme/data/data_source.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/day/date_table/layout.js","webpack:///./node_modules/devextreme/ui/radio_group.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/time_panel/layout.j.js","webpack:///./node_modules/rrule/dist/esm/src/dateutil.js","webpack:///./node_modules/rrule/dist/esm/src/iterresult.js","webpack:///./node_modules/rrule/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/rrule/dist/esm/src/callbackiterresult.js","webpack:///./node_modules/rrule/dist/esm/src/types.js","webpack:///./node_modules/rrule/dist/esm/src/datetime.js","webpack:///./node_modules/rrule/dist/esm/src/parseoptions.js","webpack:///./node_modules/rrule/dist/esm/src/parsestring.js","webpack:///./node_modules/rrule/dist/esm/src/datewithzone.js","webpack:///./node_modules/rrule/dist/esm/src/optionstostring.js","webpack:///./node_modules/rrule/dist/esm/src/cache.js","webpack:///./node_modules/rrule/dist/esm/src/masks.js","webpack:///./node_modules/rrule/dist/esm/src/iterinfo/yearinfo.js","webpack:///./node_modules/rrule/dist/esm/src/iterinfo/monthinfo.js","webpack:///./node_modules/rrule/dist/esm/src/iterinfo/easter.js","webpack:///./node_modules/rrule/dist/esm/src/iterinfo/index.js","webpack:///./node_modules/rrule/dist/esm/src/iter/poslist.js","webpack:///./node_modules/rrule/dist/esm/src/iter/index.js","webpack:///./node_modules/rrule/dist/esm/src/rrule.js","webpack:///./node_modules/rrule/dist/esm/src/iterset.js","webpack:///./node_modules/rrule/dist/esm/src/rrulestr.js","webpack:///./node_modules/rrule/dist/esm/src/rruleset.js","webpack:///./node_modules/rrule/dist/esm/src/index.js","webpack:///./node_modules/devextreme/core/utils/scroll_rtl_behavior.js","webpack:///./node_modules/devextreme/ui/scheduler/timeZoneCalculator.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.table_creator.js","webpack:///./node_modules/devextreme/localization.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline_month.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/table.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline_week.js","webpack:///./node_modules/devextreme-vue/button.js","webpack:///./node_modules/devextreme/ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.base.js","webpack:///./node_modules/devextreme/ui/scheduler/recurrence.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/cache.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline_day.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/time_panel/cell.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/const.js","webpack:///./src/shared/dtos/collaborative-area.ts","webpack:///./node_modules/devextreme/ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.horizontal.js","webpack:///./node_modules/devextreme/ui/scheduler/shaders/ui.scheduler.current_time_shader.vertical.js","webpack:///./node_modules/devextreme/ui/tooltip/tooltip.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/week/date_table/layout.j.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_day.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/cell.js","webpack:///./node_modules/devextreme/ui/text_area.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_vertical.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/layout.js","webpack:///./node_modules/devextreme/ui/scheduler.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/virtual-row.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/month/date_table/cell.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/layout_props.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.appointments.layout_manager.js","webpack:///./node_modules/devextreme/ui/scheduler/timezones/timezones_data.js","webpack:///./node_modules/devextreme/ui/button_group.js","webpack:///./node_modules/devextreme/ui/radio_group/radio_group.js","webpack:///./node_modules/devextreme/ui/tooltip.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/utils.work_week.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/virtual-cell.js","webpack:///./node_modules/devextreme/ui/scheduler/appointmentSettingsGenerator.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_week.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/row.js","webpack:///./node_modules/devextreme/ui/scheduler/utils.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/time_panel/layout.js","webpack:///./node_modules/devextreme/ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.vertical.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.navigator.js","webpack:///./src/store/modules/collaborative-area.module.ts","webpack:///./node_modules/devextreme/ui/scheduler/dataStructures.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/table_body.js","webpack:///./node_modules/devextreme-vue/scheduler.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.vertical.js","webpack:///./node_modules/devextreme/ui/scheduler/constants.js","webpack:///./node_modules/core-js/internals/number-parse-int.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.appointment.js","webpack:///./node_modules/devextreme/ui/tag_box.js","webpack:///./node_modules/devextreme/ui/scheduler/compactAppointmentsHelper.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/cell.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/table_body.js","webpack:///./node_modules/devextreme/ui/scheduler/base/widgetObserver.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/virtual_selection_state.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.horizontal.js","webpack:///./node_modules/devextreme/ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.horizontal_month.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.recurrence_editor.js","webpack:///./node_modules/preact/dist/preact.module.js","webpack:///./node_modules/devextreme/ui/scheduler/shaders/ui.scheduler.current_time_shader.horizontal.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.virtual_scrolling.js","webpack:///./node_modules/devextreme/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/layout.js","webpack:///./node_modules/devextreme/ui/scheduler/timezones/utils.timezones_data.js","webpack:///./src/components/calendario/calendario.html","webpack:///./src/shared/dtos/evento.ts","webpack:///./src/components/leyenda/leyenda.html","webpack:///./src/components/leyenda/leyenda.ts","webpack:///./src/components/leyenda/leyenda.ts?288f","webpack:///./src/components/leyenda/leyenda.vue","webpack:///./src/components/calendario/calendario.ts","webpack:///./src/components/calendario/calendario.ts?d859","webpack:///./src/components/calendario/calendario.vue","webpack:///./node_modules/devextreme/ui/tooltip/ui.tooltip.js","webpack:///./node_modules/devextreme/ui/scheduler/appointmentPopup.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline_work_week.js","webpack:///./node_modules/devextreme/ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.agenda.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.timeline.js","webpack:///./node_modules/devextreme/ui/scheduler/rendering_strategies/ui.scheduler.appointmentsPositioning.strategy.adaptive.js","webpack:///./node_modules/devextreme/ui/scheduler/workspaces/ui.scheduler.work_space_work_week.js","webpack:///./node_modules/devextreme/ui/switch.js","webpack:///./node_modules/devextreme/renovation/preact_wrapper/component.js","webpack:///./node_modules/devextreme/ui/scheduler/utils.timeZone.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.loading.js","webpack:///./node_modules/rrule/dist/esm/src/nlp/i18n.js","webpack:///./node_modules/rrule/dist/esm/src/nlp/totext.js","webpack:///./node_modules/rrule/dist/esm/src/nlp/parsetext.js","webpack:///./node_modules/rrule/dist/esm/src/nlp/index.js","webpack:///./node_modules/devextreme/ui/scheduler/shaders/ui.scheduler.current_time_shader.js","webpack:///./node_modules/devextreme/ui/scheduler/tooltip_strategies/desktopTooltipStrategy.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.subscribes.js","webpack:///./node_modules/devextreme/ui/scheduler/ui.scheduler.appointment_form.js"],"names":["exports","default","_renderer","_interopRequireDefault","_uiScheduler","_component_registrator","_date","_extend","_position","_window","obj","__esModule","_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","_setPrototypeOf","o","p","setPrototypeOf","__proto__","toMs","dateToMilliseconds","SCHEDULER_DATE_TIME_INDICATOR_CLASS","TIME_PANEL_CURRENT_TIME_CELL_CLASS","HEADER_CURRENT_TIME_CELL_CLASS","SchedulerWorkSpaceIndicator","_SchedulerWorkSpace","apply","this","arguments","_proto","_getTimeZoneCalculator","invoke","_getToday","todayDate","option","Date","timeZoneCalculator","createDate","path","isIndicationOnView","today","endViewDate","trimTime","getEndViewDate","dateInRange","_firstViewDate","getTime","isIndicationAvailable","hasWindow","getStartViewDate","isIndicatorVisible","_getEndViewDateTimeDiff","firstViewDate","setFullYear","getFullYear","getMonth","getDate","_renderDateTimeIndication","_shader","render","groupCount","_getGroupCount","$container","_dateTableScrollable","$content","height","getIndicationHeight","rtlOffset","_getRtlOffset","getCellWidth","_renderIndicator","groupedByDate","isGroupedByDate","repeatCount","i","$indicator","_createIndicator","width","_groupedStrategy","shiftIndicator","addClass","append","getBoundingRect","get","getTimePanelWidth","_setIndicationUpdateInterval","_clearIndicatorUpdateInterval","_indicatorInterval","setInterval","_refreshDateTimeIndication","bind","clearInterval","_isVerticalShader","getIndicationWidth","groupIndex","maxWidth","_getCellCount","difference","_getIndicatorDuration","getRoundedCellWidth","getIndicatorOffset","offset","timeDiff","_getWeekendsCount","Math","round","ceil","cellHeight","getCellHeight","date","duration","cellCount","getCellDuration","_dispose","_cleanDateTimeIndicator","clean","_isCurrentTime","result","startCellDate","endCellDate","sameDate","setMilliseconds","getMilliseconds","_isCurrentTimeHeaderCell","headerIndex","_getDateByIndex","_getTimeCellClass","startViewDate","_getTimeCellDate","cellClass","call","_getHeaderPanelCellClass","_cleanView","_dimensionChanged","$element","find","remove","_cleanWorkSpace","_optionChanged","args","name","_getDefaultOptions","extend","showCurrentTimeIndicator","indicatorTime","indicatorUpdateInterval","shadeUntilCurrentTime","_default","module","_type","_common","_iterator","_array","_inflector","_ui","_uiScheduler2","_drop_down_menu","_tabs","_constants","_errors","_message","COMPONENT_CLASS","VIEW_SWITCHER_CLASS","VIEW_SWITCHER_LABEL_CLASS","STEP_MAP","day","week","workWeek","month","timelineDay","timelineWeek","timelineWorkWeek","timelineMonth","agenda","VIEWS","SchedulerHeader","inherit","callBase","views","isAdaptive","intervalCount","currentView","firstDayOfWeek","currentDate","min","max","useDropDownViewSwitcher","_dropDownButtonIcon","_setOptionsByReference","_optionsByReference","value","_validateViews","_viewSwitcher","items","selectedItem","_navigator","_getCurrentViewType","_changeViewSwitcherLabelText","_refreshViewSwitcher","_init","_initMarkup","_renderNavigator","_renderViewSwitcher","_createComponent","step","tabIndex","focusStateEnabled","observer","customizeDateNavigatorText","appendTo","$viewSwitcher","_renderViewSwitcherDropDownMenu","_renderViewSwitcherTabs","each","_","view","isViewIsObject","isObject","viewType","type","inArray","log","that","TABS_EXPANDED_CLASS","selectionRequired","scrollingEnabled","onSelectionChanged","_updateCurrentView","itemTemplate","item","text","_getItemText","format","camelize","_removeViewSwitcherLabel","isDefined","_$viewSwitcherLabel","detach","onItemClick","buttonIcon","selectionMode","selectedItemKeys","currentViewText","_getCurrentViewName","e","itemData","component","viewName","notifyObserver","_renderFocusTarget","noop","include","isVerticalGroupOrientation","getIsGroupedAllDayPanel","getGroupCellClasses","addHeightToStyle","getKeyByGroup","getKeyByDateAndGroup","_combine_classes","_consts","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","_objectSpread","target","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","configurable","writable","toString","style","nextStyle","concat","isFirstGroupCell","isLastGroupCell","className","combineClasses","viewData","index","_groupData$allDayPane","groupedData","groupData","isAllDayPanel","allDayPanel","isGroupedAllDayPanel","groupOrientation","VERTICAL_GROUP_ORIENTATION","_defineProperties","props","descriptor","_createClass","Constructor","protoProps","staticProps","_getPrototypeOf","getPrototypeOf","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","_construct","Parent","Class","a","Function","instance","_isNativeFunction","fn","indexOf","_wrapNativeSuper","_cache","Map","undefined","TypeError","has","set","Wrapper","_objectWithoutPropertiesLoose","excluded","sourceKeys","_unsupportedIterableToArray","minLen","_arrayLikeToArray","n","slice","Array","from","test","arr","len","arr2","_createForOfIteratorHelperLoose","Symbol","iterator","isArray","done","next","LuxonError","_Error","Error","InvalidDateTimeError","_LuxonError","reason","toMessage","InvalidIntervalError","_LuxonError2","InvalidDurationError","_LuxonError3","ConflictingSpecificationError","_LuxonError4","InvalidUnitError","_LuxonError5","unit","InvalidArgumentError","_LuxonError6","ZoneIsAbstractError","_LuxonError7","s","l","DATE_SHORT","year","DATE_MED","DATE_MED_WITH_WEEKDAY","weekday","DATE_FULL","DATE_HUGE","TIME_SIMPLE","hour","minute","TIME_WITH_SECONDS","second","TIME_WITH_SHORT_OFFSET","timeZoneName","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","hour12","TIME_24_WITH_SECONDS","TIME_24_WITH_SHORT_OFFSET","TIME_24_WITH_LONG_OFFSET","DATETIME_SHORT","DATETIME_SHORT_WITH_SECONDS","DATETIME_MED","DATETIME_MED_WITH_SECONDS","DATETIME_MED_WITH_WEEKDAY","DATETIME_FULL","DATETIME_FULL_WITH_SECONDS","DATETIME_HUGE","DATETIME_HUGE_WITH_SECONDS","isUndefined","isNumber","isInteger","isString","isDate","hasIntl","Intl","DateTimeFormat","hasFormatToParts","formatToParts","hasRelative","RelativeTimeFormat","maybeArray","thing","bestBy","by","compare","reduce","best","pair","pick","k","hasOwnProperty","prop","integerBetween","bottom","top","floorMod","x","floor","padStart","input","minus","repeat","parseInteger","string","parseInt","parseMillis","fraction","f","parseFloat","roundTo","number","digits","towardZero","factor","pow","rounder","trunc","isLeapYear","daysInYear","daysInMonth","modMonth","modYear","objToLocalTS","d","UTC","millisecond","setUTCFullYear","getUTCFullYear","weeksInWeekYear","weekYear","p1","last","p2","untruncateYear","parseZoneInfo","ts","offsetFormat","locale","timeZone","intlOpts","modified","assign","intl","parsed","m","toLowerCase","without","included","diffed","substring","trimmed","replace","signedOffset","offHourStr","offMinuteStr","offHour","Number","isNaN","offMin","offMinSigned","is","asNumber","numericValue","normalizeObject","normalizer","nonUnitKeys","normalized","u","v","formatOffset","hours","abs","minutes","sign","RangeError","timeObject","ianaRegex","stringify","JSON","sort","monthsLong","monthsShort","monthsNarrow","months","weekdaysLong","weekdaysShort","weekdaysNarrow","weekdays","meridiems","erasLong","erasShort","erasNarrow","eras","meridiemForDateTime","dt","weekdayForDateTime","monthForDateTime","eraForDateTime","formatRelativeTime","count","numeric","narrow","units","years","quarters","weeks","days","seconds","lastable","isDay","isInPast","fmtValue","singular","lilUnits","fmtUnit","formatString","knownFormat","filtered","dateTimeHuge","stringifyTokens","splits","tokenToString","_step","token","literal","val","_macroTokenToFormatOpts","D","DD","DDD","DDDD","t","tt","ttt","tttt","T","TT","TTT","TTTT","ff","fff","ffff","F","FF","FFF","FFFF","Formatter","formatOpts","opts","loc","systemLoc","parseFormat","fmt","current","currentFull","bracketed","c","charAt","macroTokenToFormatOpts","formatWithSystemDefault","redefaultToSystem","df","dtFormatter","formatDateTime","formatDateTimeParts","resolvedOptions","num","forceSimple","padTo","numberFormatter","formatDateTimeFromString","_this","knownEnglish","listingMode","useDateTimeFormatter","outputCalendar","extract","isOffsetFixed","allowZ","isValid","zone","meridiem","standalone","maybeMacro","era","offsetName","zoneName","weekNumber","ordinal","quarter","formatDurationFromString","dur","_this2","tokenToField","lildur","mapped","tokens","realTokens","found","_ref","collapsed","shiftTo","map","Invalid","explanation","Zone","equals","otherZone","singleton","LocalZone","_Zone","getTimezoneOffset","matchingRegex","RegExp","dtfCache","makeDTF","typeToPos","hackyOffset","dtf","formatted","exec","fMonth","fDay","fYear","fHour","fMinute","fSecond","partsOffset","filled","_formatted$i","pos","ianaZoneCache","IANAZone","valid","isValidZone","resetCache","isValidSpecifier","match","parseGMTOffset","specifier","NaN","_ref2","adjustedHour","asUTC","asTS","over","singleton$1","FixedOffsetZone","fixed","utcInstance","parseSpecifier","r","InvalidZone","normalizeZone","defaultZone","lowered","now","defaultLocale","defaultNumberingSystem","defaultOutputCalendar","throwOnInvalid","Settings","resetCaches","Locale","z","numberingSystem","intlDTCache","getCachedDTF","locString","intlNumCache","getCachedINF","inf","NumberFormat","intlRelCache","getCachedRTF","_opts","cacheKeyOpts","base","sysLocaleCache","systemLocale","computedSys","parseLocaleString","localeStr","uIndex","options","smaller","_options","calendar","intlConfigString","mapMonths","ms","DateTime","utc","mapWeekdays","listStuff","defaultOK","englishFn","intlFn","mode","supportsFastNumbers","startsWith","PolyNumberFormatter","useGrouping","minimumIntegerDigits","_fixed","PolyDateFormatter","universal","gmtOffset","offsetZ","isOffsetZoneSupported","fromMillis","_proto2","toJSDate","tokenFormat","PolyRelFormatter","isEnglish","rtf","_proto3","numbering","specifiedLocale","_parseLocaleString","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","weekdaysCache","monthsCache","meridiemCache","eraCache","fastNumbersCached","fromOpts","defaultToEN","localeR","numberingSystemR","outputCalendarR","fromObject","_temp","_proto4","hasFTP","isActuallyEn","hasNoWeirdness","clone","alts","getOwnPropertyNames","redefaultToEN","formatStr","_this3","_this4","field","results","matching","fastNumbers","relFormatter","other","combineRegexes","_len","regexes","_key","full","combineExtractors","_len2","extractors","_key2","ex","mergedVals","mergedZone","cursor","_ex","parse","_len3","patterns","_key3","_i","_patterns","_patterns$_i","regex","extractor","simpleParse","_len4","_key4","ret","offsetRegex","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","isoYmdRegex","isoWeekRegex","isoOrdinalRegex","extractISOWeekData","extractISOOrdinalData","sqlYmdRegex","sqlTimeRegex","sqlTimeExtensionRegex","int","fallback","extractISOYmd","extractISOTime","milliseconds","extractISOOffset","local","fullOffset","extractIANAZone","isoTimeOnly","isoDuration","extractISODuration","yearStr","monthStr","weekStr","dayStr","hourStr","minuteStr","secondStr","millisecondsStr","hasNegativePrefix","negativeSeconds","maybeNegate","force","obsOffsets","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","fromStrings","weekdayStr","rfc2822","extractRFC2822","obsOffset","milOffset","preprocessRFC2822","trim","rfc1123","rfc850","ascii","extractRFC1123Or850","extractASCII","isoYmdWithTimeExtensionRegex","isoWeekWithTimeExtensionRegex","isoOrdinalWithTimeExtensionRegex","isoTimeCombinedRegex","extractISOYmdTimeAndOffset","extractISOWeekTimeAndOffset","extractISOOrdinalDateAndTime","extractISOTimeAndOffset","parseISODate","parseRFC2822Date","parseHTTPDate","parseISODuration","extractISOTimeOnly","parseISOTimeOnly","sqlYmdWithTimeExtensionRegex","sqlTimeCombinedRegex","extractISOYmdTimeOffsetAndIANAZone","extractISOTimeOffsetAndIANAZone","parseSQL","INVALID","lowOrderMatrix","casualMatrix","daysInYearAccurate","daysInMonthAccurate","accurateMatrix","orderedUnits","reverseUnits","reverse","clear","conf","values","conversionAccuracy","Duration","antiTrunc","convert","matrix","fromMap","fromUnit","toMap","toUnit","conv","raw","sameSign","added","normalizeValues","vals","previous","config","accurate","invalid","isLuxonDuration","normalizeUnit","fromISO","_parseISODuration","fromISOTime","_parseISOTimeOnly","isDuration","toFormat","fmtOpts","toObject","includeConfig","toISO","toISOTime","millis","toMillis","suppressMilliseconds","suppressSeconds","includePrefix","str","toJSON","as","valueOf","plus","friendlyDuration","negate","mapUnits","_Object$keys","mixed","reconfigure","normalize","lastUnit","_step2","built","accumulated","_iterator2","own","ak","down","negated","_i2","_Object$keys2","eq","v1","v2","_step3","_iterator3","durationish","INVALID$1","validateStartEnd","start","end","Interval","isLuxonInterval","fromDateTimes","builtStart","friendlyDateTime","builtEnd","validateError","after","before","_split","split","startIsValid","endIsValid","_dur","isInterval","toDuration","startOf","diff","hasSame","isEmpty","isAfter","dateTime","isBefore","contains","splitAt","dateTimes","sorted","splitBy","idx","divideEqually","numberOfParts","overlaps","abutsStart","abutsEnd","engulfs","intersection","union","merge","intervals","_intervals$sort$reduc","b","sofar","final","xor","_Array$prototype","currentCount","ends","time","flattened","toISODate","dateFormat","_temp2","_ref3","_ref3$separator","separator","invalidReason","mapEndpoints","mapFn","Info","hasDST","proto","setZone","isValidIANAZone","_ref$locale","_ref$numberingSystem","_ref$locObj","locObj","_ref$outputCalendar","monthsFormat","_ref2$locale","_ref2$numberingSystem","_ref2$locObj","_ref2$outputCalendar","_temp3","_ref3$locale","_ref3$numberingSystem","_ref3$locObj","weekdaysFormat","_temp4","_ref4","_ref4$locale","_ref4$numberingSystem","_ref4$locObj","_temp5","_ref5","_ref5$locale","_temp6","_ref6","_ref6$locale","features","intlTokens","zones","relative","dayDiff","earlier","later","utcDayStart","toUTC","keepLocalTime","highOrderDiffs","lowestOrder","highWater","differs","_differs","_differs$_i","differ","_cursor$plus","_cursor$plus2","delta","_diff","_highOrderDiffs","remainingMillis","lowerOrderUnits","_cursor$plus3","_Duration$fromMillis","numberingSystems","arab","arabext","bali","beng","deva","fullwide","gujr","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","latn","numberingSystemsUTF16","hanidecChars","parseDigits","code","charCodeAt","search","_numberingSystemsUTF","digitRegex","MISSING_FTP","intUnit","post","deser","NBSP","String","fromCharCode","spaceOrNBSP","spaceOrNBSPRegExp","fixListRegex","stripInsensitivities","oneOf","strings","startIndex","join","findIndex","groups","h","simple","escapeToken","unitForToken","one","two","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","unitate","partTypeStyleToTokenVal","short","long","dayperiod","dayPeriod","tokenForPart","part","buildRegex","re","handlers","matches","all","matchIndex","dateTimeFromMatches","toField","Z","q","M","G","y","S","dummyDateTimeCache","getDummyDateTime","maybeExpandMacroToken","formatter","parts","includes","expandMacroTokens","explainFromTokens","disqualifyingUnit","_buildRegex","regexString","_match","rawMatches","parseFromTokens","_explainFromTokens","nonLeapLadder","leapLadder","unitOutOfRange","dayOfWeek","js","getUTCDay","computeOrdinal","uncomputeOrdinal","table","month0","gregorianToWeek","gregObj","weekToGregorian","weekData","weekdayOfJan4","yearInDays","_uncomputeOrdinal","gregorianToOrdinal","gregData","ordinalToGregorian","ordinalData","_uncomputeOrdinal2","hasInvalidWeekData","validYear","validWeek","validWeekday","hasInvalidOrdinalData","validOrdinal","hasInvalidGregorianData","validMonth","validDay","hasInvalidTimeData","validHour","validMinute","validSecond","validMillisecond","INVALID$2","MAX_DATE","unsupportedZone","possiblyCachedWeekData","clone$1","inst","old","fixOffset","localTS","tz","utcGuess","o2","o3","tsToObj","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","objToTS","adjustTime","oPre","millisToAdd","_fixOffset","parseDataToDateTime","parsedZone","interpretationZone","toTechFormat","toTechTimeFormat","_ref$suppressSeconds","_ref$suppressMillisec","includeOffset","_ref$includePrefix","_ref$includeZone","includeZone","_ref$spaceZone","spaceZone","_ref$format","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedUnits$1","orderedWeekUnits","orderedOrdinalUnits","weeknumber","weeksnumber","weeknumbers","weekyear","weekyears","quickDT","tsNow","offsetProvis","_objToTS","diffRelative","calendary","unchanged","ot","_zone","isLuxonDateTime","fromJSDate","zoneToUse","fromSeconds","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","defaultValues","useWeekData","objNow","foundFirst","higherOrderInvalid","gregorian","_objToTS2","tsFinal","offsetFinal","_parseISODate","fromRFC2822","_parseRFC2822Date","fromHTTP","_parseHTTPDate","fromFormat","_opts$locale","_opts$numberingSystem","localeToUse","_parseFromTokens","fromString","fromSQL","_parseSQL","isDateTime","resolvedLocaleOpts","_Formatter$create$res","toLocal","_ref3$keepLocalTime","_ref3$keepCalendarTim","keepCalendarTime","newTS","offsetGuess","asObj","_objToTS3","setLocale","settingWeekStuff","_objToTS4","normalizedUnit","endOf","_this$plus","toLocaleString","toLocaleParts","_ref5$format","toISOWeekDate","_ref6$suppressMillise","_ref6$suppressSeconds","_ref6$includeOffset","_ref6$includePrefix","_ref6$format","toRFC2822","toHTTP","toSQLDate","toSQLTime","_ref7","_ref7$includeOffset","_ref7$includeZone","toSQL","toSeconds","toBSON","otherDateTime","durOpts","otherIsLater","diffNow","until","inputMs","otherZoneDateTime","toRelative","padding","toRelativeCalendar","every","fromFormatExplain","_options$locale","_options$numberingSys","fromStringExplain","dateTimeish","VERSION","TooltipStrategyBase","_button","_function_template","_uiList","TOOLTIP_APPOINTMENT_ITEM","TOOLTIP_APPOINTMENT_ITEM_CONTENT","TOOLTIP_APPOINTMENT_ITEM_CONTENT_SUBJECT","TOOLTIP_APPOINTMENT_ITEM_CONTENT_DATE","TOOLTIP_APPOINTMENT_ITEM_MARKER","TOOLTIP_APPOINTMENT_ITEM_MARKER_BODY","TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON_CONTAINER","TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON","_tooltip","_extraOptions","show","dataList","extraOptions","_canShowTooltip","hide","_showCore","_shouldUseTarget","_list","_createTooltip","_prepareBeforeVisibleChanged","_getContentTemplate","container","listElement","_createList","isAlreadyShown","_onShown","dispose","_createListOption","dataSource","onContentReady","_onListRender","_onListItemClick","_renderTemplate","appointment","targetedAppointment","color","_swipeEnabled","_createTooltipElement","wrapperClass","createComponent","itemListContent","_createItemListContent","addDefaultTemplates","_getItemListTemplateName","FunctionTemplate","template","getAppointmentTemplate","_createFunctionTemplate","data","targetData","isEmptyDropDownAppointmentTemplate","_isEmptyDropDownAppointmentTemplate","model","appointmentData","targetedAppointmentData","dropDownAppointmentTemplate","clickEvent","showAppointmentPopup","editing","$itemElement","_createItemListMarker","_createItemListInfo","createFormattedDateText","disabled","getAppointmentDisabled","allowDeleting","_createDeleteButton","$marker","$markerBody","css","$title","$date","formatDate","$deleteButton","icon","stylingMode","onClick","event","stopPropagation","checkAndDeleteAppointment","ALL_WEEKDAYS","Weekday","fromStr","nth","getJsWeekday","DateAdapterCore","_source","setTime","addTime","setMinutes","addMinutes","getMinutes","subtractMinutes","DateAdapter","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","ViewDataGenerator","workspace","_getCompleteViewDataMap","rowCount","nonVirtualRowCount","verticalGroupCount","viewDataMap","allDayPanelData","_generateAllDayPanelData","viewCellsData","_generateViewCellsData","_generateViewDataMap","completeViewDataMap","startRowIndex","isVerticalGrouping","_isVerticalGroupedWorkSpace","showAllDayPanel","_isShowAllDayPanel","indexDifference","correctedStartRowIndex","cellsRow","rowIndex","cellData","cellIndex","position","_getViewDataFromMap","topVirtualRowHeight","bottomVirtualRowHeight","cellCountInGroupRow","_viewDataMap$reduce","previousGroupIndex","previousGroupedData","cellDataRow","firstCell","isAllDayRow","allDay","currentGroupIndex","dateTable","isVirtualScrolling","isVirtual","renderRowCount","rowOffset","cellDataGetters","rowCountInGroup","rowIndexInGroup","_generateCellsRow","workSpace","_getAllDayCellData","horizontalGroupCount","_loop","columnIndex","cellDataValue","getter","_calculateCellIndex","_workspace","_isFirstGroupCell","_isLastGroupCell","_getKeyByRowAndColumn","columnsNumber","columnsInGroup","columnIndexInCurrentGroup","generateGroupedDataMap","_viewDataMap$reduce2","previousOptions","previousGroupedDataMap","previousRowIndex","currentRowIndex","cell","groupedDataMap","singleGroupRowCount","singleGroupColumnCount","_isHorizontalGroupedWorkSpace","ViewDataProvider","_viewDataGenerator","_viewData","_completeViewDataMap","_completeGroupedViewDataMap","_viewDataMap","_groupedDataMap","update","isGenerateNewViewData","viewDataGenerator","renderOptions","generateRenderOptions","getStartDate","startDate","getGroupStartDate","_this$getGroupData","getGroupData","getGroupEndDate","_this$getGroupData2","lastRowIndex","lastCellIndex","endDate","findGroupCellStartDate","isAllDay","findAllDayGroupCellStartDate","_this$getGroupData3","_lastCell","lastCell","groupStartDate","getCellsGroup","_this$getGroupData4","getCellData","getCellsByGroupIndexAndAllDay","rowsPerGroup","_getRowCountWithAllDayRows","isShowAllDayPanel","firstRowInGroup","lastRowInGroup","correctedFirstRow","correctedLastRow","row","findCellPositionInMap","startTime","isStartTimeInCell","cellStartTime","cellEndTime","rows","getGroupIndices","_getLastGroupRow","group","lastIndex","getLasGroupCellPosition","groupRow","getLasGroupCellIndex","getRowCountInGroup","cellAmount","lastCellData","isGroupIntersectDateInterval","groupEndDate","findGlobalCellPosition","currentRow","currentStartDate","currentEndDate","currentAllDay","_compareDatesAndAllDay","cellStartDate","cellEndDate","trimmedTime","_typeof","AllDayPanelCell","viewFunction","_cell","Preact","_interopRequireWildcard","_hooks","_getRequireWildcardCache","WeakMap","cache","newObj","hasPropertyDescriptor","desc","_objectWithoutProperties","sourceSymbolKeys","propertyIsEnumerable","_extends","viewModel","DateTableCellBase","restAttributes","dataCellTemplate","getTemplate","TemplateProp","defaultProps","__restAttributes","useCallback","restProps","children","contentTemplate","contentTemplateProps","DateTableCellBaseProps","_component","_layout","DayDateTableLayout","_BaseComponent","getProps","_createTemplateComponent","twoWay","allowNull","elements","LAST_GROUP_CELL_CLASS","FIRST_GROUP_CELL_CLASS","GroupedStrategy","_workSpace","getLastGroupCellClass","getFirstGroupCellClass","_getOffsetByAllDayPanel","_getGroupTop","CollaborativeAreaMember","_uiSchedulerWork_space","_date2","MONTH_CLASS","DATE_TABLE_CURRENT_DATE_CLASS","DATE_TABLE_FIRST_OF_MONTH_CLASS","DATE_TABLE_OTHER_MONTH_DATE_CLASS","DATE_TABLE_SCROLLABLE_FIXED_CLASS","DAYS_IN_WEEK","DAY_IN_MILLISECONDS","SchedulerWorkSpaceMonth","_toggleFixedScrollableClass","toggleClass","_isWorkSpaceWithCount","_getElementClass","_getRowCount","resultDate","setDate","_getFormat","_formatWeekday","_getInterval","_getIntervalBetween","timeZoneOffset","getTimezonesDifference","_getDateByCellIndexes","_setStartDayHour","averageWidth","_getCells","element","_calculateHiddenInterval","_insertAllDayRowsIntoDateTable","_getCellCoordinatesByIndex","_createWorkSpaceElements","_createWorkSpaceScrollableElements","_needCreateCrossScrolling","_renderTimePanel","_renderAllDayPanel","_getTableAllDay","_toggleAllDayVisibility","_changeAllDayVisibility","_setFirstViewDate","firstMonthDate","getFirstMonthDate","_getViewStartByOptions","_getCalculatedFirstDayOfWeek","getFirstWeekDate","_minVisibleDate","_maxVisibleDate","setMonth","_getStartViewDate","_dateInRange","_renderTableBody","getCellText","_getCellText","_getDate","_isFirstDayOfMonth","_formatMonthAndDay","monthName","getMonthNames","lastRowInDay","_updateIndex","_prepareCellData","$cell","_isCurrentDate","_isOtherMonth","cellDate","_calculateDayDuration","getIntervalDuration","getPositionShift","timeShift","cellPosition","left","getCellCountToLastViewDate","firstDateTime","lastDateTime","dayDurationInMs","supportAllDayRow","keepOriginalHours","calculateEndDate","startDateCopy","setHours","getWorkSpaceLeftOffset","needApplyCollectorOffset","_getDateTableBorderOffset","_getDateTableBorder","_getCellPositionByIndex","calculatedTopOffset","_getHeaderDate","_supportCompactDropDownAppointments","scrollToTime","classesMap","prepareScrollData","allowScroll","_index","shiftKey","scrollTopPos","scrollLeft","scrollTop","scrollBottomPos","isScrollFromTop","isScrollFromBottom","isScrollFromMiddle","validateTarget","isCorrectTarget","eventTarget","validate","isDxMouseWheelEvent","_needSkipEvent","$","stat","forced","_uiSchedulerAppointmentsStrategy","_query","HOURS_IN_DAY","MINUTES_IN_HOUR","MILLISECONDS_IN_MINUTE","ZERO_APPOINTMENT_DURATION_IN_DAYS","HorizontalMonthLineRenderingStrategy","_HorizontalAppointmen","calculateAppointmentWidth","info","normalizeEndDateByViewEnd","cellWidth","getDefaultCellWidth","getAppointmentMinSize","_getDurationInDays","cropAppointmentWidth","adjustedDuration","_adjustDurationByDaylightDiff","getDeltaTime","initialSize","_getDeltaWidth","createTaskPositionMap","skipSorting","getAppointmentsInstance","_sortAppointmentsByStartDate","_getSortedPositions","sortBy","thenBy","toArray","needCorrectAppointmentDates","COLLECTOR_DEFAULT_WIDTH","COLLECTOR_DEFAULT_OFFSET","COMPACT_THEME_APPOINTMENT_DEFAULT_OFFSET","APPOINTMENT_MIN_COUNT","APPOINTMENT_DEFAULT_WIDTH","COLLECTOR_WIDTH_IN_PERCENTS","APPOINTMENT_INCREASED_WIDTH","AppointmentPositioningStrategy","renderingStrategy","_renderingStrategy","getRenderingStrategy","getDropDownAppointmentWidth","getCollectorTopOffset","getCollectorLeftOffset","getAppointmentDefaultOffset","_isCompactTheme","getDynamicAppointmentCountPerCell","fire","allDayCount","_getAppointmentDefaultOffset","_getAppointmentDefaultHeight","_getAppointmentMinCount","hasAllDayAppointments","_groupOrientation","_calculateDynamicAppointmentCountPerCell","getDropDownAppointmentHeight","_getAppointmentMaxWidth","_getAppointmentDefaultWidth","isPresent","isWeekdayStr","range","rang","times","array","targetLength","padString","sep","pymod","divmod","div","mod","empty","notEmpty","publisherMixin","subject","_draggable","APPOINTMENT_ITEM_CLASS","AppointmentDragBehavior","scheduler","appointments","_appointments","initialPosition","appointmentInfo","onDragStart","itemSettings","settings","onDragMove","fromComponent","toComponent","getAppointmentElement","itemElement","onDragEnd","rawAppointment","_getItemData","_getAppointmentContainer","coordinates","getItemData","appointmentElement","dataFromTooltip","LIST_ITEM_DATA_KEY","itemDataFromTooltip","itemDataFromGrid","getItemSettings","createDragStartHandler","appointmentDragging","cancel","createDragMoveHandler","createDragEndHandler","onRemove","createDropHandler","updatedData","onAdd","addTo","immediate","onDrop","updateDragSource","currentAppointment","currentSettings","_setDragSourceAppointment","_object","_data","_data_source","_deferred","_utils","getValueExpr","resource","valueExpr","getDisplayExpr","displayExpr","ResourceManager","resources","_resourceLoader","setResources","_createWrappedDataSource","DataSource","store","normalizeDataSourceOptions","pageSize","_mapResourceData","valueGetter","compileGetter","displayGetter","id","_isMultipleResource","resourceField","getResources","getField","allowMultiple","getDataAccessors","_dataAccessors","accessorName","accessors","fieldExpr","_resources","setter","_resourceFields","compileSetter","getResourcesData","_resourcesData","getEditors","currentResourceItems","_getResourceDataByField","editorOptions","dataField","editorType","label","getResourceDataByValue","Deferred","load","filteredData","resolve","fail","reject","promise","setResourcesToItem","resourcesSetter","resourceData","wrapToArray","getResourcesFromItem","wrapOnlyMultipleResources","fieldName","fieldValue","tempObject","loadResources","deferreds","getResourcesByFields","deferred","when","mapFunction","fields","grep","getResourceByField","getResourceColor","colorExpr","colorGetter","resourceDataLength","getResourceForPainting","useColorAsDefault","createResourcesTree","leafIndex","make","parent","currentGroupItem","resultItem","title","nextGroupIndex","_hasGroupItem","appointmentResources","groupName","itemValue","loadedResources","currentResourceData","resourceCount","getResourceTreeLeaves","tree","groupAppointmentsByResources","treeLeaves","deepExtendArraySafe","reduceResourcesTree","existingAppointments","_result","node","ok","resourceName","resourceValue","resourceTitle","resourceGetter","resourceFromAppointment","getResourcesDataByGroups","resourcesData","fieldNames","currentResourcesData","currentItems","currentData","AllDayPanelLayout","__b","__r","__c","unmount","__h","__H","__","w","setState","__s","A","context","sub","useDebugValue","componentDidCatch","shift","__P","g","j","__e","__v","requestAnimationFrame","clearTimeout","cancelAnimationFrame","setTimeout","some","_dom_adapter","_element","tableCreator","AGENDA_CLASS","AGENDA_DATE_CLASS","GROUP_TABLE_CLASS","AGENDA_GROUPED_ATTR","TIME_PANEL_ROW_CLASS","TIME_PANEL_CELL_CLASS","NODATA_CONTAINER_CLASS","LAST_ROW_CLASS","INNER_CELL_MARGIN","OUTER_CELL_MARGIN","SchedulerAgenda","_activeStateUnit","agendaDuration","rowHeight","noDataText","_recalculateAgenda","_rows","_$groupTable","_initGroupTable","prepend","_detachGroupCountAttr","_renderFocusState","_cleanFocusState","_getTimePanelRowCount","_initWorkSpaceUnits","_$timePanel","_getTimePanelClass","_$dateTable","_getDateTableClass","_renderView","cellTemplates","_rowsIsEmpty","_renderNoData","_renderGroupHeader","_setGroupHeaderCellsHeight","_renderDateTable","_applyCellTemplates","_$noDataContainer","html","_setTableSizes","_toggleHorizontalScrollClass","_createCrossScrollingConfig","$cells","_getGroupHeaderCells","getAttribute","_removeEmptyRows","$cellContent","outerHeight","_getGroupRowHeight","removeAttr","_attachGroupCountAttr","attr","_getGroupHeaderContainer","_makeGroupRows","cellTemplate","getGroupHeaderContentClass","_getGroupHeaderContentClass","makeGroupedTableFromJSON","VERTICAL","cellTag","groupTableClass","groupRowClass","_getGroupRowClass","groupCellClass","_getGroupHeaderClass","groupCellCustomContent","cellText","createElement","contentWrapper","appendChild","textContent","getPublicElement","_createWorkSpaceStaticElements","rowClass","_getDateTableRowClass","_getDateTableCellClass","_attachTablesEvents","_attachEvents","_cleanCellDataCache","_prepareCellTemplateOptions","groupsOpt","_getPathToLeaf","resourceIndex","cellTemplateOpt","_$rows","fillTableBody","rowSize","cellDateNumber","cellDayName","$row","$td","_getRowHeight","templateOptions","_setLastRowClass","$lastRow","_getTimePanelStartDate","baseHeight","innerOffset","groupRows","getAgendaVerticalStepHeight","getEndViewDateByEndDayHour","getCoordinatesByDate","getCellDataByCoordinates","updateScrollPosition","newDate","bounds","getVisibleBounds","startDateHour","getHours","startDateMinutes","needUpdateScrollPosition","isUpdateNeeded","_events_engine","_element_data","_translator","_recurrence","_double_click","_uiCollection_widget","_utilsTimeZone","APPOINTMENT_TITLE_CLASS","APPOINTMENT_CONTENT_DETAILS_CLASS","APPOINTMENT_DATE_CLASS","RECURRING_ICON_CLASS","ALL_DAY_CONTENT_CLASS","DBLCLICK_EVENT_NAME","addNamespace","SchedulerAppointments","ctor","_supportedKeys","tabHandler","_getAccessAppointments","focusedAppointment","APPOINTMENT_SETTINGS_KEY","sortedIndex","preventDefault","$nextAppointment","_getAppointmentByIndex","_resetTabIndex","trigger","escape","moveAppointmentBack","_escPressed","del","tab","$item","_itemElements","not","$appointment","_focusTarget","_moveFocus","_focusInHandler","_$currentAppointment","_focusOutHandler","_eventBindingTarget","_itemContainer","activeStateEnabled","hoverStateEnabled","fixedContainer","allDayContainer","allowDrag","allowResize","allowAllDayResize","onAppointmentDblClick","_collectorOffset","_clearDropDownItems","_clearDropDownItemsElements","_repaintAppointments","_renderDropDownAppointments","_attachAppointmentsEvents","_invalidate","_isAllDayAppointment","_isRepaintAppointment","needRepaint","_isRepaintAll","_applyFragment","fragment","_onEachAppointment","isRepaintAll","repaintAppointment","_clearItem","_renderItem","needRemove","_renderByFragments","$commonFragment","$allDayFragment","_cleanItemContainer","renderFunction","createDocumentFragment","_attachClickEvent","_attachHoldEvent","_attachContextMenuEvent","_attachAppointmentDblClick","_attachFeedbackEvents","_attachHoverEvents","$items","_findItemElementByItem","_virtualAppointments","itemElements","_itemDataKey","_itemClass","$result","$allDayContainer","add","_clean","_initialSize","_initialCoordinates","_preventSingleAppointmentClick","_renderAppointmentTemplate","formatText","_currentAppointmentSettings","agendaSettings","isPlainObject","$contentDetails","recurrenceRule","prependTo","_executeItemRenderAction","action","_getItemRenderAction","_itemClickHandler","afterExecute","_processItemClick","$target","currentTarget","isFakeClickEvent","_appointmentClickTimeout","getBody","_extendActionArgs","_render","itemSelector","_itemSelector","itemContainer","off","on","_itemDXEventHandler","_dblClickHandler","$targetAppointment","setting","_getItemContent","$itemFrame","$itemContent","_createItemByTemplate","renderArgs","itemsContainer","_postprocessRenderItem","_renderAppointment","_applyResourceDataAttr","geometry","skipResizing","deferredColor","_getAppointmentColor","virtual","_processVirtualAppointment","direction","reduced","appointmentReduced","isCompact","resizableConfig","_resizableConfig","normalizeKey","itemSetting","area","_calculateResizableArea","onResizeStart","updatedArea","_renderDragOffsets","locate","onResizeEnd","_resizeEndHandler","closest","_$element$data","sourceAppointment","modifiedAppointmentAdapter","createAppointmentAdapter","_getEndResizeAppointmentStartDate","dateRange","_getDateRange","pathTimeZone","appointmentAdapter","recurrenceProcessor","getRecurrenceProcessor","startDateTimeZone","isRecurrent","isValidRecurrenceRule","handles","appointmentTimeZone","endTime","deltaTime","renderingStrategyDirection","isStartDateChanged","needCorrectDates","right","_correctStartDateByDelta","getTimezoneOffsetChangeInMs","_correctEndDateByDelta","endDayHour","startDayHour","visibleDayDuration","daysCount","maxDate","minDate","tailOfCurrentDay","tailOfPrevDays","lastDay","firstDay","_tryGetAppointmentColor","res","response","_calculateBoundOffset","appointmentSetting","virtualAppointment","virtualGroupIndex","colors","buttonColor","_renderContentImpl","virtualGroup","virtualItems","virtualCoordinates","$fragment","buttonWidth","buttonHeight","onAppointmentClick","_isGroupCompact","applyOffset","firstDate","secondDate","_processRecurrenceAppointment","skipLongAppointments","indexes","dates","appointmentDuration","recurrenceException","recurrentDates","generateDates","rule","exception","recurrentDateCount","appointmentPart","appointmentSettings","_applyStartDateToObj","_applyEndDateToObj","_processLongAppointment","splitAppointmentByDay","partCount","_reduceRecurrenceAppointments","recurrenceIndexes","splice","_combineAppointments","additionalAppointments","dragEvent","size","coords","_removeDragSourceClassFromDraggedAppointment","isDeferred","move","outerWidth","focus","focusedElement","originalStartDate","makeDate","maxAllowedDate","appointmentIsLong","_checkStartDate","_checkEndDate","originalDate","getSeconds","$appointments","APPOINTMENT_DRAG_SOURCE_CLASS","appointmentInstance","dxSchedulerAppointment","_settings$info$source","_$item$data","itemInfo","itemGroupIndex","_itemInfo$sourceAppoi","itemStartDate","itemEndDate","isDragSource","AllDayPanelTitle","AllDayPanelTitleProps","classes","visible","__text","__classes","WeekTableLayout","_layout_props","DateTableLayoutBase","LayoutProps","HORIZONTAL_GROUP_ORIENTATION","CollaborativeAreaType","_config","_devices","_bindable_template","_empty_template","_browser","_callbacks","_date_serialization","_support","_data_helper","_visibility_change","_dialog","_themes","_ui2","_appointmentPopup","_compactAppointmentsHelper","_desktopTooltipStrategy","_mobileTooltipStrategy","_ui3","_uiSchedulerAppointments","_uiScheduler3","_uiScheduler4","_uiScheduler5","_uiScheduler6","_uiScheduler7","_uiScheduler8","_uiScheduler9","_uiScheduler10","_uiScheduler11","_uiScheduler12","_uiScheduler13","_uiScheduler14","_appointmentAdapter","_timeZoneCalculator","_dataStructures","_appointmentSettingsGenerator","_utils2","WIDGET_CLASS","WIDGET_SMALL_CLASS","WIDGET_ADAPTIVE_CLASS","WIDGET_WIN_NO_TOUCH_CLASS","WIDGET_READONLY_CLASS","WIDGET_SMALL_WIDTH","FULL_DATE_FORMAT","UTC_FULL_DATE_FORMAT","VIEWS_CONFIG","StoreEventNames","ADDING","ADDED","DELETING","DELETED","UPDATING","UPDATED","Scheduler","_Widget","defaultOptions","dateSerializationFormat","appointmentTemplate","appointmentCollectorTemplate","timeCellTemplate","resourceCellTemplate","dateCellTemplate","allowAdding","allowDragging","allowResizing","allowUpdating","allowTimeZoneEditing","allowEditingTimeZones","recurrenceEditMode","cellDuration","maxAppointmentsPerCell","selectedCellData","groupByDate","onAppointmentRendered","onAppointmentContextMenu","onCellClick","onCellContextMenu","onAppointmentAdding","onAppointmentAdded","onAppointmentUpdating","onAppointmentUpdated","onAppointmentDeleting","onAppointmentDeleted","onAppointmentFormOpening","appointmentTooltipTemplate","appointmentPopupTemplate","crossScrollingEnabled","startDateExpr","endDateExpr","textExpr","descriptionExpr","allDayExpr","recurrenceRuleExpr","recurrenceExceptionExpr","disabledExpr","remoteFiltering","startDateTimeZoneExpr","endDateTimeZoneExpr","adaptivityEnabled","allowMultipleCellSelection","scrolling","renovateRender","_appointmentTooltipOffset","_appointmentTooltipButtonsPosition","_appointmentTooltipOpenButtonText","_appointmentCountPerCell","_appointmentOffset","integrationOptions","useDeferUpdateForTemplates","_defaultOptionsRules","device","real","deviceType","isSimulator","generic","isMaterial","span","_setDeprecatedOptions","_deprecatedOptions","since","message","alias","_getAppointmentSettingsGenerator","AppointmentSettingsGenerator","_postponeDataSourceLoading","postponedOperations","_reloadDataSource","_postponeResourceLoading","whenLoaded","_loadResources","resolveCallbacks","_updateOption","_dateOption","_header","_filterAppointmentsByDate","_initDataSource","_appointmentModel","setDataSource","_dataSource","_processCurrentView","_getCurrentViewOptions","repaint","getLayoutManager","initRenderingStrategy","_getAppointmentsRenderingStrategy","_validateCellDuration","_allowDragging","_allowResizing","_getAppointmentTemplate","_refreshWorkSpace","_updateHeader","_resourcesManager","setDataAccessors","_combineDataAccessors","_actions","_createActionByOption","_getAppointmentRenderedAction","_readyToRenderAppointments","_getAppointmentsToRepaint","_initEditing","_editing","_bringEditingModeToAppointments","hideAppointmentTooltip","_cleanPopup","_updateExpression","_initAppointmentTemplate","_toggleAdaptiveClass","fullName","viewCountConfig","_getViewCountConfig","_getCurrentViewOption","_currentView","optionName","optionValue","deserializeDate","_getSerializationFormat","getDateSerializationFormat","editingConfig","allowDelete","_isAgenda","_supportAllDayResizing","_allowAllDayResizing","_isAllDayExpanded","_getTimezoneOffsetByOption","calculateTimezoneByValue","getDateRange","filterByDate","_loadedResources","_fireContentReadyAction","isLoading","of","_this$_workSpaceRecal","contentReadyBase","fireContentReady","_workSpaceRecalculation","filteredItems","getFilteredItems","_toggleSmallClass","_isVisible","_cleanAllowedPositions","_layoutManager","createAppointmentsMap","triggerResize","updatePopupFullScreenMode","_visibilityChanged","_dataSourceOptions","paginate","_initExpressions","endDateTimeZone","description","msie","touch","combinedDataAccessors","getAppointmentDurationInMinutes","_initActions","CompactAppointmentsHelper","_asyncTemplatesTimers","_dataSourceLoadedCallback","_subscribes","TimeZoneCalculator","getClientOffset","getClientTimezoneOffset","getCommonOffset","getAppointmentOffset","appointmentTimezone","_initTemplates","_templateManager","appointmentTooltip","EmptyTemplate","dropDownAppointment","expr","createGetter","property","BindableTemplate","resourcesDataAccessors","accessor","_renderContent","_dataSourceChangedHandler","_renderAppointments","fireWith","_this$getWorkSpace","getWorkSpace","_filterAppointments","prerenderFilterName","_filteredItems","getRenderingStrategyInstance","calculateRows","cleanModelState","getRepaintedAppointments","isDateField","dateGetter","dateSetter","forceIsoDateParsing","serializeDate","exprObj","_isReadOnly","_appointmentTooltip","hideAppointmentPopup","excludeValidators","_renderHeader","_appointmentsConfig","MobileTooltipStrategy","DesktopTooltipStrategy","_getAppointmentTooltipOptions","_isLoaded","_isDataSourceLoading","_initMarkupCore","_this5","getScrollableContainer","getWorkSpaceScrollableContainer","isAppointmentInAllDayPanel","_this6","targetedAdapter","_checkRecurringAppointment","deleteAppointment","_getExtraAppointmentTooltipOptions","rtlEnabled","itTakesAllDay","appointmentTakesAllDay","_this7","_cleanWorkspace","_renderWorkSpace","getFixedContainer","getAllDayContainer","_waitAsyncTemplate","_this7$_workSpaceReca","_isResourcesLoaded","_isDataSourceLoaded","isLoaded","$header","_headerConfig","_this8","currentViewOptions","countConfig","onItemRendered","onItemContextMenu","getCollectorOffset","$workSpace","workSpaceComponent","workSpaceConfig","_workSpaceConfig","initDragBehavior","_all","getWorkArea","_recalculateWorkspace","_getViewByName","viewCount","_this9","triggerResizeEvent","_currentViewOptions$s","_this10","accessKey","allDayExpanded","hoursInterval","_getTemplate","callback","silent","timer","_getTemplateByOption","_this11","getWorkSpaceScrollable","getScrollable","getWorkSpaceScrollableScrollTop","getGroupedScrollableScrollTop","getWorkSpaceScrollableScrollLeft","getScrollableScrollLeft","getWorkSpaceAllDayHeight","getAllDayHeight","getWorkSpaceAllDayOffset","getAllDayOffset","getWorkSpaceHeaderPanelHeight","getHeaderPanelHeight","getWorkSpaceDateTableOffset","getAppointmentModel","getHeader","getMaxAppointmentsPerCell","targetAppointment","singleAppointment","exceptionDate","isDeleted","isPopupEditing","_this12","_updatedRecAppointment","evalRecurrenceRule","editMode","_excludeAppointmentFromSeries","_showRecurrenceChangeConfirm","newRawAppointment","_this13","newAppointment","canCreateNewAppointment","keyPropertyName","keyName","addAppointment","_createRecurrenceException","_editAppointmentData","_updateAppointment","_getSerializedDate","seriesText","occurrenceText","custom","messageHtml","showCloseButton","showTitle","buttons","_getUpdatedData","_this14","getConvertedFromGrid","isValidDate","targetCell","getTargetCellData","appointmentStartDate","appointmentEndDate","resultedStartDate","isKeepAppointmentHours","timeInMs","resultedEndDate","dateCopy","rawResult","getTargetedAppointment","dataAccessors","getAppointmentSettings","getAppointmentInfo","appointmentIndex","_itemIndexKey","adapter","getAppointmentDataCalculator","newStartDate","rawTargetedAppointment","setTargetedAppointmentResources","subscribe","isFunction","getDataByDroppableCell","onUpdatePrevented","updatingOptions","newData","oldData","performFailAction","err","_processActionResult","canceled","_this15","_expandAllDayPanel","always","storeAppointment","_onDataPromiseCompleted","actionOptions","_this16","resolveCallback","callbackResult","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","getGroups","setResourceCallback","apptSettings","_positionMap","_getCellGroups","createNewAppointment","_this19","newTargetedAppointment","isEmptyObject","saveChanges","showAppointmentTooltip","AppointmentTooltipInfo","showAppointmentTooltipCore","scrollTo","_this20","serializedAppointment","addingOptions","updateAppointment","deletingOptions","_this21","getFirstDayOfWeek","firstDayOfWeekIndex","_this22","setField","getTimeZoneCalculator","_overlay","_tooltipStrategyBase","SLIDE_PANEL_CLASS_NAME","MAX_TABLET_OVERLAY_HEIGHT_FACTOR","MAX_HEIGHT","PHONE","TABLET","DEFAULT","MAX_WIDTH","animationConfig","my","at","getWindow","to","createPhoneDeviceConfig","listHeight","shading","createTabletDeviceConfig","currentMaxHeight","_TooltipStrategyBase","_onShowing","isTabletWidth","closeOnOutsideClick","animation","onShowing","onShown","_title","DATE_FILTER_POSITION","USER_FILTER_POSITION","FilterMaker","_filterRegistry","isRegistered","clearRegistry","_make","useAccessors","userFilter","user","combine","dateFilter","compareDateWithStartDayHour","severalDays","dateTimeFromDecimal","compareDateWithEndDayHour","hiddenInterval","apptDuration","apptStartHour","apptStartMinutes","AppointmentModel","baseAppointmentDuration","_updatedAppointmentKeys","_filterMaker","_baseAppointmentDuration","_createFilter","userFilterPosition","_excessFiltering","_combineRemoteFilter","dataSourceFilter","equalByValue","_combineFilter","_getStoreKey","keyOf","_filterAppointmentByResources","checkAppointmentResourceValues","appointmentResourceValues","itemDataCount","_filterAppointmentByRRule","_appointmentPartInInterval","trimmedDates","_trimDates","hasRecurrence","apptStartDayHour","apptEndDayHour","_createCombinedFilter","filterOptions","getRecurrenceException","viewStartDayHour","viewEndDayHour","appointmentTakesSeveralDays","useRecurrence","comparableStartDate","comparableEndDate","_initStoreChangeHandlers","newItem","_updatedAppointment","pushItems","pushItem","itemExists","_this$_dataSource$fil","_serializeRemoteFilter","combinedFilter","_createAppointmentFilter","customizeDateFilter","filterLoadedAppointments","filterOption","getPreparedDataItems","dataItems","replaceWrongEndDate","_isEndDateWrong","calculatedEndDate","_calculateAppointmentEndDate","filterLoadedVirtualAppointments","combinedFilters","itemsToFilter","needPreFilter","minCopy","maxCopy","_appointmentHasAllDayDuration","dayDuration","appointmentDurationInHours","_getAppointmentDurationInHours","_appointmentHasShortDayDuration","shortDayDurationInHours","currentFilter","setToDayEnd","insert","removeDifferentElements","$children","$newChildren","hasComponent","oldElement","parentNode","removeChild","PROPERTY_NAMES","AppointmentAdapter","calculateStartDate","pathTimeZoneConversion","calculateDate","clonedAdapter","_radio_group","TimePanelTableLayout","dateutil","MONTH_DAYS","ONE_DAY","MAXYEAR","ORDINAL_BASE","PY_WEEKDAYS","getYearDay","dateNoTime","tzOffset","daysBetween","date1","date2","date1ms","date2ms","differencems","toOrdinal","fromOrdinal","getMonthDays","getWeekday","monthRange","dolly","cloneDates","clones","timeToUntilString","untilStringToDate","bits","IterResult","method","total","inc","accept","tooEarly","tooLate","getValue","extendStatics","__extends","__assign","__spreadArrays","il","jl","Frequency","_super","CallbackIterResult","freqIsDailyOrGreater","freq","HOURLY","Time","fromDate","getDay","getYear","addYears","addMonths","yearDiv","monthMod","addWeekly","wkst","fixDay","addDaily","addHours","byhour","_a","dayDiv","hourMod","byminute","hourDiv","minuteMod","addSeconds","bysecond","minuteDiv","secondMod","daysinmonth","interval","YEARLY","MONTHLY","WEEKLY","DAILY","MINUTELY","SECONDLY","initializeOptions","keys_1","parseOptions","DEFAULT_OPTIONS","byeaster","FREQUENCIES","dtstart","MO","bysetpos","Boolean","byweekno","byyearday","bymonthday","byweekday","bymonth","bynmonthday","bynweekday","wday","parsedOptions","buildTimeset","millisecondModulo","timeset","parseString","rfcString","parseLine","parseDtstart","line","dtstartWithZone","tzid","header","toUpperCase","parseRrule","strippedLine","attrs","Days","parseNumber","optionKey","parseWeekday","parseIndividualNumber","wdaypart","DateWithZone","datestr","isUTC","rezonedDate","datetime","rezoned","console","optionsToString","rrule","defaultKeys","outValue","buildDtstart","strValues","rules","ruleString","Cache","between","_cacheAdd","what","_value","_cacheGet","cached","argsKeys","findCacheDiff","cachedObject","iterResult","M365MASK","M366MASK","M28","M29","M30","M31","MDAY366MASK","MDAY365MASK","NM28","NM29","NM30","NM31","NMDAY366MASK","NMDAY365MASK","M366RANGE","M365RANGE","WDAYMASK","wdaymask","rebuildYear","firstwkst","wyearlen","firstyday","yearlen","nextyearlen","yearordinal","yearweekday","baseYearMasks","wnomask","no1wkst","numweeks","lnumweeks","lyearweekday","lno1wkst","lyearlen","weekst","mmask","mdaymask","nmdaymask","mrange","rebuildMonth","lastyear","lastmonth","nwdaymask","ranges","first","easter","yearStart","Iterinfo","rebuild","yearinfo","monthinfo","eastermask","ydayset","mdayset","wdayset","ddayset","htimeset","mtimeset","stimeset","getdayset","gettimeset","buildPoslist","ii","dayset","poslist","daypos","timepos","tmp","emitResult","counterDate","makeTimeset","removeFilteredDays","rezoneIfNeeded","currentDay","isFiltered","dayCounter","getnlp","_nlp","TU","WE","TH","FR","SA","SU","RRule","noCache","origOptions","parseText","language","fromText","_iter","toText","gettext","dateFormatter","isFullyConvertibleToText","isFullyConvertible","iterSet","_rrule","_exrule","_rdate","_exdate","_exdateHash","_accept","evalExdate","zonedDate","unfold","forceset","compatible","parseInput","rrulevals","rdatevals","exrulevals","exdatevals","lines","splitIntoLines","breakDownLine","parms","_b","rdateTzid","parseRDate","buildRule","rset_1","groomRruleOptions","rdate","exrule","exdate","rrulestr","extractName","validateDateParm","parm","rdateval","createGetterSetter","field_1","RRuleSet","_addRule","_addDate","rrules","exrules","rdates","exdates","_dtstart","rdatesToString","rrs","collection","param","dateString","_call_once","getScrollRtlBehavior","document","getDocument","body","insertAdjacentHTML","scroller","lastElementChild","initiallyPositive","hasNegative","decreasing","positive","PathTimeZoneConversion","fromSourceToAppointment","fromAppointmentToSource","fromSourceToGrid","fromGridToSource","sourceDate","_getConvertedDate","getOffsets","clientOffset","_getClientOffset","commonOffset","_getCommonOffset","appointmentOffset","_getAppointmentOffset","client","common","useAppointmentTimeZone","isBack","offsets","_getConvertedDateByOffsets","targetOffset","utcDate","ROW_SELECTOR","SchedulerTableCreator","HORIZONTAL","insertAllDayRow","allDayElements","tableBody","makeTable","templateCallbacks","allDayElementIndex","isLastRowInGroup","td","cellDataObject","dataKey","dataValue","getCellDate","innerHTML","makeGroupedTable","cssClasses","_makeVerticalGroupedRows","_makeHorizontalGroupedRows","cellStorage","childrenField","titleField","createTable","getChildCount","createCell","childCount","createTextNode","generateCells","putCellsToRows","cells","rowspans","prev","rowspan","setAttribute","_makeFlexGroupedRowCells","repeatByDate","itemCount","cssClass","groupHeaderClass","cellsArray","cellIterator","groupHeaderRowClass","currentColumnLength","_makeGroupedRowCells","maxCellCount","colspan","groupHeaderContentClass","disableIntl","_number","parseDate","formatNumber","formatMessage","loadMessages","_core","engine","resetInjection","TIMELINE_CLASS","SchedulerTimelineMonth","_SchedulerTimeline","_updateScrollable","_getDateHeaderTemplate","_getHiddenInterval","_calculateDurationInCells","calculateEndViewDate","dateOfLastViewCell","_formatWeekdayAndDay","Table","TableProps","_virtualRow","hasBottomVirtualRow","hasTopVirtualRow","_ref$props","virtualCellsCount","Fragment","VirtualRow","cellsCount","__style","_restAttributes","__hasTopVirtualRow","__hasBottomVirtualRow","SchedulerTimelineWeek","_getWeekDuration","_getHeaderPanelCellWidth","$headerRow","_needRenderWeekHeader","_incrementDate","DxButton","button_1","index_1","elementAttr","hint","onDisposing","onInitialized","onOptionChanged","useSubmitBehavior","validationGroup","emits","computed","$_instance","beforeCreate","$_WidgetClass","_uiSchedulerAppointmentsPositioningStrategy","_uiSchedulerAppointmentsPositioningStrategy2","APPOINTMENT_MIN_SIZE","APPOINTMENT_DEFAULT_HEIGHT","COMPACT_THEME_APPOINTMENT_DEFAULT_HEIGHT","DROP_DOWN_BUTTON_ADAPTIVE_SIZE","BaseRenderingStrategy","_initPositioningStrategy","_isAdaptive","_correctCollectorCoordinatesInAdaptive","_positioningStrategy","getPositioningStrategy","keepAppointmentSettings","getAppointmentGeometry","getDirection","_maxAppointmentCountPerCell","_defaultWidth","_defaultHeight","_allDayHeight","_allDayCellHeight","_getItemPosition","_isRtl","_correctRtlCoordinates","positionArray","resultPositions","_getResultPositions","_getExtendedPositionMap","intervalWidth","initialWidth","coordinate","_getAppointmentCoordinates","calculateAppointmentHeight","resultWidth","multiWeekAppointmentParts","initialRowIndex","initialCellIndex","_needVerifyItemSize","currentMaxAllowedPosition","hMax","isAppointmentGreaterThan","_reduceMultiWeekAppointment","_getAppointmentParts","sourceAppointmentWidth","reducedWidth","_getAppointmentPartsPosition","appointmentParts","unshift","_getCompactAppointmentParts","appointmentWidth","bound","etalon","comparisonParameters","positionList","createItem","_positionList$rowInde","_sortCondition","_getConditions","isSomeEdge","_isSomeEdge","columnCondition","_normalizeCondition","rowCondition","cellPositionCondition","_rowCondition","conditions","_columnCondition","_isItemsCross","firstItem","secondItem","areItemsInTheSameTable","areItemsAllDay","orientation","_getOrientation","_checkItemsCrossing","firstItemSide_1","firstItemSide_2","secondItemSide_1","secondItemSide_2","isItemCross","sortedArray","currentItem","itemIndex","maxIndexInStack","stack","findFreeIndex","isFind","currentIndex","_skipSortedIndex","startNewStack","pushItemsInResult","_getMaxAppointmentCountPerCell","_findIndexByKey","iKey","jKey","iValue","jValue","positions","positionCounter","mapLength","resultString","itemLength","_checkLongCompactAppointment","_splitLongCompactAppointment","appointmentCountPerCell","_getMaxAppointmentCountPerCellByType","compactCount","compactPart","_getCompactLeftCoordinate","viewEndDate","roundToHour","currentViewEndTime","daylightDiff","getDaylightOffset","_needAdjustDuration","_calculateDurationByDaylightDiff","_getAppointmentDurationInMs","_markAppointmentAsVirtual","countFullWidthAppointmentInCell","_generateAppointmentCollectorIndex","getDropDownButtonAdaptiveSize","getDefaultCellHeight","getDefaultAllDayCellHeight","_customizeCoordinates","topOffset","appointmentHeight","appointmentTop","_isAppointmentEmpty","_getAppointmentMinHeight","_getAppointmentMinWidth","_calculateGeometryConfig","overlappingMode","_getOffsets","appointmentDefaultOffset","_getAppointmentCount","ratio","_getDefaultRatio","maxHeight","_getMaxHeight","isNumeric","unlimited","needSeparateAppointment","_getDynamicAppointmentCountPerCell","pop","_getAppointmentHeightByTheme","_needVerticalGroupBounds","_needHorizontalGroupBounds","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_s","_e","_arr","_n","_d","return","ruleNames","freqNames","loggedWarnings","recurrence","RecurrenceProcessor","rRule","rRuleSet","validator","RecurrenceValidator","startDateUtc","createUTCDateWithLocalOffset","endDateUtc","minDateUtc","maxDateUtc","_initializeRRule","minTime","leftBorder","_getLeftBorder","endAppointmentTime","correctDate","createDateFromUTCWithLocalOffset","_parseRecurrenceRule","validateRRule","daysFromByDayRule","byday","getAsciiStringByDate","currentOffset","offsetDate","getRecurrenceString","_parseExceptionToRawArray","getDateByAsciiString","exceptionText","_this$_createDateTupl","_createDateTuple","_this$_createDateTupl2","isUtc","_getTimeZoneOffset","ruleOptions","weekDayNumbers","_createRRule","exceptionStrings","exceptionDates","getPostProcessedException","isSameAppointmentDates","ruleObject","ruleParts","ruleName","ruleValue","parseResult","_brokenRuleNameExists","_wrongCountRule","_wrongIntervalRule","_wrongDayOfWeek","_wrongByMonthDayRule","_wrongByMonth","_wrongUntilRule","_logBrokenRule","wrongUntil","wrongCount","wrongByMonthDay","byMonthDay","wrongByMonth","byMonth","wrongInterval","byDay","daysByRule","brokenDaysExist","brokenRuleExists","SchedulerTimelineDay","TimePanelCell","TimePanelCellProps","CellBase","timeCellTemplateProps","CellBaseProps","__timeCellTemplateProps","_pointer","_click","_contextmenu","_drag","_uiSchedulerWork_spaceGroupedStrategy","_uiSchedulerWork_spaceGroupedStrategy2","_uiSchedulerCurrent_time_shader","_appointmentDragBehavior","_widgetObserver","_view_data_provider","_layout2","_virtual_selection_state","abstract","GROUPED_WORKSPACE_CLASS","VERTICAL_GROUPED_WORKSPACE_CLASS","WORKSPACE_VERTICAL_GROUP_TABLE_CLASS","WORKSPACE_WITH_BOTH_SCROLLS_CLASS","WORKSPACE_WITH_COUNT_CLASS","WORKSPACE_WITH_GROUP_BY_DATE_CLASS","WORKSPACE_WITH_ODD_CELLS_CLASS","TIME_PANEL_CLASS","ALL_DAY_PANEL_CLASS","ALL_DAY_TABLE_CLASS","ALL_DAY_CONTAINER_CLASS","ALL_DAY_TITLE_CLASS","ALL_DAY_TITLE_HIDDEN_CLASS","ALL_DAY_TABLE_CELL_CLASS","ALL_DAY_TABLE_ROW_CLASS","WORKSPACE_WITH_ALL_DAY_CLASS","WORKSPACE_WITH_COLLAPSED_ALL_DAY_CLASS","WORKSPACE_WITH_MOUSE_SELECTION_CLASS","HORIZONTAL_SIZES_CLASS","VERTICAL_SIZES_CLASS","HEADER_PANEL_CLASS","HEADER_PANEL_CELL_CLASS","HEADER_ROW_CLASS","GROUP_ROW_CLASS","GROUP_HEADER_CLASS","GROUP_HEADER_CONTENT_CLASS","DATE_TABLE_CLASS","DATE_TABLE_CELL_CLASS","DATE_TABLE_ROW_CLASS","DATE_TABLE_FOCUSED_CELL_CLASS","VIRTUAL_ROW_CLASS","VIRTUAL_CELL_CLASS","DATE_TABLE_DROPPABLE_CELL_CLASS","SCHEDULER_HEADER_SCROLLABLE_CLASS","SCHEDULER_SIDEBAR_SCROLLABLE_CLASS","SCHEDULER_DATE_TABLE_SCROLLABLE_CLASS","SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME","SCHEDULER_CELL_DXDRAGENTER_EVENT_NAME","enter","SCHEDULER_CELL_DXDROP_EVENT_NAME","drop","SCHEDULER_CELL_DXDRAGLEAVE_EVENT_NAME","leave","SCHEDULER_CELL_DXCLICK_EVENT_NAME","SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME","SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME","up","SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME","CELL_DATA","DATE_TABLE_CELL_BORDER","DATE_TABLE_MIN_CELL_WIDTH","DAY_MS","HOUR_MS","SCHEDULER_DRAG_AND_DROP_SELECTOR","CELL_SELECTOR","ScrollSemaphore","counter","isFree","take","release","formatWeekday","getDayNames","SchedulerWorkSpace","_WidgetObserver","clickHandler","_selectedCells","$cellElement","_showPopup","_cellClickAction","cellElement","arrowPressHandler","_moveToCell","space","downArrow","_getCellFromNextRow","upArrow","rightArrow","$rightCell","_getCellFromNextColumn","leftArrow","$leftCell","_this$virtualScrollin","virtualScrollingDispatcher","_disposeRenovatedComponents","_isRTL","_getFocusedCell","_$focusedCell","_getAllFocusedCells","$currentCell","_checkForViewBounds","isMultiSelection","$focusedCell","$nextCell","nextColumnDirection","isDirectionNext","previousColumnDirection","isRTL","isHorizontalGrouping","totalCellCount","_getTotalCellCount","rowCellCount","lastIndexInRow","isEdgeCell","_isEdgeCell","directionSign","resultingSign","_isGroupEndCell","nextIndex","rowDirection","rightEdgeCellIndex","leftEdgeCellIndex","edgeCellIndex","isNextCellGreaterThanEdge","isNextCellLessThanEdge","isRightEdgeCell","isLeftEdgeCell","cellsInRow","currentCellIndex","endCell","startCell","_setSelectedAndFocusedCells","scrollToElement","updateViewData","$correctedCell","_correctCellForGroup","hasClass","_setSelectedCells","_setFocusedCell","_releaseFocusedCell","_this$_getCoordinates","_getCoordinatesByCell","isAllDayCell","_hasAllDayClass","virtualSelectionState","setFocusedCell","focusedCell","getFocusedCell","_dom_getAllDayPanelCell","_dom_getDateCell","_toggleFocusedCellClass","$firstCell","_releaseSelectedCells","_setSelectedCellsInVirtualMode","_setSelectedCellsInStandardMode","$selectedCells","_toggleFocusClass","setAria","getSelectedCellData","_selectionChangedAction","$previousCell","_$prevCell","$targetCells","_getCellsBetween","_this$_getCoordinates2","firstRow","firstColumn","isFirstAllDay","setSelectedCells","_this$_getCoordinates3","_firstCell","_setSelectedCellsByCellData","getSelectedCells","isValidFocusedCell","cellGroupIndex","_getGroupIndexByCell","focusedCellGroupIndex","isDifferentTables","$first","$last","isAllDayTable","firstIndex","buffer","focusedGroupIndex","_this$_getCoordinates4","viewDataProvider","getGroupIndexByCell","isFocused","$focusTarget","_releaseSelectedAndFocusedCells","_isCellClick","_contextMenuHandled","_this$virtualSelectio","releaseSelectedAndFocusedCells","_removeAllDayElements","_initGrouping","_initGroupedStrategy","_createAllDayPanelElements","_toggleGroupByDateClass","headerPanelOffsetRecalculate","_createSelectionChangedAction","_createCellClickAction","_toggleWorkSpaceCountClass","_dateTableScrollableConfig","_isVirtualModeOn","_toggleGroupedClass","_toggleWorkSpaceWithOddCells","_headerSemaphore","_sideBarSemaphore","_dataTableSemaphore","_viewDataProvider","_virtualSelectionState","_maxAllowedVerticalPosition","_maxAllowedPosition","_toggleGroupingDirectionClass","strategyName","_getDefaultGroupStrategy","Strategy","_isWorkspaceWithOddCells","_getRealGroupOrientation","_needApplyLastGroupCellClass","addAdditionalGroupCellClasses","_$headerPanel","_$thead","_$fixedContainer","FIXED_CONTAINER_CLASS","_$allDayContainer","_initAllDayPanelElements","isRenovatedRender","createRAllDayPanelElements","_allDayTitles","_allDayTables","_allDayPanels","_$allDayPanel","_$allDayTitle","$allDayTitle","_$allDayTable","_initDateTableScrollable","$dateTableScrollable","useKeyboard","bounceEnabled","updateManually","pushBackValue","_sidebarScrollable","scrollOffset","_headerScrollable","_createHeaderScrollable","_createSidebarScrollable","$headerScrollable","_headerScrollableConfig","showScrollbar","useNative","onScroll","$timePanelScrollable","_setHorizontalGroupHeaderCellsHeight","_attachTableClasses","_addTableClass","_attachHeaderTableClasses","$el","getCellMinWidth","minWidth","getWorkSpaceMinWidth","$headerCells","allDayRowCount","_initVirtualScrolling","_setFocusOnCellByOption","renovatedRenderSupported","_renderDateHeader","renderRWorkspace","_renderGroupAllDayPanel","_updateGroupTableHeight","_getCellData","renderState","_getTotalRowCount","_this$virtualScrollin2","renderRAllDayPanel","renderRTimeTable","renderRDateTable","updateRSelection","updateDimensions","renderRComponent","renovatedAllDayPanel","parentElement","componentClass","componentName","selectedCells","_data$","_getAllCells","_isGroupsSpecified","_getGroupIndexByResourceId","resourceTree","_getGroupIndexRecursively","currentKey","currentValue","prevIndex","areValuesEqual","firstDayOfWeekOption","_firstDayOfWeek","_getIntervalDuration","pointerDownAction","_createAction","_pointerDownHandler","cellSelector","isMouseEvent","which","_cellClickHandler","_hasFocusClass","_showAddAppointmentPopup","firstCellData","_createContextMenuAction","eventName","NAME","_contextMenuHandler","_contextMenuAction","_getDateHeaderContainer","templates","groupedAttr","getGroupCountAttr","groupRowCount","headerPanelHeight","headerHeight","allDayPanelHeight","getAllDayTableHeight","paddingBottom","marginBottom","tableCreatorStrategy","_getCalculateHeaderCellRepeatCount","colSpan","_cellIndex","_templateIndex","_renderDateHeaderTemplate","templateIndex","panelCellIndex","_getHeaderText","calculateHeaderCellRepeatCount","_getAllDayPanelCellClass","_getGroupIndex","toggle","calculateTimeCellRepeatCount","getDateWithoutTimezoneChange","_getTimeText","_getTimeCellDateCore","_getCellCountInDay","skipRound","timeCellDuration","cellCountInDay","insertAllDayRowsIntoDateTable","getTotalCellCount","includeAllDayPanelRows","getTotalRowCount","getGroupIndex","findLeafByIndex","_leaf","makeBranch","leaf","isPointerDown","itemSizeFunc","checkDropTarget","_isOutsideScrollable","_$currentTableTarget","removeDroppableCellClass","draggingElement","removeClass","_getDateTables","_getDateTable","_getAllDayTable","_interval","_getDateForHeaderText","calculateCellIndex","delayCellTemplateRendering","_this$virtualSelectio2","_hiddenInterval","_this$renovatedAllDay","_this$renovatedDateTa","_this$renovatedTimePa","renovatedDateTable","renovatedTimePanel","getScrollableScrollTop","getScrollableOuterWidth","scrollWidth","_container","getGroupTableWidth","getLeftOffset","getGroupedStrategy","patchedIndexes","_patchCellIndex","_getMillisecondsOffset","_getOffsetByCount","dayCount","getVisibleDayDuration","startDayTime","fullInterval","_getDaysOfInterval","weekendsCount","_getGroupIndexes","_getDroppableCell","_getWorkSpaceWidth","inAllDayRow","cellCoordinates","_getCellByCoordinates","_getCellPositionWithCache","_getCellPosition","setCellDataCache","prepareCellIndexes","_getGroupHeaderCellsContent","_getScrollCoordinates","calculateCoordinatesByDataAndPosition","$dateTableScrollableElement","scrollableSize","window","isTargetInAllDayPanel","isOutsideHorizontalScrollable","pageX","scrollX","isOutsideVerticalScrollable","pageY","scrollY","setCellDataCacheAlias","aliasKey","$focusedCells","_getMultipleCellsData","currentCell","_getCellDataInRenovatedView","_getVirtualRowOffset","verticalScrollingState","virtualItemSizeBefore","topVirtualRowsCount","_getHorizontalMax","getHorizontalMax","shouldFindPositionByViewData","positionByMap","calculateCellPositionByView","getTimeShift","horizontalHMax","vMax","getVerticalMax","getCellIndexByDate","timeInterval","dateTimeStamp","currentDayStart","currentDayEndHour","timeZoneDifference","currentDateTime","currentDayStartTime","_isSkippedData","getCoordinatesByDateInGroup","groupIndices","getDroppableCellIndex","$droppableCell","useCache","getMaxAllowedPosition","isRtl","maxPosition","getMaxAllowedVerticalPosition","getMaxAllowedVerticalPositionVirtual","getMaxAllowedVerticalPositionStandard","getMaxPosition","_this$viewDataProvide","getCellIndexByCoordinates","leftOffset","topIndex","leftIndex","getDateOfLastViewCell","endDateOfLastViewCell","_adjustEndViewDateByDaylightDiff","getDaylightOffsetInMs","getGroupBounds","getGroupBoundsOffset","startOffset","needRecalculateResizableArea","$scrollable","scrolledCellCount","_getCellsInViewport","currentResult","_this16$getCellData","totalColumnCount","scrollableScrollTop","scrollableScrollLeft","fullScrolledRowCount","scrolledRowCount","fullScrolledColumnCount","scrolledColumnCount","columnCount","getGroupWidth","currentPosition","_isValidScrollDate","scrollable","scrollBy","throwWarning","isScrollToAllDay","scrollableHeight","scrollableWidth","xShift","yShift","getDistanceBetweenCells","endIndex","dragBehavior","_createDragBehavior","_createDragBehaviorBase","dragElement","isSetCursorOffset","restOptions","dragTemplate","_createDragAppointment","resetPosition","_dragElement","cursorOffset","$dragElement","_isApplyCompactAppointmentOffset","updateAppointments","_this$dragBehavior","DefaultSizes","CollaborativeArea","DEFAULT_APPOINTMENT_HEIGHT","MIN_APPOINTMENT_HEIGHT","DROP_DOWN_BUTTON_OFFSET","HorizontalRenderingStrategy","_BaseAppointmentsStra","durationInCells","_customizeAppointmentGeometry","auto","itemLeft","_getMaxAppointmentWidth","deltaWidth","DATE_TIME_SHADER_ALL_DAY_CLASS","DATE_TIME_SHADER_TOP_CLASS","DATE_TIME_SHADER_BOTTOM_CLASS","VerticalCurrentTimeShader","_CurrentTimeShader","renderShader","shaderHeight","_getShaderHeight","_getShaderMaxHeight","isSolidShader","_$shader","_renderGroupedByDateShaderParts","_renderShaderParts","shaderWidth","_getShaderWidth","_renderTopShader","_renderBottomShader","_renderAllDayShader","bottomShaderWidth","$shader","_$topShader","_getShaderTopOffset","_getShaderOffset","_$bottomShader","_$allDayIndicator","getShaderOffset","getShaderTopOffset","getShaderHeight","getShaderMaxHeight","getShaderWidth","_guid","_popover","TOOLTIP_CLASS","TOOLTIP_WRAPPER_CLASS","Tooltip","toolbarItems","titleTemplate","onTitleRendered","bottomTemplate","propagateOutsideClick","_wrapper","_contentId","_$content","role","_toggleAriaDescription","showing","isWindow","DAY_CLASS","SchedulerWorkSpaceDay","_SchedulerWorkSpaceVe","ContentTemplate","_uiEventsEmitterGesture","_size","_text_box","TEXTAREA_CLASS","TEXTEDITOR_INPUT_CLASS","TEXTEDITOR_INPUT_CLASS_AUTO_RESIZE","TextArea","spellcheck","minHeight","autoResizeEnabled","_updateInputHeight","_renderInput","_renderScrollHandler","_createInput","$input","_applyInputAttributes","_updateInputAutoResizeAppearance","customAttributes","_eventY","_input","initScrollData","init","_pointerMoveHandler","eventData","currentEventY","isScrollingEvent","_renderDimensions","_getOptionValue","_resetDimensions","_renderEvents","_refreshEvents","_getHeightDifference","getVerticalOffsets","_$element","_$textEditorContainer","_$textEditorInputContainer","getElementBoxParams","getComputedStyle","margin","autoHeightResizing","heightDifference","_getBoundaryHeight","inputHeight","scrollHeight","adjustedMaxHeight","needScroll","boundaryValue","parseHeight","_renderInputType","isAutoResizeEnabled","ensureDefined","SchedulerWorkspaceVertical","_SchedulerWorkSpaceIn","lastColumn","lastRow","lastCellGroup","indexesDifference","newFirstIndex","newLastIndex","column","DateTableLayoutBaseProps","_table","_table_body","DateTableBody","__isVirtual","__topVirtualRowHeight","__bottomVirtualRowHeight","__virtualCellsCount","VirtualRowProps","_row","_virtualCell","Row","virtualCells","VirtualCell","RowProps","__virtualCells","MonthDateTableCell","MonthDateTableCellProps","otherMonth","_uiSchedulerAppointmentsStrategy2","_uiSchedulerAppointmentsStrategy3","_uiSchedulerAppointmentsStrategy4","_uiSchedulerAppointmentsStrategy5","RENDERING_STRATEGIES","horizontal","horizontalMonth","horizontalMonthLine","vertical","AppointmentLayoutManager","getCellDimensions","allDayHeight","getGroupOrientation","_renderingStrategyInstance","_this$getCellDimensio","_createAppointmentsMapCore","list","positionMap","_isDataChanged","_isAppointmentShouldAppear","_isSettingChanged","sourceSetting","newSettings","oldSettings","_getAssociatedSourceAppointment","sourceAppointments","_getDeletedAppointments","currentAppointments","untils","offsetIndices","BUTTON_GROUP_CLASS","BUTTON_GROUP_WRAPPER_CLASS","BUTTON_GROUP_ITEM_CLASS","BUTTON_GROUP_FIRST_ITEM_CLASS","BUTTON_GROUP_LAST_ITEM_CLASS","BUTTON_GROUP_ITEM_HAS_WIDTH","SHAPE_STANDARD_CLASS","ButtonCollection","_prepareItemStyles","_getBasicButtonOptions","_templateData","itemTemplateProperty","_renderItemContent","_renderItemContentByNode","$node","_keyboardEventBindingTarget","_refreshContent","_prepareContent","_itemSelectHandler","isItemSelected","ButtonGroup","selectedItems","keyExpr","buttonTemplate","_createItemClickAction","_itemClickAction","_renderButtons","_syncSelectionOptions","_fireSelectionChangeEvent","addedItems","removedItems","$buttons","_buttonsCollection","_setOptionWithoutOptionChange","inkRipple","_editor","RADIO_BUTTON_CHECKED_CLASS","RADIO_BUTTON_CLASS","RADIO_BUTTON_ICON_CHECKED_CLASS","RADIO_BUTTON_ICON_CLASS","RADIO_BUTTON_ICON_DOT_CLASS","RADIO_GROUP_HORIZONTAL_CLASS","RADIO_GROUP_VERTICAL_CLASS","RADIO_VALUE_CONTAINER_CLASS","RADIO_GROUP_CLASS","RADIO_FEEDBACK_HIDE_TIMEOUT","RadioCollection","_CollectionWidget","_nullValueSelectionSupported","_dataExpressionDefaultOptions","_itemAttributes","deferRender","$radio","$radioContainer","_processSelectableItem","isSelected","RadioGroup","_Editor","_inkRipple","defaultOptionsRules","tablet","layout","_getAriaTarget","useInkRipple","_getItemValue","_valueGetter","_getSubmitElement","_$submitElement","_feedbackHideTimeout","_initDataExpressions","_renderSubmitElement","_renderRadios","_renderInkRipple","_renderLayout","newValue","_saveValueChangeEvent","_setSelection","_setCollectionWidgetOption","_unwrappedValue","_dataExpressionOptionChanged","_getCollectionKeyExpr","_setSubmitValue","_updateItemsSize","waveSizeCoefficient","useHoldAnimation","isCentered","_areRadiosCreated","$radios","_this$option","isNullSelectable","_radios","selectionByClick","submitValue","_displayGetter","_setWidgetOption","_toggleActiveState","showWave","hideWave","itemsCount","_this$_radios","_this$_radios2","MONDAY_INDEX","SATURDAY_INDEX","SUNDAY_INDEX","workWeekUtils","isDataOnWeekend","getWeekendsCount","getFirstViewDate","viewStart","normalizeDateByWeek","VirtualCellProps","AppointmentSettingsGeneratorVirtualStrategy","AppointmentSettingsGeneratorBaseStrategy","settingsStrategy","itemResources","appointmentList","_createAppointments","_getProcessedByAppointmentTimeZone","_canProcessNotNativeTimezoneDates","_getProcessedNotNativeTimezoneDates","gridAppointmentList","_createGridAppointmentList","_cropAppointmentsByStartDayHour","_getProcessedLongAppointmentsIfRequired","appointmentInfos","_createAppointmentInfos","hasAppointmentTimeZone","appointmentOffsets","sourceOffsets","startDateOffsetDiff","endDateOffsetDiff","_createRecurrenceAppointments","_item$endDate","resultEndTime","isTimeZoneSet","isEqualLocalTimeZone","_getProcessedNotNativeDateIfCrossDST","newDateMinusOneHour","newDateOffset","newDateMinusOneHourOffset","startDateRange","endDateRange","startDateRangeOffset","endDateRangeOffset","isChangeOffsetInRange","diffStartDateOffset","diffEndDateOffset","newEndDate","testNewStartDate","testNewEndDate","longStartDateParts","resultDates","gridAppointment","endDateOfPart","getDatesOfInterval","startDatePart","offsetDifference","_createExtremeRecurrenceDates","commonTimeZone","daylightOffset","_createRecurrenceOptions","_this$_createExtremeR","_this$_createExtremeR2","minRecurrenceDate","maxRecurrenceDate","exceptionAppointmentOffset","generatedStartDates","_getGroupIndices","_getAppointmentFirstViewDate","_getViewStartDayHour","_getAppointmentResultDate","normalizeDate","roundDateByStartDayHour","gridAppointments","recurrent","_AppointmentSettingsG","_createRecurrentAppointmentInfos","recurrentInfo","_this$scheduler$getWo","_updateGroupIndices","appointmentCopy","_this$scheduler$getWo2","viewDataGroupIndices","WEEK_CLASS","SchedulerWorkSpaceWeek","KEYS","SETTINGS","utils","TimePanelTableLayoutProps","_cell2","_cellsRow$","allDayPanelVisible","__isVerticalGroupOrientation","ALLDAY_APPOINTMENT_MIN_VERTICAL_OFFSET","ALLDAY_APPOINTMENT_MAX_VERTICAL_OFFSET","VerticalRenderingStrategy","deltaHeight","_getAllDayAppointmentGeometry","_getAdaptiveGeometry","_getVerticalAppointmentGeometry","isRecurring","isAppointmentTakesSeveralDays","currentSetting","resultHeight","multiDaysAppointmentParts","_isMultiViewAppointment","reduceHead","_reduceMultiDayAppointment","sourceAppointmentHeight","reducedHeight","isMultiDay","_isMultiDayAppointment","maxTop","_getGroupHeight","_getGroupTopOffset","groupTop","allDayPanelOffset","appointmentGroupTopOffset","_getTailHeight","appointmentGeometry","groupHeight","tailHeight","currentPartTop","cellsDiff","_getMinuteHeight","cellBorderSize","_calculateVerticalGeometryConfig","_customizeVerticalCoordinates","appointmentLeft","_getMaxWidth","durationInHours","fullDuration","durationInMinutes","allDayCondition","condition","_calendar","_popup","ELEMENT_CLASS","CALENDAR_CLASS","NEXT_BUTTON_CLASS","CAPTION_BUTTON_CLASS","PREVIOUS_BUTTON_CLASS","CALENDAR_POPOVER_CLASS","getDefaultFirstDayOfWeekIndex","getDateMonthFormat","getMonthYearFormat","getCaptionFormat","dateMonthFormat","lastIntervalDate","defaultViewDuration","isDifferentMonthDates","useShortFormat","firstWeekDateText","lastWeekDateText","getWeekCaption","rejectWeekend","firstWeekDate","weekendDuration","lastWeekDate","formatCaptionByMonths","lastDate","lastDateText","firstDateText","isDifferentYears","getMonthCaption","getLastMonthDate","isSameYear","getConfig","getCaption","_getConfig","getLastMonthDay","SchedulerNavigator","displayedDate","_useShortDateFormat","_updateButtonsState","_renderCaption","_setCalendarOption","_next","_caption","_prev","_initButtons","$next","_updateCurrentDate","$caption","$prev","caption","_getNextDate","initialDate","stepConfig","_renderPopover","_renderCaptionKeys","_isMobileLayout","overlayType","popoverContainer","_createPopupContent","fullScreen","shortcut","_createScrollable","content","_calendarOptions","_todayDate","onValueChanged","hasFocus","captionConfig","customizationFunction","onKeyboardHandled","_keyboardHandler","executeHandler","registerKeyHandler","CollaborativeAreaModule","collaborativeAreasInfo","nameUsersByCollaborativeAreas","selectedCollaborativeArea","collaborativeAreaTypes","usersAndRolesArea","collaborativeAreaMember","myId","areaEditMode","users","collaborativeArea","active","toJson","collaborativeAreaDB","put","commit","userId","ambitId","roleId","chat","catch","toast","then","usersAndRoles","editar","namespaced","dynamic","DateTableBodyProps","Cell","AllDayPanelTableBody","__cell","DxView","DxScrolling","DxResource","DxEditing","DxAppointmentDragging","DxScheduler","scheduler_1","index_2","$_expectedChildren","isCollectionItem","createConfigurationComponent","autoScroll","scrollSensitivity","scrollSpeed","$_optionName","$_isCollectionItem","_uiSchedulerWork_spaceGrouped","VERTICAL_GROUPED_ATTR","DATE_HEADER_OFFSET","WORK_SPACE_BORDER","VerticalGroupedStrategy","_GroupedStrategy","_addLastGroupCellClass","_addFirstGroupCellClass","maxAllowedPosition","workspaceContainerWidth","endOffset","dayHeight","bottomOffset","_groupBoundsOffset","tableOffset","horizontalOffset","verticalOffset","_$container","AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS","DIRECTION_APPOINTMENT_CLASSES","REDUCED_APPOINTMENT_PARTS_CLASSES","ALL_DAY_APPOINTMENT_CLASS","EMPTY_APPOINTMENT_CLASS","RECURRENCE_APPOINTMENT_CLASS","REDUCED_APPOINTMENT_ICON","REDUCED_APPOINTMENT_CLASS","LIST_ITEM_CLASS","head","tail","global","fails","uncurryThis","whitespaces","$parseInt","ITERATOR","hex","FORCED","radix","_dom_component","_resizable","DEFAULT_HORIZONTAL_HANDLES","DEFAULT_VERTICAL_HANDLES","REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME","REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME","Appointment","_renderDragSourceClass","_getHorizontalResizingRule","reducedHandles","roundStepValue","_getVerticalResizingRule","_renderAppointmentGeometry","_renderEmptyClass","_renderReducedAppointment","_renderAllDayClass","_renderDirection","_renderRecurrenceClass","_renderResizable","reducedPart","_renderAppointmentReducedIcon","$icon","_getEndDate","tooltipLabel","tooltipText","_createResizingConfig","stepPrecision","_useTemplates","_selection_filter","_dom","_scroll_rtl_behavior","_select_box","_utils3","TAGBOX_TAG_DATA_KEY","TAGBOX_CLASS","TAGBOX_TAG_CONTAINER_CLASS","TAGBOX_TAG_CLASS","TAGBOX_MULTI_TAG_CLASS","TAGBOX_CUSTOM_TAG_CLASS","TAGBOX_TAG_REMOVE_BUTTON_CLASS","TAGBOX_ONLY_SELECT_CLASS","TAGBOX_SINGLE_LINE_CLASS","TAGBOX_POPUP_WRAPPER_CLASS","TAGBOX_TAG_CONTENT_CLASS","TAGBOX_DEFAULT_FIELD_TEMPLATE_CLASS","TAGBOX_CUSTOM_FIELD_TEMPLATE_CLASS","NATIVE_CLICK_CLASS","TEXTEDITOR_INPUT_CONTAINER_CLASS","TAGBOX_MOUSE_WHEEL_DELTA_MULTIPLIER","TagBox","sendToList","backspace","_isCaretAtTheStart","_processKeyboardEvent","_isTagRemoved","$tagToDelete","_$focusedTag","_tagElements","_moveTagFocus","_preserveFocusedTag","_removeTagElement","altKey","isListItemFocused","isCustomItem","_searchValue","_customItemAddedHandler","isOpened","isInputActive","_shouldRenderSearchEvent","_isEmpty","_isEditable","_scrollContainer","_getValue","_updateTagsContainer","_$tagsContainer","_allowSelectItemByTab","clearOnBoundary","tagElements","$nextFocusedTag","_replaceFocusedTag","_clearTagFocus","_focusClassTarget","scrollPosition","_getScrollPosition","_getBorderPosition","_getFocusedTagPosition","isScrollLeft","scrollBehavior","isScrollInverted","scrollSign","_this$_$focusedTag$po","scrollCorrection","_setNextValue","showDropDownButton","maxFilterLength","tagTemplate","selectAllText","hideSelectedItems","selectAllMode","onSelectAllValueChanged","maxDisplayedTags","showMultiTagOnly","onMultiTagPreparing","multiline","_selectedItems","_initSelectAllValueChangedAction","_initMultiTagPreparingAction","_multiTagPreparingAction","beforeExecute","_multiTagPreparingHandler","_this$_getValue","selectedCount","getFormatter","_initDynamicTemplates","tag","_data$text","$tagContent","_toggleSubmitElement","enabled","$options","useDisplayText","_shouldUseDisplayValue","_tagElementsCache","isSingleLineMode","_initTagTemplate","_renderTagRemoveAction","_renderSingleLineScroll","_tagTemplate","_renderField","isDefaultFieldTemplate","tagRemoveAction","_removeTagHandler","_renderTypingEvent","mouseWheelEvent","isMultiline","_tagContainerMouseWheelHandler","isCommandKeyPressed","namespace","normalizeKeyName","_isControlKey","_popupWrapperClass","_renderPreventBlur","_inputWrapper","_renderInputValueImpl","_renderMultiSelect","_loadInputValue","_clearTextValue","_toggleEmptinessEventHandler","_preventNestedFocusEvent","_renderInputValue","_restoreInputText","saveEditingValue","_getFirstPopupElement","_selectAllValueChangeAction","_renderList","_setListDataSourceFilter","_popupElementTabHandler","_popupElementEscHandler","_canListHaveFocus","_listConfig","onFocusedItemChanged","_renderInputSize","_renderTags","refreshPosition","_listItemClickHandler","_shouldClearFilter","shouldClearFilter","showSelectionControls","isEmptyInput","cursorWidth","canTypeText","$calculationElement","createTextElementHiddenCopy","includePaddings","insertAfter","_renderInputSubstitution","_updateWidgetHeight","_multiTagRequired","_renderMultiTag","$tag","multiTagElement","insertBefore","_getFilteredItems","_this$_list","creator","SelectionFilterCreator","listSelectedItems","isListItemsLoaded","getDataSource","clientFilterFunction","getLocalFilter","selectedItemsAlreadyLoaded","_isDataSourceChanged","filterExpr","getCombinedFilter","filterLength","encodeURI","_dataSource$loadOptio","loadOptions","customQueryParams","expand","select","extra","_disposed","_normalizeLoadResult","normalizeLoadResult","mappedItems","_applyMapFunction","_createTagsData","isValueExprSpecified","_valueGetterExpr","filteredValues","filteredItem","filteredItemValue","loadItemPromises","_loadItem","_createTagData","valueIndex","customItem","_isGroupedData","_getItemsByValues","resultItems","_getItemFromPlain","_getFilteredGroupedItems","_loadTagsData","tagData","filteredItemsPromise","isPlainDataUsed","_shouldGetItemsFromPlain","_valuesToUpdate","_getItemsFromPlain","_renderTagsImpl","_renderTagsCore","_renderEmptyState","_getPlainItems","_getSelectedItemsFromList","needFilterPlainItems","plainItems","_filterSelectedItems","_this$_list2","dataItem","_isValueEquals","_integrateInput","_cleanTags","$multiTag","_renderTag","_isFocused","_refreshTagElements","$tags","_toggleEmptiness","_renderDisplayText","_applyTagTemplate","_getTag","displayValue","itemModel","_getItemModel","_createTag","tagsLength","reset","_removeTagWithUpdate","_updateField","_removeTag","_getCurrentValue","_lastValue","_selectionChangeHandler","removedItem","addedItem","_addTag","listSelectionChangeEvent","_getSelectionChangeEvent","_saveSelectionChangeEvent","_valueIndex","_fieldRenderData","_completeSelection","_setValue","useButtons","_isSelectedValue","indexByValues","selectedValue","lastValue","_valueChangeEventHandler","_searchHandler","originalHeight","currentHeight","_refreshSelected","_this$_list3","_resetListDataSourceFilter","_getDataSource","_userFilter","reload","valueGetterExpr","_dataSourceFilterExpr","_dataSourceFilterFunction","_applyButtonHandler","_getSortedListValues","_cancelSearchIfNeed","listValues","_getListValues","existedItems","newItems","_setListDataSource","_renderOpenedState","defaultValue","_defaultTagTemplate","_removeDuplicates","_setListOption","previousValue","_getActualSearchValue","_popupHidingHandler","_clearFilter","APPOINTMENT_COLLECTOR_CLASS","COMPACT_APPOINTMENT_COLLECTOR_CLASS","APPOINTMENT_COLLECTOR_CONTENT_CLASS","WEEK_VIEW_COLLECTOR_OFFSET","COMPACT_THEME_WEEK_VIEW_COLLECTOR_OFFSET","_createTemplate","button","_createCompactButton","$button","_makeBackgroundColor","_makeBackgroundDarker","_createTooltipInfos","_items$settings","_onButtonClick","_getExtraOptionsForTooltip","_clickEvent","_createTooltipDragBehavior","isButtonClick","createClickEvent","extendFromObject","_$$data","_getCollectorOffset","_getCollectorRightOffset","_makeBackgroundColorCore","itemsColors","currentItemColor","paintButton","_setPosition","_createCompactButtonElement","appointmentCount","_initButtonTemplate","appointmentCollector","_createButtonTemplate","dataCellTemplateProps","__dataCellTemplateProps","AllDayPanelTableBodyProps","WidgetObserver","VirtualSelectionState","_focusedCell","_firstSelectedCell","_getColumnIndexByCellData","_getRowIndexByColumnAndData","lastCellCoordinates","firstCellCoordinates","lastColumnIndex","isLastCellAllDay","firstStartDate","firstGroupIndex","lastStartDate","filteredCells","filteredRow","_filterCellsByDate","secondCell","releaseSelectedCells","releaseFocusedCell","nextFocusedCellData","nextAllDay","_firstRow$columnIndex","currentCellData","firstTime","lastTime","HORIZONTAL_GROUPED_ATTR","HorizontalGroupedStrategy","inAllDay","groupByDay","applyUnconditionally","startCellIndex","_getIndicatorOffset","_calculateGroupByDateOffset","_calculateOffset","MONTH_APPOINTMENT_HEIGHT_RATIO","MONTH_APPOINTMENT_MIN_OFFSET","MONTH_APPOINTMENT_MAX_OFFSET","MONTH_DROPDOWN_APPOINTMENT_MIN_RIGHT_OFFSET","MONTH_DROPDOWN_APPOINTMENT_MAX_RIGHT_OFFSET","HorizontalMonthRenderingStrategy","_HorizontalMonthLineA","_getLeftPosition","fullWeekAppointmentWidth","_getFullWeekAppointmentWidth","_calculateMultiWeekAppointmentLeftOffset","_getChunkCount","fullChunksWidth","firstChunkWidth","weekWidth","rawFullChunksWidth","_getChunkWidths","widthWithoutFirstChunk","_getTailChunkSettings","withoutFirstChunkWidth","leftPosition","tailChunkWidth","rtlPosition","tailChunkLeftPosition","_this$_getChunkWidths","_this$_getChunkWidths2","hasTailChunk","chunkCount","_this$_getTailChunkSe","_this$_getTailChunkSe2","chunkIndex","topPosition","isTailChunk","groupDeltaWidth","_getGroupDeltaWidth","cellCountDelta","getGroupCellCountDelta","_maxFullWeekAppointmentWidth","_form","_button_group","_date_box","_number_box","RECURRENCE_EDITOR","LABEL_POSTFIX","WRAPPER_POSTFIX","RECURRENCE_EDITOR_CONTAINER","REPEAT_END_EDITOR","REPEAT_END_TYPE_EDITOR","REPEAT_COUNT_EDITOR","REPEAT_UNTIL_DATE_EDITOR","RECURRENCE_BUTTON_GROUP","FREQUENCY_EDITOR","INTERVAL_EDITOR","REPEAT_ON_EDITOR","DAY_OF_MONTH","MONTH_OF_YEAR","recurrentEditorNumberBoxWidth","recurrentEditorSelectBoxWidth","defaultRecurrenceTypeIndex","frequenciesMessages","frequencies","repeatEndTypes","RecurrenceRule","_recurrenceProcessor","_recurrenceRule","makeRules","makeRule","getRepeatEndRule","getRules","getDaysFromByDayRule","RecurrenceEditor","_getFirstDayOfWeek","_extendConfig","readOnly","_prepareEditors","_renderEditors","getEditorByField","editor","getRecurrenceForm","getEditor","_weekEditor","_repeatCountEditor","_repeatUntilDate","_editors","_createFreqEditor","_createIntervalEditor","_createRepeatOnLabel","itemType","colCount","colCountByScreen","xs","_createRepeatOnEditor","_createRepeatEndEditor","_valueChangedHandler","showSpinButtons","useLargeSpinButtons","substr","_createByDayEditor","_createByMonthEditor","_createByMonthDayEditor","_daysOfWeekByRules","localDaysNames","dayNames","itemsButtonGroup","_$repeatOnWeek","selectedKeys","_changeEditorValue","monthsName","_monthOfYearByRules","_dayOfMonthByRules","repeatType","_renderRepeatCountEditor","_renderRepeatUntilEditor","_renderDefaultRepeatEnd","_repeatEndValueChangedHandler","_recurrenceForm","showValidationSummary","showColonAfterLabel","labelLocation","_disableRepeatEndParts","_setAriaDescribedBy","$label","labelId","changeValueByVisibility","_handleDefaults","dayByRule","monthByRule","$editorTemplate","_getUntilValue","$editorWrapper","_$repeatCountEditor","_repeatCountValueChangeHandler","_formatUntilDate","repeatUntil","_$repeatDateEditor","_repeatUntilValueChangeHandler","calendarOptions","untilDate","_makeRepeatOnRule","_changeRepeatOnVisibility","_changeRepeatIntervalLabel","_changeEditorsValue","previousFreq","itemOption","_changeDayOfWeekValue","_changeDayOfMonthValue","_changeMonthOfYearValue","_changeIntervalValue","_changeRepeatCountValue","_changeRepeatEndValue","_changeRepeatUntilValue","isEditorVisible","_days","_freqEditor","_switchEditor","ref","__k","__d","vnode","debounceRendering","__n","ownerSVGElement","P","N","nextSibling","C","H","setProperty","cssText","addEventListener","I","removeEventListener","removeAttribute","contextType","__E","O","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","L","localName","nodeType","createElementNS","childNodes","dangerouslySetInnerHTML","attributes","__html","checked","componentWillUnmount","firstChild","B","Consumer","Provider","getDerivedStateFromError","forceUpdate","Promise","HorizontalCurrentTimeShader","isFirstShader","createShader","applyShaderMargin","_customizeGroupedByDateShader","_customizeShader","_applyShaderWidth","indicationWidth","shaderLeft","getIndicationCellCount","integerPart","fractionPart","isFirstShaderPart","ROW_HEIGHT","CELL_WIDTH","MIN_SCROLL_OFFSET","VIRTUAL_APPOINTMENTS_RENDER_TIMEOUT","DOCUMENT_SCROLL_EVENT_NAMESPACE","scrollingTypes","both","DefaultScrollingType","VirtualScrollingDispatcher","_rowHeight","_cellWidth","Renderer","_createVirtualScrolling","_attachScrollableEvents","timeToScroll","scrollInCell","_onScrollHandler","verticalScrollingAllowed","verticalVirtualScrolling","VerticalVirtualScrolling","viewportHeight","horizontalScrollingAllowed","horizontalVirtualScrolling","HorizontalVirtualScrolling","viewportWidth","_attachScrollableScroll","_attachWindowScroll","currentOnScroll","_process","minScrollOffset","_this$verticalVirtual","_this$horizontalVirtu","updateState","renderer","updateRender","needUpdate","_verticalVirtualScrolling","_horizontalVirtualScrolling","innerHeight","innerWidth","virtualItemCountBefore","_this$verticalVirtual2","_this$horizontalVirtu2","scrollingState","_this$verticalVirtual3","_this$horizontalVirtu3","verticalRenderState","getRenderState","horizontalRenderState","scrollingType","VirtualScrollingBase","_state","defaultState","_viewportSize","viewportSize","_itemSize","itemSize","needUpdateState","_this$state","prevPosition","isFirstInitialization","maxScrollPosition","currentItemsCount","isStartIndexChanged","outlineCount","_correctPosition","itemsInfoBefore","_calcItemInfoBefore","itemsDeltaBefore","_calcItemDeltaBefore","_this$_calcItemInfoAf","_calcItemInfoAfter","outlineCountAfter","virtualItemCountAfter","itemCountWithAfter","outlineCountBefore","itemCountAfter","_updateStateCore","itemInfoBefore","totalItemCount","getTotalItemCount","prevVirtualItemSizeBefore","prevVirtualItemSizeAfter","virtualItemSizeAfter","prevOutlineSizeBefore","outlineSizeBefore","prevOutlineSizeAfter","outlineSizeAfter","prevVirtualSizeBefore","virtualSizeBefore","prevVirtualSizeAfter","virtualSizeAfter","isAppend","isPrepend","needAddItems","_VirtualScrollingBase","_VirtualScrollingBase2","leftVirtualCellWidth","rightVirtualCellWidth","_renderAppointmentTimeout","_proto5","getRenderTimeout","renderTimeout","AllDayPanelLayoutProps","_const","emptyTableHeight","__allDayPanelData","__emptyTableHeight","_timezones_data","_math","timeZoneDataUtils","_timeZones","getDisplayedTimeZones","timestamp","timeZones","timezone","getUtcOffset","formatId","minutesInDecimal","signString","hoursString","minutesString","getTimezoneById","tzList","currentId","getTimeZoneOffsetById","getTimeZoneDeclarationTuple","getTimeZoneDeclarationTupleCore","tupleResult","offsetIndicesList","offsetsList","untilsList","listLength","currentUntil","_vm","_h","$createElement","_c","_self","staticStyle","staticClass","$event","goToAreaHome","_v","backToHome","scopedSlots","_u","getColor","blockViewResumen","completed","canEdit","editable","completEvent","$$v","$set","expression","colorsArray","asignedColorsArray","collaborativeAreas","staticRenderFns","_l","asignation","getCollaborativeAreaName","colorIndex","asignedColors","leyenda","collaborativeAreasName","components","collaborativeAreaId","eventos","setColors","$tc","evento","tarea","delete","GetRoles","$route","params","setStore","es","getDomEvents","getCollaborativeAreaById","MutationObserver","mutations","observe","childList","characterData","$refs","windowResizeHandler","events","OwnerCollaborativeArea","CollaboratorCollaborativeArea","send","popup","toolbar","deleteButton","guradar","showType","showCompleted","form","mainGroupItems","recurrenceGroup","$router","back","Leyenda","VBtn","VCardText","VCard","VCheckbox","VIcon","VToolbar","VToolbarTitle","_view_port","tooltip","removeTooltipElement","createTooltip","$tooltip","removeTooltip","APPOINTMENT_POPUP_CLASS","APPOINTMENT_POPUP_WIDTH","APPOINTMENT_POPUP_WIDTH_WITH_RECURRENCE","APPOINTMENT_POPUP_FULLSCREEN_WINDOW_WIDTH","APPOINTMENT_POPUP_FULLSCREEN_WINDOW_WIDTH_MOBILE","APPOINTMENT_POPUP_WIDTH_MOBILE","TOOLBAR_ITEM_AFTER_LOCATION","TOOLBAR_ITEM_BEFORE_LOCATION","DAY_IN_MS","AppointmentPopup","_appointmentForm","lastEditData","saveChangesLocker","isEmptyText","isEmptyDescription","isDoneButtonVisible","popupConfig","_createPopupConfig","_createPopup","_createPopupToolbarItems","_$popup","popupElement","onHiding","android","_updateForm","arg","formElement","_createForm","_createAppointmentFormData","_createAppointmentAdapter","_getAllowTimeZoneEditing","formData","AppointmentForm","prepareAppointmentFormEditors","changeSize","concatResources","_this$scheduler$_data","updateFormData","setEditorsType","_isDeviceMobile","_isPopupFullScreenNeeded","_tryGetWindowWidth","isRecurrence","isFullScreen","getRecurrenceRule","isIOs","platform","location","_doneButtonClickHandler","showLoadPanel","validation","_showLoadPanel","complete","_hideLoadPanel","recData","saveEditData","_tryLockSaveChanges","_unlockSaveChanges","$overlayContent","overlayContent","LAST_DAY_WEEK_INDEX","SchedulerTimelineWorkWeek","_SchedulerTimelineWee","weekendCount","AgendaRenderingStrategy","appointmentsByResources","groupedAppts","appts","recurrentIndexes","recurrenceBatch","appointmentBatch","appt","_calculateGroupIndex","apptIndex","resultInd","countApptInGroup","needClearSettings","groupedAppointments","groupResult","appointmentIsRecurrence","_iterateRow","indexInRow","getDateByIndex","calculatedStartDate","wrappedOriginalStartDate","HORIZONTAL_GROUPED_WORKSPACE_CLASS","HEADER_PANEL_WEEK_CELL_CLASS","DATE_TABLE_HEADER_MARGIN","SchedulerTimeline","_$sidebarTable","newFirstViewDate","_getDateByIndexCore","dayIndex","isTimezoneChangeInDate","_getWorkSpaceHeight","timelineConfig","scrollByContent","$th","groupCellTemplates","_getTimeDiff","_getIndicationFirstViewDate","differenceInDays","_getWorkSpaceMinHeight","$groupCells","workspaceContainerHeight","_ensureGroupHeaderCellsHeight","minCellHeight","_calculateMinCellHeight","dateTableRowSelector","firstViewDateTime","apptStart","fullDays","tailDuration","tailDelta","gapBeforeAppt","positionShift","scrollableOffset","visibleCellCount","leftDate","rightDate","COLLECTOR_ADAPTIVE_SIZE","COLLECTOR_ADAPTIVE_BOTTOM_OFFSET","ADAPTIVE_APPOINTMENT_DEFAULT_OFFSET","ADAPTIVE_APPOINTMENT_DEFAULT_WIDTH","AdaptivePositioningStrategy","_BasePositioningStrat","WORK_WEEK_CLASS","dayIndexes","weekCounter","SchedulerWorkSpaceWorkWeek","_SchedulerWorkSpaceWe","cellsInGroup","inGroup","_emitter","_fx","_swipeable","SWITCH_CLASS","SWITCH_WRAPPER_CLASS","SWITCH_CONTAINER_CLASS","SWITCH_INNER_CLASS","SWITCH_HANDLE_CLASS","SWITCH_ON_VALUE_CLASS","SWITCH_ON_CLASS","SWITCH_OFF_CLASS","SWITCH_ANIMATION_DURATION","Switch","click","_clickAction","_animateValue","switchedOnText","switchedOffText","_animating","_renderContainers","_$switchWrapper","_renderClick","_renderSwipeable","_renderSwitchInner","_renderLabels","_renderValue","_getInnerOffset","_offsetDirection","_getHandleOffset","calcValue","_$switchInner","_$switchContainer","_$handle","_$labelOn","_$labelOff","_setLabelsText","elastic","onStart","_swipeStartHandler","onUpdated","_swipeUpdateHandler","onEnd","_swipeEndHandler","_getItemSizeFunc","wavesNumber","_renderInkWave","dxEvent","doRender","waveIndex","wave","_updateFocusState","_renderPosition","swipeOffset","handleOffset","_validateValue","check","_clickHandler","_swiping","startValue","endValue","fromInnerOffset","toInnerOffset","fromHandleOffset","toHandleOffset","fromInnerConfig","toInnerConfig","fromHandleConfig","toHandlerConfig","transform","animate","maxOffOffset","maxOnOffset","maxLeftOffset","maxRightOffset","_feedbackDeferred","lock","offsetDirection","toHandleConfig","pressed","_marginBound","_refresh","setDefaultOptionValue","defaultValueGetter","PreactWrapper","_DOMComponent","_viewComponent","_propsInfo","_objectSpread2","_shouldRefresh","_renderPreact","containerNode","_documentFragment","_preactReplaced","_patchOptionValues","_this$_propsInfo","_patchElementParam","_viewRef","_extractDefaultSlot","class","_actionsMap","_getActionConfigs","_addAction","createRef","actionByOption","actArgs","isNode","dummyDivRefCallback","dummyDivRef","anonymousTemplateName","transclude","display","templateOption","useRef","useLayoutEffect","$parent","contents","isFinite","_wrapKeyDownHandler","handler","originalEvent","func","_handler","_toPublicElement","_result2","currentKeys","_this$_storedClasses","_elementAttr","specified","elemStyle","getPropertyValue","_storedClasses","IS_RENOVATED_WIDGET","_dateAdapter","timezoneOffsetBeforeInMin","getTimeZones","dateInUTC","createUTCDate","getTimezoneOffsetChangeInMinutes","updatedStartDate","updatedEndDate","dateUtc","_getDaylightOffsetByTimezone","getCorrectedDateByDaylightOffsets","convertedOriginalStartDate","convertedDate","startDateTimezone","daylightOffsetByCommonTimezone","daylightOffsetByAppointmentTimezone","exceptionByStartDate","isBackConversion","timezoneOffset","startDayDate","endDayDate","clonedDate","localTimeZoneName","isEqualLocalTimeZoneByDeclaration","hasDSTInLocalTimeZone","_getExtremeDates","getExtremeDates","_getExtremeDates2","getOffset","getDateAndMoveHourBack","dateStamp","configTuple","_configTuple","summerTime","winterTime","noDSTInTargetTimeZone","targetTimeZoneOffset","localTimeZoneOffset","localSummerOffset","localWinterOffset","nowDate","_load_panel","loading","createLoadPanel","removeLoadPanel","ENGLISH","monthNames","defaultGetText","defaultDateFormatter","ToText","allWeeks","someWeeks","isWeekdays","isEveryDay","sortWeekDays","canConvert","IMPLEMENTED","plural","_bymonth","_bymonthday","_byweekday","_byhour","weekdaytext","monthtext","npos","finalDelim","delim","delimJoin","delimiter","finalDelimiter","self","realCallback","Parser","nextSymbol","isDone","symbol","bestSymbol","name_1","acceptNumber","expect","ttr","AT","ON","wkd","decodeWKD","MDAYs","decodeM","the","decodeNTH","DATE_TIME_SHADER_CLASS","CurrentTimeShader","initShaderElements","shader","APPOINTMENT_TOOLTIP_WRAPPER_CLASS","MAX_TOOLTIP_HEIGHT","boundary","_getBoundary","collision","subscribes","isCurrentViewAgenda","currentViewUpdated","currentDateUpdated","getOption","createAppointmentSettings","showAddAppointmentPopup","cellGroups","resultAppointment","showEditAppointmentPopup","targetedData","updateAppointmentAfterResize","getUpdatedData","updateAppointmentAfterDrag","targetedRawAppointment","newCellIndex","oldCellIndex","becomeAllDay","wasAllDay","movedBetweenAllDayAndSimple","onDeleteButtonPress","getAppointmentColor","resourcesManager","resourceForPainting","resourceValues","groupId","getHeaderHeight","getBoundOffset","getTextAndFormatDate","appointmentRaw","targetedAppointmentRaw","formatType","_getTypeFormat","_createAppointmentTitle","_formatDates","timeFormat","isSameDate","getResizableAppointmentArea","horizontalGroupBounds","verticalGroupBounds","getResizableStep","getMaxAppointmentCountPerCellByType","getRenderingStrategyDirection","getFullWeekAppointmentWidth","getMaxAppointmentWidth","updateAppointmentStartDate","updateAppointmentEndDate","renderCompactAppointments","clearCompactAppointments","supportCompactDropDownAppointments","isApplyCompactAppointmentOffset","getGroupCount","mapAppointmentFields","getOffsetByAllDayPanel","getGroupTop","updateResizableArea","$allResizableElements","horizontalResizables","el","resizableInst","dxResizable","splitExprStr","rootField","emptyChain","arrLength","renderAppointments","prerenderFilter","prerenderFilterVirtual","isAllDaySupported","groupedDataToRender","groupResources","createReducedResourcesTree","0","totalResourceCount","getAgendaRows","rowsCalculated","getAgendaDuration","forceMaxAppointmentPerCell","onAgendaReady","$appts","applyClass","getTimezone","getTargetedAppointmentData","getAppointmentDurationInMs","ceilQuantityOfDays","isDifferentDates","floorQuantityOfDays","startDateEndHour","hiddenDayDuration","endPartDuration","calculateAppointmentEndDate","getEndDayHour","getStartDayHour","validateDayHours","APPOINTMENT_FORM_GROUP_NAMES","SCREEN_SIZE_OF_SINGLE_COLUMN","Main","Recurrence","SchedulerAppointmentForm","_lockDateShiftFlag","_validateAppointmentFormDate","isCurrentDateCorrect","isPreviousDateCorrect","_getAllDayStartDate","_getAllDayEndDate","_getStartDateWithStartHour","componentCreator","isReadOnly","lg","screenByWidth","_dateBoxValueChanged","dateExpr","isNeedCorrect","dateEditor","dateValue","_createTimezoneEditor","timeZoneExpr","secondTimeZoneExpr","visibleIndex","isMainTimeZone","isShow","noTzTitle","placeholder","searchEnabled","secondTimezoneEditor","_createDateBoxEditor","dataExpr","validationRules","_createDateBoxItems","dataExprs","schedulerInst","_createMainItems","startDateEditor","endDateEditor","allDayStartDate","startDateWithStartHour","_updateRecurrenceItemVisibility","_form$getEditor","updateData","recurrenceEditorVisibility","_createRecurrenceEditor","startDateItemPath","endDateItemPath","startDateFormItem","endDateFormItem","startDateEditorOptions","endDateEditorOptions","updateTimeZoneEditorDataSource","timeZoneDataSource","setEditorOptions","updateRecurrenceEditorStartDate","editorPath","appointmentForm"],"mappings":"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","file":"js/chunk-7c7b0562.134c8c43.js","sourcesContent":["/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space.indicator.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.work_space\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _window = require(\"../../../core/utils/window\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar SCHEDULER_DATE_TIME_INDICATOR_CLASS = \"dx-scheduler-date-time-indicator\";\r\nvar TIME_PANEL_CURRENT_TIME_CELL_CLASS = \"dx-scheduler-time-panel-current-time-cell\";\r\nvar HEADER_CURRENT_TIME_CELL_CLASS = \"dx-scheduler-header-panel-current-time-cell\";\r\nvar SchedulerWorkSpaceIndicator = function(_SchedulerWorkSpace) {\r\n _inheritsLoose(SchedulerWorkSpaceIndicator, _SchedulerWorkSpace);\r\n\r\n function SchedulerWorkSpaceIndicator() {\r\n return _SchedulerWorkSpace.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerWorkSpaceIndicator.prototype;\r\n _proto._getTimeZoneCalculator = function() {\r\n return this.invoke(\"getTimeZoneCalculator\")\r\n };\r\n _proto._getToday = function() {\r\n var todayDate = this.option(\"indicatorTime\") || new Date;\r\n var timeZoneCalculator = this._getTimeZoneCalculator();\r\n return (null === timeZoneCalculator || void 0 === timeZoneCalculator ? void 0 : timeZoneCalculator.createDate(todayDate, {\r\n path: \"toGrid\"\r\n })) || todayDate\r\n };\r\n _proto.isIndicationOnView = function() {\r\n if (this.option(\"showCurrentTimeIndicator\")) {\r\n var today = this._getToday();\r\n var endViewDate = _date.default.trimTime(this.getEndViewDate());\r\n return _date.default.dateInRange(today, this._firstViewDate, new Date(endViewDate.getTime() + toMs(\"day\")))\r\n }\r\n return false\r\n };\r\n _proto.isIndicationAvailable = function() {\r\n if (!(0, _window.hasWindow)()) {\r\n return false\r\n }\r\n var today = this._getToday();\r\n return today >= _date.default.trimTime(new Date(this.getStartViewDate()))\r\n };\r\n _proto.isIndicatorVisible = function() {\r\n var today = this._getToday();\r\n var endViewDate = new Date(this.getEndViewDate().getTime() + this._getEndViewDateTimeDiff() - 1);\r\n var firstViewDate = new Date(this.getStartViewDate());\r\n firstViewDate.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\r\n endViewDate.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\r\n return _date.default.dateInRange(today, firstViewDate, endViewDate)\r\n };\r\n _proto._renderDateTimeIndication = function() {\r\n if (this.isIndicationAvailable()) {\r\n if (this.option(\"shadeUntilCurrentTime\")) {\r\n this._shader.render()\r\n }\r\n if (this.isIndicationOnView() && this.isIndicatorVisible()) {\r\n var groupCount = this._getGroupCount() || 1;\r\n var $container = this._dateTableScrollable.$content();\r\n var height = this.getIndicationHeight();\r\n var rtlOffset = this._getRtlOffset(this.getCellWidth());\r\n this._renderIndicator(height, rtlOffset, $container, groupCount)\r\n }\r\n }\r\n };\r\n _proto._renderIndicator = function(height, rtlOffset, $container, groupCount) {\r\n var groupedByDate = this.isGroupedByDate();\r\n var repeatCount = groupedByDate ? 1 : groupCount;\r\n for (var i = 0; i < repeatCount; i++) {\r\n var $indicator = this._createIndicator($container);\r\n $indicator.width(groupedByDate ? this.getCellWidth() * groupCount : this.getCellWidth());\r\n this._groupedStrategy.shiftIndicator($indicator, height, rtlOffset, i)\r\n }\r\n };\r\n _proto._createIndicator = function($container) {\r\n var $indicator = (0, _renderer.default)(\"
\").addClass(SCHEDULER_DATE_TIME_INDICATOR_CLASS);\r\n $container.append($indicator);\r\n return $indicator\r\n };\r\n _proto._getRtlOffset = function(width) {\r\n return this.option(\"rtlEnabled\") ? (0, _position.getBoundingRect)(this._dateTableScrollable.$content().get(0)).width - this.getTimePanelWidth() - width : 0\r\n };\r\n _proto._setIndicationUpdateInterval = function() {\r\n if (!this.option(\"showCurrentTimeIndicator\") || 0 === this.option(\"indicatorUpdateInterval\")) {\r\n return\r\n }\r\n this._clearIndicatorUpdateInterval();\r\n this._indicatorInterval = setInterval(function() {\r\n this._refreshDateTimeIndication()\r\n }.bind(this), this.option(\"indicatorUpdateInterval\"))\r\n };\r\n _proto._clearIndicatorUpdateInterval = function() {\r\n if (this._indicatorInterval) {\r\n clearInterval(this._indicatorInterval);\r\n delete this._indicatorInterval\r\n }\r\n };\r\n _proto._isVerticalShader = function() {\r\n return true\r\n };\r\n _proto.getIndicationWidth = function(groupIndex) {\r\n var maxWidth = this.getCellWidth() * this._getCellCount();\r\n var difference = this._getIndicatorDuration();\r\n if (difference > this._getCellCount()) {\r\n difference = this._getCellCount()\r\n }\r\n var width = difference * this.getRoundedCellWidth(groupIndex, groupIndex * this._getCellCount(), difference);\r\n return maxWidth < width ? maxWidth : width\r\n };\r\n _proto.getIndicatorOffset = function(groupIndex) {\r\n var difference = this._getIndicatorDuration() - 1;\r\n var offset = difference * this.getRoundedCellWidth(groupIndex, groupIndex * this._getCellCount(), difference);\r\n return offset\r\n };\r\n _proto._getIndicatorDuration = function() {\r\n var today = this._getToday();\r\n var firstViewDate = new Date(this._firstViewDate);\r\n var timeDiff = today.getTime() - firstViewDate.getTime();\r\n if (\"workWeek\" === this.option(\"type\")) {\r\n timeDiff -= this._getWeekendsCount(Math.round(timeDiff / toMs(\"day\"))) * toMs(\"day\")\r\n }\r\n return Math.ceil((timeDiff + 1) / toMs(\"day\"))\r\n };\r\n _proto.getIndicationHeight = function() {\r\n var today = this._getToday();\r\n var cellHeight = this.getCellHeight();\r\n var date = new Date(this._firstViewDate);\r\n if (this.isIndicationOnView()) {\r\n date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate())\r\n }\r\n var duration = today.getTime() - date.getTime();\r\n var cellCount = duration / this.getCellDuration();\r\n return cellCount * cellHeight\r\n };\r\n _proto._dispose = function() {\r\n this._clearIndicatorUpdateInterval();\r\n _SchedulerWorkSpace.prototype._dispose.apply(this, arguments)\r\n };\r\n _proto._refreshDateTimeIndication = function() {\r\n this._cleanDateTimeIndicator();\r\n this._shader && this._shader.clean();\r\n this._renderDateTimeIndication()\r\n };\r\n _proto._isCurrentTime = function(date) {\r\n if (this.isIndicationOnView()) {\r\n var today = this._getToday();\r\n var result = false;\r\n date = new Date(date);\r\n date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\r\n var startCellDate = new Date(date);\r\n var endCellDate = new Date(date);\r\n if (_date.default.sameDate(today, date)) {\r\n startCellDate = startCellDate.setMilliseconds(date.getMilliseconds() - this.getCellDuration() + 1);\r\n endCellDate = endCellDate.setMilliseconds(date.getMilliseconds() + this.getCellDuration());\r\n result = _date.default.dateInRange(today, startCellDate, endCellDate)\r\n }\r\n return result\r\n }\r\n };\r\n _proto._isCurrentTimeHeaderCell = function(headerIndex) {\r\n if (this.isIndicationOnView()) {\r\n var date = this._getDateByIndex(headerIndex);\r\n return _date.default.sameDate(date, this._getToday())\r\n }\r\n return false\r\n };\r\n _proto._getTimeCellClass = function(i) {\r\n var startViewDate = this._getTimeCellDate(i);\r\n var cellClass = _SchedulerWorkSpace.prototype._getTimeCellClass.call(this, i);\r\n if (this._isCurrentTime(startViewDate)) {\r\n return cellClass + \" \" + TIME_PANEL_CURRENT_TIME_CELL_CLASS\r\n }\r\n return cellClass\r\n };\r\n _proto._getHeaderPanelCellClass = function(i) {\r\n var cellClass = _SchedulerWorkSpace.prototype._getHeaderPanelCellClass.call(this, i);\r\n if (this._isCurrentTimeHeaderCell(i)) {\r\n return cellClass + \" \" + HEADER_CURRENT_TIME_CELL_CLASS\r\n }\r\n return cellClass\r\n };\r\n _proto._cleanView = function() {\r\n _SchedulerWorkSpace.prototype._cleanView.call(this);\r\n this._cleanDateTimeIndicator()\r\n };\r\n _proto._dimensionChanged = function() {\r\n _SchedulerWorkSpace.prototype._dimensionChanged.call(this);\r\n this._refreshDateTimeIndication()\r\n };\r\n _proto._cleanDateTimeIndicator = function() {\r\n this.$element().find(\".\" + SCHEDULER_DATE_TIME_INDICATOR_CLASS).remove()\r\n };\r\n _proto._cleanWorkSpace = function() {\r\n _SchedulerWorkSpace.prototype._cleanWorkSpace.call(this);\r\n this._renderDateTimeIndication();\r\n this._setIndicationUpdateInterval()\r\n };\r\n _proto._optionChanged = function(args) {\r\n switch (args.name) {\r\n case \"showCurrentTimeIndicator\":\r\n case \"indicatorTime\":\r\n this._cleanWorkSpace();\r\n break;\r\n case \"indicatorUpdateInterval\":\r\n this._setIndicationUpdateInterval();\r\n break;\r\n case \"showAllDayPanel\":\r\n _SchedulerWorkSpace.prototype._optionChanged.call(this, args);\r\n this._refreshDateTimeIndication();\r\n break;\r\n case \"allDayExpanded\":\r\n _SchedulerWorkSpace.prototype._optionChanged.call(this, args);\r\n this._refreshDateTimeIndication();\r\n break;\r\n case \"crossScrollingEnabled\":\r\n _SchedulerWorkSpace.prototype._optionChanged.call(this, args);\r\n this._refreshDateTimeIndication();\r\n break;\r\n case \"shadeUntilCurrentTime\":\r\n this._refreshDateTimeIndication();\r\n break;\r\n default:\r\n _SchedulerWorkSpace.prototype._optionChanged.call(this, args)\r\n }\r\n };\r\n _proto._getDefaultOptions = function() {\r\n return (0, _extend.extend)(_SchedulerWorkSpace.prototype._getDefaultOptions.call(this), {\r\n showCurrentTimeIndicator: true,\r\n indicatorTime: new Date,\r\n indicatorUpdateInterval: 5 * toMs(\"minute\"),\r\n shadeUntilCurrentTime: true\r\n })\r\n };\r\n return SchedulerWorkSpaceIndicator\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerWorkSpace\", SchedulerWorkSpaceIndicator);\r\nvar _default = SchedulerWorkSpaceIndicator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\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 (renovation/ui/scheduler/workspaces/utils.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.isVerticalGroupOrientation = exports.getIsGroupedAllDayPanel = exports.getGroupCellClasses = exports.addHeightToStyle = exports.getKeyByGroup = exports.getKeyByDateAndGroup = void 0;\r\nvar _combine_classes = require(\"../../../utils/combine_classes\");\r\nvar _consts = require(\"../consts\");\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n if (enumerableOnly) {\r\n symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })\r\n }\r\n keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n })\r\n } else {\r\n if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n } else {\r\n ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar getKeyByDateAndGroup = function(date, groupIndex) {\r\n var key = date.getTime();\r\n if (!groupIndex) {\r\n return key.toString()\r\n }\r\n return (key + groupIndex).toString()\r\n};\r\nexports.getKeyByDateAndGroup = getKeyByDateAndGroup;\r\nvar getKeyByGroup = function(groupIndex) {\r\n return groupIndex.toString()\r\n};\r\nexports.getKeyByGroup = getKeyByGroup;\r\nvar addHeightToStyle = function(height, style) {\r\n var nextStyle = style || {};\r\n return _objectSpread(_objectSpread({}, nextStyle), {}, {\r\n height: height ? \"\".concat(height, \"px\") : nextStyle.height\r\n })\r\n};\r\nexports.addHeightToStyle = addHeightToStyle;\r\nvar getGroupCellClasses = function() {\r\n var isFirstGroupCell = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;\r\n var isLastGroupCell = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;\r\n var className = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : \"\";\r\n return (0, _combine_classes.combineClasses)(_defineProperty({\r\n \"dx-scheduler-first-group-cell\": isFirstGroupCell,\r\n \"dx-scheduler-last-group-cell\": isLastGroupCell\r\n }, className, true))\r\n};\r\nexports.getGroupCellClasses = getGroupCellClasses;\r\nvar getIsGroupedAllDayPanel = function(viewData, index) {\r\n var _groupData$allDayPane;\r\n var groupedData = viewData.groupedData;\r\n var groupData = groupedData[index];\r\n var isAllDayPanel = !!(null !== groupData && void 0 !== groupData && null !== (_groupData$allDayPane = groupData.allDayPanel) && void 0 !== _groupData$allDayPane && _groupData$allDayPane.length);\r\n var isGroupedAllDayPanel = !!(null !== groupData && void 0 !== groupData && groupData.isGroupedAllDayPanel);\r\n return isAllDayPanel && isGroupedAllDayPanel\r\n};\r\nexports.getIsGroupedAllDayPanel = getIsGroupedAllDayPanel;\r\nvar isVerticalGroupOrientation = function(groupOrientation) {\r\n return groupOrientation === _consts.VERTICAL_GROUP_ORIENTATION\r\n};\r\nexports.isVerticalGroupOrientation = isVerticalGroupOrientation;\r\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _createForOfIteratorHelperLoose(o) {\n var i = 0;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n i = o[Symbol.iterator]();\n return i.next.bind(i);\n}\n\n// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nvar LuxonError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(LuxonError, _Error);\n\n function LuxonError() {\n return _Error.apply(this, arguments) || this;\n }\n\n return LuxonError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n/**\n * @private\n */\n\n\nvar InvalidDateTimeError = /*#__PURE__*/function (_LuxonError) {\n _inheritsLoose(InvalidDateTimeError, _LuxonError);\n\n function InvalidDateTimeError(reason) {\n return _LuxonError.call(this, \"Invalid DateTime: \" + reason.toMessage()) || this;\n }\n\n return InvalidDateTimeError;\n}(LuxonError);\n/**\n * @private\n */\n\nvar InvalidIntervalError = /*#__PURE__*/function (_LuxonError2) {\n _inheritsLoose(InvalidIntervalError, _LuxonError2);\n\n function InvalidIntervalError(reason) {\n return _LuxonError2.call(this, \"Invalid Interval: \" + reason.toMessage()) || this;\n }\n\n return InvalidIntervalError;\n}(LuxonError);\n/**\n * @private\n */\n\nvar InvalidDurationError = /*#__PURE__*/function (_LuxonError3) {\n _inheritsLoose(InvalidDurationError, _LuxonError3);\n\n function InvalidDurationError(reason) {\n return _LuxonError3.call(this, \"Invalid Duration: \" + reason.toMessage()) || this;\n }\n\n return InvalidDurationError;\n}(LuxonError);\n/**\n * @private\n */\n\nvar ConflictingSpecificationError = /*#__PURE__*/function (_LuxonError4) {\n _inheritsLoose(ConflictingSpecificationError, _LuxonError4);\n\n function ConflictingSpecificationError() {\n return _LuxonError4.apply(this, arguments) || this;\n }\n\n return ConflictingSpecificationError;\n}(LuxonError);\n/**\n * @private\n */\n\nvar InvalidUnitError = /*#__PURE__*/function (_LuxonError5) {\n _inheritsLoose(InvalidUnitError, _LuxonError5);\n\n function InvalidUnitError(unit) {\n return _LuxonError5.call(this, \"Invalid unit \" + unit) || this;\n }\n\n return InvalidUnitError;\n}(LuxonError);\n/**\n * @private\n */\n\nvar InvalidArgumentError = /*#__PURE__*/function (_LuxonError6) {\n _inheritsLoose(InvalidArgumentError, _LuxonError6);\n\n function InvalidArgumentError() {\n return _LuxonError6.apply(this, arguments) || this;\n }\n\n return InvalidArgumentError;\n}(LuxonError);\n/**\n * @private\n */\n\nvar ZoneIsAbstractError = /*#__PURE__*/function (_LuxonError7) {\n _inheritsLoose(ZoneIsAbstractError, _LuxonError7);\n\n function ZoneIsAbstractError() {\n return _LuxonError7.call(this, \"Zone is an abstract class\") || this;\n }\n\n return ZoneIsAbstractError;\n}(LuxonError);\n\n/**\n * @private\n */\nvar n = \"numeric\",\n s = \"short\",\n l = \"long\";\nvar DATE_SHORT = {\n year: n,\n month: n,\n day: n\n};\nvar DATE_MED = {\n year: n,\n month: s,\n day: n\n};\nvar DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s\n};\nvar DATE_FULL = {\n year: n,\n month: l,\n day: n\n};\nvar DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l\n};\nvar TIME_SIMPLE = {\n hour: n,\n minute: n\n};\nvar TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n\n};\nvar TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s\n};\nvar TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l\n};\nvar TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hour12: false\n};\n/**\n * {@link toLocaleString}; format like '09:30:23', always 24-hour.\n */\n\nvar TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hour12: false\n};\n/**\n * {@link toLocaleString}; format like '09:30:23 EDT', always 24-hour.\n */\n\nvar TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hour12: false,\n timeZoneName: s\n};\n/**\n * {@link toLocaleString}; format like '09:30:23 Eastern Daylight Time', always 24-hour.\n */\n\nvar TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hour12: false,\n timeZoneName: l\n};\n/**\n * {@link toLocaleString}; format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n */\n\nvar DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n\n};\n/**\n * {@link toLocaleString}; format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n */\n\nvar DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n\n};\nvar DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n\n};\nvar DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n\n};\nvar DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n\n};\nvar DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s\n};\nvar DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s\n};\nvar DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l\n};\nvar DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l\n};\n\n/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n/**\n * @private\n */\n// TYPES\n\nfunction isUndefined(o) {\n return typeof o === \"undefined\";\n}\nfunction isNumber(o) {\n return typeof o === \"number\";\n}\nfunction isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\nfunction isString(o) {\n return typeof o === \"string\";\n}\nfunction isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n} // CAPABILITIES\n\nfunction hasIntl() {\n try {\n return typeof Intl !== \"undefined\" && Intl.DateTimeFormat;\n } catch (e) {\n return false;\n }\n}\nfunction hasFormatToParts() {\n return !isUndefined(Intl.DateTimeFormat.prototype.formatToParts);\n}\nfunction hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n} // OBJECTS AND ARRAYS\n\nfunction maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\nfunction bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n\n return arr.reduce(function (best, next) {\n var pair = [by(next), next];\n\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\nfunction pick(obj, keys) {\n return keys.reduce(function (a, k) {\n a[k] = obj[k];\n return a;\n }, {});\n}\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n} // NUMBERS AND STRINGS\n\nfunction integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n} // x % n but takes the sign of n instead of x\n\nfunction floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\nfunction padStart(input, n) {\n if (n === void 0) {\n n = 2;\n }\n\n var minus = input < 0 ? \"-\" : \"\";\n var target = minus ? input * -1 : input;\n var result;\n\n if (target.toString().length < n) {\n result = (\"0\".repeat(n) + target).slice(-n);\n } else {\n result = target.toString();\n }\n\n return \"\" + minus + result;\n}\nfunction parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\nfunction parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n var f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\nfunction roundTo(number, digits, towardZero) {\n if (towardZero === void 0) {\n towardZero = false;\n }\n\n var factor = Math.pow(10, digits),\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n} // DATE BASICS\n\nfunction isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\nfunction daysInMonth(year, month) {\n var modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n} // covert a calendar object to a local timestamp (epoch, but with the offset baked in)\n\nfunction objToLocalTS(obj) {\n var d = Date.UTC(obj.year, obj.month - 1, obj.day, obj.hour, obj.minute, obj.second, obj.millisecond); // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n\n return +d;\n}\nfunction weeksInWeekYear(weekYear) {\n var p1 = (weekYear + Math.floor(weekYear / 4) - Math.floor(weekYear / 100) + Math.floor(weekYear / 400)) % 7,\n last = weekYear - 1,\n p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7;\n return p1 === 4 || p2 === 3 ? 53 : 52;\n}\nfunction untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > 60 ? 1900 + year : 2000 + year;\n} // PARSING\n\nfunction parseZoneInfo(ts, offsetFormat, locale, timeZone) {\n if (timeZone === void 0) {\n timeZone = null;\n }\n\n var date = new Date(ts),\n intlOpts = {\n hour12: false,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\"\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n var modified = Object.assign({\n timeZoneName: offsetFormat\n }, intlOpts),\n intl = hasIntl();\n\n if (intl && hasFormatToParts()) {\n var parsed = new Intl.DateTimeFormat(locale, modified).formatToParts(date).find(function (m) {\n return m.type.toLowerCase() === \"timezonename\";\n });\n return parsed ? parsed.value : null;\n } else if (intl) {\n // this probably doesn't work for all locales\n var without = new Intl.DateTimeFormat(locale, intlOpts).format(date),\n included = new Intl.DateTimeFormat(locale, modified).format(date),\n diffed = included.substring(without.length),\n trimmed = diffed.replace(/^[, \\u200e]+/, \"\");\n return trimmed;\n } else {\n return null;\n }\n} // signedOffset('-5', '30') -> -330\n\nfunction signedOffset(offHourStr, offMinuteStr) {\n var offHour = parseInt(offHourStr, 10); // don't || this because we want to preserve -0\n\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n var offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n} // COERCION\n\nfunction asNumber(value) {\n var numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue)) throw new InvalidArgumentError(\"Invalid unit value \" + value);\n return numericValue;\n}\nfunction normalizeObject(obj, normalizer, nonUnitKeys) {\n var normalized = {};\n\n for (var u in obj) {\n if (hasOwnProperty(obj, u)) {\n if (nonUnitKeys.indexOf(u) >= 0) continue;\n var v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n\n return normalized;\n}\nfunction formatOffset(offset, format) {\n var hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? \"+\" : \"-\";\n\n switch (format) {\n case \"short\":\n return \"\" + sign + padStart(hours, 2) + \":\" + padStart(minutes, 2);\n\n case \"narrow\":\n return \"\" + sign + hours + (minutes > 0 ? \":\" + minutes : \"\");\n\n case \"techie\":\n return \"\" + sign + padStart(hours, 2) + padStart(minutes, 2);\n\n default:\n throw new RangeError(\"Value format \" + format + \" is out of range for property format\");\n }\n}\nfunction timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\nvar ianaRegex = /[A-Za-z_+-]{1,256}(:?\\/[A-Za-z_+-]{1,256}(\\/[A-Za-z_+-]{1,256})?)?/;\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n/**\n * @private\n */\n\n\nvar monthsLong = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\nvar monthsShort = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\nvar monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\nfunction months(length) {\n switch (length) {\n case \"narrow\":\n return [].concat(monthsNarrow);\n\n case \"short\":\n return [].concat(monthsShort);\n\n case \"long\":\n return [].concat(monthsLong);\n\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n\n default:\n return null;\n }\n}\nvar weekdaysLong = [\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"];\nvar weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\nvar weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\nfunction weekdays(length) {\n switch (length) {\n case \"narrow\":\n return [].concat(weekdaysNarrow);\n\n case \"short\":\n return [].concat(weekdaysShort);\n\n case \"long\":\n return [].concat(weekdaysLong);\n\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n\n default:\n return null;\n }\n}\nvar meridiems = [\"AM\", \"PM\"];\nvar erasLong = [\"Before Christ\", \"Anno Domini\"];\nvar erasShort = [\"BC\", \"AD\"];\nvar erasNarrow = [\"B\", \"A\"];\nfunction eras(length) {\n switch (length) {\n case \"narrow\":\n return [].concat(erasNarrow);\n\n case \"short\":\n return [].concat(erasShort);\n\n case \"long\":\n return [].concat(erasLong);\n\n default:\n return null;\n }\n}\nfunction meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\nfunction weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\nfunction monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\nfunction eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\nfunction formatRelativeTime(unit, count, numeric, narrow) {\n if (numeric === void 0) {\n numeric = \"always\";\n }\n\n if (narrow === void 0) {\n narrow = false;\n }\n\n var units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarter\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\", \"days\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"]\n };\n var lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n\n if (numeric === \"auto\" && lastable) {\n var isDay = unit === \"days\";\n\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : \"next \" + units[unit][0];\n\n case -1:\n return isDay ? \"yesterday\" : \"last \" + units[unit][0];\n\n case 0:\n return isDay ? \"today\" : \"this \" + units[unit][0];\n\n }\n }\n\n var isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow ? singular ? lilUnits[1] : lilUnits[2] || lilUnits[1] : singular ? units[unit][0] : unit;\n return isInPast ? fmtValue + \" \" + fmtUnit + \" ago\" : \"in \" + fmtValue + \" \" + fmtUnit;\n}\nfunction formatString(knownFormat) {\n // these all have the offsets removed because we don't have access to them\n // without all the intl stuff this is backfilling\n var filtered = pick(knownFormat, [\"weekday\", \"era\", \"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"timeZoneName\", \"hour12\"]),\n key = stringify(filtered),\n dateTimeHuge = \"EEEE, LLLL d, yyyy, h:mm a\";\n\n switch (key) {\n case stringify(DATE_SHORT):\n return \"M/d/yyyy\";\n\n case stringify(DATE_MED):\n return \"LLL d, yyyy\";\n\n case stringify(DATE_MED_WITH_WEEKDAY):\n return \"EEE, LLL d, yyyy\";\n\n case stringify(DATE_FULL):\n return \"LLLL d, yyyy\";\n\n case stringify(DATE_HUGE):\n return \"EEEE, LLLL d, yyyy\";\n\n case stringify(TIME_SIMPLE):\n return \"h:mm a\";\n\n case stringify(TIME_WITH_SECONDS):\n return \"h:mm:ss a\";\n\n case stringify(TIME_WITH_SHORT_OFFSET):\n return \"h:mm a\";\n\n case stringify(TIME_WITH_LONG_OFFSET):\n return \"h:mm a\";\n\n case stringify(TIME_24_SIMPLE):\n return \"HH:mm\";\n\n case stringify(TIME_24_WITH_SECONDS):\n return \"HH:mm:ss\";\n\n case stringify(TIME_24_WITH_SHORT_OFFSET):\n return \"HH:mm\";\n\n case stringify(TIME_24_WITH_LONG_OFFSET):\n return \"HH:mm\";\n\n case stringify(DATETIME_SHORT):\n return \"M/d/yyyy, h:mm a\";\n\n case stringify(DATETIME_MED):\n return \"LLL d, yyyy, h:mm a\";\n\n case stringify(DATETIME_FULL):\n return \"LLLL d, yyyy, h:mm a\";\n\n case stringify(DATETIME_HUGE):\n return dateTimeHuge;\n\n case stringify(DATETIME_SHORT_WITH_SECONDS):\n return \"M/d/yyyy, h:mm:ss a\";\n\n case stringify(DATETIME_MED_WITH_SECONDS):\n return \"LLL d, yyyy, h:mm:ss a\";\n\n case stringify(DATETIME_MED_WITH_WEEKDAY):\n return \"EEE, d LLL yyyy, h:mm a\";\n\n case stringify(DATETIME_FULL_WITH_SECONDS):\n return \"LLLL d, yyyy, h:mm:ss a\";\n\n case stringify(DATETIME_HUGE_WITH_SECONDS):\n return \"EEEE, LLLL d, yyyy, h:mm:ss a\";\n\n default:\n return dateTimeHuge;\n }\n}\n\nfunction stringifyTokens(splits, tokenToString) {\n var s = \"\";\n\n for (var _iterator = _createForOfIteratorHelperLoose(splits), _step; !(_step = _iterator()).done;) {\n var token = _step.value;\n\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n\n return s;\n}\n\nvar _macroTokenToFormatOpts = {\n D: DATE_SHORT,\n DD: DATE_MED,\n DDD: DATE_FULL,\n DDDD: DATE_HUGE,\n t: TIME_SIMPLE,\n tt: TIME_WITH_SECONDS,\n ttt: TIME_WITH_SHORT_OFFSET,\n tttt: TIME_WITH_LONG_OFFSET,\n T: TIME_24_SIMPLE,\n TT: TIME_24_WITH_SECONDS,\n TTT: TIME_24_WITH_SHORT_OFFSET,\n TTTT: TIME_24_WITH_LONG_OFFSET,\n f: DATETIME_SHORT,\n ff: DATETIME_MED,\n fff: DATETIME_FULL,\n ffff: DATETIME_HUGE,\n F: DATETIME_SHORT_WITH_SECONDS,\n FF: DATETIME_MED_WITH_SECONDS,\n FFF: DATETIME_FULL_WITH_SECONDS,\n FFFF: DATETIME_HUGE_WITH_SECONDS\n};\n/**\n * @private\n */\n\nvar Formatter = /*#__PURE__*/function () {\n Formatter.create = function create(locale, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n return new Formatter(locale, opts);\n };\n\n Formatter.parseFormat = function parseFormat(fmt) {\n var current = null,\n currentFull = \"\",\n bracketed = false;\n var splits = [];\n\n for (var i = 0; i < fmt.length; i++) {\n var c = fmt.charAt(i);\n\n if (c === \"'\") {\n if (currentFull.length > 0) {\n splits.push({\n literal: bracketed,\n val: currentFull\n });\n }\n\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({\n literal: false,\n val: currentFull\n });\n }\n\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({\n literal: bracketed,\n val: currentFull\n });\n }\n\n return splits;\n };\n\n Formatter.macroTokenToFormatOpts = function macroTokenToFormatOpts(token) {\n return _macroTokenToFormatOpts[token];\n };\n\n function Formatter(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n var _proto = Formatter.prototype;\n\n _proto.formatWithSystemDefault = function formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n\n var df = this.systemLoc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.format();\n };\n\n _proto.formatDateTime = function formatDateTime(dt, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.format();\n };\n\n _proto.formatDateTimeParts = function formatDateTimeParts(dt, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.formatToParts();\n };\n\n _proto.resolvedOptions = function resolvedOptions(dt, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.resolvedOptions();\n };\n\n _proto.num = function num(n, p) {\n if (p === void 0) {\n p = 0;\n }\n\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n var opts = Object.assign({}, this.opts);\n\n if (p > 0) {\n opts.padTo = p;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n };\n\n _proto.formatDateTimeFromString = function formatDateTimeFromString(dt, fmt) {\n var _this = this;\n\n var knownEnglish = this.loc.listingMode() === \"en\",\n useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\" && hasFormatToParts(),\n string = function string(opts, extract) {\n return _this.loc.extract(dt, opts, extract);\n },\n formatOffset = function formatOffset(opts) {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = function meridiem() {\n return knownEnglish ? meridiemForDateTime(dt) : string({\n hour: \"numeric\",\n hour12: true\n }, \"dayperiod\");\n },\n month = function month(length, standalone) {\n return knownEnglish ? monthForDateTime(dt, length) : string(standalone ? {\n month: length\n } : {\n month: length,\n day: \"numeric\"\n }, \"month\");\n },\n weekday = function weekday(length, standalone) {\n return knownEnglish ? weekdayForDateTime(dt, length) : string(standalone ? {\n weekday: length\n } : {\n weekday: length,\n month: \"long\",\n day: \"numeric\"\n }, \"weekday\");\n },\n maybeMacro = function maybeMacro(token) {\n var formatOpts = Formatter.macroTokenToFormatOpts(token);\n\n if (formatOpts) {\n return _this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = function era(length) {\n return knownEnglish ? eraForDateTime(dt, length) : string({\n era: length\n }, \"era\");\n },\n tokenToString = function tokenToString(token) {\n // Where possible: http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles\n switch (token) {\n // ms\n case \"S\":\n return _this.num(dt.millisecond);\n\n case \"u\": // falls through\n\n case \"SSS\":\n return _this.num(dt.millisecond, 3);\n // seconds\n\n case \"s\":\n return _this.num(dt.second);\n\n case \"ss\":\n return _this.num(dt.second, 2);\n // minutes\n\n case \"m\":\n return _this.num(dt.minute);\n\n case \"mm\":\n return _this.num(dt.minute, 2);\n // hours\n\n case \"h\":\n return _this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n\n case \"hh\":\n return _this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n\n case \"H\":\n return _this.num(dt.hour);\n\n case \"HH\":\n return _this.num(dt.hour, 2);\n // offset\n\n case \"Z\":\n // like +6\n return formatOffset({\n format: \"narrow\",\n allowZ: _this.opts.allowZ\n });\n\n case \"ZZ\":\n // like +06:00\n return formatOffset({\n format: \"short\",\n allowZ: _this.opts.allowZ\n });\n\n case \"ZZZ\":\n // like +0600\n return formatOffset({\n format: \"techie\",\n allowZ: _this.opts.allowZ\n });\n\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, {\n format: \"short\",\n locale: _this.loc.locale\n });\n\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, {\n format: \"long\",\n locale: _this.loc.locale\n });\n // zone\n\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n\n case \"a\":\n return meridiem();\n // dates\n\n case \"d\":\n return useDateTimeFormatter ? string({\n day: \"numeric\"\n }, \"day\") : _this.num(dt.day);\n\n case \"dd\":\n return useDateTimeFormatter ? string({\n day: \"2-digit\"\n }, \"day\") : _this.num(dt.day, 2);\n // weekdays - standalone\n\n case \"c\":\n // like 1\n return _this.num(dt.weekday);\n\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n\n case \"E\":\n // like 1\n return _this.num(dt.weekday);\n\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n\n case \"L\":\n // like 1\n return useDateTimeFormatter ? string({\n month: \"numeric\",\n day: \"numeric\"\n }, \"month\") : _this.num(dt.month);\n\n case \"LL\":\n // like 01, doesn't seem to work\n return useDateTimeFormatter ? string({\n month: \"2-digit\",\n day: \"numeric\"\n }, \"month\") : _this.num(dt.month, 2);\n\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n\n case \"M\":\n // like 1\n return useDateTimeFormatter ? string({\n month: \"numeric\"\n }, \"month\") : _this.num(dt.month);\n\n case \"MM\":\n // like 01\n return useDateTimeFormatter ? string({\n month: \"2-digit\"\n }, \"month\") : _this.num(dt.month, 2);\n\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n\n case \"y\":\n // like 2014\n return useDateTimeFormatter ? string({\n year: \"numeric\"\n }, \"year\") : _this.num(dt.year);\n\n case \"yy\":\n // like 14\n return useDateTimeFormatter ? string({\n year: \"2-digit\"\n }, \"year\") : _this.num(dt.year.toString().slice(-2), 2);\n\n case \"yyyy\":\n // like 0012\n return useDateTimeFormatter ? string({\n year: \"numeric\"\n }, \"year\") : _this.num(dt.year, 4);\n\n case \"yyyyyy\":\n // like 000012\n return useDateTimeFormatter ? string({\n year: \"numeric\"\n }, \"year\") : _this.num(dt.year, 6);\n // eras\n\n case \"G\":\n // like AD\n return era(\"short\");\n\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n\n case \"GGGGG\":\n return era(\"narrow\");\n\n case \"kk\":\n return _this.num(dt.weekYear.toString().slice(-2), 2);\n\n case \"kkkk\":\n return _this.num(dt.weekYear, 4);\n\n case \"W\":\n return _this.num(dt.weekNumber);\n\n case \"WW\":\n return _this.num(dt.weekNumber, 2);\n\n case \"o\":\n return _this.num(dt.ordinal);\n\n case \"ooo\":\n return _this.num(dt.ordinal, 3);\n\n case \"q\":\n // like 1\n return _this.num(dt.quarter);\n\n case \"qq\":\n // like 01\n return _this.num(dt.quarter, 2);\n\n case \"X\":\n return _this.num(Math.floor(dt.ts / 1000));\n\n case \"x\":\n return _this.num(dt.ts);\n\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n };\n\n _proto.formatDurationFromString = function formatDurationFromString(dur, fmt) {\n var _this2 = this;\n\n var tokenToField = function tokenToField(token) {\n switch (token[0]) {\n case \"S\":\n return \"millisecond\";\n\n case \"s\":\n return \"second\";\n\n case \"m\":\n return \"minute\";\n\n case \"h\":\n return \"hour\";\n\n case \"d\":\n return \"day\";\n\n case \"M\":\n return \"month\";\n\n case \"y\":\n return \"year\";\n\n default:\n return null;\n }\n },\n tokenToString = function tokenToString(lildur) {\n return function (token) {\n var mapped = tokenToField(token);\n\n if (mapped) {\n return _this2.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n };\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(function (found, _ref) {\n var literal = _ref.literal,\n val = _ref.val;\n return literal ? found : found.concat(val);\n }, []),\n collapsed = dur.shiftTo.apply(dur, realTokens.map(tokenToField).filter(function (t) {\n return t;\n }));\n\n return stringifyTokens(tokens, tokenToString(collapsed));\n };\n\n return Formatter;\n}();\n\nvar Invalid = /*#__PURE__*/function () {\n function Invalid(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n var _proto = Invalid.prototype;\n\n _proto.toMessage = function toMessage() {\n if (this.explanation) {\n return this.reason + \": \" + this.explanation;\n } else {\n return this.reason;\n }\n };\n\n return Invalid;\n}();\n\n/**\n * @interface\n */\n\nvar Zone = /*#__PURE__*/function () {\n function Zone() {}\n\n var _proto = Zone.prototype;\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n _proto.offsetName = function offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n ;\n\n _proto.formatOffset = function formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n ;\n\n _proto.offset = function offset(ts) {\n throw new ZoneIsAbstractError();\n }\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n ;\n\n _proto.equals = function equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n ;\n\n _createClass(Zone, [{\n key: \"type\",\n\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get: function get() {\n throw new ZoneIsAbstractError();\n }\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n\n }, {\n key: \"name\",\n get: function get() {\n throw new ZoneIsAbstractError();\n }\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n\n }, {\n key: \"universal\",\n get: function get() {\n throw new ZoneIsAbstractError();\n }\n }, {\n key: \"isValid\",\n get: function get() {\n throw new ZoneIsAbstractError();\n }\n }]);\n\n return Zone;\n}();\n\nvar singleton = null;\n/**\n * Represents the local zone for this JavaScript environment.\n * @implements {Zone}\n */\n\nvar LocalZone = /*#__PURE__*/function (_Zone) {\n _inheritsLoose(LocalZone, _Zone);\n\n function LocalZone() {\n return _Zone.apply(this, arguments) || this;\n }\n\n var _proto = LocalZone.prototype;\n\n /** @override **/\n _proto.offsetName = function offsetName(ts, _ref) {\n var format = _ref.format,\n locale = _ref.locale;\n return parseZoneInfo(ts, format, locale);\n }\n /** @override **/\n ;\n\n _proto.formatOffset = function formatOffset$1(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n /** @override **/\n ;\n\n _proto.offset = function offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n /** @override **/\n ;\n\n _proto.equals = function equals(otherZone) {\n return otherZone.type === \"local\";\n }\n /** @override **/\n ;\n\n _createClass(LocalZone, [{\n key: \"type\",\n\n /** @override **/\n get: function get() {\n return \"local\";\n }\n /** @override **/\n\n }, {\n key: \"name\",\n get: function get() {\n if (hasIntl()) {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n } else return \"local\";\n }\n /** @override **/\n\n }, {\n key: \"universal\",\n get: function get() {\n return false;\n }\n }, {\n key: \"isValid\",\n get: function get() {\n return true;\n }\n }], [{\n key: \"instance\",\n\n /**\n * Get a singleton instance of the local zone\n * @return {LocalZone}\n */\n get: function get() {\n if (singleton === null) {\n singleton = new LocalZone();\n }\n\n return singleton;\n }\n }]);\n\n return LocalZone;\n}(Zone);\n\nvar matchingRegex = RegExp(\"^\" + ianaRegex.source + \"$\");\nvar dtfCache = {};\n\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\"\n });\n }\n\n return dtfCache[zone];\n}\n\nvar typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5\n};\n\nfunction hackyOffset(dtf, date) {\n var formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n fMonth = parsed[1],\n fDay = parsed[2],\n fYear = parsed[3],\n fHour = parsed[4],\n fMinute = parsed[5],\n fSecond = parsed[6];\n return [fYear, fMonth, fDay, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n var formatted = dtf.formatToParts(date),\n filled = [];\n\n for (var i = 0; i < formatted.length; i++) {\n var _formatted$i = formatted[i],\n type = _formatted$i.type,\n value = _formatted$i.value,\n pos = typeToPos[type];\n\n if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n\n return filled;\n}\n\nvar ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\n\nvar IANAZone = /*#__PURE__*/function (_Zone) {\n _inheritsLoose(IANAZone, _Zone);\n\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n IANAZone.create = function create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n\n return ianaZoneCache[name];\n }\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n ;\n\n IANAZone.resetCache = function resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Fantasia/Castle\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n ;\n\n IANAZone.isValidSpecifier = function isValidSpecifier(s) {\n return !!(s && s.match(matchingRegex));\n }\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n ;\n\n IANAZone.isValidZone = function isValidZone(zone) {\n try {\n new Intl.DateTimeFormat(\"en-US\", {\n timeZone: zone\n }).format();\n return true;\n } catch (e) {\n return false;\n }\n } // Etc/GMT+8 -> -480\n\n /** @ignore */\n ;\n\n IANAZone.parseGMTOffset = function parseGMTOffset(specifier) {\n if (specifier) {\n var match = specifier.match(/^Etc\\/GMT(0|[+-]\\d{1,2})$/i);\n\n if (match) {\n return -60 * parseInt(match[1]);\n }\n }\n\n return null;\n };\n\n function IANAZone(name) {\n var _this;\n\n _this = _Zone.call(this) || this;\n /** @private **/\n\n _this.zoneName = name;\n /** @private **/\n\n _this.valid = IANAZone.isValidZone(name);\n return _this;\n }\n /** @override **/\n\n\n var _proto = IANAZone.prototype;\n\n /** @override **/\n _proto.offsetName = function offsetName(ts, _ref) {\n var format = _ref.format,\n locale = _ref.locale;\n return parseZoneInfo(ts, format, locale, this.name);\n }\n /** @override **/\n ;\n\n _proto.formatOffset = function formatOffset$1(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n /** @override **/\n ;\n\n _proto.offset = function offset(ts) {\n var date = new Date(ts);\n if (isNaN(date)) return NaN;\n\n var dtf = makeDTF(this.name),\n _ref2 = dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date),\n year = _ref2[0],\n month = _ref2[1],\n day = _ref2[2],\n hour = _ref2[3],\n minute = _ref2[4],\n second = _ref2[5],\n adjustedHour = hour === 24 ? 0 : hour;\n\n var asUTC = objToLocalTS({\n year: year,\n month: month,\n day: day,\n hour: adjustedHour,\n minute: minute,\n second: second,\n millisecond: 0\n });\n var asTS = +date;\n var over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n /** @override **/\n ;\n\n _proto.equals = function equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n /** @override **/\n ;\n\n _createClass(IANAZone, [{\n key: \"type\",\n get: function get() {\n return \"iana\";\n }\n /** @override **/\n\n }, {\n key: \"name\",\n get: function get() {\n return this.zoneName;\n }\n /** @override **/\n\n }, {\n key: \"universal\",\n get: function get() {\n return false;\n }\n }, {\n key: \"isValid\",\n get: function get() {\n return this.valid;\n }\n }]);\n\n return IANAZone;\n}(Zone);\n\nvar singleton$1 = null;\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\n\nvar FixedOffsetZone = /*#__PURE__*/function (_Zone) {\n _inheritsLoose(FixedOffsetZone, _Zone);\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n FixedOffsetZone.instance = function instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n ;\n\n FixedOffsetZone.parseSpecifier = function parseSpecifier(s) {\n if (s) {\n var r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n\n return null;\n };\n\n _createClass(FixedOffsetZone, null, [{\n key: \"utcInstance\",\n\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n get: function get() {\n if (singleton$1 === null) {\n singleton$1 = new FixedOffsetZone(0);\n }\n\n return singleton$1;\n }\n }]);\n\n function FixedOffsetZone(offset) {\n var _this;\n\n _this = _Zone.call(this) || this;\n /** @private **/\n\n _this.fixed = offset;\n return _this;\n }\n /** @override **/\n\n\n var _proto = FixedOffsetZone.prototype;\n\n /** @override **/\n _proto.offsetName = function offsetName() {\n return this.name;\n }\n /** @override **/\n ;\n\n _proto.formatOffset = function formatOffset$1(ts, format) {\n return formatOffset(this.fixed, format);\n }\n /** @override **/\n ;\n\n /** @override **/\n _proto.offset = function offset() {\n return this.fixed;\n }\n /** @override **/\n ;\n\n _proto.equals = function equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n /** @override **/\n ;\n\n _createClass(FixedOffsetZone, [{\n key: \"type\",\n get: function get() {\n return \"fixed\";\n }\n /** @override **/\n\n }, {\n key: \"name\",\n get: function get() {\n return this.fixed === 0 ? \"UTC\" : \"UTC\" + formatOffset(this.fixed, \"narrow\");\n }\n }, {\n key: \"universal\",\n get: function get() {\n return true;\n }\n }, {\n key: \"isValid\",\n get: function get() {\n return true;\n }\n }]);\n\n return FixedOffsetZone;\n}(Zone);\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\n\nvar InvalidZone = /*#__PURE__*/function (_Zone) {\n _inheritsLoose(InvalidZone, _Zone);\n\n function InvalidZone(zoneName) {\n var _this;\n\n _this = _Zone.call(this) || this;\n /** @private */\n\n _this.zoneName = zoneName;\n return _this;\n }\n /** @override **/\n\n\n var _proto = InvalidZone.prototype;\n\n /** @override **/\n _proto.offsetName = function offsetName() {\n return null;\n }\n /** @override **/\n ;\n\n _proto.formatOffset = function formatOffset() {\n return \"\";\n }\n /** @override **/\n ;\n\n _proto.offset = function offset() {\n return NaN;\n }\n /** @override **/\n ;\n\n _proto.equals = function equals() {\n return false;\n }\n /** @override **/\n ;\n\n _createClass(InvalidZone, [{\n key: \"type\",\n get: function get() {\n return \"invalid\";\n }\n /** @override **/\n\n }, {\n key: \"name\",\n get: function get() {\n return this.zoneName;\n }\n /** @override **/\n\n }, {\n key: \"universal\",\n get: function get() {\n return false;\n }\n }, {\n key: \"isValid\",\n get: function get() {\n return false;\n }\n }]);\n\n return InvalidZone;\n}(Zone);\n\n/**\n * @private\n */\nfunction normalizeZone(input, defaultZone) {\n var offset;\n\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n var lowered = input.toLowerCase();\n if (lowered === \"local\") return defaultZone;else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;else if ((offset = IANAZone.parseGMTOffset(input)) != null) {\n // handle Etc/GMT-4, which V8 chokes on\n return FixedOffsetZone.instance(offset);\n } else if (IANAZone.isValidSpecifier(lowered)) return IANAZone.create(input);else return FixedOffsetZone.parseSpecifier(lowered) || new InvalidZone(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && input.offset && typeof input.offset === \"number\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n\nvar now = function now() {\n return Date.now();\n},\n defaultZone = null,\n // not setting this directly to LocalZone.instance bc loading order issues\ndefaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n throwOnInvalid = false;\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\n\n\nvar Settings = /*#__PURE__*/function () {\n function Settings() {}\n\n /**\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n Settings.resetCaches = function resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n };\n\n _createClass(Settings, null, [{\n key: \"now\",\n\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n get: function get() {\n return now;\n }\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n */\n ,\n set: function set(n) {\n now = n;\n }\n /**\n * Get the default time zone to create DateTimes in.\n * @type {string}\n */\n\n }, {\n key: \"defaultZoneName\",\n get: function get() {\n return Settings.defaultZone.name;\n }\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * @type {string}\n */\n ,\n set: function set(z) {\n if (!z) {\n defaultZone = null;\n } else {\n defaultZone = normalizeZone(z);\n }\n }\n /**\n * Get the default time zone object to create DateTimes in. Does not affect existing instances.\n * @type {Zone}\n */\n\n }, {\n key: \"defaultZone\",\n get: function get() {\n return defaultZone || LocalZone.instance;\n }\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n\n }, {\n key: \"defaultLocale\",\n get: function get() {\n return defaultLocale;\n }\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n ,\n set: function set(locale) {\n defaultLocale = locale;\n }\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n\n }, {\n key: \"defaultNumberingSystem\",\n get: function get() {\n return defaultNumberingSystem;\n }\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n ,\n set: function set(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n\n }, {\n key: \"defaultOutputCalendar\",\n get: function get() {\n return defaultOutputCalendar;\n }\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n ,\n set: function set(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n\n }, {\n key: \"throwOnInvalid\",\n get: function get() {\n return throwOnInvalid;\n }\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n ,\n set: function set(t) {\n throwOnInvalid = t;\n }\n }]);\n\n return Settings;\n}();\n\nvar intlDTCache = {};\n\nfunction getCachedDTF(locString, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var key = JSON.stringify([locString, opts]);\n var dtf = intlDTCache[key];\n\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n\n return dtf;\n}\n\nvar intlNumCache = {};\n\nfunction getCachedINF(locString, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var key = JSON.stringify([locString, opts]);\n var inf = intlNumCache[key];\n\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n\n return inf;\n}\n\nvar intlRelCache = {};\n\nfunction getCachedRTF(locString, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var _opts = opts,\n base = _opts.base,\n cacheKeyOpts = _objectWithoutPropertiesLoose(_opts, [\"base\"]); // exclude `base` from the options\n\n\n var key = JSON.stringify([locString, cacheKeyOpts]);\n var inf = intlRelCache[key];\n\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n\n return inf;\n}\n\nvar sysLocaleCache = null;\n\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else if (hasIntl()) {\n var computedSys = new Intl.DateTimeFormat().resolvedOptions().locale; // node sometimes defaults to \"und\". Override that because that is dumb\n\n sysLocaleCache = !computedSys || computedSys === \"und\" ? \"en-US\" : computedSys;\n return sysLocaleCache;\n } else {\n sysLocaleCache = \"en-US\";\n return sysLocaleCache;\n }\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n var uIndex = localeStr.indexOf(\"-u-\");\n\n if (uIndex === -1) {\n return [localeStr];\n } else {\n var options;\n var smaller = localeStr.substring(0, uIndex);\n\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n } catch (e) {\n options = getCachedDTF(smaller).resolvedOptions();\n }\n\n var _options = options,\n numberingSystem = _options.numberingSystem,\n calendar = _options.calendar; // return the smaller one so that we can append the calendar and numbering overrides to it\n\n return [smaller, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (hasIntl()) {\n if (outputCalendar || numberingSystem) {\n localeStr += \"-u\";\n\n if (outputCalendar) {\n localeStr += \"-ca-\" + outputCalendar;\n }\n\n if (numberingSystem) {\n localeStr += \"-nu-\" + numberingSystem;\n }\n\n return localeStr;\n } else {\n return localeStr;\n }\n } else {\n return [];\n }\n}\n\nfunction mapMonths(f) {\n var ms = [];\n\n for (var i = 1; i <= 12; i++) {\n var dt = DateTime.utc(2016, i, 1);\n ms.push(f(dt));\n }\n\n return ms;\n}\n\nfunction mapWeekdays(f) {\n var ms = [];\n\n for (var i = 1; i <= 7; i++) {\n var dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n\n return ms;\n}\n\nfunction listStuff(loc, length, defaultOK, englishFn, intlFn) {\n var mode = loc.listingMode(defaultOK);\n\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return loc.numberingSystem === \"latn\" || !loc.locale || loc.locale.startsWith(\"en\") || hasIntl() && new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === \"latn\";\n }\n}\n/**\n * @private\n */\n\n\nvar PolyNumberFormatter = /*#__PURE__*/function () {\n function PolyNumberFormatter(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n if (!forceSimple && hasIntl()) {\n var intlOpts = {\n useGrouping: false\n };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n var _proto = PolyNumberFormatter.prototype;\n\n _proto.format = function format(i) {\n if (this.inf) {\n var fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n var _fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n\n return padStart(_fixed, this.padTo);\n }\n };\n\n return PolyNumberFormatter;\n}();\n/**\n * @private\n */\n\n\nvar PolyDateFormatter = /*#__PURE__*/function () {\n function PolyDateFormatter(dt, intl, opts) {\n this.opts = opts;\n this.hasIntl = hasIntl();\n var z;\n\n if (dt.zone.universal && this.hasIntl) {\n // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n // That is why fixed-offset TZ is set to that unless it is:\n // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n // 2. Unsupported by the browser:\n // - some do not support Etc/\n // - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n var gmtOffset = -1 * (dt.offset / 60);\n var offsetZ = gmtOffset >= 0 ? \"Etc/GMT+\" + gmtOffset : \"Etc/GMT\" + gmtOffset;\n var isOffsetZoneSupported = IANAZone.isValidZone(offsetZ);\n\n if (dt.offset !== 0 && isOffsetZoneSupported) {\n z = offsetZ;\n this.dt = dt;\n } else {\n // Not all fixed-offset zones like Etc/+4:30 are present in tzdata.\n // So we have to make do. Two cases:\n // 1. The format options tell us to show the zone. We can't do that, so the best\n // we can do is format the date in UTC.\n // 2. The format options don't tell us to show the zone. Then we can adjust them\n // the time and tell the formatter to show it to us in UTC, so that the time is right\n // and the bad zone doesn't show up.\n z = \"UTC\";\n\n if (opts.timeZoneName) {\n this.dt = dt;\n } else {\n this.dt = dt.offset === 0 ? dt : DateTime.fromMillis(dt.ts + dt.offset * 60 * 1000);\n }\n }\n } else if (dt.zone.type === \"local\") {\n this.dt = dt;\n } else {\n this.dt = dt;\n z = dt.zone.name;\n }\n\n if (this.hasIntl) {\n var intlOpts = Object.assign({}, this.opts);\n\n if (z) {\n intlOpts.timeZone = z;\n }\n\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n }\n\n var _proto2 = PolyDateFormatter.prototype;\n\n _proto2.format = function format() {\n if (this.hasIntl) {\n return this.dtf.format(this.dt.toJSDate());\n } else {\n var tokenFormat = formatString(this.opts),\n loc = Locale.create(\"en-US\");\n return Formatter.create(loc).formatDateTimeFromString(this.dt, tokenFormat);\n }\n };\n\n _proto2.formatToParts = function formatToParts() {\n if (this.hasIntl && hasFormatToParts()) {\n return this.dtf.formatToParts(this.dt.toJSDate());\n } else {\n // This is kind of a cop out. We actually could do this for English. However, we couldn't do it for intl strings\n // and IMO it's too weird to have an uncanny valley like that\n return [];\n }\n };\n\n _proto2.resolvedOptions = function resolvedOptions() {\n if (this.hasIntl) {\n return this.dtf.resolvedOptions();\n } else {\n return {\n locale: \"en-US\",\n numberingSystem: \"latn\",\n outputCalendar: \"gregory\"\n };\n }\n };\n\n return PolyDateFormatter;\n}();\n/**\n * @private\n */\n\n\nvar PolyRelFormatter = /*#__PURE__*/function () {\n function PolyRelFormatter(intl, isEnglish, opts) {\n this.opts = Object.assign({\n style: \"long\"\n }, opts);\n\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n var _proto3 = PolyRelFormatter.prototype;\n\n _proto3.format = function format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n };\n\n _proto3.formatToParts = function formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n };\n\n return PolyRelFormatter;\n}();\n/**\n * @private\n */\n\n\nvar Locale = /*#__PURE__*/function () {\n Locale.fromOpts = function fromOpts(opts) {\n return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN);\n };\n\n Locale.create = function create(locale, numberingSystem, outputCalendar, defaultToEN) {\n if (defaultToEN === void 0) {\n defaultToEN = false;\n }\n\n var specifiedLocale = locale || Settings.defaultLocale,\n // the system locale is useful for human readable strings but annoying for parsing/formatting known formats\n localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale()),\n numberingSystemR = numberingSystem || Settings.defaultNumberingSystem,\n outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale);\n };\n\n Locale.resetCache = function resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n intlRelCache = {};\n };\n\n Locale.fromObject = function fromObject(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n locale = _ref.locale,\n numberingSystem = _ref.numberingSystem,\n outputCalendar = _ref.outputCalendar;\n\n return Locale.create(locale, numberingSystem, outputCalendar);\n };\n\n function Locale(locale, numbering, outputCalendar, specifiedLocale) {\n var _parseLocaleString = parseLocaleString(locale),\n parsedLocale = _parseLocaleString[0],\n parsedNumberingSystem = _parseLocaleString[1],\n parsedOutputCalendar = _parseLocaleString[2];\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n this.weekdaysCache = {\n format: {},\n standalone: {}\n };\n this.monthsCache = {\n format: {},\n standalone: {}\n };\n this.meridiemCache = null;\n this.eraCache = {};\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n var _proto4 = Locale.prototype;\n\n _proto4.listingMode = function listingMode(defaultOK) {\n if (defaultOK === void 0) {\n defaultOK = true;\n }\n\n var intl = hasIntl(),\n hasFTP = intl && hasFormatToParts(),\n isActuallyEn = this.isEnglish(),\n hasNoWeirdness = (this.numberingSystem === null || this.numberingSystem === \"latn\") && (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n\n if (!hasFTP && !(isActuallyEn && hasNoWeirdness) && !defaultOK) {\n return \"error\";\n } else if (!hasFTP || isActuallyEn && hasNoWeirdness) {\n return \"en\";\n } else {\n return \"intl\";\n }\n };\n\n _proto4.clone = function clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(alts.locale || this.specifiedLocale, alts.numberingSystem || this.numberingSystem, alts.outputCalendar || this.outputCalendar, alts.defaultToEN || false);\n }\n };\n\n _proto4.redefaultToEN = function redefaultToEN(alts) {\n if (alts === void 0) {\n alts = {};\n }\n\n return this.clone(Object.assign({}, alts, {\n defaultToEN: true\n }));\n };\n\n _proto4.redefaultToSystem = function redefaultToSystem(alts) {\n if (alts === void 0) {\n alts = {};\n }\n\n return this.clone(Object.assign({}, alts, {\n defaultToEN: false\n }));\n };\n\n _proto4.months = function months$1(length, format, defaultOK) {\n var _this = this;\n\n if (format === void 0) {\n format = false;\n }\n\n if (defaultOK === void 0) {\n defaultOK = true;\n }\n\n return listStuff(this, length, defaultOK, months, function () {\n var intl = format ? {\n month: length,\n day: \"numeric\"\n } : {\n month: length\n },\n formatStr = format ? \"format\" : \"standalone\";\n\n if (!_this.monthsCache[formatStr][length]) {\n _this.monthsCache[formatStr][length] = mapMonths(function (dt) {\n return _this.extract(dt, intl, \"month\");\n });\n }\n\n return _this.monthsCache[formatStr][length];\n });\n };\n\n _proto4.weekdays = function weekdays$1(length, format, defaultOK) {\n var _this2 = this;\n\n if (format === void 0) {\n format = false;\n }\n\n if (defaultOK === void 0) {\n defaultOK = true;\n }\n\n return listStuff(this, length, defaultOK, weekdays, function () {\n var intl = format ? {\n weekday: length,\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\"\n } : {\n weekday: length\n },\n formatStr = format ? \"format\" : \"standalone\";\n\n if (!_this2.weekdaysCache[formatStr][length]) {\n _this2.weekdaysCache[formatStr][length] = mapWeekdays(function (dt) {\n return _this2.extract(dt, intl, \"weekday\");\n });\n }\n\n return _this2.weekdaysCache[formatStr][length];\n });\n };\n\n _proto4.meridiems = function meridiems$1(defaultOK) {\n var _this3 = this;\n\n if (defaultOK === void 0) {\n defaultOK = true;\n }\n\n return listStuff(this, undefined, defaultOK, function () {\n return meridiems;\n }, function () {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!_this3.meridiemCache) {\n var intl = {\n hour: \"numeric\",\n hour12: true\n };\n _this3.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(function (dt) {\n return _this3.extract(dt, intl, \"dayperiod\");\n });\n }\n\n return _this3.meridiemCache;\n });\n };\n\n _proto4.eras = function eras$1(length, defaultOK) {\n var _this4 = this;\n\n if (defaultOK === void 0) {\n defaultOK = true;\n }\n\n return listStuff(this, length, defaultOK, eras, function () {\n var intl = {\n era: length\n }; // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n\n if (!_this4.eraCache[length]) {\n _this4.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map(function (dt) {\n return _this4.extract(dt, intl, \"era\");\n });\n }\n\n return _this4.eraCache[length];\n });\n };\n\n _proto4.extract = function extract(dt, intlOpts, field) {\n var df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find(function (m) {\n return m.type.toLowerCase() === field;\n });\n return matching ? matching.value : null;\n };\n\n _proto4.numberFormatter = function numberFormatter(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n };\n\n _proto4.dtFormatter = function dtFormatter(dt, intlOpts) {\n if (intlOpts === void 0) {\n intlOpts = {};\n }\n\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n };\n\n _proto4.relFormatter = function relFormatter(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n };\n\n _proto4.isEnglish = function isEnglish() {\n return this.locale === \"en\" || this.locale.toLowerCase() === \"en-us\" || hasIntl() && new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith(\"en-us\");\n };\n\n _proto4.equals = function equals(other) {\n return this.locale === other.locale && this.numberingSystem === other.numberingSystem && this.outputCalendar === other.outputCalendar;\n };\n\n _createClass(Locale, [{\n key: \"fastNumbers\",\n get: function get() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n }]);\n\n return Locale;\n}();\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nfunction combineRegexes() {\n for (var _len = arguments.length, regexes = new Array(_len), _key = 0; _key < _len; _key++) {\n regexes[_key] = arguments[_key];\n }\n\n var full = regexes.reduce(function (f, r) {\n return f + r.source;\n }, \"\");\n return RegExp(\"^\" + full + \"$\");\n}\n\nfunction combineExtractors() {\n for (var _len2 = arguments.length, extractors = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n extractors[_key2] = arguments[_key2];\n }\n\n return function (m) {\n return extractors.reduce(function (_ref, ex) {\n var mergedVals = _ref[0],\n mergedZone = _ref[1],\n cursor = _ref[2];\n\n var _ex = ex(m, cursor),\n val = _ex[0],\n zone = _ex[1],\n next = _ex[2];\n\n return [Object.assign(mergedVals, val), mergedZone || zone, next];\n }, [{}, null, 1]).slice(0, 2);\n };\n}\n\nfunction parse(s) {\n if (s == null) {\n return [null, null];\n }\n\n for (var _len3 = arguments.length, patterns = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n patterns[_key3 - 1] = arguments[_key3];\n }\n\n for (var _i = 0, _patterns = patterns; _i < _patterns.length; _i++) {\n var _patterns$_i = _patterns[_i],\n regex = _patterns$_i[0],\n extractor = _patterns$_i[1];\n var m = regex.exec(s);\n\n if (m) {\n return extractor(m);\n }\n }\n\n return [null, null];\n}\n\nfunction simpleParse() {\n for (var _len4 = arguments.length, keys = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n keys[_key4] = arguments[_key4];\n }\n\n return function (match, cursor) {\n var ret = {};\n var i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n\n return [ret, null, cursor + i];\n };\n} // ISO and SQL parsing\n\n\nvar offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/,\n isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/,\n isoTimeRegex = RegExp(\"\" + isoTimeBaseRegex.source + offsetRegex.source + \"?\"),\n isoTimeExtensionRegex = RegExp(\"(?:T\" + isoTimeRegex.source + \")?\"),\n isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/,\n isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/,\n isoOrdinalRegex = /(\\d{4})-?(\\d{3})/,\n extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\"),\n extractISOOrdinalData = simpleParse(\"year\", \"ordinal\"),\n sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/,\n // dumbed-down version of the ISO one\nsqlTimeRegex = RegExp(isoTimeBaseRegex.source + \" ?(?:\" + offsetRegex.source + \"|(\" + ianaRegex.source + \"))?\"),\n sqlTimeExtensionRegex = RegExp(\"(?: \" + sqlTimeRegex.source + \")?\");\n\nfunction int(match, pos, fallback) {\n var m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n var item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1)\n };\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n var item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3])\n };\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n var local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n var zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n} // ISO time parsing\n\n\nvar isoTimeOnly = RegExp(\"^T?\" + isoTimeBaseRegex.source + \"$\"); // ISO duration parsing\n\nvar isoDuration = /^-?P(?:(?:(-?\\d{1,9})Y)?(?:(-?\\d{1,9})M)?(?:(-?\\d{1,9})W)?(?:(-?\\d{1,9})D)?(?:T(?:(-?\\d{1,9})H)?(?:(-?\\d{1,9})M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,9}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n var s = match[0],\n yearStr = match[1],\n monthStr = match[2],\n weekStr = match[3],\n dayStr = match[4],\n hourStr = match[5],\n minuteStr = match[6],\n secondStr = match[7],\n millisecondsStr = match[8];\n var hasNegativePrefix = s[0] === \"-\";\n var negativeSeconds = secondStr && secondStr[0] === \"-\";\n\n var maybeNegate = function maybeNegate(num, force) {\n if (force === void 0) {\n force = false;\n }\n\n return num !== undefined && (force || num && hasNegativePrefix) ? -num : num;\n };\n\n return [{\n years: maybeNegate(parseInteger(yearStr)),\n months: maybeNegate(parseInteger(monthStr)),\n weeks: maybeNegate(parseInteger(weekStr)),\n days: maybeNegate(parseInteger(dayStr)),\n hours: maybeNegate(parseInteger(hourStr)),\n minutes: maybeNegate(parseInteger(minuteStr)),\n seconds: maybeNegate(parseInteger(secondStr), secondStr === \"-0\"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds)\n }];\n} // These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\n\n\nvar obsOffsets = {\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n};\n\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr)\n };\n if (secondStr) result.second = parseInteger(secondStr);\n\n if (weekdayStr) {\n result.weekday = weekdayStr.length > 3 ? weekdaysLong.indexOf(weekdayStr) + 1 : weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n} // RFC 2822/5322\n\n\nvar rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n var weekdayStr = match[1],\n dayStr = match[2],\n monthStr = match[3],\n yearStr = match[4],\n hourStr = match[5],\n minuteStr = match[6],\n secondStr = match[7],\n obsOffset = match[8],\n milOffset = match[9],\n offHourStr = match[10],\n offMinuteStr = match[11],\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n var offset;\n\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, \" \").replace(/(\\s\\s+)/g, \" \").trim();\n} // http date\n\n\nvar rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 = /^(Monday|Tuesday|Wedsday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n var weekdayStr = match[1],\n dayStr = match[2],\n monthStr = match[3],\n yearStr = match[4],\n hourStr = match[5],\n minuteStr = match[6],\n secondStr = match[7],\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n var weekdayStr = match[1],\n monthStr = match[2],\n dayStr = match[3],\n hourStr = match[4],\n minuteStr = match[5],\n secondStr = match[6],\n yearStr = match[7],\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nvar isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nvar isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nvar isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nvar isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\nvar extractISOYmdTimeAndOffset = combineExtractors(extractISOYmd, extractISOTime, extractISOOffset);\nvar extractISOWeekTimeAndOffset = combineExtractors(extractISOWeekData, extractISOTime, extractISOOffset);\nvar extractISOOrdinalDateAndTime = combineExtractors(extractISOOrdinalData, extractISOTime, extractISOOffset);\nvar extractISOTimeAndOffset = combineExtractors(extractISOTime, extractISOOffset);\n/**\n * @private\n */\n\nfunction parseISODate(s) {\n return parse(s, [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset], [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime], [isoTimeCombinedRegex, extractISOTimeAndOffset]);\n}\nfunction parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\nfunction parseHTTPDate(s) {\n return parse(s, [rfc1123, extractRFC1123Or850], [rfc850, extractRFC1123Or850], [ascii, extractASCII]);\n}\nfunction parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\nvar extractISOTimeOnly = combineExtractors(extractISOTime);\nfunction parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\nvar sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nvar sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\nvar extractISOYmdTimeOffsetAndIANAZone = combineExtractors(extractISOYmd, extractISOTime, extractISOOffset, extractIANAZone);\nvar extractISOTimeOffsetAndIANAZone = combineExtractors(extractISOTime, extractISOOffset, extractIANAZone);\nfunction parseSQL(s) {\n return parse(s, [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeOffsetAndIANAZone], [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]);\n}\n\nvar INVALID = \"Invalid Duration\"; // unit conversion constants\n\nvar lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000\n },\n hours: {\n minutes: 60,\n seconds: 60 * 60,\n milliseconds: 60 * 60 * 1000\n },\n minutes: {\n seconds: 60,\n milliseconds: 60 * 1000\n },\n seconds: {\n milliseconds: 1000\n }\n},\n casualMatrix = Object.assign({\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000\n }\n}, lowOrderMatrix),\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = Object.assign({\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: daysInYearAccurate * 24 / 4,\n minutes: daysInYearAccurate * 24 * 60 / 4,\n seconds: daysInYearAccurate * 24 * 60 * 60 / 4,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000 / 4\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000\n }\n}, lowOrderMatrix); // units ordered by size\n\nvar orderedUnits = [\"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\"];\nvar reverseUnits = orderedUnits.slice(0).reverse(); // clone really means \"create another instance just like this one, but with these changes\"\n\nfunction clone(dur, alts, clear) {\n if (clear === void 0) {\n clear = false;\n }\n\n // deep merge for vals\n var conf = {\n values: clear ? alts.values : Object.assign({}, dur.values, alts.values || {}),\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy\n };\n return new Duration(conf);\n}\n\nfunction antiTrunc(n) {\n return n < 0 ? Math.floor(n) : Math.ceil(n);\n} // NB: mutates parameters\n\n\nfunction convert(matrix, fromMap, fromUnit, toMap, toUnit) {\n var conv = matrix[toUnit][fromUnit],\n raw = fromMap[fromUnit] / conv,\n sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]),\n // ok, so this is wild, but see the matrix in the tests\n added = !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw);\n toMap[toUnit] += added;\n fromMap[fromUnit] -= added * conv;\n} // NB: mutates parameters\n\n\nfunction normalizeValues(matrix, vals) {\n reverseUnits.reduce(function (previous, current) {\n if (!isUndefined(vals[current])) {\n if (previous) {\n convert(matrix, vals, previous, vals, current);\n }\n\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime.plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n * * **Unit values** See the {@link Duration.years}, {@link Duration.months}, {@link Duration.weeks}, {@link Duration.days}, {@link Duration.hours}, {@link Duration.minutes}, {@link Duration.seconds}, {@link Duration.milliseconds} accessors.\n * * **Configuration** See {@link Duration.locale} and {@link Duration.numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration.plus}, {@link Duration.minus}, {@link Duration.normalize}, {@link Duration.set}, {@link Duration.reconfigure}, {@link Duration.shiftTo}, and {@link Duration.negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration.as}, {@link Duration.toISO}, {@link Duration.toFormat}, and {@link Duration.toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\n\n\nvar Duration = /*#__PURE__*/function () {\n /**\n * @private\n */\n function Duration(config) {\n var accurate = config.conversionAccuracy === \"longterm\" || false;\n /**\n * @access private\n */\n\n this.values = config.values;\n /**\n * @access private\n */\n\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n\n this.matrix = accurate ? accurateMatrix : casualMatrix;\n /**\n * @access private\n */\n\n this.isLuxonDuration = true;\n }\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n\n\n Duration.fromMillis = function fromMillis(count, opts) {\n return Duration.fromObject(Object.assign({\n milliseconds: count\n }, opts));\n }\n /**\n * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {string} [obj.locale='en-US'] - the locale to use\n * @param {string} obj.numberingSystem - the numbering system to use\n * @param {string} [obj.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n ;\n\n Duration.fromObject = function fromObject(obj) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\"Duration.fromObject: argument expected to be an object, got \" + (obj === null ? \"null\" : typeof obj));\n }\n\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit, [\"locale\", \"numberingSystem\", \"conversionAccuracy\", \"zone\" // a bit of debt; it's super inconvenient internally not to be able to blindly pass this\n ]),\n loc: Locale.fromObject(obj),\n conversionAccuracy: obj.conversionAccuracy\n });\n }\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n ;\n\n Duration.fromISO = function fromISO(text, opts) {\n var _parseISODuration = parseISODuration(text),\n parsed = _parseISODuration[0];\n\n if (parsed) {\n var obj = Object.assign(parsed, opts);\n return Duration.fromObject(obj);\n } else {\n return Duration.invalid(\"unparsable\", \"the input \\\"\" + text + \"\\\" can't be parsed as ISO 8601\");\n }\n }\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n ;\n\n Duration.fromISOTime = function fromISOTime(text, opts) {\n var _parseISOTimeOnly = parseISOTimeOnly(text),\n parsed = _parseISOTimeOnly[0];\n\n if (parsed) {\n var obj = Object.assign(parsed, opts);\n return Duration.fromObject(obj);\n } else {\n return Duration.invalid(\"unparsable\", \"the input \\\"\" + text + \"\\\" can't be parsed as ISO 8601\");\n }\n }\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n ;\n\n Duration.invalid = function invalid(reason, explanation) {\n if (explanation === void 0) {\n explanation = null;\n }\n\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n var invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({\n invalid: invalid\n });\n }\n }\n /**\n * @private\n */\n ;\n\n Duration.normalizeUnit = function normalizeUnit(unit) {\n var normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\"\n }[unit ? unit.toLowerCase() : unit];\n if (!normalized) throw new InvalidUnitError(unit);\n return normalized;\n }\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n ;\n\n Duration.isDuration = function isDuration(o) {\n return o && o.isLuxonDuration || false;\n }\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n ;\n\n var _proto = Duration.prototype;\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * The duration will be converted to the set of units in the format string using {@link Duration.shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @return {string}\n */\n _proto.toFormat = function toFormat(fmt, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n var fmtOpts = Object.assign({}, opts, {\n floor: opts.round !== false && opts.floor !== false\n });\n return this.isValid ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt) : INVALID;\n }\n /**\n * Returns a JavaScript object with this Duration's values.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n ;\n\n _proto.toObject = function toObject(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (!this.isValid) return {};\n var base = Object.assign({}, this.values);\n\n if (opts.includeConfig) {\n base.conversionAccuracy = this.conversionAccuracy;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n\n return base;\n }\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n ;\n\n _proto.toISO = function toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n var s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0) s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0) // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\n * @return {string}\n */\n ;\n\n _proto.toISOTime = function toISOTime(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (!this.isValid) return null;\n var millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n opts = Object.assign({\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: \"extended\"\n }, opts);\n var value = this.shiftTo(\"hours\", \"minutes\", \"seconds\", \"milliseconds\");\n var fmt = opts.format === \"basic\" ? \"hhmm\" : \"hh:mm\";\n\n if (!opts.suppressSeconds || value.seconds !== 0 || value.milliseconds !== 0) {\n fmt += opts.format === \"basic\" ? \"ss\" : \":ss\";\n\n if (!opts.suppressMilliseconds || value.milliseconds !== 0) {\n fmt += \".SSS\";\n }\n }\n\n var str = value.toFormat(fmt);\n\n if (opts.includePrefix) {\n str = \"T\" + str;\n }\n\n return str;\n }\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n ;\n\n _proto.toJSON = function toJSON() {\n return this.toISO();\n }\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n ;\n\n _proto.toString = function toString() {\n return this.toISO();\n }\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n ;\n\n _proto.toMillis = function toMillis() {\n return this.as(\"milliseconds\");\n }\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n ;\n\n _proto.valueOf = function valueOf() {\n return this.toMillis();\n }\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n ;\n\n _proto.plus = function plus(duration) {\n if (!this.isValid) return this;\n var dur = friendlyDuration(duration),\n result = {};\n\n for (var _iterator = _createForOfIteratorHelperLoose(orderedUnits), _step; !(_step = _iterator()).done;) {\n var k = _step.value;\n\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, {\n values: result\n }, true);\n }\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n ;\n\n _proto.minus = function minus(duration) {\n if (!this.isValid) return this;\n var dur = friendlyDuration(duration);\n return this.plus(dur.negate());\n }\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnit(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnit((x, u) => u === \"hour\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n ;\n\n _proto.mapUnits = function mapUnits(fn) {\n if (!this.isValid) return this;\n var result = {};\n\n for (var _i = 0, _Object$keys = Object.keys(this.values); _i < _Object$keys.length; _i++) {\n var k = _Object$keys[_i];\n result[k] = asNumber(fn(this.values[k], k));\n }\n\n return clone(this, {\n values: result\n }, true);\n }\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\n * @return {number}\n */\n ;\n\n _proto.get = function get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n ;\n\n _proto.set = function set(values) {\n if (!this.isValid) return this;\n var mixed = Object.assign(this.values, normalizeObject(values, Duration.normalizeUnit, []));\n return clone(this, {\n values: mixed\n });\n }\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n ;\n\n _proto.reconfigure = function reconfigure(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n locale = _ref.locale,\n numberingSystem = _ref.numberingSystem,\n conversionAccuracy = _ref.conversionAccuracy;\n\n var loc = this.loc.clone({\n locale: locale,\n numberingSystem: numberingSystem\n }),\n opts = {\n loc: loc\n };\n\n if (conversionAccuracy) {\n opts.conversionAccuracy = conversionAccuracy;\n }\n\n return clone(this, opts);\n }\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n ;\n\n _proto.as = function as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @return {Duration}\n */\n ;\n\n _proto.normalize = function normalize() {\n if (!this.isValid) return this;\n var vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, {\n values: vals\n }, true);\n }\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n ;\n\n _proto.shiftTo = function shiftTo() {\n for (var _len = arguments.length, units = new Array(_len), _key = 0; _key < _len; _key++) {\n units[_key] = arguments[_key];\n }\n\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map(function (u) {\n return Duration.normalizeUnit(u);\n });\n var built = {},\n accumulated = {},\n vals = this.toObject();\n var lastUnit;\n\n for (var _iterator2 = _createForOfIteratorHelperLoose(orderedUnits), _step2; !(_step2 = _iterator2()).done;) {\n var k = _step2.value;\n\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n var own = 0; // anything we haven't boiled down yet should get boiled to this unit\n\n for (var ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n } // plus anything that's already in this unit\n\n\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n var i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = own - i; // we'd like to absorb these fractions in another unit\n // plus anything further down the chain that should be rolled up in to this\n\n for (var down in vals) {\n if (orderedUnits.indexOf(down) > orderedUnits.indexOf(k)) {\n convert(this.matrix, vals, down, built, k);\n }\n } // otherwise, keep it in the wings to boil it later\n\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n } // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n\n\n for (var key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] += key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n return clone(this, {\n values: built\n }, true).normalize();\n }\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n ;\n\n _proto.negate = function negate() {\n if (!this.isValid) return this;\n var negated = {};\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(this.values); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n negated[k] = -this.values[k];\n }\n\n return clone(this, {\n values: negated\n }, true);\n }\n /**\n * Get the years.\n * @type {number}\n */\n ;\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n _proto.equals = function equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(orderedUnits), _step3; !(_step3 = _iterator3()).done;) {\n var u = _step3.value;\n\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n\n return true;\n };\n\n _createClass(Duration, [{\n key: \"locale\",\n get: function get() {\n return this.isValid ? this.loc.locale : null;\n }\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n\n }, {\n key: \"numberingSystem\",\n get: function get() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n }, {\n key: \"years\",\n get: function get() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n /**\n * Get the quarters.\n * @type {number}\n */\n\n }, {\n key: \"quarters\",\n get: function get() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n /**\n * Get the months.\n * @type {number}\n */\n\n }, {\n key: \"months\",\n get: function get() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n /**\n * Get the weeks\n * @type {number}\n */\n\n }, {\n key: \"weeks\",\n get: function get() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n /**\n * Get the days.\n * @type {number}\n */\n\n }, {\n key: \"days\",\n get: function get() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n /**\n * Get the hours.\n * @type {number}\n */\n\n }, {\n key: \"hours\",\n get: function get() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n /**\n * Get the minutes.\n * @type {number}\n */\n\n }, {\n key: \"minutes\",\n get: function get() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n /**\n * Get the seconds.\n * @return {number}\n */\n\n }, {\n key: \"seconds\",\n get: function get() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n /**\n * Get the milliseconds.\n * @return {number}\n */\n\n }, {\n key: \"milliseconds\",\n get: function get() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n\n }, {\n key: \"isValid\",\n get: function get() {\n return this.invalid === null;\n }\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n\n }, {\n key: \"invalidReason\",\n get: function get() {\n return this.invalid ? this.invalid.reason : null;\n }\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n\n }, {\n key: \"invalidExplanation\",\n get: function get() {\n return this.invalid ? this.invalid.explanation : null;\n }\n }]);\n\n return Duration;\n}();\nfunction friendlyDuration(durationish) {\n if (isNumber(durationish)) {\n return Duration.fromMillis(durationish);\n } else if (Duration.isDuration(durationish)) {\n return durationish;\n } else if (typeof durationish === \"object\") {\n return Duration.fromObject(durationish);\n } else {\n throw new InvalidArgumentError(\"Unknown duration argument \" + durationish + \" of type \" + typeof durationish);\n }\n}\n\nvar INVALID$1 = \"Invalid Interval\"; // checks if the start is equal to or before the end\n\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\"end before start\", \"The end of an interval must be after its start, but you had start=\" + start.toISO() + \" and end=\" + end.toISO());\n } else {\n return null;\n }\n}\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link fromDateTimes}, {@link after}, {@link before}, or {@link fromISO}.\n * * **Accessors** Use {@link start} and {@link end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link count}, {@link length}, {@link hasSame}, {@link contains}, {@link isAfter}, or {@link isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link set}, {@link splitAt}, {@link splitBy}, {@link divideEqually}, {@link merge}, {@link xor}, {@link union}, {@link intersection}, or {@link difference}.\n * * **Comparison** To compare this Interval to another one, use {@link equals}, {@link overlaps}, {@link abutsStart}, {@link abutsEnd}, {@link engulfs}.\n * * **Output** To convert the Interval into other representations, see {@link toString}, {@link toISO}, {@link toISODate}, {@link toISOTime}, {@link toFormat}, and {@link toDuration}.\n */\n\n\nvar Interval = /*#__PURE__*/function () {\n /**\n * @private\n */\n function Interval(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n\n this.e = config.end;\n /**\n * @access private\n */\n\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n\n this.isLuxonInterval = true;\n }\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n\n\n Interval.invalid = function invalid(reason, explanation) {\n if (explanation === void 0) {\n explanation = null;\n }\n\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n var invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({\n invalid: invalid\n });\n }\n }\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n ;\n\n Interval.fromDateTimes = function fromDateTimes(start, end) {\n var builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n var validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd\n });\n } else {\n return validateError;\n }\n }\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n ;\n\n Interval.after = function after(start, duration) {\n var dur = friendlyDuration(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n ;\n\n Interval.before = function before(end, duration) {\n var dur = friendlyDuration(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `/`, `/`, and `/` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime.fromISO} and optionally {@link Duration.fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n ;\n\n Interval.fromISO = function fromISO(text, opts) {\n var _split = (text || \"\").split(\"/\", 2),\n s = _split[0],\n e = _split[1];\n\n if (s && e) {\n var start, startIsValid;\n\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n var end, endIsValid;\n\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n var dur = Duration.fromISO(e, opts);\n\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n var _dur = Duration.fromISO(s, opts);\n\n if (_dur.isValid) {\n return Interval.before(end, _dur);\n }\n }\n }\n\n return Interval.invalid(\"unparsable\", \"the input \\\"\" + text + \"\\\" can't be parsed as ISO 8601\");\n }\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n ;\n\n Interval.isInterval = function isInterval(o) {\n return o && o.isLuxonInterval || false;\n }\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n ;\n\n var _proto = Interval.prototype;\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n _proto.length = function length(unit) {\n if (unit === void 0) {\n unit = \"milliseconds\";\n }\n\n return this.isValid ? this.toDuration.apply(this, [unit]).get(unit) : NaN;\n }\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @return {number}\n */\n ;\n\n _proto.count = function count(unit) {\n if (unit === void 0) {\n unit = \"milliseconds\";\n }\n\n if (!this.isValid) return NaN;\n var start = this.start.startOf(unit),\n end = this.end.startOf(unit);\n return Math.floor(end.diff(start, unit).get(unit)) + 1;\n }\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n ;\n\n _proto.hasSame = function hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n ;\n\n _proto.isEmpty = function isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n ;\n\n _proto.isAfter = function isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n ;\n\n _proto.isBefore = function isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n ;\n\n _proto.contains = function contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n ;\n\n _proto.set = function set(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n start = _ref.start,\n end = _ref.end;\n\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...[DateTime]} dateTimes - the unit of time to count.\n * @return {[Interval]}\n */\n ;\n\n _proto.splitAt = function splitAt() {\n var _this = this;\n\n if (!this.isValid) return [];\n\n for (var _len = arguments.length, dateTimes = new Array(_len), _key = 0; _key < _len; _key++) {\n dateTimes[_key] = arguments[_key];\n }\n\n var sorted = dateTimes.map(friendlyDateTime).filter(function (d) {\n return _this.contains(d);\n }).sort(),\n results = [];\n var s = this.s,\n i = 0;\n\n while (s < this.e) {\n var added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {[Interval]}\n */\n ;\n\n _proto.splitBy = function splitBy(duration) {\n var dur = friendlyDuration(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n var s = this.s,\n idx = 1,\n next;\n var results = [];\n\n while (s < this.e) {\n var added = this.start.plus(dur.mapUnits(function (x) {\n return x * idx;\n }));\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n idx += 1;\n }\n\n return results;\n }\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {[Interval]}\n */\n ;\n\n _proto.divideEqually = function divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n ;\n\n _proto.overlaps = function overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n ;\n\n _proto.abutsStart = function abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n ;\n\n _proto.abutsEnd = function abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n /**\n * Return whether this Interval engulfs the start and end of the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n ;\n\n _proto.engulfs = function engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n ;\n\n _proto.equals = function equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n ;\n\n _proto.intersection = function intersection(other) {\n if (!this.isValid) return this;\n var s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s >= e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n ;\n\n _proto.union = function union(other) {\n if (!this.isValid) return this;\n var s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n /**\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * @param {[Interval]} intervals\n * @return {[Interval]}\n */\n ;\n\n Interval.merge = function merge(intervals) {\n var _intervals$sort$reduc = intervals.sort(function (a, b) {\n return a.s - b.s;\n }).reduce(function (_ref2, item) {\n var sofar = _ref2[0],\n current = _ref2[1];\n\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n }, [[], null]),\n found = _intervals$sort$reduc[0],\n final = _intervals$sort$reduc[1];\n\n if (final) {\n found.push(final);\n }\n\n return found;\n }\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {[Interval]} intervals\n * @return {[Interval]}\n */\n ;\n\n Interval.xor = function xor(intervals) {\n var _Array$prototype;\n\n var start = null,\n currentCount = 0;\n\n var results = [],\n ends = intervals.map(function (i) {\n return [{\n time: i.s,\n type: \"s\"\n }, {\n time: i.e,\n type: \"e\"\n }];\n }),\n flattened = (_Array$prototype = Array.prototype).concat.apply(_Array$prototype, ends),\n arr = flattened.sort(function (a, b) {\n return a.time - b.time;\n });\n\n for (var _iterator = _createForOfIteratorHelperLoose(arr), _step; !(_step = _iterator()).done;) {\n var i = _step.value;\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {[Interval]}\n */\n ;\n\n _proto.difference = function difference() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, intervals = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n intervals[_key2] = arguments[_key2];\n }\n\n return Interval.xor([this].concat(intervals)).map(function (i) {\n return _this2.intersection(i);\n }).filter(function (i) {\n return i && !i.isEmpty();\n });\n }\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n ;\n\n _proto.toString = function toString() {\n if (!this.isValid) return INVALID$1;\n return \"[\" + this.s.toISO() + \" \\u2013 \" + this.e.toISO() + \")\";\n }\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime.toISO}\n * @return {string}\n */\n ;\n\n _proto.toISO = function toISO(opts) {\n if (!this.isValid) return INVALID$1;\n return this.s.toISO(opts) + \"/\" + this.e.toISO(opts);\n }\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n ;\n\n _proto.toISODate = function toISODate() {\n if (!this.isValid) return INVALID$1;\n return this.s.toISODate() + \"/\" + this.e.toISODate();\n }\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime.toISO}\n * @return {string}\n */\n ;\n\n _proto.toISOTime = function toISOTime(opts) {\n if (!this.isValid) return INVALID$1;\n return this.s.toISOTime(opts) + \"/\" + this.e.toISOTime(opts);\n }\n /**\n * Returns a string representation of this Interval formatted according to the specified format string.\n * @param {string} dateFormat - the format string. This string formats the start and end time. See {@link DateTime.toFormat} for details.\n * @param {Object} opts - options\n * @param {string} [opts.separator = ' – '] - a separator to place between the start and end representations\n * @return {string}\n */\n ;\n\n _proto.toFormat = function toFormat(dateFormat, _temp2) {\n var _ref3 = _temp2 === void 0 ? {} : _temp2,\n _ref3$separator = _ref3.separator,\n separator = _ref3$separator === void 0 ? \" – \" : _ref3$separator;\n\n if (!this.isValid) return INVALID$1;\n return \"\" + this.s.toFormat(dateFormat) + separator + this.e.toFormat(dateFormat);\n }\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n ;\n\n _proto.toDuration = function toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n\n return this.e.diff(this.s, unit, opts);\n }\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n ;\n\n _proto.mapEndpoints = function mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n };\n\n _createClass(Interval, [{\n key: \"start\",\n get: function get() {\n return this.isValid ? this.s : null;\n }\n /**\n * Returns the end of the Interval\n * @type {DateTime}\n */\n\n }, {\n key: \"end\",\n get: function get() {\n return this.isValid ? this.e : null;\n }\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n\n }, {\n key: \"isValid\",\n get: function get() {\n return this.invalidReason === null;\n }\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n\n }, {\n key: \"invalidReason\",\n get: function get() {\n return this.invalid ? this.invalid.reason : null;\n }\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n\n }, {\n key: \"invalidExplanation\",\n get: function get() {\n return this.invalid ? this.invalid.explanation : null;\n }\n }]);\n\n return Interval;\n}();\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\n\nvar Info = /*#__PURE__*/function () {\n function Info() {}\n\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n Info.hasDST = function hasDST(zone) {\n if (zone === void 0) {\n zone = Settings.defaultZone;\n }\n\n var proto = DateTime.now().setZone(zone).set({\n month: 12\n });\n return !zone.universal && proto.offset !== proto.set({\n month: 6\n }).offset;\n }\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n ;\n\n Info.isValidIANAZone = function isValidIANAZone(zone) {\n return IANAZone.isValidSpecifier(zone) && IANAZone.isValidZone(zone);\n }\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone.isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n ;\n\n Info.normalizeZone = function normalizeZone$1(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I'\n * @return {[string]}\n */\n ;\n\n Info.months = function months(length, _temp) {\n if (length === void 0) {\n length = \"long\";\n }\n\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$locale = _ref.locale,\n locale = _ref$locale === void 0 ? null : _ref$locale,\n _ref$numberingSystem = _ref.numberingSystem,\n numberingSystem = _ref$numberingSystem === void 0 ? null : _ref$numberingSystem,\n _ref$locObj = _ref.locObj,\n locObj = _ref$locObj === void 0 ? null : _ref$locObj,\n _ref$outputCalendar = _ref.outputCalendar,\n outputCalendar = _ref$outputCalendar === void 0 ? \"gregory\" : _ref$outputCalendar;\n\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\n }\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {[string]}\n */\n ;\n\n Info.monthsFormat = function monthsFormat(length, _temp2) {\n if (length === void 0) {\n length = \"long\";\n }\n\n var _ref2 = _temp2 === void 0 ? {} : _temp2,\n _ref2$locale = _ref2.locale,\n locale = _ref2$locale === void 0 ? null : _ref2$locale,\n _ref2$numberingSystem = _ref2.numberingSystem,\n numberingSystem = _ref2$numberingSystem === void 0 ? null : _ref2$numberingSystem,\n _ref2$locObj = _ref2.locObj,\n locObj = _ref2$locObj === void 0 ? null : _ref2$locObj,\n _ref2$outputCalendar = _ref2.outputCalendar,\n outputCalendar = _ref2$outputCalendar === void 0 ? \"gregory\" : _ref2$outputCalendar;\n\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\n }\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'\n * @return {[string]}\n */\n ;\n\n Info.weekdays = function weekdays(length, _temp3) {\n if (length === void 0) {\n length = \"long\";\n }\n\n var _ref3 = _temp3 === void 0 ? {} : _temp3,\n _ref3$locale = _ref3.locale,\n locale = _ref3$locale === void 0 ? null : _ref3$locale,\n _ref3$numberingSystem = _ref3.numberingSystem,\n numberingSystem = _ref3$numberingSystem === void 0 ? null : _ref3$numberingSystem,\n _ref3$locObj = _ref3.locObj,\n locObj = _ref3$locObj === void 0 ? null : _ref3$locObj;\n\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\n }\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link weekdays}\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @return {[string]}\n */\n ;\n\n Info.weekdaysFormat = function weekdaysFormat(length, _temp4) {\n if (length === void 0) {\n length = \"long\";\n }\n\n var _ref4 = _temp4 === void 0 ? {} : _temp4,\n _ref4$locale = _ref4.locale,\n locale = _ref4$locale === void 0 ? null : _ref4$locale,\n _ref4$numberingSystem = _ref4.numberingSystem,\n numberingSystem = _ref4$numberingSystem === void 0 ? null : _ref4$numberingSystem,\n _ref4$locObj = _ref4.locObj,\n locObj = _ref4$locObj === void 0 ? null : _ref4$locObj;\n\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\n }\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]\n * @return {[string]}\n */\n ;\n\n Info.meridiems = function meridiems(_temp5) {\n var _ref5 = _temp5 === void 0 ? {} : _temp5,\n _ref5$locale = _ref5.locale,\n locale = _ref5$locale === void 0 ? null : _ref5$locale;\n\n return Locale.create(locale).meridiems();\n }\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\n * @return {[string]}\n */\n ;\n\n Info.eras = function eras(length, _temp6) {\n if (length === void 0) {\n length = \"short\";\n }\n\n var _ref6 = _temp6 === void 0 ? {} : _temp6,\n _ref6$locale = _ref6.locale,\n locale = _ref6$locale === void 0 ? null : _ref6$locale;\n\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, timezone support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `zones`: whether this environment supports IANA timezones\n * * `intlTokens`: whether this environment supports internationalized token-based formatting/parsing\n * * `intl`: whether this environment supports general internationalization\n * * `relative`: whether this environment supports relative time formatting\n * @example Info.features() //=> { intl: true, intlTokens: false, zones: true, relative: false }\n * @return {Object}\n */\n ;\n\n Info.features = function features() {\n var intl = false,\n intlTokens = false,\n zones = false,\n relative = false;\n\n if (hasIntl()) {\n intl = true;\n intlTokens = hasFormatToParts();\n relative = hasRelative();\n\n try {\n zones = new Intl.DateTimeFormat(\"en\", {\n timeZone: \"America/New_York\"\n }).resolvedOptions().timeZone === \"America/New_York\";\n } catch (e) {\n zones = false;\n }\n }\n\n return {\n intl: intl,\n intlTokens: intlTokens,\n zones: zones,\n relative: relative\n };\n };\n\n return Info;\n}();\n\nfunction dayDiff(earlier, later) {\n var utcDayStart = function utcDayStart(dt) {\n return dt.toUTC(0, {\n keepLocalTime: true\n }).startOf(\"day\").valueOf();\n },\n ms = utcDayStart(later) - utcDayStart(earlier);\n\n return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n var differs = [[\"years\", function (a, b) {\n return b.year - a.year;\n }], [\"quarters\", function (a, b) {\n return b.quarter - a.quarter;\n }], [\"months\", function (a, b) {\n return b.month - a.month + (b.year - a.year) * 12;\n }], [\"weeks\", function (a, b) {\n var days = dayDiff(a, b);\n return (days - days % 7) / 7;\n }], [\"days\", dayDiff]];\n var results = {};\n var lowestOrder, highWater;\n\n for (var _i = 0, _differs = differs; _i < _differs.length; _i++) {\n var _differs$_i = _differs[_i],\n unit = _differs$_i[0],\n differ = _differs$_i[1];\n\n if (units.indexOf(unit) >= 0) {\n var _cursor$plus;\n\n lowestOrder = unit;\n var delta = differ(cursor, later);\n highWater = cursor.plus((_cursor$plus = {}, _cursor$plus[unit] = delta, _cursor$plus));\n\n if (highWater > later) {\n var _cursor$plus2;\n\n cursor = cursor.plus((_cursor$plus2 = {}, _cursor$plus2[unit] = delta - 1, _cursor$plus2));\n delta -= 1;\n } else {\n cursor = highWater;\n }\n\n results[unit] = delta;\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nfunction _diff (earlier, later, units, opts) {\n var _highOrderDiffs = highOrderDiffs(earlier, later, units),\n cursor = _highOrderDiffs[0],\n results = _highOrderDiffs[1],\n highWater = _highOrderDiffs[2],\n lowestOrder = _highOrderDiffs[3];\n\n var remainingMillis = later - cursor;\n var lowerOrderUnits = units.filter(function (u) {\n return [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0;\n });\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n var _cursor$plus3;\n\n highWater = cursor.plus((_cursor$plus3 = {}, _cursor$plus3[lowestOrder] = 1, _cursor$plus3));\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n var duration = Duration.fromObject(Object.assign(results, opts));\n\n if (lowerOrderUnits.length > 0) {\n var _Duration$fromMillis;\n\n return (_Duration$fromMillis = Duration.fromMillis(remainingMillis, opts)).shiftTo.apply(_Duration$fromMillis, lowerOrderUnits).plus(duration);\n } else {\n return duration;\n }\n}\n\nvar numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[〇|一|二|三|四|五|六|七|八|九]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\"\n};\nvar numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881]\n}; // eslint-disable-next-line\n\nvar hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\nfunction parseDigits(str) {\n var value = parseInt(str, 10);\n\n if (isNaN(value)) {\n value = \"\";\n\n for (var i = 0; i < str.length; i++) {\n var code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (var key in numberingSystemsUTF16) {\n var _numberingSystemsUTF = numberingSystemsUTF16[key],\n min = _numberingSystemsUTF[0],\n max = _numberingSystemsUTF[1];\n\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\nfunction digitRegex(_ref, append) {\n var numberingSystem = _ref.numberingSystem;\n\n if (append === void 0) {\n append = \"\";\n }\n\n return new RegExp(\"\" + numberingSystems[numberingSystem || \"latn\"] + append);\n}\n\nvar MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post) {\n if (post === void 0) {\n post = function post(i) {\n return i;\n };\n }\n\n return {\n regex: regex,\n deser: function deser(_ref) {\n var s = _ref[0];\n return post(parseDigits(s));\n }\n };\n}\n\nvar NBSP = String.fromCharCode(160);\nvar spaceOrNBSP = \"( |\" + NBSP + \")\";\nvar spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s.replace(/\\./g, \"\") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: function deser(_ref2) {\n var s = _ref2[0];\n return strings.findIndex(function (i) {\n return stripInsensitivities(s) === stripInsensitivities(i);\n }) + startIndex;\n }\n };\n }\n}\n\nfunction offset(regex, groups) {\n return {\n regex: regex,\n deser: function deser(_ref3) {\n var h = _ref3[1],\n m = _ref3[2];\n return signedOffset(h, m);\n },\n groups: groups\n };\n}\n\nfunction simple(regex) {\n return {\n regex: regex,\n deser: function deser(_ref4) {\n var s = _ref4[0];\n return s;\n }\n };\n}\n\nfunction escapeToken(value) {\n // eslint-disable-next-line no-useless-escape\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\nfunction unitForToken(token, loc) {\n var one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = function literal(t) {\n return {\n regex: RegExp(escapeToken(t.val)),\n deser: function deser(_ref5) {\n var s = _ref5[0];\n return s;\n },\n literal: true\n };\n },\n unitate = function unitate(t) {\n if (token.literal) {\n return literal(t);\n }\n\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\", false), 0);\n\n case \"GG\":\n return oneOf(loc.eras(\"long\", false), 0);\n // years\n\n case \"y\":\n return intUnit(oneToSix);\n\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n\n case \"yyyy\":\n return intUnit(four);\n\n case \"yyyyy\":\n return intUnit(fourToSix);\n\n case \"yyyyyy\":\n return intUnit(six);\n // months\n\n case \"M\":\n return intUnit(oneOrTwo);\n\n case \"MM\":\n return intUnit(two);\n\n case \"MMM\":\n return oneOf(loc.months(\"short\", true, false), 1);\n\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true, false), 1);\n\n case \"L\":\n return intUnit(oneOrTwo);\n\n case \"LL\":\n return intUnit(two);\n\n case \"LLL\":\n return oneOf(loc.months(\"short\", false, false), 1);\n\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false, false), 1);\n // dates\n\n case \"d\":\n return intUnit(oneOrTwo);\n\n case \"dd\":\n return intUnit(two);\n // ordinals\n\n case \"o\":\n return intUnit(oneToThree);\n\n case \"ooo\":\n return intUnit(three);\n // time\n\n case \"HH\":\n return intUnit(two);\n\n case \"H\":\n return intUnit(oneOrTwo);\n\n case \"hh\":\n return intUnit(two);\n\n case \"h\":\n return intUnit(oneOrTwo);\n\n case \"mm\":\n return intUnit(two);\n\n case \"m\":\n return intUnit(oneOrTwo);\n\n case \"q\":\n return intUnit(oneOrTwo);\n\n case \"qq\":\n return intUnit(two);\n\n case \"s\":\n return intUnit(oneOrTwo);\n\n case \"ss\":\n return intUnit(two);\n\n case \"S\":\n return intUnit(oneToThree);\n\n case \"SSS\":\n return intUnit(three);\n\n case \"u\":\n return simple(oneToNine);\n // meridiem\n\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n\n case \"kkkk\":\n return intUnit(four);\n\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n\n case \"W\":\n return intUnit(oneOrTwo);\n\n case \"WW\":\n return intUnit(two);\n // weekdays\n\n case \"E\":\n case \"c\":\n return intUnit(one);\n\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false, false), 1);\n\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false, false), 1);\n\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true, false), 1);\n\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true, false), 1);\n // offset/zone\n\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(\"([+-]\" + oneOrTwo.source + \")(?::(\" + two.source + \"))?\"), 2);\n\n case \"ZZZ\":\n return offset(new RegExp(\"([+-]\" + oneOrTwo.source + \")(\" + two.source + \")?\"), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n\n default:\n return literal(t);\n }\n };\n\n var unit = unitate(token) || {\n invalidReason: MISSING_FTP\n };\n unit.token = token;\n return unit;\n}\n\nvar partTypeStyleToTokenVal = {\n year: {\n \"2-digit\": \"yy\",\n numeric: \"yyyyy\"\n },\n month: {\n numeric: \"M\",\n \"2-digit\": \"MM\",\n short: \"MMM\",\n long: \"MMMM\"\n },\n day: {\n numeric: \"d\",\n \"2-digit\": \"dd\"\n },\n weekday: {\n short: \"EEE\",\n long: \"EEEE\"\n },\n dayperiod: \"a\",\n dayPeriod: \"a\",\n hour: {\n numeric: \"h\",\n \"2-digit\": \"hh\"\n },\n minute: {\n numeric: \"m\",\n \"2-digit\": \"mm\"\n },\n second: {\n numeric: \"s\",\n \"2-digit\": \"ss\"\n }\n};\n\nfunction tokenForPart(part, locale, formatOpts) {\n var type = part.type,\n value = part.value;\n\n if (type === \"literal\") {\n return {\n literal: true,\n val: value\n };\n }\n\n var style = formatOpts[type];\n var val = partTypeStyleToTokenVal[type];\n\n if (typeof val === \"object\") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val: val\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n var re = units.map(function (u) {\n return u.regex;\n }).reduce(function (f, r) {\n return f + \"(\" + r.source + \")\";\n }, \"\");\n return [\"^\" + re + \"$\", units];\n}\n\nfunction match(input, regex, handlers) {\n var matches = input.match(regex);\n\n if (matches) {\n var all = {};\n var matchIndex = 1;\n\n for (var i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n var h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n\n matchIndex += groups;\n }\n }\n\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n var toField = function toField(token) {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n\n case \"s\":\n return \"second\";\n\n case \"m\":\n return \"minute\";\n\n case \"h\":\n case \"H\":\n return \"hour\";\n\n case \"d\":\n return \"day\";\n\n case \"o\":\n return \"ordinal\";\n\n case \"L\":\n case \"M\":\n return \"month\";\n\n case \"y\":\n return \"year\";\n\n case \"E\":\n case \"c\":\n return \"weekday\";\n\n case \"W\":\n return \"weekNumber\";\n\n case \"k\":\n return \"weekYear\";\n\n case \"q\":\n return \"quarter\";\n\n default:\n return null;\n }\n };\n\n var zone;\n\n if (!isUndefined(matches.Z)) {\n zone = new FixedOffsetZone(matches.Z);\n } else if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n } else {\n zone = null;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n var vals = Object.keys(matches).reduce(function (r, k) {\n var f = toField(k);\n\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n return [vals, zone];\n}\n\nvar dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n var formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n\n if (!formatOpts) {\n return token;\n }\n\n var formatter = Formatter.create(locale, formatOpts);\n var parts = formatter.formatDateTimeParts(getDummyDateTime());\n var tokens = parts.map(function (p) {\n return tokenForPart(p, locale, formatOpts);\n });\n\n if (tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nfunction expandMacroTokens(tokens, locale) {\n var _Array$prototype;\n\n return (_Array$prototype = Array.prototype).concat.apply(_Array$prototype, tokens.map(function (t) {\n return maybeExpandMacroToken(t, locale);\n }));\n}\n/**\n * @private\n */\n\n\nfunction explainFromTokens(locale, input, format) {\n var tokens = expandMacroTokens(Formatter.parseFormat(format), locale),\n units = tokens.map(function (t) {\n return unitForToken(t, locale);\n }),\n disqualifyingUnit = units.find(function (t) {\n return t.invalidReason;\n });\n\n if (disqualifyingUnit) {\n return {\n input: input,\n tokens: tokens,\n invalidReason: disqualifyingUnit.invalidReason\n };\n } else {\n var _buildRegex = buildRegex(units),\n regexString = _buildRegex[0],\n handlers = _buildRegex[1],\n regex = RegExp(regexString, \"i\"),\n _match = match(input, regex, handlers),\n rawMatches = _match[0],\n matches = _match[1],\n _ref6 = matches ? dateTimeFromMatches(matches) : [null, null],\n result = _ref6[0],\n zone = _ref6[1];\n\n if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n throw new ConflictingSpecificationError(\"Can't include meridiem when specifying 24-hour format\");\n }\n\n return {\n input: input,\n tokens: tokens,\n regex: regex,\n rawMatches: rawMatches,\n matches: matches,\n result: result,\n zone: zone\n };\n }\n}\nfunction parseFromTokens(locale, input, format) {\n var _explainFromTokens = explainFromTokens(locale, input, format),\n result = _explainFromTokens.result,\n zone = _explainFromTokens.zone,\n invalidReason = _explainFromTokens.invalidReason;\n\n return [result, zone, invalidReason];\n}\n\nvar nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\"unit out of range\", \"you specified \" + value + \" (of type \" + typeof value + \") as a \" + unit + \", which is invalid\");\n}\n\nfunction dayOfWeek(year, month, day) {\n var js = new Date(Date.UTC(year, month - 1, day)).getUTCDay();\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n var table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex(function (i) {\n return i < ordinal;\n }),\n day = ordinal - table[month0];\n return {\n month: month0 + 1,\n day: day\n };\n}\n/**\n * @private\n */\n\n\nfunction gregorianToWeek(gregObj) {\n var year = gregObj.year,\n month = gregObj.month,\n day = gregObj.day,\n ordinal = computeOrdinal(year, month, day),\n weekday = dayOfWeek(year, month, day);\n var weekNumber = Math.floor((ordinal - weekday + 10) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear);\n } else if (weekNumber > weeksInWeekYear(year)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return Object.assign({\n weekYear: weekYear,\n weekNumber: weekNumber,\n weekday: weekday\n }, timeObject(gregObj));\n}\nfunction weekToGregorian(weekData) {\n var weekYear = weekData.weekYear,\n weekNumber = weekData.weekNumber,\n weekday = weekData.weekday,\n weekdayOfJan4 = dayOfWeek(weekYear, 1, 4),\n yearInDays = daysInYear(weekYear);\n var ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n var _uncomputeOrdinal = uncomputeOrdinal(year, ordinal),\n month = _uncomputeOrdinal.month,\n day = _uncomputeOrdinal.day;\n\n return Object.assign({\n year: year,\n month: month,\n day: day\n }, timeObject(weekData));\n}\nfunction gregorianToOrdinal(gregData) {\n var year = gregData.year,\n month = gregData.month,\n day = gregData.day,\n ordinal = computeOrdinal(year, month, day);\n return Object.assign({\n year: year,\n ordinal: ordinal\n }, timeObject(gregData));\n}\nfunction ordinalToGregorian(ordinalData) {\n var year = ordinalData.year,\n ordinal = ordinalData.ordinal,\n _uncomputeOrdinal2 = uncomputeOrdinal(year, ordinal),\n month = _uncomputeOrdinal2.month,\n day = _uncomputeOrdinal2.day;\n\n return Object.assign({\n year: year,\n month: month,\n day: day\n }, timeObject(ordinalData));\n}\nfunction hasInvalidWeekData(obj) {\n var validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear)),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.week);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\nfunction hasInvalidOrdinalData(obj) {\n var validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\nfunction hasInvalidGregorianData(obj) {\n var validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\nfunction hasInvalidTimeData(obj) {\n var hour = obj.hour,\n minute = obj.minute,\n second = obj.second,\n millisecond = obj.millisecond;\n var validHour = integerBetween(hour, 0, 23) || hour === 24 && minute === 0 && second === 0 && millisecond === 0,\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n\nvar INVALID$2 = \"Invalid DateTime\";\nvar MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", \"the zone \\\"\" + zone.name + \"\\\" is not supported\");\n} // we cache week data on the DT object and this intermediates the cache\n\n\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n\n return dt.weekData;\n} // clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\n\n\nfunction clone$1(inst, alts) {\n var current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid\n };\n return new DateTime(Object.assign({}, current, alts, {\n old: current\n }));\n} // find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\n\n\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n var utcGuess = localTS - o * 60 * 1000; // Test whether the zone matches the offset for this ts\n\n var o2 = tz.offset(utcGuess); // If so, offset didn't change and we're done\n\n if (o === o2) {\n return [utcGuess, o];\n } // If not, change the ts by the difference in the offset\n\n\n utcGuess -= (o2 - o) * 60 * 1000; // If that gives us the local time we want, we're done\n\n var o3 = tz.offset(utcGuess);\n\n if (o2 === o3) {\n return [utcGuess, o2];\n } // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n\n\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n} // convert an epoch timestamp into a calendar object with the given offset\n\n\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n var d = new Date(ts);\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds()\n };\n} // convert a calendar object to a epoch timestamp\n\n\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n} // create a new DT instance by adding a duration, adjusting for DSTs\n\n\nfunction adjustTime(inst, dur) {\n var oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = Object.assign({}, inst.c, {\n year: year,\n month: month,\n day: Math.min(inst.c.day, daysInMonth(year, month)) + Math.trunc(dur.days) + Math.trunc(dur.weeks) * 7\n }),\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n var _fixOffset = fixOffset(localTS, oPre, inst.zone),\n ts = _fixOffset[0],\n o = _fixOffset[1];\n\n if (millisToAdd !== 0) {\n ts += millisToAdd; // that could have changed the offset by going over a DST, but we want to keep the ts the same\n\n o = inst.zone.offset(ts);\n }\n\n return {\n ts: ts,\n o: o\n };\n} // helper useful in turning the results of parsing into real dates\n// by handling the zone options\n\n\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text) {\n var setZone = opts.setZone,\n zone = opts.zone;\n\n if (parsed && Object.keys(parsed).length !== 0) {\n var interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(Object.assign(parsed, opts, {\n zone: interpretationZone,\n // setZone is a valid option in the calling methods, but not in fromObject\n setZone: undefined\n }));\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(new Invalid(\"unparsable\", \"the input \\\"\" + text + \"\\\" can't be parsed as \" + format));\n }\n} // if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\n\n\nfunction toTechFormat(dt, format, allowZ) {\n if (allowZ === void 0) {\n allowZ = true;\n }\n\n return dt.isValid ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ: allowZ,\n forceSimple: true\n }).formatDateTimeFromString(dt, format) : null;\n} // technical time formats (e.g. the time part of ISO 8601), take some options\n// and this commonizes their handling\n\n\nfunction toTechTimeFormat(dt, _ref) {\n var _ref$suppressSeconds = _ref.suppressSeconds,\n suppressSeconds = _ref$suppressSeconds === void 0 ? false : _ref$suppressSeconds,\n _ref$suppressMillisec = _ref.suppressMilliseconds,\n suppressMilliseconds = _ref$suppressMillisec === void 0 ? false : _ref$suppressMillisec,\n includeOffset = _ref.includeOffset,\n _ref$includePrefix = _ref.includePrefix,\n includePrefix = _ref$includePrefix === void 0 ? false : _ref$includePrefix,\n _ref$includeZone = _ref.includeZone,\n includeZone = _ref$includeZone === void 0 ? false : _ref$includeZone,\n _ref$spaceZone = _ref.spaceZone,\n spaceZone = _ref$spaceZone === void 0 ? false : _ref$spaceZone,\n _ref$format = _ref.format,\n format = _ref$format === void 0 ? \"extended\" : _ref$format;\n var fmt = format === \"basic\" ? \"HHmm\" : \"HH:mm\";\n\n if (!suppressSeconds || dt.second !== 0 || dt.millisecond !== 0) {\n fmt += format === \"basic\" ? \"ss\" : \":ss\";\n\n if (!suppressMilliseconds || dt.millisecond !== 0) {\n fmt += \".SSS\";\n }\n }\n\n if ((includeZone || includeOffset) && spaceZone) {\n fmt += \" \";\n }\n\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += format === \"basic\" ? \"ZZZ\" : \"ZZ\";\n }\n\n var str = toTechFormat(dt, fmt);\n\n if (includePrefix) {\n str = \"T\" + str;\n }\n\n return str;\n} // defaults for unspecified units in the supported calendars\n\n\nvar defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n},\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n},\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n}; // Units in the supported calendars, sorted by bigness\n\nvar orderedUnits$1 = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\"weekYear\", \"weekNumber\", \"weekday\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"]; // standardize case and plurality in units\n\nfunction normalizeUnit(unit) {\n var normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\"\n }[unit.toLowerCase()];\n if (!normalized) throw new InvalidUnitError(unit);\n return normalized;\n} // this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\n\n\nfunction quickDT(obj, zone) {\n // assume we have the higher-order units\n for (var _iterator = _createForOfIteratorHelperLoose(orderedUnits$1), _step; !(_step = _iterator()).done;) {\n var u = _step.value;\n\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n var invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n var tsNow = Settings.now(),\n offsetProvis = zone.offset(tsNow),\n _objToTS = objToTS(obj, offsetProvis, zone),\n ts = _objToTS[0],\n o = _objToTS[1];\n\n return new DateTime({\n ts: ts,\n zone: zone,\n o: o\n });\n}\n\nfunction diffRelative(start, end, opts) {\n var round = isUndefined(opts.round) ? true : opts.round,\n format = function format(c, unit) {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n var formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = function differ(unit) {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (var _iterator2 = _createForOfIteratorHelperLoose(opts.units), _step2; !(_step2 = _iterator2()).done;) {\n var unit = _step2.value;\n var count = differ(unit);\n\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n\n return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n}\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link local}, {@link utc}, and (most flexibly) {@link fromObject}. To create one from a standard string format, use {@link fromISO}, {@link fromHTTP}, and {@link fromRFC2822}. To create one from a custom string format, use {@link fromFormat}. To create one from a native JS date, use {@link fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link toObject}), use the {@link year}, {@link month},\n * {@link day}, {@link hour}, {@link minute}, {@link second}, {@link millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link weekYear}, {@link weekNumber}, and {@link weekday} accessors.\n * * **Configuration** See the {@link locale} and {@link numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link set}, {@link reconfigure}, {@link setZone}, {@link setLocale}, {@link plus}, {@link minus}, {@link endOf}, {@link startOf}, {@link toUTC}, and {@link toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link toRelative}, {@link toRelativeCalendar}, {@link toJSON}, {@link toISO}, {@link toHTTP}, {@link toObject}, {@link toRFC2822}, {@link toString}, {@link toLocaleString}, {@link toFormat}, {@link toMillis} and {@link toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\n\n\nvar DateTime = /*#__PURE__*/function () {\n /**\n * @access private\n */\n function DateTime(config) {\n var zone = config.zone || Settings.defaultZone;\n var invalid = config.invalid || (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) || (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n var c = null,\n o = null;\n\n if (!invalid) {\n var unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n var _ref2 = [config.old.c, config.old.o];\n c = _ref2[0];\n o = _ref2[1];\n } else {\n var ot = zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n /**\n * @access private\n */\n\n\n this._zone = zone;\n /**\n * @access private\n */\n\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n\n this.invalid = invalid;\n /**\n * @access private\n */\n\n this.weekData = null;\n /**\n * @access private\n */\n\n this.c = c;\n /**\n * @access private\n */\n\n this.o = o;\n /**\n * @access private\n */\n\n this.isLuxonDateTime = true;\n } // CONSTRUCT\n\n /**\n * Create a DateTime for the current instant, in the system's time zone.\n *\n * Use Settings to override these default values if needed.\n * @example DateTime.now().toISO() //~> now in the ISO format\n * @return {DateTime}\n */\n\n\n DateTime.now = function now() {\n return new DateTime({});\n }\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month, 1-indexed\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12) //~> 2017-03-12T00:00:00\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n ;\n\n DateTime.local = function local(year, month, day, hour, minute, second, millisecond) {\n if (isUndefined(year)) {\n return DateTime.now();\n } else {\n return quickDT({\n year: year,\n month: month,\n day: day,\n hour: hour,\n minute: minute,\n second: second,\n millisecond: millisecond\n }, Settings.defaultZone);\n }\n }\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765Z\n * @return {DateTime}\n */\n ;\n\n DateTime.utc = function utc(year, month, day, hour, minute, second, millisecond) {\n if (isUndefined(year)) {\n return new DateTime({\n ts: Settings.now(),\n zone: FixedOffsetZone.utcInstance\n });\n } else {\n return quickDT({\n year: year,\n month: month,\n day: day,\n hour: hour,\n minute: minute,\n second: second,\n millisecond: millisecond\n }, FixedOffsetZone.utcInstance);\n }\n }\n /**\n * Create a DateTime from a JavaScript Date object. Uses the default zone.\n * @param {Date} date - a JavaScript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n ;\n\n DateTime.fromJSDate = function fromJSDate(date, options) {\n if (options === void 0) {\n options = {};\n }\n\n var ts = isDate(date) ? date.valueOf() : NaN;\n\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n var zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options)\n });\n }\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n ;\n\n DateTime.fromMillis = function fromMillis(milliseconds, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\"fromMillis requires a numerical input, but received a \" + typeof milliseconds + \" with value \" + milliseconds);\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options)\n });\n }\n }\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n ;\n\n DateTime.fromSeconds = function fromSeconds(seconds, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options)\n });\n }\n }\n /**\n * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {string|Zone} [obj.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [obj.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} obj.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} obj.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @return {DateTime}\n */\n ;\n\n DateTime.fromObject = function fromObject(obj) {\n var zoneToUse = normalizeZone(obj.zone, Settings.defaultZone);\n\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n var tsNow = Settings.now(),\n offsetProvis = zoneToUse.offset(tsNow),\n normalized = normalizeObject(obj, normalizeUnit, [\"zone\", \"locale\", \"outputCalendar\", \"numberingSystem\"]),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber,\n loc = Locale.fromObject(obj); // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\"Can't mix weekYear/weekNumber units with year/month/day or ordinals\");\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n var useWeekData = definiteWeekDef || normalized.weekday && !containsGregor; // configure ourselves to deal with gregorian dates or week stuff\n\n var units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits$1;\n defaultValues = defaultUnitValues;\n } // set default values for missing stuff\n\n\n var foundFirst = false;\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(units), _step3; !(_step3 = _iterator3()).done;) {\n var u = _step3.value;\n var v = normalized[u];\n\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n } // make sure the values we have are in range\n\n\n var higherOrderInvalid = useWeekData ? hasInvalidWeekData(normalized) : containsOrdinal ? hasInvalidOrdinalData(normalized) : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n } // compute the actual time\n\n\n var gregorian = useWeekData ? weekToGregorian(normalized) : containsOrdinal ? ordinalToGregorian(normalized) : normalized,\n _objToTS2 = objToTS(gregorian, offsetProvis, zoneToUse),\n tsFinal = _objToTS2[0],\n offsetFinal = _objToTS2[1],\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc: loc\n }); // gregorian data + weekday serves only to validate\n\n\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\"mismatched weekday\", \"you can't specify both a weekday of \" + normalized.weekday + \" and a date of \" + inst.toISO());\n }\n\n return inst;\n }\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n ;\n\n DateTime.fromISO = function fromISO(text, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var _parseISODate = parseISODate(text),\n vals = _parseISODate[0],\n parsedZone = _parseISODate[1];\n\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n ;\n\n DateTime.fromRFC2822 = function fromRFC2822(text, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var _parseRFC2822Date = parseRFC2822Date(text),\n vals = _parseRFC2822Date[0],\n parsedZone = _parseRFC2822Date[1];\n\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n ;\n\n DateTime.fromHTTP = function fromHTTP(text, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var _parseHTTPDate = parseHTTPDate(text),\n vals = _parseHTTPDate[0],\n parsedZone = _parseHTTPDate[1];\n\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @see https://moment.github.io/luxon/docs/manual/parsing.html#table-of-tokens\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n ;\n\n DateTime.fromFormat = function fromFormat(text, fmt, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n var _opts = opts,\n _opts$locale = _opts.locale,\n locale = _opts$locale === void 0 ? null : _opts$locale,\n _opts$numberingSystem = _opts.numberingSystem,\n numberingSystem = _opts$numberingSystem === void 0 ? null : _opts$numberingSystem,\n localeToUse = Locale.fromOpts({\n locale: locale,\n numberingSystem: numberingSystem,\n defaultToEN: true\n }),\n _parseFromTokens = parseFromTokens(localeToUse, text, fmt),\n vals = _parseFromTokens[0],\n parsedZone = _parseFromTokens[1],\n invalid = _parseFromTokens[2];\n\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, \"format \" + fmt, text);\n }\n }\n /**\n * @deprecated use fromFormat instead\n */\n ;\n\n DateTime.fromString = function fromString(text, fmt, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n return DateTime.fromFormat(text, fmt, opts);\n }\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n ;\n\n DateTime.fromSQL = function fromSQL(text, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var _parseSQL = parseSQL(text),\n vals = _parseSQL[0],\n parsedZone = _parseSQL[1];\n\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n ;\n\n DateTime.invalid = function invalid(reason, explanation) {\n if (explanation === void 0) {\n explanation = null;\n }\n\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n var invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({\n invalid: invalid\n });\n }\n }\n /**\n * Check if an object is a DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n ;\n\n DateTime.isDateTime = function isDateTime(o) {\n return o && o.isLuxonDateTime || false;\n } // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n ;\n\n var _proto = DateTime.prototype;\n\n _proto.get = function get(unit) {\n return this[unit];\n }\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n ;\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n _proto.resolvedLocaleOpts = function resolvedLocaleOpts(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var _Formatter$create$res = Formatter.create(this.loc.clone(opts), opts).resolvedOptions(this),\n locale = _Formatter$create$res.locale,\n numberingSystem = _Formatter$create$res.numberingSystem,\n calendar = _Formatter$create$res.calendar;\n\n return {\n locale: locale,\n numberingSystem: numberingSystem,\n outputCalendar: calendar\n };\n } // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n ;\n\n _proto.toUTC = function toUTC(offset, opts) {\n if (offset === void 0) {\n offset = 0;\n }\n\n if (opts === void 0) {\n opts = {};\n }\n\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n ;\n\n _proto.toLocal = function toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link plus}. You may wish to use {@link toLocal} and {@link toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n ;\n\n _proto.setZone = function setZone(zone, _temp) {\n var _ref3 = _temp === void 0 ? {} : _temp,\n _ref3$keepLocalTime = _ref3.keepLocalTime,\n keepLocalTime = _ref3$keepLocalTime === void 0 ? false : _ref3$keepLocalTime,\n _ref3$keepCalendarTim = _ref3.keepCalendarTime,\n keepCalendarTime = _ref3$keepCalendarTim === void 0 ? false : _ref3$keepCalendarTim;\n\n zone = normalizeZone(zone, Settings.defaultZone);\n\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n var newTS = this.ts;\n\n if (keepLocalTime || keepCalendarTime) {\n var offsetGuess = zone.offset(this.ts);\n var asObj = this.toObject();\n\n var _objToTS3 = objToTS(asObj, offsetGuess, zone);\n\n newTS = _objToTS3[0];\n }\n\n return clone$1(this, {\n ts: newTS,\n zone: zone\n });\n }\n }\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n ;\n\n _proto.reconfigure = function reconfigure(_temp2) {\n var _ref4 = _temp2 === void 0 ? {} : _temp2,\n locale = _ref4.locale,\n numberingSystem = _ref4.numberingSystem,\n outputCalendar = _ref4.outputCalendar;\n\n var loc = this.loc.clone({\n locale: locale,\n numberingSystem: numberingSystem,\n outputCalendar: outputCalendar\n });\n return clone$1(this, {\n loc: loc\n });\n }\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n ;\n\n _proto.setLocale = function setLocale(locale) {\n return this.reconfigure({\n locale: locale\n });\n }\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link reconfigure} and {@link setZone}.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n ;\n\n _proto.set = function set(values) {\n if (!this.isValid) return this;\n var normalized = normalizeObject(values, normalizeUnit, []),\n settingWeekStuff = !isUndefined(normalized.weekYear) || !isUndefined(normalized.weekNumber) || !isUndefined(normalized.weekday),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\"Can't mix weekYear/weekNumber units with year/month/day or ordinals\");\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n var mixed;\n\n if (settingWeekStuff) {\n mixed = weekToGregorian(Object.assign(gregorianToWeek(this.c), normalized));\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian(Object.assign(gregorianToOrdinal(this.c), normalized));\n } else {\n mixed = Object.assign(this.toObject(), normalized); // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n var _objToTS4 = objToTS(mixed, this.o, this.zone),\n ts = _objToTS4[0],\n o = _objToTS4[1];\n\n return clone$1(this, {\n ts: ts,\n o: o\n });\n }\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.now().plus(123) //~> in 123 milliseconds\n * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n ;\n\n _proto.plus = function plus(duration) {\n if (!this.isValid) return this;\n var dur = friendlyDuration(duration);\n return clone$1(this, adjustTime(this, dur));\n }\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n ;\n\n _proto.minus = function minus(duration) {\n if (!this.isValid) return this;\n var dur = friendlyDuration(duration).negate();\n return clone$1(this, adjustTime(this, dur));\n }\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n ;\n\n _proto.startOf = function startOf(unit) {\n if (!this.isValid) return this;\n var o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n\n case \"hours\":\n o.minute = 0;\n // falls through\n\n case \"minutes\":\n o.second = 0;\n // falls through\n\n case \"seconds\":\n o.millisecond = 0;\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n o.weekday = 1;\n }\n\n if (normalizedUnit === \"quarters\") {\n var q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n ;\n\n _proto.endOf = function endOf(unit) {\n var _this$plus;\n\n return this.isValid ? this.plus((_this$plus = {}, _this$plus[unit] = 1, _this$plus)).startOf(unit).minus(1) : this;\n } // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/docs/manual/formatting.html#table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @see https://moment.github.io/luxon/docs/manual/formatting.html#table-of-tokens\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options\n * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n ;\n\n _proto.toFormat = function toFormat(fmt, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n return this.isValid ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt) : INVALID$2;\n }\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param opts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString({ locale: 'en-gb' }); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hour12: false }); //=> '11:32'\n * @return {string}\n */\n ;\n\n _proto.toLocaleString = function toLocaleString(opts) {\n if (opts === void 0) {\n opts = DATE_SHORT;\n }\n\n return this.isValid ? Formatter.create(this.loc.clone(opts), opts).formatDateTime(this) : INVALID$2;\n }\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.now().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n ;\n\n _proto.toLocaleParts = function toLocaleParts(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n return this.isValid ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this) : [];\n }\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @return {string}\n */\n ;\n\n _proto.toISO = function toISO(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (!this.isValid) {\n return null;\n }\n\n return this.toISODate(opts) + \"T\" + this.toISOTime(opts);\n }\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @return {string}\n */\n ;\n\n _proto.toISODate = function toISODate(_temp3) {\n var _ref5 = _temp3 === void 0 ? {} : _temp3,\n _ref5$format = _ref5.format,\n format = _ref5$format === void 0 ? \"extended\" : _ref5$format;\n\n var fmt = format === \"basic\" ? \"yyyyMMdd\" : \"yyyy-MM-dd\";\n\n if (this.year > 9999) {\n fmt = \"+\" + fmt;\n }\n\n return toTechFormat(this, fmt);\n }\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n ;\n\n _proto.toISOWeekDate = function toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n * @return {string}\n */\n ;\n\n _proto.toISOTime = function toISOTime(_temp4) {\n var _ref6 = _temp4 === void 0 ? {} : _temp4,\n _ref6$suppressMillise = _ref6.suppressMilliseconds,\n suppressMilliseconds = _ref6$suppressMillise === void 0 ? false : _ref6$suppressMillise,\n _ref6$suppressSeconds = _ref6.suppressSeconds,\n suppressSeconds = _ref6$suppressSeconds === void 0 ? false : _ref6$suppressSeconds,\n _ref6$includeOffset = _ref6.includeOffset,\n includeOffset = _ref6$includeOffset === void 0 ? true : _ref6$includeOffset,\n _ref6$includePrefix = _ref6.includePrefix,\n includePrefix = _ref6$includePrefix === void 0 ? false : _ref6$includePrefix,\n _ref6$format = _ref6.format,\n format = _ref6$format === void 0 ? \"extended\" : _ref6$format;\n\n return toTechTimeFormat(this, {\n suppressSeconds: suppressSeconds,\n suppressMilliseconds: suppressMilliseconds,\n includeOffset: includeOffset,\n includePrefix: includePrefix,\n format: format\n });\n }\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime, always in UTC\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n ;\n\n _proto.toRFC2822 = function toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n ;\n\n _proto.toHTTP = function toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string}\n */\n ;\n\n _proto.toSQLDate = function toSQLDate() {\n return toTechFormat(this, \"yyyy-MM-dd\");\n }\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n ;\n\n _proto.toSQLTime = function toSQLTime(_temp5) {\n var _ref7 = _temp5 === void 0 ? {} : _temp5,\n _ref7$includeOffset = _ref7.includeOffset,\n includeOffset = _ref7$includeOffset === void 0 ? true : _ref7$includeOffset,\n _ref7$includeZone = _ref7.includeZone,\n includeZone = _ref7$includeZone === void 0 ? false : _ref7$includeZone;\n\n return toTechTimeFormat(this, {\n includeOffset: includeOffset,\n includeZone: includeZone,\n spaceZone: true\n });\n }\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n ;\n\n _proto.toSQL = function toSQL(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (!this.isValid) {\n return null;\n }\n\n return this.toSQLDate() + \" \" + this.toSQLTime(opts);\n }\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n ;\n\n _proto.toString = function toString() {\n return this.isValid ? this.toISO() : INVALID$2;\n }\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link toMillis}\n * @return {number}\n */\n ;\n\n _proto.valueOf = function valueOf() {\n return this.toMillis();\n }\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n ;\n\n _proto.toMillis = function toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n /**\n * Returns the epoch seconds of this DateTime.\n * @return {number}\n */\n ;\n\n _proto.toSeconds = function toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n ;\n\n _proto.toJSON = function toJSON() {\n return this.toISO();\n }\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n ;\n\n _proto.toBSON = function toBSON() {\n return this.toJSDate();\n }\n /**\n * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n ;\n\n _proto.toObject = function toObject(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (!this.isValid) return {};\n var base = Object.assign({}, this.c);\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n\n return base;\n }\n /**\n * Returns a JavaScript Date equivalent to this DateTime.\n * @return {Date}\n */\n ;\n\n _proto.toJSDate = function toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n } // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n ;\n\n _proto.diff = function diff(otherDateTime, unit, opts) {\n if (unit === void 0) {\n unit = \"milliseconds\";\n }\n\n if (opts === void 0) {\n opts = {};\n }\n\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(this.invalid || otherDateTime.invalid, \"created by diffing an invalid DateTime\");\n }\n\n var durOpts = Object.assign({\n locale: this.locale,\n numberingSystem: this.numberingSystem\n }, opts);\n\n var units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = _diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n /**\n * Return the difference between this DateTime and right now.\n * See {@link diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n ;\n\n _proto.diffNow = function diffNow(unit, opts) {\n if (unit === void 0) {\n unit = \"milliseconds\";\n }\n\n if (opts === void 0) {\n opts = {};\n }\n\n return this.diff(DateTime.now(), unit, opts);\n }\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval}\n */\n ;\n\n _proto.until = function until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime.\n * Higher-order units must also be identical for this function to return `true`.\n * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link setZone} to convert one of the dates if needed.\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n * @return {boolean}\n */\n ;\n\n _proto.hasSame = function hasSame(otherDateTime, unit) {\n if (!this.isValid) return false;\n var inputMs = otherDateTime.valueOf();\n var otherZoneDateTime = this.setZone(otherDateTime.zone, {\n keepLocalTime: true\n });\n return otherZoneDateTime.startOf(unit) <= inputMs && inputMs <= otherZoneDateTime.endOf(unit);\n }\n /**\n * Equality check\n * Two DateTimes are equal iff they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n ;\n\n _proto.equals = function equals(other) {\n return this.isValid && other.isValid && this.valueOf() === other.valueOf() && this.zone.equals(other.zone) && this.loc.equals(other.loc);\n }\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 día\"\n * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n ;\n\n _proto.toRelative = function toRelative(options) {\n if (options === void 0) {\n options = {};\n }\n\n if (!this.isValid) return null;\n var base = options.base || DateTime.fromObject({\n zone: this.zone\n }),\n padding = options.padding ? this < base ? -options.padding : options.padding : 0;\n var units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n var unit = options.unit;\n\n if (Array.isArray(options.unit)) {\n units = options.unit;\n unit = undefined;\n }\n\n return diffRelative(base, this.plus(padding), Object.assign(options, {\n numeric: \"always\",\n units: units,\n unit: unit\n }));\n }\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n ;\n\n _proto.toRelativeCalendar = function toRelativeCalendar(options) {\n if (options === void 0) {\n options = {};\n }\n\n if (!this.isValid) return null;\n return diffRelative(options.base || DateTime.fromObject({\n zone: this.zone\n }), this, Object.assign(options, {\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true\n }));\n }\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n ;\n\n DateTime.min = function min() {\n for (var _len = arguments.length, dateTimes = new Array(_len), _key = 0; _key < _len; _key++) {\n dateTimes[_key] = arguments[_key];\n }\n\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n\n return bestBy(dateTimes, function (i) {\n return i.valueOf();\n }, Math.min);\n }\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n ;\n\n DateTime.max = function max() {\n for (var _len2 = arguments.length, dateTimes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n dateTimes[_key2] = arguments[_key2];\n }\n\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n\n return bestBy(dateTimes, function (i) {\n return i.valueOf();\n }, Math.max);\n } // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n ;\n\n DateTime.fromFormatExplain = function fromFormatExplain(text, fmt, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$locale = _options.locale,\n locale = _options$locale === void 0 ? null : _options$locale,\n _options$numberingSys = _options.numberingSystem,\n numberingSystem = _options$numberingSys === void 0 ? null : _options$numberingSys,\n localeToUse = Locale.fromOpts({\n locale: locale,\n numberingSystem: numberingSystem,\n defaultToEN: true\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n /**\n * @deprecated use fromFormatExplain instead\n */\n ;\n\n DateTime.fromStringExplain = function fromStringExplain(text, fmt, options) {\n if (options === void 0) {\n options = {};\n }\n\n return DateTime.fromFormatExplain(text, fmt, options);\n } // FORMAT PRESETS\n\n /**\n * {@link toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n ;\n\n _createClass(DateTime, [{\n key: \"isValid\",\n get: function get() {\n return this.invalid === null;\n }\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n\n }, {\n key: \"invalidReason\",\n get: function get() {\n return this.invalid ? this.invalid.reason : null;\n }\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n\n }, {\n key: \"invalidExplanation\",\n get: function get() {\n return this.invalid ? this.invalid.explanation : null;\n }\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n\n }, {\n key: \"locale\",\n get: function get() {\n return this.isValid ? this.loc.locale : null;\n }\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n\n }, {\n key: \"numberingSystem\",\n get: function get() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n\n }, {\n key: \"outputCalendar\",\n get: function get() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n\n }, {\n key: \"zone\",\n get: function get() {\n return this._zone;\n }\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n\n }, {\n key: \"zoneName\",\n get: function get() {\n return this.isValid ? this.zone.name : null;\n }\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n\n }, {\n key: \"year\",\n get: function get() {\n return this.isValid ? this.c.year : NaN;\n }\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n\n }, {\n key: \"quarter\",\n get: function get() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n\n }, {\n key: \"month\",\n get: function get() {\n return this.isValid ? this.c.month : NaN;\n }\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n\n }, {\n key: \"day\",\n get: function get() {\n return this.isValid ? this.c.day : NaN;\n }\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n\n }, {\n key: \"hour\",\n get: function get() {\n return this.isValid ? this.c.hour : NaN;\n }\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n\n }, {\n key: \"minute\",\n get: function get() {\n return this.isValid ? this.c.minute : NaN;\n }\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n\n }, {\n key: \"second\",\n get: function get() {\n return this.isValid ? this.c.second : NaN;\n }\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n\n }, {\n key: \"millisecond\",\n get: function get() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n * @type {number}\n */\n\n }, {\n key: \"weekYear\",\n get: function get() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n\n }, {\n key: \"weekNumber\",\n get: function get() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n\n }, {\n key: \"weekday\",\n get: function get() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n\n }, {\n key: \"ordinal\",\n get: function get() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n\n }, {\n key: \"monthShort\",\n get: function get() {\n return this.isValid ? Info.months(\"short\", {\n locObj: this.loc\n })[this.month - 1] : null;\n }\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n\n }, {\n key: \"monthLong\",\n get: function get() {\n return this.isValid ? Info.months(\"long\", {\n locObj: this.loc\n })[this.month - 1] : null;\n }\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n\n }, {\n key: \"weekdayShort\",\n get: function get() {\n return this.isValid ? Info.weekdays(\"short\", {\n locObj: this.loc\n })[this.weekday - 1] : null;\n }\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n\n }, {\n key: \"weekdayLong\",\n get: function get() {\n return this.isValid ? Info.weekdays(\"long\", {\n locObj: this.loc\n })[this.weekday - 1] : null;\n }\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.now().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n\n }, {\n key: \"offset\",\n get: function get() {\n return this.isValid ? +this.o : NaN;\n }\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n\n }, {\n key: \"offsetNameShort\",\n get: function get() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale\n });\n } else {\n return null;\n }\n }\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n\n }, {\n key: \"offsetNameLong\",\n get: function get() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale\n });\n } else {\n return null;\n }\n }\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n\n }, {\n key: \"isOffsetFixed\",\n get: function get() {\n return this.isValid ? this.zone.universal : null;\n }\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n\n }, {\n key: \"isInDST\",\n get: function get() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return this.offset > this.set({\n month: 1\n }).offset || this.offset > this.set({\n month: 5\n }).offset;\n }\n }\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n\n }, {\n key: \"isInLeapYear\",\n get: function get() {\n return isLeapYear(this.year);\n }\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n\n }, {\n key: \"daysInMonth\",\n get: function get() {\n return daysInMonth(this.year, this.month);\n }\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n\n }, {\n key: \"daysInYear\",\n get: function get() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n\n }, {\n key: \"weeksInWeekYear\",\n get: function get() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n }], [{\n key: \"DATE_SHORT\",\n get: function get() {\n return DATE_SHORT;\n }\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n\n }, {\n key: \"DATE_MED\",\n get: function get() {\n return DATE_MED;\n }\n /**\n * {@link toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n\n }, {\n key: \"DATE_MED_WITH_WEEKDAY\",\n get: function get() {\n return DATE_MED_WITH_WEEKDAY;\n }\n /**\n * {@link toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n\n }, {\n key: \"DATE_FULL\",\n get: function get() {\n return DATE_FULL;\n }\n /**\n * {@link toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n\n }, {\n key: \"DATE_HUGE\",\n get: function get() {\n return DATE_HUGE;\n }\n /**\n * {@link toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n\n }, {\n key: \"TIME_SIMPLE\",\n get: function get() {\n return TIME_SIMPLE;\n }\n /**\n * {@link toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n\n }, {\n key: \"TIME_WITH_SECONDS\",\n get: function get() {\n return TIME_WITH_SECONDS;\n }\n /**\n * {@link toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n\n }, {\n key: \"TIME_WITH_SHORT_OFFSET\",\n get: function get() {\n return TIME_WITH_SHORT_OFFSET;\n }\n /**\n * {@link toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n\n }, {\n key: \"TIME_WITH_LONG_OFFSET\",\n get: function get() {\n return TIME_WITH_LONG_OFFSET;\n }\n /**\n * {@link toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n\n }, {\n key: \"TIME_24_SIMPLE\",\n get: function get() {\n return TIME_24_SIMPLE;\n }\n /**\n * {@link toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n\n }, {\n key: \"TIME_24_WITH_SECONDS\",\n get: function get() {\n return TIME_24_WITH_SECONDS;\n }\n /**\n * {@link toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n\n }, {\n key: \"TIME_24_WITH_SHORT_OFFSET\",\n get: function get() {\n return TIME_24_WITH_SHORT_OFFSET;\n }\n /**\n * {@link toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n\n }, {\n key: \"TIME_24_WITH_LONG_OFFSET\",\n get: function get() {\n return TIME_24_WITH_LONG_OFFSET;\n }\n /**\n * {@link toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n\n }, {\n key: \"DATETIME_SHORT\",\n get: function get() {\n return DATETIME_SHORT;\n }\n /**\n * {@link toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n\n }, {\n key: \"DATETIME_SHORT_WITH_SECONDS\",\n get: function get() {\n return DATETIME_SHORT_WITH_SECONDS;\n }\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n\n }, {\n key: \"DATETIME_MED\",\n get: function get() {\n return DATETIME_MED;\n }\n /**\n * {@link toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n\n }, {\n key: \"DATETIME_MED_WITH_SECONDS\",\n get: function get() {\n return DATETIME_MED_WITH_SECONDS;\n }\n /**\n * {@link toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n\n }, {\n key: \"DATETIME_MED_WITH_WEEKDAY\",\n get: function get() {\n return DATETIME_MED_WITH_WEEKDAY;\n }\n /**\n * {@link toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n\n }, {\n key: \"DATETIME_FULL\",\n get: function get() {\n return DATETIME_FULL;\n }\n /**\n * {@link toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n\n }, {\n key: \"DATETIME_FULL_WITH_SECONDS\",\n get: function get() {\n return DATETIME_FULL_WITH_SECONDS;\n }\n /**\n * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n\n }, {\n key: \"DATETIME_HUGE\",\n get: function get() {\n return DATETIME_HUGE;\n }\n /**\n * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n\n }, {\n key: \"DATETIME_HUGE_WITH_SECONDS\",\n get: function get() {\n return DATETIME_HUGE_WITH_SECONDS;\n }\n }]);\n\n return DateTime;\n}();\nfunction friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\"Unknown datetime argument: \" + dateTimeish + \", of type \" + typeof dateTimeish);\n }\n}\n\nvar VERSION = \"1.28.0\";\n\nexports.DateTime = DateTime;\nexports.Duration = Duration;\nexports.FixedOffsetZone = FixedOffsetZone;\nexports.IANAZone = IANAZone;\nexports.Info = Info;\nexports.Interval = Interval;\nexports.InvalidZone = InvalidZone;\nexports.LocalZone = LocalZone;\nexports.Settings = Settings;\nexports.VERSION = VERSION;\nexports.Zone = Zone;\n//# sourceMappingURL=luxon.js.map\n","/**\r\n * DevExtreme (ui/scheduler/tooltip_strategies/tooltipStrategyBase.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.TooltipStrategyBase = void 0;\r\nvar _button = _interopRequireDefault(require(\"../../button\"));\r\nvar _function_template = require(\"../../../core/templates/function_template\");\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _uiList = _interopRequireDefault(require(\"../../list/ui.list.edit\"));\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 _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar TOOLTIP_APPOINTMENT_ITEM = \"dx-tooltip-appointment-item\";\r\nvar TOOLTIP_APPOINTMENT_ITEM_CONTENT = TOOLTIP_APPOINTMENT_ITEM + \"-content\";\r\nvar TOOLTIP_APPOINTMENT_ITEM_CONTENT_SUBJECT = TOOLTIP_APPOINTMENT_ITEM + \"-content-subject\";\r\nvar TOOLTIP_APPOINTMENT_ITEM_CONTENT_DATE = TOOLTIP_APPOINTMENT_ITEM + \"-content-date\";\r\nvar TOOLTIP_APPOINTMENT_ITEM_MARKER = TOOLTIP_APPOINTMENT_ITEM + \"-marker\";\r\nvar TOOLTIP_APPOINTMENT_ITEM_MARKER_BODY = TOOLTIP_APPOINTMENT_ITEM + \"-marker-body\";\r\nvar TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON_CONTAINER = TOOLTIP_APPOINTMENT_ITEM + \"-delete-button-container\";\r\nvar TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON = TOOLTIP_APPOINTMENT_ITEM + \"-delete-button\";\r\nvar TooltipStrategyBase = function() {\r\n function TooltipStrategyBase(options) {\r\n this._tooltip = null;\r\n this._options = options;\r\n this._extraOptions = null\r\n }\r\n var _proto = TooltipStrategyBase.prototype;\r\n _proto.show = function(target, dataList, extraOptions) {\r\n if (this._canShowTooltip(dataList)) {\r\n this.hide();\r\n this._extraOptions = extraOptions;\r\n this._showCore(target, dataList)\r\n }\r\n };\r\n _proto._showCore = function(target, dataList) {\r\n if (!this._tooltip) {\r\n this._tooltip = this._createTooltip(target, dataList)\r\n } else {\r\n this._shouldUseTarget() && this._tooltip.option(\"target\", target);\r\n this._list.option(\"dataSource\", dataList)\r\n }\r\n this._prepareBeforeVisibleChanged(dataList);\r\n this._tooltip.option(\"visible\", true)\r\n };\r\n _proto._prepareBeforeVisibleChanged = function(dataList) {};\r\n _proto._getContentTemplate = function(dataList) {\r\n var _this = this;\r\n return function(container) {\r\n var listElement = (0, _renderer.default)(\"
\");\r\n (0, _renderer.default)(container).append(listElement);\r\n _this._list = _this._createList(listElement, dataList)\r\n }\r\n };\r\n _proto.isAlreadyShown = function(target) {\r\n if (this._tooltip && this._tooltip.option(\"visible\")) {\r\n return this._tooltip.option(\"target\")[0] === target[0]\r\n }\r\n };\r\n _proto._onShown = function() {\r\n this._list.option(\"focusStateEnabled\", this._extraOptions.focusStateEnabled)\r\n };\r\n _proto.dispose = function() {};\r\n _proto.hide = function() {\r\n if (this._tooltip) {\r\n this._tooltip.option(\"visible\", false)\r\n }\r\n };\r\n _proto._shouldUseTarget = function() {\r\n return true\r\n };\r\n _proto._createTooltip = function() {};\r\n _proto._canShowTooltip = function(dataList) {\r\n if (!dataList.length) {\r\n return false\r\n }\r\n return true\r\n };\r\n _proto._createListOption = function(dataList) {\r\n var _this2 = this;\r\n return {\r\n dataSource: dataList,\r\n onContentReady: this._onListRender.bind(this),\r\n onItemClick: function(e) {\r\n return _this2._onListItemClick(e)\r\n },\r\n itemTemplate: function(item, index) {\r\n return _this2._renderTemplate(item.appointment, item.targetedAppointment, index, item.color)\r\n },\r\n _swipeEnabled: false\r\n }\r\n };\r\n _proto._onListRender = function() {};\r\n _proto._createTooltipElement = function(wrapperClass) {\r\n return (0, _renderer.default)(\"
\").appendTo(this._options.container).addClass(wrapperClass)\r\n };\r\n _proto._createList = function(listElement, dataList) {\r\n return this._options.createComponent(listElement, _uiList.default, this._createListOption(dataList))\r\n };\r\n _proto._renderTemplate = function(appointment, targetedAppointment, index, color) {\r\n var itemListContent = this._createItemListContent(appointment, targetedAppointment, color);\r\n this._options.addDefaultTemplates(_defineProperty({}, this._getItemListTemplateName(), new _function_template.FunctionTemplate(function(options) {\r\n var $container = (0, _renderer.default)(options.container);\r\n $container.append(itemListContent);\r\n return $container\r\n })));\r\n var template = this._options.getAppointmentTemplate(this._getItemListTemplateName() + \"Template\");\r\n return this._createFunctionTemplate(template, appointment, targetedAppointment, index)\r\n };\r\n _proto._createFunctionTemplate = function(template, data, targetData, index) {\r\n var isEmptyDropDownAppointmentTemplate = this._isEmptyDropDownAppointmentTemplate();\r\n return new _function_template.FunctionTemplate(function(options) {\r\n return template.render({\r\n model: isEmptyDropDownAppointmentTemplate ? {\r\n appointmentData: data,\r\n targetedAppointmentData: targetData\r\n } : data,\r\n container: options.container,\r\n index: index\r\n })\r\n })\r\n };\r\n _proto._getItemListTemplateName = function() {\r\n return this._isEmptyDropDownAppointmentTemplate() ? \"appointmentTooltip\" : \"dropDownAppointment\"\r\n };\r\n _proto._isEmptyDropDownAppointmentTemplate = function() {\r\n return !this._extraOptions.dropDownAppointmentTemplate || \"dropDownAppointment\" === this._extraOptions.dropDownAppointmentTemplate\r\n };\r\n _proto._onListItemClick = function(e) {\r\n this.hide();\r\n this._extraOptions.clickEvent && this._extraOptions.clickEvent(e);\r\n this._options.showAppointmentPopup(e.itemData.appointment, false, e.itemData.targetedAppointment)\r\n };\r\n _proto._createItemListContent = function(appointment, targetedAppointment, color) {\r\n var editing = this._extraOptions.editing;\r\n var $itemElement = (0, _renderer.default)(\"
\").addClass(TOOLTIP_APPOINTMENT_ITEM);\r\n $itemElement.append(this._createItemListMarker(color));\r\n $itemElement.append(this._createItemListInfo(this._options.createFormattedDateText(appointment, targetedAppointment)));\r\n var disabled = this._options.getAppointmentDisabled(appointment);\r\n if (!disabled && (editing && true === editing.allowDeleting || true === editing)) {\r\n $itemElement.append(this._createDeleteButton(appointment, targetedAppointment))\r\n }\r\n return $itemElement\r\n };\r\n _proto._createItemListMarker = function(color) {\r\n var $marker = (0, _renderer.default)(\"
\").addClass(TOOLTIP_APPOINTMENT_ITEM_MARKER);\r\n var $markerBody = (0, _renderer.default)(\"
\").addClass(TOOLTIP_APPOINTMENT_ITEM_MARKER_BODY);\r\n $marker.append($markerBody);\r\n color && color.done(function(value) {\r\n return $markerBody.css(\"background\", value)\r\n });\r\n return $marker\r\n };\r\n _proto._createItemListInfo = function(object) {\r\n var result = (0, _renderer.default)(\"
\").addClass(TOOLTIP_APPOINTMENT_ITEM_CONTENT);\r\n var $title = (0, _renderer.default)(\"
\").addClass(TOOLTIP_APPOINTMENT_ITEM_CONTENT_SUBJECT).text(object.text);\r\n var $date = (0, _renderer.default)(\"
\").addClass(TOOLTIP_APPOINTMENT_ITEM_CONTENT_DATE).text(object.formatDate);\r\n return result.append($title).append($date)\r\n };\r\n _proto._createDeleteButton = function(appointment, targetedAppointment) {\r\n var _this3 = this;\r\n var $container = (0, _renderer.default)(\"
\").addClass(TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON_CONTAINER);\r\n var $deleteButton = (0, _renderer.default)(\"
\").addClass(TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON);\r\n $container.append($deleteButton);\r\n this._options.createComponent($deleteButton, _button.default, {\r\n icon: \"trash\",\r\n stylingMode: \"text\",\r\n onClick: function(e) {\r\n _this3.hide();\r\n e.event.stopPropagation();\r\n _this3._options.checkAndDeleteAppointment(appointment, targetedAppointment)\r\n }\r\n });\r\n return $container\r\n };\r\n return TooltipStrategyBase\r\n}();\r\nexports.TooltipStrategyBase = TooltipStrategyBase;\r\n","// =============================================================================\n// Weekday\n// =============================================================================\nexport var ALL_WEEKDAYS = ['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU'];\nvar Weekday = /** @class */ (function () {\n function Weekday(weekday, n) {\n if (n === 0)\n throw new Error(\"Can't create weekday with n == 0\");\n this.weekday = weekday;\n this.n = n;\n }\n Weekday.fromStr = function (str) {\n return new Weekday(ALL_WEEKDAYS.indexOf(str));\n };\n // __call__ - Cannot call the object directly, do it through\n // e.g. RRule.TH.nth(-1) instead,\n Weekday.prototype.nth = function (n) {\n return this.n === n ? this : new Weekday(this.weekday, n);\n };\n // __eq__\n Weekday.prototype.equals = function (other) {\n return this.weekday === other.weekday && this.n === other.n;\n };\n // __repr__\n Weekday.prototype.toString = function () {\n var s = ALL_WEEKDAYS[this.weekday];\n if (this.n)\n s = (this.n > 0 ? '+' : '') + String(this.n) + s;\n return s;\n };\n Weekday.prototype.getJsWeekday = function () {\n return this.weekday === 6 ? 0 : this.weekday + 1;\n };\n return Weekday;\n}());\nexport { Weekday };\n//# sourceMappingURL=weekday.js.map","/**\r\n * DevExtreme (ui/scheduler/dateAdapter.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _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 DateAdapterCore = function() {\r\n function DateAdapterCore(source) {\r\n this._source = new Date(source.getTime ? source.getTime() : source)\r\n }\r\n var _proto = DateAdapterCore.prototype;\r\n _proto.result = function() {\r\n return this._source\r\n };\r\n _proto.getTimezoneOffset = function() {\r\n var format = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0;\r\n var value = this._source.getTimezoneOffset();\r\n if (\"minute\" === format) {\r\n return value * toMs(\"minute\")\r\n }\r\n return value\r\n };\r\n _proto.getTime = function() {\r\n return this._source.getTime()\r\n };\r\n _proto.setTime = function(value) {\r\n this._source.setTime(value);\r\n return this\r\n };\r\n _proto.addTime = function(value) {\r\n this._source.setTime(this._source.getTime() + value);\r\n return this\r\n };\r\n _proto.setMinutes = function(value) {\r\n this._source.setMinutes(value);\r\n return this\r\n };\r\n _proto.addMinutes = function(value) {\r\n this._source.setMinutes(this._source.getMinutes() + value);\r\n return this\r\n };\r\n _proto.subtractMinutes = function(value) {\r\n this._source.setMinutes(this._source.getMinutes() - value);\r\n return this\r\n };\r\n _createClass(DateAdapterCore, [{\r\n key: \"source\",\r\n get: function() {\r\n return this._source\r\n }\r\n }]);\r\n return DateAdapterCore\r\n}();\r\nvar DateAdapter = function(date) {\r\n return new DateAdapterCore(date)\r\n};\r\nvar _default = DateAdapter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/view_data_provider.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n if (enumerableOnly) {\r\n symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })\r\n }\r\n keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n })\r\n } else {\r\n if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n } else {\r\n ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\n\r\nfunction _toConsumableArray(arr) {\r\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n if (!o) {\r\n return\r\n }\r\n if (\"string\" === typeof o) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n var n = Object.prototype.toString.call(o).slice(8, -1);\r\n if (\"Object\" === n && o.constructor) {\r\n n = o.constructor.name\r\n }\r\n if (\"Map\" === n || \"Set\" === n) {\r\n return Array.from(o)\r\n }\r\n if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n if (\"undefined\" !== typeof Symbol && null != iter[Symbol.iterator] || null != iter[\"@@iterator\"]) {\r\n return Array.from(iter)\r\n }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return _arrayLikeToArray(arr)\r\n }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n if (null == len || len > arr.length) {\r\n len = arr.length\r\n }\r\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i]\r\n }\r\n return arr2\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n return Constructor\r\n}\r\nvar ViewDataGenerator = function() {\r\n function ViewDataGenerator(workspace) {\r\n this.workspace = workspace\r\n }\r\n var _proto = ViewDataGenerator.prototype;\r\n _proto._getCompleteViewDataMap = function(options) {\r\n var rowCount = options.nonVirtualRowCount,\r\n cellCount = options.cellCount,\r\n verticalGroupCount = options.verticalGroupCount;\r\n var viewDataMap = [];\r\n for (var groupIndex = 0; groupIndex < verticalGroupCount; groupIndex += 1) {\r\n var allDayPanelData = this._generateAllDayPanelData(options, groupIndex, rowCount, cellCount);\r\n var viewCellsData = this._generateViewCellsData(options, rowCount, 0, rowCount * groupIndex);\r\n allDayPanelData && viewDataMap.push(allDayPanelData);\r\n viewDataMap.push.apply(viewDataMap, _toConsumableArray(viewCellsData))\r\n }\r\n return viewDataMap\r\n };\r\n _proto._generateViewDataMap = function(completeViewDataMap, options) {\r\n var startRowIndex = options.startRowIndex,\r\n rowCount = options.rowCount;\r\n var isVerticalGrouping = this.workspace._isVerticalGroupedWorkSpace();\r\n var showAllDayPanel = this.workspace._isShowAllDayPanel();\r\n var indexDifference = isVerticalGrouping || !showAllDayPanel ? 0 : 1;\r\n var correctedStartRowIndex = startRowIndex + indexDifference;\r\n return completeViewDataMap.slice(correctedStartRowIndex, correctedStartRowIndex + rowCount).map(function(cellsRow, rowIndex) {\r\n return cellsRow.map(function(cellData, cellIndex) {\r\n return {\r\n cellData: cellData,\r\n position: {\r\n rowIndex: rowIndex,\r\n cellIndex: cellIndex\r\n }\r\n }\r\n })\r\n })\r\n };\r\n _proto._getViewDataFromMap = function(viewDataMap, completeViewDataMap, options) {\r\n var topVirtualRowHeight = options.topVirtualRowHeight,\r\n bottomVirtualRowHeight = options.bottomVirtualRowHeight,\r\n cellCountInGroupRow = options.cellCountInGroupRow;\r\n var isGroupedAllDayPanel = this.workspace.isGroupedAllDayPanel();\r\n var _viewDataMap$reduce = viewDataMap.reduce(function(_ref, cellsRow) {\r\n var previousGroupIndex = _ref.previousGroupIndex,\r\n previousGroupedData = _ref.previousGroupedData;\r\n var cellDataRow = cellsRow.map(function(_ref2) {\r\n var cellData = _ref2.cellData;\r\n return cellData\r\n });\r\n var firstCell = cellDataRow[0];\r\n var isAllDayRow = firstCell.allDay;\r\n var currentGroupIndex = firstCell.groupIndex;\r\n if (currentGroupIndex !== previousGroupIndex) {\r\n previousGroupedData.push({\r\n dateTable: [],\r\n isGroupedAllDayPanel: isGroupedAllDayPanel,\r\n groupIndex: currentGroupIndex\r\n })\r\n }\r\n if (isAllDayRow) {\r\n previousGroupedData[previousGroupedData.length - 1].allDayPanel = cellDataRow\r\n } else {\r\n previousGroupedData[previousGroupedData.length - 1].dateTable.push(cellDataRow)\r\n }\r\n return {\r\n previousGroupedData: previousGroupedData,\r\n previousGroupIndex: currentGroupIndex\r\n }\r\n }, {\r\n previousGroupIndex: -1,\r\n previousGroupedData: []\r\n }),\r\n groupedData = _viewDataMap$reduce.previousGroupedData;\r\n var isVirtualScrolling = this.workspace.isVirtualScrolling();\r\n var isVerticalGrouping = this.workspace._isVerticalGroupedWorkSpace();\r\n var showAllDayPanel = this.workspace._isShowAllDayPanel();\r\n if (!isVerticalGrouping && showAllDayPanel) {\r\n groupedData[0].allDayPanel = completeViewDataMap[0]\r\n }\r\n return {\r\n groupedData: groupedData,\r\n isVirtual: isVirtualScrolling,\r\n topVirtualRowHeight: topVirtualRowHeight,\r\n bottomVirtualRowHeight: bottomVirtualRowHeight,\r\n cellCountInGroupRow: cellCountInGroupRow\r\n }\r\n };\r\n _proto._generateViewCellsData = function(options, renderRowCount, startRowIndex, rowOffset) {\r\n var cellCount = options.cellCount,\r\n cellDataGetters = options.cellDataGetters,\r\n rowCountInGroup = options.rowCountInGroup;\r\n var viewCellsData = [];\r\n for (var i = 0; i < renderRowCount; ++i) {\r\n var rowIndex = startRowIndex + rowOffset + i;\r\n var rowIndexInGroup = rowIndex % rowCountInGroup;\r\n viewCellsData.push(this._generateCellsRow(options, cellDataGetters, rowIndex, cellCount, rowIndexInGroup))\r\n }\r\n return viewCellsData\r\n };\r\n _proto._generateAllDayPanelData = function(options, groupIndex, rowCount, cellCount) {\r\n var workSpace = this.workspace;\r\n if (!workSpace._isShowAllDayPanel()) {\r\n return null\r\n }\r\n var rowIndex = Math.max(groupIndex * rowCount, 0);\r\n return this._generateCellsRow(options, [workSpace._getAllDayCellData.bind(workSpace)], rowIndex, cellCount, 0, groupIndex)\r\n };\r\n _proto._generateCellsRow = function(options, cellDataGetters, rowIndex, cellCount, rowIndexInGroup, groupIndex) {\r\n var _this = this;\r\n var cellsRow = [];\r\n var horizontalGroupCount = options.horizontalGroupCount,\r\n groupOrientation = options.groupOrientation,\r\n rowCountInGroup = options.rowCountInGroup,\r\n cellCountInGroupRow = options.cellCountInGroupRow,\r\n groupCount = options.groupCount;\r\n var _loop = function(columnIndex) {\r\n var cellDataValue = cellDataGetters.reduce(function(data, getter) {\r\n return _objectSpread(_objectSpread({}, data), getter(void 0, rowIndex, columnIndex, groupIndex).value)\r\n }, {});\r\n cellDataValue.index = _this._calculateCellIndex(horizontalGroupCount, groupOrientation, _this._workspace.isGroupedByDate(), rowIndexInGroup, columnIndex, cellCount);\r\n cellDataValue.isFirstGroupCell = _this._isFirstGroupCell(rowIndex, columnIndex, rowCountInGroup, cellCountInGroupRow, groupCount);\r\n cellDataValue.isLastGroupCell = _this._isLastGroupCell(rowIndex, columnIndex, rowCountInGroup, cellCountInGroupRow, groupCount);\r\n cellDataValue.key = _this._getKeyByRowAndColumn(rowIndex, columnIndex, cellCount);\r\n cellsRow.push(cellDataValue)\r\n };\r\n for (var columnIndex = 0; columnIndex < cellCount; ++columnIndex) {\r\n _loop(columnIndex)\r\n }\r\n return cellsRow\r\n };\r\n _proto._calculateCellIndex = function(horizontalGroupCount, groupOrientation, isGroupedByDate, rowIndex, columnIndex, columnsNumber) {\r\n var groupCount = horizontalGroupCount || 1;\r\n var index = rowIndex * columnsNumber + columnIndex;\r\n var columnsInGroup = columnsNumber / groupCount;\r\n if (\"horizontal\" === groupOrientation) {\r\n var columnIndexInCurrentGroup = columnIndex % columnsInGroup;\r\n if (isGroupedByDate) {\r\n columnIndexInCurrentGroup = Math.floor(columnIndex / groupCount)\r\n }\r\n index = rowIndex * columnsInGroup + columnIndexInCurrentGroup\r\n }\r\n return index\r\n };\r\n _proto._getKeyByRowAndColumn = function(rowIndex, columnIndex, cellCount) {\r\n return rowIndex * cellCount + columnIndex\r\n };\r\n _proto.generateGroupedDataMap = function(viewDataMap) {\r\n var _viewDataMap$reduce2 = viewDataMap.reduce(function(previousOptions, cellsRow) {\r\n var previousGroupedDataMap = previousOptions.previousGroupedDataMap,\r\n previousRowIndex = previousOptions.previousRowIndex,\r\n previousGroupIndex = previousOptions.previousGroupIndex;\r\n var currentGroupIndex = cellsRow[0].cellData.groupIndex;\r\n var currentRowIndex = currentGroupIndex === previousGroupIndex ? previousRowIndex + 1 : 0;\r\n cellsRow.forEach(function(cell) {\r\n var groupIndex = cell.cellData.groupIndex;\r\n if (!previousGroupedDataMap[groupIndex]) {\r\n previousGroupedDataMap[groupIndex] = []\r\n }\r\n if (!previousGroupedDataMap[groupIndex][currentRowIndex]) {\r\n previousGroupedDataMap[groupIndex][currentRowIndex] = []\r\n }\r\n previousGroupedDataMap[groupIndex][currentRowIndex].push(cell)\r\n });\r\n return {\r\n previousGroupedDataMap: previousGroupedDataMap,\r\n previousRowIndex: currentRowIndex,\r\n previousGroupIndex: currentGroupIndex\r\n }\r\n }, {\r\n previousGroupedDataMap: [],\r\n previousRowIndex: -1,\r\n previousGroupIndex: -1\r\n }),\r\n groupedDataMap = _viewDataMap$reduce2.previousGroupedDataMap;\r\n return groupedDataMap\r\n };\r\n _proto._isFirstGroupCell = function(rowIndex, columnIndex, singleGroupRowCount, singleGroupColumnCount, groupCount) {\r\n if (this.workspace.isGroupedByDate()) {\r\n return columnIndex % groupCount === 0\r\n }\r\n if (this.workspace._isHorizontalGroupedWorkSpace() || 0 === groupCount) {\r\n return columnIndex % singleGroupColumnCount === 0\r\n }\r\n return rowIndex % singleGroupRowCount === 0\r\n };\r\n _proto._isLastGroupCell = function(rowIndex, columnIndex, singleGroupRowCount, singleGroupColumnCount, groupCount) {\r\n if (this.workspace.isGroupedByDate()) {\r\n return (columnIndex + 1) % groupCount === 0\r\n }\r\n if (this.workspace._isHorizontalGroupedWorkSpace() || 0 === groupCount) {\r\n return (columnIndex + 1) % singleGroupColumnCount === 0\r\n }\r\n return (rowIndex + 1) % singleGroupRowCount === 0\r\n };\r\n _createClass(ViewDataGenerator, [{\r\n key: \"workspace\",\r\n get: function() {\r\n return this._workspace\r\n },\r\n set: function(value) {\r\n this._workspace = value\r\n }\r\n }]);\r\n return ViewDataGenerator\r\n}();\r\nvar ViewDataProvider = function() {\r\n function ViewDataProvider(workspace) {\r\n this._viewDataGenerator = null;\r\n this._viewData = [];\r\n this._completeViewDataMap = [];\r\n this._completeGroupedViewDataMap = [];\r\n this._viewDataMap = [];\r\n this._groupedDataMap = [];\r\n this._workspace = workspace\r\n }\r\n var _proto2 = ViewDataProvider.prototype;\r\n _proto2.update = function(isGenerateNewViewData) {\r\n var viewDataGenerator = this.viewDataGenerator,\r\n _workspace = this._workspace;\r\n var renderOptions = _workspace.generateRenderOptions();\r\n if (isGenerateNewViewData) {\r\n this.completeViewDataMap = viewDataGenerator._getCompleteViewDataMap(renderOptions)\r\n }\r\n this.viewDataMap = viewDataGenerator._generateViewDataMap(this.completeViewDataMap, renderOptions);\r\n this.viewData = viewDataGenerator._getViewDataFromMap(this.viewDataMap, this.completeViewDataMap, renderOptions);\r\n this.groupedDataMap = viewDataGenerator.generateGroupedDataMap(this.viewDataMap)\r\n };\r\n _proto2.getStartDate = function() {\r\n var groupedData = this.viewData.groupedData;\r\n var dateTable = groupedData[0].dateTable;\r\n return dateTable[0][0].startDate\r\n };\r\n _proto2.getGroupStartDate = function(groupIndex) {\r\n var _this$getGroupData = this.getGroupData(groupIndex),\r\n dateTable = _this$getGroupData.dateTable;\r\n return dateTable[0][0].startDate\r\n };\r\n _proto2.getGroupEndDate = function(groupIndex) {\r\n var _this$getGroupData2 = this.getGroupData(groupIndex),\r\n dateTable = _this$getGroupData2.dateTable;\r\n var lastRowIndex = dateTable.length - 1;\r\n var lastCellIndex = dateTable[lastRowIndex].length - 1;\r\n return dateTable[lastRowIndex][lastCellIndex].endDate\r\n };\r\n _proto2.findGroupCellStartDate = function(groupIndex, startDate, endDate, isAllDay) {\r\n if (isAllDay) {\r\n return this.findAllDayGroupCellStartDate(groupIndex, startDate)\r\n }\r\n var _this$getGroupData3 = this.getGroupData(groupIndex),\r\n dateTable = _this$getGroupData3.dateTable;\r\n if (!dateTable.length) {\r\n return\r\n }\r\n for (var i = 0; i < dateTable[0].length; ++i) {\r\n var cell = dateTable[0][i];\r\n var lastRowIndex = dateTable.length - 1;\r\n if (_date.default.sameDate(cell.startDate, startDate)) {\r\n var _lastCell;\r\n var lastCell = dateTable[lastRowIndex][i];\r\n if (lastCell.endDate <= startDate) {\r\n if (endDate.getDate() > startDate.getDate()) {\r\n cell = dateTable[0][i + 1];\r\n lastCell = dateTable[lastRowIndex][i + 1]\r\n }\r\n }\r\n if ((null === (_lastCell = lastCell) || void 0 === _lastCell ? void 0 : _lastCell.endDate) > startDate) {\r\n return cell.startDate\r\n }\r\n }\r\n }\r\n };\r\n _proto2.findAllDayGroupCellStartDate = function(groupIndex, startDate) {\r\n var groupStartDate = this.getGroupStartDate(groupIndex);\r\n return groupStartDate > startDate ? groupStartDate : startDate\r\n };\r\n _proto2.getCellsGroup = function(groupIndex) {\r\n var _this$getGroupData4 = this.getGroupData(groupIndex),\r\n dateTable = _this$getGroupData4.dateTable;\r\n return dateTable[0][0].groups\r\n };\r\n _proto2.getCellData = function(rowIndex, cellIndex, isAllDay) {\r\n if (isAllDay && !this._workspace._isVerticalGroupedWorkSpace()) {\r\n return this._viewData.groupedData[0].allDayPanel[cellIndex]\r\n }\r\n var cellData = this.viewDataMap[rowIndex][cellIndex].cellData;\r\n return cellData\r\n };\r\n _proto2.getCellsByGroupIndexAndAllDay = function(groupIndex, allDay) {\r\n var workspace = this._workspace;\r\n var rowsPerGroup = workspace._getRowCountWithAllDayRows();\r\n var isVerticalGrouping = workspace._isVerticalGroupedWorkSpace();\r\n var isShowAllDayPanel = workspace._isShowAllDayPanel();\r\n var firstRowInGroup = isVerticalGrouping ? groupIndex * rowsPerGroup : 0;\r\n var lastRowInGroup = isVerticalGrouping ? (groupIndex + 1) * rowsPerGroup - 1 : rowsPerGroup;\r\n var correctedFirstRow = isShowAllDayPanel && !allDay ? firstRowInGroup + 1 : firstRowInGroup;\r\n var correctedLastRow = allDay ? correctedFirstRow : lastRowInGroup;\r\n return this.completeViewDataMap.slice(correctedFirstRow, correctedLastRow + 1).map(function(row) {\r\n return row.filter(function(_ref3) {\r\n var currentGroupIndex = _ref3.groupIndex;\r\n return groupIndex === currentGroupIndex\r\n })\r\n })\r\n };\r\n _proto2.findCellPositionInMap = function(groupIndex, startDate, isAllDay) {\r\n var startTime = isAllDay ? _date.default.trimTime(startDate).getTime() : startDate.getTime();\r\n var isStartTimeInCell = function(cellData) {\r\n var cellStartTime = cellData.startDate.getTime();\r\n var cellEndTime = cellData.endDate.getTime();\r\n return isAllDay ? cellData.allDay && startTime >= cellStartTime && startTime <= cellEndTime : startTime >= cellStartTime && startTime < cellEndTime\r\n };\r\n var rows = isAllDay && !this._workspace._isVerticalGroupedWorkSpace() ? [this.completeViewDataMap[0].map(function(cell, index) {\r\n return {\r\n cellData: cell,\r\n position: {\r\n cellIndex: index,\r\n rowIndex: 0\r\n }\r\n }\r\n })] : this.groupedDataMap[groupIndex] || [];\r\n for (var rowIndex = 0; rowIndex < rows.length; ++rowIndex) {\r\n var row = rows[rowIndex];\r\n for (var cellIndex = 0; cellIndex < row.length; ++cellIndex) {\r\n var cell = row[cellIndex];\r\n var cellData = cell.cellData;\r\n if (cellData.groupIndex === groupIndex) {\r\n if (isStartTimeInCell(cellData)) {\r\n return cell.position\r\n }\r\n }\r\n }\r\n }\r\n return\r\n };\r\n _proto2.getGroupIndices = function() {\r\n var groupedData = this.viewData.groupedData;\r\n return groupedData.map(function(_ref4) {\r\n var groupIndex = _ref4.groupIndex;\r\n return groupIndex\r\n })\r\n };\r\n _proto2._getLastGroupRow = function(groupIndex) {\r\n var group = this.groupedDataMap[groupIndex];\r\n var lastIndex = group.length - 1;\r\n return group[lastIndex]\r\n };\r\n _proto2.getLasGroupCellPosition = function(groupIndex) {\r\n var groupRow = this._getLastGroupRow(groupIndex);\r\n return groupRow[0].position\r\n };\r\n _proto2.getLasGroupCellIndex = function(groupIndex) {\r\n var group = this.groupedDataMap[groupIndex];\r\n return group.length - 1\r\n };\r\n _proto2.getRowCountInGroup = function(groupIndex) {\r\n var groupRow = this._getLastGroupRow(groupIndex);\r\n var cellAmount = groupRow.length;\r\n var lastCellData = groupRow[cellAmount - 1].cellData;\r\n var lastCellIndex = lastCellData.index;\r\n return (lastCellIndex + 1) / groupRow.length\r\n };\r\n _proto2.getGroupData = function(groupIndex) {\r\n var groupedData = this.viewData.groupedData;\r\n return groupedData.filter(function(item) {\r\n return item.groupIndex === groupIndex\r\n })[0]\r\n };\r\n _proto2.isGroupIntersectDateInterval = function(groupIndex, startDate, endDate) {\r\n var groupStartDate = this.getGroupStartDate(groupIndex);\r\n var groupEndDate = this.getGroupEndDate(groupIndex);\r\n return startDate < groupEndDate && endDate > groupStartDate\r\n };\r\n _proto2.findGlobalCellPosition = function(date) {\r\n var groupIndex = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\r\n var allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n var completeViewDataMap = this.completeViewDataMap,\r\n workspace = this._workspace;\r\n var showAllDayPanel = workspace._isShowAllDayPanel();\r\n var isVerticalGroupOrientation = workspace._isVerticalGroupedWorkSpace();\r\n for (var rowIndex = 0; rowIndex < completeViewDataMap.length; rowIndex += 1) {\r\n var currentRow = completeViewDataMap[rowIndex];\r\n for (var columnIndex = 0; columnIndex < currentRow.length; columnIndex += 1) {\r\n var cellData = currentRow[columnIndex];\r\n var currentStartDate = cellData.startDate,\r\n currentEndDate = cellData.endDate,\r\n currentGroupIndex = cellData.groupIndex,\r\n currentAllDay = cellData.allDay;\r\n if (groupIndex === currentGroupIndex && allDay === currentAllDay && this._compareDatesAndAllDay(date, currentStartDate, currentEndDate, allDay)) {\r\n return {\r\n position: {\r\n columnIndex: columnIndex,\r\n rowIndex: showAllDayPanel && !isVerticalGroupOrientation ? rowIndex - 1 : rowIndex\r\n },\r\n cellData: cellData\r\n }\r\n }\r\n }\r\n }\r\n };\r\n _proto2._compareDatesAndAllDay = function(date, cellStartDate, cellEndDate, allDay) {\r\n var time = date.getTime();\r\n var trimmedTime = _date.default.trimTime(date).getTime();\r\n var cellStartTime = cellStartDate.getTime();\r\n var cellEndTime = cellEndDate.getTime();\r\n return !allDay && time >= cellStartTime && time < cellEndTime || allDay && trimmedTime === cellStartTime\r\n };\r\n _createClass(ViewDataProvider, [{\r\n key: \"viewDataGenerator\",\r\n get: function() {\r\n if (!this._viewDataGenerator) {\r\n this._viewDataGenerator = new ViewDataGenerator(this._workspace)\r\n }\r\n return this._viewDataGenerator\r\n }\r\n }, {\r\n key: \"completeViewDataMap\",\r\n get: function() {\r\n return this._completeViewDataMap\r\n },\r\n set: function(value) {\r\n this._completeViewDataMap = value\r\n }\r\n }, {\r\n key: \"completeGroupedViewDataMap\",\r\n get: function() {\r\n return this._completeGroupedViewDataMap\r\n },\r\n set: function(value) {\r\n this._completeGroupedViewDataMap = value\r\n }\r\n }, {\r\n key: \"viewData\",\r\n get: function() {\r\n return this._viewData\r\n },\r\n set: function(value) {\r\n this._viewData = value\r\n }\r\n }, {\r\n key: \"viewDataMap\",\r\n get: function() {\r\n return this._viewDataMap\r\n },\r\n set: function(value) {\r\n this._viewDataMap = value\r\n }\r\n }, {\r\n key: \"groupedDataMap\",\r\n get: function() {\r\n return this._groupedDataMap\r\n },\r\n set: function(value) {\r\n this._groupedDataMap = value\r\n }\r\n }]);\r\n return ViewDataProvider\r\n}();\r\nexports.default = ViewDataProvider;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/cell.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\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.AllDayPanelCell = AllDayPanelCell;\r\nexports.viewFunction = void 0;\r\nvar _cell = require(\"../cell\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\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 _objectWithoutProperties(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = _objectWithoutPropertiesLoose(source, excluded);\r\n var key, i;\r\n if (Object.getOwnPropertySymbols) {\r\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n key = sourceSymbolKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = {};\r\n var sourceKeys = Object.keys(source);\r\n var key, i;\r\n for (i = 0; i < sourceKeys.length; i++) {\r\n key = sourceKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n return target\r\n}\r\n\r\nfunction _extends() {\r\n _extends = Object.assign || function(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = arguments[i];\r\n for (var key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n target[key] = source[key]\r\n }\r\n }\r\n }\r\n return target\r\n };\r\n return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n return Preact.h(_cell.DateTableCellBase, _extends({}, viewModel.restAttributes, {\r\n className: \"dx-scheduler-all-day-table-cell \".concat(viewModel.props.className),\r\n startDate: viewModel.props.startDate,\r\n endDate: viewModel.props.endDate,\r\n groups: viewModel.props.groups,\r\n groupIndex: viewModel.props.groupIndex,\r\n allDay: true,\r\n isFirstGroupCell: viewModel.props.isFirstGroupCell,\r\n isLastGroupCell: viewModel.props.isLastGroupCell,\r\n index: viewModel.props.index,\r\n dataCellTemplate: viewModel.props.dataCellTemplate\r\n }))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar getTemplate = function(TemplateProp) {\r\n return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n return Preact.h(TemplateProp, _extends({}, props))\r\n } : TemplateProp)\r\n};\r\n\r\nfunction AllDayPanelCell(props) {\r\n var __restAttributes = (0, _hooks.useCallback)(function() {\r\n var restProps = (props.allDay, props.children, props.className, props.contentTemplate, props.contentTemplateProps, props.dataCellTemplate, props.endDate, props.groupIndex, props.groups, props.index, props.isFirstGroupCell, props.isLastGroupCell, props.startDate, props.text, _objectWithoutProperties(props, [\"allDay\", \"children\", \"className\", \"contentTemplate\", \"contentTemplateProps\", \"dataCellTemplate\", \"endDate\", \"groupIndex\", \"groups\", \"index\", \"isFirstGroupCell\", \"isLastGroupCell\", \"startDate\", \"text\"]));\r\n return restProps\r\n }, [props]);\r\n return viewFunction({\r\n props: _objectSpread(_objectSpread({}, props), {}, {\r\n dataCellTemplate: getTemplate(props.dataCellTemplate),\r\n contentTemplate: getTemplate(props.contentTemplate)\r\n }),\r\n restAttributes: __restAttributes()\r\n })\r\n}\r\nAllDayPanelCell.defaultProps = _objectSpread({}, _cell.DateTableCellBaseProps);\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/day/date_table/layout.j.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 _component = _interopRequireDefault(require(\"../../../../../preact_wrapper/component\"));\r\nvar _layout = require(\"./layout\");\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\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 DayDateTableLayout = function(_BaseComponent) {\r\n _inheritsLoose(DayDateTableLayout, _BaseComponent);\r\n\r\n function DayDateTableLayout() {\r\n return _BaseComponent.apply(this, arguments) || this\r\n }\r\n var _proto = DayDateTableLayout.prototype;\r\n _proto.getProps = function() {\r\n var props = _BaseComponent.prototype.getProps.call(this);\r\n props.dataCellTemplate = this._createTemplateComponent(props, props.dataCellTemplate);\r\n return props\r\n };\r\n _createClass(DayDateTableLayout, [{\r\n key: \"_propsInfo\",\r\n get: function() {\r\n return {\r\n twoWay: [],\r\n allowNull: [],\r\n elements: []\r\n }\r\n }\r\n }, {\r\n key: \"_viewComponent\",\r\n get: function() {\r\n return _layout.DayDateTableLayout\r\n }\r\n }]);\r\n return DayDateTableLayout\r\n}(_component.default);\r\nexports.default = DayDateTableLayout;\r\n(0, _component_registrator.default)(\"dxDayDateTableLayout\", DayDateTableLayout);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space.grouped.strategy.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar LAST_GROUP_CELL_CLASS = \"dx-scheduler-last-group-cell\";\r\nvar FIRST_GROUP_CELL_CLASS = \"dx-scheduler-first-group-cell\";\r\nvar GroupedStrategy = function() {\r\n function GroupedStrategy(workSpace) {\r\n this._workSpace = workSpace\r\n }\r\n var _proto = GroupedStrategy.prototype;\r\n _proto.getLastGroupCellClass = function() {\r\n return LAST_GROUP_CELL_CLASS\r\n };\r\n _proto.getFirstGroupCellClass = function() {\r\n return FIRST_GROUP_CELL_CLASS\r\n };\r\n _proto._getOffsetByAllDayPanel = function() {\r\n return 0\r\n };\r\n _proto._getGroupTop = function() {\r\n return 0\r\n };\r\n return GroupedStrategy\r\n}();\r\nvar _default = GroupedStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","import { ItiBaseDto } from '@/iti-core-vue';\nimport { Rol } from './rol';\nimport { User } from './user';\n\n\nexport class CollaborativeAreaMember extends ItiBaseDto {\n public roleId !: number;\n // public role !: Rol;\n public roleInAmbit !: Rol;\n public userId !: number;\n public user !: User;\n public ambitId !: number; \n}","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space_month.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiSchedulerWork_space = _interopRequireDefault(require(\"./ui.scheduler.work_space.indicator\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _date2 = _interopRequireDefault(require(\"../../../localization/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar MONTH_CLASS = \"dx-scheduler-work-space-month\";\r\nvar DATE_TABLE_CURRENT_DATE_CLASS = \"dx-scheduler-date-table-current-date\";\r\nvar DATE_TABLE_FIRST_OF_MONTH_CLASS = \"dx-scheduler-date-table-first-of-month\";\r\nvar DATE_TABLE_OTHER_MONTH_DATE_CLASS = \"dx-scheduler-date-table-other-month\";\r\nvar DATE_TABLE_SCROLLABLE_FIXED_CLASS = \"dx-scheduler-scrollable-fixed-content\";\r\nvar DAYS_IN_WEEK = 7;\r\nvar DAY_IN_MILLISECONDS = 864e5;\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar SchedulerWorkSpaceMonth = function(_SchedulerWorkSpace) {\r\n _inheritsLoose(SchedulerWorkSpaceMonth, _SchedulerWorkSpace);\r\n\r\n function SchedulerWorkSpaceMonth() {\r\n return _SchedulerWorkSpace.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerWorkSpaceMonth.prototype;\r\n _proto._toggleFixedScrollableClass = function() {\r\n this._dateTableScrollable.$content().toggleClass(DATE_TABLE_SCROLLABLE_FIXED_CLASS, !this._isWorkSpaceWithCount() && !this._isVerticalGroupedWorkSpace())\r\n };\r\n _proto._getElementClass = function() {\r\n return MONTH_CLASS\r\n };\r\n _proto._getRowCount = function() {\r\n return this._isWorkSpaceWithCount() ? 4 * this.option(\"intervalCount\") + 2 : 6\r\n };\r\n _proto._getCellCount = function() {\r\n return DAYS_IN_WEEK\r\n };\r\n _proto._getDateByIndex = function(headerIndex) {\r\n var resultDate = new Date(this._firstViewDate);\r\n resultDate.setDate(this._firstViewDate.getDate() + headerIndex);\r\n return resultDate\r\n };\r\n _proto._getFormat = function() {\r\n return this._formatWeekday\r\n };\r\n _proto._calculateCellIndex = function(rowIndex, cellIndex) {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n rowIndex %= this._getRowCount()\r\n } else {\r\n cellIndex %= this._getCellCount()\r\n }\r\n return rowIndex * this._getCellCount() + cellIndex\r\n };\r\n _proto._getInterval = function() {\r\n return DAY_IN_MILLISECONDS\r\n };\r\n _proto._getIntervalBetween = function(currentDate) {\r\n var firstViewDate = this.getStartViewDate();\r\n var timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate);\r\n return currentDate.getTime() - (firstViewDate.getTime() - 36e5 * this.option(\"startDayHour\")) - timeZoneOffset\r\n };\r\n _proto._getDateByCellIndexes = function(rowIndex, cellIndex) {\r\n var date = _SchedulerWorkSpace.prototype._getDateByCellIndexes.call(this, rowIndex, cellIndex);\r\n this._setStartDayHour(date);\r\n return date\r\n };\r\n _proto.getCellWidth = function() {\r\n var _this = this;\r\n return this.cache.get(\"cellWidth\", function() {\r\n var DAYS_IN_WEEK = 7;\r\n var averageWidth = 0;\r\n _this._getCells().slice(0, DAYS_IN_WEEK).each(function(index, element) {\r\n return averageWidth += (0, _position.getBoundingRect)(element).width\r\n });\r\n return averageWidth / DAYS_IN_WEEK\r\n })\r\n };\r\n _proto._calculateHiddenInterval = function() {\r\n return 0\r\n };\r\n _proto._insertAllDayRowsIntoDateTable = function() {\r\n return false\r\n };\r\n _proto._getCellCoordinatesByIndex = function(index) {\r\n var rowIndex = Math.floor(index / this._getCellCount());\r\n var cellIndex = index - this._getCellCount() * rowIndex;\r\n return {\r\n rowIndex: rowIndex,\r\n cellIndex: cellIndex\r\n }\r\n };\r\n _proto._createWorkSpaceElements = function() {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n this._createWorkSpaceScrollableElements()\r\n } else {\r\n _SchedulerWorkSpace.prototype._createWorkSpaceElements.call(this)\r\n }\r\n };\r\n _proto._needCreateCrossScrolling = function() {\r\n return this.option(\"crossScrollingEnabled\") || this._isVerticalGroupedWorkSpace()\r\n };\r\n _proto._renderTimePanel = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._renderAllDayPanel = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._getTableAllDay = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._toggleAllDayVisibility = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._changeAllDayVisibility = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._setFirstViewDate = function() {\r\n var firstMonthDate = _date.default.getFirstMonthDate(this._getViewStartByOptions());\r\n var firstDayOfWeek = this._getCalculatedFirstDayOfWeek();\r\n this._firstViewDate = _date.default.getFirstWeekDate(firstMonthDate, firstDayOfWeek);\r\n this._setStartDayHour(this._firstViewDate);\r\n var date = this._getViewStartByOptions();\r\n this._minVisibleDate = new Date(date.setDate(1));\r\n this._maxVisibleDate = new Date(new Date(date.setMonth(date.getMonth() + this.option(\"intervalCount\"))).setDate(0))\r\n };\r\n _proto._getViewStartByOptions = function() {\r\n if (!this.option(\"startDate\")) {\r\n return new Date(this.option(\"currentDate\").getTime())\r\n } else {\r\n var startDate = this._getStartViewDate();\r\n var currentDate = this.option(\"currentDate\");\r\n var diff = startDate.getTime() <= currentDate.getTime() ? 1 : -1;\r\n var endDate = new Date(new Date(this._getStartViewDate().setMonth(this._getStartViewDate().getMonth() + diff * this.option(\"intervalCount\"))));\r\n while (!this._dateInRange(currentDate, startDate, endDate, diff)) {\r\n startDate = new Date(endDate);\r\n if (diff > 0) {\r\n startDate.setDate(1)\r\n }\r\n endDate = new Date(new Date(endDate.setMonth(endDate.getMonth() + diff * this.option(\"intervalCount\"))))\r\n }\r\n return diff > 0 ? startDate : endDate\r\n }\r\n };\r\n _proto._getStartViewDate = function() {\r\n var firstMonthDate = _date.default.getFirstMonthDate(this.option(\"startDate\"));\r\n return firstMonthDate\r\n };\r\n _proto._renderTableBody = function(options) {\r\n options.getCellText = this._getCellText.bind(this);\r\n _SchedulerWorkSpace.prototype._renderTableBody.call(this, options)\r\n };\r\n _proto._getCellText = function(rowIndex, cellIndex) {\r\n if (this.isGroupedByDate()) {\r\n cellIndex = Math.floor(cellIndex / this._getGroupCount())\r\n } else {\r\n cellIndex %= this._getCellCount()\r\n }\r\n var date = this._getDate(rowIndex, cellIndex);\r\n if (this._isWorkSpaceWithCount() && this._isFirstDayOfMonth(date)) {\r\n return this._formatMonthAndDay(date)\r\n }\r\n return _date2.default.format(date, \"dd\")\r\n };\r\n _proto._formatMonthAndDay = function(date) {\r\n var monthName = _date2.default.getMonthNames(\"abbreviated\")[date.getMonth()];\r\n return [monthName, _date2.default.format(date, \"day\")].join(\" \")\r\n };\r\n _proto._getDate = function(week, day) {\r\n var result = new Date(this._firstViewDate);\r\n var lastRowInDay = this._getRowCount();\r\n result.setDate(result.getDate() + week % lastRowInDay * DAYS_IN_WEEK + day);\r\n return result\r\n };\r\n _proto._updateIndex = function(index) {\r\n return index\r\n };\r\n _proto._prepareCellData = function(rowIndex, cellIndex, cell) {\r\n var data = _SchedulerWorkSpace.prototype._prepareCellData.call(this, rowIndex, cellIndex, cell);\r\n var $cell = (0, _renderer.default)(cell);\r\n $cell.toggleClass(DATE_TABLE_CURRENT_DATE_CLASS, this._isCurrentDate(data.startDate)).toggleClass(DATE_TABLE_FIRST_OF_MONTH_CLASS, this._isFirstDayOfMonth(data.startDate)).toggleClass(DATE_TABLE_OTHER_MONTH_DATE_CLASS, this._isOtherMonth(data.startDate));\r\n return data\r\n };\r\n _proto._isCurrentDate = function(cellDate) {\r\n return _date.default.sameDate(cellDate, this._getToday())\r\n };\r\n _proto._isFirstDayOfMonth = function(cellDate) {\r\n return this._isWorkSpaceWithCount() && 1 === cellDate.getDate()\r\n };\r\n _proto._isOtherMonth = function(cellDate) {\r\n return !_date.default.dateInRange(cellDate, this._minVisibleDate, this._maxVisibleDate, \"date\")\r\n };\r\n _proto.isIndicationAvailable = function() {\r\n return false\r\n };\r\n _proto.getCellDuration = function() {\r\n return 36e5 * this._calculateDayDuration()\r\n };\r\n _proto.getIntervalDuration = function() {\r\n return toMs(\"day\")\r\n };\r\n _proto.getTimePanelWidth = function() {\r\n return 0\r\n };\r\n _proto.getPositionShift = function(timeShift) {\r\n return {\r\n cellPosition: timeShift * this.getCellWidth(),\r\n top: 0,\r\n left: 0\r\n }\r\n };\r\n _proto.getCellCountToLastViewDate = function(date) {\r\n var firstDateTime = date.getTime();\r\n var lastDateTime = this.getEndViewDate().getTime();\r\n var dayDurationInMs = this.getCellDuration();\r\n return Math.ceil((lastDateTime - firstDateTime) / dayDurationInMs)\r\n };\r\n _proto.supportAllDayRow = function() {\r\n return false\r\n };\r\n _proto.keepOriginalHours = function() {\r\n return true\r\n };\r\n _proto.calculateEndDate = function(startDate) {\r\n var startDateCopy = new Date(startDate);\r\n return new Date(startDateCopy.setHours(this.option(\"endDayHour\")))\r\n };\r\n _proto.getWorkSpaceLeftOffset = function() {\r\n return 0\r\n };\r\n _proto.needApplyCollectorOffset = function() {\r\n return true\r\n };\r\n _proto._getDateTableBorderOffset = function() {\r\n return this._getDateTableBorder()\r\n };\r\n _proto._getCellPositionByIndex = function(index, groupIndex) {\r\n var position = _SchedulerWorkSpace.prototype._getCellPositionByIndex.call(this, index, groupIndex);\r\n var rowIndex = this._getCellCoordinatesByIndex(index).rowIndex;\r\n var calculatedTopOffset;\r\n if (!this._isVerticalGroupedWorkSpace()) {\r\n calculatedTopOffset = this.getCellHeight() * rowIndex\r\n } else {\r\n calculatedTopOffset = this.getCellHeight() * (rowIndex + groupIndex * this._getRowCount())\r\n }\r\n if (calculatedTopOffset) {\r\n position.top = calculatedTopOffset\r\n }\r\n return position\r\n };\r\n _proto._getHeaderDate = function() {\r\n return this._getViewStartByOptions()\r\n };\r\n _proto._supportCompactDropDownAppointments = function() {\r\n return false\r\n };\r\n _proto.scrollToTime = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._getRowCountWithAllDayRows = function() {\r\n return this._getRowCount()\r\n };\r\n return SchedulerWorkSpaceMonth\r\n}(_uiSchedulerWork_space.default);\r\n(0, _component_registrator.default)(\"dxSchedulerWorkSpaceMonth\", SchedulerWorkSpaceMonth);\r\nvar _default = SchedulerWorkSpaceMonth;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/utils/combine_classes.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.combineClasses = combineClasses;\r\n\r\nfunction combineClasses(classesMap) {\r\n return Object.keys(classesMap).filter(function(p) {\r\n return classesMap[p]\r\n }).join(\" \")\r\n}\r\n","/**\r\n * DevExtreme (ui/text_box/utils.scroll.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.prepareScrollData = exports.allowScroll = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _index = require(\"../../events/utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar allowScroll = function(container, delta, shiftKey) {\r\n var $container = (0, _renderer.default)(container);\r\n var scrollTopPos = shiftKey ? $container.scrollLeft() : $container.scrollTop();\r\n var prop = shiftKey ? \"Width\" : \"Height\";\r\n var scrollBottomPos = $container.prop(\"scroll\".concat(prop)) - $container.prop(\"client\".concat(prop)) - scrollTopPos;\r\n if (0 === scrollTopPos && 0 === scrollBottomPos) {\r\n return false\r\n }\r\n var isScrollFromTop = 0 === scrollTopPos && delta >= 0;\r\n var isScrollFromBottom = 0 === scrollBottomPos && delta <= 0;\r\n var isScrollFromMiddle = scrollTopPos > 0 && scrollBottomPos > 0;\r\n if (isScrollFromTop || isScrollFromBottom || isScrollFromMiddle) {\r\n return true\r\n }\r\n};\r\nexports.allowScroll = allowScroll;\r\nvar prepareScrollData = function(container, validateTarget) {\r\n var $container = (0, _renderer.default)(container);\r\n var isCorrectTarget = function(eventTarget) {\r\n return validateTarget ? (0, _renderer.default)(eventTarget).is(container) : true\r\n };\r\n return {\r\n validate: function(e) {\r\n if ((0, _index.isDxMouseWheelEvent)(e) && isCorrectTarget(e.target)) {\r\n if (allowScroll($container, -e.delta, e.shiftKey)) {\r\n e._needSkipEvent = true;\r\n return true\r\n }\r\n return false\r\n }\r\n }\r\n }\r\n};\r\nexports.prepareScrollData = prepareScrollData;\r\n","var $ = require('../internals/export');\nvar parseInt = require('../internals/number-parse-int');\n\n// `Number.parseInt` method\n// https://tc39.es/ecma262/#sec-number.parseint\n// eslint-disable-next-line es/no-number-parseint -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseInt != parseInt }, {\n parseInt: parseInt\n});\n","/**\r\n * DevExtreme (ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.horizontal_month_line.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 _uiSchedulerAppointmentsStrategy = _interopRequireDefault(require(\"./ui.scheduler.appointments.strategy.horizontal\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _query = _interopRequireDefault(require(\"../../../data/query\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar HOURS_IN_DAY = 24;\r\nvar MINUTES_IN_HOUR = 60;\r\nvar MILLISECONDS_IN_MINUTE = 6e4;\r\nvar ZERO_APPOINTMENT_DURATION_IN_DAYS = 1;\r\nvar HorizontalMonthLineRenderingStrategy = function(_HorizontalAppointmen) {\r\n _inheritsLoose(HorizontalMonthLineRenderingStrategy, _HorizontalAppointmen);\r\n\r\n function HorizontalMonthLineRenderingStrategy() {\r\n return _HorizontalAppointmen.apply(this, arguments) || this\r\n }\r\n var _proto = HorizontalMonthLineRenderingStrategy.prototype;\r\n _proto.calculateAppointmentWidth = function(appointment, position) {\r\n var startDate = _date.default.trimTime(position.info.appointment.startDate);\r\n var endDate = this.normalizeEndDateByViewEnd(appointment, position.info.appointment.endDate);\r\n var cellWidth = this.getDefaultCellWidth() || this.getAppointmentMinSize();\r\n var duration = this._getDurationInDays(startDate, endDate);\r\n var width = this.cropAppointmentWidth(Math.ceil(duration) * cellWidth, cellWidth);\r\n return width\r\n };\r\n _proto._getDurationInDays = function(startDate, endDate) {\r\n var adjustedDuration = this._adjustDurationByDaylightDiff(endDate.getTime() - startDate.getTime(), startDate, endDate);\r\n return adjustedDuration / _date.default.dateToMilliseconds(\"day\") || ZERO_APPOINTMENT_DURATION_IN_DAYS\r\n };\r\n _proto.getDeltaTime = function(args, initialSize) {\r\n return HOURS_IN_DAY * MINUTES_IN_HOUR * MILLISECONDS_IN_MINUTE * this._getDeltaWidth(args, initialSize)\r\n };\r\n _proto.isAllDay = function() {\r\n return false\r\n };\r\n _proto.createTaskPositionMap = function(items, skipSorting) {\r\n if (!skipSorting) {\r\n this.instance.getAppointmentsInstance()._sortAppointmentsByStartDate(items)\r\n }\r\n return _HorizontalAppointmen.prototype.createTaskPositionMap.call(this, items)\r\n };\r\n _proto._getSortedPositions = function(map, skipSorting) {\r\n var result = _HorizontalAppointmen.prototype._getSortedPositions.call(this, map);\r\n if (!skipSorting) {\r\n result = (0, _query.default)(result).sortBy(\"top\").thenBy(\"left\").thenBy(\"cellPosition\").thenBy(\"i\").toArray()\r\n }\r\n return result\r\n };\r\n _proto.needCorrectAppointmentDates = function() {\r\n return false\r\n };\r\n return HorizontalMonthLineRenderingStrategy\r\n}(_uiSchedulerAppointmentsStrategy.default);\r\nvar _default = HorizontalMonthLineRenderingStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/rendering_strategies/ui.scheduler.appointmentsPositioning.strategy.base.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar COLLECTOR_DEFAULT_WIDTH = 24;\r\nvar COLLECTOR_DEFAULT_OFFSET = 3;\r\nvar COMPACT_THEME_APPOINTMENT_DEFAULT_OFFSET = 22;\r\nvar APPOINTMENT_MIN_COUNT = 1;\r\nvar APPOINTMENT_DEFAULT_WIDTH = 40;\r\nvar COLLECTOR_WIDTH_IN_PERCENTS = 75;\r\nvar APPOINTMENT_INCREASED_WIDTH = 50;\r\nvar AppointmentPositioningStrategy = function() {\r\n function AppointmentPositioningStrategy(renderingStrategy) {\r\n this._renderingStrategy = renderingStrategy\r\n }\r\n var _proto = AppointmentPositioningStrategy.prototype;\r\n _proto.getRenderingStrategy = function() {\r\n return this._renderingStrategy\r\n };\r\n _proto.getDropDownAppointmentWidth = function(intervalCount, isAllDay) {\r\n if (isAllDay || !(0, _type.isDefined)(isAllDay)) {\r\n return COLLECTOR_WIDTH_IN_PERCENTS * this.getRenderingStrategy().getDefaultCellWidth() / 100\r\n } else {\r\n return COLLECTOR_DEFAULT_WIDTH\r\n }\r\n };\r\n _proto.getCollectorTopOffset = function() {\r\n return COLLECTOR_DEFAULT_OFFSET\r\n };\r\n _proto.getCollectorLeftOffset = function() {\r\n return COLLECTOR_DEFAULT_OFFSET\r\n };\r\n _proto.getAppointmentDefaultOffset = function() {\r\n if (this.getRenderingStrategy()._isCompactTheme()) {\r\n return COMPACT_THEME_APPOINTMENT_DEFAULT_OFFSET\r\n }\r\n return this.getRenderingStrategy().instance.option(\"_appointmentOffset\")\r\n };\r\n _proto.getDynamicAppointmentCountPerCell = function() {\r\n var renderingStrategy = this.getRenderingStrategy();\r\n var cellHeight = renderingStrategy.instance.fire(\"getCellHeight\");\r\n var allDayCount = Math.floor((cellHeight - renderingStrategy._getAppointmentDefaultOffset()) / renderingStrategy._getAppointmentDefaultHeight()) || this._getAppointmentMinCount();\r\n if (renderingStrategy.hasAllDayAppointments()) {\r\n return {\r\n allDay: \"vertical\" === renderingStrategy.instance._groupOrientation ? allDayCount : renderingStrategy.instance.option(\"_appointmentCountPerCell\"),\r\n simple: this._calculateDynamicAppointmentCountPerCell() || this._getAppointmentMinCount()\r\n }\r\n } else {\r\n return allDayCount\r\n }\r\n };\r\n _proto.getDropDownAppointmentHeight = function() {\r\n return\r\n };\r\n _proto._getAppointmentMinCount = function() {\r\n return APPOINTMENT_MIN_COUNT\r\n };\r\n _proto._calculateDynamicAppointmentCountPerCell = function() {\r\n return Math.floor(this.getRenderingStrategy()._getAppointmentMaxWidth() / APPOINTMENT_INCREASED_WIDTH)\r\n };\r\n _proto._getAppointmentDefaultWidth = function() {\r\n return APPOINTMENT_DEFAULT_WIDTH\r\n };\r\n return AppointmentPositioningStrategy\r\n}();\r\nvar _default = AppointmentPositioningStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","// =============================================================================\n// Helper functions\n// =============================================================================\nimport { ALL_WEEKDAYS } from './weekday';\nexport var isPresent = function (value) {\n return value !== null && value !== undefined;\n};\nexport var isNumber = function (value) {\n return typeof value === 'number';\n};\nexport var isWeekdayStr = function (value) {\n return ALL_WEEKDAYS.indexOf(value) >= 0;\n};\nexport var isArray = Array.isArray;\n/**\n * Simplified version of python's range()\n */\nexport var range = function (start, end) {\n if (end === void 0) { end = start; }\n if (arguments.length === 1) {\n end = start;\n start = 0;\n }\n var rang = [];\n for (var i = start; i < end; i++)\n rang.push(i);\n return rang;\n};\nexport var clone = function (array) {\n return [].concat(array);\n};\nexport var repeat = function (value, times) {\n var i = 0;\n var array = [];\n if (isArray(value)) {\n for (; i < times; i++)\n array[i] = [].concat(value);\n }\n else {\n for (; i < times; i++)\n array[i] = value;\n }\n return array;\n};\nexport var toArray = function (item) {\n if (isArray(item)) {\n return item;\n }\n return [item];\n};\nexport function padStart(item, targetLength, padString) {\n if (padString === void 0) { padString = ' '; }\n var str = String(item);\n targetLength = targetLength >> 0;\n if (str.length > targetLength) {\n return String(str);\n }\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += repeat(padString, targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + String(str);\n}\n/**\n * Python like split\n */\nexport var split = function (str, sep, num) {\n var splits = str.split(sep);\n return num\n ? splits.slice(0, num).concat([splits.slice(num).join(sep)])\n : splits;\n};\n/**\n * closure/goog/math/math.js:modulo\n * Copyright 2006 The Closure Library Authors.\n * The % operator in JavaScript returns the remainder of a / b, but differs from\n * some other languages in that the result will have the same sign as the\n * dividend. For example, -1 % 8 == -1, whereas in some other languages\n * (such as Python) the result would be 7. This function emulates the more\n * correct modulo behavior, which is useful for certain applications such as\n * calculating an offset index in a circular list.\n *\n * @param {number} a The dividend.\n * @param {number} b The divisor.\n * @return {number} a % b where the result is between 0 and b (either 0 <= x < b\n * or b < x <= 0, depending on the sign of b).\n */\nexport var pymod = function (a, b) {\n var r = a % b;\n // If r and b differ in sign, add b to wrap the result to the correct sign.\n return r * b < 0 ? r + b : r;\n};\n/**\n * @see: \n */\nexport var divmod = function (a, b) {\n return { div: Math.floor(a / b), mod: pymod(a, b) };\n};\nexport var empty = function (obj) {\n return !isPresent(obj) || obj.length === 0;\n};\n/**\n * Python-like boolean\n * @return {Boolean} value of an object/primitive, taking into account\n * the fact that in Python an empty list's/tuple's\n * boolean value is False, whereas in JS it's true\n */\nexport var notEmpty = function (obj) {\n return !empty(obj);\n};\n/**\n * Return true if a value is in an array\n */\nexport var includes = function (arr, val) {\n return notEmpty(arr) && arr.indexOf(val) !== -1;\n};\n//# sourceMappingURL=helpers.js.map","/**\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/appointmentDragBehavior.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 _draggable = _interopRequireDefault(require(\"../draggable\"));\r\nvar _extend = require(\"../../core/utils/extend\");\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 APPOINTMENT_ITEM_CLASS = \"dx-scheduler-appointment\";\r\nvar AppointmentDragBehavior = function() {\r\n function AppointmentDragBehavior(scheduler) {\r\n this.scheduler = scheduler;\r\n this.appointments = scheduler._appointments;\r\n this.initialPosition = {\r\n left: 0,\r\n top: 0\r\n };\r\n this.appointmentInfo = null\r\n }\r\n var _proto = AppointmentDragBehavior.prototype;\r\n _proto.isAllDay = function(appointment) {\r\n return appointment.data(\"dxAppointmentSettings\").allDay\r\n };\r\n _proto.onDragStart = function(e) {\r\n var itemSettings = e.itemSettings,\r\n itemData = e.itemData,\r\n initialPosition = e.initialPosition;\r\n this.initialPosition = initialPosition;\r\n this.appointmentInfo = {\r\n appointment: itemData,\r\n settings: itemSettings\r\n };\r\n this.appointments.notifyObserver(\"hideAppointmentTooltip\")\r\n };\r\n _proto.onDragMove = function(e) {\r\n if (e.fromComponent !== e.toComponent) {\r\n this.appointments.notifyObserver(\"removeDroppableCellClass\")\r\n }\r\n };\r\n _proto.getAppointmentElement = function(e) {\r\n var itemElement = e.event.data && e.event.data.itemElement || e.itemElement;\r\n return (0, _renderer.default)(itemElement)\r\n };\r\n _proto.onDragEnd = function(e) {\r\n var element = this.getAppointmentElement(e);\r\n var rawAppointment = this.appointments._getItemData(element);\r\n var container = this.appointments._getAppointmentContainer(this.isAllDay(element));\r\n container.append(element);\r\n this.appointments.notifyObserver(\"updateAppointmentAfterDrag\", {\r\n event: e,\r\n element: element,\r\n rawAppointment: rawAppointment,\r\n coordinates: this.initialPosition\r\n })\r\n };\r\n _proto.getItemData = function(appointmentElement) {\r\n var dataFromTooltip = (0, _renderer.default)(appointmentElement).data(_constants.LIST_ITEM_DATA_KEY);\r\n var itemDataFromTooltip = null === dataFromTooltip || void 0 === dataFromTooltip ? void 0 : dataFromTooltip.appointment;\r\n var itemDataFromGrid = this.appointments._getItemData(appointmentElement);\r\n return itemDataFromTooltip || itemDataFromGrid\r\n };\r\n _proto.getItemSettings = function(appointment) {\r\n var itemData = (0, _renderer.default)(appointment).data(_constants.LIST_ITEM_DATA_KEY);\r\n return itemData && itemData.settings || []\r\n };\r\n _proto.createDragStartHandler = function(options, appointmentDragging) {\r\n var _this = this;\r\n return function(e) {\r\n e.itemData = _this.getItemData(e.itemElement);\r\n e.itemSettings = _this.getItemSettings(e.itemElement);\r\n appointmentDragging.onDragStart && appointmentDragging.onDragStart(e);\r\n if (!e.cancel) {\r\n options.onDragStart(e)\r\n }\r\n }\r\n };\r\n _proto.createDragMoveHandler = function(options, appointmentDragging) {\r\n return function(e) {\r\n appointmentDragging.onDragMove && appointmentDragging.onDragMove(e);\r\n if (!e.cancel) {\r\n options.onDragMove(e)\r\n }\r\n }\r\n };\r\n _proto.createDragEndHandler = function(options, appointmentDragging) {\r\n var _this2 = this;\r\n return function(e) {\r\n _this2.appointmentInfo = null;\r\n appointmentDragging.onDragEnd && appointmentDragging.onDragEnd(e);\r\n if (!e.cancel) {\r\n options.onDragEnd(e);\r\n if (e.fromComponent !== e.toComponent) {\r\n appointmentDragging.onRemove && appointmentDragging.onRemove(e)\r\n }\r\n }\r\n }\r\n };\r\n _proto.createDropHandler = function(appointmentDragging) {\r\n var _this3 = this;\r\n return function(e) {\r\n var updatedData = _this3.appointments.invoke(\"getUpdatedData\", e.itemData);\r\n e.itemData = (0, _extend.extend)({}, e.itemData, updatedData);\r\n if (e.fromComponent !== e.toComponent) {\r\n appointmentDragging.onAdd && appointmentDragging.onAdd(e)\r\n }\r\n }\r\n };\r\n _proto.addTo = function(container, config) {\r\n var appointmentDragging = this.scheduler.option(\"appointmentDragging\") || {};\r\n var options = (0, _extend.extend)({\r\n component: this.scheduler,\r\n contentTemplate: null,\r\n filter: \".\".concat(APPOINTMENT_ITEM_CLASS),\r\n immediate: false,\r\n onDragStart: this.onDragStart.bind(this),\r\n onDragMove: this.onDragMove.bind(this),\r\n onDragEnd: this.onDragEnd.bind(this)\r\n }, config);\r\n this.appointments._createComponent(container, _draggable.default, (0, _extend.extend)({}, options, appointmentDragging, {\r\n onDragStart: this.createDragStartHandler(options, appointmentDragging),\r\n onDragMove: this.createDragMoveHandler(options, appointmentDragging),\r\n onDragEnd: this.createDragEndHandler(options, appointmentDragging),\r\n onDrop: this.createDropHandler(appointmentDragging)\r\n }))\r\n };\r\n _proto.updateDragSource = function(appointment, settings) {\r\n var appointmentInfo = this.appointmentInfo;\r\n if (appointmentInfo || appointment) {\r\n var currentAppointment = appointment || appointmentInfo.appointment;\r\n var currentSettings = settings || appointmentInfo.settings;\r\n this.appointments._setDragSourceAppointment(currentAppointment, currentSettings)\r\n }\r\n };\r\n return AppointmentDragBehavior\r\n}();\r\nexports.default = AppointmentDragBehavior;\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 (renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/layout.j.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 _component = _interopRequireDefault(require(\"../../../../../../preact_wrapper/component\"));\r\nvar _layout = require(\"./layout\");\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\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 AllDayPanelLayout = function(_BaseComponent) {\r\n _inheritsLoose(AllDayPanelLayout, _BaseComponent);\r\n\r\n function AllDayPanelLayout() {\r\n return _BaseComponent.apply(this, arguments) || this\r\n }\r\n var _proto = AllDayPanelLayout.prototype;\r\n _proto.getProps = function() {\r\n var props = _BaseComponent.prototype.getProps.call(this);\r\n props.dataCellTemplate = this._createTemplateComponent(props, props.dataCellTemplate);\r\n return props\r\n };\r\n _createClass(AllDayPanelLayout, [{\r\n key: \"_propsInfo\",\r\n get: function() {\r\n return {\r\n twoWay: [],\r\n allowNull: [],\r\n elements: []\r\n }\r\n }\r\n }, {\r\n key: \"_viewComponent\",\r\n get: function() {\r\n return _layout.AllDayPanelLayout\r\n }\r\n }]);\r\n return AllDayPanelLayout\r\n}(_component.default);\r\nexports.default = AllDayPanelLayout;\r\n(0, _component_registrator.default)(\"dxAllDayPanelLayout\", AllDayPanelLayout);\r\nmodule.exports = exports.default;\r\n","import{options as n}from\"preact\";var t,u,r,o=0,i=[],c=n.__b,f=n.__r,e=n.diffed,a=n.__c,v=n.unmount;function m(t,r){n.__h&&n.__h(u,t,o||r),o=0;var i=u.__H||(u.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({}),i.__[t]}function l(n){return o=1,p(w,n)}function p(n,r,o){var i=m(t++,2);return i.t=n,i.__c||(i.__=[o?o(r):w(void 0,r),function(n){var t=i.t(i.__[0],n);i.__[0]!==t&&(i.__=[t,i.__[1]],i.__c.setState({}))}],i.__c=u),i.__}function y(r,o){var i=m(t++,3);!n.__s&&k(i.__H,o)&&(i.__=r,i.__H=o,u.__H.__h.push(i))}function h(r,o){var i=m(t++,4);!n.__s&&k(i.__H,o)&&(i.__=r,i.__H=o,u.__h.push(i))}function s(n){return o=5,d(function(){return{current:n}},[])}function _(n,t,u){o=6,h(function(){\"function\"==typeof n?n(t()):n&&(n.current=t())},null==u?u:u.concat(n))}function d(n,u){var r=m(t++,7);return k(r.__H,u)&&(r.__=n(),r.__H=u,r.__h=n),r.__}function A(n,t){return o=8,d(function(){return n},t)}function F(n){var r=u.context[n.__c],o=m(t++,9);return o.c=n,r?(null==o.__&&(o.__=!0,r.sub(u)),r.props.value):n.__}function T(t,u){n.useDebugValue&&n.useDebugValue(u?u(t):t)}function q(n){var r=m(t++,10),o=l();return r.__=n,u.componentDidCatch||(u.componentDidCatch=function(n){r.__&&r.__(n),o[1](n)}),[o[0],function(){o[1](void 0)}]}function x(){for(var t;t=i.shift();)if(t.__P)try{t.__H.__h.forEach(g),t.__H.__h.forEach(j),t.__H.__h=[]}catch(u){t.__H.__h=[],n.__e(u,t.__v)}}n.__b=function(n){u=null,c&&c(n)},n.__r=function(n){f&&f(n),t=0;var r=(u=n.__c).__H;r&&(r.__h.forEach(g),r.__h.forEach(j),r.__h=[])},n.diffed=function(t){e&&e(t);var o=t.__c;o&&o.__H&&o.__H.__h.length&&(1!==i.push(o)&&r===n.requestAnimationFrame||((r=n.requestAnimationFrame)||function(n){var t,u=function(){clearTimeout(r),b&&cancelAnimationFrame(t),setTimeout(n)},r=setTimeout(u,100);b&&(t=requestAnimationFrame(u))})(x)),u=null},n.__c=function(t,u){u.some(function(t){try{t.__h.forEach(g),t.__h=t.__h.filter(function(n){return!n.__||j(n)})}catch(r){u.some(function(n){n.__h&&(n.__h=[])}),u=[],n.__e(r,t.__v)}}),a&&a(t,u)},n.unmount=function(t){v&&v(t);var u,r=t.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{g(n)}catch(n){u=n}}),u&&n.__e(u,r.__v))};var b=\"function\"==typeof requestAnimationFrame;function g(n){var t=u,r=n.__c;\"function\"==typeof r&&(n.__c=void 0,r()),u=t}function j(n){var t=u;n.__c=n.__(),u=t}function k(n,t){return!n||n.length!==t.length||t.some(function(t,u){return t!==n[u]})}function w(n,t){return\"function\"==typeof t?t(n):t}export{l as useState,p as useReducer,y as useEffect,h as useLayoutEffect,s as useRef,_ as useImperativeHandle,d as useMemo,A as useCallback,F as useContext,T as useDebugValue,q as useErrorBoundary};\n//# sourceMappingURL=hooks.module.js.map\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.agenda.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../../core/dom_adapter\"));\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _element = require(\"../../../core/element\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.work_space\"));\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _date = _interopRequireDefault(require(\"../../../localization/date\"));\r\nvar _uiScheduler2 = _interopRequireDefault(require(\"../ui.scheduler.table_creator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar tableCreator = _uiScheduler2.default.tableCreator;\r\nvar AGENDA_CLASS = \"dx-scheduler-agenda\";\r\nvar AGENDA_DATE_CLASS = \"dx-scheduler-agenda-date\";\r\nvar GROUP_TABLE_CLASS = \"dx-scheduler-group-table\";\r\nvar AGENDA_GROUPED_ATTR = \"dx-group-column-count\";\r\nvar TIME_PANEL_ROW_CLASS = \"dx-scheduler-time-panel-row\";\r\nvar TIME_PANEL_CELL_CLASS = \"dx-scheduler-time-panel-cell\";\r\nvar NODATA_CONTAINER_CLASS = \"dx-scheduler-agenda-nodata\";\r\nvar LAST_ROW_CLASS = \"dx-scheduler-date-table-last-row\";\r\nvar INNER_CELL_MARGIN = 5;\r\nvar OUTER_CELL_MARGIN = 20;\r\nvar SchedulerAgenda = function(_SchedulerWorkSpace) {\r\n _inheritsLoose(SchedulerAgenda, _SchedulerWorkSpace);\r\n\r\n function SchedulerAgenda() {\r\n return _SchedulerWorkSpace.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerAgenda.prototype;\r\n _proto._init = function() {\r\n _SchedulerWorkSpace.prototype._init.call(this);\r\n this._activeStateUnit = void 0\r\n };\r\n _proto._getDefaultOptions = function() {\r\n return (0, _extend.extend)(_SchedulerWorkSpace.prototype._getDefaultOptions.call(this), {\r\n agendaDuration: 7,\r\n rowHeight: 60,\r\n noDataText: \"\"\r\n })\r\n };\r\n _proto._optionChanged = function(args) {\r\n var name = args.name;\r\n var value = args.value;\r\n switch (name) {\r\n case \"agendaDuration\":\r\n break;\r\n case \"noDataText\":\r\n case \"rowHeight\":\r\n this._recalculateAgenda(this._rows);\r\n break;\r\n case \"groups\":\r\n if (!value || !value.length) {\r\n if (this._$groupTable) {\r\n this._$groupTable.remove();\r\n this._$groupTable = null;\r\n this._detachGroupCountAttr()\r\n }\r\n } else {\r\n if (!this._$groupTable) {\r\n this._initGroupTable();\r\n this._dateTableScrollable.$content().prepend(this._$groupTable)\r\n }\r\n }\r\n _SchedulerWorkSpace.prototype._optionChanged.call(this, args);\r\n break;\r\n default:\r\n _SchedulerWorkSpace.prototype._optionChanged.call(this, args)\r\n }\r\n };\r\n _proto._renderFocusState = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._renderFocusTarget = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._cleanFocusState = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto.supportAllDayRow = function() {\r\n return false\r\n };\r\n _proto._isVerticalGroupedWorkSpace = function() {\r\n return false\r\n };\r\n _proto._getElementClass = function() {\r\n return AGENDA_CLASS\r\n };\r\n _proto._setFirstViewDate = function() {\r\n this._firstViewDate = new Date(this.option(\"currentDate\"));\r\n this._setStartDayHour(this._firstViewDate)\r\n };\r\n _proto._getRowCount = function() {\r\n return this.option(\"agendaDuration\")\r\n };\r\n _proto._getCellCount = function() {\r\n return 1\r\n };\r\n _proto._getTimePanelRowCount = function() {\r\n return this.option(\"agendaDuration\")\r\n };\r\n _proto._getDateByIndex = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._getFormat = function() {\r\n return \"d ddd\"\r\n };\r\n _proto._renderAllDayPanel = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._toggleAllDayVisibility = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._initWorkSpaceUnits = function() {\r\n this._initGroupTable();\r\n this._$timePanel = (0, _renderer.default)(\"\").addClass(this._getTimePanelClass());\r\n this._$dateTable = (0, _renderer.default)(\"
\").addClass(this._getDateTableClass())\r\n };\r\n _proto._initGroupTable = function() {\r\n var groups = this.option(\"groups\");\r\n if (groups && groups.length) {\r\n this._$groupTable = (0, _renderer.default)(\"
\").addClass(GROUP_TABLE_CLASS)\r\n }\r\n };\r\n _proto._renderView = function() {\r\n this._setFirstViewDate();\r\n this._rows = [];\r\n this.invoke(\"getAgendaRows\", {\r\n agendaDuration: this.option(\"agendaDuration\"),\r\n currentDate: new Date(this.option(\"currentDate\"))\r\n }).done(function(rows) {\r\n this._recalculateAgenda(rows)\r\n }.bind(this))\r\n };\r\n _proto._recalculateAgenda = function(rows) {\r\n var cellTemplates = [];\r\n this._cleanView();\r\n if (this._rowsIsEmpty(rows)) {\r\n this._renderNoData();\r\n return\r\n }\r\n this._rows = rows;\r\n if (this._$groupTable) {\r\n cellTemplates = this._renderGroupHeader();\r\n this._setGroupHeaderCellsHeight()\r\n }\r\n this._renderTimePanel();\r\n this._renderDateTable();\r\n this.invoke(\"onAgendaReady\", rows);\r\n this._applyCellTemplates(cellTemplates);\r\n this._dateTableScrollable.update()\r\n };\r\n _proto._renderNoData = function() {\r\n this._$noDataContainer = (0, _renderer.default)(\"
\").addClass(NODATA_CONTAINER_CLASS).html(this.option(\"noDataText\"));\r\n this._dateTableScrollable.$content().append(this._$noDataContainer)\r\n };\r\n _proto._setTableSizes = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._toggleHorizontalScrollClass = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._createCrossScrollingConfig = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._setGroupHeaderCellsHeight = function() {\r\n var $cells = this._getGroupHeaderCells().filter(function(_, element) {\r\n return !element.getAttribute(\"rowSpan\")\r\n });\r\n var rows = this._removeEmptyRows(this._rows);\r\n if (!rows.length) {\r\n return\r\n }\r\n for (var i = 0; i < $cells.length; i++) {\r\n var $cellContent = $cells.eq(i).find(\".dx-scheduler-group-header-content\");\r\n $cellContent.outerHeight(this._getGroupRowHeight(rows[i]))\r\n }\r\n };\r\n _proto._rowsIsEmpty = function(rows) {\r\n var result = true;\r\n for (var i = 0; i < rows.length; i++) {\r\n var groupRow = rows[i];\r\n for (var j = 0; j < groupRow.length; j++) {\r\n if (groupRow[j]) {\r\n result = false;\r\n break\r\n }\r\n }\r\n }\r\n return result\r\n };\r\n _proto._detachGroupCountAttr = function() {\r\n this.$element().removeAttr(AGENDA_GROUPED_ATTR)\r\n };\r\n _proto._attachGroupCountAttr = function() {\r\n this.$element().attr(AGENDA_GROUPED_ATTR, this.option(\"groups\").length)\r\n };\r\n _proto._removeEmptyRows = function(rows) {\r\n var result = [];\r\n var isEmpty = function(data) {\r\n return !data.some(function(value) {\r\n return value > 0\r\n })\r\n };\r\n for (var i = 0; i < rows.length; i++) {\r\n if (rows[i].length && !isEmpty(rows[i])) {\r\n result.push(rows[i])\r\n }\r\n }\r\n return result\r\n };\r\n _proto._getGroupHeaderContainer = function() {\r\n return this._$groupTable\r\n };\r\n _proto._makeGroupRows = function() {\r\n var tree = this.invoke(\"createReducedResourcesTree\");\r\n var cellTemplate = this.option(\"resourceCellTemplate\");\r\n var getGroupHeaderContentClass = this._getGroupHeaderContentClass();\r\n var cellTemplates = [];\r\n var table = tableCreator.makeGroupedTableFromJSON(tableCreator.VERTICAL, tree, {\r\n cellTag: \"th\",\r\n groupTableClass: GROUP_TABLE_CLASS,\r\n groupRowClass: this._getGroupRowClass(),\r\n groupCellClass: this._getGroupHeaderClass(),\r\n groupCellCustomContent: function(cell, cellText, index, data) {\r\n var container = _dom_adapter.default.createElement(\"div\");\r\n var contentWrapper = _dom_adapter.default.createElement(\"div\");\r\n container.className = getGroupHeaderContentClass;\r\n contentWrapper.appendChild(cellText);\r\n container.appendChild(contentWrapper);\r\n container.className = getGroupHeaderContentClass;\r\n if (cellTemplate && cellTemplate.render) {\r\n cellTemplates.push(cellTemplate.render.bind(cellTemplate, {\r\n model: {\r\n data: data.data,\r\n id: data.value,\r\n color: data.color,\r\n text: cellText.textContent\r\n },\r\n container: (0, _element.getPublicElement)((0, _renderer.default)(container)),\r\n index: index\r\n }))\r\n } else {\r\n contentWrapper.appendChild(cellText);\r\n container.appendChild(contentWrapper)\r\n }\r\n cell.appendChild(container)\r\n },\r\n cellTemplate: cellTemplate\r\n });\r\n return {\r\n elements: (0, _renderer.default)(table).find(\".\" + this._getGroupRowClass()),\r\n cellTemplates: cellTemplates\r\n }\r\n };\r\n _proto._cleanView = function() {\r\n this._$dateTable.empty();\r\n this._$timePanel.empty();\r\n if (this._$groupTable) {\r\n this._$groupTable.empty()\r\n }\r\n if (this._$noDataContainer) {\r\n this._$noDataContainer.empty();\r\n this._$noDataContainer.remove();\r\n delete this._$noDataContainer\r\n }\r\n };\r\n _proto._createWorkSpaceElements = function() {\r\n this._createWorkSpaceStaticElements()\r\n };\r\n _proto._createWorkSpaceStaticElements = function() {\r\n if (this._$groupTable) {\r\n this._dateTableScrollable.$content().prepend(this._$groupTable)\r\n }\r\n this._dateTableScrollable.$content().append(this._$timePanel, this._$dateTable);\r\n this.$element().append(this._dateTableScrollable.$element())\r\n };\r\n _proto._renderDateTable = function() {\r\n this._renderTableBody({\r\n container: (0, _element.getPublicElement)(this._$dateTable),\r\n rowClass: this._getDateTableRowClass(),\r\n cellClass: this._getDateTableCellClass()\r\n })\r\n };\r\n _proto._attachTablesEvents = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._attachEvents = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto._cleanCellDataCache = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto.isIndicationAvailable = function() {\r\n return false\r\n };\r\n _proto._prepareCellTemplateOptions = function(text, date, rowIndex, $cell) {\r\n var groupsOpt = this.option(\"groups\");\r\n var groups = {};\r\n var path = groupsOpt.length && this._getPathToLeaf(rowIndex) || [];\r\n path.forEach(function(resourceValue, resourceIndex) {\r\n var resourceName = groupsOpt[resourceIndex].name;\r\n groups[resourceName] = resourceValue\r\n });\r\n return {\r\n model: {\r\n text: text,\r\n date: date,\r\n groups: groups\r\n },\r\n container: (0, _element.getPublicElement)($cell),\r\n index: rowIndex\r\n }\r\n };\r\n _proto._renderTableBody = function(options) {\r\n var cellTemplates = [];\r\n var cellTemplateOpt = options.cellTemplate;\r\n this._$rows = [];\r\n var i;\r\n var fillTableBody = function(rowIndex, rowSize) {\r\n if (rowSize) {\r\n var date;\r\n var cellDateNumber;\r\n var cellDayName;\r\n var $row = (0, _renderer.default)(\"
\");\r\n var $td = (0, _renderer.default)(\"\").append(this._$rows));\r\n this._applyCellTemplates(cellTemplates)\r\n };\r\n _proto._setLastRowClass = function() {\r\n if (this._rows.length > 1 && this._$rows.length) {\r\n var $lastRow = this._$rows[this._$rows.length - 1];\r\n $lastRow.addClass(LAST_ROW_CLASS)\r\n }\r\n };\r\n _proto._renderTimePanel = function() {\r\n this._renderTableBody({\r\n container: (0, _element.getPublicElement)(this._$timePanel),\r\n rowCount: this._getTimePanelRowCount(),\r\n cellCount: 1,\r\n rowClass: TIME_PANEL_ROW_CLASS,\r\n cellClass: TIME_PANEL_CELL_CLASS,\r\n cellTemplate: this.option(\"dateCellTemplate\"),\r\n getStartDate: this._getTimePanelStartDate.bind(this)\r\n })\r\n };\r\n _proto._getTimePanelStartDate = function(rowIndex) {\r\n var current = new Date(this.option(\"currentDate\"));\r\n var cellDate = new Date(current.setDate(current.getDate() + rowIndex));\r\n return cellDate\r\n };\r\n _proto._getRowHeight = function(rowSize) {\r\n var baseHeight = this.option(\"rowHeight\");\r\n var innerOffset = (rowSize - 1) * INNER_CELL_MARGIN;\r\n return rowSize ? baseHeight * rowSize + innerOffset + OUTER_CELL_MARGIN : 0\r\n };\r\n _proto._getGroupRowHeight = function(groupRows) {\r\n if (!groupRows) {\r\n return\r\n }\r\n var result = 0;\r\n for (var i = 0; i < groupRows.length; i++) {\r\n result += this._getRowHeight(groupRows[i])\r\n }\r\n return result\r\n };\r\n _proto.getAgendaVerticalStepHeight = function() {\r\n return this.option(\"rowHeight\")\r\n };\r\n _proto.getEndViewDate = function() {\r\n var currentDate = new Date(this.option(\"currentDate\"));\r\n var agendaDuration = this.option(\"agendaDuration\");\r\n currentDate.setHours(this.option(\"endDayHour\"));\r\n var result = currentDate.setDate(currentDate.getDate() + agendaDuration - 1) - 6e4;\r\n return new Date(result)\r\n };\r\n _proto.getEndViewDateByEndDayHour = function() {\r\n return this.getEndViewDate()\r\n };\r\n _proto.getCoordinatesByDate = function() {\r\n return {\r\n top: 0,\r\n left: 0,\r\n max: 0,\r\n groupIndex: 0\r\n }\r\n };\r\n _proto.getCellDataByCoordinates = function() {\r\n return {\r\n startDate: null,\r\n endDate: null\r\n }\r\n };\r\n _proto.updateScrollPosition = function(date) {\r\n var scheduler = this.option(\"observer\");\r\n var newDate = scheduler.timeZoneCalculator.createDate(date, {\r\n path: \"toGrid\"\r\n });\r\n var bounds = this.getVisibleBounds();\r\n var startDateHour = newDate.getHours();\r\n var startDateMinutes = newDate.getMinutes();\r\n if (this.needUpdateScrollPosition(startDateHour, startDateMinutes, bounds, newDate)) {\r\n this.scrollToTime(startDateHour, startDateMinutes, newDate)\r\n }\r\n };\r\n _proto.needUpdateScrollPosition = function(hours, minutes, bounds) {\r\n var isUpdateNeeded = false;\r\n if (hours < bounds.top.hours || hours > bounds.bottom.hours) {\r\n isUpdateNeeded = true\r\n }\r\n if (hours === bounds.top.hours && minutes < bounds.top.minutes) {\r\n isUpdateNeeded = true\r\n }\r\n if (hours === bounds.bottom.hours && minutes > bounds.top.minutes) {\r\n isUpdateNeeded = true\r\n }\r\n return isUpdateNeeded\r\n };\r\n return SchedulerAgenda\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerAgenda\", SchedulerAgenda);\r\nvar _default = SchedulerAgenda;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/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 (renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.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\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.AllDayPanelTitle = AllDayPanelTitle;\r\nexports.AllDayPanelTitleProps = exports.viewFunction = void 0;\r\nvar _message = _interopRequireDefault(require(\"../../../../../../../localization/message\"));\r\nvar _combine_classes = require(\"../../../../../../utils/combine_classes\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\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 _objectWithoutProperties(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = _objectWithoutPropertiesLoose(source, excluded);\r\n var key, i;\r\n if (Object.getOwnPropertySymbols) {\r\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n key = sourceSymbolKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = {};\r\n var sourceKeys = Object.keys(source);\r\n var key, i;\r\n for (i = 0; i < sourceKeys.length; i++) {\r\n key = sourceKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n return target\r\n}\r\n\r\nfunction _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 _extends() {\r\n _extends = Object.assign || function(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = arguments[i];\r\n for (var key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n target[key] = source[key]\r\n }\r\n }\r\n }\r\n return target\r\n };\r\n return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n return Preact.h(\"div\", _extends({}, viewModel.restAttributes, {\r\n className: viewModel.classes\r\n }), viewModel.text)\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar AllDayPanelTitleProps = {\r\n className: \"\",\r\n visible: true\r\n};\r\nexports.AllDayPanelTitleProps = AllDayPanelTitleProps;\r\n\r\nfunction AllDayPanelTitle(props) {\r\n var __text = (0, _hooks.useCallback)(function() {\r\n return _message.default.format(\"dxScheduler-allDay\")\r\n }, []);\r\n var __classes = (0, _hooks.useCallback)(function() {\r\n return (0, _combine_classes.combineClasses)(_defineProperty({\r\n \"dx-scheduler-all-day-title\": true,\r\n \"dx-scheduler-all-day-title-hidden\": !props.visible\r\n }, props.className, !!props.className))\r\n }, [props.visible, props.className]);\r\n var __restAttributes = (0, _hooks.useCallback)(function() {\r\n var restProps = (props.className, props.visible, _objectWithoutProperties(props, [\"className\", \"visible\"]));\r\n return restProps\r\n }, [props]);\r\n return viewFunction({\r\n props: _objectSpread({}, props),\r\n text: __text(),\r\n classes: __classes(),\r\n restAttributes: __restAttributes()\r\n })\r\n}\r\nAllDayPanelTitle.defaultProps = _objectSpread({}, AllDayPanelTitleProps);\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/week/date_table/layout.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\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.WeekTableLayout = WeekTableLayout;\r\nexports.viewFunction = void 0;\r\nvar _layout = require(\"../../base/date_table/layout\");\r\nvar _layout_props = require(\"../../base/layout_props\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\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 _objectWithoutProperties(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = _objectWithoutPropertiesLoose(source, excluded);\r\n var key, i;\r\n if (Object.getOwnPropertySymbols) {\r\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n key = sourceSymbolKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = {};\r\n var sourceKeys = Object.keys(source);\r\n var key, i;\r\n for (i = 0; i < sourceKeys.length; i++) {\r\n key = sourceKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n return target\r\n}\r\n\r\nfunction _extends() {\r\n _extends = Object.assign || function(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = arguments[i];\r\n for (var key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n target[key] = source[key]\r\n }\r\n }\r\n }\r\n return target\r\n };\r\n return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n return Preact.h(_layout.DateTableLayoutBase, _extends({\r\n viewData: viewModel.props.viewData,\r\n viewType: \"week\",\r\n dataCellTemplate: viewModel.props.dataCellTemplate\r\n }, viewModel.restAttributes))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar getTemplate = function(TemplateProp) {\r\n return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n return Preact.h(TemplateProp, _extends({}, props))\r\n } : TemplateProp)\r\n};\r\n\r\nfunction WeekTableLayout(props) {\r\n var __restAttributes = (0, _hooks.useCallback)(function() {\r\n var restProps = (props.dataCellTemplate, props.groupOrientation, props.viewData, _objectWithoutProperties(props, [\"dataCellTemplate\", \"groupOrientation\", \"viewData\"]));\r\n return restProps\r\n }, [props]);\r\n return viewFunction({\r\n props: _objectSpread(_objectSpread({}, props), {}, {\r\n dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n }),\r\n restAttributes: __restAttributes()\r\n })\r\n}\r\nWeekTableLayout.defaultProps = _objectSpread({}, _layout_props.LayoutProps);\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/consts.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.HORIZONTAL_GROUP_ORIENTATION = exports.VERTICAL_GROUP_ORIENTATION = void 0;\r\nvar VERTICAL_GROUP_ORIENTATION = \"vertical\";\r\nexports.VERTICAL_GROUP_ORIENTATION = VERTICAL_GROUP_ORIENTATION;\r\nvar HORIZONTAL_GROUP_ORIENTATION = \"horizontal\";\r\nexports.HORIZONTAL_GROUP_ORIENTATION = HORIZONTAL_GROUP_ORIENTATION;\r\n","import { ItiBaseDto } from '@/iti-core-vue';\n\nexport class CollaborativeAreaType extends ItiBaseDto {\n public name !: string;\n\n constructor(id: number, name: string) {\n super();\n this.id = id;\n this.name = name;\n }\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/tooltip_strategies/mobileTooltipStrategy.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.MobileTooltipStrategy = void 0;\r\nvar _overlay = _interopRequireDefault(require(\"../../overlay\"));\r\nvar _tooltipStrategyBase = require(\"./tooltipStrategyBase\");\r\nvar _window = require(\"../../../core/utils/window\");\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\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 SLIDE_PANEL_CLASS_NAME = \"dx-scheduler-overlay-panel\";\r\nvar MAX_TABLET_OVERLAY_HEIGHT_FACTOR = .9;\r\nvar MAX_HEIGHT = {\r\n PHONE: 250,\r\n TABLET: \"90%\",\r\n DEFAULT: \"auto\"\r\n};\r\nvar MAX_WIDTH = {\r\n PHONE: \"100%\",\r\n TABLET: \"80%\"\r\n};\r\nvar animationConfig = {\r\n show: {\r\n type: \"slide\",\r\n duration: 300,\r\n from: {\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\",\r\n of: (0, _window.getWindow)()\r\n }\r\n },\r\n to: {\r\n position: {\r\n my: \"center\",\r\n at: \"center\",\r\n of: (0, _window.getWindow)()\r\n }\r\n }\r\n },\r\n hide: {\r\n type: \"slide\",\r\n duration: 300,\r\n to: {\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\",\r\n of: (0, _window.getWindow)()\r\n }\r\n },\r\n from: {\r\n position: {\r\n my: \"center\",\r\n at: \"center\",\r\n of: (0, _window.getWindow)()\r\n }\r\n }\r\n }\r\n};\r\nvar createPhoneDeviceConfig = function(listHeight) {\r\n return {\r\n shading: false,\r\n width: MAX_WIDTH.PHONE,\r\n height: listHeight > MAX_HEIGHT.PHONE ? MAX_HEIGHT.PHONE : MAX_HEIGHT.DEFAULT,\r\n position: {\r\n my: \"bottom\",\r\n at: \"bottom\",\r\n of: (0, _window.getWindow)()\r\n }\r\n }\r\n};\r\nvar createTabletDeviceConfig = function(listHeight) {\r\n var currentMaxHeight = (0, _renderer.default)((0, _window.getWindow)()).height() * MAX_TABLET_OVERLAY_HEIGHT_FACTOR;\r\n return {\r\n shading: true,\r\n width: MAX_WIDTH.TABLET,\r\n height: listHeight > currentMaxHeight ? MAX_HEIGHT.TABLET : MAX_HEIGHT.DEFAULT,\r\n position: {\r\n my: \"center\",\r\n at: \"center\",\r\n of: (0, _window.getWindow)()\r\n }\r\n }\r\n};\r\nvar MobileTooltipStrategy = function(_TooltipStrategyBase) {\r\n _inheritsLoose(MobileTooltipStrategy, _TooltipStrategyBase);\r\n\r\n function MobileTooltipStrategy() {\r\n return _TooltipStrategyBase.apply(this, arguments) || this\r\n }\r\n var _proto = MobileTooltipStrategy.prototype;\r\n _proto._shouldUseTarget = function() {\r\n return false\r\n };\r\n _proto._onShowing = function() {\r\n var isTabletWidth = (0, _renderer.default)((0, _window.getWindow)()).width() > 700;\r\n this._tooltip.option(\"height\", MAX_HEIGHT.DEFAULT);\r\n var listHeight = this._list.$element().outerHeight();\r\n this._tooltip.option(isTabletWidth ? createTabletDeviceConfig(listHeight) : createPhoneDeviceConfig(listHeight))\r\n };\r\n _proto._createTooltip = function(target, dataList) {\r\n var _this = this;\r\n var element = this._createTooltipElement(SLIDE_PANEL_CLASS_NAME);\r\n return this._options.createComponent(element, _overlay.default, {\r\n target: (0, _window.getWindow)(),\r\n closeOnOutsideClick: true,\r\n animation: animationConfig,\r\n onShowing: function() {\r\n return _this._onShowing()\r\n },\r\n onShown: this._onShown.bind(this),\r\n contentTemplate: this._getContentTemplate(dataList)\r\n })\r\n };\r\n return MobileTooltipStrategy\r\n}(_tooltipStrategyBase.TooltipStrategyBase);\r\nexports.MobileTooltipStrategy = MobileTooltipStrategy;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.j.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 _component = _interopRequireDefault(require(\"../../../../../../preact_wrapper/component\"));\r\nvar _title = require(\"./title\");\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\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 AllDayPanelTitle = function(_BaseComponent) {\r\n _inheritsLoose(AllDayPanelTitle, _BaseComponent);\r\n\r\n function AllDayPanelTitle() {\r\n return _BaseComponent.apply(this, arguments) || this\r\n }\r\n _createClass(AllDayPanelTitle, [{\r\n key: \"_propsInfo\",\r\n get: function() {\r\n return {\r\n twoWay: [],\r\n allowNull: [],\r\n elements: []\r\n }\r\n }\r\n }, {\r\n key: \"_viewComponent\",\r\n get: function() {\r\n return _title.AllDayPanelTitle\r\n }\r\n }]);\r\n return AllDayPanelTitle\r\n}(_component.default);\r\nexports.default = AllDayPanelTitle;\r\n(0, _component_registrator.default)(\"dxAllDayPanelTitle\", AllDayPanelTitle);\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 (renovation/preact_wrapper/utils.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.removeDifferentElements = void 0;\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar removeDifferentElements = function($children, $newChildren) {\r\n (0, _iterator.each)($newChildren, function(__, element) {\r\n var hasComponent = false;\r\n (0, _iterator.each)($children, function(_, oldElement) {\r\n if (element === oldElement) {\r\n hasComponent = true\r\n }\r\n });\r\n if (!hasComponent && element.parentNode) {\r\n element.parentNode.removeChild(element)\r\n }\r\n })\r\n};\r\nexports.removeDifferentElements = removeDifferentElements;\r\n","/**\r\n * DevExtreme (ui/scheduler/appointmentAdapter.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 _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _recurrence = require(\"./recurrence\");\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 PROPERTY_NAMES = {\r\n startDate: \"startDate\",\r\n endDate: \"endDate\",\r\n allDay: \"allDay\",\r\n text: \"text\",\r\n description: \"description\",\r\n startDateTimeZone: \"startDateTimeZone\",\r\n endDateTimeZone: \"endDateTimeZone\",\r\n recurrenceRule: \"recurrenceRule\",\r\n recurrenceException: \"recurrenceException\",\r\n disabled: \"disabled\"\r\n};\r\nvar AppointmentAdapter = function() {\r\n function AppointmentAdapter(rawAppointment, options) {\r\n this.rawAppointment = rawAppointment;\r\n this.options = options\r\n }\r\n var _proto = AppointmentAdapter.prototype;\r\n _proto.getField = function(property) {\r\n return this.options.getField(this.rawAppointment, property)\r\n };\r\n _proto.setField = function(property, value) {\r\n return this.options.setField(this.rawAppointment, property, value)\r\n };\r\n _proto.calculateStartDate = function(pathTimeZoneConversion) {\r\n if (!this.startDate || isNaN(this.startDate.getTime())) {\r\n throw _ui.default.Error(\"E1032\", this.text)\r\n }\r\n return this.calculateDate(this.startDate, this.startDateTimeZone, pathTimeZoneConversion)\r\n };\r\n _proto.calculateEndDate = function(pathTimeZoneConversion) {\r\n return this.calculateDate(this.endDate, this.endDateTimeZone, pathTimeZoneConversion)\r\n };\r\n _proto.calculateDate = function(date, appointmentTimeZone, pathTimeZoneConversion) {\r\n if (!date) {\r\n return\r\n }\r\n return this.timeZoneCalculator.createDate(date, {\r\n appointmentTimeZone: appointmentTimeZone,\r\n path: pathTimeZoneConversion\r\n })\r\n };\r\n _proto.clone = function() {\r\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0;\r\n var result = new AppointmentAdapter((0, _object.deepExtendArraySafe)({}, this.rawAppointment), this.options);\r\n if (null !== options && void 0 !== options && options.pathTimeZone) {\r\n result.startDate = result.calculateStartDate(options.pathTimeZone);\r\n result.endDate = result.calculateEndDate(options.pathTimeZone)\r\n }\r\n return result\r\n };\r\n _proto.source = function() {\r\n var serializeDate = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;\r\n if (serializeDate) {\r\n var clonedAdapter = this.clone();\r\n clonedAdapter.startDate = this.startDate;\r\n clonedAdapter.endDate = this.endDate;\r\n return clonedAdapter.source()\r\n }\r\n return (0, _extend.extend)({}, this.rawAppointment)\r\n };\r\n _createClass(AppointmentAdapter, [{\r\n key: \"duration\",\r\n get: function() {\r\n return this.endDate ? this.endDate - this.startDate : 0\r\n }\r\n }, {\r\n key: \"startDate\",\r\n get: function() {\r\n var result = this.getField(PROPERTY_NAMES.startDate);\r\n return void 0 === result ? result : new Date(result)\r\n },\r\n set: function(value) {\r\n this.setField(PROPERTY_NAMES.startDate, value)\r\n }\r\n }, {\r\n key: \"endDate\",\r\n get: function() {\r\n var result = this.getField(PROPERTY_NAMES.endDate);\r\n return void 0 === result ? result : new Date(result)\r\n },\r\n set: function(value) {\r\n this.setField(PROPERTY_NAMES.endDate, value)\r\n }\r\n }, {\r\n key: \"allDay\",\r\n get: function() {\r\n return this.getField(PROPERTY_NAMES.allDay)\r\n },\r\n set: function(value) {\r\n this.setField(PROPERTY_NAMES.allDay, value)\r\n }\r\n }, {\r\n key: \"text\",\r\n get: function() {\r\n return this.getField(PROPERTY_NAMES.text)\r\n },\r\n set: function(value) {\r\n this.setField(PROPERTY_NAMES.text, value)\r\n }\r\n }, {\r\n key: \"description\",\r\n get: function() {\r\n return this.getField(PROPERTY_NAMES.description)\r\n },\r\n set: function(value) {\r\n this.setField(PROPERTY_NAMES.description, value)\r\n }\r\n }, {\r\n key: \"startDateTimeZone\",\r\n get: function() {\r\n return this.getField(PROPERTY_NAMES.startDateTimeZone)\r\n }\r\n }, {\r\n key: \"endDateTimeZone\",\r\n get: function() {\r\n return this.getField(PROPERTY_NAMES.endDateTimeZone)\r\n }\r\n }, {\r\n key: \"recurrenceRule\",\r\n get: function() {\r\n return this.getField(PROPERTY_NAMES.recurrenceRule)\r\n },\r\n set: function(value) {\r\n this.setField(PROPERTY_NAMES.recurrenceRule, value)\r\n }\r\n }, {\r\n key: \"recurrenceException\",\r\n get: function() {\r\n return this.getField(PROPERTY_NAMES.recurrenceException)\r\n },\r\n set: function(value) {\r\n this.setField(PROPERTY_NAMES.recurrenceException, value)\r\n }\r\n }, {\r\n key: \"disabled\",\r\n get: function() {\r\n return !!this.getField(PROPERTY_NAMES.disabled)\r\n }\r\n }, {\r\n key: \"timeZoneCalculator\",\r\n get: function() {\r\n return this.options.getTimeZoneCalculator()\r\n }\r\n }, {\r\n key: \"isRecurrent\",\r\n get: function() {\r\n return (0, _recurrence.getRecurrenceProcessor)().isValidRecurrenceRule(this.recurrenceRule)\r\n }\r\n }]);\r\n return AppointmentAdapter\r\n}();\r\nvar _default = AppointmentAdapter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (data/data_source.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 _data_source = require(\"./data_source/data_source\");\r\nvar _default = _data_source.DataSource;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/day/date_table/layout.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\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.DayDateTableLayout = DayDateTableLayout;\r\nexports.viewFunction = void 0;\r\nvar _layout = require(\"../../base/date_table/layout\");\r\nvar _layout_props = require(\"../../base/layout_props\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\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 _objectWithoutProperties(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = _objectWithoutPropertiesLoose(source, excluded);\r\n var key, i;\r\n if (Object.getOwnPropertySymbols) {\r\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n key = sourceSymbolKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = {};\r\n var sourceKeys = Object.keys(source);\r\n var key, i;\r\n for (i = 0; i < sourceKeys.length; i++) {\r\n key = sourceKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n return target\r\n}\r\n\r\nfunction _extends() {\r\n _extends = Object.assign || function(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = arguments[i];\r\n for (var key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n target[key] = source[key]\r\n }\r\n }\r\n }\r\n return target\r\n };\r\n return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n return Preact.h(_layout.DateTableLayoutBase, _extends({\r\n viewData: viewModel.props.viewData,\r\n viewType: \"day\",\r\n dataCellTemplate: viewModel.props.dataCellTemplate\r\n }, viewModel.restAttributes))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar getTemplate = function(TemplateProp) {\r\n return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n return Preact.h(TemplateProp, _extends({}, props))\r\n } : TemplateProp)\r\n};\r\n\r\nfunction DayDateTableLayout(props) {\r\n var __restAttributes = (0, _hooks.useCallback)(function() {\r\n var restProps = (props.dataCellTemplate, props.groupOrientation, props.viewData, _objectWithoutProperties(props, [\"dataCellTemplate\", \"groupOrientation\", \"viewData\"]));\r\n return restProps\r\n }, [props]);\r\n return viewFunction({\r\n props: _objectSpread(_objectSpread({}, props), {}, {\r\n dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n }),\r\n restAttributes: __restAttributes()\r\n })\r\n}\r\nDayDateTableLayout.defaultProps = _objectSpread({}, _layout_props.LayoutProps);\r\n","/**\r\n * DevExtreme (ui/radio_group.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 _radio_group = _interopRequireDefault(require(\"./radio_group/radio_group\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _radio_group.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/time_panel/layout.j.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 _component = _interopRequireDefault(require(\"../../../../../preact_wrapper/component\"));\r\nvar _layout = require(\"./layout\");\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\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 TimePanelTableLayout = function(_BaseComponent) {\r\n _inheritsLoose(TimePanelTableLayout, _BaseComponent);\r\n\r\n function TimePanelTableLayout() {\r\n return _BaseComponent.apply(this, arguments) || this\r\n }\r\n var _proto = TimePanelTableLayout.prototype;\r\n _proto.getProps = function() {\r\n var props = _BaseComponent.prototype.getProps.call(this);\r\n props.timeCellTemplate = this._createTemplateComponent(props, props.timeCellTemplate);\r\n props.dataCellTemplate = this._createTemplateComponent(props, props.dataCellTemplate);\r\n return props\r\n };\r\n _createClass(TimePanelTableLayout, [{\r\n key: \"_propsInfo\",\r\n get: function() {\r\n return {\r\n twoWay: [],\r\n allowNull: [],\r\n elements: []\r\n }\r\n }\r\n }, {\r\n key: \"_viewComponent\",\r\n get: function() {\r\n return _layout.TimePanelTableLayout\r\n }\r\n }]);\r\n return TimePanelTableLayout\r\n}(_component.default);\r\nexports.default = TimePanelTableLayout;\r\n(0, _component_registrator.default)(\"dxTimePanelTableLayout\", TimePanelTableLayout);\r\nmodule.exports = exports.default;\r\n","import { padStart } from './helpers';\n/**\n * General date-related utilities.\n * Also handles several incompatibilities between JavaScript and Python\n *\n */\nexport var dateutil;\n(function (dateutil) {\n dateutil.MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n /**\n * Number of milliseconds of one day\n */\n dateutil.ONE_DAY = 1000 * 60 * 60 * 24;\n /**\n * @see: \n */\n dateutil.MAXYEAR = 9999;\n /**\n * Python uses 1-Jan-1 as the base for calculating ordinals but we don't\n * want to confuse the JS engine with milliseconds > Number.MAX_NUMBER,\n * therefore we use 1-Jan-1970 instead\n */\n dateutil.ORDINAL_BASE = new Date(Date.UTC(1970, 0, 1));\n /**\n * Python: MO-SU: 0 - 6\n * JS: SU-SAT 0 - 6\n */\n dateutil.PY_WEEKDAYS = [6, 0, 1, 2, 3, 4, 5];\n /**\n * py_date.timetuple()[7]\n */\n dateutil.getYearDay = function (date) {\n var dateNoTime = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n return (Math.ceil((dateNoTime.valueOf() -\n new Date(date.getUTCFullYear(), 0, 1).valueOf()) /\n dateutil.ONE_DAY) + 1);\n };\n dateutil.isLeapYear = function (year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n };\n dateutil.isDate = function (value) {\n return value instanceof Date;\n };\n dateutil.isValidDate = function (value) {\n return dateutil.isDate(value) && !isNaN(value.getTime());\n };\n /**\n * @return {Number} the date's timezone offset in ms\n */\n dateutil.tzOffset = function (date) {\n return date.getTimezoneOffset() * 60 * 1000;\n };\n /**\n * @see: \n */\n dateutil.daysBetween = function (date1, date2) {\n // The number of milliseconds in one day\n // Convert both dates to milliseconds\n var date1ms = date1.getTime() - dateutil.tzOffset(date1);\n var date2ms = date2.getTime() - dateutil.tzOffset(date2);\n // Calculate the difference in milliseconds\n var differencems = date1ms - date2ms;\n // Convert back to days and return\n return Math.round(differencems / dateutil.ONE_DAY);\n };\n /**\n * @see: \n */\n dateutil.toOrdinal = function (date) {\n return dateutil.daysBetween(date, dateutil.ORDINAL_BASE);\n };\n /**\n * @see - \n */\n dateutil.fromOrdinal = function (ordinal) {\n return new Date(dateutil.ORDINAL_BASE.getTime() + ordinal * dateutil.ONE_DAY);\n };\n dateutil.getMonthDays = function (date) {\n var month = date.getUTCMonth();\n return month === 1 && dateutil.isLeapYear(date.getUTCFullYear())\n ? 29\n : dateutil.MONTH_DAYS[month];\n };\n /**\n * @return {Number} python-like weekday\n */\n dateutil.getWeekday = function (date) {\n return dateutil.PY_WEEKDAYS[date.getUTCDay()];\n };\n /**\n * @see: \n */\n dateutil.monthRange = function (year, month) {\n var date = new Date(Date.UTC(year, month, 1));\n return [dateutil.getWeekday(date), dateutil.getMonthDays(date)];\n };\n /**\n * @see: \n */\n dateutil.combine = function (date, time) {\n time = time || date;\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()));\n };\n dateutil.clone = function (date) {\n var dolly = new Date(date.getTime());\n return dolly;\n };\n dateutil.cloneDates = function (dates) {\n var clones = [];\n for (var i = 0; i < dates.length; i++) {\n clones.push(dateutil.clone(dates[i]));\n }\n return clones;\n };\n /**\n * Sorts an array of Date or dateutil.Time objects\n */\n dateutil.sort = function (dates) {\n dates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n };\n dateutil.timeToUntilString = function (time, utc) {\n if (utc === void 0) { utc = true; }\n var date = new Date(time);\n return [\n padStart(date.getUTCFullYear().toString(), 4, '0'),\n padStart(date.getUTCMonth() + 1, 2, '0'),\n padStart(date.getUTCDate(), 2, '0'),\n 'T',\n padStart(date.getUTCHours(), 2, '0'),\n padStart(date.getUTCMinutes(), 2, '0'),\n padStart(date.getUTCSeconds(), 2, '0'),\n utc ? 'Z' : ''\n ].join('');\n };\n dateutil.untilStringToDate = function (until) {\n var re = /^(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2})Z?)?$/;\n var bits = re.exec(until);\n if (!bits)\n throw new Error(\"Invalid UNTIL value: \" + until);\n return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0));\n };\n})(dateutil || (dateutil = {}));\nexport default dateutil;\n//# sourceMappingURL=dateutil.js.map","/**\n * This class helps us to emulate python's generators, sorta.\n */\nvar IterResult = /** @class */ (function () {\n function IterResult(method, args) {\n this.minDate = null;\n this.maxDate = null;\n this._result = [];\n this.total = 0;\n this.method = method;\n this.args = args;\n if (method === 'between') {\n this.maxDate = args.inc\n ? args.before\n : new Date(args.before.getTime() - 1);\n this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1);\n }\n else if (method === 'before') {\n this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1);\n }\n else if (method === 'after') {\n this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1);\n }\n }\n /**\n * Possibly adds a date into the result.\n *\n * @param {Date} date - the date isn't necessarly added to the result\n * list (if it is too late/too early)\n * @return {Boolean} true if it makes sense to continue the iteration\n * false if we're done.\n */\n IterResult.prototype.accept = function (date) {\n ++this.total;\n var tooEarly = this.minDate && date < this.minDate;\n var tooLate = this.maxDate && date > this.maxDate;\n if (this.method === 'between') {\n if (tooEarly)\n return true;\n if (tooLate)\n return false;\n }\n else if (this.method === 'before') {\n if (tooLate)\n return false;\n }\n else if (this.method === 'after') {\n if (tooEarly)\n return true;\n this.add(date);\n return false;\n }\n return this.add(date);\n };\n /**\n *\n * @param {Date} date that is part of the result.\n * @return {Boolean} whether we are interested in more values.\n */\n IterResult.prototype.add = function (date) {\n this._result.push(date);\n return true;\n };\n /**\n * 'before' and 'after' return only one date, whereas 'all'\n * and 'between' an array.\n * @return {Date,Array?}\n */\n IterResult.prototype.getValue = function () {\n var res = this._result;\n switch (this.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n case 'after':\n default:\n return (res.length ? res[res.length - 1] : null);\n }\n };\n IterResult.prototype.clone = function () {\n return new IterResult(this.method, this.args);\n };\n return IterResult;\n}());\nexport default IterResult;\n//# sourceMappingURL=iterresult.js.map","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { __extends } from \"tslib\";\nimport IterResult from './iterresult';\n/**\n * IterResult subclass that calls a callback function on each add,\n * and stops iterating when the callback returns false.\n */\nvar CallbackIterResult = /** @class */ (function (_super) {\n __extends(CallbackIterResult, _super);\n function CallbackIterResult(method, args, iterator) {\n var _this = _super.call(this, method, args) || this;\n _this.iterator = iterator;\n return _this;\n }\n CallbackIterResult.prototype.add = function (date) {\n if (this.iterator(date, this._result.length)) {\n this._result.push(date);\n return true;\n }\n return false;\n };\n return CallbackIterResult;\n}(IterResult));\nexport default CallbackIterResult;\n//# sourceMappingURL=callbackiterresult.js.map","export var Frequency;\n(function (Frequency) {\n Frequency[Frequency[\"YEARLY\"] = 0] = \"YEARLY\";\n Frequency[Frequency[\"MONTHLY\"] = 1] = \"MONTHLY\";\n Frequency[Frequency[\"WEEKLY\"] = 2] = \"WEEKLY\";\n Frequency[Frequency[\"DAILY\"] = 3] = \"DAILY\";\n Frequency[Frequency[\"HOURLY\"] = 4] = \"HOURLY\";\n Frequency[Frequency[\"MINUTELY\"] = 5] = \"MINUTELY\";\n Frequency[Frequency[\"SECONDLY\"] = 6] = \"SECONDLY\";\n})(Frequency || (Frequency = {}));\nexport function freqIsDailyOrGreater(freq) {\n return freq < Frequency.HOURLY;\n}\n//# sourceMappingURL=types.js.map","import { __extends } from \"tslib\";\nimport { Frequency } from './types';\nimport { pymod, divmod, empty, includes } from './helpers';\nimport { dateutil } from './dateutil';\nvar Time = /** @class */ (function () {\n function Time(hour, minute, second, millisecond) {\n this.hour = hour;\n this.minute = minute;\n this.second = second;\n this.millisecond = millisecond || 0;\n }\n Time.prototype.getHours = function () {\n return this.hour;\n };\n Time.prototype.getMinutes = function () {\n return this.minute;\n };\n Time.prototype.getSeconds = function () {\n return this.second;\n };\n Time.prototype.getMilliseconds = function () {\n return this.millisecond;\n };\n Time.prototype.getTime = function () {\n return ((this.hour * 60 * 60 + this.minute * 60 + this.second) * 1000 +\n this.millisecond);\n };\n return Time;\n}());\nexport { Time };\nvar DateTime = /** @class */ (function (_super) {\n __extends(DateTime, _super);\n function DateTime(year, month, day, hour, minute, second, millisecond) {\n var _this = _super.call(this, hour, minute, second, millisecond) || this;\n _this.year = year;\n _this.month = month;\n _this.day = day;\n return _this;\n }\n DateTime.fromDate = function (date) {\n return new this(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.valueOf() % 1000);\n };\n DateTime.prototype.getWeekday = function () {\n return dateutil.getWeekday(new Date(this.getTime()));\n };\n DateTime.prototype.getTime = function () {\n return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)).getTime();\n };\n DateTime.prototype.getDay = function () {\n return this.day;\n };\n DateTime.prototype.getMonth = function () {\n return this.month;\n };\n DateTime.prototype.getYear = function () {\n return this.year;\n };\n DateTime.prototype.addYears = function (years) {\n this.year += years;\n };\n DateTime.prototype.addMonths = function (months) {\n this.month += months;\n if (this.month > 12) {\n var yearDiv = Math.floor(this.month / 12);\n var monthMod = pymod(this.month, 12);\n this.month = monthMod;\n this.year += yearDiv;\n if (this.month === 0) {\n this.month = 12;\n --this.year;\n }\n }\n };\n DateTime.prototype.addWeekly = function (days, wkst) {\n if (wkst > this.getWeekday()) {\n this.day += -(this.getWeekday() + 1 + (6 - wkst)) + days * 7;\n }\n else {\n this.day += -(this.getWeekday() - wkst) + days * 7;\n }\n this.fixDay();\n };\n DateTime.prototype.addDaily = function (days) {\n this.day += days;\n this.fixDay();\n };\n DateTime.prototype.addHours = function (hours, filtered, byhour) {\n if (filtered) {\n // Jump to one iteration before next day\n this.hour += Math.floor((23 - this.hour) / hours) * hours;\n }\n while (true) {\n this.hour += hours;\n var _a = divmod(this.hour, 24), dayDiv = _a.div, hourMod = _a.mod;\n if (dayDiv) {\n this.hour = hourMod;\n this.addDaily(dayDiv);\n }\n if (empty(byhour) || includes(byhour, this.hour))\n break;\n }\n };\n DateTime.prototype.addMinutes = function (minutes, filtered, byhour, byminute) {\n if (filtered) {\n // Jump to one iteration before next day\n this.minute +=\n Math.floor((1439 - (this.hour * 60 + this.minute)) / minutes) * minutes;\n }\n while (true) {\n this.minute += minutes;\n var _a = divmod(this.minute, 60), hourDiv = _a.div, minuteMod = _a.mod;\n if (hourDiv) {\n this.minute = minuteMod;\n this.addHours(hourDiv, false, byhour);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute))) {\n break;\n }\n }\n };\n DateTime.prototype.addSeconds = function (seconds, filtered, byhour, byminute, bysecond) {\n if (filtered) {\n // Jump to one iteration before next day\n this.second +=\n Math.floor((86399 - (this.hour * 3600 + this.minute * 60 + this.second)) / seconds) * seconds;\n }\n while (true) {\n this.second += seconds;\n var _a = divmod(this.second, 60), minuteDiv = _a.div, secondMod = _a.mod;\n if (minuteDiv) {\n this.second = secondMod;\n this.addMinutes(minuteDiv, false, byhour, byminute);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute)) &&\n (empty(bysecond) || includes(bysecond, this.second))) {\n break;\n }\n }\n };\n DateTime.prototype.fixDay = function () {\n if (this.day <= 28) {\n return;\n }\n var daysinmonth = dateutil.monthRange(this.year, this.month - 1)[1];\n if (this.day <= daysinmonth) {\n return;\n }\n while (this.day > daysinmonth) {\n this.day -= daysinmonth;\n ++this.month;\n if (this.month === 13) {\n this.month = 1;\n ++this.year;\n if (this.year > dateutil.MAXYEAR) {\n return;\n }\n }\n daysinmonth = dateutil.monthRange(this.year, this.month - 1)[1];\n }\n };\n DateTime.prototype.add = function (options, filtered) {\n var freq = options.freq, interval = options.interval, wkst = options.wkst, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n switch (freq) {\n case Frequency.YEARLY: return this.addYears(interval);\n case Frequency.MONTHLY: return this.addMonths(interval);\n case Frequency.WEEKLY: return this.addWeekly(interval, wkst);\n case Frequency.DAILY: return this.addDaily(interval);\n case Frequency.HOURLY: return this.addHours(interval, filtered, byhour);\n case Frequency.MINUTELY: return this.addMinutes(interval, filtered, byhour, byminute);\n case Frequency.SECONDLY: return this.addSeconds(interval, filtered, byhour, byminute, bysecond);\n }\n };\n return DateTime;\n}(Time));\nexport { DateTime };\n//# sourceMappingURL=datetime.js.map","import { __assign } from \"tslib\";\nimport { freqIsDailyOrGreater } from './types';\nimport { includes, notEmpty, isPresent, isNumber, isArray, isWeekdayStr } from './helpers';\nimport RRule, { defaultKeys, DEFAULT_OPTIONS } from './rrule';\nimport dateutil from './dateutil';\nimport { Weekday } from './weekday';\nimport { Time } from './datetime';\nexport function initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n // Shallow copy for options and origOptions and check for invalid\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!includes(defaultKeys, key))\n invalid.push(key);\n if (dateutil.isDate(options[key]) && !dateutil.isValidDate(options[key]))\n invalid.push(key);\n }\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign({}, options);\n}\nexport function parseOptions(options) {\n var opts = __assign(__assign({}, DEFAULT_OPTIONS), initializeOptions(options));\n if (isPresent(opts.byeaster))\n opts.freq = RRule.YEARLY;\n if (!(isPresent(opts.freq) && RRule.FREQUENCIES[opts.freq])) {\n throw new Error(\"Invalid frequency: \" + opts.freq + \" \" + options.freq);\n }\n if (!opts.dtstart)\n opts.dtstart = new Date(new Date().setMilliseconds(0));\n if (!isPresent(opts.wkst)) {\n opts.wkst = RRule.MO.weekday;\n }\n else if (isNumber(opts.wkst)) {\n // cool, just keep it like that\n }\n else {\n opts.wkst = opts.wkst.weekday;\n }\n if (isPresent(opts.bysetpos)) {\n if (isNumber(opts.bysetpos))\n opts.bysetpos = [opts.bysetpos];\n for (var i = 0; i < opts.bysetpos.length; i++) {\n var v = opts.bysetpos[i];\n if (v === 0 || !(v >= -366 && v <= 366)) {\n throw new Error('bysetpos must be between 1 and 366,' + ' or between -366 and -1');\n }\n }\n }\n if (!(Boolean(opts.byweekno) ||\n notEmpty(opts.byweekno) ||\n notEmpty(opts.byyearday) ||\n Boolean(opts.bymonthday) ||\n notEmpty(opts.bymonthday) ||\n isPresent(opts.byweekday) ||\n isPresent(opts.byeaster))) {\n switch (opts.freq) {\n case RRule.YEARLY:\n if (!opts.bymonth)\n opts.bymonth = opts.dtstart.getUTCMonth() + 1;\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.MONTHLY:\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.WEEKLY:\n opts.byweekday = [dateutil.getWeekday(opts.dtstart)];\n break;\n }\n }\n // bymonth\n if (isPresent(opts.bymonth) && !isArray(opts.bymonth)) {\n opts.bymonth = [opts.bymonth];\n }\n // byyearday\n if (isPresent(opts.byyearday) &&\n !isArray(opts.byyearday) &&\n isNumber(opts.byyearday)) {\n opts.byyearday = [opts.byyearday];\n }\n // bymonthday\n if (!isPresent(opts.bymonthday)) {\n opts.bymonthday = [];\n opts.bynmonthday = [];\n }\n else if (isArray(opts.bymonthday)) {\n var bymonthday = [];\n var bynmonthday = [];\n for (var i = 0; i < opts.bymonthday.length; i++) {\n var v = opts.bymonthday[i];\n if (v > 0) {\n bymonthday.push(v);\n }\n else if (v < 0) {\n bynmonthday.push(v);\n }\n }\n opts.bymonthday = bymonthday;\n opts.bynmonthday = bynmonthday;\n }\n else if (opts.bymonthday < 0) {\n opts.bynmonthday = [opts.bymonthday];\n opts.bymonthday = [];\n }\n else {\n opts.bynmonthday = [];\n opts.bymonthday = [opts.bymonthday];\n }\n // byweekno\n if (isPresent(opts.byweekno) && !isArray(opts.byweekno)) {\n opts.byweekno = [opts.byweekno];\n }\n // byweekday / bynweekday\n if (!isPresent(opts.byweekday)) {\n opts.bynweekday = null;\n }\n else if (isNumber(opts.byweekday)) {\n opts.byweekday = [opts.byweekday];\n opts.bynweekday = null;\n }\n else if (isWeekdayStr(opts.byweekday)) {\n opts.byweekday = [Weekday.fromStr(opts.byweekday).weekday];\n opts.bynweekday = null;\n }\n else if (opts.byweekday instanceof Weekday) {\n if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) {\n opts.byweekday = [opts.byweekday.weekday];\n opts.bynweekday = null;\n }\n else {\n opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]];\n opts.byweekday = null;\n }\n }\n else {\n var byweekday = [];\n var bynweekday = [];\n for (var i = 0; i < opts.byweekday.length; i++) {\n var wday = opts.byweekday[i];\n if (isNumber(wday)) {\n byweekday.push(wday);\n continue;\n }\n else if (isWeekdayStr(wday)) {\n byweekday.push(Weekday.fromStr(wday).weekday);\n continue;\n }\n if (!wday.n || opts.freq > RRule.MONTHLY) {\n byweekday.push(wday.weekday);\n }\n else {\n bynweekday.push([wday.weekday, wday.n]);\n }\n }\n opts.byweekday = notEmpty(byweekday) ? byweekday : null;\n opts.bynweekday = notEmpty(bynweekday) ? bynweekday : null;\n }\n // byhour\n if (!isPresent(opts.byhour)) {\n opts.byhour =\n opts.freq < RRule.HOURLY ? [opts.dtstart.getUTCHours()] : null;\n }\n else if (isNumber(opts.byhour)) {\n opts.byhour = [opts.byhour];\n }\n // byminute\n if (!isPresent(opts.byminute)) {\n opts.byminute =\n opts.freq < RRule.MINUTELY ? [opts.dtstart.getUTCMinutes()] : null;\n }\n else if (isNumber(opts.byminute)) {\n opts.byminute = [opts.byminute];\n }\n // bysecond\n if (!isPresent(opts.bysecond)) {\n opts.bysecond =\n opts.freq < RRule.SECONDLY ? [opts.dtstart.getUTCSeconds()] : null;\n }\n else if (isNumber(opts.bysecond)) {\n opts.bysecond = [opts.bysecond];\n }\n return { parsedOptions: opts };\n}\nexport function buildTimeset(opts) {\n var millisecondModulo = opts.dtstart.getTime() % 1000;\n if (!freqIsDailyOrGreater(opts.freq)) {\n return [];\n }\n var timeset = [];\n opts.byhour.forEach(function (hour) {\n opts.byminute.forEach(function (minute) {\n opts.bysecond.forEach(function (second) {\n timeset.push(new Time(hour, minute, second, millisecondModulo));\n });\n });\n });\n return timeset;\n}\n//# sourceMappingURL=parseoptions.js.map","import { __assign } from \"tslib\";\nimport { Frequency } from './types';\nimport { Weekday } from './weekday';\nimport dateutil from './dateutil';\nimport { Days } from './rrule';\nexport function parseString(rfcString) {\n var options = rfcString.split('\\n').map(parseLine).filter(function (x) { return x !== null; });\n return __assign(__assign({}, options[0]), options[1]);\n}\nexport function parseDtstart(line) {\n var options = {};\n var dtstartWithZone = /DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\\s]+)/i.exec(line);\n if (!dtstartWithZone) {\n return options;\n }\n var _ = dtstartWithZone[0], tzid = dtstartWithZone[1], dtstart = dtstartWithZone[2];\n if (tzid) {\n options.tzid = tzid;\n }\n options.dtstart = dateutil.untilStringToDate(dtstart);\n return options;\n}\nfunction parseLine(rfcString) {\n rfcString = rfcString.replace(/^\\s+|\\s+$/, '');\n if (!rfcString.length)\n return null;\n var header = /^([A-Z]+?)[:;]/.exec(rfcString.toUpperCase());\n if (!header) {\n return parseRrule(rfcString);\n }\n var _ = header[0], key = header[1];\n switch (key.toUpperCase()) {\n case 'RRULE':\n case 'EXRULE':\n return parseRrule(rfcString);\n case 'DTSTART':\n return parseDtstart(rfcString);\n default:\n throw new Error(\"Unsupported RFC prop \" + key + \" in \" + rfcString);\n }\n}\nfunction parseRrule(line) {\n var strippedLine = line.replace(/^RRULE:/i, '');\n var options = parseDtstart(strippedLine);\n var attrs = line.replace(/^(?:RRULE|EXRULE):/i, '').split(';');\n attrs.forEach(function (attr) {\n var _a = attr.split('='), key = _a[0], value = _a[1];\n switch (key.toUpperCase()) {\n case 'FREQ':\n options.freq = Frequency[value.toUpperCase()];\n break;\n case 'WKST':\n options.wkst = Days[value.toUpperCase()];\n break;\n case 'COUNT':\n case 'INTERVAL':\n case 'BYSETPOS':\n case 'BYMONTH':\n case 'BYMONTHDAY':\n case 'BYYEARDAY':\n case 'BYWEEKNO':\n case 'BYHOUR':\n case 'BYMINUTE':\n case 'BYSECOND':\n var num = parseNumber(value);\n var optionKey = key.toLowerCase();\n // @ts-ignore\n options[optionKey] = num;\n break;\n case 'BYWEEKDAY':\n case 'BYDAY':\n options.byweekday = parseWeekday(value);\n break;\n case 'DTSTART':\n case 'TZID':\n // for backwards compatibility\n var dtstart = parseDtstart(line);\n options.tzid = dtstart.tzid;\n options.dtstart = dtstart.dtstart;\n break;\n case 'UNTIL':\n options.until = dateutil.untilStringToDate(value);\n break;\n case 'BYEASTER':\n options.byeaster = Number(value);\n break;\n default:\n throw new Error(\"Unknown RRULE property '\" + key + \"'\");\n }\n });\n return options;\n}\nfunction parseNumber(value) {\n if (value.indexOf(',') !== -1) {\n var values = value.split(',');\n return values.map(parseIndividualNumber);\n }\n return parseIndividualNumber(value);\n}\nfunction parseIndividualNumber(value) {\n if (/^[+-]?\\d+$/.test(value)) {\n return Number(value);\n }\n return value;\n}\nfunction parseWeekday(value) {\n var days = value.split(',');\n return days.map(function (day) {\n if (day.length === 2) {\n // MO, TU, ...\n return Days[day]; // wday instanceof Weekday\n }\n // -1MO, +3FR, 1SO, 13TU ...\n var parts = day.match(/^([+-]?\\d{1,2})([A-Z]{2})$/);\n var n = Number(parts[1]);\n var wdaypart = parts[2];\n var wday = Days[wdaypart].weekday;\n return new Weekday(wday, n);\n });\n}\n//# sourceMappingURL=parsestring.js.map","import dateutil from './dateutil';\nimport { DateTime } from 'luxon';\nvar DateWithZone = /** @class */ (function () {\n function DateWithZone(date, tzid) {\n this.date = date;\n this.tzid = tzid;\n }\n Object.defineProperty(DateWithZone.prototype, \"isUTC\", {\n get: function () {\n return !this.tzid || this.tzid.toUpperCase() === 'UTC';\n },\n enumerable: true,\n configurable: true\n });\n DateWithZone.prototype.toString = function () {\n var datestr = dateutil.timeToUntilString(this.date.getTime(), this.isUTC);\n if (!this.isUTC) {\n return \";TZID=\" + this.tzid + \":\" + datestr;\n }\n return \":\" + datestr;\n };\n DateWithZone.prototype.getTime = function () {\n return this.date.getTime();\n };\n DateWithZone.prototype.rezonedDate = function () {\n if (this.isUTC) {\n return this.date;\n }\n try {\n var datetime = DateTime\n .fromJSDate(this.date);\n var rezoned = datetime.setZone(this.tzid, { keepLocalTime: true });\n return rezoned.toJSDate();\n }\n catch (e) {\n if (e instanceof TypeError) {\n console.error('Using TZID without Luxon available is unsupported. Returned times are in UTC, not the requested time zone');\n }\n return this.date;\n }\n };\n return DateWithZone;\n}());\nexport { DateWithZone };\n//# sourceMappingURL=datewithzone.js.map","import RRule, { DEFAULT_OPTIONS } from './rrule';\nimport { includes, isPresent, isArray, isNumber, toArray } from './helpers';\nimport { Weekday } from './weekday';\nimport dateutil from './dateutil';\nimport { DateWithZone } from './datewithzone';\nexport function optionsToString(options) {\n var rrule = [];\n var dtstart = '';\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'tzid')\n continue;\n if (!includes(defaultKeys, keys[i]))\n continue;\n var key = keys[i].toUpperCase();\n var value = options[keys[i]];\n var outValue = '';\n if (!isPresent(value) || (isArray(value) && !value.length))\n continue;\n switch (key) {\n case 'FREQ':\n outValue = RRule.FREQUENCIES[options.freq];\n break;\n case 'WKST':\n if (isNumber(value)) {\n outValue = new Weekday(value).toString();\n }\n else {\n outValue = value.toString();\n }\n break;\n case 'BYWEEKDAY':\n /*\n NOTE: BYWEEKDAY is a special case.\n RRule() deconstructs the rule.options.byweekday array\n into an array of Weekday arguments.\n On the other hand, rule.origOptions is an array of Weekdays.\n We need to handle both cases here.\n It might be worth change RRule to keep the Weekdays.\n \n Also, BYWEEKDAY (used by RRule) vs. BYDAY (RFC)\n \n */\n key = 'BYDAY';\n outValue = toArray(value).map(function (wday) {\n if (wday instanceof Weekday) {\n return wday;\n }\n if (isArray(wday)) {\n return new Weekday(wday[0], wday[1]);\n }\n return new Weekday(wday);\n }).toString();\n break;\n case 'DTSTART':\n dtstart = buildDtstart(value, options.tzid);\n break;\n case 'UNTIL':\n outValue = dateutil.timeToUntilString(value, !options.tzid);\n break;\n default:\n if (isArray(value)) {\n var strValues = [];\n for (var j = 0; j < value.length; j++) {\n strValues[j] = String(value[j]);\n }\n outValue = strValues.toString();\n }\n else {\n outValue = String(value);\n }\n }\n if (outValue) {\n rrule.push([key, outValue]);\n }\n }\n var rules = rrule.map(function (_a) {\n var key = _a[0], value = _a[1];\n return key + \"=\" + value.toString();\n }).join(';');\n var ruleString = '';\n if (rules !== '') {\n ruleString = \"RRULE:\" + rules;\n }\n return [dtstart, ruleString].filter(function (x) { return !!x; }).join('\\n');\n}\nfunction buildDtstart(dtstart, tzid) {\n if (!dtstart) {\n return '';\n }\n return 'DTSTART' + new DateWithZone(new Date(dtstart), tzid).toString();\n}\n//# sourceMappingURL=optionstostring.js.map","import IterResult from './iterresult';\nimport dateutil from './dateutil';\nimport { isArray } from './helpers';\nvar Cache = /** @class */ (function () {\n function Cache() {\n this.all = false;\n this.before = [];\n this.after = [];\n this.between = [];\n }\n /**\n * @param {String} what - all/before/after/between\n * @param {Array,Date} value - an array of dates, one date, or null\n * @param {Object?} args - _iter arguments\n */\n Cache.prototype._cacheAdd = function (what, value, args) {\n if (value) {\n value =\n value instanceof Date\n ? dateutil.clone(value)\n : dateutil.cloneDates(value);\n }\n if (what === 'all') {\n this.all = value;\n }\n else {\n args._value = value;\n this[what].push(args);\n }\n };\n /**\n * @return false - not in the cache\n * null - cached, but zero occurrences (before/after)\n * Date - cached (before/after)\n * [] - cached, but zero occurrences (all/between)\n * [Date1, DateN] - cached (all/between)\n */\n Cache.prototype._cacheGet = function (what, args) {\n var cached = false;\n var argsKeys = args ? Object.keys(args) : [];\n var findCacheDiff = function (item) {\n for (var i = 0; i < argsKeys.length; i++) {\n var key = argsKeys[i];\n if (String(args[key]) !== String(item[key])) {\n return true;\n }\n }\n return false;\n };\n var cachedObject = this[what];\n if (what === 'all') {\n cached = this.all;\n }\n else if (isArray(cachedObject)) {\n // Let's see whether we've already called the\n // 'what' method with the same 'args'\n for (var i = 0; i < cachedObject.length; i++) {\n var item = cachedObject[i];\n if (argsKeys.length && findCacheDiff(item))\n continue;\n cached = item._value;\n break;\n }\n }\n if (!cached && this.all) {\n // Not in the cache, but we already know all the occurrences,\n // so we can find the correct dates from the cached ones.\n var iterResult = new IterResult(what, args);\n for (var i = 0; i < this.all.length; i++) {\n if (!iterResult.accept(this.all[i]))\n break;\n }\n cached = iterResult.getValue();\n this._cacheAdd(what, cached, args);\n }\n return isArray(cached)\n ? dateutil.cloneDates(cached)\n : cached instanceof Date\n ? dateutil.clone(cached)\n : cached;\n };\n return Cache;\n}());\nexport { Cache };\n//# sourceMappingURL=cache.js.map","import { __spreadArrays } from \"tslib\";\nimport { range, repeat } from './helpers';\n// =============================================================================\n// Date masks\n// =============================================================================\n// Every mask is 7 days longer to handle cross-year weekly periods.\nvar M365MASK = __spreadArrays(repeat(1, 31), repeat(2, 28), repeat(3, 31), repeat(4, 30), repeat(5, 31), repeat(6, 30), repeat(7, 31), repeat(8, 31), repeat(9, 30), repeat(10, 31), repeat(11, 30), repeat(12, 31), repeat(1, 7));\nvar M366MASK = __spreadArrays(repeat(1, 31), repeat(2, 29), repeat(3, 31), repeat(4, 30), repeat(5, 31), repeat(6, 30), repeat(7, 31), repeat(8, 31), repeat(9, 30), repeat(10, 31), repeat(11, 30), repeat(12, 31), repeat(1, 7));\nvar M28 = range(1, 29);\nvar M29 = range(1, 30);\nvar M30 = range(1, 31);\nvar M31 = range(1, 32);\nvar MDAY366MASK = __spreadArrays(M31, M29, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7));\nvar MDAY365MASK = __spreadArrays(M31, M28, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7));\nvar NM28 = range(-28, 0);\nvar NM29 = range(-29, 0);\nvar NM30 = range(-30, 0);\nvar NM31 = range(-31, 0);\nvar NMDAY366MASK = __spreadArrays(NM31, NM29, NM31, NM30, NM31, NM30, NM31, NM31, NM30, NM31, NM30, NM31, NM31.slice(0, 7));\nvar NMDAY365MASK = __spreadArrays(NM31, NM28, NM31, NM30, NM31, NM30, NM31, NM31, NM30, NM31, NM30, NM31, NM31.slice(0, 7));\nvar M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\nvar M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\nvar WDAYMASK = (function () {\n var wdaymask = [];\n for (var i = 0; i < 55; i++)\n wdaymask = wdaymask.concat(range(7));\n return wdaymask;\n})();\nexport { WDAYMASK, M365MASK, M365RANGE, M366MASK, M366RANGE, MDAY365MASK, MDAY366MASK, NMDAY365MASK, NMDAY366MASK };\n//# sourceMappingURL=masks.js.map","import { __assign } from \"tslib\";\nimport dateutil from '../dateutil';\nimport { empty, repeat, pymod, includes } from '../helpers';\nimport { M365MASK, MDAY365MASK, NMDAY365MASK, WDAYMASK, M365RANGE, M366MASK, MDAY366MASK, NMDAY366MASK, M366RANGE } from '../masks';\nexport function rebuildYear(year, options) {\n var firstyday = new Date(Date.UTC(year, 0, 1));\n var yearlen = dateutil.isLeapYear(year) ? 366 : 365;\n var nextyearlen = dateutil.isLeapYear(year + 1) ? 366 : 365;\n var yearordinal = dateutil.toOrdinal(firstyday);\n var yearweekday = dateutil.getWeekday(firstyday);\n var result = __assign(__assign({ yearlen: yearlen,\n nextyearlen: nextyearlen,\n yearordinal: yearordinal,\n yearweekday: yearweekday }, baseYearMasks(year)), { wnomask: null });\n if (empty(options.byweekno)) {\n return result;\n }\n result.wnomask = repeat(0, yearlen + 7);\n var firstwkst;\n var wyearlen;\n var no1wkst = firstwkst = pymod(7 - yearweekday + options.wkst, 7);\n if (no1wkst >= 4) {\n no1wkst = 0;\n // Number of days in the year, plus the days we got\n // from last year.\n wyearlen =\n result.yearlen + pymod(yearweekday - options.wkst, 7);\n }\n else {\n // Number of days in the year, minus the days we\n // left in last year.\n wyearlen = yearlen - no1wkst;\n }\n var div = Math.floor(wyearlen / 7);\n var mod = pymod(wyearlen, 7);\n var numweeks = Math.floor(div + mod / 4);\n for (var j = 0; j < options.byweekno.length; j++) {\n var n = options.byweekno[j];\n if (n < 0) {\n n += numweeks + 1;\n }\n if (!(n > 0 && n <= numweeks)) {\n continue;\n }\n var i = void 0;\n if (n > 1) {\n i = no1wkst + (n - 1) * 7;\n if (no1wkst !== firstwkst) {\n i -= 7 - firstwkst;\n }\n }\n else {\n i = no1wkst;\n }\n for (var k = 0; k < 7; k++) {\n result.wnomask[i] = 1;\n i++;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n if (includes(options.byweekno, 1)) {\n // Check week number 1 of next year as well\n // orig-TODO : Check -numweeks for next year.\n var i = no1wkst + numweeks * 7;\n if (no1wkst !== firstwkst)\n i -= 7 - firstwkst;\n if (i < yearlen) {\n // If week starts in next year, we\n // don't care about it.\n for (var j = 0; j < 7; j++) {\n result.wnomask[i] = 1;\n i += 1;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n }\n if (no1wkst) {\n // Check last week number of last year as\n // well. If no1wkst is 0, either the year\n // started on week start, or week number 1\n // got days from last year, so there are no\n // days from last year's last week number in\n // this year.\n var lnumweeks = void 0;\n if (!includes(options.byweekno, -1)) {\n var lyearweekday = dateutil.getWeekday(new Date(Date.UTC(year - 1, 0, 1)));\n var lno1wkst = pymod(7 - lyearweekday.valueOf() + options.wkst, 7);\n var lyearlen = dateutil.isLeapYear(year - 1) ? 366 : 365;\n var weekst = void 0;\n if (lno1wkst >= 4) {\n lno1wkst = 0;\n weekst = lyearlen + pymod(lyearweekday - options.wkst, 7);\n }\n else {\n weekst = yearlen - no1wkst;\n }\n lnumweeks = Math.floor(52 + pymod(weekst, 7) / 4);\n }\n else {\n lnumweeks = -1;\n }\n if (includes(options.byweekno, lnumweeks)) {\n for (var i = 0; i < no1wkst; i++)\n result.wnomask[i] = 1;\n }\n }\n return result;\n}\nfunction baseYearMasks(year) {\n var yearlen = dateutil.isLeapYear(year) ? 366 : 365;\n var firstyday = new Date(Date.UTC(year, 0, 1));\n var wday = dateutil.getWeekday(firstyday);\n if (yearlen === 365) {\n return {\n mmask: M365MASK,\n mdaymask: MDAY365MASK,\n nmdaymask: NMDAY365MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M365RANGE\n };\n }\n return {\n mmask: M366MASK,\n mdaymask: MDAY366MASK,\n nmdaymask: NMDAY366MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M366RANGE\n };\n}\n//# sourceMappingURL=yearinfo.js.map","import RRule from '../rrule';\nimport { empty, repeat, pymod } from '../helpers';\nexport function rebuildMonth(year, month, yearlen, mrange, wdaymask, options) {\n var result = {\n lastyear: year,\n lastmonth: month,\n nwdaymask: []\n };\n var ranges = [];\n if (options.freq === RRule.YEARLY) {\n if (empty(options.bymonth)) {\n ranges = [[0, yearlen]];\n }\n else {\n for (var j = 0; j < options.bymonth.length; j++) {\n month = options.bymonth[j];\n ranges.push(mrange.slice(month - 1, month + 1));\n }\n }\n }\n else if (options.freq === RRule.MONTHLY) {\n ranges = [mrange.slice(month - 1, month + 1)];\n }\n if (empty(ranges)) {\n return result;\n }\n // Weekly frequency won't get here, so we may not\n // care about cross-year weekly periods.\n result.nwdaymask = repeat(0, yearlen);\n for (var j = 0; j < ranges.length; j++) {\n var rang = ranges[j];\n var first = rang[0];\n var last = rang[1] - 1;\n for (var k = 0; k < options.bynweekday.length; k++) {\n var i = void 0;\n var _a = options.bynweekday[k], wday = _a[0], n = _a[1];\n if (n < 0) {\n i = last + (n + 1) * 7;\n i -= pymod(wdaymask[i] - wday, 7);\n }\n else {\n i = first + (n - 1) * 7;\n i += pymod(7 - wdaymask[i] + wday, 7);\n }\n if (first <= i && i <= last)\n result.nwdaymask[i] = 1;\n }\n }\n return result;\n}\n//# sourceMappingURL=monthinfo.js.map","export function easter(y, offset) {\n if (offset === void 0) { offset = 0; }\n var a = y % 19;\n var b = Math.floor(y / 100);\n var c = y % 100;\n var d = Math.floor(b / 4);\n var e = b % 4;\n var f = Math.floor((b + 8) / 25);\n var g = Math.floor((b - f + 1) / 3);\n var h = Math.floor(19 * a + b - d - g + 15) % 30;\n var i = Math.floor(c / 4);\n var k = c % 4;\n var l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7;\n var m = Math.floor((a + 11 * h + 22 * l) / 451);\n var month = Math.floor((h + l - 7 * m + 114) / 31);\n var day = ((h + l - 7 * m + 114) % 31) + 1;\n var date = Date.UTC(y, month - 1, day + offset);\n var yearStart = Date.UTC(y, 0, 1);\n return [Math.ceil((date - yearStart) / (1000 * 60 * 60 * 24))];\n}\n//# sourceMappingURL=easter.js.map","import dateutil from '../dateutil';\nimport { notEmpty, repeat, range, isPresent } from '../helpers';\nimport { Frequency } from '../types';\nimport { rebuildYear } from './yearinfo';\nimport { rebuildMonth } from './monthinfo';\nimport { easter } from './easter';\nimport { Time } from '../datetime';\n// =============================================================================\n// Iterinfo\n// =============================================================================\nvar Iterinfo = /** @class */ (function () {\n function Iterinfo(options) {\n this.options = options;\n }\n Iterinfo.prototype.rebuild = function (year, month) {\n var options = this.options;\n if (year !== this.lastyear) {\n this.yearinfo = rebuildYear(year, options);\n }\n if (notEmpty(options.bynweekday) &&\n (month !== this.lastmonth || year !== this.lastyear)) {\n var _a = this.yearinfo, yearlen = _a.yearlen, mrange = _a.mrange, wdaymask = _a.wdaymask;\n this.monthinfo = rebuildMonth(year, month, yearlen, mrange, wdaymask, options);\n }\n if (isPresent(options.byeaster)) {\n this.eastermask = easter(year, options.byeaster);\n }\n };\n Object.defineProperty(Iterinfo.prototype, \"lastyear\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastyear : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"lastmonth\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastmonth : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearlen\", {\n get: function () {\n return this.yearinfo.yearlen;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearordinal\", {\n get: function () {\n return this.yearinfo.yearordinal;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mrange\", {\n get: function () {\n return this.yearinfo.mrange;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wdaymask\", {\n get: function () {\n return this.yearinfo.wdaymask;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mmask\", {\n get: function () {\n return this.yearinfo.mmask;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wnomask\", {\n get: function () {\n return this.yearinfo.wnomask;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nwdaymask\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.nwdaymask : [];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nextyearlen\", {\n get: function () {\n return this.yearinfo.nextyearlen;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mdaymask\", {\n get: function () {\n return this.yearinfo.mdaymask;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nmdaymask\", {\n get: function () {\n return this.yearinfo.nmdaymask;\n },\n enumerable: true,\n configurable: true\n });\n Iterinfo.prototype.ydayset = function () {\n return [range(this.yearlen), 0, this.yearlen];\n };\n Iterinfo.prototype.mdayset = function (_, month, __) {\n var start = this.mrange[month - 1];\n var end = this.mrange[month];\n var set = repeat(null, this.yearlen);\n for (var i = start; i < end; i++)\n set[i] = i;\n return [set, start, end];\n };\n Iterinfo.prototype.wdayset = function (year, month, day) {\n // We need to handle cross-year weeks here.\n var set = repeat(null, this.yearlen + 7);\n var i = dateutil.toOrdinal(new Date(Date.UTC(year, month - 1, day))) -\n this.yearordinal;\n var start = i;\n for (var j = 0; j < 7; j++) {\n set[i] = i;\n ++i;\n if (this.wdaymask[i] === this.options.wkst)\n break;\n }\n return [set, start, i];\n };\n Iterinfo.prototype.ddayset = function (year, month, day) {\n var set = repeat(null, this.yearlen);\n var i = dateutil.toOrdinal(new Date(Date.UTC(year, month - 1, day))) -\n this.yearordinal;\n set[i] = i;\n return [set, i, i + 1];\n };\n Iterinfo.prototype.htimeset = function (hour, _, second, millisecond) {\n var _this = this;\n var set = [];\n this.options.byminute.forEach(function (minute) {\n set = set.concat(_this.mtimeset(hour, minute, second, millisecond));\n });\n dateutil.sort(set);\n return set;\n };\n Iterinfo.prototype.mtimeset = function (hour, minute, _, millisecond) {\n var set = this.options.bysecond.map(function (second) {\n return new Time(hour, minute, second, millisecond);\n });\n dateutil.sort(set);\n return set;\n };\n Iterinfo.prototype.stimeset = function (hour, minute, second, millisecond) {\n return [new Time(hour, minute, second, millisecond)];\n };\n Iterinfo.prototype.getdayset = function (freq) {\n switch (freq) {\n case Frequency.YEARLY: return this.ydayset.bind(this);\n case Frequency.MONTHLY: return this.mdayset.bind(this);\n case Frequency.WEEKLY: return this.wdayset.bind(this);\n case Frequency.DAILY: return this.ddayset.bind(this);\n default: return this.ddayset.bind(this);\n }\n };\n Iterinfo.prototype.gettimeset = function (freq) {\n switch (freq) {\n case Frequency.HOURLY: return this.htimeset.bind(this);\n case Frequency.MINUTELY: return this.mtimeset.bind(this);\n case Frequency.SECONDLY: return this.stimeset.bind(this);\n }\n };\n return Iterinfo;\n}());\nexport default Iterinfo;\n//# sourceMappingURL=index.js.map","import dateutil from '../dateutil';\nimport { pymod, isPresent, includes } from '../helpers';\nexport function buildPoslist(bysetpos, timeset, start, end, ii, dayset) {\n var poslist = [];\n for (var j = 0; j < bysetpos.length; j++) {\n var daypos = void 0;\n var timepos = void 0;\n var pos = bysetpos[j];\n if (pos < 0) {\n daypos = Math.floor(pos / timeset.length);\n timepos = pymod(pos, timeset.length);\n }\n else {\n daypos = Math.floor((pos - 1) / timeset.length);\n timepos = pymod(pos - 1, timeset.length);\n }\n var tmp = [];\n for (var k = start; k < end; k++) {\n var val = dayset[k];\n if (!isPresent(val))\n continue;\n tmp.push(val);\n }\n var i = void 0;\n if (daypos < 0) {\n i = tmp.slice(daypos)[0];\n }\n else {\n i = tmp[daypos];\n }\n var time = timeset[timepos];\n var date = dateutil.fromOrdinal(ii.yearordinal + i);\n var res = dateutil.combine(date, time);\n // XXX: can this ever be in the array?\n // - compare the actual date instead?\n if (!includes(poslist, res))\n poslist.push(res);\n }\n dateutil.sort(poslist);\n return poslist;\n}\n//# sourceMappingURL=poslist.js.map","import { freqIsDailyOrGreater } from '../types';\nimport dateutil from '../dateutil';\nimport Iterinfo from '../iterinfo/index';\nimport RRule from '../rrule';\nimport { buildTimeset } from '../parseoptions';\nimport { notEmpty, includes, isPresent } from '../helpers';\nimport { DateWithZone } from '../datewithzone';\nimport { buildPoslist } from './poslist';\nimport { DateTime } from '../datetime';\nexport function iter(iterResult, options) {\n var dtstart = options.dtstart, freq = options.freq, interval = options.interval, until = options.until, bysetpos = options.bysetpos;\n var count = options.count;\n if (count === 0 || interval === 0) {\n return emitResult(iterResult);\n }\n var counterDate = DateTime.fromDate(dtstart);\n var ii = new Iterinfo(options);\n ii.rebuild(counterDate.year, counterDate.month);\n var timeset = makeTimeset(ii, counterDate, options);\n while (true) {\n var _a = ii.getdayset(freq)(counterDate.year, counterDate.month, counterDate.day), dayset = _a[0], start = _a[1], end = _a[2];\n var filtered = removeFilteredDays(dayset, start, end, ii, options);\n if (notEmpty(bysetpos)) {\n var poslist = buildPoslist(bysetpos, timeset, start, end, ii, dayset);\n for (var j = 0; j < poslist.length; j++) {\n var res = poslist[j];\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n else {\n for (var j = start; j < end; j++) {\n var currentDay = dayset[j];\n if (!isPresent(currentDay)) {\n continue;\n }\n var date = dateutil.fromOrdinal(ii.yearordinal + currentDay);\n for (var k = 0; k < timeset.length; k++) {\n var time = timeset[k];\n var res = dateutil.combine(date, time);\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n }\n if (options.interval === 0) {\n return emitResult(iterResult);\n }\n // Handle frequency and interval\n counterDate.add(options, filtered);\n if (counterDate.year > dateutil.MAXYEAR) {\n return emitResult(iterResult);\n }\n if (!freqIsDailyOrGreater(freq)) {\n timeset = ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, 0);\n }\n ii.rebuild(counterDate.year, counterDate.month);\n }\n}\nfunction isFiltered(ii, currentDay, options) {\n var bymonth = options.bymonth, byweekno = options.byweekno, byweekday = options.byweekday, byeaster = options.byeaster, bymonthday = options.bymonthday, bynmonthday = options.bynmonthday, byyearday = options.byyearday;\n return ((notEmpty(bymonth) && !includes(bymonth, ii.mmask[currentDay])) ||\n (notEmpty(byweekno) && !ii.wnomask[currentDay]) ||\n (notEmpty(byweekday) && !includes(byweekday, ii.wdaymask[currentDay])) ||\n (notEmpty(ii.nwdaymask) && !ii.nwdaymask[currentDay]) ||\n (byeaster !== null && !includes(ii.eastermask, currentDay)) ||\n ((notEmpty(bymonthday) || notEmpty(bynmonthday)) &&\n !includes(bymonthday, ii.mdaymask[currentDay]) &&\n !includes(bynmonthday, ii.nmdaymask[currentDay])) ||\n (notEmpty(byyearday) &&\n ((currentDay < ii.yearlen &&\n !includes(byyearday, currentDay + 1) &&\n !includes(byyearday, -ii.yearlen + currentDay)) ||\n (currentDay >= ii.yearlen &&\n !includes(byyearday, currentDay + 1 - ii.yearlen) &&\n !includes(byyearday, -ii.nextyearlen + currentDay - ii.yearlen)))));\n}\nfunction rezoneIfNeeded(date, options) {\n return new DateWithZone(date, options.tzid).rezonedDate();\n}\nfunction emitResult(iterResult) {\n return iterResult.getValue();\n}\nfunction removeFilteredDays(dayset, start, end, ii, options) {\n var filtered = false;\n for (var dayCounter = start; dayCounter < end; dayCounter++) {\n var currentDay = dayset[dayCounter];\n filtered = isFiltered(ii, currentDay, options);\n if (filtered)\n dayset[currentDay] = null;\n }\n return filtered;\n}\nfunction makeTimeset(ii, counterDate, options) {\n var freq = options.freq, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n if (freqIsDailyOrGreater(freq)) {\n return buildTimeset(options);\n }\n if ((freq >= RRule.HOURLY &&\n notEmpty(byhour) &&\n !includes(byhour, counterDate.hour)) ||\n (freq >= RRule.MINUTELY &&\n notEmpty(byminute) &&\n !includes(byminute, counterDate.minute)) ||\n (freq >= RRule.SECONDLY &&\n notEmpty(bysecond) &&\n !includes(bysecond, counterDate.second))) {\n return [];\n }\n return ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, counterDate.millisecond);\n}\n//# sourceMappingURL=index.js.map","import dateutil from './dateutil';\nimport IterResult from './iterresult';\nimport CallbackIterResult from './callbackiterresult';\nimport { Frequency } from './types';\nimport { parseOptions, initializeOptions } from './parseoptions';\nimport { parseString } from './parsestring';\nimport { optionsToString } from './optionstostring';\nimport { Cache } from './cache';\nimport { Weekday } from './weekday';\nimport { iter } from './iter/index';\nvar getnlp = function () {\n // Lazy, runtime import to avoid circular refs.\n if (!getnlp._nlp) {\n getnlp._nlp = require('./nlp');\n }\n return getnlp._nlp;\n};\n// =============================================================================\n// RRule\n// =============================================================================\nexport var Days = {\n MO: new Weekday(0),\n TU: new Weekday(1),\n WE: new Weekday(2),\n TH: new Weekday(3),\n FR: new Weekday(4),\n SA: new Weekday(5),\n SU: new Weekday(6)\n};\nexport var DEFAULT_OPTIONS = {\n freq: Frequency.YEARLY,\n dtstart: null,\n interval: 1,\n wkst: Days.MO,\n count: null,\n until: null,\n tzid: null,\n bysetpos: null,\n bymonth: null,\n bymonthday: null,\n bynmonthday: null,\n byyearday: null,\n byweekno: null,\n byweekday: null,\n bynweekday: null,\n byhour: null,\n byminute: null,\n bysecond: null,\n byeaster: null\n};\nexport var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n/**\n *\n * @param {Options?} options - see \n * The only required option is `freq`, one of RRule.YEARLY, RRule.MONTHLY, ...\n * @constructor\n */\nvar RRule = /** @class */ (function () {\n function RRule(options, noCache) {\n if (options === void 0) { options = {}; }\n if (noCache === void 0) { noCache = false; }\n // RFC string\n this._cache = noCache ? null : new Cache();\n // used by toString()\n this.origOptions = initializeOptions(options);\n var parsedOptions = parseOptions(options).parsedOptions;\n this.options = parsedOptions;\n }\n RRule.parseText = function (text, language) {\n return getnlp().parseText(text, language);\n };\n RRule.fromText = function (text, language) {\n return getnlp().fromText(text, language);\n };\n RRule.fromString = function (str) {\n return new RRule(RRule.parseString(str) || undefined);\n };\n RRule.prototype._iter = function (iterResult) {\n return iter(iterResult, this.options);\n };\n RRule.prototype._cacheGet = function (what, args) {\n if (!this._cache)\n return false;\n return this._cache._cacheGet(what, args);\n };\n RRule.prototype._cacheAdd = function (what, value, args) {\n if (!this._cache)\n return;\n return this._cache._cacheAdd(what, value, args);\n };\n /**\n * @param {Function} iterator - optional function that will be called\n * on each date that is added. It can return false\n * to stop the iteration.\n * @return Array containing all recurrences.\n */\n RRule.prototype.all = function (iterator) {\n if (iterator) {\n return this._iter(new CallbackIterResult('all', {}, iterator));\n }\n var result = this._cacheGet('all');\n if (result === false) {\n result = this._iter(new IterResult('all', {}));\n this._cacheAdd('all', result);\n }\n return result;\n };\n /**\n * Returns all the occurrences of the rrule between after and before.\n * The inc keyword defines what happens if after and/or before are\n * themselves occurrences. With inc == True, they will be included in the\n * list, if they are found in the recurrence set.\n * @return Array\n */\n RRule.prototype.between = function (after, before, inc, iterator) {\n if (inc === void 0) { inc = false; }\n if (!dateutil.isValidDate(after) || !dateutil.isValidDate(before))\n throw new Error('Invalid date passed in to RRule.between');\n var args = {\n before: before,\n after: after,\n inc: inc\n };\n if (iterator) {\n return this._iter(new CallbackIterResult('between', args, iterator));\n }\n var result = this._cacheGet('between', args);\n if (result === false) {\n result = this._iter(new IterResult('between', args));\n this._cacheAdd('between', result, args);\n }\n return result;\n };\n /**\n * Returns the last recurrence before the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n * @return Date or null\n */\n RRule.prototype.before = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!dateutil.isValidDate(dt))\n throw new Error('Invalid date passed in to RRule.before');\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('before', args);\n if (result === false) {\n result = this._iter(new IterResult('before', args));\n this._cacheAdd('before', result, args);\n }\n return result;\n };\n /**\n * Returns the first recurrence after the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n * @return Date or null\n */\n RRule.prototype.after = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!dateutil.isValidDate(dt))\n throw new Error('Invalid date passed in to RRule.after');\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('after', args);\n if (result === false) {\n result = this._iter(new IterResult('after', args));\n this._cacheAdd('after', result, args);\n }\n return result;\n };\n /**\n * Returns the number of recurrences in this set. It will have go trough\n * the whole recurrence, if this hasn't been done before.\n */\n RRule.prototype.count = function () {\n return this.all().length;\n };\n /**\n * Converts the rrule into its string representation\n * @see \n * @return String\n */\n RRule.prototype.toString = function () {\n return optionsToString(this.origOptions);\n };\n /**\n * Will convert all rules described in nlp:ToText\n * to text.\n */\n RRule.prototype.toText = function (gettext, language, dateFormatter) {\n return getnlp().toText(this, gettext, language, dateFormatter);\n };\n RRule.prototype.isFullyConvertibleToText = function () {\n return getnlp().isFullyConvertible(this);\n };\n /**\n * @return a RRule instance with the same freq and options\n * as this one (cache is not cloned)\n */\n RRule.prototype.clone = function () {\n return new RRule(this.origOptions);\n };\n // RRule class 'constants'\n RRule.FREQUENCIES = [\n 'YEARLY',\n 'MONTHLY',\n 'WEEKLY',\n 'DAILY',\n 'HOURLY',\n 'MINUTELY',\n 'SECONDLY'\n ];\n RRule.YEARLY = Frequency.YEARLY;\n RRule.MONTHLY = Frequency.MONTHLY;\n RRule.WEEKLY = Frequency.WEEKLY;\n RRule.DAILY = Frequency.DAILY;\n RRule.HOURLY = Frequency.HOURLY;\n RRule.MINUTELY = Frequency.MINUTELY;\n RRule.SECONDLY = Frequency.SECONDLY;\n RRule.MO = Days.MO;\n RRule.TU = Days.TU;\n RRule.WE = Days.WE;\n RRule.TH = Days.TH;\n RRule.FR = Days.FR;\n RRule.SA = Days.SA;\n RRule.SU = Days.SU;\n RRule.parseString = parseString;\n RRule.optionsToString = optionsToString;\n return RRule;\n}());\nexport default RRule;\n//# sourceMappingURL=rrule.js.map","import { DateWithZone } from './datewithzone';\nimport { iter } from './iter/index';\nimport dateutil from './dateutil';\nexport function iterSet(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) {\n var _exdateHash = {};\n var _accept = iterResult.accept;\n function evalExdate(after, before) {\n _exrule.forEach(function (rrule) {\n rrule.between(after, before, true).forEach(function (date) {\n _exdateHash[Number(date)] = true;\n });\n });\n }\n _exdate.forEach(function (date) {\n var zonedDate = new DateWithZone(date, tzid).rezonedDate();\n _exdateHash[Number(zonedDate)] = true;\n });\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (isNaN(dt))\n return _accept.call(this, date);\n if (!_exdateHash[dt]) {\n evalExdate(new Date(dt - 1), new Date(dt + 1));\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n }\n return true;\n };\n if (iterResult.method === 'between') {\n evalExdate(iterResult.args.after, iterResult.args.before);\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n return true;\n };\n }\n for (var i = 0; i < _rdate.length; i++) {\n var zonedDate = new DateWithZone(_rdate[i], tzid).rezonedDate();\n if (!iterResult.accept(new Date(zonedDate.getTime())))\n break;\n }\n _rrule.forEach(function (rrule) {\n iter(iterResult, rrule.options);\n });\n var res = iterResult._result;\n dateutil.sort(res);\n switch (iterResult.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n return ((res.length && res[res.length - 1]) || null);\n case 'after':\n default:\n return ((res.length && res[0]) || null);\n }\n}\n//# sourceMappingURL=iterset.js.map","import { __assign } from \"tslib\";\nimport RRule from './rrule';\nimport RRuleSet from './rruleset';\nimport dateutil from './dateutil';\nimport { includes, split } from './helpers';\nimport { parseString, parseDtstart } from './parsestring';\n/**\n * RRuleStr\n * To parse a set of rrule strings\n */\nvar DEFAULT_OPTIONS = {\n dtstart: null,\n cache: false,\n unfold: false,\n forceset: false,\n compatible: false,\n tzid: null\n};\nexport function parseInput(s, options) {\n var rrulevals = [];\n var rdatevals = [];\n var exrulevals = [];\n var exdatevals = [];\n var _a = parseDtstart(s), dtstart = _a.dtstart, tzid = _a.tzid;\n var lines = splitIntoLines(s, options.unfold);\n lines.forEach(function (line) {\n if (!line)\n return;\n var _a = breakDownLine(line), name = _a.name, parms = _a.parms, value = _a.value;\n switch (name.toUpperCase()) {\n case 'RRULE':\n if (parms.length) {\n throw new Error(\"unsupported RRULE parm: \" + parms.join(','));\n }\n rrulevals.push(parseString(line));\n break;\n case 'RDATE':\n var _b = /RDATE(?:;TZID=([^:=]+))?/i.exec(line), _ = _b[0], rdateTzid = _b[1];\n if (rdateTzid && !tzid) {\n tzid = rdateTzid;\n }\n rdatevals = rdatevals.concat(parseRDate(value, parms));\n break;\n case 'EXRULE':\n if (parms.length) {\n throw new Error(\"unsupported EXRULE parm: \" + parms.join(','));\n }\n exrulevals.push(parseString(value));\n break;\n case 'EXDATE':\n exdatevals = exdatevals.concat(parseRDate(value, parms));\n break;\n case 'DTSTART':\n break;\n default:\n throw new Error('unsupported property: ' + name);\n }\n });\n return {\n dtstart: dtstart,\n tzid: tzid,\n rrulevals: rrulevals,\n rdatevals: rdatevals,\n exrulevals: exrulevals,\n exdatevals: exdatevals\n };\n}\nfunction buildRule(s, options) {\n var _a = parseInput(s, options), rrulevals = _a.rrulevals, rdatevals = _a.rdatevals, exrulevals = _a.exrulevals, exdatevals = _a.exdatevals, dtstart = _a.dtstart, tzid = _a.tzid;\n var noCache = options.cache === false;\n if (options.compatible) {\n options.forceset = true;\n options.unfold = true;\n }\n if (options.forceset ||\n rrulevals.length > 1 ||\n rdatevals.length ||\n exrulevals.length ||\n exdatevals.length) {\n var rset_1 = new RRuleSet(noCache);\n rset_1.dtstart(dtstart);\n rset_1.tzid(tzid || undefined);\n rrulevals.forEach(function (val) {\n rset_1.rrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n rdatevals.forEach(function (date) {\n rset_1.rdate(date);\n });\n exrulevals.forEach(function (val) {\n rset_1.exrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n exdatevals.forEach(function (date) {\n rset_1.exdate(date);\n });\n if (options.compatible && options.dtstart)\n rset_1.rdate(dtstart);\n return rset_1;\n }\n var val = rrulevals[0] || {};\n return new RRule(groomRruleOptions(val, val.dtstart || options.dtstart || dtstart, val.tzid || options.tzid || tzid), noCache);\n}\nexport function rrulestr(s, options) {\n if (options === void 0) { options = {}; }\n return buildRule(s, initializeOptions(options));\n}\nfunction groomRruleOptions(val, dtstart, tzid) {\n return __assign(__assign({}, val), { dtstart: dtstart,\n tzid: tzid });\n}\nfunction initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n keys.forEach(function (key) {\n if (!includes(defaultKeys, key))\n invalid.push(key);\n });\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign(__assign({}, DEFAULT_OPTIONS), options);\n}\nfunction extractName(line) {\n if (line.indexOf(':') === -1) {\n return {\n name: 'RRULE',\n value: line\n };\n }\n var _a = split(line, ':', 1), name = _a[0], value = _a[1];\n return {\n name: name,\n value: value\n };\n}\nfunction breakDownLine(line) {\n var _a = extractName(line), name = _a.name, value = _a.value;\n var parms = name.split(';');\n if (!parms)\n throw new Error('empty property name');\n return {\n name: parms[0].toUpperCase(),\n parms: parms.slice(1),\n value: value\n };\n}\nfunction splitIntoLines(s, unfold) {\n if (unfold === void 0) { unfold = false; }\n s = s && s.trim();\n if (!s)\n throw new Error('Invalid empty string');\n // More info about 'unfold' option\n // Go head to http://www.ietf.org/rfc/rfc2445.txt\n if (!unfold) {\n return s.split(/\\s/);\n }\n var lines = s.split('\\n');\n var i = 0;\n while (i < lines.length) {\n // TODO\n var line = (lines[i] = lines[i].replace(/\\s+$/g, ''));\n if (!line) {\n lines.splice(i, 1);\n }\n else if (i > 0 && line[0] === ' ') {\n lines[i - 1] += line.slice(1);\n lines.splice(i, 1);\n }\n else {\n i += 1;\n }\n }\n return lines;\n}\nfunction validateDateParm(parms) {\n parms.forEach(function (parm) {\n if (!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(parm)) {\n throw new Error('unsupported RDATE/EXDATE parm: ' + parm);\n }\n });\n}\nfunction parseRDate(rdateval, parms) {\n validateDateParm(parms);\n return rdateval\n .split(',')\n .map(function (datestr) { return dateutil.untilStringToDate(datestr); });\n}\n//# sourceMappingURL=rrulestr.js.map","import { __extends } from \"tslib\";\nimport RRule from './rrule';\nimport dateutil from './dateutil';\nimport { includes } from './helpers';\nimport { iterSet } from './iterset';\nimport { rrulestr } from './rrulestr';\nimport { optionsToString } from './optionstostring';\nfunction createGetterSetter(fieldName) {\n var _this = this;\n return function (field) {\n if (field !== undefined) {\n _this[\"_\" + fieldName] = field;\n }\n if (_this[\"_\" + fieldName] !== undefined) {\n return _this[\"_\" + fieldName];\n }\n for (var i = 0; i < _this._rrule.length; i++) {\n var field_1 = _this._rrule[i].origOptions[fieldName];\n if (field_1) {\n return field_1;\n }\n }\n };\n}\nvar RRuleSet = /** @class */ (function (_super) {\n __extends(RRuleSet, _super);\n /**\n *\n * @param {Boolean?} noCache\n * The same stratagy as RRule on cache, default to false\n * @constructor\n */\n function RRuleSet(noCache) {\n if (noCache === void 0) { noCache = false; }\n var _this = _super.call(this, {}, noCache) || this;\n _this.dtstart = createGetterSetter.apply(_this, ['dtstart']);\n _this.tzid = createGetterSetter.apply(_this, ['tzid']);\n _this._rrule = [];\n _this._rdate = [];\n _this._exrule = [];\n _this._exdate = [];\n return _this;\n }\n RRuleSet.prototype._iter = function (iterResult) {\n return iterSet(iterResult, this._rrule, this._exrule, this._rdate, this._exdate, this.tzid());\n };\n /**\n * Adds an RRule to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.rrule = function (rrule) {\n _addRule(rrule, this._rrule);\n };\n /**\n * Adds an EXRULE to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.exrule = function (rrule) {\n _addRule(rrule, this._exrule);\n };\n /**\n * Adds an RDate to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.rdate = function (date) {\n _addDate(date, this._rdate);\n };\n /**\n * Adds an EXDATE to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.exdate = function (date) {\n _addDate(date, this._exdate);\n };\n /**\n * Get list of included rrules in this recurrence set.\n *\n * @return List of rrules\n */\n RRuleSet.prototype.rrules = function () {\n return this._rrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of excluded rrules in this recurrence set.\n *\n * @return List of exrules\n */\n RRuleSet.prototype.exrules = function () {\n return this._exrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of rdates\n */\n RRuleSet.prototype.rdates = function () {\n return this._rdate.map(function (e) { return new Date(e.getTime()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of exdates\n */\n RRuleSet.prototype.exdates = function () {\n return this._exdate.map(function (e) { return new Date(e.getTime()); });\n };\n RRuleSet.prototype.valueOf = function () {\n var result = [];\n if (!this._rrule.length && this._dtstart) {\n result = result.concat(optionsToString({ dtstart: this._dtstart }));\n }\n this._rrule.forEach(function (rrule) {\n result = result.concat(rrule.toString().split('\\n'));\n });\n this._exrule.forEach(function (exrule) {\n result = result.concat(exrule.toString().split('\\n')\n .map(function (line) { return line.replace(/^RRULE:/, 'EXRULE:'); })\n .filter(function (line) { return !/^DTSTART/.test(line); }));\n });\n if (this._rdate.length) {\n result.push(rdatesToString('RDATE', this._rdate, this.tzid()));\n }\n if (this._exdate.length) {\n result.push(rdatesToString('EXDATE', this._exdate, this.tzid()));\n }\n return result;\n };\n /**\n * to generate recurrence field such as:\n * DTSTART:19970902T010000Z\n * RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU\n * RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH\n */\n RRuleSet.prototype.toString = function () {\n return this.valueOf().join('\\n');\n };\n /**\n * Create a new RRuleSet Object completely base on current instance\n */\n RRuleSet.prototype.clone = function () {\n var rrs = new RRuleSet(!!this._cache);\n this._rrule.forEach(function (rule) { return rrs.rrule(rule.clone()); });\n this._exrule.forEach(function (rule) { return rrs.exrule(rule.clone()); });\n this._rdate.forEach(function (date) { return rrs.rdate(new Date(date.getTime())); });\n this._exdate.forEach(function (date) { return rrs.exdate(new Date(date.getTime())); });\n return rrs;\n };\n return RRuleSet;\n}(RRule));\nexport default RRuleSet;\nfunction _addRule(rrule, collection) {\n if (!(rrule instanceof RRule)) {\n throw new TypeError(String(rrule) + ' is not RRule instance');\n }\n if (!includes(collection.map(String), String(rrule))) {\n collection.push(rrule);\n }\n}\nfunction _addDate(date, collection) {\n if (!(date instanceof Date)) {\n throw new TypeError(String(date) + ' is not Date instance');\n }\n if (!includes(collection.map(Number), Number(date))) {\n collection.push(date);\n dateutil.sort(collection);\n }\n}\nfunction rdatesToString(param, rdates, tzid) {\n var isUTC = !tzid || tzid.toUpperCase() === 'UTC';\n var header = isUTC ? param + \":\" : param + \";TZID=\" + tzid + \":\";\n var dateString = rdates\n .map(function (rdate) { return dateutil.timeToUntilString(rdate.valueOf(), isUTC); })\n .join(',');\n return \"\" + header + dateString;\n}\n//# sourceMappingURL=rruleset.js.map","/*!\n * rrule.js - Library for working with recurrence rules for calendar dates.\n * https://github.com/jakubroztocil/rrule\n *\n * Copyright 2010, Jakub Roztocil and Lars Schoning\n * Licenced under the BSD licence.\n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n * Based on:\n * python-dateutil - Extensions to the standard Python datetime module.\n * Copyright (c) 2003-2011 - Gustavo Niemeyer \n * Copyright (c) 2012 - Tomi Pieviläinen \n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n */\nimport RRule from './rrule';\nimport RRuleSet from './rruleset';\nexport { rrulestr } from './rrulestr';\nexport { Frequency } from './types';\nexport { Weekday } from './weekday';\nexport { RRule, RRuleSet };\nexport default RRule;\n//# sourceMappingURL=index.js.map","/**\r\n * DevExtreme (core/utils/scroll_rtl_behavior.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _dom_adapter = _interopRequireDefault(require(\"../dom_adapter\"));\r\nvar _call_once = _interopRequireDefault(require(\"./call_once\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar getScrollRtlBehavior = (0, _call_once.default)(function() {\r\n var document = _dom_adapter.default.getDocument();\r\n document.body.insertAdjacentHTML(\"beforeend\", \"
\");\r\n var scroller = document.body.lastElementChild;\r\n var initiallyPositive = scroller.scrollLeft > 0;\r\n scroller.scrollLeft = -1;\r\n var hasNegative = scroller.scrollLeft < 0;\r\n var result = {\r\n decreasing: hasNegative || initiallyPositive,\r\n positive: !hasNegative\r\n };\r\n document.body.removeChild(scroller);\r\n return result\r\n});\r\nvar _default = getScrollRtlBehavior;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/timeZoneCalculator.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.TimeZoneCalculator = exports.PathTimeZoneConversion = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar PathTimeZoneConversion = {\r\n fromSourceToAppointment: \"toAppointment\",\r\n fromAppointmentToSource: \"fromAppointment\",\r\n fromSourceToGrid: \"toGrid\",\r\n fromGridToSource: \"fromGrid\"\r\n};\r\nexports.PathTimeZoneConversion = PathTimeZoneConversion;\r\nvar TimeZoneCalculator = function() {\r\n function TimeZoneCalculator(options) {\r\n this.options = options\r\n }\r\n var _proto = TimeZoneCalculator.prototype;\r\n _proto.createDate = function(sourceDate, info) {\r\n var date = new Date(sourceDate);\r\n switch (info.path) {\r\n case PathTimeZoneConversion.fromSourceToAppointment:\r\n return this._getConvertedDate(date, info.appointmentTimeZone, true);\r\n case PathTimeZoneConversion.fromAppointmentToSource:\r\n return this._getConvertedDate(date, info.appointmentTimeZone, true, true);\r\n case PathTimeZoneConversion.fromSourceToGrid:\r\n return this._getConvertedDate(date, info.appointmentTimeZone, false);\r\n case PathTimeZoneConversion.fromGridToSource:\r\n return this._getConvertedDate(date, info.appointmentTimeZone, false, true)\r\n }\r\n throw new Error(\"not specified pathTimeZoneConversion\")\r\n };\r\n _proto.getOffsets = function(date, appointmentTimezone) {\r\n var clientOffset = -this._getClientOffset(date) / toMs(\"hour\");\r\n var commonOffset = this._getCommonOffset(date);\r\n var appointmentOffset = this._getAppointmentOffset(date, appointmentTimezone);\r\n return {\r\n client: clientOffset,\r\n common: !(0, _type.isDefined)(commonOffset) ? clientOffset : commonOffset,\r\n appointment: \"number\" !== typeof appointmentOffset ? clientOffset : appointmentOffset\r\n }\r\n };\r\n _proto._getClientOffset = function(date) {\r\n return this.options.getClientOffset(date)\r\n };\r\n _proto._getCommonOffset = function(date) {\r\n return this.options.getCommonOffset(date)\r\n };\r\n _proto._getAppointmentOffset = function(date, appointmentTimezone) {\r\n return this.options.getAppointmentOffset(date, appointmentTimezone)\r\n };\r\n _proto._getConvertedDate = function(date, appointmentTimezone, useAppointmentTimeZone, isBack) {\r\n var newDate = new Date(date.getTime());\r\n var offsets = this.getOffsets(newDate, appointmentTimezone);\r\n if (useAppointmentTimeZone && !!appointmentTimezone) {\r\n return this._getConvertedDateByOffsets(date, offsets.client, offsets.appointment, isBack)\r\n }\r\n return this._getConvertedDateByOffsets(date, offsets.client, offsets.common, isBack)\r\n };\r\n _proto._getConvertedDateByOffsets = function(date, clientOffset, targetOffset, isBack) {\r\n var direction = isBack ? -1 : 1;\r\n var utcDate = date.getTime() - direction * clientOffset * toMs(\"hour\");\r\n return new Date(utcDate + direction * targetOffset * toMs(\"hour\"))\r\n };\r\n return TimeZoneCalculator\r\n}();\r\nexports.TimeZoneCalculator = TimeZoneCalculator;\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)(\"
\").height(this._getRowHeight(rowSize));\r\n if (options.getStartDate) {\r\n date = options.getStartDate && options.getStartDate(rowIndex);\r\n cellDateNumber = _date.default.format(date, \"d\");\r\n cellDayName = _date.default.format(date, this._formatWeekday)\r\n }\r\n if (cellTemplateOpt && cellTemplateOpt.render) {\r\n var templateOptions = this._prepareCellTemplateOptions(cellDateNumber + \" \" + cellDayName, date, i, $td);\r\n cellTemplates.push(cellTemplateOpt.render.bind(cellTemplateOpt, templateOptions))\r\n } else {\r\n if (cellDateNumber && cellDayName) {\r\n $td.addClass(AGENDA_DATE_CLASS).text(cellDateNumber + \" \" + cellDayName)\r\n }\r\n }\r\n if (options.rowClass) {\r\n $row.addClass(options.rowClass)\r\n }\r\n if (options.cellClass) {\r\n $td.addClass(options.cellClass)\r\n }\r\n $row.append($td);\r\n this._$rows.push($row)\r\n }\r\n }.bind(this);\r\n for (i = 0; i < this._rows.length; i++) {\r\n (0, _iterator.each)(this._rows[i], fillTableBody);\r\n this._setLastRowClass()\r\n }(0, _renderer.default)(options.container).append((0, _renderer.default)(\"
\").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","/**\r\n * DevExtreme (localization.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.disableIntl = disableIntl;\r\nObject.defineProperty(exports, \"message\", {\r\n enumerable: true,\r\n get: function() {\r\n return _message.default\r\n }\r\n});\r\nObject.defineProperty(exports, \"number\", {\r\n enumerable: true,\r\n get: function() {\r\n return _number.default\r\n }\r\n});\r\nObject.defineProperty(exports, \"date\", {\r\n enumerable: true,\r\n get: function() {\r\n return _date.default\r\n }\r\n});\r\nexports.parseDate = exports.formatDate = exports.parseNumber = exports.formatNumber = exports.formatMessage = exports.loadMessages = exports.locale = void 0;\r\nvar _core = _interopRequireDefault(require(\"./localization/core\"));\r\nvar _message = _interopRequireDefault(require(\"./localization/message\"));\r\nvar _number = _interopRequireDefault(require(\"./localization/number\"));\r\nvar _date = _interopRequireDefault(require(\"./localization/date\"));\r\nrequire(\"./localization/currency\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar locale = _core.default.locale.bind(_core.default);\r\nexports.locale = locale;\r\nvar loadMessages = _message.default.load.bind(_message.default);\r\nexports.loadMessages = loadMessages;\r\nvar formatMessage = _message.default.format.bind(_message.default);\r\nexports.formatMessage = formatMessage;\r\nvar formatNumber = _number.default.format.bind(_number.default);\r\nexports.formatNumber = formatNumber;\r\nvar parseNumber = _number.default.parse.bind(_number.default);\r\nexports.parseNumber = parseNumber;\r\nvar formatDate = _date.default.format.bind(_date.default);\r\nexports.formatDate = formatDate;\r\nvar parseDate = _date.default.parse.bind(_date.default);\r\nexports.parseDate = parseDate;\r\n\r\nfunction disableIntl() {\r\n if (\"intl\" === _number.default.engine()) {\r\n _number.default.resetInjection()\r\n }\r\n if (\"intl\" === _date.default.engine()) {\r\n _date.default.resetInjection()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.timeline_month.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.timeline\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline-month\";\r\nvar DAY_IN_MILLISECONDS = 864e5;\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar SchedulerTimelineMonth = function(_SchedulerTimeline) {\r\n _inheritsLoose(SchedulerTimelineMonth, _SchedulerTimeline);\r\n\r\n function SchedulerTimelineMonth() {\r\n return _SchedulerTimeline.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerTimelineMonth.prototype;\r\n _proto._renderView = function() {\r\n _SchedulerTimeline.prototype._renderView.call(this);\r\n this._updateScrollable()\r\n };\r\n _proto._getElementClass = function() {\r\n return TIMELINE_CLASS\r\n };\r\n _proto._getDateHeaderTemplate = function() {\r\n return this.option(\"dateCellTemplate\")\r\n };\r\n _proto._getHiddenInterval = function() {\r\n return 0\r\n };\r\n _proto._calculateDurationInCells = function(timeDiff) {\r\n return timeDiff / this.getCellDuration()\r\n };\r\n _proto.getCellDuration = function() {\r\n return toMs(\"day\")\r\n };\r\n _proto.calculateEndViewDate = function(dateOfLastViewCell) {\r\n return new Date(dateOfLastViewCell.getTime() + this._calculateDayDuration() * toMs(\"hour\"))\r\n };\r\n _proto.isIndicatorVisible = function() {\r\n return true\r\n };\r\n _proto._getCellCount = function() {\r\n var currentDate = this.option(\"currentDate\");\r\n var cellCount = 0;\r\n if (this._isWorkSpaceWithCount()) {\r\n var intervalCount = this.option(\"intervalCount\");\r\n for (var i = 1; i <= intervalCount; i++) {\r\n cellCount += new Date(currentDate.getFullYear(), currentDate.getMonth() + i, 0).getDate()\r\n }\r\n } else {\r\n cellCount = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0).getDate()\r\n }\r\n return cellCount\r\n };\r\n _proto._setFirstViewDate = function() {\r\n this._firstViewDate = _date.default.getFirstMonthDate(this.option(\"currentDate\"));\r\n this._setStartDayHour(this._firstViewDate)\r\n };\r\n _proto._getFormat = function() {\r\n return this._formatWeekdayAndDay\r\n };\r\n _proto._getDateByIndex = function(headerIndex) {\r\n var resultDate = new Date(this._firstViewDate);\r\n resultDate.setDate(this._firstViewDate.getDate() + headerIndex);\r\n return resultDate\r\n };\r\n _proto._getInterval = function() {\r\n return DAY_IN_MILLISECONDS\r\n };\r\n _proto._getIntervalBetween = function(currentDate) {\r\n var firstViewDate = this.getStartViewDate();\r\n var timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate);\r\n return currentDate.getTime() - (firstViewDate.getTime() - 36e5 * this.option(\"startDayHour\")) - timeZoneOffset\r\n };\r\n _proto.calculateEndDate = function(startDate) {\r\n var startDateCopy = new Date(startDate);\r\n return new Date(startDateCopy.setHours(this.option(\"endDayHour\")))\r\n };\r\n _proto._calculateHiddenInterval = function() {\r\n return 0\r\n };\r\n _proto._getDateByCellIndexes = function(rowIndex, cellIndex) {\r\n var date = _SchedulerTimeline.prototype._getDateByCellIndexes.call(this, rowIndex, cellIndex);\r\n this._setStartDayHour(date);\r\n return date\r\n };\r\n _proto.getPositionShift = function() {\r\n return {\r\n top: 0,\r\n left: 0,\r\n cellPosition: 0\r\n }\r\n };\r\n return SchedulerTimelineMonth\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerTimelineMonth\", SchedulerTimelineMonth);\r\nvar _default = SchedulerTimelineMonth;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/table.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\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.Table = Table;\r\nexports.TableProps = exports.viewFunction = void 0;\r\nvar _utils = require(\"../utils\");\r\nvar _virtualRow = require(\"./virtual-row\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\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 _objectWithoutProperties(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = _objectWithoutPropertiesLoose(source, excluded);\r\n var key, i;\r\n if (Object.getOwnPropertySymbols) {\r\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n key = sourceSymbolKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = {};\r\n var sourceKeys = Object.keys(source);\r\n var key, i;\r\n for (i = 0; i < sourceKeys.length; i++) {\r\n key = sourceKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n return target\r\n}\r\n\r\nfunction _extends() {\r\n _extends = Object.assign || function(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = arguments[i];\r\n for (var key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n target[key] = source[key]\r\n }\r\n }\r\n }\r\n return target\r\n };\r\n return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(_ref) {\r\n var hasBottomVirtualRow = _ref.hasBottomVirtualRow,\r\n hasTopVirtualRow = _ref.hasTopVirtualRow,\r\n _ref$props = _ref.props,\r\n bottomVirtualRowHeight = _ref$props.bottomVirtualRowHeight,\r\n children = _ref$props.children,\r\n className = _ref$props.className,\r\n topVirtualRowHeight = _ref$props.topVirtualRowHeight,\r\n virtualCellsCount = _ref$props.virtualCellsCount,\r\n restAttributes = _ref.restAttributes,\r\n style = _ref.style;\r\n return Preact.h(\"table\", _extends({}, restAttributes, {\r\n className: className,\r\n style: style\r\n }), Preact.h(\"tbody\", null, hasTopVirtualRow && hasBottomVirtualRow && Preact.h(Preact.Fragment, null, Preact.h(_virtualRow.VirtualRow, {\r\n height: topVirtualRowHeight,\r\n cellsCount: virtualCellsCount\r\n }), children, Preact.h(_virtualRow.VirtualRow, {\r\n height: bottomVirtualRowHeight,\r\n cellsCount: virtualCellsCount\r\n })), hasTopVirtualRow && !hasBottomVirtualRow && Preact.h(Preact.Fragment, null, Preact.h(_virtualRow.VirtualRow, {\r\n height: topVirtualRowHeight,\r\n cellsCount: virtualCellsCount\r\n }), children), !hasTopVirtualRow && hasBottomVirtualRow && Preact.h(Preact.Fragment, null, children, Preact.h(_virtualRow.VirtualRow, {\r\n height: bottomVirtualRowHeight,\r\n cellsCount: virtualCellsCount\r\n })), !hasTopVirtualRow && !hasBottomVirtualRow && Preact.h(Preact.Fragment, null, children)))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar TableProps = {\r\n className: \"\",\r\n topVirtualRowHeight: 0,\r\n bottomVirtualRowHeight: 0,\r\n virtualCellsCount: 0,\r\n isVirtual: false\r\n};\r\nexports.TableProps = TableProps;\r\n\r\nfunction Table(props) {\r\n var __style = (0, _hooks.useCallback)(function() {\r\n var height = props.height;\r\n var _restAttributes = __restAttributes(),\r\n style = _restAttributes.style;\r\n return (0, _utils.addHeightToStyle)(height, style)\r\n }, [props.height]);\r\n var __hasTopVirtualRow = (0, _hooks.useCallback)(function() {\r\n var isVirtual = props.isVirtual,\r\n topVirtualRowHeight = props.topVirtualRowHeight;\r\n return !!isVirtual && !!topVirtualRowHeight\r\n }, [props.isVirtual, props.topVirtualRowHeight]);\r\n var __hasBottomVirtualRow = (0, _hooks.useCallback)(function() {\r\n var bottomVirtualRowHeight = props.bottomVirtualRowHeight,\r\n isVirtual = props.isVirtual;\r\n return !!isVirtual && !!bottomVirtualRowHeight\r\n }, [props.bottomVirtualRowHeight, props.isVirtual]);\r\n var __restAttributes = (0, _hooks.useCallback)(function() {\r\n var restProps = (props.bottomVirtualRowHeight, props.children, props.className, props.height, props.isVirtual, props.topVirtualRowHeight, props.virtualCellsCount, _objectWithoutProperties(props, [\"bottomVirtualRowHeight\", \"children\", \"className\", \"height\", \"isVirtual\", \"topVirtualRowHeight\", \"virtualCellsCount\"]));\r\n return restProps\r\n }, [props]);\r\n return viewFunction({\r\n props: _objectSpread({}, props),\r\n style: __style(),\r\n hasTopVirtualRow: __hasTopVirtualRow(),\r\n hasBottomVirtualRow: __hasBottomVirtualRow(),\r\n restAttributes: __restAttributes()\r\n })\r\n}\r\nTable.defaultProps = _objectSpread({}, TableProps);\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.timeline_week.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.timeline\"));\r\nvar _position = require(\"../../../core/utils/position\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline-week\";\r\nvar SchedulerTimelineWeek = function(_SchedulerTimeline) {\r\n _inheritsLoose(SchedulerTimelineWeek, _SchedulerTimeline);\r\n\r\n function SchedulerTimelineWeek() {\r\n return _SchedulerTimeline.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerTimelineWeek.prototype;\r\n _proto._getElementClass = function() {\r\n return TIMELINE_CLASS\r\n };\r\n _proto._getCellCount = function() {\r\n return _SchedulerTimeline.prototype._getCellCount.call(this) * this._getWeekDuration()\r\n };\r\n _proto._getHeaderPanelCellWidth = function($headerRow) {\r\n return (0, _position.getBoundingRect)($headerRow.children().first().get(0)).width\r\n };\r\n _proto._getWeekDuration = function() {\r\n return 7\r\n };\r\n _proto._needRenderWeekHeader = function() {\r\n return true\r\n };\r\n _proto._incrementDate = function(date) {\r\n date.setDate(date.getDate() + 1)\r\n };\r\n return SchedulerTimelineWeek\r\n}(_uiScheduler.default);\r\nexports.default = SchedulerTimelineWeek;\r\n(0, _component_registrator.default)(\"dxSchedulerTimelineWeek\", SchedulerTimelineWeek);\r\nmodule.exports = exports.default;\r\n","/*!\n * devextreme-vue\n * Version: 20.2.7\n * Build date: Thu Apr 22 2021\n *\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-vue\n */\n\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DxButton = void 0;\nvar button_1 = require(\"devextreme/ui/button\");\nvar index_1 = require(\"./core/index\");\nvar DxButton = index_1.createComponent({\n props: {\n accessKey: String,\n activeStateEnabled: Boolean,\n disabled: Boolean,\n elementAttr: Object,\n focusStateEnabled: Boolean,\n height: [Function, Number, String],\n hint: String,\n hoverStateEnabled: Boolean,\n icon: String,\n onClick: Function,\n onContentReady: Function,\n onDisposing: Function,\n onInitialized: Function,\n onOptionChanged: Function,\n rtlEnabled: Boolean,\n stylingMode: String,\n tabIndex: Number,\n template: {},\n text: String,\n type: String,\n useSubmitBehavior: Boolean,\n validationGroup: String,\n visible: Boolean,\n width: [Function, Number, String]\n },\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:accessKey\": null,\n \"update:activeStateEnabled\": null,\n \"update:disabled\": null,\n \"update:elementAttr\": null,\n \"update:focusStateEnabled\": null,\n \"update:height\": null,\n \"update:hint\": null,\n \"update:hoverStateEnabled\": null,\n \"update:icon\": null,\n \"update:onClick\": null,\n \"update:onContentReady\": null,\n \"update:onDisposing\": null,\n \"update:onInitialized\": null,\n \"update:onOptionChanged\": null,\n \"update:rtlEnabled\": null,\n \"update:stylingMode\": null,\n \"update:tabIndex\": null,\n \"update:template\": null,\n \"update:text\": null,\n \"update:type\": null,\n \"update:useSubmitBehavior\": null,\n \"update:validationGroup\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n computed: {\n instance: function () {\n return this.$_instance;\n }\n },\n beforeCreate: function () {\n this.$_WidgetClass = button_1.default;\n }\n});\nexports.DxButton = DxButton;\nexports.default = DxButton;\n","/**\r\n * DevExtreme (ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.base.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiSchedulerAppointmentsPositioningStrategy = _interopRequireDefault(require(\"./ui.scheduler.appointmentsPositioning.strategy.base\"));\r\nvar _uiSchedulerAppointmentsPositioningStrategy2 = _interopRequireDefault(require(\"./ui.scheduler.appointmentsPositioning.strategy.adaptive\"));\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _themes = require(\"../../themes\");\r\nvar _utils = _interopRequireDefault(require(\"../utils.timeZone\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _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 APPOINTMENT_MIN_SIZE = 2;\r\nvar APPOINTMENT_DEFAULT_HEIGHT = 20;\r\nvar COMPACT_THEME_APPOINTMENT_DEFAULT_HEIGHT = 18;\r\nvar DROP_DOWN_BUTTON_ADAPTIVE_SIZE = 28;\r\nvar BaseRenderingStrategy = function() {\r\n function BaseRenderingStrategy(instance) {\r\n this.instance = instance;\r\n this._initPositioningStrategy()\r\n }\r\n var _proto = BaseRenderingStrategy.prototype;\r\n _proto._isAdaptive = function() {\r\n return this.instance.fire(\"isAdaptive\")\r\n };\r\n _proto._correctCollectorCoordinatesInAdaptive = function(coordinates, isAllDay) {\r\n coordinates.top = coordinates.top + this.getCollectorTopOffset(isAllDay);\r\n coordinates.left = coordinates.left + this.getCollectorLeftOffset()\r\n };\r\n _proto._initPositioningStrategy = function() {\r\n this._positioningStrategy = this._isAdaptive() ? new _uiSchedulerAppointmentsPositioningStrategy2.default(this) : new _uiSchedulerAppointmentsPositioningStrategy.default(this)\r\n };\r\n _proto.getPositioningStrategy = function() {\r\n return this._positioningStrategy\r\n };\r\n _proto.getAppointmentMinSize = function() {\r\n return APPOINTMENT_MIN_SIZE\r\n };\r\n _proto.keepAppointmentSettings = function() {\r\n return false\r\n };\r\n _proto.getDeltaTime = function() {};\r\n _proto.getAppointmentGeometry = function(coordinates) {\r\n return coordinates\r\n };\r\n _proto.needCorrectAppointmentDates = function() {\r\n return true\r\n };\r\n _proto.getDirection = function() {\r\n return \"horizontal\"\r\n };\r\n _proto.createTaskPositionMap = function(items) {\r\n delete this._maxAppointmentCountPerCell;\r\n var length = items && items.length;\r\n if (!length) {\r\n return\r\n }\r\n this._defaultWidth = this.instance.fire(\"getCellWidth\");\r\n this._defaultHeight = this.instance.fire(\"getCellHeight\");\r\n this._allDayHeight = this.instance._allDayCellHeight;\r\n var map = [];\r\n for (var i = 0; i < length; i++) {\r\n var coordinates = this._getItemPosition(items[i]);\r\n if (this._isRtl()) {\r\n coordinates = this._correctRtlCoordinates(coordinates)\r\n }\r\n map.push(coordinates)\r\n }\r\n var positionArray = this._getSortedPositions(map);\r\n var resultPositions = this._getResultPositions(positionArray);\r\n return this._getExtendedPositionMap(map, resultPositions)\r\n };\r\n _proto._getDeltaWidth = function(args, initialSize) {\r\n var intervalWidth = this.instance.fire(\"getResizableStep\") || this.getAppointmentMinSize();\r\n var initialWidth = initialSize.width;\r\n return Math.round((args.width - initialWidth) / intervalWidth)\r\n };\r\n _proto._correctRtlCoordinates = function(coordinates) {\r\n var width = coordinates[0].width || this._getAppointmentMaxWidth();\r\n coordinates.forEach(function(coordinate) {\r\n if (!coordinate.appointmentReduced) {\r\n coordinate.left -= width\r\n }\r\n });\r\n return coordinates\r\n };\r\n _proto._getAppointmentMaxWidth = function() {\r\n return this.getDefaultCellWidth()\r\n };\r\n _proto._getItemPosition = function(appointment) {\r\n var position = this._getAppointmentCoordinates(appointment);\r\n var allDay = this.isAllDay(appointment);\r\n var result = [];\r\n for (var j = 0; j < position.length; j++) {\r\n var height = this.calculateAppointmentHeight(appointment, position[j]);\r\n var width = this.calculateAppointmentWidth(appointment, position[j]);\r\n var resultWidth = width;\r\n var appointmentReduced = null;\r\n var multiWeekAppointmentParts = [];\r\n var initialRowIndex = position[j].rowIndex;\r\n var initialCellIndex = position[j].cellIndex;\r\n if (this._needVerifyItemSize() || allDay) {\r\n var currentMaxAllowedPosition = position[j].hMax;\r\n if (this.isAppointmentGreaterThan(currentMaxAllowedPosition, {\r\n left: position[j].left,\r\n width: width\r\n })) {\r\n appointmentReduced = \"head\";\r\n initialRowIndex = position[j].rowIndex;\r\n initialCellIndex = position[j].cellIndex;\r\n resultWidth = this._reduceMultiWeekAppointment(width, {\r\n left: position[j].left,\r\n right: currentMaxAllowedPosition\r\n });\r\n multiWeekAppointmentParts = this._getAppointmentParts({\r\n sourceAppointmentWidth: width,\r\n reducedWidth: resultWidth,\r\n height: height\r\n }, position[j]);\r\n if (this._isRtl()) {\r\n position[j].left = currentMaxAllowedPosition\r\n }\r\n }\r\n }(0, _extend.extend)(position[j], {\r\n height: height,\r\n width: resultWidth,\r\n allDay: allDay,\r\n rowIndex: initialRowIndex,\r\n cellIndex: initialCellIndex,\r\n appointmentReduced: appointmentReduced\r\n });\r\n result = this._getAppointmentPartsPosition(multiWeekAppointmentParts, position[j], result)\r\n }\r\n return result\r\n };\r\n _proto._getAppointmentPartsPosition = function(appointmentParts, position, result) {\r\n if (appointmentParts.length) {\r\n appointmentParts.unshift(position);\r\n result = result.concat(appointmentParts)\r\n } else {\r\n result.push(position)\r\n }\r\n return result\r\n };\r\n _proto._getAppointmentCoordinates = function(appointment) {\r\n return this.instance.fire(\"createAppointmentSettings\", appointment)\r\n };\r\n _proto._isRtl = function() {\r\n return this.instance.option(\"rtlEnabled\")\r\n };\r\n _proto._getAppointmentParts = function() {\r\n return []\r\n };\r\n _proto._getCompactAppointmentParts = function(appointmentWidth) {\r\n var cellWidth = this.getDefaultCellWidth() || this.getAppointmentMinSize();\r\n return Math.round(appointmentWidth / cellWidth)\r\n };\r\n _proto._reduceMultiWeekAppointment = function(sourceAppointmentWidth, bound) {\r\n if (this._isRtl()) {\r\n sourceAppointmentWidth = Math.floor(bound.left - bound.right)\r\n } else {\r\n sourceAppointmentWidth = bound.right - Math.floor(bound.left)\r\n }\r\n return sourceAppointmentWidth\r\n };\r\n _proto.calculateAppointmentHeight = function() {\r\n return 0\r\n };\r\n _proto.calculateAppointmentWidth = function() {\r\n return 0\r\n };\r\n _proto.isAppointmentGreaterThan = function(etalon, comparisonParameters) {\r\n var result = comparisonParameters.left + comparisonParameters.width - etalon;\r\n if (this._isRtl()) {\r\n result = etalon + comparisonParameters.width - comparisonParameters.left\r\n }\r\n return result > this.getDefaultCellWidth() / 2\r\n };\r\n _proto.isAllDay = function() {\r\n return false\r\n };\r\n _proto.cropAppointmentWidth = function(width, cellWidth) {\r\n if (this.instance.fire(\"isGroupedByDate\")) {\r\n width = cellWidth\r\n }\r\n return width\r\n };\r\n _proto._getSortedPositions = function(positionList) {\r\n var _this = this;\r\n var result = [];\r\n var round = function(value) {\r\n return Math.round(100 * value) / 100\r\n };\r\n var createItem = function(rowIndex, cellIndex, top, left, bottom, right, position, allDay) {\r\n return {\r\n i: rowIndex,\r\n j: cellIndex,\r\n top: round(top),\r\n left: round(left),\r\n bottom: round(bottom),\r\n right: round(right),\r\n cellPosition: position,\r\n allDay: allDay\r\n }\r\n };\r\n for (var rowIndex = 0, rowCount = positionList.length; rowIndex < rowCount; rowIndex++) {\r\n for (var cellIndex = 0, cellCount = positionList[rowIndex].length; cellIndex < cellCount; cellIndex++) {\r\n var _positionList$rowInde = positionList[rowIndex][cellIndex],\r\n top = _positionList$rowInde.top,\r\n left = _positionList$rowInde.left,\r\n height = _positionList$rowInde.height,\r\n width = _positionList$rowInde.width,\r\n cellPosition = _positionList$rowInde.cellPosition,\r\n allDay = _positionList$rowInde.allDay;\r\n result.push(createItem(rowIndex, cellIndex, top, left, top + height, left + width, cellPosition, allDay))\r\n }\r\n }\r\n return result.sort(function(a, b) {\r\n return _this._sortCondition(a, b)\r\n })\r\n };\r\n _proto._sortCondition = function() {};\r\n _proto._getConditions = function(a, b) {\r\n var isSomeEdge = this._isSomeEdge(a, b);\r\n return {\r\n columnCondition: isSomeEdge || this._normalizeCondition(a.left, b.left),\r\n rowCondition: isSomeEdge || this._normalizeCondition(a.top, b.top),\r\n cellPositionCondition: isSomeEdge || this._normalizeCondition(a.cellPosition, b.cellPosition)\r\n }\r\n };\r\n _proto._rowCondition = function(a, b) {\r\n var conditions = this._getConditions(a, b);\r\n return conditions.columnCondition || conditions.rowCondition\r\n };\r\n _proto._columnCondition = function(a, b) {\r\n var conditions = this._getConditions(a, b);\r\n return conditions.rowCondition || conditions.columnCondition\r\n };\r\n _proto._isSomeEdge = function(a, b) {\r\n return a.i === b.i && a.j === b.j\r\n };\r\n _proto._normalizeCondition = function(first, second) {\r\n var result = first - second;\r\n return Math.abs(result) > 1 ? result : 0\r\n };\r\n _proto._isItemsCross = function(firstItem, secondItem) {\r\n var areItemsInTheSameTable = !!firstItem.allDay === !!secondItem.allDay;\r\n var areItemsAllDay = firstItem.allDay && secondItem.allDay;\r\n if (areItemsInTheSameTable) {\r\n var orientation = this._getOrientation(areItemsAllDay);\r\n return this._checkItemsCrossing(firstItem, secondItem, orientation)\r\n } else {\r\n return false\r\n }\r\n };\r\n _proto._checkItemsCrossing = function(firstItem, secondItem, orientation) {\r\n var firstItemSide_1 = Math.floor(firstItem[orientation[0]]);\r\n var firstItemSide_2 = Math.floor(firstItem[orientation[1]]);\r\n var secondItemSide_1 = Math.ceil(secondItem[orientation[0]]);\r\n var secondItemSide_2 = Math.ceil(secondItem[orientation[1]]);\r\n var isItemCross = Math.abs(firstItem[orientation[2]] - secondItem[orientation[2]]) <= 1;\r\n return isItemCross && (firstItemSide_1 <= secondItemSide_1 && firstItemSide_2 > secondItemSide_1 || firstItemSide_1 < secondItemSide_2 && firstItemSide_2 >= secondItemSide_2 || firstItemSide_1 === secondItemSide_1 && firstItemSide_2 === secondItemSide_2)\r\n };\r\n _proto._getOrientation = function(isAllDay) {\r\n return isAllDay ? [\"left\", \"right\", \"top\"] : [\"top\", \"bottom\", \"left\"]\r\n };\r\n _proto._getResultPositions = function(sortedArray) {\r\n var _this2 = this;\r\n var result = [];\r\n var i;\r\n var sortedIndex = 0;\r\n var currentItem;\r\n var indexes;\r\n var itemIndex;\r\n var maxIndexInStack = 0;\r\n var stack = {};\r\n var findFreeIndex = function findFreeIndex(indexes, index) {\r\n var isFind = indexes.some(function(item) {\r\n return item === index\r\n });\r\n if (isFind) {\r\n return findFreeIndex(indexes, ++index)\r\n } else {\r\n return index\r\n }\r\n };\r\n var createItem = function(currentItem, index) {\r\n var currentIndex = index || 0;\r\n return {\r\n index: currentIndex,\r\n i: currentItem.i,\r\n j: currentItem.j,\r\n left: currentItem.left,\r\n right: currentItem.right,\r\n top: currentItem.top,\r\n bottom: currentItem.bottom,\r\n allDay: currentItem.allDay,\r\n sortedIndex: _this2._skipSortedIndex(currentIndex) ? null : sortedIndex++\r\n }\r\n };\r\n var startNewStack = function(currentItem) {\r\n stack.items = [createItem(currentItem)];\r\n stack.left = currentItem.left;\r\n stack.right = currentItem.right;\r\n stack.top = currentItem.top;\r\n stack.bottom = currentItem.bottom;\r\n stack.allDay = currentItem.allDay\r\n };\r\n var pushItemsInResult = function(items) {\r\n items.forEach(function(item) {\r\n result.push({\r\n index: item.index,\r\n count: maxIndexInStack + 1,\r\n i: item.i,\r\n j: item.j,\r\n sortedIndex: item.sortedIndex\r\n })\r\n })\r\n };\r\n for (i = 0; i < sortedArray.length; i++) {\r\n currentItem = sortedArray[i];\r\n indexes = [];\r\n if (!stack.items) {\r\n startNewStack(currentItem)\r\n } else {\r\n if (this._isItemsCross(stack, currentItem)) {\r\n stack.items.forEach(function(item, index) {\r\n if (_this2._isItemsCross(item, currentItem)) {\r\n indexes.push(item.index)\r\n }\r\n });\r\n itemIndex = indexes.length ? findFreeIndex(indexes, 0) : 0;\r\n stack.items.push(createItem(currentItem, itemIndex));\r\n maxIndexInStack = Math.max(itemIndex, maxIndexInStack);\r\n stack.left = Math.min(stack.left, currentItem.left);\r\n stack.right = Math.max(stack.right, currentItem.right);\r\n stack.top = Math.min(stack.top, currentItem.top);\r\n stack.bottom = Math.max(stack.bottom, currentItem.bottom);\r\n stack.allDay = currentItem.allDay\r\n } else {\r\n pushItemsInResult(stack.items);\r\n stack = {};\r\n startNewStack(currentItem);\r\n maxIndexInStack = 0\r\n }\r\n }\r\n }\r\n if (stack.items) {\r\n pushItemsInResult(stack.items)\r\n }\r\n return result.sort(function(a, b) {\r\n var columnCondition = a.j - b.j;\r\n var rowCondition = a.i - b.i;\r\n return rowCondition ? rowCondition : columnCondition\r\n })\r\n };\r\n _proto._skipSortedIndex = function(index) {\r\n return index > this._getMaxAppointmentCountPerCell() - 1\r\n };\r\n _proto._findIndexByKey = function(arr, iKey, jKey, iValue, jValue) {\r\n var result = 0;\r\n for (var i = 0, len = arr.length; i < len; i++) {\r\n if (arr[i][iKey] === iValue && arr[i][jKey] === jValue) {\r\n result = i;\r\n break\r\n }\r\n }\r\n return result\r\n };\r\n _proto._getExtendedPositionMap = function(map, positions) {\r\n var positionCounter = 0;\r\n var result = [];\r\n for (var i = 0, mapLength = map.length; i < mapLength; i++) {\r\n var resultString = [];\r\n for (var j = 0, itemLength = map[i].length; j < itemLength; j++) {\r\n map[i][j].index = positions[positionCounter].index;\r\n map[i][j].sortedIndex = positions[positionCounter].sortedIndex;\r\n map[i][j].count = positions[positionCounter++].count;\r\n resultString.push(map[i][j]);\r\n this._checkLongCompactAppointment(map[i][j], resultString)\r\n }\r\n result.push(resultString)\r\n }\r\n return result\r\n };\r\n _proto._checkLongCompactAppointment = function(item, result) {\r\n this._splitLongCompactAppointment(item, result);\r\n return result\r\n };\r\n _proto._splitLongCompactAppointment = function(item, result) {\r\n var appointmentCountPerCell = this._getMaxAppointmentCountPerCellByType(item.allDay);\r\n var compactCount = 0;\r\n if (void 0 !== appointmentCountPerCell && item.index > appointmentCountPerCell - 1) {\r\n item.isCompact = true;\r\n compactCount = this._getCompactAppointmentParts(item.width);\r\n for (var k = 1; k < compactCount; k++) {\r\n var compactPart = (0, _extend.extend)(true, {}, item);\r\n compactPart.left = this._getCompactLeftCoordinate(item.left, k);\r\n compactPart.cellIndex = compactPart.cellIndex + k;\r\n compactPart.sortedIndex = null;\r\n result.push(compactPart)\r\n }\r\n }\r\n return result\r\n };\r\n _proto.normalizeEndDateByViewEnd = function(appointment, endDate) {\r\n var result = new Date(endDate.getTime());\r\n if (!this.isAllDay(appointment)) {\r\n var viewEndDate = _date.default.roundToHour(this.instance.fire(\"getEndViewDate\"));\r\n if (result > viewEndDate) {\r\n result = viewEndDate\r\n }\r\n }\r\n var endDayHour = this.instance._getCurrentViewOption(\"endDayHour\");\r\n var allDay = this.instance.fire(\"getField\", \"allDay\", appointment);\r\n var currentViewEndTime = new Date(new Date(endDate.getTime()).setHours(endDayHour, 0, 0, 0));\r\n if (result.getTime() > currentViewEndTime.getTime() || allDay && result.getHours() < endDayHour) {\r\n result = currentViewEndTime\r\n }\r\n return result\r\n };\r\n _proto._adjustDurationByDaylightDiff = function(duration, startDate, endDate) {\r\n var daylightDiff = _utils.default.getDaylightOffset(startDate, endDate);\r\n return this._needAdjustDuration(daylightDiff) ? this._calculateDurationByDaylightDiff(duration, daylightDiff) : duration\r\n };\r\n _proto._needAdjustDuration = function(diff) {\r\n return 0 !== diff\r\n };\r\n _proto._calculateDurationByDaylightDiff = function(duration, diff) {\r\n return duration + diff * toMs(\"minute\")\r\n };\r\n _proto._getAppointmentDurationInMs = function(startDate, endDate, allDay) {\r\n return this.instance.fire(\"getAppointmentDurationInMs\", {\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: allDay\r\n })\r\n };\r\n _proto._markAppointmentAsVirtual = function(coordinates) {\r\n var isAllDay = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;\r\n var countFullWidthAppointmentInCell = this._getMaxAppointmentCountPerCellByType(isAllDay);\r\n if (coordinates.count - countFullWidthAppointmentInCell > 0) {\r\n var top = coordinates.top,\r\n left = coordinates.left;\r\n coordinates.virtual = {\r\n top: top,\r\n left: left,\r\n index: this._generateAppointmentCollectorIndex(coordinates, isAllDay),\r\n isAllDay: isAllDay\r\n }\r\n }\r\n };\r\n _proto._generateAppointmentCollectorIndex = function(_ref, isAllDay) {\r\n var groupIndex = _ref.groupIndex,\r\n rowIndex = _ref.rowIndex,\r\n cellIndex = _ref.cellIndex;\r\n return \"\".concat(groupIndex, \"-\").concat(rowIndex, \"-\").concat(cellIndex, \"-\").concat(isAllDay)\r\n };\r\n _proto._getMaxAppointmentCountPerCellByType = function(isAllDay) {\r\n var appointmentCountPerCell = this._getMaxAppointmentCountPerCell();\r\n if ((0, _type.isObject)(appointmentCountPerCell)) {\r\n return isAllDay ? this._getMaxAppointmentCountPerCell().allDay : this._getMaxAppointmentCountPerCell().simple\r\n } else {\r\n return appointmentCountPerCell\r\n }\r\n };\r\n _proto.getDropDownAppointmentWidth = function(intervalCount, isAllDay) {\r\n return this.getPositioningStrategy().getDropDownAppointmentWidth(intervalCount, isAllDay)\r\n };\r\n _proto.getDropDownAppointmentHeight = function() {\r\n return this.getPositioningStrategy().getDropDownAppointmentHeight()\r\n };\r\n _proto.getDropDownButtonAdaptiveSize = function() {\r\n return DROP_DOWN_BUTTON_ADAPTIVE_SIZE\r\n };\r\n _proto.getDefaultCellWidth = function() {\r\n return this._defaultWidth\r\n };\r\n _proto.getDefaultCellHeight = function() {\r\n return this._defaultHeight\r\n };\r\n _proto.getDefaultAllDayCellHeight = function() {\r\n return this._allDayHeight\r\n };\r\n _proto.getCollectorTopOffset = function(allDay) {\r\n return this.getPositioningStrategy().getCollectorTopOffset(allDay)\r\n };\r\n _proto.getCollectorLeftOffset = function() {\r\n return this.getPositioningStrategy().getCollectorLeftOffset()\r\n };\r\n _proto.getAppointmentDataCalculator = function() {};\r\n _proto._customizeCoordinates = function(coordinates, height, appointmentCountPerCell, topOffset, isAllDay) {\r\n var index = coordinates.index;\r\n var appointmentHeight = height / appointmentCountPerCell;\r\n var appointmentTop = coordinates.top + index * appointmentHeight;\r\n var top = appointmentTop + topOffset;\r\n var width = coordinates.width;\r\n var left = coordinates.left;\r\n if (coordinates.isCompact) {\r\n this._isAdaptive() && this._correctCollectorCoordinatesInAdaptive(coordinates, isAllDay);\r\n this._markAppointmentAsVirtual(coordinates, isAllDay)\r\n }\r\n return {\r\n height: appointmentHeight,\r\n width: width,\r\n top: top,\r\n left: left,\r\n empty: this._isAppointmentEmpty(height, width)\r\n }\r\n };\r\n _proto._isAppointmentEmpty = function(height, width) {\r\n return height < this._getAppointmentMinHeight() || width < this._getAppointmentMinWidth()\r\n };\r\n _proto._calculateGeometryConfig = function(coordinates) {\r\n var overlappingMode = this.instance.fire(\"getMaxAppointmentsPerCell\");\r\n var offsets = this._getOffsets();\r\n var appointmentDefaultOffset = this._getAppointmentDefaultOffset();\r\n var appointmentCountPerCell = this._getAppointmentCount(overlappingMode, coordinates);\r\n var ratio = this._getDefaultRatio(coordinates, appointmentCountPerCell);\r\n var maxHeight = this._getMaxHeight();\r\n if (!(0, _type.isNumeric)(appointmentCountPerCell)) {\r\n appointmentCountPerCell = coordinates.count;\r\n ratio = (maxHeight - offsets.unlimited) / maxHeight\r\n }\r\n var topOffset = (1 - ratio) * maxHeight;\r\n if (\"auto\" === overlappingMode || (0, _type.isNumeric)(overlappingMode)) {\r\n ratio = 1;\r\n maxHeight -= appointmentDefaultOffset;\r\n topOffset = appointmentDefaultOffset\r\n }\r\n return {\r\n height: ratio * maxHeight,\r\n appointmentCountPerCell: appointmentCountPerCell,\r\n offset: topOffset\r\n }\r\n };\r\n _proto._getAppointmentCount = function() {};\r\n _proto._getDefaultRatio = function() {};\r\n _proto._getOffsets = function() {};\r\n _proto._getMaxHeight = function() {};\r\n _proto._needVerifyItemSize = function() {\r\n return false\r\n };\r\n _proto.needSeparateAppointment = function(allDay) {\r\n return this.instance.fire(\"isGroupedByDate\") && allDay\r\n };\r\n _proto._getMaxAppointmentCountPerCell = function() {\r\n if (!this._maxAppointmentCountPerCell) {\r\n var overlappingMode = this.instance.fire(\"getMaxAppointmentsPerCell\");\r\n var appointmentCountPerCell;\r\n if ((0, _type.isNumeric)(overlappingMode)) {\r\n appointmentCountPerCell = overlappingMode\r\n }\r\n if (\"auto\" === overlappingMode) {\r\n appointmentCountPerCell = this._getDynamicAppointmentCountPerCell()\r\n }\r\n if (\"unlimited\" === overlappingMode) {\r\n appointmentCountPerCell = void 0\r\n }\r\n this._maxAppointmentCountPerCell = appointmentCountPerCell\r\n }\r\n return this._maxAppointmentCountPerCell\r\n };\r\n _proto._getDynamicAppointmentCountPerCell = function() {\r\n return this.getPositioningStrategy().getDynamicAppointmentCountPerCell()\r\n };\r\n _proto.hasAllDayAppointments = function() {\r\n return false\r\n };\r\n _proto._isCompactTheme = function() {\r\n return \"compact\" === ((0, _themes.current)() || \"\").split(\".\").pop()\r\n };\r\n _proto._getAppointmentDefaultOffset = function() {\r\n return this.getPositioningStrategy().getAppointmentDefaultOffset()\r\n };\r\n _proto._getAppointmentDefaultHeight = function() {\r\n return this._getAppointmentHeightByTheme()\r\n };\r\n _proto._getAppointmentMinHeight = function() {\r\n return this._getAppointmentDefaultHeight()\r\n };\r\n _proto._getAppointmentHeightByTheme = function() {\r\n return this._isCompactTheme() ? COMPACT_THEME_APPOINTMENT_DEFAULT_HEIGHT : APPOINTMENT_DEFAULT_HEIGHT\r\n };\r\n _proto._getAppointmentDefaultWidth = function() {\r\n return this.getPositioningStrategy()._getAppointmentDefaultWidth()\r\n };\r\n _proto._getAppointmentMinWidth = function() {\r\n return this._getAppointmentDefaultWidth()\r\n };\r\n _proto._needVerticalGroupBounds = function() {\r\n return false\r\n };\r\n _proto._needHorizontalGroupBounds = function() {\r\n return false\r\n };\r\n _createClass(BaseRenderingStrategy, [{\r\n key: \"isVirtualScrolling\",\r\n get: function() {\r\n return this.instance.fire(\"isVirtualScrolling\")\r\n }\r\n }]);\r\n return BaseRenderingStrategy\r\n}();\r\nvar _default = BaseRenderingStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/recurrence.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.getRecurrenceProcessor = getRecurrenceProcessor;\r\nvar _errors = _interopRequireDefault(require(\"../../core/errors\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _rrule = require(\"rrule\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _utilsTimeZone = _interopRequireDefault(require(\"./utils.timeZone.js\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _slicedToArray(arr, i) {\r\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest()\r\n}\r\n\r\nfunction _nonIterableRest() {\r\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n if (!o) {\r\n return\r\n }\r\n if (\"string\" === typeof o) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n var n = Object.prototype.toString.call(o).slice(8, -1);\r\n if (\"Object\" === n && o.constructor) {\r\n n = o.constructor.name\r\n }\r\n if (\"Map\" === n || \"Set\" === n) {\r\n return Array.from(o)\r\n }\r\n if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n if (null == len || len > arr.length) {\r\n len = arr.length\r\n }\r\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i]\r\n }\r\n return arr2\r\n}\r\n\r\nfunction _iterableToArrayLimit(arr, i) {\r\n var _i = arr && (\"undefined\" !== typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]);\r\n if (null == _i) {\r\n return\r\n }\r\n var _arr = [];\r\n var _n = true;\r\n var _d = false;\r\n var _s, _e;\r\n try {\r\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\r\n _arr.push(_s.value);\r\n if (i && _arr.length === i) {\r\n break\r\n }\r\n }\r\n } catch (err) {\r\n _d = true;\r\n _e = err\r\n } finally {\r\n try {\r\n if (!_n && null != _i.return) {\r\n _i.return()\r\n }\r\n } finally {\r\n if (_d) {\r\n throw _e\r\n }\r\n }\r\n }\r\n return _arr\r\n}\r\n\r\nfunction _arrayWithHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return arr\r\n }\r\n}\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar ruleNames = [\"freq\", \"interval\", \"byday\", \"byweekno\", \"byyearday\", \"bymonth\", \"bymonthday\", \"count\", \"until\", \"byhour\", \"byminute\", \"bysecond\", \"bysetpos\", \"wkst\"];\r\nvar freqNames = [\"DAILY\", \"WEEKLY\", \"MONTHLY\", \"YEARLY\", \"SECONDLY\", \"MINUTELY\", \"HOURLY\"];\r\nvar days = {\r\n SU: 0,\r\n MO: 1,\r\n TU: 2,\r\n WE: 3,\r\n TH: 4,\r\n FR: 5,\r\n SA: 6\r\n};\r\nvar loggedWarnings = [];\r\nvar recurrence = null;\r\n\r\nfunction getRecurrenceProcessor() {\r\n if (!recurrence) {\r\n recurrence = new RecurrenceProcessor\r\n }\r\n return recurrence\r\n}\r\nvar RecurrenceProcessor = function() {\r\n function RecurrenceProcessor() {\r\n this.rRule = null;\r\n this.rRuleSet = null;\r\n this.validator = new RecurrenceValidator\r\n }\r\n var _proto = RecurrenceProcessor.prototype;\r\n _proto.generateDates = function(options) {\r\n var result = [];\r\n var recurrenceRule = this.evalRecurrenceRule(options.rule);\r\n var rule = recurrenceRule.rule;\r\n if (!recurrenceRule.isValid || !rule.freq) {\r\n return result\r\n }\r\n var startDateUtc = _utilsTimeZone.default.createUTCDateWithLocalOffset(options.start);\r\n var endDateUtc = _utilsTimeZone.default.createUTCDateWithLocalOffset(options.end);\r\n var minDateUtc = _utilsTimeZone.default.createUTCDateWithLocalOffset(options.min);\r\n var maxDateUtc = _utilsTimeZone.default.createUTCDateWithLocalOffset(options.max);\r\n var duration = endDateUtc ? endDateUtc.getTime() - startDateUtc.getTime() : 0;\r\n this._initializeRRule(options, startDateUtc);\r\n var minTime = minDateUtc.getTime();\r\n var leftBorder = this._getLeftBorder(options, minDateUtc, duration);\r\n this.rRuleSet.between(leftBorder, maxDateUtc, true).forEach(function(date) {\r\n var endAppointmentTime = date.getTime() + duration;\r\n if (endAppointmentTime >= minTime) {\r\n var correctDate = _utilsTimeZone.default.createDateFromUTCWithLocalOffset(date);\r\n result.push(correctDate)\r\n }\r\n });\r\n return result\r\n };\r\n _proto.hasRecurrence = function(options) {\r\n return !!this.generateDates(options).length\r\n };\r\n _proto.evalRecurrenceRule = function(rule) {\r\n var result = {\r\n rule: {},\r\n isValid: false\r\n };\r\n if (rule) {\r\n result.rule = this._parseRecurrenceRule(rule);\r\n result.isValid = this.validator.validateRRule(result.rule, rule)\r\n }\r\n return result\r\n };\r\n _proto.isValidRecurrenceRule = function(rule) {\r\n return this.evalRecurrenceRule(rule).isValid\r\n };\r\n _proto.daysFromByDayRule = function(rule) {\r\n var result = [];\r\n if (rule.byday) {\r\n if (Array.isArray(rule.byday)) {\r\n result = rule.byday\r\n } else {\r\n result = rule.byday.split(\",\")\r\n }\r\n }\r\n return result.map(function(item) {\r\n var match = item.match(/[A-Za-z]+/);\r\n return !!match && match[0]\r\n }).filter(function(item) {\r\n return !!item\r\n })\r\n };\r\n _proto.getAsciiStringByDate = function(date) {\r\n var currentOffset = date.getTimezoneOffset() * toMs(\"minute\");\r\n var offsetDate = new Date(date.getTime() + currentOffset);\r\n return offsetDate.getFullYear() + (\"0\" + (offsetDate.getMonth() + 1)).slice(-2) + (\"0\" + offsetDate.getDate()).slice(-2) + \"T\" + (\"0\" + offsetDate.getHours()).slice(-2) + (\"0\" + offsetDate.getMinutes()).slice(-2) + (\"0\" + offsetDate.getSeconds()).slice(-2) + \"Z\"\r\n };\r\n _proto.getRecurrenceString = function(object) {\r\n if (!object || !object.freq) {\r\n return\r\n }\r\n var result = \"\";\r\n for (var field in object) {\r\n var value = object[field];\r\n if (\"interval\" === field && value < 2) {\r\n continue\r\n }\r\n if (\"until\" === field) {\r\n value = this.getAsciiStringByDate(value)\r\n }\r\n result += field + \"=\" + value + \";\"\r\n }\r\n result = result.substring(0, result.length - 1);\r\n return result.toUpperCase()\r\n };\r\n _proto._parseExceptionToRawArray = function(value) {\r\n return value.match(/(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2}))?(Z)?/)\r\n };\r\n _proto.getDateByAsciiString = function(exceptionText) {\r\n if (\"string\" !== typeof exceptionText) {\r\n return exceptionText\r\n }\r\n var result = this._parseExceptionToRawArray(exceptionText);\r\n if (!result) {\r\n return null\r\n }\r\n var _this$_createDateTupl = this._createDateTuple(result),\r\n _this$_createDateTupl2 = _slicedToArray(_this$_createDateTupl, 7),\r\n year = _this$_createDateTupl2[0],\r\n month = _this$_createDateTupl2[1],\r\n date = _this$_createDateTupl2[2],\r\n hours = _this$_createDateTupl2[3],\r\n minutes = _this$_createDateTupl2[4],\r\n seconds = _this$_createDateTupl2[5],\r\n isUtc = _this$_createDateTupl2[6];\r\n if (isUtc) {\r\n return new Date(Date.UTC(year, month, date, hours, minutes, seconds))\r\n }\r\n return new Date(year, month, date, hours, minutes, seconds)\r\n };\r\n _proto._dispose = function() {\r\n if (this.rRuleSet) {\r\n delete this.rRuleSet;\r\n this.rRuleSet = null\r\n }\r\n if (this.rRule) {\r\n delete this.rRule;\r\n this.rRule = null\r\n }\r\n };\r\n _proto._getTimeZoneOffset = function() {\r\n return (new Date).getTimezoneOffset()\r\n };\r\n _proto._initializeRRule = function(options, startDateUtc) {\r\n var _this = this;\r\n var ruleOptions = _rrule.RRule.parseString(options.rule);\r\n var firstDayOfWeek = options.firstDayOfWeek;\r\n ruleOptions.dtstart = startDateUtc;\r\n if (!ruleOptions.wkst && firstDayOfWeek) {\r\n var weekDayNumbers = [6, 0, 1, 2, 3, 4, 5];\r\n ruleOptions.wkst = weekDayNumbers[firstDayOfWeek]\r\n }\r\n this._createRRule(ruleOptions);\r\n if (options.exception) {\r\n var exceptionStrings = options.exception;\r\n var exceptionDates = exceptionStrings.split(\",\").map(function(rule) {\r\n return _this.getDateByAsciiString(rule)\r\n });\r\n exceptionDates.forEach(function(date) {\r\n if (options.getPostProcessedException) {\r\n date = options.getPostProcessedException(date)\r\n }\r\n var utcDate = _utilsTimeZone.default.createUTCDateWithLocalOffset(date);\r\n _this.rRuleSet.exdate(utcDate)\r\n })\r\n }\r\n };\r\n _proto._createRRule = function(ruleOptions) {\r\n this._dispose();\r\n var rRuleSet = new _rrule.RRuleSet;\r\n this.rRuleSet = rRuleSet;\r\n this.rRule = new _rrule.RRule(ruleOptions);\r\n this.rRuleSet.rrule(this.rRule)\r\n };\r\n _proto._getLeftBorder = function(options, minDateUtc, appointmentDuration) {\r\n if (options.end && !_utilsTimeZone.default.isSameAppointmentDates(options.start, options.end)) {\r\n return new Date(minDateUtc.getTime() - appointmentDuration)\r\n }\r\n return minDateUtc\r\n };\r\n _proto._parseRecurrenceRule = function(recurrence) {\r\n var ruleObject = {};\r\n var ruleParts = recurrence.split(\";\");\r\n for (var i = 0, len = ruleParts.length; i < len; i++) {\r\n var rule = ruleParts[i].split(\"=\");\r\n var ruleName = rule[0].toLowerCase();\r\n var ruleValue = rule[1];\r\n ruleObject[ruleName] = ruleValue\r\n }\r\n var count = parseInt(ruleObject.count);\r\n if (!isNaN(count)) {\r\n ruleObject.count = count\r\n }\r\n if (ruleObject.interval) {\r\n var interval = parseInt(ruleObject.interval);\r\n if (!isNaN(interval)) {\r\n ruleObject.interval = interval\r\n }\r\n } else {\r\n ruleObject.interval = 1\r\n }\r\n if (ruleObject.freq && ruleObject.until) {\r\n ruleObject.until = this.getDateByAsciiString(ruleObject.until)\r\n }\r\n return ruleObject\r\n };\r\n _proto._createDateTuple = function(parseResult) {\r\n var isUtc = void 0 !== parseResult[8];\r\n parseResult.shift();\r\n if (void 0 === parseResult[3]) {\r\n parseResult.splice(3)\r\n } else {\r\n parseResult.splice(3, 1);\r\n parseResult.splice(6)\r\n }\r\n parseResult[1]--;\r\n parseResult.unshift(null);\r\n return [parseInt(parseResult[1]), parseInt(parseResult[2]), parseInt(parseResult[3]), parseInt(parseResult[4]) || 0, parseInt(parseResult[5]) || 0, parseInt(parseResult[6]) || 0, isUtc]\r\n };\r\n return RecurrenceProcessor\r\n}();\r\nvar RecurrenceValidator = function() {\r\n function RecurrenceValidator() {}\r\n var _proto2 = RecurrenceValidator.prototype;\r\n _proto2.validateRRule = function(rule, recurrence) {\r\n if (this._brokenRuleNameExists(rule) || (0, _array.inArray)(rule.freq, freqNames) === -1 || this._wrongCountRule(rule) || this._wrongIntervalRule(rule) || this._wrongDayOfWeek(rule) || this._wrongByMonthDayRule(rule) || this._wrongByMonth(rule) || this._wrongUntilRule(rule)) {\r\n this._logBrokenRule(recurrence);\r\n return false\r\n }\r\n return true\r\n };\r\n _proto2._wrongUntilRule = function(rule) {\r\n var wrongUntil = false;\r\n var until = rule.until;\r\n if (void 0 !== until && !(until instanceof Date)) {\r\n wrongUntil = true\r\n }\r\n return wrongUntil\r\n };\r\n _proto2._wrongCountRule = function(rule) {\r\n var wrongCount = false;\r\n var count = rule.count;\r\n if (count && \"string\" === typeof count) {\r\n wrongCount = true\r\n }\r\n return wrongCount\r\n };\r\n _proto2._wrongByMonthDayRule = function(rule) {\r\n var wrongByMonthDay = false;\r\n var byMonthDay = rule.bymonthday;\r\n if (byMonthDay && isNaN(parseInt(byMonthDay))) {\r\n wrongByMonthDay = true\r\n }\r\n return wrongByMonthDay\r\n };\r\n _proto2._wrongByMonth = function(rule) {\r\n var wrongByMonth = false;\r\n var byMonth = rule.bymonth;\r\n if (byMonth && isNaN(parseInt(byMonth))) {\r\n wrongByMonth = true\r\n }\r\n return wrongByMonth\r\n };\r\n _proto2._wrongIntervalRule = function(rule) {\r\n var wrongInterval = false;\r\n var interval = rule.interval;\r\n if (interval && \"string\" === typeof interval) {\r\n wrongInterval = true\r\n }\r\n return wrongInterval\r\n };\r\n _proto2._wrongDayOfWeek = function(rule) {\r\n var byDay = rule.byday;\r\n var daysByRule = getRecurrenceProcessor().daysFromByDayRule(rule);\r\n var brokenDaysExist = false;\r\n if (\"\" === byDay) {\r\n brokenDaysExist = true\r\n }(0, _iterator.each)(daysByRule, function(_, day) {\r\n if (!Object.prototype.hasOwnProperty.call(days, day)) {\r\n brokenDaysExist = true;\r\n return false\r\n }\r\n });\r\n return brokenDaysExist\r\n };\r\n _proto2._brokenRuleNameExists = function(rule) {\r\n var brokenRuleExists = false;\r\n (0, _iterator.each)(rule, function(ruleName) {\r\n if ((0, _array.inArray)(ruleName, ruleNames) === -1) {\r\n brokenRuleExists = true;\r\n return false\r\n }\r\n });\r\n return brokenRuleExists\r\n };\r\n _proto2._logBrokenRule = function(recurrence) {\r\n if ((0, _array.inArray)(recurrence, loggedWarnings) === -1) {\r\n _errors.default.log(\"W0006\", recurrence);\r\n loggedWarnings.push(recurrence)\r\n }\r\n };\r\n return RecurrenceValidator\r\n}();\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/cache.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.cache = exports.Cache = void 0;\r\nvar _type = require(\"../../../core/utils/type\");\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n return Constructor\r\n}\r\nvar Cache = function() {\r\n function Cache() {\r\n this._init()\r\n }\r\n var _proto = Cache.prototype;\r\n _proto._init = function() {\r\n this._cache = new Map\r\n };\r\n _proto.clear = function() {\r\n this._init()\r\n };\r\n _proto.get = function(name, callback) {\r\n if (!this._cache.has(name) && callback) {\r\n this.set(name, callback())\r\n }\r\n return this._cache.get(name)\r\n };\r\n _proto.set = function(name, value) {\r\n (0, _type.isDefined)(value) && this._cache.set(name, value)\r\n };\r\n _createClass(Cache, [{\r\n key: \"size\",\r\n get: function() {\r\n return this._cache.size\r\n }\r\n }]);\r\n return Cache\r\n}();\r\nexports.Cache = Cache;\r\nvar cache = new Cache;\r\nexports.cache = cache;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.timeline_day.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.timeline\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline-day\";\r\nvar SchedulerTimelineDay = function(_SchedulerTimeline) {\r\n _inheritsLoose(SchedulerTimelineDay, _SchedulerTimeline);\r\n\r\n function SchedulerTimelineDay() {\r\n return _SchedulerTimeline.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerTimelineDay.prototype;\r\n _proto._getElementClass = function() {\r\n return TIMELINE_CLASS\r\n };\r\n _proto._setFirstViewDate = function() {\r\n this._firstViewDate = this.option(\"currentDate\");\r\n this._setStartDayHour(this._firstViewDate)\r\n };\r\n _proto._needRenderWeekHeader = function() {\r\n return this._isWorkSpaceWithCount()\r\n };\r\n return SchedulerTimelineDay\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerTimelineDay\", SchedulerTimelineDay);\r\nvar _default = SchedulerTimelineDay;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/time_panel/cell.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\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.TimePanelCell = TimePanelCell;\r\nexports.TimePanelCellProps = exports.viewFunction = void 0;\r\nvar _cell = require(\"../cell\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = _objectWithoutPropertiesLoose(source, excluded);\r\n var key, i;\r\n if (Object.getOwnPropertySymbols) {\r\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n key = sourceSymbolKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = {};\r\n var sourceKeys = Object.keys(source);\r\n var key, i;\r\n for (i = 0; i < sourceKeys.length; i++) {\r\n key = sourceKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n return target\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n if (enumerableOnly) {\r\n symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })\r\n }\r\n keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n })\r\n } else {\r\n if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n } else {\r\n ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\n\r\nfunction _extends() {\r\n _extends = Object.assign || function(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = arguments[i];\r\n for (var key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n target[key] = source[key]\r\n }\r\n }\r\n }\r\n return target\r\n };\r\n return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n return Preact.h(_cell.CellBase, _extends({}, viewModel.restAttributes, {\r\n isFirstGroupCell: viewModel.props.isFirstGroupCell,\r\n isLastGroupCell: viewModel.props.isLastGroupCell,\r\n contentTemplate: viewModel.props.timeCellTemplate,\r\n contentTemplateProps: viewModel.timeCellTemplateProps,\r\n className: \"dx-scheduler-time-panel-cell dx-scheduler-cell-sizes-vertical \".concat(viewModel.props.className)\r\n }), Preact.h(\"div\", null, viewModel.props.text))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar TimePanelCellProps = _objectSpread({}, _cell.CellBaseProps);\r\nexports.TimePanelCellProps = TimePanelCellProps;\r\nvar getTemplate = function(TemplateProp) {\r\n return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n return Preact.h(TemplateProp, _extends({}, props))\r\n } : TemplateProp)\r\n};\r\n\r\nfunction TimePanelCell(props) {\r\n var __timeCellTemplateProps = (0, _hooks.useCallback)(function() {\r\n var groupIndex = props.groupIndex,\r\n groups = props.groups,\r\n index = props.index,\r\n startDate = props.startDate,\r\n text = props.text;\r\n return {\r\n data: {\r\n date: startDate,\r\n groups: groups,\r\n groupIndex: groupIndex,\r\n text: text\r\n },\r\n index: index\r\n }\r\n }, [props.groupIndex, props.groups, props.index, props.startDate, props.text]);\r\n var __restAttributes = (0, _hooks.useCallback)(function() {\r\n var restProps = (props.allDay, props.children, props.className, props.contentTemplate, props.contentTemplateProps, props.endDate, props.groupIndex, props.groups, props.index, props.isFirstGroupCell, props.isLastGroupCell, props.startDate, props.text, props.timeCellTemplate, _objectWithoutProperties(props, [\"allDay\", \"children\", \"className\", \"contentTemplate\", \"contentTemplateProps\", \"endDate\", \"groupIndex\", \"groups\", \"index\", \"isFirstGroupCell\", \"isLastGroupCell\", \"startDate\", \"text\", \"timeCellTemplate\"]));\r\n return restProps\r\n }, [props]);\r\n return viewFunction({\r\n props: _objectSpread(_objectSpread({}, props), {}, {\r\n timeCellTemplate: getTemplate(props.timeCellTemplate),\r\n contentTemplate: getTemplate(props.contentTemplate)\r\n }),\r\n timeCellTemplateProps: __timeCellTemplateProps(),\r\n restAttributes: __restAttributes()\r\n })\r\n}\r\nTimePanelCell.defaultProps = _objectSpread({}, TimePanelCellProps);\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../../events/core/events_engine\"));\r\nvar _element_data = require(\"../../../core/element_data\");\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\nvar _window = require(\"../../../core/utils/window\");\r\nvar _element = require(\"../../../core/element\");\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _position = require(\"../../../core/utils/position\");\r\nvar _message = _interopRequireDefault(require(\"../../../localization/message\"));\r\nvar _date2 = _interopRequireDefault(require(\"../../../localization/date\"));\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _index = require(\"../../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../../events/pointer\"));\r\nvar _ui = _interopRequireDefault(require(\"../../widget/ui.errors\"));\r\nvar _click = require(\"../../../events/click\");\r\nvar _contextmenu = require(\"../../../events/contextmenu\");\r\nvar _drag = require(\"../../../events/drag\");\r\nvar _ui2 = _interopRequireDefault(require(\"../../scroll_view/ui.scrollable\"));\r\nvar _uiSchedulerWork_spaceGroupedStrategy = _interopRequireDefault(require(\"./ui.scheduler.work_space.grouped.strategy.horizontal\"));\r\nvar _uiSchedulerWork_spaceGroupedStrategy2 = _interopRequireDefault(require(\"./ui.scheduler.work_space.grouped.strategy.vertical\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"../ui.scheduler.table_creator\"));\r\nvar _uiSchedulerCurrent_time_shader = _interopRequireDefault(require(\"../shaders/ui.scheduler.current_time_shader.vertical\"));\r\nvar _appointmentDragBehavior = _interopRequireDefault(require(\"../appointmentDragBehavior\"));\r\nvar _constants = require(\"../constants\");\r\nvar _utils = _interopRequireDefault(require(\"../utils.timeZone\"));\r\nvar _widgetObserver = _interopRequireDefault(require(\"../base/widgetObserver\"));\r\nvar _translator = require(\"../../../animation/translator\");\r\nvar _uiScheduler2 = _interopRequireDefault(require(\"./ui.scheduler.virtual_scrolling\"));\r\nvar _view_data_provider = _interopRequireDefault(require(\"./view_data_provider\"));\r\nvar _layout = _interopRequireDefault(require(\"../../../renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/layout.j\"));\r\nvar _title = _interopRequireDefault(require(\"../../../renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.j\"));\r\nvar _layout2 = _interopRequireDefault(require(\"../../../renovation/ui/scheduler/workspaces/base/time_panel/layout.j\"));\r\nvar _virtual_selection_state = _interopRequireDefault(require(\"./virtual_selection_state\"));\r\nvar _cache = require(\"./cache\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = _objectWithoutPropertiesLoose(source, excluded);\r\n var key, i;\r\n if (Object.getOwnPropertySymbols) {\r\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n key = sourceSymbolKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = {};\r\n var sourceKeys = Object.keys(source);\r\n var key, i;\r\n for (i = 0; i < sourceKeys.length; i++) {\r\n key = sourceKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n return target\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n if (enumerableOnly) {\r\n symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })\r\n }\r\n keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n })\r\n } else {\r\n if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n } else {\r\n ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\n\r\nfunction _defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) {\r\n descriptor.writable = true\r\n }\r\n Object.defineProperty(target, descriptor.key, descriptor)\r\n }\r\n}\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) {\r\n if (protoProps) {\r\n _defineProperties(Constructor.prototype, protoProps)\r\n }\r\n if (staticProps) {\r\n _defineProperties(Constructor, staticProps)\r\n }\r\n return Constructor\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar tableCreator = _uiScheduler.default.tableCreator;\r\nvar abstract = _widgetObserver.default.abstract;\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar COMPONENT_CLASS = \"dx-scheduler-work-space\";\r\nvar GROUPED_WORKSPACE_CLASS = \"dx-scheduler-work-space-grouped\";\r\nvar VERTICAL_GROUPED_WORKSPACE_CLASS = \"dx-scheduler-work-space-vertical-grouped\";\r\nvar WORKSPACE_VERTICAL_GROUP_TABLE_CLASS = \"dx-scheduler-work-space-vertical-group-table\";\r\nvar WORKSPACE_WITH_BOTH_SCROLLS_CLASS = \"dx-scheduler-work-space-both-scrollbar\";\r\nvar WORKSPACE_WITH_COUNT_CLASS = \"dx-scheduler-work-space-count\";\r\nvar WORKSPACE_WITH_GROUP_BY_DATE_CLASS = \"dx-scheduler-work-space-group-by-date\";\r\nvar WORKSPACE_WITH_ODD_CELLS_CLASS = \"dx-scheduler-work-space-odd-cells\";\r\nvar TIME_PANEL_CLASS = \"dx-scheduler-time-panel\";\r\nvar TIME_PANEL_CELL_CLASS = \"dx-scheduler-time-panel-cell\";\r\nvar TIME_PANEL_ROW_CLASS = \"dx-scheduler-time-panel-row\";\r\nvar ALL_DAY_PANEL_CLASS = \"dx-scheduler-all-day-panel\";\r\nvar ALL_DAY_TABLE_CLASS = \"dx-scheduler-all-day-table\";\r\nvar ALL_DAY_CONTAINER_CLASS = \"dx-scheduler-all-day-appointments\";\r\nvar ALL_DAY_TITLE_CLASS = \"dx-scheduler-all-day-title\";\r\nvar ALL_DAY_TITLE_HIDDEN_CLASS = \"dx-scheduler-all-day-title-hidden\";\r\nvar ALL_DAY_TABLE_CELL_CLASS = \"dx-scheduler-all-day-table-cell\";\r\nvar ALL_DAY_TABLE_ROW_CLASS = \"dx-scheduler-all-day-table-row\";\r\nvar WORKSPACE_WITH_ALL_DAY_CLASS = \"dx-scheduler-work-space-all-day\";\r\nvar WORKSPACE_WITH_COLLAPSED_ALL_DAY_CLASS = \"dx-scheduler-work-space-all-day-collapsed\";\r\nvar WORKSPACE_WITH_MOUSE_SELECTION_CLASS = \"dx-scheduler-work-space-mouse-selection\";\r\nvar HORIZONTAL_SIZES_CLASS = \"dx-scheduler-cell-sizes-horizontal\";\r\nvar VERTICAL_SIZES_CLASS = \"dx-scheduler-cell-sizes-vertical\";\r\nvar HEADER_PANEL_CLASS = \"dx-scheduler-header-panel\";\r\nvar HEADER_PANEL_CELL_CLASS = \"dx-scheduler-header-panel-cell\";\r\nvar HEADER_ROW_CLASS = \"dx-scheduler-header-row\";\r\nvar GROUP_ROW_CLASS = \"dx-scheduler-group-row\";\r\nvar GROUP_HEADER_CLASS = \"dx-scheduler-group-header\";\r\nvar GROUP_HEADER_CONTENT_CLASS = \"dx-scheduler-group-header-content\";\r\nvar DATE_TABLE_CLASS = \"dx-scheduler-date-table\";\r\nvar DATE_TABLE_CELL_CLASS = \"dx-scheduler-date-table-cell\";\r\nvar DATE_TABLE_ROW_CLASS = \"dx-scheduler-date-table-row\";\r\nvar DATE_TABLE_FOCUSED_CELL_CLASS = \"dx-scheduler-focused-cell\";\r\nvar VIRTUAL_ROW_CLASS = \"dx-scheduler-virtual-row\";\r\nvar VIRTUAL_CELL_CLASS = \"dx-scheduler-virtual-cell\";\r\nvar DATE_TABLE_DROPPABLE_CELL_CLASS = \"dx-scheduler-date-table-droppable-cell\";\r\nvar SCHEDULER_HEADER_SCROLLABLE_CLASS = \"dx-scheduler-header-scrollable\";\r\nvar SCHEDULER_SIDEBAR_SCROLLABLE_CLASS = \"dx-scheduler-sidebar-scrollable\";\r\nvar SCHEDULER_DATE_TABLE_SCROLLABLE_CLASS = \"dx-scheduler-date-table-scrollable\";\r\nvar SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, \"dxSchedulerWorkSpace\");\r\nvar SCHEDULER_CELL_DXDRAGENTER_EVENT_NAME = (0, _index.addNamespace)(_drag.enter, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXDROP_EVENT_NAME = (0, _index.addNamespace)(_drag.drop, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXDRAGLEAVE_EVENT_NAME = (0, _index.addNamespace)(_drag.leave, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXCLICK_EVENT_NAME = (0, _index.addNamespace)(_click.name, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.move, \"dxSchedulerDateTable\");\r\nvar CELL_DATA = \"dxCellData\";\r\nvar DATE_TABLE_CELL_BORDER = 1;\r\nvar DATE_TABLE_MIN_CELL_WIDTH = 75;\r\nvar DAY_MS = toMs(\"day\");\r\nvar HOUR_MS = toMs(\"hour\");\r\nvar SCHEDULER_DRAG_AND_DROP_SELECTOR = \".\".concat(DATE_TABLE_CLASS, \" td, .\").concat(ALL_DAY_TABLE_CLASS, \" td\");\r\nvar CELL_SELECTOR = \".\".concat(DATE_TABLE_CELL_CLASS, \", .\").concat(ALL_DAY_TABLE_CELL_CLASS);\r\nvar ScrollSemaphore = function() {\r\n function ScrollSemaphore() {\r\n this.counter = 0\r\n }\r\n var _proto = ScrollSemaphore.prototype;\r\n _proto.isFree = function() {\r\n return 0 === this.counter\r\n };\r\n _proto.take = function() {\r\n this.counter++\r\n };\r\n _proto.release = function() {\r\n this.counter--;\r\n if (this.counter < 0) {\r\n this.counter = 0\r\n }\r\n };\r\n return ScrollSemaphore\r\n}();\r\nvar formatWeekday = function(date) {\r\n return _date2.default.getDayNames(\"abbreviated\")[date.getDay()]\r\n};\r\nvar SchedulerWorkSpace = function(_WidgetObserver) {\r\n _inheritsLoose(SchedulerWorkSpace, _WidgetObserver);\r\n\r\n function SchedulerWorkSpace() {\r\n return _WidgetObserver.apply(this, arguments) || this\r\n }\r\n var _proto2 = SchedulerWorkSpace.prototype;\r\n _proto2._supportedKeys = function() {\r\n var clickHandler = function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (this._selectedCells && this._selectedCells.length) {\r\n var $itemElement = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n var $cellElement = (0, _renderer.default)($itemElement.length ? $itemElement : this._selectedCells);\r\n e.target = this._selectedCells;\r\n this._showPopup = true;\r\n this._cellClickAction({\r\n event: e,\r\n cellElement: (0, _renderer.default)(this._selectedCells),\r\n cellData: this.getCellData($cellElement)\r\n })\r\n }\r\n };\r\n var arrowPressHandler = function(e, cell) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._moveToCell(cell, e.shiftKey)\r\n };\r\n return (0, _extend.extend)(_WidgetObserver.prototype._supportedKeys.call(this), {\r\n enter: clickHandler,\r\n space: clickHandler,\r\n downArrow: function(e) {\r\n var $cell = this._getCellFromNextRow(\"next\", e.shiftKey);\r\n arrowPressHandler.call(this, e, $cell)\r\n },\r\n upArrow: function(e) {\r\n var $cell = this._getCellFromNextRow(\"prev\", e.shiftKey);\r\n arrowPressHandler.call(this, e, $cell)\r\n },\r\n rightArrow: function(e) {\r\n var $rightCell = this._getCellFromNextColumn(\"next\", e.shiftKey);\r\n arrowPressHandler.call(this, e, $rightCell)\r\n },\r\n leftArrow: function(e) {\r\n var $leftCell = this._getCellFromNextColumn(\"prev\", e.shiftKey);\r\n arrowPressHandler.call(this, e, $leftCell)\r\n }\r\n })\r\n };\r\n _proto2._dispose = function() {\r\n var _this$virtualScrollin;\r\n _WidgetObserver.prototype._dispose.call(this);\r\n null === (_this$virtualScrollin = this.virtualScrollingDispatcher) || void 0 === _this$virtualScrollin ? void 0 : _this$virtualScrollin.dispose();\r\n this._disposeRenovatedComponents()\r\n };\r\n _proto2._isRTL = function() {\r\n return this.option(\"rtlEnabled\")\r\n };\r\n _proto2._getFocusedCell = function() {\r\n return this._$focusedCell || this._$dateTable.find(\".\" + DATE_TABLE_CELL_CLASS).eq(0)\r\n };\r\n _proto2._getAllFocusedCells = function() {\r\n return this._selectedCells || this._$dateTable.find(\".\" + DATE_TABLE_CELL_CLASS).eq(0)\r\n };\r\n _proto2._getCellFromNextRow = function(direction) {\r\n var $currentCell = this._$focusedCell;\r\n if ((0, _type.isDefined)($currentCell)) {\r\n var cellIndex = $currentCell.index();\r\n var $row = $currentCell.parent();\r\n var $cell = $row[direction]().children().eq(cellIndex);\r\n $cell = this._checkForViewBounds($cell);\r\n return $cell\r\n }\r\n };\r\n _proto2._checkForViewBounds = function($item) {\r\n if (!$item.length) {\r\n $item = this._$focusedCell\r\n }\r\n return $item\r\n };\r\n _proto2._getCellFromNextColumn = function(direction, isMultiSelection) {\r\n var $focusedCell = this._$focusedCell;\r\n if (!(0, _type.isDefined)($focusedCell)) {\r\n return\r\n }\r\n var $nextCell;\r\n var $row = $focusedCell.parent();\r\n var nextColumnDirection = direction;\r\n var isDirectionNext = \"next\" === direction;\r\n var previousColumnDirection = isDirectionNext ? \"prev\" : \"next\";\r\n var isRTL = this._isRTL();\r\n var groupCount = this._getGroupCount();\r\n var isHorizontalGrouping = this._isHorizontalGroupedWorkSpace();\r\n var isGroupedByDate = this.isGroupedByDate();\r\n var totalCellCount = this._getTotalCellCount(groupCount);\r\n var rowCellCount = isMultiSelection && !isGroupedByDate ? this._getCellCount() : totalCellCount;\r\n var lastIndexInRow = rowCellCount - 1;\r\n var currentIndex = $focusedCell.index();\r\n var step = isGroupedByDate && isMultiSelection ? groupCount : 1;\r\n var isEdgeCell = this._isEdgeCell(isHorizontalGrouping ? totalCellCount - 1 : lastIndexInRow, currentIndex, step, direction);\r\n var sign = isRTL ? 1 : -1;\r\n var directionSign = isDirectionNext ? 1 : -1;\r\n var resultingSign = sign * directionSign;\r\n if (isEdgeCell || isMultiSelection && this._isGroupEndCell($focusedCell, direction)) {\r\n var nextIndex = currentIndex - resultingSign * step + resultingSign * rowCellCount;\r\n var rowDirection = isRTL ? previousColumnDirection : nextColumnDirection;\r\n $nextCell = $row[rowDirection]().children().eq(nextIndex);\r\n $nextCell = this._checkForViewBounds($nextCell)\r\n } else {\r\n $nextCell = $row.children().eq(currentIndex - resultingSign * step)\r\n }\r\n return $nextCell\r\n };\r\n _proto2._isEdgeCell = function(lastIndexInRow, cellIndex, step, direction) {\r\n var isRTL = this._isRTL();\r\n var isDirectionNext = \"next\" === direction;\r\n var rightEdgeCellIndex = isRTL ? 0 : lastIndexInRow;\r\n var leftEdgeCellIndex = isRTL ? lastIndexInRow : 0;\r\n var edgeCellIndex = isDirectionNext ? rightEdgeCellIndex : leftEdgeCellIndex;\r\n var isNextCellGreaterThanEdge = cellIndex + step > edgeCellIndex;\r\n var isNextCellLessThanEdge = cellIndex - step < edgeCellIndex;\r\n var isRightEdgeCell = isRTL ? isNextCellLessThanEdge : isNextCellGreaterThanEdge;\r\n var isLeftEdgeCell = isRTL ? isNextCellGreaterThanEdge : isNextCellLessThanEdge;\r\n return isDirectionNext ? isRightEdgeCell : isLeftEdgeCell\r\n };\r\n _proto2._isGroupEndCell = function($cell, direction) {\r\n if (this.isGroupedByDate()) {\r\n return false\r\n }\r\n var isDirectionNext = \"next\" === direction;\r\n var cellsInRow = this._getCellCount();\r\n var currentCellIndex = $cell.index();\r\n var result = currentCellIndex % cellsInRow;\r\n var endCell = isDirectionNext ? cellsInRow - 1 : 0;\r\n var startCell = isDirectionNext ? 0 : cellsInRow - 1;\r\n return this._isRTL() ? result === startCell : result === endCell\r\n };\r\n _proto2._moveToCell = function($cell, isMultiSelection) {\r\n isMultiSelection = isMultiSelection && this.option(\"allowMultipleCellSelection\");\r\n this._setSelectedAndFocusedCells($cell, isMultiSelection);\r\n this._dateTableScrollable.scrollToElement($cell)\r\n };\r\n _proto2._setSelectedAndFocusedCells = function($cell, isMultiSelection) {\r\n if (!(0, _type.isDefined)($cell) || !$cell.length) {\r\n return\r\n }\r\n var updateViewData = this.isVirtualScrolling();\r\n var $correctedCell = $cell;\r\n if (isMultiSelection) {\r\n $correctedCell = this._correctCellForGroup($cell)\r\n }\r\n if ($correctedCell.hasClass(DATE_TABLE_FOCUSED_CELL_CLASS)) {\r\n return\r\n }\r\n this._setSelectedCells($correctedCell, isMultiSelection);\r\n this._setFocusedCell($correctedCell, updateViewData)\r\n };\r\n _proto2._setFocusedCell = function($cell) {\r\n var updateViewData = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;\r\n this._releaseFocusedCell();\r\n var $correctedCell = $cell;\r\n if (updateViewData) {\r\n var _this$_getCoordinates = this._getCoordinatesByCell($cell),\r\n rowIndex = _this$_getCoordinates.rowIndex,\r\n columnIndex = _this$_getCoordinates.columnIndex;\r\n var isAllDayCell = this._hasAllDayClass($cell);\r\n this.virtualSelectionState.setFocusedCell(rowIndex, columnIndex, isAllDayCell);\r\n var focusedCell = this.virtualSelectionState.getFocusedCell(this._isVerticalGroupedWorkSpace());\r\n var cellData = focusedCell.cellData,\r\n coordinates = focusedCell.coordinates;\r\n var allDay = cellData.allDay;\r\n $correctedCell = allDay && !this._isVerticalGroupedWorkSpace() ? this._dom_getAllDayPanelCell(coordinates.cellIndex) : this._dom_getDateCell(coordinates)\r\n }\r\n this._toggleFocusedCellClass(true, $correctedCell);\r\n this._$focusedCell = $correctedCell\r\n };\r\n _proto2._setSelectedCells = function($firstCell, isMultiSelection) {\r\n this._releaseSelectedCells();\r\n this._selectedCells = [];\r\n if (this.isVirtualScrolling()) {\r\n this._setSelectedCellsInVirtualMode($firstCell, isMultiSelection)\r\n } else {\r\n this._setSelectedCellsInStandardMode($firstCell, isMultiSelection)\r\n }\r\n var $selectedCells = (0, _renderer.default)(this._selectedCells);\r\n this._toggleFocusClass(true, $selectedCells);\r\n this.setAria(\"label\", \"Add appointment\", $selectedCells);\r\n var selectedCellData = this.getSelectedCellData().map(function(_ref) {\r\n var startDate = _ref.startDate,\r\n endDate = _ref.endDate,\r\n allDay = _ref.allDay,\r\n groups = _ref.groups,\r\n groupIndex = _ref.groupIndex;\r\n return {\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: allDay,\r\n groups: groups,\r\n groupIndex: groupIndex || 0\r\n }\r\n });\r\n this.option(\"selectedCellData\", selectedCellData);\r\n this._selectionChangedAction({\r\n selectedCellData: selectedCellData\r\n })\r\n };\r\n _proto2._setSelectedCellsInStandardMode = function($firstCell, isMultiSelection) {\r\n if (isMultiSelection) {\r\n var $previousCell = this._$prevCell;\r\n var orientation = \"day\" === this.option(\"type\") && (!this.option(\"groups\").length || \"vertical\" === this.option(\"groupOrientation\")) ? \"vertical\" : \"horizontal\";\r\n var $targetCells = this._getCellsBetween($firstCell, $previousCell, orientation);\r\n this._selectedCells = $targetCells.toArray()\r\n } else {\r\n this._selectedCells = [$firstCell.get(0)];\r\n this._$prevCell = $firstCell\r\n }\r\n };\r\n _proto2._setSelectedCellsInVirtualMode = function($firstCell, isMultiSelection) {\r\n if (isMultiSelection) {\r\n var _this$_getCoordinates2 = this._getCoordinatesByCell($firstCell),\r\n firstRow = _this$_getCoordinates2.rowIndex,\r\n firstColumn = _this$_getCoordinates2.columnIndex;\r\n var isFirstAllDay = this._hasAllDayClass($firstCell);\r\n var firstCell = {\r\n rowIndex: firstRow,\r\n columnIndex: firstColumn,\r\n allDay: isFirstAllDay\r\n };\r\n this.virtualSelectionState.setSelectedCells(firstCell)\r\n } else {\r\n this._selectedCells = [$firstCell.get(0)];\r\n this._$prevCell = $firstCell;\r\n var _this$_getCoordinates3 = this._getCoordinatesByCell($firstCell),\r\n rowIndex = _this$_getCoordinates3.rowIndex,\r\n columnIndex = _this$_getCoordinates3.columnIndex;\r\n var isAllDayCell = this._hasAllDayClass($firstCell);\r\n var _firstCell = {\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex,\r\n allDay: isAllDayCell\r\n };\r\n this.virtualSelectionState.setSelectedCells(_firstCell, _firstCell)\r\n }\r\n this._setSelectedCellsByCellData(this.virtualSelectionState.getSelectedCells())\r\n };\r\n _proto2._correctCellForGroup = function($cell) {\r\n if (this.isVirtualScrolling()) {\r\n var cellData = this.getCellData($cell);\r\n var isValidFocusedCell = this.virtualSelectionState.isValidFocusedCell(cellData);\r\n return isValidFocusedCell ? $cell : this._$focusedCell\r\n }\r\n var $focusedCell = this._$focusedCell;\r\n var cellGroupIndex = this._getGroupIndexByCell($cell);\r\n var focusedCellGroupIndex = this._getGroupIndexByCell($focusedCell);\r\n var isDifferentTables = this._hasAllDayClass($cell) !== this._hasAllDayClass($focusedCell);\r\n return focusedCellGroupIndex !== cellGroupIndex || isDifferentTables ? $focusedCell : $cell\r\n };\r\n _proto2._getCellsBetween = function($first, $last, direction) {\r\n var isAllDayTable = this._hasAllDayClass($last);\r\n var $cells = this._getCells(isAllDayTable, direction);\r\n var firstIndex = $cells.index($first);\r\n var lastIndex = $cells.index($last);\r\n if (firstIndex > lastIndex) {\r\n var buffer = firstIndex;\r\n firstIndex = lastIndex;\r\n lastIndex = buffer\r\n }\r\n $cells = $cells.slice(firstIndex, lastIndex + 1);\r\n if (this._getGroupCount() > 1) {\r\n var result = [];\r\n var focusedGroupIndex = this._getGroupIndexByCell($first);\r\n (0, _iterator.each)($cells, function(_, cell) {\r\n var groupIndex = this._getGroupIndexByCell((0, _renderer.default)(cell));\r\n if (focusedGroupIndex === groupIndex) {\r\n result.push(cell)\r\n }\r\n }.bind(this));\r\n $cells = (0, _renderer.default)(result)\r\n }\r\n return $cells\r\n };\r\n _proto2._hasAllDayClass = function($cell) {\r\n return $cell.hasClass(ALL_DAY_TABLE_CELL_CLASS)\r\n };\r\n _proto2._getGroupIndexByCell = function($cell) {\r\n if (this.isVirtualScrolling()) {\r\n var _this$_getCoordinates4 = this._getCoordinatesByCell($cell),\r\n rowIndex = _this$_getCoordinates4.rowIndex,\r\n columnIndex = _this$_getCoordinates4.columnIndex;\r\n var isAllDayCell = $cell.hasClass(ALL_DAY_TABLE_CELL_CLASS);\r\n return this.viewDataProvider.getCellData(rowIndex, columnIndex, isAllDayCell).groupIndex\r\n }\r\n return this._groupedStrategy.getGroupIndexByCell($cell)\r\n };\r\n _proto2._toggleFocusedCellClass = function(isFocused, $element) {\r\n var $focusTarget = $element && $element.length ? $element : this._focusTarget();\r\n $focusTarget.toggleClass(DATE_TABLE_FOCUSED_CELL_CLASS, isFocused)\r\n };\r\n _proto2._releaseSelectedAndFocusedCells = function() {\r\n this._releaseFocusedCell();\r\n this._releaseSelectedCells();\r\n this.option(\"selectedCellData\", [])\r\n };\r\n _proto2._releaseFocusedCell = function() {\r\n var $cell = this._$focusedCell;\r\n if ((0, _type.isDefined)($cell) && $cell.length) {\r\n this._toggleFocusedCellClass(false, $cell);\r\n this.setAria(\"label\", void 0, $cell)\r\n }\r\n };\r\n _proto2._releaseSelectedCells = function() {\r\n var $cells = (0, _renderer.default)(this._selectedCells);\r\n if ((0, _type.isDefined)($cells) && $cells.length) {\r\n this._toggleFocusClass(false, $cells);\r\n this.setAria(\"label\", void 0, $cells)\r\n }\r\n };\r\n _proto2._focusInHandler = function(e) {\r\n if ((0, _renderer.default)(e.target).is(this._focusTarget()) && false !== this._isCellClick) {\r\n delete this._isCellClick;\r\n delete this._contextMenuHandled;\r\n _WidgetObserver.prototype._focusInHandler.apply(this, arguments);\r\n var $cell = this._getFocusedCell();\r\n this._setSelectedAndFocusedCells($cell)\r\n }\r\n };\r\n _proto2._focusOutHandler = function() {\r\n _WidgetObserver.prototype._focusOutHandler.apply(this, arguments);\r\n if (!this._contextMenuHandled) {\r\n var _this$virtualSelectio;\r\n this._releaseSelectedAndFocusedCells();\r\n null === (_this$virtualSelectio = this.virtualSelectionState) || void 0 === _this$virtualSelectio ? void 0 : _this$virtualSelectio.releaseSelectedAndFocusedCells()\r\n }\r\n };\r\n _proto2._focusTarget = function() {\r\n return this.$element()\r\n };\r\n _proto2._getDefaultOptions = function() {\r\n return (0, _extend.extend)(_WidgetObserver.prototype._getDefaultOptions.call(this), {\r\n currentDate: new Date,\r\n intervalCount: 1,\r\n startDate: null,\r\n firstDayOfWeek: void 0,\r\n startDayHour: 0,\r\n endDayHour: 24,\r\n hoursInterval: .5,\r\n activeStateEnabled: true,\r\n hoverStateEnabled: true,\r\n groups: [],\r\n showAllDayPanel: true,\r\n allDayExpanded: false,\r\n onCellClick: null,\r\n crossScrollingEnabled: false,\r\n dataCellTemplate: null,\r\n timeCellTemplate: null,\r\n resourceCellTemplate: null,\r\n dateCellTemplate: null,\r\n allowMultipleCellSelection: true,\r\n indicatorTime: new Date,\r\n indicatorUpdateInterval: 5 * toMs(\"minute\"),\r\n shadeUntilCurrentTime: true,\r\n groupOrientation: \"horizontal\",\r\n selectedCellData: [],\r\n groupByDate: false,\r\n scrolling: {\r\n mode: \"standard\"\r\n },\r\n renovateRender: false,\r\n height: void 0\r\n })\r\n };\r\n _proto2._optionChanged = function(args) {\r\n switch (args.name) {\r\n case \"startDayHour\":\r\n case \"endDayHour\":\r\n this.invoke(\"validateDayHours\");\r\n this._cleanWorkSpace();\r\n break;\r\n case \"dateCellTemplate\":\r\n case \"resourceCellTemplate\":\r\n case \"dataCellTemplate\":\r\n case \"timeCellTemplate\":\r\n case \"hoursInterval\":\r\n case \"firstDayOfWeek\":\r\n case \"currentDate\":\r\n case \"startDate\":\r\n this._cleanWorkSpace();\r\n break;\r\n case \"groups\":\r\n this._cleanView();\r\n this._disposeRenovatedComponents();\r\n this._removeAllDayElements();\r\n this._initGrouping();\r\n this.repaint();\r\n break;\r\n case \"groupOrientation\":\r\n this._initGroupedStrategy();\r\n this._createAllDayPanelElements();\r\n this._removeAllDayElements();\r\n this._cleanWorkSpace();\r\n this._toggleGroupByDateClass();\r\n break;\r\n case \"showAllDayPanel\":\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n this._cleanView();\r\n this._disposeRenovatedComponents();\r\n this._removeAllDayElements();\r\n this._initGrouping();\r\n this.repaint()\r\n } else {\r\n this._toggleAllDayVisibility()\r\n }\r\n break;\r\n case \"allDayExpanded\":\r\n this._changeAllDayVisibility();\r\n this._attachTablesEvents();\r\n this.headerPanelOffsetRecalculate();\r\n this._updateScrollable();\r\n break;\r\n case \"onSelectionChanged\":\r\n this._createSelectionChangedAction();\r\n break;\r\n case \"onCellClick\":\r\n this._createCellClickAction();\r\n break;\r\n case \"onCellContextMenu\":\r\n this._attachContextMenuEvent();\r\n break;\r\n case \"intervalCount\":\r\n this._cleanWorkSpace();\r\n this._toggleWorkSpaceCountClass();\r\n this._toggleFixedScrollableClass();\r\n break;\r\n case \"groupByDate\":\r\n this._cleanWorkSpace();\r\n this._toggleGroupByDateClass();\r\n break;\r\n case \"crossScrollingEnabled\":\r\n this._toggleHorizontalScrollClass();\r\n this._dateTableScrollable.option(this._dateTableScrollableConfig());\r\n break;\r\n case \"width\":\r\n _WidgetObserver.prototype._optionChanged.call(this, args);\r\n this._dimensionChanged();\r\n break;\r\n case \"allowMultipleCellSelection\":\r\n break;\r\n case \"selectedCellData\":\r\n break;\r\n case \"scrolling\":\r\n this.option(\"renovateRender\", this._isVirtualModeOn());\r\n break;\r\n case \"renovateRender\":\r\n this._disposeRenovatedComponents();\r\n this.repaint();\r\n break;\r\n default:\r\n _WidgetObserver.prototype._optionChanged.call(this, args)\r\n }\r\n };\r\n _proto2._cleanWorkSpace = function() {\r\n this._cleanView();\r\n this._toggleGroupedClass();\r\n this._toggleWorkSpaceWithOddCells();\r\n this._renderView()\r\n };\r\n _proto2._init = function() {\r\n this._headerSemaphore = new ScrollSemaphore;\r\n this._sideBarSemaphore = new ScrollSemaphore;\r\n this._dataTableSemaphore = new ScrollSemaphore;\r\n this._viewDataProvider = null;\r\n this._virtualSelectionState = null;\r\n this._activeStateUnit = CELL_SELECTOR;\r\n this._maxAllowedVerticalPosition = [];\r\n this._maxAllowedPosition = [];\r\n _WidgetObserver.prototype._init.call(this);\r\n this._initGrouping();\r\n this._toggleHorizontalScrollClass();\r\n this._toggleWorkSpaceCountClass();\r\n this._toggleGroupByDateClass();\r\n this._toggleWorkSpaceWithOddCells();\r\n this.$element().addClass(COMPONENT_CLASS).addClass(this._getElementClass())\r\n };\r\n _proto2._initGrouping = function() {\r\n this._initGroupedStrategy();\r\n this._toggleGroupingDirectionClass();\r\n this._toggleGroupByDateClass()\r\n };\r\n _proto2._initGroupedStrategy = function() {\r\n var strategyName = this.option(\"groups\").length ? this.option(\"groupOrientation\") : this._getDefaultGroupStrategy();\r\n var Strategy = \"vertical\" === strategyName ? _uiSchedulerWork_spaceGroupedStrategy2.default : _uiSchedulerWork_spaceGroupedStrategy.default;\r\n this._groupedStrategy = new Strategy(this)\r\n };\r\n _proto2._getDefaultGroupStrategy = function() {\r\n return \"horizontal\"\r\n };\r\n _proto2._isVerticalGroupedWorkSpace = function() {\r\n return !!this.option(\"groups\").length && \"vertical\" === this.option(\"groupOrientation\")\r\n };\r\n _proto2._isHorizontalGroupedWorkSpace = function() {\r\n return !!this.option(\"groups\").length && \"horizontal\" === this.option(\"groupOrientation\")\r\n };\r\n _proto2._toggleHorizontalScrollClass = function() {\r\n this.$element().toggleClass(WORKSPACE_WITH_BOTH_SCROLLS_CLASS, this.option(\"crossScrollingEnabled\"))\r\n };\r\n _proto2._toggleGroupByDateClass = function() {\r\n this.$element().toggleClass(WORKSPACE_WITH_GROUP_BY_DATE_CLASS, this.isGroupedByDate())\r\n };\r\n _proto2._toggleWorkSpaceCountClass = function() {\r\n this.$element().toggleClass(WORKSPACE_WITH_COUNT_CLASS, this._isWorkSpaceWithCount())\r\n };\r\n _proto2._isWorkSpaceWithCount = function() {\r\n return this.option(\"intervalCount\") > 1\r\n };\r\n _proto2._toggleWorkSpaceWithOddCells = function() {\r\n this.$element().toggleClass(WORKSPACE_WITH_ODD_CELLS_CLASS, this._isWorkspaceWithOddCells())\r\n };\r\n _proto2._isWorkspaceWithOddCells = function() {\r\n return .5 === this.option(\"hoursInterval\") && !this.isVirtualScrolling()\r\n };\r\n _proto2._toggleGroupingDirectionClass = function() {\r\n this.$element().toggleClass(VERTICAL_GROUPED_WORKSPACE_CLASS, this._isVerticalGroupedWorkSpace())\r\n };\r\n _proto2._getRealGroupOrientation = function() {\r\n return this._isVerticalGroupedWorkSpace() ? \"vertical\" : \"horizontal\"\r\n };\r\n _proto2._getTimePanelClass = function() {\r\n return TIME_PANEL_CLASS\r\n };\r\n _proto2._getDateTableClass = function() {\r\n return DATE_TABLE_CLASS\r\n };\r\n _proto2._getDateTableRowClass = function() {\r\n return DATE_TABLE_ROW_CLASS\r\n };\r\n _proto2._getDateTableCellClass = function(i, j) {\r\n var cellClass = DATE_TABLE_CELL_CLASS + \" \" + HORIZONTAL_SIZES_CLASS + \" \" + VERTICAL_SIZES_CLASS;\r\n return this._needApplyLastGroupCellClass() ? this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, j + 1, i, j) : cellClass\r\n };\r\n _proto2._needApplyLastGroupCellClass = function() {\r\n return true\r\n };\r\n _proto2._getGroupRowClass = function() {\r\n return GROUP_ROW_CLASS\r\n };\r\n _proto2._getGroupHeaderClass = function(i) {\r\n var cellClass = GROUP_HEADER_CLASS;\r\n return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, i + 1)\r\n };\r\n _proto2._getGroupHeaderContentClass = function() {\r\n return GROUP_HEADER_CONTENT_CLASS\r\n };\r\n _proto2._initWorkSpaceUnits = function() {\r\n this._$headerPanel = (0, _renderer.default)(\"\");\r\n this._$thead = (0, _renderer.default)(\"\").appendTo(this._$headerPanel);\r\n this._$fixedContainer = (0, _renderer.default)(\"
\").addClass(_constants.FIXED_CONTAINER_CLASS);\r\n this._$allDayContainer = (0, _renderer.default)(\"
\").addClass(ALL_DAY_CONTAINER_CLASS);\r\n this._initAllDayPanelElements();\r\n if (this.isRenovatedRender()) {\r\n this.createRAllDayPanelElements()\r\n } else {\r\n this._createAllDayPanelElements()\r\n }\r\n this._$timePanel = (0, _renderer.default)(\"
\").addClass(this._getTimePanelClass());\r\n this._$dateTable = (0, _renderer.default)(\"
\");\r\n this._$groupTable = (0, _renderer.default)(\"
\").addClass(WORKSPACE_VERTICAL_GROUP_TABLE_CLASS)\r\n };\r\n _proto2._initAllDayPanelElements = function() {\r\n this._allDayTitles = [];\r\n this._allDayTables = [];\r\n this._allDayPanels = []\r\n };\r\n _proto2.createRAllDayPanelElements = function() {\r\n this._$allDayPanel = (0, _renderer.default)(\"
\");\r\n this._$allDayTitle = (0, _renderer.default)(\"
\").appendTo(this.$element())\r\n };\r\n _proto2._createAllDayPanelElements = function() {\r\n var groupCount = this._getGroupCount();\r\n if (this._isVerticalGroupedWorkSpace() && 0 !== groupCount) {\r\n for (var i = 0; i < groupCount; i++) {\r\n var $allDayTitle = (0, _renderer.default)(\"
\").addClass(ALL_DAY_TITLE_CLASS).text(_message.default.format(\"dxScheduler-allDay\"));\r\n this._allDayTitles.push($allDayTitle);\r\n this._$allDayTable = (0, _renderer.default)(\"
\");\r\n this._allDayTables.push(this._$allDayTable);\r\n this._$allDayPanel = (0, _renderer.default)(\"
\").addClass(ALL_DAY_PANEL_CLASS).append(this._$allDayTable);\r\n this._allDayPanels.push(this._$allDayPanel)\r\n }\r\n } else {\r\n this._$allDayTitle = (0, _renderer.default)(\"
\").addClass(ALL_DAY_TITLE_CLASS).text(_message.default.format(\"dxScheduler-allDay\")).appendTo(this.$element());\r\n this._$allDayTable = (0, _renderer.default)(\"
\");\r\n this._$allDayPanel = (0, _renderer.default)(\"
\").addClass(ALL_DAY_PANEL_CLASS).append(this._$allDayTable)\r\n }\r\n };\r\n _proto2._initDateTableScrollable = function() {\r\n var $dateTableScrollable = (0, _renderer.default)(\"
\").addClass(SCHEDULER_DATE_TABLE_SCROLLABLE_CLASS);\r\n this._dateTableScrollable = this._createComponent($dateTableScrollable, _ui2.default, this._dateTableScrollableConfig())\r\n };\r\n _proto2._dateTableScrollableConfig = function() {\r\n var config = {\r\n useKeyboard: false,\r\n bounceEnabled: false,\r\n updateManually: true,\r\n pushBackValue: 0\r\n };\r\n if (this._needCreateCrossScrolling()) {\r\n config = (0, _extend.extend)(config, this._createCrossScrollingConfig())\r\n }\r\n return config\r\n };\r\n _proto2._createCrossScrollingConfig = function() {\r\n var _this = this;\r\n var config = {};\r\n config.direction = \"both\";\r\n config.onScroll = function(e) {\r\n _this._dataTableSemaphore.take();\r\n _this._sideBarSemaphore.isFree() && _this._sidebarScrollable && _this._sidebarScrollable.scrollTo({\r\n top: e.scrollOffset.top\r\n });\r\n _this._headerSemaphore.isFree() && _this._headerScrollable && _this._headerScrollable.scrollTo({\r\n left: e.scrollOffset.left\r\n });\r\n _this._dataTableSemaphore.release()\r\n };\r\n config.onEnd = function() {\r\n _this.notifyObserver(\"updateResizableArea\", {})\r\n };\r\n return config\r\n };\r\n _proto2._createWorkSpaceElements = function() {\r\n if (this.option(\"crossScrollingEnabled\")) {\r\n this._createWorkSpaceScrollableElements()\r\n } else {\r\n this._createWorkSpaceStaticElements()\r\n }\r\n };\r\n _proto2._createWorkSpaceStaticElements = function() {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n this._dateTableScrollable.$content().append(this._$allDayContainer, this._$groupTable, this._$timePanel, this._$dateTable);\r\n this.$element().append(this._$fixedContainer, this._$headerPanel, this._dateTableScrollable.$element())\r\n } else {\r\n this._dateTableScrollable.$content().append(this._$timePanel, this._$dateTable);\r\n this.$element().append(this._$fixedContainer, this._$headerPanel, this._$allDayContainer, this._$allDayPanel, this._dateTableScrollable.$element())\r\n }\r\n };\r\n _proto2._createWorkSpaceScrollableElements = function() {\r\n this.$element().append(this._$fixedContainer);\r\n this._createHeaderScrollable();\r\n this._createSidebarScrollable();\r\n this.$element().append(this._dateTableScrollable.$element());\r\n this._headerScrollable.$content().append(this._$headerPanel);\r\n this._dateTableScrollable.$content().append(this._$dateTable);\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n this._dateTableScrollable.$content().prepend(this._$allDayContainer);\r\n this._sidebarScrollable.$content().append(this._$groupTable, this._$timePanel)\r\n } else {\r\n this._headerScrollable.$content().append(this._$allDayContainer, this._$allDayPanel)\r\n }\r\n this._sidebarScrollable.$content().append(this._$timePanel)\r\n };\r\n _proto2._createHeaderScrollable = function() {\r\n var $headerScrollable = (0, _renderer.default)(\"
\").addClass(SCHEDULER_HEADER_SCROLLABLE_CLASS).appendTo(this.$element());\r\n this._headerScrollable = this._createComponent($headerScrollable, _ui2.default, this._headerScrollableConfig())\r\n };\r\n _proto2._headerScrollableConfig = function() {\r\n var _this2 = this;\r\n var config = {\r\n useKeyboard: false,\r\n showScrollbar: false,\r\n direction: \"horizontal\",\r\n useNative: false,\r\n updateManually: true,\r\n bounceEnabled: false,\r\n pushBackValue: 0,\r\n onScroll: function(e) {\r\n _this2._headerSemaphore.take();\r\n _this2._dataTableSemaphore.isFree() && _this2._dateTableScrollable.scrollTo({\r\n left: e.scrollOffset.left\r\n });\r\n _this2._headerSemaphore.release()\r\n }\r\n };\r\n return config\r\n };\r\n _proto2._createSidebarScrollable = function() {\r\n var _this3 = this;\r\n var $timePanelScrollable = (0, _renderer.default)(\"
\").addClass(SCHEDULER_SIDEBAR_SCROLLABLE_CLASS).appendTo(this.$element());\r\n this._sidebarScrollable = this._createComponent($timePanelScrollable, _ui2.default, {\r\n useKeyboard: false,\r\n showScrollbar: false,\r\n direction: \"vertical\",\r\n useNative: false,\r\n updateManually: true,\r\n bounceEnabled: false,\r\n pushBackValue: 0,\r\n onScroll: function(e) {\r\n _this3._sideBarSemaphore.take();\r\n _this3._dataTableSemaphore.isFree() && _this3._dateTableScrollable.scrollTo({\r\n top: e.scrollOffset.top\r\n });\r\n _this3._sideBarSemaphore.release()\r\n }\r\n })\r\n };\r\n _proto2._visibilityChanged = function(visible) {\r\n this.cache.clear();\r\n if (visible && this._isVerticalGroupedWorkSpace()) {\r\n this._setHorizontalGroupHeaderCellsHeight()\r\n }\r\n if (visible && this._needCreateCrossScrolling()) {\r\n this._setTableSizes()\r\n }\r\n };\r\n _proto2._attachTableClasses = function() {\r\n this._addTableClass(this._$dateTable, this._getDateTableClass());\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n var groupCount = this._getGroupCount();\r\n for (var i = 0; i < groupCount; i++) {\r\n this._addTableClass(this._allDayTables[i], ALL_DAY_TABLE_CLASS)\r\n }\r\n } else {\r\n this._addTableClass(this._$allDayTable, ALL_DAY_TABLE_CLASS)\r\n }\r\n };\r\n _proto2._attachHeaderTableClasses = function() {\r\n this._addTableClass(this._$headerPanel, HEADER_PANEL_CLASS)\r\n };\r\n _proto2._addTableClass = function($el, className) {\r\n $el && !$el.hasClass(className) && $el.addClass(className)\r\n };\r\n _proto2._setTableSizes = function() {\r\n this._attachTableClasses();\r\n var cellWidth = this.getCellWidth();\r\n if (cellWidth < this.getCellMinWidth()) {\r\n cellWidth = this.getCellMinWidth()\r\n }\r\n var minWidth = this.getWorkSpaceMinWidth();\r\n var $headerCells = this._$headerPanel.find(\"tr\").last().find(\"th\");\r\n var width = cellWidth * $headerCells.length;\r\n if (width < minWidth) {\r\n width = minWidth\r\n }\r\n this._$headerPanel.width(width);\r\n this._$dateTable.width(width);\r\n this._$allDayTable && this._$allDayTable.width(width);\r\n this._attachHeaderTableClasses();\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n this._setHorizontalGroupHeaderCellsHeight()\r\n }\r\n };\r\n _proto2.getWorkSpaceMinWidth = function() {\r\n return this._groupedStrategy.getWorkSpaceMinWidth()\r\n };\r\n _proto2._dimensionChanged = function() {\r\n if (this.option(\"crossScrollingEnabled\")) {\r\n this._setTableSizes()\r\n }\r\n this.headerPanelOffsetRecalculate();\r\n this.cache.clear();\r\n this._cleanAllowedPositions()\r\n };\r\n _proto2._needCreateCrossScrolling = function() {\r\n return this.option(\"crossScrollingEnabled\")\r\n };\r\n _proto2._getElementClass = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto2._getRowCount = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto2._getRowCountWithAllDayRows = function() {\r\n var allDayRowCount = this._isShowAllDayPanel() ? 1 : 0;\r\n return this._getRowCount() + allDayRowCount\r\n };\r\n _proto2._getCellCount = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto2._initMarkup = function() {\r\n this.cache.clear();\r\n this._initWorkSpaceUnits();\r\n this._initDateTableScrollable();\r\n this._createWorkSpaceElements();\r\n this._initVirtualScrolling();\r\n _WidgetObserver.prototype._initMarkup.call(this);\r\n if (!this.option(\"crossScrollingEnabled\")) {\r\n this._attachTableClasses();\r\n this._attachHeaderTableClasses()\r\n }\r\n this._toggleGroupedClass();\r\n this._toggleFixedScrollableClass();\r\n this._renderView();\r\n this._attachEvents();\r\n this._setFocusOnCellByOption(this.option(\"selectedCellData\"))\r\n };\r\n _proto2.isRenovatedRender = function() {\r\n return this.renovatedRenderSupported() && this.option(\"renovateRender\")\r\n };\r\n _proto2._isVirtualModeOn = function() {\r\n return \"virtual\" === this.option(\"scrolling.mode\")\r\n };\r\n _proto2.isVirtualScrolling = function() {\r\n return this.isRenovatedRender() && this._isVirtualModeOn()\r\n };\r\n _proto2._initVirtualScrolling = function() {\r\n if (this.virtualScrollingDispatcher) {\r\n this.virtualScrollingDispatcher.dispose();\r\n this.virtualScrollingDispatcher = null\r\n }\r\n if (this.isVirtualScrolling()) {\r\n this.virtualScrollingDispatcher = new _uiScheduler2.default(this)\r\n }\r\n };\r\n _proto2._render = function() {\r\n _WidgetObserver.prototype._render.call(this);\r\n this._renderDateTimeIndication();\r\n this._setIndicationUpdateInterval()\r\n };\r\n _proto2._toggleGroupedClass = function() {\r\n this.$element().toggleClass(GROUPED_WORKSPACE_CLASS, this._getGroupCount() > 0)\r\n };\r\n _proto2._toggleFixedScrollableClass = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto2._renderView = function() {\r\n this._setFirstViewDate();\r\n this._applyCellTemplates(this._renderGroupHeader());\r\n this._renderDateHeader();\r\n if (this.isRenovatedRender()) {\r\n this.renderRWorkspace()\r\n } else {\r\n this._renderTimePanel();\r\n this._renderGroupAllDayPanel();\r\n this._renderDateTable();\r\n this._renderAllDayPanel()\r\n }\r\n this._updateGroupTableHeight();\r\n this._shader = new _uiSchedulerCurrent_time_shader.default(this)\r\n };\r\n _proto2.isGroupedAllDayPanel = function() {\r\n return this._isShowAllDayPanel() && this._isVerticalGroupedWorkSpace()\r\n };\r\n _proto2.generateRenderOptions = function() {\r\n var groupCount = this._getGroupCount();\r\n var verticalGroupCount = !this._isVerticalGroupedWorkSpace() ? 1 : groupCount;\r\n var horizontalGroupCount = this._isVerticalGroupedWorkSpace() ? 1 : groupCount;\r\n var allDayElements = this._insertAllDayRowsIntoDateTable() ? this._allDayTitles : void 0;\r\n var rowCountInGroup = this._getRowCount();\r\n var cellCount = this._getTotalCellCount(groupCount);\r\n var options = {\r\n horizontalGroupCount: horizontalGroupCount,\r\n verticalGroupCount: verticalGroupCount,\r\n rowCountInGroup: rowCountInGroup,\r\n cellCount: cellCount,\r\n cellCountInGroupRow: this._getCellCount(),\r\n cellDataGetters: [this._getCellData.bind(this)],\r\n allDayElements: allDayElements,\r\n startRowIndex: 0,\r\n groupOrientation: this.option(\"groupOrientation\"),\r\n nonVirtualRowCount: this._getRowCount(),\r\n groupCount: groupCount\r\n };\r\n if (this.isVirtualScrolling()) {\r\n (0, _extend.extend)(options, this.virtualScrollingDispatcher.renderState)\r\n } else {\r\n options.rowCount = this._getTotalRowCount(groupCount, this._isVerticalGroupedWorkSpace())\r\n }\r\n return options\r\n };\r\n _proto2.renovatedRenderSupported = function() {\r\n return false\r\n };\r\n _proto2.renderRWorkspace = function() {\r\n var _this$virtualScrollin2;\r\n var isGenerateNewViewData = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : true;\r\n this._cleanAllowedPositions();\r\n this.viewDataProvider.update(isGenerateNewViewData);\r\n this.renderRAllDayPanel();\r\n this.renderRTimeTable();\r\n this.renderRDateTable();\r\n this.updateRSelection();\r\n null === (_this$virtualScrollin2 = this.virtualScrollingDispatcher) || void 0 === _this$virtualScrollin2 ? void 0 : _this$virtualScrollin2.updateDimensions()\r\n };\r\n _proto2.renderRAllDayPanel = function() {\r\n var visible = this._isShowAllDayPanel() && !this.isGroupedAllDayPanel();\r\n if (visible) {\r\n var options = {\r\n viewData: this.viewDataProvider.viewData,\r\n visible: visible,\r\n dataCellTemplate: this.option(\"dataCellTemplate\")\r\n };\r\n this.renderRComponent(this._$allDayPanel, _layout.default, \"renovatedAllDayPanel\", options);\r\n this.renderRComponent(this._$allDayTitle, _title.default, \"renovatedAllDayPanelTitle\", {\r\n visible: visible\r\n });\r\n this._$allDayTable = this.renovatedAllDayPanel.$element().find(\".\".concat(ALL_DAY_TABLE_CLASS))\r\n }\r\n this._toggleAllDayVisibility()\r\n };\r\n _proto2.renderRTimeTable = function() {\r\n this.renderRComponent(this._$timePanel, _layout2.default, \"renovatedTimePanel\", {\r\n viewData: this.viewDataProvider.viewData,\r\n timeCellTemplate: this.option(\"timeCellTemplate\")\r\n })\r\n };\r\n _proto2.renderRDateTable = function() {};\r\n _proto2.renderRComponent = function(parentElement, componentClass, componentName, viewModel) {\r\n var component = this[componentName];\r\n if (!component) {\r\n var container = (0, _element.getPublicElement)(parentElement);\r\n component = this._createComponent(container, componentClass, _objectSpread(_objectSpread({}, viewModel), {}, {\r\n groupOrientation: this.option(\"groupOrientation\")\r\n }));\r\n this[componentName] = component\r\n } else {\r\n Object.getOwnPropertyNames(viewModel).forEach(function(optionName) {\r\n component.option(optionName, viewModel[optionName])\r\n })\r\n }\r\n };\r\n _proto2.updateRSelection = function() {\r\n var isVerticalGrouping = this._isVerticalGroupedWorkSpace();\r\n var focusedCell = this.virtualSelectionState.getFocusedCell(isVerticalGrouping);\r\n var selectedCells = this.virtualSelectionState.getSelectedCells();\r\n if (focusedCell) {\r\n var coordinates = focusedCell.coordinates,\r\n cellData = focusedCell.cellData;\r\n var $cell = !isVerticalGrouping && cellData.allDay ? this._dom_getAllDayPanelCell(coordinates.cellIndex) : this._dom_getDateCell(coordinates);\r\n $cell && this._setFocusedCell($cell)\r\n }\r\n selectedCells && this._setSelectedCellsByCellData(selectedCells)\r\n };\r\n _proto2._updateGroupTableHeight = function() {\r\n if (this._isVerticalGroupedWorkSpace() && (0, _window.hasWindow)()) {\r\n this._setHorizontalGroupHeaderCellsHeight()\r\n }\r\n };\r\n _proto2._renderDateTimeIndication = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto2._setIndicationUpdateInterval = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto2._refreshDateTimeIndication = function() {\r\n return (0, _common.noop)()\r\n };\r\n _proto2._setFocusOnCellByOption = function(data) {\r\n this._releaseSelectedAndFocusedCells();\r\n this._setSelectedCellsByCellData(data)\r\n };\r\n _proto2._setSelectedCellsByCellData = function(data) {\r\n var _data$, _this4 = this;\r\n var cells = [];\r\n var $cells = this._getAllCells(null === data || void 0 === data ? void 0 : null === (_data$ = data[0]) || void 0 === _data$ ? void 0 : _data$.allDay);\r\n var cellsInRow = this._getTotalCellCount(this._getGroupCount());\r\n data.forEach(function(cellData) {\r\n var groups = cellData.groups,\r\n startDate = cellData.startDate,\r\n allDay = cellData.allDay;\r\n var groupIndex = cellData.groupIndex;\r\n if (!groupIndex) {\r\n groupIndex = _this4._isGroupsSpecified(groups) ? _this4._getGroupIndexByResourceId(groups) : 0\r\n }\r\n var coordinates = _this4.isVirtualScrolling() ? _this4.viewDataProvider.findCellPositionInMap(groupIndex, startDate, allDay) : _this4.getCoordinatesByDate(startDate, groupIndex, allDay);\r\n if (coordinates) {\r\n var rowIndex = coordinates.rowIndex,\r\n cellIndex = coordinates.cellIndex;\r\n var index = rowIndex * cellsInRow + cellIndex;\r\n var $cell = $cells[index];\r\n if ((0, _type.isDefined)($cell)) {\r\n _this4._toggleFocusClass(true, (0, _renderer.default)($cell));\r\n cells.push($cell)\r\n }\r\n }\r\n });\r\n this._selectedCells = cells\r\n };\r\n _proto2._isGroupsSpecified = function(resources) {\r\n return this.option(\"groups\").length && resources\r\n };\r\n _proto2._getGroupIndexByResourceId = function(id) {\r\n var groups = this.option(\"groups\");\r\n var resourceTree = this.invoke(\"createResourcesTree\", groups);\r\n if (!resourceTree.length) {\r\n return 0\r\n }\r\n return this._getGroupIndexRecursively(resourceTree, id)\r\n };\r\n _proto2._getGroupIndexRecursively = function(resourceTree, id) {\r\n var _this5 = this;\r\n var currentKey = resourceTree[0].name;\r\n var currentValue = id[currentKey];\r\n return resourceTree.reduce(function(prevIndex, _ref2) {\r\n var leafIndex = _ref2.leafIndex,\r\n value = _ref2.value,\r\n children = _ref2.children;\r\n var areValuesEqual = currentValue === value;\r\n if (areValuesEqual && void 0 !== leafIndex) {\r\n return leafIndex\r\n }\r\n if (areValuesEqual) {\r\n return _this5._getGroupIndexRecursively(children, id)\r\n }\r\n return prevIndex\r\n }, 0)\r\n };\r\n _proto2._getCalculatedFirstDayOfWeek = function() {\r\n var firstDayOfWeekOption = this._firstDayOfWeek();\r\n var firstDayOfWeek = (0, _type.isDefined)(firstDayOfWeekOption) ? firstDayOfWeekOption : _date2.default.firstDayOfWeekIndex();\r\n return firstDayOfWeek\r\n };\r\n _proto2._setFirstViewDate = function() {\r\n var firstDayOfWeek = this._getCalculatedFirstDayOfWeek();\r\n this._firstViewDate = _date.default.getFirstWeekDate(this._getViewStartByOptions(), firstDayOfWeek);\r\n this._setStartDayHour(this._firstViewDate)\r\n };\r\n _proto2._getViewStartByOptions = function() {\r\n if (!this.option(\"startDate\")) {\r\n return this.option(\"currentDate\")\r\n } else {\r\n var startDate = _date.default.trimTime(this._getStartViewDate());\r\n var currentDate = this.option(\"currentDate\");\r\n var diff = startDate.getTime() <= currentDate.getTime() ? 1 : -1;\r\n var endDate = new Date(startDate.getTime() + this._getIntervalDuration() * diff);\r\n while (!this._dateInRange(currentDate, startDate, endDate, diff)) {\r\n startDate = endDate;\r\n endDate = new Date(startDate.getTime() + this._getIntervalDuration() * diff)\r\n }\r\n return diff > 0 ? startDate : endDate\r\n }\r\n };\r\n _proto2._getHeaderDate = function() {\r\n return this.getStartViewDate()\r\n };\r\n _proto2._getStartViewDate = function() {\r\n return this.option(\"startDate\")\r\n };\r\n _proto2._dateInRange = function(date, startDate, endDate, diff) {\r\n return diff > 0 ? _date.default.dateInRange(date, startDate, new Date(endDate.getTime() - 1)) : _date.default.dateInRange(date, endDate, startDate, \"date\")\r\n };\r\n _proto2._getIntervalDuration = function() {\r\n return toMs(\"day\") * this.option(\"intervalCount\")\r\n };\r\n _proto2._setStartDayHour = function(date) {\r\n var startDayHour = this.option(\"startDayHour\");\r\n if ((0, _type.isDefined)(startDayHour)) {\r\n date.setHours(startDayHour, startDayHour % 1 * 60, 0, 0)\r\n }\r\n };\r\n _proto2._firstDayOfWeek = function() {\r\n return this.option(\"firstDayOfWeek\")\r\n };\r\n _proto2._attachEvents = function() {\r\n this._createSelectionChangedAction();\r\n this._attachClickEvent();\r\n this._attachContextMenuEvent()\r\n };\r\n _proto2._attachClickEvent = function() {\r\n var that = this;\r\n var pointerDownAction = this._createAction(function(e) {\r\n that._pointerDownHandler(e.event)\r\n });\r\n this._createCellClickAction();\r\n var cellSelector = \".\" + DATE_TABLE_CELL_CLASS + \",.\" + ALL_DAY_TABLE_CELL_CLASS;\r\n var $element = this.$element();\r\n _events_engine.default.off($element, SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME);\r\n _events_engine.default.off($element, SCHEDULER_CELL_DXCLICK_EVENT_NAME);\r\n _events_engine.default.on($element, SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME, function(e) {\r\n if ((0, _index.isMouseEvent)(e) && e.which > 1) {\r\n e.preventDefault();\r\n return\r\n }\r\n pointerDownAction({\r\n event: e\r\n })\r\n });\r\n _events_engine.default.on($element, SCHEDULER_CELL_DXCLICK_EVENT_NAME, cellSelector, function(e) {\r\n var $cell = (0, _renderer.default)(e.target);\r\n that._cellClickAction({\r\n event: e,\r\n cellElement: (0, _element.getPublicElement)($cell),\r\n cellData: that.getCellData($cell)\r\n })\r\n })\r\n };\r\n _proto2._createCellClickAction = function() {\r\n var _this6 = this;\r\n this._cellClickAction = this._createActionByOption(\"onCellClick\", {\r\n afterExecute: function(e) {\r\n return _this6._cellClickHandler(e.args[0].event)\r\n }\r\n })\r\n };\r\n _proto2._createSelectionChangedAction = function() {\r\n this._selectionChangedAction = this._createActionByOption(\"onSelectionChanged\")\r\n };\r\n _proto2._cellClickHandler = function(e) {\r\n var $target = (0, _renderer.default)(e.target);\r\n if (this._showPopup && this._hasFocusClass($target)) {\r\n delete this._showPopup;\r\n this._showAddAppointmentPopup($target)\r\n }\r\n };\r\n _proto2._pointerDownHandler = function(e) {\r\n var $target = (0, _renderer.default)(e.target);\r\n if (!$target.hasClass(DATE_TABLE_CELL_CLASS) && !$target.hasClass(ALL_DAY_TABLE_CELL_CLASS)) {\r\n this._isCellClick = false;\r\n return\r\n }\r\n this._isCellClick = true;\r\n if ($target.hasClass(DATE_TABLE_FOCUSED_CELL_CLASS)) {\r\n this._showPopup = true\r\n } else {\r\n this._setSelectedAndFocusedCells($target)\r\n }\r\n };\r\n _proto2._showAddAppointmentPopup = function($cell) {\r\n var firstCellData = this.getCellData($cell.first());\r\n var lastCellData = this.getCellData($cell.last());\r\n if (this.isVirtualScrolling()) {\r\n var selectedCells = this.virtualSelectionState.getSelectedCells();\r\n firstCellData = selectedCells[0];\r\n lastCellData = selectedCells[selectedCells.length - 1]\r\n }\r\n var result = {\r\n startDate: firstCellData.startDate,\r\n endDate: lastCellData.endDate\r\n };\r\n if (void 0 !== lastCellData.allDay) {\r\n result.allDay = lastCellData.allDay\r\n }\r\n this.invoke(\"showAddAppointmentPopup\", result, lastCellData.groups)\r\n };\r\n _proto2._attachContextMenuEvent = function() {\r\n this._createContextMenuAction();\r\n var cellSelector = \".\" + DATE_TABLE_CELL_CLASS + \",.\" + ALL_DAY_TABLE_CELL_CLASS;\r\n var $element = this.$element();\r\n var eventName = (0, _index.addNamespace)(_contextmenu.name, this.NAME);\r\n _events_engine.default.off($element, eventName, cellSelector);\r\n _events_engine.default.on($element, eventName, cellSelector, this._contextMenuHandler.bind(this))\r\n };\r\n _proto2._contextMenuHandler = function(e) {\r\n var $cell = (0, _renderer.default)(e.target);\r\n this._contextMenuAction({\r\n event: e,\r\n cellElement: (0, _element.getPublicElement)($cell),\r\n cellData: this.getCellData($cell)\r\n });\r\n this._contextMenuHandled = true\r\n };\r\n _proto2._createContextMenuAction = function() {\r\n this._contextMenuAction = this._createActionByOption(\"onCellContextMenu\")\r\n };\r\n _proto2._getGroupHeaderContainer = function() {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n return this._$groupTable\r\n }\r\n return this._$thead\r\n };\r\n _proto2._getDateHeaderContainer = function() {\r\n return this._$thead\r\n };\r\n _proto2._renderGroupHeader = function() {\r\n var $container = this._getGroupHeaderContainer();\r\n var groupCount = this._getGroupCount();\r\n var cellTemplates = [];\r\n if (groupCount) {\r\n var groupRows = this._makeGroupRows(this.option(\"groups\"), this.option(\"groupByDate\"));\r\n this._attachGroupCountAttr(groupCount, groupRows);\r\n $container.append(groupRows.elements);\r\n cellTemplates = groupRows.cellTemplates\r\n } else {\r\n this._detachGroupCountAttr()\r\n }\r\n return cellTemplates\r\n };\r\n _proto2._applyCellTemplates = function(templates) {\r\n templates.forEach(function(template) {\r\n template()\r\n })\r\n };\r\n _proto2._detachGroupCountAttr = function() {\r\n var groupedAttr = this._groupedStrategy.getGroupCountAttr();\r\n this.$element().removeAttr(groupedAttr.attr)\r\n };\r\n _proto2._attachGroupCountAttr = function(groupRowCount, groupRows) {\r\n var groupedAttr = this._groupedStrategy.getGroupCountAttr(groupRowCount, groupRows);\r\n this.$element().attr(groupedAttr.attr, groupedAttr.count)\r\n };\r\n _proto2.headerPanelOffsetRecalculate = function() {\r\n if (!this.option(\"resourceCellTemplate\") && !this.option(\"dateCellTemplate\")) {\r\n return\r\n }\r\n var headerPanelHeight = this.getHeaderPanelHeight();\r\n var headerHeight = this.invoke(\"getHeaderHeight\");\r\n var allDayPanelHeight = this.supportAllDayRow() && this._isShowAllDayPanel() ? this._groupedStrategy.getAllDayTableHeight() : 0;\r\n headerPanelHeight && this._headerScrollable && this._headerScrollable.$element().height(headerPanelHeight + allDayPanelHeight);\r\n headerPanelHeight && this._dateTableScrollable.$element().css({\r\n paddingBottom: allDayPanelHeight + headerPanelHeight + \"px\",\r\n marginBottom: -1 * (parseInt(headerPanelHeight, 10) + allDayPanelHeight) + \"px\"\r\n });\r\n headerPanelHeight && this._sidebarScrollable && this._sidebarScrollable.$element().css({\r\n paddingBottom: allDayPanelHeight + headerPanelHeight + \"px\",\r\n marginBottom: -1 * (parseInt(headerPanelHeight, 10) + allDayPanelHeight) + \"px\"\r\n });\r\n this._$allDayTitle && this._$allDayTitle.css(\"top\", headerHeight + headerPanelHeight + \"px\")\r\n };\r\n _proto2._makeGroupRows = function(groups, groupByDate) {\r\n var tableCreatorStrategy = this._isVerticalGroupedWorkSpace() ? tableCreator.VERTICAL : tableCreator.HORIZONTAL;\r\n return tableCreator.makeGroupedTable(tableCreatorStrategy, groups, {\r\n groupHeaderRowClass: this._getGroupRowClass(),\r\n groupRowClass: this._getGroupRowClass(),\r\n groupHeaderClass: this._getGroupHeaderClass.bind(this),\r\n groupHeaderContentClass: this._getGroupHeaderContentClass()\r\n }, this._getCellCount() || 1, this.option(\"resourceCellTemplate\"), this._getGroupCount(), groupByDate)\r\n };\r\n _proto2._getDateHeaderTemplate = function() {\r\n return this.option(\"dateCellTemplate\")\r\n };\r\n _proto2._renderDateHeader = function() {\r\n var container = this._getDateHeaderContainer();\r\n var $headerRow = (0, _renderer.default)(\"
\").addClass(HEADER_ROW_CLASS);\r\n var count = this._getCellCount();\r\n var cellTemplate = this._getDateHeaderTemplate();\r\n var repeatCount = this._getCalculateHeaderCellRepeatCount();\r\n var templateCallbacks = [];\r\n var groupByDate = this.isGroupedByDate();\r\n if (!groupByDate) {\r\n for (var rowIndex = 0; rowIndex < repeatCount; rowIndex++) {\r\n for (var cellIndex = 0; cellIndex < count; cellIndex++) {\r\n var templateIndex = rowIndex * repeatCount + cellIndex;\r\n this._renderDateHeaderTemplate($headerRow, cellIndex, templateIndex, cellTemplate, templateCallbacks)\r\n }\r\n }\r\n container.append($headerRow)\r\n } else {\r\n var colSpan = groupByDate ? this._getGroupCount() : 1;\r\n for (var _cellIndex = 0; _cellIndex < count; _cellIndex++) {\r\n var _templateIndex = _cellIndex * repeatCount;\r\n var cellElement = this._renderDateHeaderTemplate($headerRow, _cellIndex, _templateIndex, cellTemplate, templateCallbacks);\r\n cellElement.attr(\"colSpan\", colSpan)\r\n }\r\n container.prepend($headerRow)\r\n }\r\n this._applyCellTemplates(templateCallbacks);\r\n return $headerRow\r\n };\r\n _proto2._renderDateHeaderTemplate = function(container, panelCellIndex, templateIndex, cellTemplate, templateCallbacks) {\r\n var text = this._getHeaderText(panelCellIndex);\r\n var $cell = (0, _renderer.default)(\"
\").addClass(this._getHeaderPanelCellClass(panelCellIndex)).attr(\"title\", text);\r\n if (null !== cellTemplate && void 0 !== cellTemplate && cellTemplate.render) {\r\n templateCallbacks.push(cellTemplate.render.bind(cellTemplate, {\r\n model: {\r\n text: text,\r\n date: this._getDateByIndex(panelCellIndex)\r\n },\r\n index: templateIndex,\r\n container: (0, _element.getPublicElement)($cell)\r\n }))\r\n } else {\r\n $cell.text(text)\r\n }\r\n container.append($cell);\r\n return $cell\r\n };\r\n _proto2._getHeaderPanelCellClass = function(i) {\r\n var cellClass = HEADER_PANEL_CELL_CLASS + \" \" + HORIZONTAL_SIZES_CLASS;\r\n return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, i + 1, void 0, void 0, this.isGroupedByDate())\r\n };\r\n _proto2._getCalculateHeaderCellRepeatCount = function() {\r\n return this._groupedStrategy.calculateHeaderCellRepeatCount()\r\n };\r\n _proto2._renderAllDayPanel = function(index) {\r\n var cellCount = this._getCellCount();\r\n if (!this._isVerticalGroupedWorkSpace()) {\r\n cellCount *= this._getGroupCount() || 1\r\n }\r\n var cellTemplates = this._renderTableBody({\r\n container: this._allDayPanels.length ? (0, _element.getPublicElement)(this._allDayTables[index]) : (0, _element.getPublicElement)(this._$allDayTable),\r\n rowCount: 1,\r\n cellCount: cellCount,\r\n cellClass: this._getAllDayPanelCellClass.bind(this),\r\n rowClass: ALL_DAY_TABLE_ROW_CLASS,\r\n cellTemplate: this.option(\"dataCellTemplate\"),\r\n getCellData: this._getAllDayCellData.bind(this),\r\n groupIndex: index\r\n }, true);\r\n this._toggleAllDayVisibility();\r\n this._applyCellTemplates(cellTemplates)\r\n };\r\n _proto2._renderGroupAllDayPanel = function() {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n var groupCount = this._getGroupCount();\r\n for (var i = 0; i < groupCount; i++) {\r\n this._renderAllDayPanel(i)\r\n }\r\n }\r\n };\r\n _proto2._getAllDayPanelCellClass = function(i, j) {\r\n var cellClass = ALL_DAY_TABLE_CELL_CLASS + \" \" + HORIZONTAL_SIZES_CLASS;\r\n return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, j + 1)\r\n };\r\n _proto2._getAllDayCellData = function(cell, rowIndex, cellIndex, groupIndex) {\r\n var startDate = this._getDateByCellIndexes(rowIndex, cellIndex);\r\n var cellGroupIndex = groupIndex || this._getGroupIndex(rowIndex, cellIndex);\r\n startDate = _date.default.trimTime(startDate);\r\n var data = {\r\n startDate: startDate,\r\n endDate: startDate,\r\n allDay: true,\r\n groupIndex: cellGroupIndex\r\n };\r\n var groups = this._getCellGroups(cellGroupIndex);\r\n if (groups.length) {\r\n data.groups = {}\r\n }\r\n for (var i = 0; i < groups.length; i++) {\r\n data.groups[groups[i].name] = groups[i].id\r\n }\r\n return {\r\n key: CELL_DATA,\r\n value: data\r\n }\r\n };\r\n _proto2._toggleAllDayVisibility = function() {\r\n var showAllDayPanel = this._isShowAllDayPanel();\r\n this._$allDayPanel.toggle(showAllDayPanel);\r\n this._$allDayTitle && this._$allDayTitle.toggleClass(ALL_DAY_TITLE_HIDDEN_CLASS, !showAllDayPanel);\r\n this.$element().toggleClass(WORKSPACE_WITH_ALL_DAY_CLASS, showAllDayPanel);\r\n this._changeAllDayVisibility();\r\n this._updateScrollable()\r\n };\r\n _proto2._changeAllDayVisibility = function() {\r\n this.$element().toggleClass(WORKSPACE_WITH_COLLAPSED_ALL_DAY_CLASS, !this.option(\"allDayExpanded\") && this._isShowAllDayPanel())\r\n };\r\n _proto2._updateScrollable = function() {\r\n this._dateTableScrollable.update();\r\n this._headerScrollable && this._headerScrollable.update();\r\n this._sidebarScrollable && this._sidebarScrollable.update()\r\n };\r\n _proto2._renderTimePanel = function() {\r\n var _this7 = this;\r\n var repeatCount = this._groupedStrategy.calculateTimeCellRepeatCount();\r\n var startViewDate = _utils.default.getDateWithoutTimezoneChange(this.getStartViewDate());\r\n var _getTimeText = function(i) {\r\n var index = i % _this7._getRowCount();\r\n if (index % 2 === 0) {\r\n return _date2.default.format(_this7._getTimeCellDateCore(startViewDate, i), \"shorttime\")\r\n }\r\n return \"\"\r\n };\r\n this._renderTableBody({\r\n container: (0, _element.getPublicElement)(this._$timePanel),\r\n rowCount: this._getTimePanelRowCount() * repeatCount,\r\n cellCount: 1,\r\n cellClass: this._getTimeCellClass.bind(this),\r\n rowClass: TIME_PANEL_ROW_CLASS,\r\n cellTemplate: this.option(\"timeCellTemplate\"),\r\n getCellText: _getTimeText.bind(this),\r\n getCellDate: this._getTimeCellDate.bind(this),\r\n groupCount: this._getGroupCount(),\r\n allDayElements: this._insertAllDayRowsIntoDateTable() ? this._allDayTitles : void 0\r\n })\r\n };\r\n _proto2._getTimePanelRowCount = function() {\r\n return this._getCellCountInDay()\r\n };\r\n _proto2._getCellCountInDay = function(skipRound) {\r\n var result = this._calculateDayDuration() / this.option(\"hoursInterval\");\r\n return skipRound ? result : Math.ceil(result)\r\n };\r\n _proto2._calculateDayDuration = function() {\r\n return this.option(\"endDayHour\") - this.option(\"startDayHour\")\r\n };\r\n _proto2._getTimeCellClass = function(i) {\r\n var cellClass = TIME_PANEL_CELL_CLASS + \" \" + VERTICAL_SIZES_CLASS;\r\n return this._isVerticalGroupedWorkSpace() ? this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, i, i) : cellClass\r\n };\r\n _proto2._getTimeCellDate = function(i) {\r\n return this._getTimeCellDateCore(this.getStartViewDate(), i)\r\n };\r\n _proto2._getTimeCellDateCore = function(startViewDate, i) {\r\n var result = new Date(startViewDate);\r\n var timeCellDuration = Math.round(this.getCellDuration());\r\n var cellCountInDay = this._getCellCountInDay(true);\r\n result.setMilliseconds(result.getMilliseconds() + timeCellDuration * (i % cellCountInDay));\r\n return result\r\n };\r\n _proto2._renderDateTable = function() {\r\n var groupCount = this._getGroupCount();\r\n this._renderTableBody({\r\n container: (0, _element.getPublicElement)(this._$dateTable),\r\n rowCount: this._getTotalRowCount(groupCount),\r\n cellCount: this._getTotalCellCount(groupCount),\r\n cellClass: this._getDateTableCellClass.bind(this),\r\n rowClass: this._getDateTableRowClass(),\r\n cellTemplate: this.option(\"dataCellTemplate\"),\r\n getCellData: this._getCellData.bind(this),\r\n allDayElements: this._insertAllDayRowsIntoDateTable() ? this._allDayPanels : void 0,\r\n groupCount: groupCount,\r\n groupByDate: this.option(\"groupByDate\")\r\n })\r\n };\r\n _proto2._insertAllDayRowsIntoDateTable = function() {\r\n return this._groupedStrategy.insertAllDayRowsIntoDateTable()\r\n };\r\n _proto2._getTotalCellCount = function(groupCount) {\r\n return this._groupedStrategy.getTotalCellCount(groupCount)\r\n };\r\n _proto2._getTotalRowCount = function(groupCount, includeAllDayPanelRows) {\r\n var result = this._groupedStrategy.getTotalRowCount(groupCount);\r\n if (includeAllDayPanelRows && groupCount > 1 && this._isShowAllDayPanel()) {\r\n result += groupCount\r\n }\r\n return result\r\n };\r\n _proto2._getCellData = function(cell, rowIndex, cellIndex) {\r\n var data = this._prepareCellData(rowIndex, cellIndex, cell);\r\n return {\r\n key: CELL_DATA,\r\n value: data\r\n }\r\n };\r\n _proto2._prepareCellData = function(rowIndex, cellIndex) {\r\n var startDate = this._getDateByCellIndexes(rowIndex, cellIndex);\r\n var endDate = this.calculateEndDate(startDate);\r\n var groupIndex = this._getGroupIndex(rowIndex, cellIndex);\r\n var data = {\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: this._getTableAllDay(),\r\n groupIndex: groupIndex\r\n };\r\n var groups = this._getCellGroups(groupIndex);\r\n if (groups.length) {\r\n data.groups = {}\r\n }\r\n for (var i = 0; i < groups.length; i++) {\r\n data.groups[groups[i].name] = groups[i].id\r\n }\r\n return data\r\n };\r\n _proto2._getGroupIndex = function(rowIndex, cellIndex) {\r\n return this._groupedStrategy.getGroupIndex(rowIndex, cellIndex)\r\n };\r\n _proto2._getTableAllDay = function() {\r\n return false\r\n };\r\n _proto2.calculateEndDate = function(startDate) {\r\n var result = new Date(startDate);\r\n result.setMilliseconds(result.getMilliseconds() + Math.round(this._getInterval()));\r\n return result\r\n };\r\n _proto2._getGroupCount = function() {\r\n var groups = this.option(\"groups\");\r\n var result = 0;\r\n for (var i = 0, len = groups.length; i < len; i++) {\r\n if (!i) {\r\n result = groups[i].items.length\r\n } else {\r\n result *= groups[i].items.length\r\n }\r\n }\r\n return result\r\n };\r\n _proto2._getPathToLeaf = function(leafIndex) {\r\n var tree = this.invoke(\"createResourcesTree\", this.option(\"groups\"));\r\n\r\n function findLeafByIndex(data, index) {\r\n for (var i = 0; i < data.length; i++) {\r\n if (data[i].leafIndex === index) {\r\n return data[i]\r\n } else {\r\n var _leaf = findLeafByIndex(data[i].children, index);\r\n if (_leaf) {\r\n return _leaf\r\n }\r\n }\r\n }\r\n }\r\n\r\n function makeBranch(leaf, result) {\r\n result = result || [];\r\n result.push(leaf.value);\r\n if (leaf.parent) {\r\n makeBranch(leaf.parent, result)\r\n }\r\n return result\r\n }\r\n var leaf = findLeafByIndex(tree, leafIndex);\r\n return makeBranch(leaf).reverse()\r\n };\r\n _proto2._getCellGroups = function(groupIndex) {\r\n var result = [];\r\n if (this._getGroupCount()) {\r\n var groups = this.option(\"groups\");\r\n if (groupIndex < 0) {\r\n return\r\n }\r\n var path = this._getPathToLeaf(groupIndex);\r\n for (var i = 0; i < groups.length; i++) {\r\n result.push({\r\n name: groups[i].name,\r\n id: path[i]\r\n })\r\n }\r\n }\r\n return result\r\n };\r\n _proto2._attachTablesEvents = function() {\r\n var _this8 = this;\r\n var that = this;\r\n var isPointerDown = false;\r\n var cellHeight;\r\n var cellWidth;\r\n var $element = this.$element();\r\n _events_engine.default.off($element, SCHEDULER_CELL_DXDRAGENTER_EVENT_NAME);\r\n _events_engine.default.off($element, SCHEDULER_CELL_DXDRAGLEAVE_EVENT_NAME);\r\n _events_engine.default.off($element, SCHEDULER_CELL_DXDROP_EVENT_NAME);\r\n _events_engine.default.off($element, SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME);\r\n _events_engine.default.off($element, SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME);\r\n _events_engine.default.on($element, SCHEDULER_CELL_DXDRAGENTER_EVENT_NAME, SCHEDULER_DRAG_AND_DROP_SELECTOR, {\r\n itemSizeFunc: function($element) {\r\n if (!cellHeight) {\r\n cellHeight = (0, _position.getBoundingRect)($element.get(0)).height\r\n }\r\n if (!cellWidth) {\r\n cellWidth = (0, _position.getBoundingRect)($element.get(0)).width\r\n }\r\n return {\r\n width: cellWidth,\r\n height: cellHeight\r\n }\r\n },\r\n checkDropTarget: function(target, event) {\r\n return !_this8._isOutsideScrollable(target, event)\r\n }\r\n }, function(e) {\r\n if (that._$currentTableTarget) {\r\n that.removeDroppableCellClass(that._$currentTableTarget)\r\n }\r\n that._$currentTableTarget = (0, _renderer.default)(e.target);\r\n that._$currentTableTarget.addClass(DATE_TABLE_DROPPABLE_CELL_CLASS)\r\n });\r\n _events_engine.default.on($element, SCHEDULER_CELL_DXDRAGLEAVE_EVENT_NAME, function(e) {\r\n if (!$element.find((0, _renderer.default)(e.draggingElement)).length) {\r\n that.removeDroppableCellClass()\r\n }\r\n });\r\n _events_engine.default.on($element, SCHEDULER_CELL_DXDROP_EVENT_NAME, SCHEDULER_DRAG_AND_DROP_SELECTOR, function(e) {\r\n that.removeDroppableCellClass((0, _renderer.default)(e.target));\r\n cellHeight = 0;\r\n cellWidth = 0\r\n });\r\n _events_engine.default.on($element, SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME, SCHEDULER_DRAG_AND_DROP_SELECTOR, function(e) {\r\n if ((0, _index.isMouseEvent)(e) && 1 === e.which) {\r\n isPointerDown = true;\r\n that.$element().addClass(WORKSPACE_WITH_MOUSE_SELECTION_CLASS);\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME);\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME, function() {\r\n isPointerDown = false;\r\n that.$element().removeClass(WORKSPACE_WITH_MOUSE_SELECTION_CLASS)\r\n })\r\n }\r\n });\r\n _events_engine.default.on($element, SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME, SCHEDULER_DRAG_AND_DROP_SELECTOR, function(e) {\r\n if (isPointerDown && that._dateTableScrollable && !that._dateTableScrollable.option(\"scrollByContent\")) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n that._moveToCell((0, _renderer.default)(e.target), true)\r\n }\r\n })\r\n };\r\n _proto2._getDateTables = function() {\r\n return this._$dateTable.add(this._$allDayTable)\r\n };\r\n _proto2._getDateTable = function() {\r\n return this._$dateTable\r\n };\r\n _proto2._getAllDayTable = function() {\r\n return this._$allDayTable\r\n };\r\n _proto2._getInterval = function() {\r\n if (void 0 === this._interval) {\r\n this._interval = this.option(\"hoursInterval\") * HOUR_MS\r\n }\r\n return this._interval\r\n };\r\n _proto2._getHeaderText = function(headerIndex) {\r\n return _date2.default.format(this._getDateForHeaderText(headerIndex), this._getFormat())\r\n };\r\n _proto2._getDateForHeaderText = function(index) {\r\n return this._getDateByIndex(index)\r\n };\r\n _proto2._getDateByIndex = function() {\r\n return abstract()\r\n };\r\n _proto2._getFormat = function() {\r\n return abstract()\r\n };\r\n _proto2._calculateCellIndex = function(rowIndex, cellIndex) {\r\n return this._groupedStrategy.calculateCellIndex(rowIndex, cellIndex)\r\n };\r\n _proto2._renderTableBody = function(options, delayCellTemplateRendering) {\r\n var result = [];\r\n if (!delayCellTemplateRendering) {\r\n this._applyCellTemplates(tableCreator.makeTable(options))\r\n } else {\r\n result = tableCreator.makeTable(options)\r\n }\r\n return result\r\n };\r\n _proto2._removeAllDayElements = function() {\r\n this._$allDayTable && this._$allDayTable.remove();\r\n this._$allDayTitle && this._$allDayTitle.remove()\r\n };\r\n _proto2._cleanView = function() {\r\n var _this$virtualSelectio2;\r\n this.cache.clear();\r\n this._cleanAllowedPositions();\r\n null === (_this$virtualSelectio2 = this.virtualSelectionState) || void 0 === _this$virtualSelectio2 ? void 0 : _this$virtualSelectio2.releaseSelectedAndFocusedCells();\r\n this._$thead.empty();\r\n this._$dateTable.empty();\r\n this._shader && this._shader.clean();\r\n this._$timePanel.empty();\r\n this._$allDayTable && this._$allDayTable.empty();\r\n this._$groupTable.empty();\r\n delete this._hiddenInterval;\r\n delete this._interval\r\n };\r\n _proto2._clean = function() {\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME);\r\n _WidgetObserver.prototype._clean.call(this)\r\n };\r\n _proto2._disposeRenovatedComponents = function() {\r\n var _this$renovatedAllDay, _this$renovatedDateTa, _this$renovatedTimePa;\r\n null === (_this$renovatedAllDay = this.renovatedAllDayPanel) || void 0 === _this$renovatedAllDay ? void 0 : _this$renovatedAllDay.dispose();\r\n this.renovatedAllDayPanel = void 0;\r\n null === (_this$renovatedDateTa = this.renovatedDateTable) || void 0 === _this$renovatedDateTa ? void 0 : _this$renovatedDateTa.dispose();\r\n this.renovatedDateTable = void 0;\r\n null === (_this$renovatedTimePa = this.renovatedTimePanel) || void 0 === _this$renovatedTimePa ? void 0 : _this$renovatedTimePa.dispose();\r\n this.renovatedTimePanel = void 0\r\n };\r\n _proto2.getWorkArea = function() {\r\n return this._dateTableScrollable.$content()\r\n };\r\n _proto2.getScrollable = function() {\r\n return this._dateTableScrollable\r\n };\r\n _proto2.getScrollableScrollTop = function() {\r\n return this._dateTableScrollable.scrollTop();\r\n };\r\n _proto2.getGroupedScrollableScrollTop = function(allDay) {\r\n return this._groupedStrategy.getScrollableScrollTop(allDay)\r\n };\r\n _proto2.getScrollableScrollLeft = function() {\r\n return this._dateTableScrollable.scrollLeft()\r\n };\r\n _proto2.getScrollableOuterWidth = function() {\r\n return this._dateTableScrollable.scrollWidth()\r\n };\r\n _proto2.getScrollableContainer = function() {\r\n return this._dateTableScrollable._container()\r\n };\r\n _proto2.getHeaderPanelHeight = function() {\r\n return this._$headerPanel && this._$headerPanel.outerHeight(true)\r\n };\r\n _proto2.getTimePanelWidth = function() {\r\n return this._$timePanel && (0, _position.getBoundingRect)(this._$timePanel.get(0)).width\r\n };\r\n _proto2.getGroupTableWidth = function() {\r\n return this._$groupTable ? this._$groupTable.outerWidth() : 0\r\n };\r\n _proto2.getWorkSpaceLeftOffset = function() {\r\n return this._groupedStrategy.getLeftOffset()\r\n };\r\n _proto2.getGroupedStrategy = function() {\r\n return this._groupedStrategy\r\n };\r\n _proto2._getCellCoordinatesByIndex = function(index) {\r\n var cellIndex = Math.floor(index / this._getRowCount());\r\n var rowIndex = index - this._getRowCount() * cellIndex;\r\n return {\r\n cellIndex: cellIndex,\r\n rowIndex: rowIndex\r\n }\r\n };\r\n _proto2._getDateByCellIndexes = function(rowIndex, cellIndex, patchedIndexes) {\r\n cellIndex = !patchedIndexes ? this._patchCellIndex(cellIndex) : cellIndex;\r\n var firstViewDate = this.getStartViewDate();\r\n var currentDate = new Date(firstViewDate.getTime() + this._getMillisecondsOffset(rowIndex, cellIndex) + this._getOffsetByCount(cellIndex));\r\n currentDate.setTime(currentDate.getTime() + _date.default.getTimezonesDifference(firstViewDate, currentDate));\r\n return currentDate\r\n };\r\n _proto2._patchCellIndex = function(cellIndex) {\r\n if (this.isGroupedByDate()) {\r\n cellIndex = Math.floor(cellIndex / this._getGroupCount())\r\n }\r\n return cellIndex\r\n };\r\n _proto2._getOffsetByCount = function() {\r\n return 0\r\n };\r\n _proto2._getMillisecondsOffset = function(rowIndex, cellIndex) {\r\n return this._getInterval() * this._calculateCellIndex(rowIndex, cellIndex) + this._calculateHiddenInterval(rowIndex, cellIndex)\r\n };\r\n _proto2._calculateHiddenInterval = function(rowIndex, cellIndex) {\r\n var dayCount = cellIndex % this._getCellCount();\r\n return dayCount * this._getHiddenInterval()\r\n };\r\n _proto2._getHiddenInterval = function() {\r\n if (void 0 === this._hiddenInterval) {\r\n this._hiddenInterval = DAY_MS - this.getVisibleDayDuration()\r\n }\r\n return this._hiddenInterval\r\n };\r\n _proto2._getIntervalBetween = function(currentDate, allDay) {\r\n var firstViewDate = this.getStartViewDate();\r\n var startDayTime = this.option(\"startDayHour\") * HOUR_MS;\r\n var timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate);\r\n var fullInterval = currentDate.getTime() - firstViewDate.getTime() - timeZoneOffset;\r\n var days = this._getDaysOfInterval(fullInterval, startDayTime);\r\n var weekendsCount = this._getWeekendsCount(days);\r\n var result = (days - weekendsCount) * DAY_MS;\r\n if (!allDay) {\r\n result = fullInterval - days * this._getHiddenInterval() - weekendsCount * this.getVisibleDayDuration()\r\n }\r\n return result\r\n };\r\n _proto2._getWeekendsCount = function() {\r\n return 0\r\n };\r\n _proto2._getDaysOfInterval = function(fullInterval, startDayTime) {\r\n return Math.floor((fullInterval + startDayTime) / DAY_MS)\r\n };\r\n _proto2._getGroupIndexes = function(appointmentResources) {\r\n var result = [];\r\n if (this._isGroupsSpecified(appointmentResources)) {\r\n var tree = this.invoke(\"createResourcesTree\", this.option(\"groups\"));\r\n result = this.invoke(\"getResourceTreeLeaves\", tree, appointmentResources)\r\n }\r\n return result\r\n };\r\n _proto2._updateIndex = function(index) {\r\n return index * this._getRowCount()\r\n };\r\n _proto2._getDroppableCell = function() {\r\n return this._getDateTables().find(\".\" + DATE_TABLE_DROPPABLE_CELL_CLASS)\r\n };\r\n _proto2._getWorkSpaceWidth = function() {\r\n var _this9 = this;\r\n return this.cache.get(\"workspaceWidth\", function() {\r\n if (_this9._needCreateCrossScrolling()) {\r\n return (0, _position.getBoundingRect)(_this9._$dateTable.get(0)).width\r\n }\r\n return (0, _position.getBoundingRect)(_this9.$element().get(0)).width - _this9.getTimePanelWidth()\r\n })\r\n };\r\n _proto2._getCellPositionByIndex = function(index, groupIndex, inAllDayRow) {\r\n var cellCoordinates = this._getCellCoordinatesByIndex(index);\r\n var $cell = this._getCellByCoordinates(cellCoordinates, groupIndex, inAllDayRow);\r\n return this._getCellPositionWithCache($cell, cellCoordinates, groupIndex)\r\n };\r\n _proto2._getCellPositionWithCache = function($cell, cellCoordinates, groupIndex) {\r\n var result = this._getCellPosition($cell);\r\n this.setCellDataCache(cellCoordinates, groupIndex, $cell);\r\n if (result) {\r\n result.rowIndex = cellCoordinates.rowIndex;\r\n result.cellIndex = cellCoordinates.cellIndex\r\n }\r\n return result\r\n };\r\n _proto2._getCellPosition = function($cell) {\r\n var position = $cell.position();\r\n if (this.option(\"rtlEnabled\")) {\r\n position.left += (0, _position.getBoundingRect)($cell.get(0)).width\r\n }\r\n return position\r\n };\r\n _proto2._getCellByCoordinates = function(cellCoordinates, groupIndex, inAllDayRow) {\r\n var indexes = this._groupedStrategy.prepareCellIndexes(cellCoordinates, groupIndex, inAllDayRow);\r\n return this._dom_getDateCell(indexes)\r\n };\r\n _proto2._dom_getDateCell = function(position) {\r\n return this._$dateTable.find(\"tr:not(.\".concat(VIRTUAL_ROW_CLASS, \")\")).eq(position.rowIndex).find(\"td\").eq(position.cellIndex)\r\n };\r\n _proto2._dom_getAllDayPanelCell = function(cellIndex) {\r\n return this._$allDayPanel.find(\"tr\").eq(0).find(\"td\").eq(cellIndex)\r\n };\r\n _proto2._getCells = function(allDay, direction) {\r\n var cellClass = allDay ? ALL_DAY_TABLE_CELL_CLASS : DATE_TABLE_CELL_CLASS;\r\n if (\"vertical\" === direction) {\r\n var result = [];\r\n for (var i = 1;; i++) {\r\n var cells = this.$element().find(\"tr .\".concat(cellClass, \":nth-child(\").concat(i, \")\"));\r\n if (!cells.length) {\r\n break\r\n }\r\n result = result.concat(cells.toArray())\r\n }\r\n return (0, _renderer.default)(result)\r\n } else {\r\n return this.$element().find(\".\" + cellClass)\r\n }\r\n };\r\n _proto2._getAllCells = function(allDay) {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n return this._$dateTable.find(\"td:not(.\".concat(VIRTUAL_CELL_CLASS, \")\"))\r\n }\r\n var cellClass = allDay && this.supportAllDayRow() ? ALL_DAY_TABLE_CELL_CLASS : DATE_TABLE_CELL_CLASS;\r\n return this.$element().find(\".\" + cellClass)\r\n };\r\n _proto2._setHorizontalGroupHeaderCellsHeight = function() {\r\n var height = (0, _position.getBoundingRect)(this._$dateTable.get(0)).height;\r\n this._$groupTable.outerHeight(height)\r\n };\r\n _proto2._getDateTableBorder = function() {\r\n return DATE_TABLE_CELL_BORDER\r\n };\r\n _proto2._getDateTableBorderOffset = function() {\r\n return 2 * this._getDateTableBorder()\r\n };\r\n _proto2._getGroupHeaderCellsContent = function() {\r\n return this.$element().find(\".\" + GROUP_HEADER_CONTENT_CLASS)\r\n };\r\n _proto2._getGroupHeaderCells = function() {\r\n return this.$element().find(\".\" + GROUP_HEADER_CLASS)\r\n };\r\n _proto2._getScrollCoordinates = function(hours, minutes, date, groupIndex, allDay) {\r\n var currentDate = date || new Date(this.option(\"currentDate\"));\r\n var startDayHour = this.option(\"startDayHour\");\r\n var endDayHour = this.option(\"endDayHour\");\r\n if (hours < startDayHour) {\r\n hours = startDayHour\r\n }\r\n if (hours >= endDayHour) {\r\n hours = endDayHour - 1\r\n }\r\n currentDate.setHours(hours, minutes, 0, 0);\r\n if (!this.isVirtualScrolling()) {\r\n return this.getCoordinatesByDate(currentDate, groupIndex, allDay)\r\n }\r\n var cell = this.viewDataProvider.findGlobalCellPosition(currentDate, groupIndex, allDay);\r\n var position = cell.position,\r\n cellData = cell.cellData;\r\n return this.virtualScrollingDispatcher.calculateCoordinatesByDataAndPosition(cellData, position, currentDate)\r\n };\r\n _proto2._isOutsideScrollable = function(target, event) {\r\n var $dateTableScrollableElement = this._dateTableScrollable.$element();\r\n var scrollableSize = (0, _position.getBoundingRect)($dateTableScrollableElement.get(0));\r\n var window = (0, _window.getWindow)();\r\n var isTargetInAllDayPanel = !(0, _renderer.default)(target).closest($dateTableScrollableElement).length;\r\n var isOutsideHorizontalScrollable = event.pageX < scrollableSize.left || event.pageX > scrollableSize.left + scrollableSize.width + (window.scrollX || 0);\r\n var isOutsideVerticalScrollable = event.pageY < scrollableSize.top || event.pageY > scrollableSize.top + scrollableSize.height + (window.scrollY || 0);\r\n if (isTargetInAllDayPanel && !isOutsideHorizontalScrollable) {\r\n return false\r\n }\r\n return isOutsideVerticalScrollable || isOutsideHorizontalScrollable\r\n };\r\n _proto2.setCellDataCache = function(cellCoordinates, groupIndex, $cell) {\r\n var key = JSON.stringify({\r\n rowIndex: cellCoordinates.rowIndex,\r\n cellIndex: cellCoordinates.cellIndex,\r\n groupIndex: groupIndex\r\n });\r\n this.cache.set(key, this.getCellData($cell))\r\n };\r\n _proto2.setCellDataCacheAlias = function(appointment, geometry) {\r\n var key = JSON.stringify({\r\n rowIndex: appointment.rowIndex,\r\n cellIndex: appointment.cellIndex,\r\n groupIndex: appointment.groupIndex\r\n });\r\n var aliasKey = JSON.stringify({\r\n top: geometry.top,\r\n left: geometry.left\r\n });\r\n this.cache.set(aliasKey, this.cache.get(key))\r\n };\r\n _proto2._cleanAllowedPositions = function() {\r\n this._maxAllowedVerticalPosition = [];\r\n this._maxAllowedPosition = []\r\n };\r\n _proto2.supportAllDayRow = function() {\r\n return true\r\n };\r\n _proto2.keepOriginalHours = function() {\r\n return false\r\n };\r\n _proto2.getSelectedCellData = function() {\r\n if (this.isVirtualScrolling()) {\r\n return this.virtualSelectionState.getSelectedCells()\r\n }\r\n var $focusedCells = this._getAllFocusedCells();\r\n var result = [];\r\n if ($focusedCells.length > 1) {\r\n result = this._getMultipleCellsData($focusedCells)\r\n } else {\r\n var data = this.getCellData((0, _renderer.default)($focusedCells[0]));\r\n data && result.push(data)\r\n }\r\n return result\r\n };\r\n _proto2._getMultipleCellsData = function($cells) {\r\n var data = [];\r\n for (var i = 0; i < $cells.length; i++) {\r\n data.push(this.getCellData((0, _renderer.default)($cells[i])))\r\n }\r\n return data\r\n };\r\n _proto2.getCellData = function($cell) {\r\n var data;\r\n var currentCell = $cell[0];\r\n if (currentCell) {\r\n if (this.isRenovatedRender()) {\r\n data = this._getCellDataInRenovatedView($cell)\r\n } else {\r\n data = (0, _element_data.data)(currentCell, CELL_DATA)\r\n }\r\n }\r\n return (0, _extend.extend)(true, {}, data)\r\n };\r\n _proto2._getVirtualRowOffset = function() {\r\n return this.isVirtualScrolling() ? this.virtualScrollingDispatcher.verticalScrollingState.virtualItemSizeBefore : 0\r\n };\r\n _proto2._getCellDataInRenovatedView = function($cell) {\r\n var rowIndex = $cell.parent().index();\r\n if (this.isVirtualScrolling()) {\r\n rowIndex -= this.virtualScrollingDispatcher.topVirtualRowsCount\r\n }\r\n var columnIndex = $cell.index();\r\n var viewDataProvider = this.viewDataProvider;\r\n var isAllDayCell = this._hasAllDayClass($cell);\r\n var cellData = viewDataProvider.getCellData(rowIndex, columnIndex, isAllDayCell);\r\n return cellData ? {\r\n startDate: cellData.startDate,\r\n endDate: cellData.endDate,\r\n groups: cellData.groups,\r\n groupIndex: cellData.groupIndex,\r\n allDay: cellData.allDay,\r\n text: cellData.text\r\n } : void 0\r\n };\r\n _proto2._getHorizontalMax = function(groupIndex) {\r\n groupIndex = this.isGroupedByDate() ? this._getGroupCount() - 1 : groupIndex;\r\n return this._groupedStrategy.getHorizontalMax(groupIndex)\r\n };\r\n _proto2.getCoordinatesByDate = function(date, groupIndex, inAllDayRow) {\r\n groupIndex = groupIndex || 0;\r\n var position;\r\n var shouldFindPositionByViewData = this.isVirtualScrolling() && (!inAllDayRow || this._isVerticalGroupedWorkSpace());\r\n if (shouldFindPositionByViewData) {\r\n var positionByMap = this.viewDataProvider.findCellPositionInMap(groupIndex, date, inAllDayRow);\r\n if (!positionByMap) {\r\n return\r\n }\r\n var $cell = this._dom_getDateCell(positionByMap);\r\n position = this._getCellPositionWithCache($cell, positionByMap, groupIndex)\r\n } else {\r\n position = this.calculateCellPositionByView(date, groupIndex, inAllDayRow)\r\n }\r\n var shift = this.getPositionShift(inAllDayRow ? 0 : this.getTimeShift(date), inAllDayRow);\r\n var horizontalHMax = this._getHorizontalMax(groupIndex, date);\r\n if (!position) {\r\n throw _ui.default.Error(\"E1039\")\r\n }\r\n return {\r\n cellPosition: position.left + shift.cellPosition,\r\n top: position.top + shift.top,\r\n left: position.left + shift.left,\r\n rowIndex: position.rowIndex,\r\n cellIndex: position.cellIndex,\r\n hMax: horizontalHMax,\r\n vMax: this.getVerticalMax(groupIndex),\r\n groupIndex: groupIndex\r\n }\r\n };\r\n _proto2.calculateCellPositionByView = function(date, groupIndex, inAllDayRow) {\r\n var index = this.getCellIndexByDate(date, inAllDayRow);\r\n var position = this._getCellPositionByIndex(index, groupIndex, inAllDayRow);\r\n if (position) {\r\n position.top -= this._getVirtualRowOffset()\r\n }\r\n return position\r\n };\r\n _proto2.getVerticalMax = function(groupIndex) {\r\n return this._groupedStrategy.getVerticalMax(groupIndex)\r\n };\r\n _proto2._getOffsetByAllDayPanel = function(groupIndex) {\r\n return this._groupedStrategy._getOffsetByAllDayPanel(groupIndex)\r\n };\r\n _proto2._getGroupTop = function(groupIndex) {\r\n return this._groupedStrategy._getGroupTop(groupIndex)\r\n };\r\n _proto2.isGroupedByDate = function() {\r\n return this.option(\"groupByDate\") && this._isHorizontalGroupedWorkSpace() && this._getGroupCount() > 0\r\n };\r\n _proto2.getCellIndexByDate = function(date, inAllDayRow) {\r\n var timeInterval = inAllDayRow ? 864e5 : this._getInterval();\r\n var dateTimeStamp = this._getIntervalBetween(date, inAllDayRow);\r\n var index = Math.floor(dateTimeStamp / timeInterval);\r\n if (inAllDayRow) {\r\n index = this._updateIndex(index)\r\n }\r\n if (index < 0) {\r\n index = 0\r\n }\r\n return index\r\n };\r\n _proto2.getPositionShift = function(timeShift, isAllDay) {\r\n return {\r\n top: timeShift * this.getCellHeight(),\r\n left: 0,\r\n cellPosition: 0\r\n }\r\n };\r\n _proto2.getTimeShift = function(date) {\r\n var currentDayStart = new Date(date);\r\n var cellDuration = this.getCellDuration();\r\n var currentDayEndHour = new Date(new Date(date).setHours(this.option(\"endDayHour\"), 0, 0));\r\n if (date.getTime() <= currentDayEndHour.getTime()) {\r\n currentDayStart.setHours(this.option(\"startDayHour\"), 0, 0, 0)\r\n }\r\n var timeZoneDifference = _date.default.getTimezonesDifference(date, currentDayStart);\r\n var currentDateTime = date.getTime();\r\n var currentDayStartTime = currentDayStart.getTime();\r\n var minTime = this._firstViewDate.getTime();\r\n return currentDateTime > minTime ? (currentDateTime - currentDayStartTime + timeZoneDifference) % cellDuration / cellDuration : 0\r\n };\r\n _proto2._isSkippedData = function() {\r\n return false\r\n };\r\n _proto2.getCoordinatesByDateInGroup = function(startDate, appointmentResources, inAllDayRow) {\r\n var _this10 = this;\r\n var result = [];\r\n if (this._isSkippedData(startDate)) {\r\n return result\r\n }\r\n var groupIndices = this._getGroupCount() ? this._getGroupIndexes(appointmentResources) : [0];\r\n groupIndices.forEach(function(groupIndex) {\r\n var coordinates = _this10.getCoordinatesByDate(startDate, groupIndex, inAllDayRow);\r\n coordinates && result.push(coordinates)\r\n });\r\n return result\r\n };\r\n _proto2.getDroppableCellIndex = function() {\r\n var $droppableCell = this._getDroppableCell();\r\n var $row = $droppableCell.parent();\r\n var rowIndex = $row.index();\r\n return rowIndex * $row.find(\"td\").length + $droppableCell.index()\r\n };\r\n _proto2.getDataByDroppableCell = function() {\r\n var cellData = this.getCellData((0, _renderer.default)(this._getDroppableCell()));\r\n var allDay = cellData.allDay;\r\n var startDate = cellData.startDate;\r\n var endDate = startDate && this.invoke(\"calculateAppointmentEndDate\", allDay, startDate);\r\n return {\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: allDay,\r\n groups: cellData.groups\r\n }\r\n };\r\n _proto2.getDateRange = function() {\r\n return [this.getStartViewDate(), this.getEndViewDateByEndDayHour()]\r\n };\r\n _proto2.getCellWidth = function() {\r\n var _this11 = this;\r\n return this.cache.get(\"cellWidth\", function() {\r\n var cell = _this11._getCells().first().get(0);\r\n return cell && (0, _position.getBoundingRect)(cell).width\r\n })\r\n };\r\n _proto2.getCellMinWidth = function() {\r\n return DATE_TABLE_MIN_CELL_WIDTH\r\n };\r\n _proto2.getRoundedCellWidth = function(groupIndex, startIndex, cellCount) {\r\n if (groupIndex < 0) {\r\n return 0\r\n }\r\n var $row = this.$element().find(\".\" + this._getDateTableRowClass()).eq(0);\r\n var width = 0;\r\n var $cells = $row.find(\".\" + DATE_TABLE_CELL_CLASS);\r\n var totalCellCount = this._getCellCount() * groupIndex;\r\n cellCount = cellCount || this._getCellCount();\r\n if (!(0, _type.isDefined)(startIndex)) {\r\n startIndex = totalCellCount\r\n }\r\n for (var i = startIndex; i < totalCellCount + cellCount; i++) {\r\n width += (0, _position.getBoundingRect)((0, _renderer.default)($cells).eq(i).get(0)).width\r\n }\r\n return width / (totalCellCount + cellCount - startIndex)\r\n };\r\n _proto2.getCellHeight = function() {\r\n var _this12 = this;\r\n var useCache = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : true;\r\n var callbackResult = function() {\r\n var cell = _this12._getCells().first().get(0);\r\n return cell && (0, _position.getBoundingRect)(cell).height\r\n };\r\n return useCache ? this.cache.get(\"cellHeight\", callbackResult) : callbackResult()\r\n };\r\n _proto2.getAllDayHeight = function() {\r\n var cell = this._getCells(true).first().get(0);\r\n return this._isShowAllDayPanel() ? cell && (0, _position.getBoundingRect)(cell).height || 0 : 0\r\n };\r\n _proto2.getAllDayOffset = function() {\r\n return this._groupedStrategy.getAllDayOffset()\r\n };\r\n _proto2.getMaxAllowedPosition = function() {\r\n if (0 === this._maxAllowedPosition.length) {\r\n var isRtl = this.option(\"rtlEnabled\");\r\n this._maxAllowedPosition = [];\r\n this._$dateTable.find(\"tr:not(.\".concat(VIRTUAL_ROW_CLASS, \")\")).first().find(\"td:nth-child(\".concat(this._getCellCount(), \"n)\")).each(function(_, cell) {\r\n var maxPosition = (0, _renderer.default)(cell).position().left;\r\n if (!isRtl) {\r\n maxPosition += (0, _position.getBoundingRect)(cell).width\r\n }\r\n this._maxAllowedPosition.push(Math.round(maxPosition))\r\n }.bind(this))\r\n }\r\n return this._maxAllowedPosition\r\n };\r\n _proto2.getMaxAllowedVerticalPosition = function(groupIndex) {\r\n if (this.isVirtualScrolling()) {\r\n return this.getMaxAllowedVerticalPositionVirtual(groupIndex)\r\n }\r\n return this.getMaxAllowedVerticalPositionStandard(groupIndex)\r\n };\r\n _proto2.getMaxAllowedVerticalPositionStandard = function(groupIndex) {\r\n var _this13 = this;\r\n if (0 === this._maxAllowedVerticalPosition.length) {\r\n var rowCount = this._getRowCount();\r\n this._$dateTable.find(\"tr:not(.\".concat(VIRTUAL_ROW_CLASS, \"):nth-child(\").concat(rowCount, \"n)\")).each(function(_, row) {\r\n var maxPosition = (0, _renderer.default)(row).position().top + (0, _position.getBoundingRect)(row).height;\r\n _this13._maxAllowedVerticalPosition.push(Math.round(maxPosition))\r\n })\r\n }\r\n return this._maxAllowedVerticalPosition[groupIndex]\r\n };\r\n _proto2.getMaxAllowedVerticalPositionVirtual = function(groupIndex) {\r\n var _this14 = this;\r\n var getMaxPosition = function(rowIndex) {\r\n var row = _this14._$dateTable.find(\"tr:not(.\".concat(VIRTUAL_ROW_CLASS, \")\")).get(rowIndex);\r\n var maxPosition = (0, _renderer.default)(row).position().top + (0, _position.getBoundingRect)(row).height;\r\n if (_this14.isGroupedAllDayPanel()) {\r\n maxPosition -= (groupIndex + 1) * _this14.getAllDayHeight()\r\n }\r\n _this14._maxAllowedVerticalPosition[groupIndex] = Math.round(maxPosition)\r\n };\r\n if (!this._maxAllowedVerticalPosition[groupIndex]) {\r\n var _this$viewDataProvide = this.viewDataProvider.getLasGroupCellPosition(groupIndex),\r\n rowIndex = _this$viewDataProvide.rowIndex;\r\n getMaxPosition(rowIndex)\r\n }\r\n return this._maxAllowedVerticalPosition[groupIndex]\r\n };\r\n _proto2.getFixedContainer = function() {\r\n return this._$fixedContainer\r\n };\r\n _proto2.getAllDayContainer = function() {\r\n return this._$allDayContainer\r\n };\r\n _proto2.getCellIndexByCoordinates = function(coordinates, allDay) {\r\n var cellCount = this._getTotalCellCount(this._getGroupCount());\r\n var cellWidth = Math.floor(this._getWorkSpaceWidth() / cellCount);\r\n var cellHeight = allDay ? this.getAllDayHeight() : this.getCellHeight();\r\n var leftOffset = this._isRTL() || this.option(\"crossScrollingEnabled\") ? 0 : this.getWorkSpaceLeftOffset();\r\n var topIndex = Math.floor(Math.floor(coordinates.top) / Math.floor(cellHeight));\r\n var leftIndex = Math.floor((coordinates.left + 5 - leftOffset) / cellWidth);\r\n if (this._isRTL()) {\r\n leftIndex = cellCount - leftIndex - 1\r\n }\r\n return cellCount * topIndex + leftIndex\r\n };\r\n _proto2.getStartViewDate = function() {\r\n return this._firstViewDate\r\n };\r\n _proto2.getEndViewDate = function() {\r\n var dateOfLastViewCell = this.getDateOfLastViewCell();\r\n var endDateOfLastViewCell = this.calculateEndViewDate(dateOfLastViewCell);\r\n return this._adjustEndViewDateByDaylightDiff(dateOfLastViewCell, endDateOfLastViewCell)\r\n };\r\n _proto2.getEndViewDateByEndDayHour = function() {\r\n var dateOfLastViewCell = this.getDateOfLastViewCell();\r\n var endTime = _date.default.dateTimeFromDecimal(this.option(\"endDayHour\"));\r\n var endDateOfLastViewCell = new Date(dateOfLastViewCell.setHours(endTime.hours, endTime.minutes));\r\n return this._adjustEndViewDateByDaylightDiff(dateOfLastViewCell, endDateOfLastViewCell)\r\n };\r\n _proto2.calculateEndViewDate = function(dateOfLastViewCell) {\r\n return new Date(dateOfLastViewCell.getTime() + this.getCellDuration())\r\n };\r\n _proto2._adjustEndViewDateByDaylightDiff = function(startDate, endDate) {\r\n var daylightDiff = _utils.default.getDaylightOffsetInMs(startDate, endDate);\r\n var endDateOfLastViewCell = new Date(endDate.getTime() - daylightDiff);\r\n return new Date(endDateOfLastViewCell.getTime() - this._getEndViewDateTimeDiff())\r\n };\r\n _proto2._getEndViewDateTimeDiff = function() {\r\n return toMs(\"minute\")\r\n };\r\n _proto2.getDateOfLastViewCell = function() {\r\n var rowIndex = this._getRowCount() - 1;\r\n var cellIndex = this._getCellCount();\r\n if (this.isGroupedByDate()) {\r\n cellIndex = cellIndex * this._getGroupCount() - 1\r\n } else {\r\n cellIndex -= 1\r\n }\r\n return this._getDateByCellIndexes(rowIndex, cellIndex, true)\r\n };\r\n _proto2.getCellDuration = function() {\r\n return 36e5 * this.option(\"hoursInterval\")\r\n };\r\n _proto2.getIntervalDuration = function(allDay) {\r\n return allDay ? toMs(\"day\") : this.getCellDuration()\r\n };\r\n _proto2.getVisibleDayDuration = function() {\r\n return this.option(\"hoursInterval\") * this._getCellCountInDay() * HOUR_MS\r\n };\r\n _proto2.getGroupBounds = function(coordinates) {\r\n var cellCount = this._getCellCount();\r\n var $cells = this._getCells();\r\n var cellWidth = this.getCellWidth();\r\n var result = this._groupedStrategy.getGroupBoundsOffset(cellCount, $cells, cellWidth, coordinates);\r\n if (this._isRTL()) {\r\n var startOffset = result.left;\r\n result.left = result.right - 2 * cellWidth;\r\n result.right = startOffset + 2 * cellWidth\r\n }\r\n return result\r\n };\r\n _proto2.needRecalculateResizableArea = function() {\r\n return this._isVerticalGroupedWorkSpace() && 0 !== this.getScrollable().scrollTop()\r\n };\r\n _proto2.getCellDataByCoordinates = function(coordinates, allDay) {\r\n var _this15 = this;\r\n var key = JSON.stringify({\r\n top: coordinates.top,\r\n left: coordinates.left\r\n });\r\n return this.cache.get(key, function() {\r\n var $cells = _this15._getCells(allDay);\r\n var cellIndex = _this15.getCellIndexByCoordinates(coordinates, allDay);\r\n var $cell = $cells.eq(cellIndex);\r\n return _this15.getCellData($cell)\r\n })\r\n };\r\n _proto2.getVisibleBounds = function() {\r\n var result = {};\r\n var $scrollable = this.getScrollable().$element();\r\n var cellHeight = this.getCellHeight();\r\n var scrolledCellCount = this.getScrollableScrollTop() / cellHeight;\r\n var totalCellCount = scrolledCellCount + $scrollable.height() / cellHeight;\r\n result.top = {\r\n hours: Math.floor(scrolledCellCount * this.option(\"hoursInterval\")) + this.option(\"startDayHour\"),\r\n minutes: scrolledCellCount % 2 ? 30 : 0\r\n };\r\n result.bottom = {\r\n hours: Math.floor(totalCellCount * this.option(\"hoursInterval\")) + this.option(\"startDayHour\"),\r\n minutes: Math.floor(totalCellCount) % 2 ? 30 : 0\r\n };\r\n return result\r\n };\r\n _proto2.updateScrollPosition = function(date, groups) {\r\n var allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n var scheduler = this.option(\"observer\");\r\n var newDate = scheduler.timeZoneCalculator.createDate(date, {\r\n path: \"toGrid\"\r\n });\r\n var inAllDayRow = allDay && this.supportAllDayRow() && this._isShowAllDayPanel();\r\n if (this.needUpdateScrollPosition(newDate, groups, inAllDayRow)) {\r\n this.scrollTo(newDate, groups, inAllDayRow, false)\r\n }\r\n };\r\n _proto2.needUpdateScrollPosition = function(date, groups, inAllDayRow) {\r\n var _this16 = this;\r\n var cells = this._getCellsInViewport(inAllDayRow);\r\n var groupIndex = this._isGroupsSpecified(groups) ? this._getGroupIndexByResourceId(groups) : 0;\r\n var time = date.getTime();\r\n var trimmedTime = _date.default.trimTime(date).getTime();\r\n return cells.reduce(function(currentResult, cell) {\r\n var _this16$getCellData = _this16.getCellData(cell),\r\n cellStartDate = _this16$getCellData.startDate,\r\n cellEndDate = _this16$getCellData.endDate,\r\n cellGroupIndex = _this16$getCellData.groupIndex;\r\n var cellStartTime = cellStartDate.getTime();\r\n var cellEndTime = cellEndDate.getTime();\r\n if ((!inAllDayRow && cellStartTime <= time && time < cellEndTime || inAllDayRow && trimmedTime === cellStartTime) && groupIndex === cellGroupIndex) {\r\n return false\r\n }\r\n return currentResult\r\n }, true)\r\n };\r\n _proto2._getCellsInViewport = function(inAllDayRow) {\r\n var $scrollable = this.getScrollable().$element();\r\n var cellHeight = this.getCellHeight();\r\n var cellWidth = this.getCellWidth();\r\n var totalColumnCount = this._getTotalCellCount(this._getGroupCount());\r\n var scrollableScrollTop = this.getScrollableScrollTop();\r\n var scrollableScrollLeft = this.getScrollableScrollLeft();\r\n var fullScrolledRowCount = scrollableScrollTop / cellHeight;\r\n if (this.isVirtualScrolling()) {\r\n fullScrolledRowCount -= this.virtualScrollingDispatcher.topVirtualRowsCount\r\n }\r\n var scrolledRowCount = Math.floor(fullScrolledRowCount);\r\n if (scrollableScrollTop % cellHeight !== 0) {\r\n scrolledRowCount += 1\r\n }\r\n var fullScrolledColumnCount = scrollableScrollLeft / cellWidth;\r\n var scrolledColumnCount = Math.floor(fullScrolledColumnCount);\r\n if (scrollableScrollLeft % cellWidth !== 0) {\r\n scrolledColumnCount += 1\r\n }\r\n var rowCount = Math.floor(fullScrolledRowCount + $scrollable.height() / cellHeight);\r\n var columnCount = Math.floor(fullScrolledColumnCount + $scrollable.width() / cellWidth);\r\n var $cells = this._getAllCells(inAllDayRow);\r\n var result = [];\r\n $cells.each(function(index) {\r\n var $cell = (0, _renderer.default)(this);\r\n var columnIndex = index % totalColumnCount;\r\n var rowIndex = index / totalColumnCount;\r\n if (scrolledColumnCount <= columnIndex && columnIndex < columnCount && scrolledRowCount <= rowIndex && rowIndex < rowCount) {\r\n result.push($cell)\r\n }\r\n });\r\n return result\r\n };\r\n _proto2.getGroupWidth = function(groupIndex) {\r\n var result = this._getCellCount() * this.getCellWidth();\r\n var position = this.getMaxAllowedPosition();\r\n var currentPosition = position[groupIndex];\r\n if (position.length && currentPosition) {\r\n if (this._isRTL()) {\r\n result = currentPosition - position[groupIndex + 1]\r\n } else {\r\n if (0 === groupIndex) {\r\n result = currentPosition\r\n } else {\r\n result = currentPosition - position[groupIndex - 1]\r\n }\r\n }\r\n }\r\n return result\r\n };\r\n _proto2.scrollToTime = function(hours, minutes, date) {\r\n if (!this._isValidScrollDate(date)) {\r\n return\r\n }\r\n var coordinates = this._getScrollCoordinates(hours, minutes, date);\r\n var scrollable = this.getScrollable();\r\n scrollable.scrollBy({\r\n top: coordinates.top - scrollable.scrollTop(),\r\n left: 0\r\n })\r\n };\r\n _proto2.scrollTo = function(date, groups) {\r\n var allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n var throwWarning = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : true;\r\n if (!this._isValidScrollDate(date, throwWarning)) {\r\n return\r\n }\r\n var groupIndex = this._getGroupCount() && groups ? this._getGroupIndexByResourceId(groups) : 0;\r\n var isScrollToAllDay = allDay && this.supportAllDayRow() && this._isShowAllDayPanel();\r\n var coordinates = this._getScrollCoordinates(date.getHours(), date.getMinutes(), date, groupIndex, isScrollToAllDay);\r\n var scrollable = this.getScrollable();\r\n var $scrollable = scrollable.$element();\r\n var offset = this.option(\"rtlEnabled\") ? this.getCellWidth() : 0;\r\n var scrollableHeight = $scrollable.height();\r\n var scrollableWidth = $scrollable.width();\r\n var cellWidth = this.getCellWidth();\r\n var cellHeight = this.getCellHeight();\r\n var xShift = (scrollableWidth - cellWidth) / 2;\r\n var yShift = (scrollableHeight - cellHeight) / 2;\r\n var left = coordinates.left - scrollable.scrollLeft() - xShift - offset;\r\n var top = coordinates.top - scrollable.scrollTop() - yShift;\r\n if (isScrollToAllDay && !this._isVerticalGroupedWorkSpace()) {\r\n top = 0\r\n }\r\n if (this.option(\"templatesRenderAsynchronously\")) {\r\n setTimeout(function() {\r\n scrollable.scrollBy({\r\n left: left,\r\n top: top\r\n })\r\n })\r\n } else {\r\n scrollable.scrollBy({\r\n left: left,\r\n top: top\r\n })\r\n }\r\n };\r\n _proto2._isValidScrollDate = function(date) {\r\n var throwWarning = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true;\r\n var min = this.getStartViewDate();\r\n var max = this.getEndViewDate();\r\n if (date < min || date > max) {\r\n throwWarning && _ui.default.log(\"W1008\", date);\r\n return false\r\n }\r\n return true\r\n };\r\n _proto2.getDistanceBetweenCells = function(startIndex, endIndex) {\r\n var result = 0;\r\n this.$element().find(\".\" + this._getDateTableRowClass()).first().find(\".\" + DATE_TABLE_CELL_CLASS).each(function(index) {\r\n if (index < startIndex || index > endIndex) {\r\n return true\r\n }\r\n result += (0, _position.getBoundingRect)(this).width\r\n });\r\n return result\r\n };\r\n _proto2.needApplyCollectorOffset = function() {\r\n return false\r\n };\r\n _proto2.initDragBehavior = function(scheduler) {\r\n if (!this.dragBehavior && scheduler) {\r\n this.dragBehavior = new _appointmentDragBehavior.default(scheduler);\r\n this._createDragBehavior(this.getWorkArea());\r\n this._createDragBehavior(this.getAllDayContainer());\r\n this._createDragBehavior(this._$allDayPanel)\r\n }\r\n };\r\n _proto2._createDragBehavior = function($element) {\r\n var getItemData = function(itemElement, appointments) {\r\n return appointments._getItemData(itemElement)\r\n };\r\n var getItemSettings = function($itemElement) {\r\n return $itemElement.data(_constants.APPOINTMENT_SETTINGS_KEY)\r\n };\r\n this._createDragBehaviorBase($element, getItemData, getItemSettings)\r\n };\r\n _proto2._createDragBehaviorBase = function($element, getItemData, getItemSettings) {\r\n var _this17 = this;\r\n var _ref3 = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {},\r\n isSetCursorOffset = _ref3.isSetCursorOffset,\r\n restOptions = _objectWithoutProperties(_ref3, [\"isSetCursorOffset\"]);\r\n var dragElement;\r\n var dragBehavior = this.dragBehavior;\r\n var itemData;\r\n dragBehavior.addTo($element, _objectSpread({\r\n container: this.$element().find(\".\".concat(_constants.FIXED_CONTAINER_CLASS)),\r\n dragTemplate: function() {\r\n return dragElement\r\n },\r\n onDragStart: function(e) {\r\n var canceled = e.cancel;\r\n var event = e.event;\r\n var $itemElement = (0, _renderer.default)(e.itemElement);\r\n var appointments = e.component._appointments;\r\n itemData = getItemData(e.itemElement, appointments);\r\n var settings = getItemSettings($itemElement, e);\r\n if (itemData && !itemData.disabled) {\r\n event.data = event.data || {};\r\n if (!canceled) {\r\n if (!settings.isCompact) {\r\n dragBehavior.updateDragSource(itemData, settings)\r\n }\r\n dragElement = _this17._createDragAppointment(itemData, settings, appointments);\r\n event.data.itemElement = dragElement;\r\n event.data.initialPosition = (0, _translator.locate)((0, _renderer.default)(dragElement));\r\n event.data.itemData = itemData;\r\n event.data.itemSettings = settings;\r\n dragBehavior.onDragStart(event.data);\r\n (0, _translator.resetPosition)((0, _renderer.default)(dragElement))\r\n }\r\n }\r\n },\r\n onDragEnd: function(e) {\r\n var _dragElement;\r\n if (itemData && !itemData.disabled) {\r\n dragBehavior.onDragEnd(e)\r\n }\r\n null === (_dragElement = dragElement) || void 0 === _dragElement ? void 0 : _dragElement.remove()\r\n },\r\n cursorOffset: isSetCursorOffset ? function() {\r\n var $dragElement = (0, _renderer.default)(dragElement);\r\n return {\r\n x: $dragElement.width() / 2,\r\n y: $dragElement.height() / 2\r\n }\r\n } : void 0\r\n }, restOptions))\r\n };\r\n _proto2._createDragAppointment = function(itemData, settings, appointments) {\r\n var appointmentIndex = appointments.option(\"items\").length;\r\n settings.isCompact = false;\r\n settings.virtual = false;\r\n var items = appointments._renderItem(appointmentIndex, {\r\n itemData: itemData,\r\n settings: [settings]\r\n });\r\n return items[0]\r\n };\r\n _proto2._isApplyCompactAppointmentOffset = function() {\r\n return this._supportCompactDropDownAppointments()\r\n };\r\n _proto2._supportCompactDropDownAppointments = function() {\r\n return true\r\n };\r\n _proto2._formatWeekday = function(date) {\r\n return formatWeekday(date)\r\n };\r\n _proto2._formatWeekdayAndDay = function(date) {\r\n return formatWeekday(date) + \" \" + _date2.default.format(date, \"day\")\r\n };\r\n _proto2.removeDroppableCellClass = function($cellElement) {\r\n ($cellElement || this._getDroppableCell()).removeClass(DATE_TABLE_DROPPABLE_CELL_CLASS)\r\n };\r\n _proto2._getCoordinatesByCell = function($cell) {\r\n var columnIndex = $cell.index();\r\n var rowIndex = $cell.parent().index();\r\n var isAllDayCell = this._hasAllDayClass($cell);\r\n var isVerticalGrouping = this._isVerticalGroupedWorkSpace();\r\n if (this.isVirtualScrolling() && !(isAllDayCell && !isVerticalGrouping)) {\r\n rowIndex -= this.virtualScrollingDispatcher.topVirtualRowsCount\r\n }\r\n return {\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n }\r\n };\r\n _proto2._isShowAllDayPanel = function() {\r\n return this.option(\"showAllDayPanel\")\r\n };\r\n _proto2.updateAppointments = function() {\r\n var _this$dragBehavior;\r\n this.invoke(\"renderAppointments\");\r\n null === (_this$dragBehavior = this.dragBehavior) || void 0 === _this$dragBehavior ? void 0 : _this$dragBehavior.updateDragSource()\r\n };\r\n _createClass(SchedulerWorkSpace, [{\r\n key: \"viewDataProvider\",\r\n get: function() {\r\n if (!this._viewDataProvider) {\r\n this._viewDataProvider = new _view_data_provider.default(this)\r\n }\r\n return this._viewDataProvider\r\n }\r\n }, {\r\n key: \"cache\",\r\n get: function() {\r\n return _cache.cache\r\n }\r\n }, {\r\n key: \"virtualSelectionState\",\r\n get: function() {\r\n if (!this._virtualSelectionState) {\r\n this._virtualSelectionState = new _virtual_selection_state.default(this.viewDataProvider)\r\n }\r\n return this._virtualSelectionState\r\n }\r\n }]);\r\n return SchedulerWorkSpace\r\n}(_widgetObserver.default);\r\nvar _default = SchedulerWorkSpace;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/const.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.DefaultSizes = void 0;\r\nvar DefaultSizes = {\r\n allDayPanelHeight: 25\r\n};\r\nexports.DefaultSizes = DefaultSizes;\r\n","import { ItiBaseDto } from '@/iti-core-vue';\nimport { CollaborativeAreaMember } from './collaborative-area-member';\nimport { CollaborativeAreaType } from './collaborative-area-type';\n\nexport class CollaborativeArea extends ItiBaseDto {\n public name !: string;\n public description !: string;\n public active !: boolean;\n public type !: any; //CollaborativeAreaType || number;\n public users !: CollaborativeAreaMember[];\n public numberUsers !: number;\n public numberFiles !: number;\n public lastFileDate !: Date;\n public lastFileName !: string;\n public lastFileId!: number;\n public numberChatMessages !: number;\n public lastMessageDate !: Date;\n public lastMessage !: string;\n public roomId !: number;\n public lastPostId !: number\n public lastPostTitle !: string;\n public lastPostDate !: Date;\n public numberEvents !: number;\n public nextEventDate !: Date;\n public nameNextEvent !: string;\n public allDay !: boolean;\n public nameUsers !: string[];\n\n}","/**\r\n * DevExtreme (ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.horizontal.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiSchedulerAppointmentsStrategy = _interopRequireDefault(require(\"./ui.scheduler.appointments.strategy.base\"));\r\nvar _date = _interopRequireDefault(require(\"../../../core/utils/date\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar DEFAULT_APPOINTMENT_HEIGHT = 60;\r\nvar MIN_APPOINTMENT_HEIGHT = 35;\r\nvar DROP_DOWN_BUTTON_OFFSET = 2;\r\nvar toMs = _date.default.dateToMilliseconds;\r\nvar HorizontalRenderingStrategy = function(_BaseAppointmentsStra) {\r\n _inheritsLoose(HorizontalRenderingStrategy, _BaseAppointmentsStra);\r\n\r\n function HorizontalRenderingStrategy() {\r\n return _BaseAppointmentsStra.apply(this, arguments) || this\r\n }\r\n var _proto = HorizontalRenderingStrategy.prototype;\r\n _proto._needVerifyItemSize = function() {\r\n return true\r\n };\r\n _proto.calculateAppointmentWidth = function(appointment, position) {\r\n var cellWidth = this.getDefaultCellWidth() || this.getAppointmentMinSize();\r\n var allDay = this.instance.fire(\"getField\", \"allDay\", appointment);\r\n var startDate = position.info.appointment.startDate;\r\n var endDate = this.normalizeEndDateByViewEnd(appointment, position.info.appointment.endDate);\r\n var appointmentDuration = this._getAppointmentDurationInMs(startDate, endDate, allDay);\r\n appointmentDuration = this._adjustDurationByDaylightDiff(appointmentDuration, startDate, endDate);\r\n var cellDuration = this.instance.getAppointmentDurationInMinutes() * toMs(\"minute\");\r\n var durationInCells = appointmentDuration / cellDuration;\r\n var width = this.cropAppointmentWidth(durationInCells * cellWidth, cellWidth);\r\n return width\r\n };\r\n _proto._needAdjustDuration = function(diff) {\r\n return diff < 0\r\n };\r\n _proto.getAppointmentGeometry = function(coordinates) {\r\n var result = this._customizeAppointmentGeometry(coordinates);\r\n return _BaseAppointmentsStra.prototype.getAppointmentGeometry.call(this, result)\r\n };\r\n _proto._customizeAppointmentGeometry = function(coordinates) {\r\n var config = this._calculateGeometryConfig(coordinates);\r\n return this._customizeCoordinates(coordinates, config.height, config.appointmentCountPerCell, config.offset)\r\n };\r\n _proto._getOffsets = function() {\r\n return {\r\n unlimited: 0,\r\n auto: 0\r\n }\r\n };\r\n _proto._getCompactLeftCoordinate = function(itemLeft, index) {\r\n var cellWidth = this.getDefaultCellWidth() || this.getAppointmentMinSize();\r\n return itemLeft + cellWidth * index\r\n };\r\n _proto._getMaxHeight = function() {\r\n return this.getDefaultCellHeight() || this.getAppointmentMinSize()\r\n };\r\n _proto._getAppointmentCount = function(overlappingMode, coordinates) {\r\n return this._getMaxAppointmentCountPerCellByType(false)\r\n };\r\n _proto._getAppointmentDefaultHeight = function() {\r\n return DEFAULT_APPOINTMENT_HEIGHT\r\n };\r\n _proto._getAppointmentMinHeight = function() {\r\n return MIN_APPOINTMENT_HEIGHT\r\n };\r\n _proto._sortCondition = function(a, b) {\r\n return this._columnCondition(a, b)\r\n };\r\n _proto._getOrientation = function() {\r\n return [\"left\", \"right\", \"top\"]\r\n };\r\n _proto._getMaxAppointmentWidth = function(startDate) {\r\n return this.instance.fire(\"getMaxAppointmentWidth\", {\r\n date: startDate\r\n })\r\n };\r\n _proto.getDropDownAppointmentWidth = function() {\r\n return this.getDefaultCellWidth() - 2 * DROP_DOWN_BUTTON_OFFSET\r\n };\r\n _proto.getDeltaTime = function(args, initialSize) {\r\n var deltaTime = 0;\r\n var deltaWidth = args.width - initialSize.width;\r\n deltaTime = toMs(\"minute\") * Math.round(deltaWidth / this.getDefaultCellWidth() * this.instance.getAppointmentDurationInMinutes());\r\n return deltaTime\r\n };\r\n _proto.isAllDay = function(appointmentData) {\r\n return this.instance.fire(\"getField\", \"allDay\", appointmentData)\r\n };\r\n _proto.needSeparateAppointment = function() {\r\n return this.instance.fire(\"isGroupedByDate\")\r\n };\r\n return HorizontalRenderingStrategy\r\n}(_uiSchedulerAppointmentsStrategy.default);\r\nvar _default = HorizontalRenderingStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/shaders/ui.scheduler.current_time_shader.vertical.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"../shaders/ui.scheduler.current_time_shader\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar DATE_TIME_SHADER_ALL_DAY_CLASS = \"dx-scheduler-date-time-shader-all-day\";\r\nvar DATE_TIME_SHADER_TOP_CLASS = \"dx-scheduler-date-time-shader-top\";\r\nvar DATE_TIME_SHADER_BOTTOM_CLASS = \"dx-scheduler-date-time-shader-bottom\";\r\nvar VerticalCurrentTimeShader = function(_CurrentTimeShader) {\r\n _inheritsLoose(VerticalCurrentTimeShader, _CurrentTimeShader);\r\n\r\n function VerticalCurrentTimeShader() {\r\n return _CurrentTimeShader.apply(this, arguments) || this\r\n }\r\n var _proto = VerticalCurrentTimeShader.prototype;\r\n _proto.renderShader = function() {\r\n var shaderHeight = this._getShaderHeight();\r\n var maxHeight = this._getShaderMaxHeight();\r\n var isSolidShader = shaderHeight > maxHeight;\r\n if (shaderHeight > maxHeight) {\r\n shaderHeight = maxHeight\r\n }\r\n this._$shader.height(shaderHeight);\r\n var groupCount = this._workSpace._getGroupCount() || 1;\r\n if (this._workSpace.isGroupedByDate()) {\r\n this._renderGroupedByDateShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader)\r\n } else {\r\n this._renderShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader)\r\n }\r\n };\r\n _proto._renderShaderParts = function(groupCount, shaderHeight, maxHeight, isSolidShader) {\r\n for (var i = 0; i < groupCount; i++) {\r\n var shaderWidth = this._getShaderWidth(i);\r\n this._renderTopShader(this._$shader, shaderHeight, shaderWidth, i);\r\n !isSolidShader && this._renderBottomShader(this._$shader, maxHeight, shaderHeight, shaderWidth, i);\r\n this._renderAllDayShader(shaderWidth, i)\r\n }\r\n };\r\n _proto._renderGroupedByDateShaderParts = function(groupCount, shaderHeight, maxHeight, isSolidShader) {\r\n var shaderWidth = this._getShaderWidth(0);\r\n var bottomShaderWidth = shaderWidth - this._workSpace.getCellWidth();\r\n if (shaderHeight < 0) {\r\n shaderHeight = 0;\r\n bottomShaderWidth = shaderWidth\r\n }\r\n this._renderTopShader(this._$shader, shaderHeight, shaderWidth * groupCount, 0);\r\n !isSolidShader && this._renderBottomShader(this._$shader, maxHeight, shaderHeight, bottomShaderWidth * groupCount + this._workSpace.getCellWidth(), 0);\r\n this._renderAllDayShader(shaderWidth * groupCount, 0)\r\n };\r\n _proto._renderTopShader = function($shader, height, width, i) {\r\n this._$topShader = (0, _renderer.default)(\"
\").addClass(DATE_TIME_SHADER_TOP_CLASS);\r\n width && this._$topShader.width(width) && this._$topShader.height(height);\r\n this._$topShader.css(\"marginTop\", this._getShaderTopOffset(i));\r\n this._$topShader.css(\"left\", this._getShaderOffset(i, width));\r\n $shader.append(this._$topShader)\r\n };\r\n _proto._renderBottomShader = function($shader, maxHeight, height, width, i) {\r\n this._$bottomShader = (0, _renderer.default)(\"
\").addClass(DATE_TIME_SHADER_BOTTOM_CLASS);\r\n var shaderWidth = height < 0 ? width : width - this._workSpace.getCellWidth();\r\n var shaderHeight = height < 0 ? maxHeight : maxHeight - height;\r\n this._$bottomShader.width(shaderWidth) && this._$bottomShader.height(shaderHeight);\r\n this._$bottomShader.css(\"left\", this._getShaderOffset(i, width - this._workSpace.getCellWidth()));\r\n $shader.append(this._$bottomShader)\r\n };\r\n _proto._renderAllDayShader = function(shaderWidth, i) {\r\n if (this._workSpace.option(\"showAllDayPanel\")) {\r\n this._$allDayIndicator = (0, _renderer.default)(\"
\").addClass(DATE_TIME_SHADER_ALL_DAY_CLASS);\r\n this._$allDayIndicator.height(this._workSpace.getAllDayHeight());\r\n this._$allDayIndicator.width(shaderWidth);\r\n this._$allDayIndicator.css(\"left\", this._getShaderOffset(i, shaderWidth));\r\n this._workSpace._$allDayPanel.prepend(this._$allDayIndicator)\r\n }\r\n };\r\n _proto._getShaderOffset = function(i, width) {\r\n return this._workSpace.getGroupedStrategy().getShaderOffset(i, width)\r\n };\r\n _proto._getShaderTopOffset = function(i) {\r\n return this._workSpace.getGroupedStrategy().getShaderTopOffset(i)\r\n };\r\n _proto._getShaderHeight = function(i, width) {\r\n return this._workSpace.getGroupedStrategy().getShaderHeight()\r\n };\r\n _proto._getShaderMaxHeight = function(i, width) {\r\n return this._workSpace.getGroupedStrategy().getShaderMaxHeight()\r\n };\r\n _proto._getShaderWidth = function(i) {\r\n return this._workSpace.getGroupedStrategy().getShaderWidth(i)\r\n };\r\n _proto.clean = function() {\r\n _CurrentTimeShader.prototype.clean.call(this);\r\n this._workSpace && this._workSpace._$allDayPanel && this._workSpace._$allDayPanel.find(\".\" + DATE_TIME_SHADER_ALL_DAY_CLASS).remove()\r\n };\r\n return VerticalCurrentTimeShader\r\n}(_uiScheduler.default);\r\nvar _default = VerticalCurrentTimeShader;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tooltip/tooltip.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 _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _popover = _interopRequireDefault(require(\"../popover\"));\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TOOLTIP_CLASS = \"dx-tooltip\";\r\nvar TOOLTIP_WRAPPER_CLASS = \"dx-tooltip-wrapper\";\r\nvar Tooltip = _popover.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n toolbarItems: [],\r\n showCloseButton: false,\r\n showTitle: false,\r\n title: null,\r\n titleTemplate: null,\r\n onTitleRendered: null,\r\n bottomTemplate: null,\r\n propagateOutsideClick: true\r\n })\r\n },\r\n _render: function() {\r\n this.$element().addClass(TOOLTIP_CLASS);\r\n this._wrapper().addClass(TOOLTIP_WRAPPER_CLASS);\r\n this.callBase()\r\n },\r\n _renderContent: function() {\r\n this.callBase();\r\n this._contentId = \"dx-\" + new _guid.default;\r\n this._$content.attr({\r\n id: this._contentId,\r\n role: \"tooltip\"\r\n });\r\n this._toggleAriaDescription(true)\r\n },\r\n _toggleAriaDescription: function(showing) {\r\n var $target = (0, _renderer.default)(this.option(\"target\"));\r\n var label = showing ? this._contentId : void 0;\r\n if (!(0, _type.isWindow)($target.get(0))) {\r\n this.setAria(\"describedby\", label, $target)\r\n }\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxTooltip\", Tooltip);\r\nvar _default = Tooltip;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/week/date_table/layout.j.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 _component = _interopRequireDefault(require(\"../../../../../preact_wrapper/component\"));\r\nvar _layout = require(\"./layout\");\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\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 WeekTableLayout = function(_BaseComponent) {\r\n _inheritsLoose(WeekTableLayout, _BaseComponent);\r\n\r\n function WeekTableLayout() {\r\n return _BaseComponent.apply(this, arguments) || this\r\n }\r\n var _proto = WeekTableLayout.prototype;\r\n _proto.getProps = function() {\r\n var props = _BaseComponent.prototype.getProps.call(this);\r\n props.dataCellTemplate = this._createTemplateComponent(props, props.dataCellTemplate);\r\n return props\r\n };\r\n _createClass(WeekTableLayout, [{\r\n key: \"_propsInfo\",\r\n get: function() {\r\n return {\r\n twoWay: [],\r\n allowNull: [],\r\n elements: []\r\n }\r\n }\r\n }, {\r\n key: \"_viewComponent\",\r\n get: function() {\r\n return _layout.WeekTableLayout\r\n }\r\n }]);\r\n return WeekTableLayout\r\n}(_component.default);\r\nexports.default = WeekTableLayout;\r\n(0, _component_registrator.default)(\"dxWeekTableLayout\", WeekTableLayout);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scheduler/workspaces/ui.scheduler.work_space_day.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../../core/component_registrator\"));\r\nvar _uiScheduler = _interopRequireDefault(require(\"./ui.scheduler.work_space_vertical\"));\r\nvar _layout = _interopRequireDefault(require(\"../../../renovation/ui/scheduler/workspaces/day/date_table/layout.j\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar DAY_CLASS = \"dx-scheduler-work-space-day\";\r\nvar SchedulerWorkSpaceDay = function(_SchedulerWorkSpaceVe) {\r\n _inheritsLoose(SchedulerWorkSpaceDay, _SchedulerWorkSpaceVe);\r\n\r\n function SchedulerWorkSpaceDay() {\r\n return _SchedulerWorkSpaceVe.apply(this, arguments) || this\r\n }\r\n var _proto = SchedulerWorkSpaceDay.prototype;\r\n _proto._getElementClass = function() {\r\n return DAY_CLASS\r\n };\r\n _proto._getRowCount = function() {\r\n return this._getCellCountInDay()\r\n };\r\n _proto._getCellCount = function() {\r\n return this.option(\"intervalCount\")\r\n };\r\n _proto._setFirstViewDate = function() {\r\n this._firstViewDate = this._getViewStartByOptions();\r\n this._setStartDayHour(this._firstViewDate)\r\n };\r\n _proto._getDateByIndex = function(headerIndex) {\r\n if (1 === this.option(\"intervalCount\")) {\r\n return this._firstViewDate\r\n }\r\n var resultDate = new Date(this._firstViewDate);\r\n resultDate.setDate(this._firstViewDate.getDate() + headerIndex);\r\n return resultDate\r\n };\r\n _proto._renderDateHeader = function() {\r\n return 1 === this.option(\"intervalCount\") ? null : _SchedulerWorkSpaceVe.prototype._renderDateHeader.call(this)\r\n };\r\n _proto.renderRDateTable = function() {\r\n this.renderRComponent(this._$dateTable, _layout.default, \"renovatedDateTable\", {\r\n viewData: this.viewDataProvider.viewData,\r\n dataCellTemplate: this.option(\"dataCellTemplate\")\r\n })\r\n };\r\n return SchedulerWorkSpaceDay\r\n}(_uiScheduler.default);\r\n(0, _component_registrator.default)(\"dxSchedulerWorkSpaceDay\", SchedulerWorkSpaceDay);\r\nvar _default = SchedulerWorkSpaceDay;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (renovation/ui/scheduler/workspaces/base/cell.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\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nexports.CellBase = CellBase;\r\nexports.CellBaseProps = exports.viewFunction = void 0;\r\nvar _utils = require(\"../utils\");\r\nvar Preact = _interopRequireWildcard(require(\"preact\"));\r\nvar _hooks = require(\"preact/hooks\");\r\n\r\nfunction _getRequireWildcardCache() {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cache = new WeakMap;\r\n _getRequireWildcardCache = function() {\r\n return cache\r\n };\r\n return cache\r\n}\r\n\r\nfunction _interopRequireWildcard(obj) {\r\n if (obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache();\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\n\r\nfunction _objectWithoutProperties(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = _objectWithoutPropertiesLoose(source, excluded);\r\n var key, i;\r\n if (Object.getOwnPropertySymbols) {\r\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\r\n for (i = 0; i < sourceSymbolKeys.length; i++) {\r\n key = sourceSymbolKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _objectWithoutPropertiesLoose(source, excluded) {\r\n if (null == source) {\r\n return {}\r\n }\r\n var target = {};\r\n var sourceKeys = Object.keys(source);\r\n var key, i;\r\n for (i = 0; i < sourceKeys.length; i++) {\r\n key = sourceKeys[i];\r\n if (excluded.indexOf(key) >= 0) {\r\n continue\r\n }\r\n target[key] = source[key]\r\n }\r\n return target\r\n}\r\n\r\nfunction ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n if (enumerableOnly) {\r\n symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })\r\n }\r\n keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n })\r\n } else {\r\n if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n } else {\r\n ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\n\r\nfunction _extends() {\r\n _extends = Object.assign || function(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = arguments[i];\r\n for (var key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n target[key] = source[key]\r\n }\r\n }\r\n }\r\n return target\r\n };\r\n return _extends.apply(this, arguments)\r\n}\r\nvar viewFunction = function(viewModel) {\r\n var ContentTemplate = viewModel.props.contentTemplate;\r\n return Preact.h(\"td\", _extends({}, viewModel.restAttributes, {\r\n className: viewModel.classes\r\n }), !viewModel.props.contentTemplate && viewModel.props.children, viewModel.props.contentTemplate && ContentTemplate(_objectSpread({}, viewModel.props.contentTemplateProps)))\r\n};\r\nexports.viewFunction = viewFunction;\r\nvar CellBaseProps = {\r\n className: \"\",\r\n isFirstGroupCell: false,\r\n isLastGroupCell: false,\r\n startDate: new Date,\r\n endDate: new Date,\r\n allDay: false,\r\n text: \"\",\r\n index: 0,\r\n contentTemplateProps: {\r\n data: {},\r\n index: 0\r\n }\r\n};\r\nexports.CellBaseProps = CellBaseProps;\r\nvar getTemplate = function(TemplateProp) {\r\n return TemplateProp && (TemplateProp.defaultProps ? function(props) {\r\n return Preact.h(TemplateProp, _extends({}, props))\r\n } : TemplateProp)\r\n};\r\n\r\nfunction CellBase(props) {\r\n var __classes = (0, _hooks.useCallback)(function() {\r\n var className = props.className,\r\n isFirstGroupCell = props.isFirstGroupCell,\r\n isLastGroupCell = props.isLastGroupCell;\r\n return (0, _utils.getGroupCellClasses)(isFirstGroupCell, isLastGroupCell, className)\r\n }, [props.className, props.isFirstGroupCell, props.isLastGroupCell]);\r\n var __restAttributes = (0, _hooks.useCallback)(function() {\r\n var restProps = (props.allDay, props.children, props.className, props.contentTemplate, props.contentTemplateProps, props.endDate, props.groupIndex, props.groups, props.index, props.isFirstGroupCell, props.isLastGroupCell, props.startDate, props.text, _objectWithoutProperties(props, [\"allDay\", \"children\", \"className\", \"contentTemplate\", \"contentTemplateProps\", \"endDate\", \"groupIndex\", \"groups\", \"index\", \"isFirstGroupCell\", \"isLastGroupCell\", \"startDate\", \"text\"]));\r\n return restProps\r\n }, [props]);\r\n return viewFunction({\r\n props: _objectSpread(_objectSpread({}, props), {}, {\r\n contentTemplate: getTemplate(props.contentTemplate)\r\n }),\r\n classes: __classes(),\r\n restAttributes: __restAttributes()\r\n })\r\n}\r\nCellBase.defaultProps = _objectSpread({}, CellBaseProps);\r\n","/**\r\n * DevExtreme (ui/text_area.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _index = require(\"../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../events/pointer\"));\r\nvar _uiEventsEmitterGesture = _interopRequireDefault(require(\"../ui/scroll_view/ui.events.emitter.gesture.scroll\"));\r\nvar _size = require(\"../core/utils/size\");\r\nvar _utils = require(\"./text_box/utils.scroll\");\r\nvar _text_box = _interopRequireDefault(require(\"./text_box\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TEXTAREA_CLASS = \"dx-textarea\";\r\nvar TEXTEDITOR_INPUT_CLASS = \"dx-texteditor-input\";\r\nvar TEXTEDITOR_INPUT_CLASS_AUTO_RESIZE = \"dx-texteditor-input-auto-resize\";\r\nvar TextArea = _text_box.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n spellcheck: true,\r\n minHeight: void 0,\r\n maxHeight: void 0,\r\n autoResizeEnabled: false\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(TEXTAREA_CLASS);\r\n this.callBase();\r\n this.setAria(\"multiline\", \"true\")\r\n },\r\n _renderContentImpl: function() {\r\n this._updateInputHeight();\r\n this.callBase()\r\n },\r\n _renderInput: function() {\r\n this.callBase();\r\n this._renderScrollHandler()\r\n },\r\n _createInput: function() {\r\n var $input = (0, _renderer.default)(\"