{"version":3,"sources":["node_modules/positioning/dist/positioning.js","node_modules/calendar-utils/calendar-utils.js","node_modules/@mattlewis92/dom-autoscroller/dist/bundle.es.js","node_modules/angular-draggable-droppable/fesm2020/angular-draggable-droppable.mjs","node_modules/angular-resizable-element/fesm2020/angular-resizable-element.mjs","node_modules/angular-calendar/fesm2020/angular-calendar.mjs"],"sourcesContent":["// previous version:\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\nvar Positioning = /** @class */function () {\n function Positioning() {}\n Positioning.prototype.getAllStyles = function (element) {\n return window.getComputedStyle(element);\n };\n Positioning.prototype.getStyle = function (element, prop) {\n return this.getAllStyles(element)[prop];\n };\n Positioning.prototype.isStaticPositioned = function (element) {\n return (this.getStyle(element, 'position') || 'static') === 'static';\n };\n Positioning.prototype.offsetParent = function (element) {\n var offsetParentEl = element.offsetParent || document.documentElement;\n while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\n offsetParentEl = offsetParentEl.offsetParent;\n }\n return offsetParentEl || document.documentElement;\n };\n Positioning.prototype.position = function (element, round) {\n if (round === void 0) {\n round = true;\n }\n var elPosition;\n var parentOffset = {\n width: 0,\n height: 0,\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n };\n if (this.getStyle(element, 'position') === 'fixed') {\n elPosition = element.getBoundingClientRect();\n elPosition = {\n top: elPosition.top,\n bottom: elPosition.bottom,\n left: elPosition.left,\n right: elPosition.right,\n height: elPosition.height,\n width: elPosition.width\n };\n } else {\n var offsetParentEl = this.offsetParent(element);\n elPosition = this.offset(element, false);\n if (offsetParentEl !== document.documentElement) {\n parentOffset = this.offset(offsetParentEl, false);\n }\n parentOffset.top += offsetParentEl.clientTop;\n parentOffset.left += offsetParentEl.clientLeft;\n }\n elPosition.top -= parentOffset.top;\n elPosition.bottom -= parentOffset.top;\n elPosition.left -= parentOffset.left;\n elPosition.right -= parentOffset.left;\n if (round) {\n elPosition.top = Math.round(elPosition.top);\n elPosition.bottom = Math.round(elPosition.bottom);\n elPosition.left = Math.round(elPosition.left);\n elPosition.right = Math.round(elPosition.right);\n }\n return elPosition;\n };\n Positioning.prototype.offset = function (element, round) {\n if (round === void 0) {\n round = true;\n }\n var elBcr = element.getBoundingClientRect();\n var viewportOffset = {\n top: window.pageYOffset - document.documentElement.clientTop,\n left: window.pageXOffset - document.documentElement.clientLeft\n };\n var elOffset = {\n height: elBcr.height || element.offsetHeight,\n width: elBcr.width || element.offsetWidth,\n top: elBcr.top + viewportOffset.top,\n bottom: elBcr.bottom + viewportOffset.top,\n left: elBcr.left + viewportOffset.left,\n right: elBcr.right + viewportOffset.left\n };\n if (round) {\n elOffset.height = Math.round(elOffset.height);\n elOffset.width = Math.round(elOffset.width);\n elOffset.top = Math.round(elOffset.top);\n elOffset.bottom = Math.round(elOffset.bottom);\n elOffset.left = Math.round(elOffset.left);\n elOffset.right = Math.round(elOffset.right);\n }\n return elOffset;\n };\n /*\n Return false if the element to position is outside the viewport\n */\n Positioning.prototype.positionElements = function (hostElement, targetElement, placement, appendToBody) {\n var _a = placement.split('-'),\n _b = _a[0],\n placementPrimary = _b === void 0 ? 'top' : _b,\n _c = _a[1],\n placementSecondary = _c === void 0 ? 'center' : _c;\n var hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\n var targetElStyles = this.getAllStyles(targetElement);\n var marginTop = parseFloat(targetElStyles.marginTop);\n var marginBottom = parseFloat(targetElStyles.marginBottom);\n var marginLeft = parseFloat(targetElStyles.marginLeft);\n var marginRight = parseFloat(targetElStyles.marginRight);\n var topPosition = 0;\n var leftPosition = 0;\n switch (placementPrimary) {\n case 'top':\n topPosition = hostElPosition.top - (targetElement.offsetHeight + marginTop + marginBottom);\n break;\n case 'bottom':\n topPosition = hostElPosition.top + hostElPosition.height;\n break;\n case 'left':\n leftPosition = hostElPosition.left - (targetElement.offsetWidth + marginLeft + marginRight);\n break;\n case 'right':\n leftPosition = hostElPosition.left + hostElPosition.width;\n break;\n }\n switch (placementSecondary) {\n case 'top':\n topPosition = hostElPosition.top;\n break;\n case 'bottom':\n topPosition = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\n break;\n case 'left':\n leftPosition = hostElPosition.left;\n break;\n case 'right':\n leftPosition = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\n break;\n case 'center':\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\n leftPosition = hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2;\n } else {\n topPosition = hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2;\n }\n break;\n }\n /// The translate3d/gpu acceleration render a blurry text on chrome, the next line is commented until a browser fix\n // targetElement.style.transform = `translate3d(${Math.round(leftPosition)}px, ${Math.floor(topPosition)}px, 0px)`;\n targetElement.style.transform = \"translate(\" + Math.round(leftPosition) + \"px, \" + Math.round(topPosition) + \"px)\";\n // Check if the targetElement is inside the viewport\n var targetElBCR = targetElement.getBoundingClientRect();\n var html = document.documentElement;\n var windowHeight = window.innerHeight || html.clientHeight;\n var windowWidth = window.innerWidth || html.clientWidth;\n return targetElBCR.left >= 0 && targetElBCR.top >= 0 && targetElBCR.right <= windowWidth && targetElBCR.bottom <= windowHeight;\n };\n return Positioning;\n}();\nexport { Positioning };\nvar placementSeparator = /\\s+/;\nvar positionService = new Positioning();\n/*\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\n * Returns the applied placement.\n * In case of auto placement, placements are selected in order\n * 'top', 'bottom', 'left', 'right',\n * 'top-left', 'top-right',\n * 'bottom-left', 'bottom-right',\n * 'left-top', 'left-bottom',\n * 'right-top', 'right-bottom'.\n * */\nexport function positionElements(hostElement, targetElement, placement, appendToBody, baseClass) {\n var placementVals = Array.isArray(placement) ? placement : placement.split(placementSeparator);\n var allowedPlacements = ['top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top', 'left-bottom', 'right-top', 'right-bottom'];\n var classList = targetElement.classList;\n var addClassesToTarget = function (targetPlacement) {\n var _a = targetPlacement.split('-'),\n primary = _a[0],\n secondary = _a[1];\n var classes = [];\n if (baseClass) {\n classes.push(baseClass + \"-\" + primary);\n if (secondary) {\n classes.push(baseClass + \"-\" + primary + \"-\" + secondary);\n }\n classes.forEach(function (classname) {\n classList.add(classname);\n });\n }\n return classes;\n };\n // Remove old placement classes to avoid issues\n if (baseClass) {\n allowedPlacements.forEach(function (placementToRemove) {\n classList.remove(baseClass + \"-\" + placementToRemove);\n });\n }\n // replace auto placement with other placements\n var hasAuto = placementVals.findIndex(function (val) {\n return val === 'auto';\n });\n if (hasAuto >= 0) {\n allowedPlacements.forEach(function (obj) {\n if (placementVals.find(function (val) {\n return val.search('^' + obj) !== -1;\n }) == null) {\n placementVals.splice(hasAuto++, 1, obj);\n }\n });\n }\n // coordinates where to position\n // Required for transform:\n var style = targetElement.style;\n style.position = 'absolute';\n style.top = '0';\n style.left = '0';\n style['will-change'] = 'transform';\n var testPlacement;\n var isInViewport = false;\n for (var _i = 0, placementVals_1 = placementVals; _i < placementVals_1.length; _i++) {\n testPlacement = placementVals_1[_i];\n var addedClasses = addClassesToTarget(testPlacement);\n if (positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody)) {\n isInViewport = true;\n break;\n }\n // Remove the baseClasses for further calculation\n if (baseClass) {\n addedClasses.forEach(function (classname) {\n classList.remove(classname);\n });\n }\n }\n if (!isInViewport) {\n // If nothing match, the first placement is the default one\n testPlacement = placementVals[0];\n addClassesToTarget(testPlacement);\n positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody);\n }\n return testPlacement;\n}\n","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nexport var DAYS_OF_WEEK = /*#__PURE__*/function (DAYS_OF_WEEK) {\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"SUNDAY\"] = 0] = \"SUNDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"MONDAY\"] = 1] = \"MONDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"TUESDAY\"] = 2] = \"TUESDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"WEDNESDAY\"] = 3] = \"WEDNESDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"THURSDAY\"] = 4] = \"THURSDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"FRIDAY\"] = 5] = \"FRIDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"SATURDAY\"] = 6] = \"SATURDAY\";\n return DAYS_OF_WEEK;\n}(DAYS_OF_WEEK || {});\nvar DEFAULT_WEEKEND_DAYS = [DAYS_OF_WEEK.SUNDAY, DAYS_OF_WEEK.SATURDAY];\nvar DAYS_IN_WEEK = 7;\nvar HOURS_IN_DAY = 24;\nvar MINUTES_IN_HOUR = 60;\nexport var SECONDS_IN_DAY = 60 * 60 * 24;\nfunction getExcludedSeconds(dateAdapter, _a) {\n var startDate = _a.startDate,\n seconds = _a.seconds,\n excluded = _a.excluded,\n precision = _a.precision;\n if (excluded.length < 1) {\n return 0;\n }\n var addSeconds = dateAdapter.addSeconds,\n getDay = dateAdapter.getDay,\n addDays = dateAdapter.addDays;\n var endDate = addSeconds(startDate, seconds - 1);\n var dayStart = getDay(startDate);\n var dayEnd = getDay(endDate);\n var result = 0; // Calculated in seconds\n var current = startDate;\n var _loop_1 = function () {\n var day = getDay(current);\n if (excluded.some(function (excludedDay) {\n return excludedDay === day;\n })) {\n result += calculateExcludedSeconds(dateAdapter, {\n dayStart: dayStart,\n dayEnd: dayEnd,\n day: day,\n precision: precision,\n startDate: startDate,\n endDate: endDate\n });\n }\n current = addDays(current, 1);\n };\n while (current < endDate) {\n _loop_1();\n }\n return result;\n}\nfunction calculateExcludedSeconds(dateAdapter, _a) {\n var precision = _a.precision,\n day = _a.day,\n dayStart = _a.dayStart,\n dayEnd = _a.dayEnd,\n startDate = _a.startDate,\n endDate = _a.endDate;\n var differenceInSeconds = dateAdapter.differenceInSeconds,\n endOfDay = dateAdapter.endOfDay,\n startOfDay = dateAdapter.startOfDay;\n if (precision === 'minutes') {\n if (day === dayStart) {\n return differenceInSeconds(endOfDay(startDate), startDate) + 1;\n } else if (day === dayEnd) {\n return differenceInSeconds(endDate, startOfDay(endDate)) + 1;\n }\n }\n return SECONDS_IN_DAY;\n}\nfunction getWeekViewEventSpan(dateAdapter, _a) {\n var event = _a.event,\n offset = _a.offset,\n startOfWeekDate = _a.startOfWeekDate,\n excluded = _a.excluded,\n precision = _a.precision,\n totalDaysInView = _a.totalDaysInView;\n var max = dateAdapter.max,\n differenceInSeconds = dateAdapter.differenceInSeconds,\n addDays = dateAdapter.addDays,\n endOfDay = dateAdapter.endOfDay,\n differenceInDays = dateAdapter.differenceInDays;\n var span = SECONDS_IN_DAY;\n var begin = max([event.start, startOfWeekDate]);\n if (event.end) {\n switch (precision) {\n case 'minutes':\n span = differenceInSeconds(event.end, begin);\n break;\n default:\n span = differenceInDays(addDays(endOfDay(event.end), 1), begin) * SECONDS_IN_DAY;\n break;\n }\n }\n var offsetSeconds = offset * SECONDS_IN_DAY;\n var totalLength = offsetSeconds + span;\n // the best way to detect if an event is outside the week-view\n // is to check if the total span beginning (from startOfWeekDay or event start) exceeds the total days in the view\n var secondsInView = totalDaysInView * SECONDS_IN_DAY;\n if (totalLength > secondsInView) {\n span = secondsInView - offsetSeconds;\n }\n span -= getExcludedSeconds(dateAdapter, {\n startDate: begin,\n seconds: span,\n excluded: excluded,\n precision: precision\n });\n return span / SECONDS_IN_DAY;\n}\nfunction getWeekViewEventOffset(dateAdapter, _a) {\n var event = _a.event,\n startOfWeekDate = _a.startOfWeek,\n excluded = _a.excluded,\n precision = _a.precision;\n var differenceInDays = dateAdapter.differenceInDays,\n startOfDay = dateAdapter.startOfDay,\n differenceInSeconds = dateAdapter.differenceInSeconds;\n if (event.start < startOfWeekDate) {\n return 0;\n }\n var offset = 0;\n switch (precision) {\n case 'days':\n offset = differenceInDays(startOfDay(event.start), startOfWeekDate) * SECONDS_IN_DAY;\n break;\n case 'minutes':\n offset = differenceInSeconds(event.start, startOfWeekDate);\n break;\n }\n offset -= getExcludedSeconds(dateAdapter, {\n startDate: startOfWeekDate,\n seconds: offset,\n excluded: excluded,\n precision: precision\n });\n return Math.abs(offset / SECONDS_IN_DAY);\n}\nfunction isEventIsPeriod(dateAdapter, _a) {\n var event = _a.event,\n periodStart = _a.periodStart,\n periodEnd = _a.periodEnd;\n var isSameSecond = dateAdapter.isSameSecond;\n var eventStart = event.start;\n var eventEnd = event.end || event.start;\n if (eventStart > periodStart && eventStart < periodEnd) {\n return true;\n }\n if (eventEnd > periodStart && eventEnd < periodEnd) {\n return true;\n }\n if (eventStart < periodStart && eventEnd > periodEnd) {\n return true;\n }\n if (isSameSecond(eventStart, periodStart) || isSameSecond(eventStart, periodEnd)) {\n return true;\n }\n if (isSameSecond(eventEnd, periodStart) || isSameSecond(eventEnd, periodEnd)) {\n return true;\n }\n return false;\n}\nexport function getEventsInPeriod(dateAdapter, _a) {\n var events = _a.events,\n periodStart = _a.periodStart,\n periodEnd = _a.periodEnd;\n return events.filter(function (event) {\n return isEventIsPeriod(dateAdapter, {\n event: event,\n periodStart: periodStart,\n periodEnd: periodEnd\n });\n });\n}\nfunction getWeekDay(dateAdapter, _a) {\n var date = _a.date,\n _b = _a.weekendDays,\n weekendDays = _b === void 0 ? DEFAULT_WEEKEND_DAYS : _b;\n var startOfDay = dateAdapter.startOfDay,\n isSameDay = dateAdapter.isSameDay,\n getDay = dateAdapter.getDay;\n var today = startOfDay(new Date());\n var day = getDay(date);\n return {\n date: date,\n day: day,\n isPast: date < today,\n isToday: isSameDay(date, today),\n isFuture: date > today,\n isWeekend: weekendDays.indexOf(day) > -1\n };\n}\nexport function getWeekViewHeader(dateAdapter, _a) {\n var viewDate = _a.viewDate,\n weekStartsOn = _a.weekStartsOn,\n _b = _a.excluded,\n excluded = _b === void 0 ? [] : _b,\n weekendDays = _a.weekendDays,\n _c = _a.viewStart,\n viewStart = _c === void 0 ? dateAdapter.startOfWeek(viewDate, {\n weekStartsOn: weekStartsOn\n }) : _c,\n _d = _a.viewEnd,\n viewEnd = _d === void 0 ? dateAdapter.addDays(viewStart, DAYS_IN_WEEK) : _d;\n var addDays = dateAdapter.addDays,\n getDay = dateAdapter.getDay;\n var days = [];\n var date = viewStart;\n while (date < viewEnd) {\n if (!excluded.some(function (e) {\n return getDay(date) === e;\n })) {\n days.push(getWeekDay(dateAdapter, {\n date: date,\n weekendDays: weekendDays\n }));\n }\n date = addDays(date, 1);\n }\n return days;\n}\nexport function getDifferenceInDaysWithExclusions(dateAdapter, _a) {\n var date1 = _a.date1,\n date2 = _a.date2,\n excluded = _a.excluded;\n var date = date1;\n var diff = 0;\n while (date < date2) {\n if (excluded.indexOf(dateAdapter.getDay(date)) === -1) {\n diff++;\n }\n date = dateAdapter.addDays(date, 1);\n }\n return diff;\n}\nexport function getAllDayWeekEvents(dateAdapter, _a) {\n var _b = _a.events,\n events = _b === void 0 ? [] : _b,\n _c = _a.excluded,\n excluded = _c === void 0 ? [] : _c,\n _d = _a.precision,\n precision = _d === void 0 ? 'days' : _d,\n _e = _a.absolutePositionedEvents,\n absolutePositionedEvents = _e === void 0 ? false : _e,\n viewStart = _a.viewStart,\n viewEnd = _a.viewEnd;\n viewStart = dateAdapter.startOfDay(viewStart);\n viewEnd = dateAdapter.endOfDay(viewEnd);\n var differenceInSeconds = dateAdapter.differenceInSeconds,\n differenceInDays = dateAdapter.differenceInDays;\n var maxRange = getDifferenceInDaysWithExclusions(dateAdapter, {\n date1: viewStart,\n date2: viewEnd,\n excluded: excluded\n });\n var totalDaysInView = differenceInDays(viewEnd, viewStart) + 1;\n var eventsMapped = events.filter(function (event) {\n return event.allDay;\n }).map(function (event) {\n var offset = getWeekViewEventOffset(dateAdapter, {\n event: event,\n startOfWeek: viewStart,\n excluded: excluded,\n precision: precision\n });\n var span = getWeekViewEventSpan(dateAdapter, {\n event: event,\n offset: offset,\n startOfWeekDate: viewStart,\n excluded: excluded,\n precision: precision,\n totalDaysInView: totalDaysInView\n });\n return {\n event: event,\n offset: offset,\n span: span\n };\n }).filter(function (e) {\n return e.offset < maxRange;\n }).filter(function (e) {\n return e.span > 0;\n }).map(function (entry) {\n return {\n event: entry.event,\n offset: entry.offset,\n span: entry.span,\n startsBeforeWeek: entry.event.start < viewStart,\n endsAfterWeek: (entry.event.end || entry.event.start) > viewEnd\n };\n }).sort(function (itemA, itemB) {\n var startSecondsDiff = differenceInSeconds(itemA.event.start, itemB.event.start);\n if (startSecondsDiff === 0) {\n return differenceInSeconds(itemB.event.end || itemB.event.start, itemA.event.end || itemA.event.start);\n }\n return startSecondsDiff;\n });\n var allDayEventRows = [];\n var allocatedEvents = [];\n eventsMapped.forEach(function (event, index) {\n if (allocatedEvents.indexOf(event) === -1) {\n allocatedEvents.push(event);\n var rowSpan_1 = event.span + event.offset;\n var otherRowEvents = eventsMapped.slice(index + 1).filter(function (nextEvent) {\n if (nextEvent.offset >= rowSpan_1 && rowSpan_1 + nextEvent.span <= totalDaysInView && allocatedEvents.indexOf(nextEvent) === -1) {\n var nextEventOffset = nextEvent.offset - rowSpan_1;\n if (!absolutePositionedEvents) {\n nextEvent.offset = nextEventOffset;\n }\n rowSpan_1 += nextEvent.span + nextEventOffset;\n allocatedEvents.push(nextEvent);\n return true;\n }\n });\n var weekEvents = __spreadArray([event], otherRowEvents, true);\n var id = weekEvents.filter(function (weekEvent) {\n return weekEvent.event.id;\n }).map(function (weekEvent) {\n return weekEvent.event.id;\n }).join('-');\n allDayEventRows.push(__assign({\n row: weekEvents\n }, id ? {\n id: id\n } : {}));\n }\n });\n return allDayEventRows;\n}\nfunction getWeekViewHourGrid(dateAdapter, _a) {\n var events = _a.events,\n viewDate = _a.viewDate,\n hourSegments = _a.hourSegments,\n hourDuration = _a.hourDuration,\n dayStart = _a.dayStart,\n dayEnd = _a.dayEnd,\n weekStartsOn = _a.weekStartsOn,\n excluded = _a.excluded,\n weekendDays = _a.weekendDays,\n segmentHeight = _a.segmentHeight,\n viewStart = _a.viewStart,\n viewEnd = _a.viewEnd,\n minimumEventHeight = _a.minimumEventHeight;\n var dayViewHourGrid = getDayViewHourGrid(dateAdapter, {\n viewDate: viewDate,\n hourSegments: hourSegments,\n hourDuration: hourDuration,\n dayStart: dayStart,\n dayEnd: dayEnd\n });\n var weekDays = getWeekViewHeader(dateAdapter, {\n viewDate: viewDate,\n weekStartsOn: weekStartsOn,\n excluded: excluded,\n weekendDays: weekendDays,\n viewStart: viewStart,\n viewEnd: viewEnd\n });\n var setHours = dateAdapter.setHours,\n setMinutes = dateAdapter.setMinutes,\n getHours = dateAdapter.getHours,\n getMinutes = dateAdapter.getMinutes;\n return weekDays.map(function (day) {\n var dayView = getDayView(dateAdapter, {\n events: events,\n viewDate: day.date,\n hourSegments: hourSegments,\n dayStart: dayStart,\n dayEnd: dayEnd,\n segmentHeight: segmentHeight,\n eventWidth: 1,\n hourDuration: hourDuration,\n minimumEventHeight: minimumEventHeight\n });\n var hours = dayViewHourGrid.map(function (hour) {\n var segments = hour.segments.map(function (segment) {\n var date = setMinutes(setHours(day.date, getHours(segment.date)), getMinutes(segment.date));\n return __assign(__assign({}, segment), {\n date: date\n });\n });\n return __assign(__assign({}, hour), {\n segments: segments\n });\n });\n function getColumnCount(allEvents, prevOverlappingEvents) {\n var columnCount = Math.max.apply(Math, prevOverlappingEvents.map(function (iEvent) {\n return iEvent.left + 1;\n }));\n var nextOverlappingEvents = allEvents.filter(function (iEvent) {\n return iEvent.left >= columnCount;\n }).filter(function (iEvent) {\n return getOverLappingWeekViewEvents(prevOverlappingEvents, iEvent.top, iEvent.top + iEvent.height).length > 0;\n });\n if (nextOverlappingEvents.length > 0) {\n return getColumnCount(allEvents, nextOverlappingEvents);\n } else {\n return columnCount;\n }\n }\n var mappedEvents = dayView.events.map(function (event) {\n var columnCount = getColumnCount(dayView.events, getOverLappingWeekViewEvents(dayView.events, event.top, event.top + event.height));\n var width = 100 / columnCount;\n return __assign(__assign({}, event), {\n left: event.left * width,\n width: width\n });\n });\n return {\n hours: hours,\n date: day.date,\n events: mappedEvents.map(function (event) {\n var overLappingEvents = getOverLappingWeekViewEvents(mappedEvents.filter(function (otherEvent) {\n return otherEvent.left > event.left;\n }), event.top, event.top + event.height);\n if (overLappingEvents.length > 0) {\n return __assign(__assign({}, event), {\n width: Math.min.apply(Math, overLappingEvents.map(function (otherEvent) {\n return otherEvent.left;\n })) - event.left\n });\n }\n return event;\n })\n };\n });\n}\nexport function getWeekView(dateAdapter, _a) {\n var _b = _a.events,\n events = _b === void 0 ? [] : _b,\n viewDate = _a.viewDate,\n weekStartsOn = _a.weekStartsOn,\n _c = _a.excluded,\n excluded = _c === void 0 ? [] : _c,\n _d = _a.precision,\n precision = _d === void 0 ? 'days' : _d,\n _e = _a.absolutePositionedEvents,\n absolutePositionedEvents = _e === void 0 ? false : _e,\n hourSegments = _a.hourSegments,\n hourDuration = _a.hourDuration,\n dayStart = _a.dayStart,\n dayEnd = _a.dayEnd,\n weekendDays = _a.weekendDays,\n segmentHeight = _a.segmentHeight,\n minimumEventHeight = _a.minimumEventHeight,\n _f = _a.viewStart,\n viewStart = _f === void 0 ? dateAdapter.startOfWeek(viewDate, {\n weekStartsOn: weekStartsOn\n }) : _f,\n _g = _a.viewEnd,\n viewEnd = _g === void 0 ? dateAdapter.endOfWeek(viewDate, {\n weekStartsOn: weekStartsOn\n }) : _g;\n if (!events) {\n events = [];\n }\n var startOfDay = dateAdapter.startOfDay,\n endOfDay = dateAdapter.endOfDay;\n viewStart = startOfDay(viewStart);\n viewEnd = endOfDay(viewEnd);\n var eventsInPeriod = getEventsInPeriod(dateAdapter, {\n events: events,\n periodStart: viewStart,\n periodEnd: viewEnd\n });\n var header = getWeekViewHeader(dateAdapter, {\n viewDate: viewDate,\n weekStartsOn: weekStartsOn,\n excluded: excluded,\n weekendDays: weekendDays,\n viewStart: viewStart,\n viewEnd: viewEnd\n });\n return {\n allDayEventRows: getAllDayWeekEvents(dateAdapter, {\n events: eventsInPeriod,\n excluded: excluded,\n precision: precision,\n absolutePositionedEvents: absolutePositionedEvents,\n viewStart: viewStart,\n viewEnd: viewEnd\n }),\n period: {\n events: eventsInPeriod,\n start: header[0].date,\n end: endOfDay(header[header.length - 1].date)\n },\n hourColumns: getWeekViewHourGrid(dateAdapter, {\n events: events,\n viewDate: viewDate,\n hourSegments: hourSegments,\n hourDuration: hourDuration,\n dayStart: dayStart,\n dayEnd: dayEnd,\n weekStartsOn: weekStartsOn,\n excluded: excluded,\n weekendDays: weekendDays,\n segmentHeight: segmentHeight,\n viewStart: viewStart,\n viewEnd: viewEnd,\n minimumEventHeight: minimumEventHeight\n })\n };\n}\nexport function getMonthView(dateAdapter, _a) {\n var _b = _a.events,\n events = _b === void 0 ? [] : _b,\n viewDate = _a.viewDate,\n weekStartsOn = _a.weekStartsOn,\n _c = _a.excluded,\n excluded = _c === void 0 ? [] : _c,\n _d = _a.viewStart,\n viewStart = _d === void 0 ? dateAdapter.startOfMonth(viewDate) : _d,\n _e = _a.viewEnd,\n viewEnd = _e === void 0 ? dateAdapter.endOfMonth(viewDate) : _e,\n weekendDays = _a.weekendDays;\n if (!events) {\n events = [];\n }\n var startOfWeek = dateAdapter.startOfWeek,\n endOfWeek = dateAdapter.endOfWeek,\n differenceInDays = dateAdapter.differenceInDays,\n startOfDay = dateAdapter.startOfDay,\n addHours = dateAdapter.addHours,\n endOfDay = dateAdapter.endOfDay,\n isSameMonth = dateAdapter.isSameMonth,\n getDay = dateAdapter.getDay;\n var start = startOfWeek(viewStart, {\n weekStartsOn: weekStartsOn\n });\n var end = endOfWeek(viewEnd, {\n weekStartsOn: weekStartsOn\n });\n var eventsInMonth = getEventsInPeriod(dateAdapter, {\n events: events,\n periodStart: start,\n periodEnd: end\n });\n var initialViewDays = [];\n var previousDate;\n var _loop_2 = function (i) {\n // hacky fix for https://github.com/mattlewis92/angular-calendar/issues/173\n var date;\n if (previousDate) {\n date = startOfDay(addHours(previousDate, HOURS_IN_DAY));\n if (previousDate.getTime() === date.getTime()) {\n // DST change, so need to add 25 hours\n /* istanbul ignore next */\n date = startOfDay(addHours(previousDate, HOURS_IN_DAY + 1));\n }\n previousDate = date;\n } else {\n date = previousDate = start;\n }\n if (!excluded.some(function (e) {\n return getDay(date) === e;\n })) {\n var day = getWeekDay(dateAdapter, {\n date: date,\n weekendDays: weekendDays\n });\n var eventsInPeriod = getEventsInPeriod(dateAdapter, {\n events: eventsInMonth,\n periodStart: startOfDay(date),\n periodEnd: endOfDay(date)\n });\n day.inMonth = isSameMonth(date, viewDate);\n day.events = eventsInPeriod;\n day.badgeTotal = eventsInPeriod.length;\n initialViewDays.push(day);\n }\n };\n for (var i = 0; i < differenceInDays(end, start) + 1; i++) {\n _loop_2(i);\n }\n var days = [];\n var totalDaysVisibleInWeek = DAYS_IN_WEEK - excluded.length;\n if (totalDaysVisibleInWeek < DAYS_IN_WEEK) {\n for (var i = 0; i < initialViewDays.length; i += totalDaysVisibleInWeek) {\n var row = initialViewDays.slice(i, i + totalDaysVisibleInWeek);\n var isRowInMonth = row.some(function (day) {\n return viewStart <= day.date && day.date < viewEnd;\n });\n if (isRowInMonth) {\n days = __spreadArray(__spreadArray([], days, true), row, true);\n }\n }\n } else {\n days = initialViewDays;\n }\n var rows = Math.floor(days.length / totalDaysVisibleInWeek);\n var rowOffsets = [];\n for (var i = 0; i < rows; i++) {\n rowOffsets.push(i * totalDaysVisibleInWeek);\n }\n return {\n rowOffsets: rowOffsets,\n totalDaysVisibleInWeek: totalDaysVisibleInWeek,\n days: days,\n period: {\n start: days[0].date,\n end: endOfDay(days[days.length - 1].date),\n events: eventsInMonth\n }\n };\n}\nfunction getOverLappingWeekViewEvents(events, top, bottom) {\n return events.filter(function (previousEvent) {\n var previousEventTop = previousEvent.top;\n var previousEventBottom = previousEvent.top + previousEvent.height;\n if (top < previousEventBottom && previousEventBottom < bottom) {\n return true;\n } else if (top < previousEventTop && previousEventTop < bottom) {\n return true;\n } else if (previousEventTop <= top && bottom <= previousEventBottom) {\n return true;\n }\n return false;\n });\n}\nfunction getDayView(dateAdapter, _a) {\n var events = _a.events,\n viewDate = _a.viewDate,\n hourSegments = _a.hourSegments,\n dayStart = _a.dayStart,\n dayEnd = _a.dayEnd,\n eventWidth = _a.eventWidth,\n segmentHeight = _a.segmentHeight,\n hourDuration = _a.hourDuration,\n minimumEventHeight = _a.minimumEventHeight;\n var setMinutes = dateAdapter.setMinutes,\n setHours = dateAdapter.setHours,\n startOfDay = dateAdapter.startOfDay,\n startOfMinute = dateAdapter.startOfMinute,\n endOfDay = dateAdapter.endOfDay,\n differenceInMinutes = dateAdapter.differenceInMinutes;\n var startOfView = setMinutes(setHours(startOfDay(viewDate), sanitiseHours(dayStart.hour)), sanitiseMinutes(dayStart.minute));\n var endOfView = setMinutes(setHours(startOfMinute(endOfDay(viewDate)), sanitiseHours(dayEnd.hour)), sanitiseMinutes(dayEnd.minute));\n endOfView.setSeconds(59, 999);\n var previousDayEvents = [];\n var eventsInPeriod = getEventsInPeriod(dateAdapter, {\n events: events.filter(function (event) {\n return !event.allDay;\n }),\n periodStart: startOfView,\n periodEnd: endOfView\n });\n var dayViewEvents = eventsInPeriod.sort(function (eventA, eventB) {\n return eventA.start.valueOf() - eventB.start.valueOf();\n }).map(function (event) {\n var eventStart = event.start;\n var eventEnd = event.end || eventStart;\n var startsBeforeDay = eventStart < startOfView;\n var endsAfterDay = eventEnd > endOfView;\n var hourHeightModifier = hourSegments * segmentHeight / (hourDuration || MINUTES_IN_HOUR);\n var top = 0;\n if (eventStart > startOfView) {\n // adjust the difference in minutes if the user's offset is different between the start of the day and the event (e.g. when going to or from DST)\n var eventOffset = dateAdapter.getTimezoneOffset(eventStart);\n var startOffset = dateAdapter.getTimezoneOffset(startOfView);\n var diff = startOffset - eventOffset;\n top += differenceInMinutes(eventStart, startOfView) + diff;\n }\n top *= hourHeightModifier;\n top = Math.floor(top);\n var startDate = startsBeforeDay ? startOfView : eventStart;\n var endDate = endsAfterDay ? endOfView : eventEnd;\n var timezoneOffset = dateAdapter.getTimezoneOffset(startDate) - dateAdapter.getTimezoneOffset(endDate);\n var height = differenceInMinutes(endDate, startDate) + timezoneOffset;\n if (!event.end) {\n height = segmentHeight;\n } else {\n height *= hourHeightModifier;\n }\n if (minimumEventHeight && height < minimumEventHeight) {\n height = minimumEventHeight;\n }\n height = Math.floor(height);\n var bottom = top + height;\n var overlappingPreviousEvents = getOverLappingWeekViewEvents(previousDayEvents, top, bottom);\n var left = 0;\n while (overlappingPreviousEvents.some(function (previousEvent) {\n return previousEvent.left === left;\n })) {\n left += eventWidth;\n }\n var dayEvent = {\n event: event,\n height: height,\n width: eventWidth,\n top: top,\n left: left,\n startsBeforeDay: startsBeforeDay,\n endsAfterDay: endsAfterDay\n };\n previousDayEvents.push(dayEvent);\n return dayEvent;\n });\n var width = Math.max.apply(Math, dayViewEvents.map(function (event) {\n return event.left + event.width;\n }));\n var allDayEvents = getEventsInPeriod(dateAdapter, {\n events: events.filter(function (event) {\n return event.allDay;\n }),\n periodStart: startOfDay(startOfView),\n periodEnd: endOfDay(endOfView)\n });\n return {\n events: dayViewEvents,\n width: width,\n allDayEvents: allDayEvents,\n period: {\n events: eventsInPeriod,\n start: startOfView,\n end: endOfView\n }\n };\n}\nfunction sanitiseHours(hours) {\n return Math.max(Math.min(23, hours), 0);\n}\nfunction sanitiseMinutes(minutes) {\n return Math.max(Math.min(59, minutes), 0);\n}\nfunction getDayViewHourGrid(dateAdapter, _a) {\n var viewDate = _a.viewDate,\n hourSegments = _a.hourSegments,\n hourDuration = _a.hourDuration,\n dayStart = _a.dayStart,\n dayEnd = _a.dayEnd;\n var setMinutes = dateAdapter.setMinutes,\n setHours = dateAdapter.setHours,\n startOfDay = dateAdapter.startOfDay,\n startOfMinute = dateAdapter.startOfMinute,\n endOfDay = dateAdapter.endOfDay,\n addMinutes = dateAdapter.addMinutes,\n addDays = dateAdapter.addDays;\n var hours = [];\n var startOfView = setMinutes(setHours(startOfDay(viewDate), sanitiseHours(dayStart.hour)), sanitiseMinutes(dayStart.minute));\n var endOfView = setMinutes(setHours(startOfMinute(endOfDay(viewDate)), sanitiseHours(dayEnd.hour)), sanitiseMinutes(dayEnd.minute));\n var segmentDuration = (hourDuration || MINUTES_IN_HOUR) / hourSegments;\n var startOfViewDay = startOfDay(viewDate);\n var endOfViewDay = endOfDay(viewDate);\n var dateAdjustment = function (d) {\n return d;\n };\n // this means that we change from or to DST on this day and that's going to cause problems so we bump the date\n if (dateAdapter.getTimezoneOffset(startOfViewDay) !== dateAdapter.getTimezoneOffset(endOfViewDay)) {\n startOfViewDay = addDays(startOfViewDay, 1);\n startOfView = addDays(startOfView, 1);\n endOfView = addDays(endOfView, 1);\n dateAdjustment = function (d) {\n return addDays(d, -1);\n };\n }\n var dayDuration = hourDuration ? HOURS_IN_DAY * 60 / hourDuration : MINUTES_IN_HOUR;\n for (var i = 0; i < dayDuration; i++) {\n var segments = [];\n for (var j = 0; j < hourSegments; j++) {\n var date = addMinutes(addMinutes(startOfView, i * (hourDuration || MINUTES_IN_HOUR)), j * segmentDuration);\n if (date >= startOfView && date < endOfView) {\n segments.push({\n date: dateAdjustment(date),\n displayDate: date,\n isStart: j === 0\n });\n }\n }\n if (segments.length > 0) {\n hours.push({\n segments: segments\n });\n }\n }\n return hours;\n}\nexport var EventValidationErrorMessage = /*#__PURE__*/function (EventValidationErrorMessage) {\n EventValidationErrorMessage[\"NotArray\"] = \"Events must be an array\";\n EventValidationErrorMessage[\"StartPropertyMissing\"] = \"Event is missing the `start` property\";\n EventValidationErrorMessage[\"StartPropertyNotDate\"] = \"Event `start` property should be a javascript date object. Do `new Date(event.start)` to fix it.\";\n EventValidationErrorMessage[\"EndPropertyNotDate\"] = \"Event `end` property should be a javascript date object. Do `new Date(event.end)` to fix it.\";\n EventValidationErrorMessage[\"EndsBeforeStart\"] = \"Event `start` property occurs after the `end`\";\n return EventValidationErrorMessage;\n}(EventValidationErrorMessage || {});\nexport function validateEvents(events, log) {\n var isValid = true;\n function isError(msg, event) {\n log(msg, event);\n isValid = false;\n }\n if (!Array.isArray(events)) {\n log(EventValidationErrorMessage.NotArray, events);\n return false;\n }\n events.forEach(function (event) {\n if (!event.start) {\n isError(EventValidationErrorMessage.StartPropertyMissing, event);\n } else if (!(event.start instanceof Date)) {\n isError(EventValidationErrorMessage.StartPropertyNotDate, event);\n }\n if (event.end) {\n if (!(event.end instanceof Date)) {\n isError(EventValidationErrorMessage.EndPropertyNotDate, event);\n }\n if (event.start > event.end) {\n isError(EventValidationErrorMessage.EndsBeforeStart, event);\n }\n }\n });\n return isValid;\n}\n","function getDef(f, d) {\n if (typeof f === 'undefined') {\n return typeof d === 'undefined' ? f : d;\n }\n return f;\n}\nfunction boolean(func, def) {\n func = getDef(func, def);\n if (typeof func === 'function') {\n return function f() {\n var arguments$1 = arguments;\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments$1[_key];\n }\n return !!func.apply(this, args);\n };\n }\n return !!func ? function () {\n return true;\n } : function () {\n return false;\n };\n}\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\n\n/**\n * Returns `true` if provided input is Element.\n * @name isElement\n * @param {*} [input]\n * @returns {boolean}\n */\nvar isElement$1 = function (input) {\n return input != null && (typeof input === 'undefined' ? 'undefined' : _typeof(input)) === 'object' && input.nodeType === 1 && _typeof(input.style) === 'object' && _typeof(input.ownerDocument) === 'object';\n};\nfunction indexOfElement(elements, element) {\n element = resolveElement(element, true);\n if (!isElement$1(element)) {\n return -1;\n }\n for (var i = 0; i < elements.length; i++) {\n if (elements[i] === element) {\n return i;\n }\n }\n return -1;\n}\nfunction hasElement(elements, element) {\n return -1 !== indexOfElement(elements, element);\n}\nfunction pushElements(elements, toAdd) {\n for (var i = 0; i < toAdd.length; i++) {\n if (!hasElement(elements, toAdd[i])) {\n elements.push(toAdd[i]);\n }\n }\n return toAdd;\n}\nfunction addElements(elements) {\n var arguments$1 = arguments;\n var toAdd = [],\n len = arguments.length - 1;\n while (len-- > 0) {\n toAdd[len] = arguments$1[len + 1];\n }\n toAdd = toAdd.map(resolveElement);\n return pushElements(elements, toAdd);\n}\nfunction removeElements(elements) {\n var arguments$1 = arguments;\n var toRemove = [],\n len = arguments.length - 1;\n while (len-- > 0) {\n toRemove[len] = arguments$1[len + 1];\n }\n return toRemove.map(resolveElement).reduce(function (last, e) {\n var index = indexOfElement(elements, e);\n if (index !== -1) {\n return last.concat(elements.splice(index, 1));\n }\n return last;\n }, []);\n}\nfunction resolveElement(element, noThrow) {\n if (typeof element === 'string') {\n try {\n return document.querySelector(element);\n } catch (e) {\n throw e;\n }\n }\n if (!isElement$1(element) && !noThrow) {\n throw new TypeError(element + \" is not a DOM element.\");\n }\n return element;\n}\nfunction createPointCB(object, options) {\n // A persistent object (as opposed to returned object) is used to save memory\n // This is good to prevent layout thrashing, or for games, and such\n\n // NOTE\n // This uses IE fixes which should be OK to remove some day. :)\n // Some speed will be gained by removal of these.\n\n // pointCB should be saved in a variable on return\n // This allows the usage of element.removeEventListener\n\n options = options || {};\n var allowUpdate = boolean(options.allowUpdate, true);\n\n /*if(typeof options.allowUpdate === 'function'){\n allowUpdate = options.allowUpdate;\n }else{\n allowUpdate = function(){return true;};\n }*/\n\n return function pointCB(event) {\n event = event || window.event; // IE-ism\n object.target = event.target || event.srcElement || event.originalTarget;\n object.element = this;\n object.type = event.type;\n if (!allowUpdate(event)) {\n return;\n }\n\n // Support touch\n // http://www.creativebloq.com/javascript/make-your-site-work-touch-devices-51411644\n\n if (event.targetTouches) {\n object.x = event.targetTouches[0].clientX;\n object.y = event.targetTouches[0].clientY;\n object.pageX = event.targetTouches[0].pageX;\n object.pageY = event.targetTouches[0].pageY;\n object.screenX = event.targetTouches[0].screenX;\n object.screenY = event.targetTouches[0].screenY;\n } else {\n // If pageX/Y aren't available and clientX/Y are,\n // calculate pageX/Y - logic taken from jQuery.\n // (This is to support old IE)\n // NOTE Hopefully this can be removed soon.\n\n if (event.pageX === null && event.clientX !== null) {\n var eventDoc = event.target && event.target.ownerDocument || document;\n var doc = eventDoc.documentElement;\n var body = eventDoc.body;\n object.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n object.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n } else {\n object.pageX = event.pageX;\n object.pageY = event.pageY;\n }\n\n // pageX, and pageY change with page scroll\n // so we're not going to use those for x, and y.\n // NOTE Most browsers also alias clientX/Y with x/y\n // so that's something to consider down the road.\n\n object.x = event.clientX;\n object.y = event.clientY;\n object.screenX = event.screenX;\n object.screenY = event.screenY;\n }\n object.clientX = object.x;\n object.clientY = object.y;\n };\n\n //NOTE Remember accessibility, Aria roles, and labels.\n}\nfunction createWindowRect() {\n var props = {\n top: {\n value: 0,\n enumerable: true\n },\n left: {\n value: 0,\n enumerable: true\n },\n right: {\n value: window.innerWidth,\n enumerable: true\n },\n bottom: {\n value: window.innerHeight,\n enumerable: true\n },\n width: {\n value: window.innerWidth,\n enumerable: true\n },\n height: {\n value: window.innerHeight,\n enumerable: true\n },\n x: {\n value: 0,\n enumerable: true\n },\n y: {\n value: 0,\n enumerable: true\n }\n };\n if (Object.create) {\n return Object.create({}, props);\n } else {\n var rect = {};\n Object.defineProperties(rect, props);\n return rect;\n }\n}\nfunction getClientRect(el) {\n if (el === window) {\n return createWindowRect();\n } else {\n try {\n var rect = el.getBoundingClientRect();\n if (rect.x === undefined) {\n rect.x = rect.left;\n rect.y = rect.top;\n }\n return rect;\n } catch (e) {\n throw new TypeError(\"Can't call getBoundingClientRect on \" + el);\n }\n }\n}\nfunction pointInside(point, el) {\n var rect = getClientRect(el);\n return point.y > rect.top && point.y < rect.bottom && point.x > rect.left && point.x < rect.right;\n}\nvar objectCreate = void 0;\nif (typeof Object.create != 'function') {\n objectCreate = function (undefined$1) {\n var Temp = function Temp() {};\n return function (prototype, propertiesObject) {\n if (prototype !== Object(prototype) && prototype !== null) {\n throw TypeError('Argument must be an object, or null');\n }\n Temp.prototype = prototype || {};\n var result = new Temp();\n Temp.prototype = null;\n if (propertiesObject !== undefined$1) {\n Object.defineProperties(result, propertiesObject);\n }\n\n // to imitate the case of Object.create(null)\n if (prototype === null) {\n result.__proto__ = null;\n }\n return result;\n };\n }();\n} else {\n objectCreate = Object.create;\n}\nvar objectCreate$1 = objectCreate;\nvar mouseEventProps = ['altKey', 'button', 'buttons', 'clientX', 'clientY', 'ctrlKey', 'metaKey', 'movementX', 'movementY', 'offsetX', 'offsetY', 'pageX', 'pageY', 'region', 'relatedTarget', 'screenX', 'screenY', 'shiftKey', 'which', 'x', 'y'];\nfunction createDispatcher(element) {\n var defaultSettings = {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n ctrlKey: false,\n shiftKey: false,\n altKey: false,\n metaKey: false,\n button: 0,\n buttons: 1,\n relatedTarget: null,\n region: null\n };\n if (element !== undefined) {\n element.addEventListener('mousemove', onMove);\n }\n function onMove(e) {\n for (var i = 0; i < mouseEventProps.length; i++) {\n defaultSettings[mouseEventProps[i]] = e[mouseEventProps[i]];\n }\n }\n var dispatch = function () {\n if (MouseEvent) {\n return function m1(element, initMove, data) {\n var evt = new MouseEvent('mousemove', createMoveInit(defaultSettings, initMove));\n\n //evt.dispatched = 'mousemove';\n setSpecial(evt, data);\n return element.dispatchEvent(evt);\n };\n } else if (typeof document.createEvent === 'function') {\n return function m2(element, initMove, data) {\n var settings = createMoveInit(defaultSettings, initMove);\n var evt = document.createEvent('MouseEvents');\n evt.initMouseEvent(\"mousemove\", true,\n //can bubble\n true,\n //cancelable\n window,\n //view\n 0,\n //detail\n settings.screenX,\n //0, //screenX\n settings.screenY,\n //0, //screenY\n settings.clientX,\n //80, //clientX\n settings.clientY,\n //20, //clientY\n settings.ctrlKey,\n //false, //ctrlKey\n settings.altKey,\n //false, //altKey\n settings.shiftKey,\n //false, //shiftKey\n settings.metaKey,\n //false, //metaKey\n settings.button,\n //0, //button\n settings.relatedTarget //null //relatedTarget\n );\n\n //evt.dispatched = 'mousemove';\n setSpecial(evt, data);\n return element.dispatchEvent(evt);\n };\n } else if (typeof document.createEventObject === 'function') {\n return function m3(element, initMove, data) {\n var evt = document.createEventObject();\n var settings = createMoveInit(defaultSettings, initMove);\n for (var name in settings) {\n evt[name] = settings[name];\n }\n\n //evt.dispatched = 'mousemove';\n setSpecial(evt, data);\n return element.dispatchEvent(evt);\n };\n }\n }();\n function destroy() {\n if (element) {\n element.removeEventListener('mousemove', onMove, false);\n }\n defaultSettings = null;\n }\n return {\n destroy: destroy,\n dispatch: dispatch\n };\n}\nfunction createMoveInit(defaultSettings, initMove) {\n initMove = initMove || {};\n var settings = objectCreate$1(defaultSettings);\n for (var i = 0; i < mouseEventProps.length; i++) {\n if (initMove[mouseEventProps[i]] !== undefined) {\n settings[mouseEventProps[i]] = initMove[mouseEventProps[i]];\n }\n }\n return settings;\n}\nfunction setSpecial(e, data) {\n console.log('data ', data);\n e.data = data || {};\n e.dispatched = 'mousemove';\n}\nvar prefix = ['webkit', 'moz', 'ms', 'o'];\nvar requestFrame = function () {\n if (typeof window === \"undefined\") {\n return function () {};\n }\n for (var i = 0, limit = prefix.length; i < limit && !window.requestAnimationFrame; ++i) {\n window.requestAnimationFrame = window[prefix[i] + 'RequestAnimationFrame'];\n }\n if (!window.requestAnimationFrame) {\n var lastTime = 0;\n window.requestAnimationFrame = function (callback) {\n var now = new Date().getTime();\n var ttc = Math.max(0, 16 - now - lastTime);\n var timer = window.setTimeout(function () {\n return callback(now + ttc);\n }, ttc);\n lastTime = now + ttc;\n return timer;\n };\n }\n return window.requestAnimationFrame.bind(window);\n}();\nvar cancelFrame = function () {\n if (typeof window === \"undefined\") {\n return function () {};\n }\n for (var i = 0, limit = prefix.length; i < limit && !window.cancelAnimationFrame; ++i) {\n window.cancelAnimationFrame = window[prefix[i] + 'CancelAnimationFrame'] || window[prefix[i] + 'CancelRequestAnimationFrame'];\n }\n if (!window.cancelAnimationFrame) {\n window.cancelAnimationFrame = function (timer) {\n window.clearTimeout(timer);\n };\n }\n return window.cancelAnimationFrame.bind(window);\n}();\nfunction AutoScroller(elements, options) {\n if (options === void 0) options = {};\n var self = this;\n var maxSpeed = 4,\n scrolling = false;\n if (typeof options.margin !== 'object') {\n var margin = options.margin || -1;\n this.margin = {\n left: margin,\n right: margin,\n top: margin,\n bottom: margin\n };\n } else {\n this.margin = options.margin;\n }\n\n //this.scrolling = false;\n this.scrollWhenOutside = options.scrollWhenOutside || false;\n var point = {},\n pointCB = createPointCB(point),\n dispatcher = createDispatcher(),\n down = false;\n window.addEventListener('mousemove', pointCB, false);\n window.addEventListener('touchmove', pointCB, false);\n if (!isNaN(options.maxSpeed)) {\n maxSpeed = options.maxSpeed;\n }\n if (typeof maxSpeed !== 'object') {\n maxSpeed = {\n left: maxSpeed,\n right: maxSpeed,\n top: maxSpeed,\n bottom: maxSpeed\n };\n }\n this.autoScroll = boolean(options.autoScroll);\n this.syncMove = boolean(options.syncMove, false);\n this.destroy = function (forceCleanAnimation) {\n window.removeEventListener('mousemove', pointCB, false);\n window.removeEventListener('touchmove', pointCB, false);\n window.removeEventListener('mousedown', onDown, false);\n window.removeEventListener('touchstart', onDown, false);\n window.removeEventListener('mouseup', onUp, false);\n window.removeEventListener('touchend', onUp, false);\n window.removeEventListener('pointerup', onUp, false);\n window.removeEventListener('mouseleave', onMouseOut, false);\n window.removeEventListener('mousemove', onMove, false);\n window.removeEventListener('touchmove', onMove, false);\n window.removeEventListener('scroll', setScroll, true);\n elements = [];\n if (forceCleanAnimation) {\n cleanAnimation();\n }\n };\n this.add = function () {\n var element = [],\n len = arguments.length;\n while (len--) element[len] = arguments[len];\n addElements.apply(void 0, [elements].concat(element));\n return this;\n };\n this.remove = function () {\n var element = [],\n len = arguments.length;\n while (len--) element[len] = arguments[len];\n return removeElements.apply(void 0, [elements].concat(element));\n };\n var hasWindow = null,\n windowAnimationFrame;\n if (Object.prototype.toString.call(elements) !== '[object Array]') {\n elements = [elements];\n }\n (function (temp) {\n elements = [];\n temp.forEach(function (element) {\n if (element === window) {\n hasWindow = window;\n } else {\n self.add(element);\n }\n });\n })(elements);\n Object.defineProperties(this, {\n down: {\n get: function () {\n return down;\n }\n },\n maxSpeed: {\n get: function () {\n return maxSpeed;\n }\n },\n point: {\n get: function () {\n return point;\n }\n },\n scrolling: {\n get: function () {\n return scrolling;\n }\n }\n });\n var current = null,\n animationFrame;\n window.addEventListener('mousedown', onDown, false);\n window.addEventListener('touchstart', onDown, false);\n window.addEventListener('mouseup', onUp, false);\n window.addEventListener('touchend', onUp, false);\n\n /*\n IE does not trigger mouseup event when scrolling.\n It is a known issue that Microsoft won't fix.\n https://connect.microsoft.com/IE/feedback/details/783058/scrollbar-trigger-mousedown-but-not-mouseup\n IE supports pointer events instead\n */\n window.addEventListener('pointerup', onUp, false);\n window.addEventListener('mousemove', onMove, false);\n window.addEventListener('touchmove', onMove, false);\n window.addEventListener('mouseleave', onMouseOut, false);\n window.addEventListener('scroll', setScroll, true);\n function setScroll(e) {\n for (var i = 0; i < elements.length; i++) {\n if (elements[i] === e.target) {\n scrolling = true;\n break;\n }\n }\n if (scrolling) {\n requestFrame(function () {\n return scrolling = false;\n });\n }\n }\n function onDown() {\n down = true;\n }\n function onUp() {\n down = false;\n cleanAnimation();\n }\n function cleanAnimation() {\n cancelFrame(animationFrame);\n cancelFrame(windowAnimationFrame);\n }\n function onMouseOut() {\n down = false;\n }\n function getTarget(target) {\n if (!target) {\n return null;\n }\n if (current === target) {\n return target;\n }\n if (hasElement(elements, target)) {\n return target;\n }\n while (target = target.parentNode) {\n if (hasElement(elements, target)) {\n return target;\n }\n }\n return null;\n }\n function getElementUnderPoint() {\n var underPoint = null;\n for (var i = 0; i < elements.length; i++) {\n if (inside(point, elements[i])) {\n underPoint = elements[i];\n }\n }\n return underPoint;\n }\n function onMove(event) {\n if (!self.autoScroll()) {\n return;\n }\n if (event['dispatched']) {\n return;\n }\n var target = event.target,\n body = document.body;\n if (current && !inside(point, current)) {\n if (!self.scrollWhenOutside) {\n current = null;\n }\n }\n if (target && target.parentNode === body) {\n //The special condition to improve speed.\n target = getElementUnderPoint();\n } else {\n target = getTarget(target);\n if (!target) {\n target = getElementUnderPoint();\n }\n }\n if (target && target !== current) {\n current = target;\n }\n if (hasWindow) {\n cancelFrame(windowAnimationFrame);\n windowAnimationFrame = requestFrame(scrollWindow);\n }\n if (!current) {\n return;\n }\n cancelFrame(animationFrame);\n animationFrame = requestFrame(scrollTick);\n }\n function scrollWindow() {\n autoScroll(hasWindow);\n cancelFrame(windowAnimationFrame);\n windowAnimationFrame = requestFrame(scrollWindow);\n }\n function scrollTick() {\n if (!current) {\n return;\n }\n autoScroll(current);\n cancelFrame(animationFrame);\n animationFrame = requestFrame(scrollTick);\n }\n function autoScroll(el) {\n var rect = getClientRect(el),\n scrollx,\n scrolly;\n if (point.x < rect.left + self.margin.left) {\n scrollx = Math.floor(Math.max(-1, (point.x - rect.left) / self.margin.left - 1) * self.maxSpeed.left);\n } else if (point.x > rect.right - self.margin.right) {\n scrollx = Math.ceil(Math.min(1, (point.x - rect.right) / self.margin.right + 1) * self.maxSpeed.right);\n } else {\n scrollx = 0;\n }\n if (point.y < rect.top + self.margin.top) {\n scrolly = Math.floor(Math.max(-1, (point.y - rect.top) / self.margin.top - 1) * self.maxSpeed.top);\n } else if (point.y > rect.bottom - self.margin.bottom) {\n scrolly = Math.ceil(Math.min(1, (point.y - rect.bottom) / self.margin.bottom + 1) * self.maxSpeed.bottom);\n } else {\n scrolly = 0;\n }\n if (self.syncMove()) {\n /*\n Notes about mousemove event dispatch.\n screen(X/Y) should need to be updated.\n Some other properties might need to be set.\n Keep the syncMove option default false until all inconsistencies are taken care of.\n */\n dispatcher.dispatch(el, {\n pageX: point.pageX + scrollx,\n pageY: point.pageY + scrolly,\n clientX: point.x + scrollx,\n clientY: point.y + scrolly\n });\n }\n setTimeout(function () {\n if (scrolly) {\n scrollY(el, scrolly);\n }\n if (scrollx) {\n scrollX(el, scrollx);\n }\n });\n }\n function scrollY(el, amount) {\n if (el === window) {\n window.scrollTo(el.pageXOffset, el.pageYOffset + amount);\n } else {\n el.scrollTop += amount;\n }\n }\n function scrollX(el, amount) {\n if (el === window) {\n window.scrollTo(el.pageXOffset + amount, el.pageYOffset);\n } else {\n el.scrollLeft += amount;\n }\n }\n}\nfunction AutoScrollerFactory(element, options) {\n return new AutoScroller(element, options);\n}\nfunction inside(point, el, rect) {\n if (!rect) {\n return pointInside(point, el);\n } else {\n return point.y > rect.top && point.y < rect.bottom && point.x > rect.left && point.x < rect.right;\n }\n}\n\n/*\ngit remote add origin https://github.com/hollowdoor/dom_autoscroller.git\ngit push -u origin master\n*/\n\nexport default AutoScrollerFactory;","import * as i0 from '@angular/core';\nimport { Injectable, Directive, EventEmitter, Optional, Inject, Input, Output, NgModule } from '@angular/core';\nimport { Subject, Observable, ReplaySubject, merge, combineLatest, fromEvent } from 'rxjs';\nimport { filter, mergeMap, startWith, map, share, takeUntil, take, takeLast, count, pairwise, distinctUntilChanged } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\nimport autoScroll from '@mattlewis92/dom-autoscroller';\nfunction addClass(renderer, element, classToAdd) {\n if (classToAdd) {\n classToAdd.split(' ').forEach(className => renderer.addClass(element.nativeElement, className));\n }\n}\nfunction removeClass(renderer, element, classToRemove) {\n if (classToRemove) {\n classToRemove.split(' ').forEach(className => renderer.removeClass(element.nativeElement, className));\n }\n}\nlet DraggableHelper = /*#__PURE__*/(() => {\n class DraggableHelper {\n constructor() {\n this.currentDrag = new Subject();\n }\n }\n DraggableHelper.ɵfac = function DraggableHelper_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DraggableHelper)();\n };\n DraggableHelper.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DraggableHelper,\n factory: DraggableHelper.ɵfac,\n providedIn: 'root'\n });\n return DraggableHelper;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * If the window isn't scrollable, then place this on the scrollable container that draggable elements are inside. e.g.\n * ```html\n
\n
Drag me!
\n
\n ```\n */\nlet DraggableScrollContainerDirective = /*#__PURE__*/(() => {\n class DraggableScrollContainerDirective {\n /**\n * @hidden\n */\n constructor(elementRef) {\n this.elementRef = elementRef;\n }\n }\n DraggableScrollContainerDirective.ɵfac = function DraggableScrollContainerDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DraggableScrollContainerDirective)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n DraggableScrollContainerDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DraggableScrollContainerDirective,\n selectors: [[\"\", \"mwlDraggableScrollContainer\", \"\"]]\n });\n return DraggableScrollContainerDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet DraggableDirective = /*#__PURE__*/(() => {\n class DraggableDirective {\n /**\n * @hidden\n */\n constructor(element, renderer, draggableHelper, zone, vcr, scrollContainer, document) {\n this.element = element;\n this.renderer = renderer;\n this.draggableHelper = draggableHelper;\n this.zone = zone;\n this.vcr = vcr;\n this.scrollContainer = scrollContainer;\n this.document = document;\n /**\n * The axis along which the element is draggable\n */\n this.dragAxis = {\n x: true,\n y: true\n };\n /**\n * Snap all drags to an x / y grid\n */\n this.dragSnapGrid = {};\n /**\n * Show a ghost element that shows the drag when dragging\n */\n this.ghostDragEnabled = true;\n /**\n * Show the original element when ghostDragEnabled is true\n */\n this.showOriginalElementWhileDragging = false;\n /**\n * The cursor to use when hovering over a draggable element\n */\n this.dragCursor = '';\n /*\n * Options used to control the behaviour of auto scrolling: https://www.npmjs.com/package/dom-autoscroller\n */\n this.autoScroll = {\n margin: 20\n };\n /**\n * Called when the element can be dragged along one axis and has the mouse or pointer device pressed on it\n */\n this.dragPointerDown = new EventEmitter();\n /**\n * Called when the element has started to be dragged.\n * Only called after at least one mouse or touch move event.\n * If you call $event.cancelDrag$.emit() it will cancel the current drag\n */\n this.dragStart = new EventEmitter();\n /**\n * Called after the ghost element has been created\n */\n this.ghostElementCreated = new EventEmitter();\n /**\n * Called when the element is being dragged\n */\n this.dragging = new EventEmitter();\n /**\n * Called after the element is dragged\n */\n this.dragEnd = new EventEmitter();\n /**\n * @hidden\n */\n this.pointerDown$ = new Subject();\n /**\n * @hidden\n */\n this.pointerMove$ = new Subject();\n /**\n * @hidden\n */\n this.pointerUp$ = new Subject();\n this.eventListenerSubscriptions = {};\n this.destroy$ = new Subject();\n this.timeLongPress = {\n timerBegin: 0,\n timerEnd: 0\n };\n }\n ngOnInit() {\n this.checkEventListeners();\n const pointerDragged$ = this.pointerDown$.pipe(filter(() => this.canDrag()), mergeMap(pointerDownEvent => {\n // fix for https://github.com/mattlewis92/angular-draggable-droppable/issues/61\n // stop mouse events propagating up the chain\n if (pointerDownEvent.event.stopPropagation && !this.scrollContainer) {\n pointerDownEvent.event.stopPropagation();\n }\n // hack to prevent text getting selected in safari while dragging\n const globalDragStyle = this.renderer.createElement('style');\n this.renderer.setAttribute(globalDragStyle, 'type', 'text/css');\n this.renderer.appendChild(globalDragStyle, this.renderer.createText(`\n body * {\n -moz-user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n }\n `));\n requestAnimationFrame(() => {\n this.document.head.appendChild(globalDragStyle);\n });\n const startScrollPosition = this.getScrollPosition();\n const scrollContainerScroll$ = new Observable(observer => {\n const scrollContainer = this.scrollContainer ? this.scrollContainer.elementRef.nativeElement : 'window';\n return this.renderer.listen(scrollContainer, 'scroll', e => observer.next(e));\n }).pipe(startWith(startScrollPosition), map(() => this.getScrollPosition()));\n const currentDrag$ = new Subject();\n const cancelDrag$ = new ReplaySubject();\n if (this.dragPointerDown.observers.length > 0) {\n this.zone.run(() => {\n this.dragPointerDown.next({\n x: 0,\n y: 0\n });\n });\n }\n const dragComplete$ = merge(this.pointerUp$, this.pointerDown$, cancelDrag$, this.destroy$).pipe(share());\n const pointerMove = combineLatest([this.pointerMove$, scrollContainerScroll$]).pipe(map(([pointerMoveEvent, scroll]) => {\n return {\n currentDrag$,\n transformX: pointerMoveEvent.clientX - pointerDownEvent.clientX,\n transformY: pointerMoveEvent.clientY - pointerDownEvent.clientY,\n clientX: pointerMoveEvent.clientX,\n clientY: pointerMoveEvent.clientY,\n scrollLeft: scroll.left,\n scrollTop: scroll.top,\n target: pointerMoveEvent.event.target\n };\n }), map(moveData => {\n if (this.dragSnapGrid.x) {\n moveData.transformX = Math.round(moveData.transformX / this.dragSnapGrid.x) * this.dragSnapGrid.x;\n }\n if (this.dragSnapGrid.y) {\n moveData.transformY = Math.round(moveData.transformY / this.dragSnapGrid.y) * this.dragSnapGrid.y;\n }\n return moveData;\n }), map(moveData => {\n if (!this.dragAxis.x) {\n moveData.transformX = 0;\n }\n if (!this.dragAxis.y) {\n moveData.transformY = 0;\n }\n return moveData;\n }), map(moveData => {\n const scrollX = moveData.scrollLeft - startScrollPosition.left;\n const scrollY = moveData.scrollTop - startScrollPosition.top;\n return {\n ...moveData,\n x: moveData.transformX + scrollX,\n y: moveData.transformY + scrollY\n };\n }), filter(({\n x,\n y,\n transformX,\n transformY\n }) => !this.validateDrag || this.validateDrag({\n x,\n y,\n transform: {\n x: transformX,\n y: transformY\n }\n })), takeUntil(dragComplete$), share());\n const dragStarted$ = pointerMove.pipe(take(1), share());\n const dragEnded$ = pointerMove.pipe(takeLast(1), share());\n dragStarted$.subscribe(({\n clientX,\n clientY,\n x,\n y\n }) => {\n if (this.dragStart.observers.length > 0) {\n this.zone.run(() => {\n this.dragStart.next({\n cancelDrag$\n });\n });\n }\n this.scroller = autoScroll([this.scrollContainer ? this.scrollContainer.elementRef.nativeElement : this.document.defaultView], {\n ...this.autoScroll,\n autoScroll() {\n return true;\n }\n });\n addClass(this.renderer, this.element, this.dragActiveClass);\n if (this.ghostDragEnabled) {\n const rect = this.element.nativeElement.getBoundingClientRect();\n const clone = this.element.nativeElement.cloneNode(true);\n if (!this.showOriginalElementWhileDragging) {\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'hidden');\n }\n if (this.ghostElementAppendTo) {\n this.ghostElementAppendTo.appendChild(clone);\n } else {\n this.element.nativeElement.parentNode.insertBefore(clone, this.element.nativeElement.nextSibling);\n }\n this.ghostElement = clone;\n this.document.body.style.cursor = this.dragCursor;\n this.setElementStyles(clone, {\n position: 'fixed',\n top: `${rect.top}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n height: `${rect.height}px`,\n cursor: this.dragCursor,\n margin: '0',\n willChange: 'transform',\n pointerEvents: 'none'\n });\n if (this.ghostElementTemplate) {\n const viewRef = this.vcr.createEmbeddedView(this.ghostElementTemplate);\n clone.innerHTML = '';\n viewRef.rootNodes.filter(node => node instanceof Node).forEach(node => {\n clone.appendChild(node);\n });\n dragEnded$.subscribe(() => {\n this.vcr.remove(this.vcr.indexOf(viewRef));\n });\n }\n if (this.ghostElementCreated.observers.length > 0) {\n this.zone.run(() => {\n this.ghostElementCreated.emit({\n clientX: clientX - x,\n clientY: clientY - y,\n element: clone\n });\n });\n }\n dragEnded$.subscribe(() => {\n clone.parentElement.removeChild(clone);\n this.ghostElement = null;\n this.renderer.setStyle(this.element.nativeElement, 'visibility', '');\n });\n }\n this.draggableHelper.currentDrag.next(currentDrag$);\n });\n dragEnded$.pipe(mergeMap(dragEndData => {\n const dragEndData$ = cancelDrag$.pipe(count(), take(1), map(calledCount => ({\n ...dragEndData,\n dragCancelled: calledCount > 0\n })));\n cancelDrag$.complete();\n return dragEndData$;\n })).subscribe(({\n x,\n y,\n dragCancelled\n }) => {\n this.scroller.destroy();\n if (this.dragEnd.observers.length > 0) {\n this.zone.run(() => {\n this.dragEnd.next({\n x,\n y,\n dragCancelled\n });\n });\n }\n removeClass(this.renderer, this.element, this.dragActiveClass);\n currentDrag$.complete();\n });\n merge(dragComplete$, dragEnded$).pipe(take(1)).subscribe(() => {\n requestAnimationFrame(() => {\n this.document.head.removeChild(globalDragStyle);\n });\n });\n return pointerMove;\n }), share());\n merge(pointerDragged$.pipe(take(1), map(value => [, value])), pointerDragged$.pipe(pairwise())).pipe(filter(([previous, next]) => {\n if (!previous) {\n return true;\n }\n return previous.x !== next.x || previous.y !== next.y;\n }), map(([previous, next]) => next)).subscribe(({\n x,\n y,\n currentDrag$,\n clientX,\n clientY,\n transformX,\n transformY,\n target\n }) => {\n if (this.dragging.observers.length > 0) {\n this.zone.run(() => {\n this.dragging.next({\n x,\n y\n });\n });\n }\n requestAnimationFrame(() => {\n if (this.ghostElement) {\n const transform = `translate3d(${transformX}px, ${transformY}px, 0px)`;\n this.setElementStyles(this.ghostElement, {\n transform,\n '-webkit-transform': transform,\n '-ms-transform': transform,\n '-moz-transform': transform,\n '-o-transform': transform\n });\n }\n });\n currentDrag$.next({\n clientX,\n clientY,\n dropData: this.dropData,\n target\n });\n });\n }\n ngOnChanges(changes) {\n if (changes.dragAxis) {\n this.checkEventListeners();\n }\n }\n ngOnDestroy() {\n this.unsubscribeEventListeners();\n this.pointerDown$.complete();\n this.pointerMove$.complete();\n this.pointerUp$.complete();\n this.destroy$.next();\n }\n checkEventListeners() {\n const canDrag = this.canDrag();\n const hasEventListeners = Object.keys(this.eventListenerSubscriptions).length > 0;\n if (canDrag && !hasEventListeners) {\n this.zone.runOutsideAngular(() => {\n this.eventListenerSubscriptions.mousedown = this.renderer.listen(this.element.nativeElement, 'mousedown', event => {\n this.onMouseDown(event);\n });\n this.eventListenerSubscriptions.mouseup = this.renderer.listen('document', 'mouseup', event => {\n this.onMouseUp(event);\n });\n this.eventListenerSubscriptions.touchstart = this.renderer.listen(this.element.nativeElement, 'touchstart', event => {\n this.onTouchStart(event);\n });\n this.eventListenerSubscriptions.touchend = this.renderer.listen('document', 'touchend', event => {\n this.onTouchEnd(event);\n });\n this.eventListenerSubscriptions.touchcancel = this.renderer.listen('document', 'touchcancel', event => {\n this.onTouchEnd(event);\n });\n this.eventListenerSubscriptions.mouseenter = this.renderer.listen(this.element.nativeElement, 'mouseenter', () => {\n this.onMouseEnter();\n });\n this.eventListenerSubscriptions.mouseleave = this.renderer.listen(this.element.nativeElement, 'mouseleave', () => {\n this.onMouseLeave();\n });\n });\n } else if (!canDrag && hasEventListeners) {\n this.unsubscribeEventListeners();\n }\n }\n onMouseDown(event) {\n if (event.button === 0) {\n if (!this.eventListenerSubscriptions.mousemove) {\n this.eventListenerSubscriptions.mousemove = this.renderer.listen('document', 'mousemove', mouseMoveEvent => {\n this.pointerMove$.next({\n event: mouseMoveEvent,\n clientX: mouseMoveEvent.clientX,\n clientY: mouseMoveEvent.clientY\n });\n });\n }\n this.pointerDown$.next({\n event,\n clientX: event.clientX,\n clientY: event.clientY\n });\n }\n }\n onMouseUp(event) {\n if (event.button === 0) {\n if (this.eventListenerSubscriptions.mousemove) {\n this.eventListenerSubscriptions.mousemove();\n delete this.eventListenerSubscriptions.mousemove;\n }\n this.pointerUp$.next({\n event,\n clientX: event.clientX,\n clientY: event.clientY\n });\n }\n }\n onTouchStart(event) {\n let startScrollPosition;\n let isDragActivated;\n let hasContainerScrollbar;\n if (this.touchStartLongPress) {\n this.timeLongPress.timerBegin = Date.now();\n isDragActivated = false;\n hasContainerScrollbar = this.hasScrollbar();\n startScrollPosition = this.getScrollPosition();\n }\n if (!this.eventListenerSubscriptions.touchmove) {\n const contextMenuListener = fromEvent(this.document, 'contextmenu').subscribe(e => {\n e.preventDefault();\n });\n const touchMoveListener = fromEvent(this.document, 'touchmove', {\n passive: false\n }).subscribe(touchMoveEvent => {\n if (this.touchStartLongPress && !isDragActivated && hasContainerScrollbar) {\n isDragActivated = this.shouldBeginDrag(event, touchMoveEvent, startScrollPosition);\n }\n if (!this.touchStartLongPress || !hasContainerScrollbar || isDragActivated) {\n touchMoveEvent.preventDefault();\n this.pointerMove$.next({\n event: touchMoveEvent,\n clientX: touchMoveEvent.targetTouches[0].clientX,\n clientY: touchMoveEvent.targetTouches[0].clientY\n });\n }\n });\n this.eventListenerSubscriptions.touchmove = () => {\n contextMenuListener.unsubscribe();\n touchMoveListener.unsubscribe();\n };\n }\n this.pointerDown$.next({\n event,\n clientX: event.touches[0].clientX,\n clientY: event.touches[0].clientY\n });\n }\n onTouchEnd(event) {\n if (this.eventListenerSubscriptions.touchmove) {\n this.eventListenerSubscriptions.touchmove();\n delete this.eventListenerSubscriptions.touchmove;\n if (this.touchStartLongPress) {\n this.enableScroll();\n }\n }\n this.pointerUp$.next({\n event,\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY\n });\n }\n onMouseEnter() {\n this.setCursor(this.dragCursor);\n }\n onMouseLeave() {\n this.setCursor('');\n }\n canDrag() {\n return this.dragAxis.x || this.dragAxis.y;\n }\n setCursor(value) {\n if (!this.eventListenerSubscriptions.mousemove) {\n this.renderer.setStyle(this.element.nativeElement, 'cursor', value);\n }\n }\n unsubscribeEventListeners() {\n Object.keys(this.eventListenerSubscriptions).forEach(type => {\n this.eventListenerSubscriptions[type]();\n delete this.eventListenerSubscriptions[type];\n });\n }\n setElementStyles(element, styles) {\n Object.keys(styles).forEach(key => {\n this.renderer.setStyle(element, key, styles[key]);\n });\n }\n getScrollElement() {\n if (this.scrollContainer) {\n return this.scrollContainer.elementRef.nativeElement;\n } else {\n return this.document.body;\n }\n }\n getScrollPosition() {\n if (this.scrollContainer) {\n return {\n top: this.scrollContainer.elementRef.nativeElement.scrollTop,\n left: this.scrollContainer.elementRef.nativeElement.scrollLeft\n };\n } else {\n return {\n top: window.pageYOffset || this.document.documentElement.scrollTop,\n left: window.pageXOffset || this.document.documentElement.scrollLeft\n };\n }\n }\n shouldBeginDrag(event, touchMoveEvent, startScrollPosition) {\n const moveScrollPosition = this.getScrollPosition();\n const deltaScroll = {\n top: Math.abs(moveScrollPosition.top - startScrollPosition.top),\n left: Math.abs(moveScrollPosition.left - startScrollPosition.left)\n };\n const deltaX = Math.abs(touchMoveEvent.targetTouches[0].clientX - event.touches[0].clientX) - deltaScroll.left;\n const deltaY = Math.abs(touchMoveEvent.targetTouches[0].clientY - event.touches[0].clientY) - deltaScroll.top;\n const deltaTotal = deltaX + deltaY;\n const longPressConfig = this.touchStartLongPress;\n if (deltaTotal > longPressConfig.delta || deltaScroll.top > 0 || deltaScroll.left > 0) {\n this.timeLongPress.timerBegin = Date.now();\n }\n this.timeLongPress.timerEnd = Date.now();\n const duration = this.timeLongPress.timerEnd - this.timeLongPress.timerBegin;\n if (duration >= longPressConfig.delay) {\n this.disableScroll();\n return true;\n }\n return false;\n }\n enableScroll() {\n if (this.scrollContainer) {\n this.renderer.setStyle(this.scrollContainer.elementRef.nativeElement, 'overflow', '');\n }\n this.renderer.setStyle(this.document.body, 'overflow', '');\n }\n disableScroll() {\n /* istanbul ignore next */\n if (this.scrollContainer) {\n this.renderer.setStyle(this.scrollContainer.elementRef.nativeElement, 'overflow', 'hidden');\n }\n this.renderer.setStyle(this.document.body, 'overflow', 'hidden');\n }\n hasScrollbar() {\n const scrollContainer = this.getScrollElement();\n const containerHasHorizontalScroll = scrollContainer.scrollWidth > scrollContainer.clientWidth;\n const containerHasVerticalScroll = scrollContainer.scrollHeight > scrollContainer.clientHeight;\n return containerHasHorizontalScroll || containerHasVerticalScroll;\n }\n }\n DraggableDirective.ɵfac = function DraggableDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DraggableDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(DraggableHelper), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(DraggableScrollContainerDirective, 8), i0.ɵɵdirectiveInject(DOCUMENT));\n };\n DraggableDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DraggableDirective,\n selectors: [[\"\", \"mwlDraggable\", \"\"]],\n inputs: {\n dropData: \"dropData\",\n dragAxis: \"dragAxis\",\n dragSnapGrid: \"dragSnapGrid\",\n ghostDragEnabled: \"ghostDragEnabled\",\n showOriginalElementWhileDragging: \"showOriginalElementWhileDragging\",\n validateDrag: \"validateDrag\",\n dragCursor: \"dragCursor\",\n dragActiveClass: \"dragActiveClass\",\n ghostElementAppendTo: \"ghostElementAppendTo\",\n ghostElementTemplate: \"ghostElementTemplate\",\n touchStartLongPress: \"touchStartLongPress\",\n autoScroll: \"autoScroll\"\n },\n outputs: {\n dragPointerDown: \"dragPointerDown\",\n dragStart: \"dragStart\",\n ghostElementCreated: \"ghostElementCreated\",\n dragging: \"dragging\",\n dragEnd: \"dragEnd\"\n },\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return DraggableDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction isCoordinateWithinRectangle(clientX, clientY, rect) {\n return clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom;\n}\nlet DroppableDirective = /*#__PURE__*/(() => {\n class DroppableDirective {\n constructor(element, draggableHelper, zone, renderer, scrollContainer) {\n this.element = element;\n this.draggableHelper = draggableHelper;\n this.zone = zone;\n this.renderer = renderer;\n this.scrollContainer = scrollContainer;\n /**\n * Called when a draggable element starts overlapping the element\n */\n this.dragEnter = new EventEmitter();\n /**\n * Called when a draggable element stops overlapping the element\n */\n this.dragLeave = new EventEmitter();\n /**\n * Called when a draggable element is moved over the element\n */\n this.dragOver = new EventEmitter();\n /**\n * Called when a draggable element is dropped on this element\n */\n this.drop = new EventEmitter(); // eslint-disable-line @angular-eslint/no-output-native\n }\n ngOnInit() {\n this.currentDragSubscription = this.draggableHelper.currentDrag.subscribe(drag$ => {\n addClass(this.renderer, this.element, this.dragActiveClass);\n const droppableElement = {\n updateCache: true\n };\n const deregisterScrollListener = this.renderer.listen(this.scrollContainer ? this.scrollContainer.elementRef.nativeElement : 'window', 'scroll', () => {\n droppableElement.updateCache = true;\n });\n let currentDragEvent;\n const overlaps$ = drag$.pipe(map(({\n clientX,\n clientY,\n dropData,\n target\n }) => {\n currentDragEvent = {\n clientX,\n clientY,\n dropData,\n target\n };\n if (droppableElement.updateCache) {\n droppableElement.rect = this.element.nativeElement.getBoundingClientRect();\n if (this.scrollContainer) {\n droppableElement.scrollContainerRect = this.scrollContainer.elementRef.nativeElement.getBoundingClientRect();\n }\n droppableElement.updateCache = false;\n }\n const isWithinElement = isCoordinateWithinRectangle(clientX, clientY, droppableElement.rect);\n const isDropAllowed = !this.validateDrop || this.validateDrop({\n clientX,\n clientY,\n target,\n dropData\n });\n if (droppableElement.scrollContainerRect) {\n return isWithinElement && isDropAllowed && isCoordinateWithinRectangle(clientX, clientY, droppableElement.scrollContainerRect);\n } else {\n return isWithinElement && isDropAllowed;\n }\n }));\n const overlapsChanged$ = overlaps$.pipe(distinctUntilChanged());\n let dragOverActive; // TODO - see if there's a way of doing this via rxjs\n overlapsChanged$.pipe(filter(overlapsNow => overlapsNow)).subscribe(() => {\n dragOverActive = true;\n addClass(this.renderer, this.element, this.dragOverClass);\n if (this.dragEnter.observers.length > 0) {\n this.zone.run(() => {\n this.dragEnter.next(currentDragEvent);\n });\n }\n });\n overlaps$.pipe(filter(overlapsNow => overlapsNow)).subscribe(() => {\n if (this.dragOver.observers.length > 0) {\n this.zone.run(() => {\n this.dragOver.next(currentDragEvent);\n });\n }\n });\n overlapsChanged$.pipe(pairwise(), filter(([didOverlap, overlapsNow]) => didOverlap && !overlapsNow)).subscribe(() => {\n dragOverActive = false;\n removeClass(this.renderer, this.element, this.dragOverClass);\n if (this.dragLeave.observers.length > 0) {\n this.zone.run(() => {\n this.dragLeave.next(currentDragEvent);\n });\n }\n });\n drag$.subscribe({\n complete: () => {\n deregisterScrollListener();\n removeClass(this.renderer, this.element, this.dragActiveClass);\n if (dragOverActive) {\n removeClass(this.renderer, this.element, this.dragOverClass);\n if (this.drop.observers.length > 0) {\n this.zone.run(() => {\n this.drop.next(currentDragEvent);\n });\n }\n }\n }\n });\n });\n }\n ngOnDestroy() {\n if (this.currentDragSubscription) {\n this.currentDragSubscription.unsubscribe();\n }\n }\n }\n DroppableDirective.ɵfac = function DroppableDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DroppableDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(DraggableHelper), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(DraggableScrollContainerDirective, 8));\n };\n DroppableDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DroppableDirective,\n selectors: [[\"\", \"mwlDroppable\", \"\"]],\n inputs: {\n dragOverClass: \"dragOverClass\",\n dragActiveClass: \"dragActiveClass\",\n validateDrop: \"validateDrop\"\n },\n outputs: {\n dragEnter: \"dragEnter\",\n dragLeave: \"dragLeave\",\n dragOver: \"dragOver\",\n drop: \"drop\"\n }\n });\n return DroppableDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet DragAndDropModule = /*#__PURE__*/(() => {\n class DragAndDropModule {}\n DragAndDropModule.ɵfac = function DragAndDropModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DragAndDropModule)();\n };\n DragAndDropModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: DragAndDropModule\n });\n DragAndDropModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n return DragAndDropModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/*\n * Public API Surface of angular-draggable-droppable\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DragAndDropModule, DraggableDirective, DraggableScrollContainerDirective, DroppableDirective };\n\n","import * as i0 from '@angular/core';\nimport { EventEmitter, PLATFORM_ID, Directive, Inject, Input, Output, Optional, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Subject, merge, Observable, fromEvent } from 'rxjs';\nimport { tap, share, mergeMap, take, map, pairwise, filter, takeUntil } from 'rxjs/operators';\n\n/**\n * @hidden\n */\nconst IS_TOUCH_DEVICE = (() => {\n // In case we're in Node.js environment.\n if (typeof window === 'undefined') {\n return false;\n } else {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;\n }\n})();\n\n/** Creates a deep clone of an element. */\nfunction deepCloneNode(node) {\n const clone = node.cloneNode(true);\n const descendantsWithId = clone.querySelectorAll('[id]');\n const nodeName = node.nodeName.toLowerCase();\n // Remove the `id` to avoid having multiple elements with the same id on the page.\n clone.removeAttribute('id');\n descendantsWithId.forEach(descendant => {\n descendant.removeAttribute('id');\n });\n if (nodeName === 'canvas') {\n transferCanvasData(node, clone);\n } else if (nodeName === 'input' || nodeName === 'select' || nodeName === 'textarea') {\n transferInputData(node, clone);\n }\n transferData('canvas', node, clone, transferCanvasData);\n transferData('input, textarea, select', node, clone, transferInputData);\n return clone;\n}\n/** Matches elements between an element and its clone and allows for their data to be cloned. */\nfunction transferData(selector, node, clone, callback) {\n const descendantElements = node.querySelectorAll(selector);\n if (descendantElements.length) {\n const cloneElements = clone.querySelectorAll(selector);\n for (let i = 0; i < descendantElements.length; i++) {\n callback(descendantElements[i], cloneElements[i]);\n }\n }\n}\n// Counter for unique cloned radio button names.\nlet cloneUniqueId = 0;\n/** Transfers the data of one input element to another. */\nfunction transferInputData(source, clone) {\n // Browsers throw an error when assigning the value of a file input programmatically.\n if (clone.type !== 'file') {\n clone.value = source.value;\n }\n // Radio button `name` attributes must be unique for radio button groups\n // otherwise original radio buttons can lose their checked state\n // once the clone is inserted in the DOM.\n if (clone.type === 'radio' && clone.name) {\n clone.name = `mat-clone-${clone.name}-${cloneUniqueId++}`;\n }\n}\n/** Transfers the data of one canvas element to another. */\nfunction transferCanvasData(source, clone) {\n const context = clone.getContext('2d');\n if (context) {\n // In some cases `drawImage` can throw (e.g. if the canvas size is 0x0).\n // We can't do much about it so just ignore the error.\n try {\n context.drawImage(source, 0, 0);\n } catch {}\n }\n}\nfunction getNewBoundingRectangle(startingRect, edges, clientX, clientY) {\n const newBoundingRect = {\n top: startingRect.top,\n bottom: startingRect.bottom,\n left: startingRect.left,\n right: startingRect.right\n };\n if (edges.top) {\n newBoundingRect.top += clientY;\n }\n if (edges.bottom) {\n newBoundingRect.bottom += clientY;\n }\n if (edges.left) {\n newBoundingRect.left += clientX;\n }\n if (edges.right) {\n newBoundingRect.right += clientX;\n }\n newBoundingRect.height = newBoundingRect.bottom - newBoundingRect.top;\n newBoundingRect.width = newBoundingRect.right - newBoundingRect.left;\n return newBoundingRect;\n}\nfunction getElementRect(element, ghostElementPositioning) {\n let translateX = 0;\n let translateY = 0;\n const style = element.nativeElement.style;\n const transformProperties = ['transform', '-ms-transform', '-moz-transform', '-o-transform'];\n const transform = transformProperties.map(property => style[property]).find(value => !!value);\n if (transform && transform.includes('translate')) {\n translateX = transform.replace(/.*translate3?d?\\((-?[0-9]*)px, (-?[0-9]*)px.*/, '$1');\n translateY = transform.replace(/.*translate3?d?\\((-?[0-9]*)px, (-?[0-9]*)px.*/, '$2');\n }\n if (ghostElementPositioning === 'absolute') {\n return {\n height: element.nativeElement.offsetHeight,\n width: element.nativeElement.offsetWidth,\n top: element.nativeElement.offsetTop - translateY,\n bottom: element.nativeElement.offsetHeight + element.nativeElement.offsetTop - translateY,\n left: element.nativeElement.offsetLeft - translateX,\n right: element.nativeElement.offsetWidth + element.nativeElement.offsetLeft - translateX\n };\n } else {\n const boundingRect = element.nativeElement.getBoundingClientRect();\n return {\n height: boundingRect.height,\n width: boundingRect.width,\n top: boundingRect.top - translateY,\n bottom: boundingRect.bottom - translateY,\n left: boundingRect.left - translateX,\n right: boundingRect.right - translateX,\n scrollTop: element.nativeElement.scrollTop,\n scrollLeft: element.nativeElement.scrollLeft\n };\n }\n}\nconst DEFAULT_RESIZE_CURSORS = Object.freeze({\n topLeft: 'nw-resize',\n topRight: 'ne-resize',\n bottomLeft: 'sw-resize',\n bottomRight: 'se-resize',\n leftOrRight: 'col-resize',\n topOrBottom: 'row-resize'\n});\nfunction getResizeCursor(edges, cursors) {\n if (edges.left && edges.top) {\n return cursors.topLeft;\n } else if (edges.right && edges.top) {\n return cursors.topRight;\n } else if (edges.left && edges.bottom) {\n return cursors.bottomLeft;\n } else if (edges.right && edges.bottom) {\n return cursors.bottomRight;\n } else if (edges.left || edges.right) {\n return cursors.leftOrRight;\n } else if (edges.top || edges.bottom) {\n return cursors.topOrBottom;\n } else {\n return '';\n }\n}\nfunction getEdgesDiff({\n edges,\n initialRectangle,\n newRectangle\n}) {\n const edgesDiff = {};\n Object.keys(edges).forEach(edge => {\n edgesDiff[edge] = (newRectangle[edge] || 0) - (initialRectangle[edge] || 0);\n });\n return edgesDiff;\n}\nconst RESIZE_ACTIVE_CLASS = 'resize-active';\nconst RESIZE_GHOST_ELEMENT_CLASS = 'resize-ghost-element';\nconst MOUSE_MOVE_THROTTLE_MS = 50;\n/**\n * Place this on an element to make it resizable. For example:\n *\n * ```html\n * \n * \n * ```\n * Or in case they are sibling elements:\n * ```html\n *
\n *
\n * ```\n */\nlet ResizableDirective = /*#__PURE__*/(() => {\n class ResizableDirective {\n /**\n * @hidden\n */\n constructor(platformId, renderer, elm, zone) {\n this.platformId = platformId;\n this.renderer = renderer;\n this.elm = elm;\n this.zone = zone;\n /**\n * Set to `true` to enable a temporary resizing effect of the element in between the `resizeStart` and `resizeEnd` events.\n */\n this.enableGhostResize = false;\n /**\n * A snap grid that resize events will be locked to.\n *\n * e.g. to only allow the element to be resized every 10px set it to `{left: 10, right: 10}`\n */\n this.resizeSnapGrid = {};\n /**\n * The mouse cursors that will be set on the resize edges\n */\n this.resizeCursors = DEFAULT_RESIZE_CURSORS;\n /**\n * Define the positioning of the ghost element (can be fixed or absolute)\n */\n this.ghostElementPositioning = 'fixed';\n /**\n * Allow elements to be resized to negative dimensions\n */\n this.allowNegativeResizes = false;\n /**\n * The mouse move throttle in milliseconds, default: 50 ms\n */\n this.mouseMoveThrottleMS = MOUSE_MOVE_THROTTLE_MS;\n /**\n * Called when the mouse is pressed and a resize event is about to begin. `$event` is a `ResizeEvent` object.\n */\n this.resizeStart = new EventEmitter();\n /**\n * Called as the mouse is dragged after a resize event has begun. `$event` is a `ResizeEvent` object.\n */\n this.resizing = new EventEmitter();\n /**\n * Called after the mouse is released after a resize event. `$event` is a `ResizeEvent` object.\n */\n this.resizeEnd = new EventEmitter();\n /**\n * @hidden\n */\n this.mouseup = new Subject();\n /**\n * @hidden\n */\n this.mousedown = new Subject();\n /**\n * @hidden\n */\n this.mousemove = new Subject();\n this.destroy$ = new Subject();\n this.pointerEventListeners = PointerEventListeners.getInstance(renderer, zone);\n }\n /**\n * @hidden\n */\n ngOnInit() {\n const mousedown$ = merge(this.pointerEventListeners.pointerDown, this.mousedown);\n const mousemove$ = merge(this.pointerEventListeners.pointerMove, this.mousemove).pipe(tap(({\n event\n }) => {\n if (currentResize && event.cancelable) {\n event.preventDefault();\n }\n }), share());\n const mouseup$ = merge(this.pointerEventListeners.pointerUp, this.mouseup);\n let currentResize;\n const removeGhostElement = () => {\n if (currentResize && currentResize.clonedNode) {\n this.elm.nativeElement.parentElement.removeChild(currentResize.clonedNode);\n this.renderer.setStyle(this.elm.nativeElement, 'visibility', 'inherit');\n }\n };\n const getResizeCursors = () => {\n return {\n ...DEFAULT_RESIZE_CURSORS,\n ...this.resizeCursors\n };\n };\n const mousedrag = mousedown$.pipe(mergeMap(startCoords => {\n function getDiff(moveCoords) {\n return {\n clientX: moveCoords.clientX - startCoords.clientX,\n clientY: moveCoords.clientY - startCoords.clientY\n };\n }\n const getSnapGrid = () => {\n const snapGrid = {\n x: 1,\n y: 1\n };\n if (currentResize) {\n if (this.resizeSnapGrid.left && currentResize.edges.left) {\n snapGrid.x = +this.resizeSnapGrid.left;\n } else if (this.resizeSnapGrid.right && currentResize.edges.right) {\n snapGrid.x = +this.resizeSnapGrid.right;\n }\n if (this.resizeSnapGrid.top && currentResize.edges.top) {\n snapGrid.y = +this.resizeSnapGrid.top;\n } else if (this.resizeSnapGrid.bottom && currentResize.edges.bottom) {\n snapGrid.y = +this.resizeSnapGrid.bottom;\n }\n }\n return snapGrid;\n };\n function getGrid(coords, snapGrid) {\n return {\n x: Math.ceil(coords.clientX / snapGrid.x),\n y: Math.ceil(coords.clientY / snapGrid.y)\n };\n }\n return merge(mousemove$.pipe(take(1)).pipe(map(coords => [, coords])), mousemove$.pipe(pairwise())).pipe(map(([previousCoords, newCoords]) => {\n return [previousCoords ? getDiff(previousCoords) : previousCoords, getDiff(newCoords)];\n })).pipe(filter(([previousCoords, newCoords]) => {\n if (!previousCoords) {\n return true;\n }\n const snapGrid = getSnapGrid();\n const previousGrid = getGrid(previousCoords, snapGrid);\n const newGrid = getGrid(newCoords, snapGrid);\n return previousGrid.x !== newGrid.x || previousGrid.y !== newGrid.y;\n })).pipe(map(([, newCoords]) => {\n const snapGrid = getSnapGrid();\n return {\n clientX: Math.round(newCoords.clientX / snapGrid.x) * snapGrid.x,\n clientY: Math.round(newCoords.clientY / snapGrid.y) * snapGrid.y\n };\n })).pipe(takeUntil(merge(mouseup$, mousedown$)));\n })).pipe(filter(() => !!currentResize));\n mousedrag.pipe(map(({\n clientX,\n clientY\n }) => {\n return getNewBoundingRectangle(currentResize.startingRect, currentResize.edges, clientX, clientY);\n })).pipe(filter(newBoundingRect => {\n return this.allowNegativeResizes || !!(newBoundingRect.height && newBoundingRect.width && newBoundingRect.height > 0 && newBoundingRect.width > 0);\n })).pipe(filter(newBoundingRect => {\n return this.validateResize ? this.validateResize({\n rectangle: newBoundingRect,\n edges: getEdgesDiff({\n edges: currentResize.edges,\n initialRectangle: currentResize.startingRect,\n newRectangle: newBoundingRect\n })\n }) : true;\n }), takeUntil(this.destroy$)).subscribe(newBoundingRect => {\n if (currentResize && currentResize.clonedNode) {\n this.renderer.setStyle(currentResize.clonedNode, 'height', `${newBoundingRect.height}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'width', `${newBoundingRect.width}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'top', `${newBoundingRect.top}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'left', `${newBoundingRect.left}px`);\n }\n if (this.resizing.observers.length > 0) {\n this.zone.run(() => {\n this.resizing.emit({\n edges: getEdgesDiff({\n edges: currentResize.edges,\n initialRectangle: currentResize.startingRect,\n newRectangle: newBoundingRect\n }),\n rectangle: newBoundingRect\n });\n });\n }\n currentResize.currentRect = newBoundingRect;\n });\n mousedown$.pipe(map(({\n edges\n }) => {\n return edges || {};\n }), filter(edges => {\n return Object.keys(edges).length > 0;\n }), takeUntil(this.destroy$)).subscribe(edges => {\n if (currentResize) {\n removeGhostElement();\n }\n const startingRect = getElementRect(this.elm, this.ghostElementPositioning);\n currentResize = {\n edges,\n startingRect,\n currentRect: startingRect\n };\n const resizeCursors = getResizeCursors();\n const cursor = getResizeCursor(currentResize.edges, resizeCursors);\n this.renderer.setStyle(document.body, 'cursor', cursor);\n this.setElementClass(this.elm, RESIZE_ACTIVE_CLASS, true);\n if (this.enableGhostResize) {\n currentResize.clonedNode = deepCloneNode(this.elm.nativeElement);\n this.elm.nativeElement.parentElement.appendChild(currentResize.clonedNode);\n this.renderer.setStyle(this.elm.nativeElement, 'visibility', 'hidden');\n this.renderer.setStyle(currentResize.clonedNode, 'position', this.ghostElementPositioning);\n this.renderer.setStyle(currentResize.clonedNode, 'left', `${currentResize.startingRect.left}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'top', `${currentResize.startingRect.top}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'height', `${currentResize.startingRect.height}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'width', `${currentResize.startingRect.width}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'cursor', getResizeCursor(currentResize.edges, resizeCursors));\n this.renderer.addClass(currentResize.clonedNode, RESIZE_GHOST_ELEMENT_CLASS);\n currentResize.clonedNode.scrollTop = currentResize.startingRect.scrollTop;\n currentResize.clonedNode.scrollLeft = currentResize.startingRect.scrollLeft;\n }\n if (this.resizeStart.observers.length > 0) {\n this.zone.run(() => {\n this.resizeStart.emit({\n edges: getEdgesDiff({\n edges,\n initialRectangle: startingRect,\n newRectangle: startingRect\n }),\n rectangle: getNewBoundingRectangle(startingRect, {}, 0, 0)\n });\n });\n }\n });\n mouseup$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (currentResize) {\n this.renderer.removeClass(this.elm.nativeElement, RESIZE_ACTIVE_CLASS);\n this.renderer.setStyle(document.body, 'cursor', '');\n this.renderer.setStyle(this.elm.nativeElement, 'cursor', '');\n if (this.resizeEnd.observers.length > 0) {\n this.zone.run(() => {\n this.resizeEnd.emit({\n edges: getEdgesDiff({\n edges: currentResize.edges,\n initialRectangle: currentResize.startingRect,\n newRectangle: currentResize.currentRect\n }),\n rectangle: currentResize.currentRect\n });\n });\n }\n removeGhostElement();\n currentResize = null;\n }\n });\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n // browser check for angular universal, because it doesn't know what document is\n if (isPlatformBrowser(this.platformId)) {\n this.renderer.setStyle(document.body, 'cursor', '');\n }\n this.mousedown.complete();\n this.mouseup.complete();\n this.mousemove.complete();\n this.destroy$.next();\n }\n setElementClass(elm, name, add) {\n if (add) {\n this.renderer.addClass(elm.nativeElement, name);\n } else {\n this.renderer.removeClass(elm.nativeElement, name);\n }\n }\n }\n ResizableDirective.ɵfac = function ResizableDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ResizableDirective)(i0.ɵɵdirectiveInject(PLATFORM_ID), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n ResizableDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ResizableDirective,\n selectors: [[\"\", \"mwlResizable\", \"\"]],\n inputs: {\n validateResize: \"validateResize\",\n enableGhostResize: \"enableGhostResize\",\n resizeSnapGrid: \"resizeSnapGrid\",\n resizeCursors: \"resizeCursors\",\n ghostElementPositioning: \"ghostElementPositioning\",\n allowNegativeResizes: \"allowNegativeResizes\",\n mouseMoveThrottleMS: \"mouseMoveThrottleMS\"\n },\n outputs: {\n resizeStart: \"resizeStart\",\n resizing: \"resizing\",\n resizeEnd: \"resizeEnd\"\n },\n exportAs: [\"mwlResizable\"]\n });\n return ResizableDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nclass PointerEventListeners {\n constructor(renderer, zone) {\n this.pointerDown = new Observable(observer => {\n let unsubscribeMouseDown;\n let unsubscribeTouchStart;\n zone.runOutsideAngular(() => {\n unsubscribeMouseDown = renderer.listen('document', 'mousedown', event => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchStart = renderer.listen('document', 'touchstart', event => {\n observer.next({\n clientX: event.touches[0].clientX,\n clientY: event.touches[0].clientY,\n event\n });\n });\n }\n });\n return () => {\n unsubscribeMouseDown();\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchStart();\n }\n };\n }).pipe(share());\n this.pointerMove = new Observable(observer => {\n let unsubscribeMouseMove;\n let unsubscribeTouchMove;\n zone.runOutsideAngular(() => {\n unsubscribeMouseMove = renderer.listen('document', 'mousemove', event => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchMove = renderer.listen('document', 'touchmove', event => {\n observer.next({\n clientX: event.targetTouches[0].clientX,\n clientY: event.targetTouches[0].clientY,\n event\n });\n });\n }\n });\n return () => {\n unsubscribeMouseMove();\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchMove();\n }\n };\n }).pipe(share());\n this.pointerUp = new Observable(observer => {\n let unsubscribeMouseUp;\n let unsubscribeTouchEnd;\n let unsubscribeTouchCancel;\n zone.runOutsideAngular(() => {\n unsubscribeMouseUp = renderer.listen('document', 'mouseup', event => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchEnd = renderer.listen('document', 'touchend', event => {\n observer.next({\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n event\n });\n });\n unsubscribeTouchCancel = renderer.listen('document', 'touchcancel', event => {\n observer.next({\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n event\n });\n });\n }\n });\n return () => {\n unsubscribeMouseUp();\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchEnd();\n unsubscribeTouchCancel();\n }\n };\n }).pipe(share());\n }\n static getInstance(renderer, zone) {\n if (!PointerEventListeners.instance) {\n PointerEventListeners.instance = new PointerEventListeners(renderer, zone);\n }\n return PointerEventListeners.instance;\n }\n}\n\n/**\n * An element placed inside a `mwlResizable` directive to be used as a drag and resize handle\n *\n * For example\n *\n * ```html\n *
\n *
\n *
\n * ```\n * Or in case they are sibling elements:\n * ```html\n *
\n *
\n * ```\n */\nlet ResizeHandleDirective = /*#__PURE__*/(() => {\n class ResizeHandleDirective {\n constructor(renderer, element, zone, resizableDirective) {\n this.renderer = renderer;\n this.element = element;\n this.zone = zone;\n this.resizableDirective = resizableDirective;\n /**\n * The `Edges` object that contains the edges of the parent element that dragging the handle will trigger a resize on\n */\n this.resizeEdges = {};\n this.eventListeners = {};\n this.destroy$ = new Subject();\n }\n ngOnInit() {\n this.zone.runOutsideAngular(() => {\n this.listenOnTheHost('mousedown').subscribe(event => {\n this.onMousedown(event, event.clientX, event.clientY);\n });\n this.listenOnTheHost('mouseup').subscribe(event => {\n this.onMouseup(event.clientX, event.clientY);\n });\n if (IS_TOUCH_DEVICE) {\n this.listenOnTheHost('touchstart').subscribe(event => {\n this.onMousedown(event, event.touches[0].clientX, event.touches[0].clientY);\n });\n merge(this.listenOnTheHost('touchend'), this.listenOnTheHost('touchcancel')).subscribe(event => {\n this.onMouseup(event.changedTouches[0].clientX, event.changedTouches[0].clientY);\n });\n }\n });\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.unsubscribeEventListeners();\n }\n /**\n * @hidden\n */\n onMousedown(event, clientX, clientY) {\n if (event.cancelable) {\n event.preventDefault();\n }\n if (!this.eventListeners.touchmove) {\n this.eventListeners.touchmove = this.renderer.listen(this.element.nativeElement, 'touchmove', touchMoveEvent => {\n this.onMousemove(touchMoveEvent, touchMoveEvent.targetTouches[0].clientX, touchMoveEvent.targetTouches[0].clientY);\n });\n }\n if (!this.eventListeners.mousemove) {\n this.eventListeners.mousemove = this.renderer.listen(this.element.nativeElement, 'mousemove', mouseMoveEvent => {\n this.onMousemove(mouseMoveEvent, mouseMoveEvent.clientX, mouseMoveEvent.clientY);\n });\n }\n this.resizable.mousedown.next({\n clientX,\n clientY,\n edges: this.resizeEdges\n });\n }\n /**\n * @hidden\n */\n onMouseup(clientX, clientY) {\n this.unsubscribeEventListeners();\n this.resizable.mouseup.next({\n clientX,\n clientY,\n edges: this.resizeEdges\n });\n }\n // directive might be passed from DI or as an input\n get resizable() {\n return this.resizableDirective || this.resizableContainer;\n }\n onMousemove(event, clientX, clientY) {\n this.resizable.mousemove.next({\n clientX,\n clientY,\n edges: this.resizeEdges,\n event\n });\n }\n unsubscribeEventListeners() {\n Object.keys(this.eventListeners).forEach(type => {\n this.eventListeners[type]();\n delete this.eventListeners[type];\n });\n }\n listenOnTheHost(eventName) {\n return fromEvent(this.element.nativeElement, eventName).pipe(takeUntil(this.destroy$));\n }\n }\n ResizeHandleDirective.ɵfac = function ResizeHandleDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ResizeHandleDirective)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ResizableDirective, 8));\n };\n ResizeHandleDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ResizeHandleDirective,\n selectors: [[\"\", \"mwlResizeHandle\", \"\"]],\n inputs: {\n resizeEdges: \"resizeEdges\",\n resizableContainer: \"resizableContainer\"\n }\n });\n return ResizeHandleDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ResizableModule = /*#__PURE__*/(() => {\n class ResizableModule {}\n ResizableModule.ɵfac = function ResizableModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ResizableModule)();\n };\n ResizableModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ResizableModule\n });\n ResizableModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n return ResizableModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/*\n * Public API Surface of angular-resizable-element\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ResizableDirective, ResizableModule, ResizeHandleDirective };\n\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Directive, Inject, Input, Output, Injectable, LOCALE_ID, Pipe, Component, HostListener, InjectionToken, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, formatDate, CommonModule, I18nPluralPipe } from '@angular/common';\nimport { Subject, Observable, of, timer, BehaviorSubject, interval } from 'rxjs';\nimport { takeUntil, switchMap, startWith, switchMapTo, map } from 'rxjs/operators';\nimport { positionElements } from 'positioning';\nimport { validateEvents as validateEvents$1, getMonthView, getWeekViewHeader, getWeekView } from 'calendar-utils';\nconst _c0 = (a0, a1) => ({\n event: a0,\n trackByActionId: a1\n});\nconst _c1 = a0 => ({\n action: a0\n});\nfunction CalendarEventActionsComponent_ng_template_0_span_0_a_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"a\", 5);\n i0.ɵɵpipe(1, \"calendarA11y\");\n i0.ɵɵlistener(\"mwlClick\", function CalendarEventActionsComponent_ng_template_0_span_0_a_1_Template_a_mwlClick_0_listener($event) {\n const action_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const event_r3 = i0.ɵɵnextContext(2).event;\n return i0.ɵɵresetView(action_r2.onClick({\n event: event_r3,\n sourceEvent: $event\n }));\n })(\"mwlKeydownEnter\", function CalendarEventActionsComponent_ng_template_0_span_0_a_1_Template_a_mwlKeydownEnter_0_listener($event) {\n const action_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const event_r3 = i0.ɵɵnextContext(2).event;\n return i0.ɵɵresetView(action_r2.onClick({\n event: event_r3,\n sourceEvent: $event\n }));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const action_r2 = ctx.$implicit;\n i0.ɵɵproperty(\"ngClass\", action_r2.cssClass)(\"innerHtml\", action_r2.label, i0.ɵɵsanitizeHtml);\n i0.ɵɵattribute(\"aria-label\", i0.ɵɵpipeBind2(1, 3, i0.ɵɵpureFunction1(6, _c1, action_r2), \"actionButtonLabel\"));\n }\n}\nfunction CalendarEventActionsComponent_ng_template_0_span_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 3);\n i0.ɵɵtemplate(1, CalendarEventActionsComponent_ng_template_0_span_0_a_1_Template, 2, 8, \"a\", 4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r3 = i0.ɵɵnextContext();\n const event_r3 = ctx_r3.event;\n const trackByActionId_r5 = ctx_r3.trackByActionId;\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", event_r3.actions)(\"ngForTrackBy\", trackByActionId_r5);\n }\n}\nfunction CalendarEventActionsComponent_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CalendarEventActionsComponent_ng_template_0_span_0_Template, 2, 2, \"span\", 2);\n }\n if (rf & 2) {\n const event_r3 = ctx.event;\n i0.ɵɵproperty(\"ngIf\", event_r3.actions);\n }\n}\nfunction CalendarEventActionsComponent_ng_template_2_Template(rf, ctx) {}\nconst _c2 = (a0, a1) => ({\n event: a0,\n view: a1\n});\nconst _c3 = () => ({});\nfunction CalendarEventTitleComponent_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 2);\n i0.ɵɵpipe(1, \"calendarEventTitle\");\n i0.ɵɵpipe(2, \"calendarA11y\");\n }\n if (rf & 2) {\n const event_r1 = ctx.event;\n const view_r2 = ctx.view;\n i0.ɵɵproperty(\"innerHTML\", i0.ɵɵpipeBind3(1, 2, event_r1.title, view_r2, event_r1), i0.ɵɵsanitizeHtml);\n i0.ɵɵattribute(\"aria-hidden\", i0.ɵɵpipeBind2(2, 6, i0.ɵɵpureFunction0(9, _c3), \"hideEventTitle\"));\n }\n}\nfunction CalendarEventTitleComponent_ng_template_2_Template(rf, ctx) {}\nconst _c4 = (a0, a1, a2) => ({\n contents: a0,\n placement: a1,\n event: a2\n});\nfunction CalendarTooltipWindowComponent_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 2);\n i0.ɵɵelement(1, \"div\", 3)(2, \"div\", 4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const contents_r1 = ctx.contents;\n const placement_r2 = ctx.placement;\n i0.ɵɵproperty(\"ngClass\", \"cal-tooltip-\" + placement_r2);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"innerHtml\", contents_r1, i0.ɵɵsanitizeHtml);\n }\n}\nfunction CalendarTooltipWindowComponent_ng_template_2_Template(rf, ctx) {}\nconst _c5 = (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) => ({\n day: a0,\n openDay: a1,\n locale: a2,\n tooltipPlacement: a3,\n highlightDay: a4,\n unhighlightDay: a5,\n eventClicked: a6,\n tooltipTemplate: a7,\n tooltipAppendToBody: a8,\n tooltipDelay: a9,\n trackByEventId: a10,\n validateDrag: a11\n});\nconst _c6 = (a0, a1) => ({\n day: a0,\n locale: a1\n});\nconst _c7 = a0 => ({\n backgroundColor: a0\n});\nconst _c8 = (a0, a1) => ({\n event: a0,\n draggedFrom: a1\n});\nconst _c9 = (a0, a1) => ({\n x: a0,\n y: a1\n});\nconst _c10 = () => ({\n delay: 300,\n delta: 30\n});\nfunction CalendarMonthCellComponent_ng_template_0_span_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 7);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const day_r1 = i0.ɵɵnextContext().day;\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(day_r1.badgeTotal);\n }\n}\nfunction CalendarMonthCellComponent_ng_template_0_div_7_div_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 10);\n i0.ɵɵpipe(1, \"calendarEventTitle\");\n i0.ɵɵpipe(2, \"calendarA11y\");\n i0.ɵɵlistener(\"mouseenter\", function CalendarMonthCellComponent_ng_template_0_div_7_div_1_Template_div_mouseenter_0_listener() {\n const event_r3 = i0.ɵɵrestoreView(_r2).$implicit;\n const highlightDay_r4 = i0.ɵɵnextContext(2).highlightDay;\n return i0.ɵɵresetView(highlightDay_r4.emit({\n event: event_r3\n }));\n })(\"mouseleave\", function CalendarMonthCellComponent_ng_template_0_div_7_div_1_Template_div_mouseleave_0_listener() {\n const event_r3 = i0.ɵɵrestoreView(_r2).$implicit;\n const unhighlightDay_r5 = i0.ɵɵnextContext(2).unhighlightDay;\n return i0.ɵɵresetView(unhighlightDay_r5.emit({\n event: event_r3\n }));\n })(\"mwlClick\", function CalendarMonthCellComponent_ng_template_0_div_7_div_1_Template_div_mwlClick_0_listener($event) {\n const event_r3 = i0.ɵɵrestoreView(_r2).$implicit;\n const eventClicked_r6 = i0.ɵɵnextContext(2).eventClicked;\n return i0.ɵɵresetView(eventClicked_r6.emit({\n event: event_r3,\n sourceEvent: $event\n }));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const event_r3 = ctx.$implicit;\n const ctx_r6 = i0.ɵɵnextContext(2);\n const day_r1 = ctx_r6.day;\n const tooltipPlacement_r8 = ctx_r6.tooltipPlacement;\n const tooltipTemplate_r9 = ctx_r6.tooltipTemplate;\n const tooltipAppendToBody_r10 = ctx_r6.tooltipAppendToBody;\n const tooltipDelay_r11 = ctx_r6.tooltipDelay;\n const validateDrag_r12 = ctx_r6.validateDrag;\n i0.ɵɵclassProp(\"cal-draggable\", event_r3.draggable);\n i0.ɵɵproperty(\"ngStyle\", i0.ɵɵpureFunction1(22, _c7, event_r3.color == null ? null : event_r3.color.primary))(\"ngClass\", event_r3 == null ? null : event_r3.cssClass)(\"mwlCalendarTooltip\", i0.ɵɵpipeBind3(1, 15, event_r3.title, \"monthTooltip\", event_r3))(\"tooltipPlacement\", tooltipPlacement_r8)(\"tooltipEvent\", event_r3)(\"tooltipTemplate\", tooltipTemplate_r9)(\"tooltipAppendToBody\", tooltipAppendToBody_r10)(\"tooltipDelay\", tooltipDelay_r11)(\"dropData\", i0.ɵɵpureFunction2(24, _c8, event_r3, day_r1))(\"dragAxis\", i0.ɵɵpureFunction2(27, _c9, event_r3.draggable, event_r3.draggable))(\"validateDrag\", validateDrag_r12)(\"touchStartLongPress\", i0.ɵɵpureFunction0(30, _c10));\n i0.ɵɵattribute(\"aria-hidden\", i0.ɵɵpipeBind2(2, 19, i0.ɵɵpureFunction0(31, _c3), \"hideMonthCellEvents\"));\n }\n}\nfunction CalendarMonthCellComponent_ng_template_0_div_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 8);\n i0.ɵɵtemplate(1, CalendarMonthCellComponent_ng_template_0_div_7_div_1_Template, 3, 32, \"div\", 9);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r6 = i0.ɵɵnextContext();\n const day_r1 = ctx_r6.day;\n const trackByEventId_r13 = ctx_r6.trackByEventId;\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", day_r1.events)(\"ngForTrackBy\", trackByEventId_r13);\n }\n}\nfunction CalendarMonthCellComponent_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 2);\n i0.ɵɵpipe(1, \"calendarA11y\");\n i0.ɵɵelementStart(2, \"span\", 3);\n i0.ɵɵtemplate(3, CalendarMonthCellComponent_ng_template_0_span_3_Template, 2, 1, \"span\", 4);\n i0.ɵɵelementStart(4, \"span\", 5);\n i0.ɵɵtext(5);\n i0.ɵɵpipe(6, \"calendarDate\");\n i0.ɵɵelementEnd()()();\n i0.ɵɵtemplate(7, CalendarMonthCellComponent_ng_template_0_div_7_Template, 2, 2, \"div\", 6);\n }\n if (rf & 2) {\n const day_r1 = ctx.day;\n const locale_r14 = ctx.locale;\n i0.ɵɵattribute(\"aria-label\", i0.ɵɵpipeBind2(1, 4, i0.ɵɵpureFunction2(11, _c6, day_r1, locale_r14), \"monthCell\"));\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", day_r1.badgeTotal > 0);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(6, 7, day_r1.date, \"monthViewDayNumber\", locale_r14));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", day_r1.events.length > 0);\n }\n}\nfunction CalendarMonthCellComponent_ng_template_2_Template(rf, ctx) {}\nconst _c11 = (a0, a1, a2, a3, a4) => ({\n events: a0,\n eventClicked: a1,\n isOpen: a2,\n trackByEventId: a3,\n validateDrag: a4\n});\nconst _c12 = (a0, a1) => ({\n date: a0,\n locale: a1\n});\nconst _c13 = a0 => ({\n event: a0\n});\nconst _c14 = (a0, a1) => ({\n event: a0,\n locale: a1\n});\nfunction CalendarOpenDayEventsComponent_ng_template_0_div_0_div_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 7);\n i0.ɵɵelement(1, \"span\", 8);\n i0.ɵɵtext(2, \" \");\n i0.ɵɵelementStart(3, \"mwl-calendar-event-title\", 9);\n i0.ɵɵpipe(4, \"calendarA11y\");\n i0.ɵɵlistener(\"mwlClick\", function CalendarOpenDayEventsComponent_ng_template_0_div_0_div_5_Template_mwl_calendar_event_title_mwlClick_3_listener($event) {\n const event_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const eventClicked_r3 = i0.ɵɵnextContext(2).eventClicked;\n return i0.ɵɵresetView(eventClicked_r3.emit({\n event: event_r2,\n sourceEvent: $event\n }));\n })(\"mwlKeydownEnter\", function CalendarOpenDayEventsComponent_ng_template_0_div_0_div_5_Template_mwl_calendar_event_title_mwlKeydownEnter_3_listener($event) {\n const event_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const eventClicked_r3 = i0.ɵɵnextContext(2).eventClicked;\n return i0.ɵɵresetView(eventClicked_r3.emit({\n event: event_r2,\n sourceEvent: $event\n }));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtext(5, \" \");\n i0.ɵɵelement(6, \"mwl-calendar-event-actions\", 10);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const event_r2 = ctx.$implicit;\n const validateDrag_r4 = i0.ɵɵnextContext(2).validateDrag;\n const ctx_r4 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"cal-draggable\", event_r2.draggable);\n i0.ɵɵproperty(\"ngClass\", event_r2 == null ? null : event_r2.cssClass)(\"dropData\", i0.ɵɵpureFunction1(16, _c13, event_r2))(\"dragAxis\", i0.ɵɵpureFunction2(18, _c9, event_r2.draggable, event_r2.draggable))(\"validateDrag\", validateDrag_r4)(\"touchStartLongPress\", i0.ɵɵpureFunction0(21, _c10));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngStyle\", i0.ɵɵpureFunction1(22, _c7, event_r2.color == null ? null : event_r2.color.primary));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"event\", event_r2)(\"customTemplate\", ctx_r4.eventTitleTemplate);\n i0.ɵɵattribute(\"aria-label\", i0.ɵɵpipeBind2(4, 13, i0.ɵɵpureFunction2(24, _c14, event_r2, ctx_r4.locale), \"eventDescription\"));\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"event\", event_r2)(\"customTemplate\", ctx_r4.eventActionsTemplate);\n }\n}\nfunction CalendarOpenDayEventsComponent_ng_template_0_div_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 3);\n i0.ɵɵelement(1, \"span\", 4);\n i0.ɵɵpipe(2, \"calendarA11y\");\n i0.ɵɵelement(3, \"span\", 5);\n i0.ɵɵpipe(4, \"calendarA11y\");\n i0.ɵɵtemplate(5, CalendarOpenDayEventsComponent_ng_template_0_div_0_div_5_Template, 7, 27, \"div\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r5 = i0.ɵɵnextContext();\n const events_r7 = ctx_r5.events;\n const trackByEventId_r8 = ctx_r5.trackByEventId;\n const ctx_r4 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"@collapse\", undefined);\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"aria-label\", i0.ɵɵpipeBind2(2, 5, i0.ɵɵpureFunction2(11, _c12, ctx_r4.date, ctx_r4.locale), \"openDayEventsAlert\"));\n i0.ɵɵadvance(2);\n i0.ɵɵattribute(\"aria-label\", i0.ɵɵpipeBind2(4, 8, i0.ɵɵpureFunction2(14, _c12, ctx_r4.date, ctx_r4.locale), \"openDayEventsLandmark\"));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", events_r7)(\"ngForTrackBy\", trackByEventId_r8);\n }\n}\nfunction CalendarOpenDayEventsComponent_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CalendarOpenDayEventsComponent_ng_template_0_div_0_Template, 6, 17, \"div\", 2);\n }\n if (rf & 2) {\n const isOpen_r9 = ctx.isOpen;\n i0.ɵɵproperty(\"ngIf\", isOpen_r9);\n }\n}\nfunction CalendarOpenDayEventsComponent_ng_template_2_Template(rf, ctx) {}\nconst _c15 = (a0, a1, a2) => ({\n days: a0,\n locale: a1,\n trackByWeekDayHeaderDate: a2\n});\nfunction CalendarMonthViewHeaderComponent_ng_template_0_div_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 4);\n i0.ɵɵlistener(\"click\", function CalendarMonthViewHeaderComponent_ng_template_0_div_1_Template_div_click_0_listener($event) {\n const day_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.columnHeaderClicked.emit({\n isoDayNumber: day_r2.day,\n sourceEvent: $event\n }));\n });\n i0.ɵɵtext(1);\n i0.ɵɵpipe(2, \"calendarDate\");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const day_r2 = ctx.$implicit;\n const locale_r4 = i0.ɵɵnextContext().locale;\n i0.ɵɵclassProp(\"cal-past\", day_r2.isPast)(\"cal-today\", day_r2.isToday)(\"cal-future\", day_r2.isFuture)(\"cal-weekend\", day_r2.isWeekend);\n i0.ɵɵproperty(\"ngClass\", day_r2.cssClass);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", i0.ɵɵpipeBind3(2, 10, day_r2.date, \"monthViewColumnHeader\", locale_r4), \" \");\n }\n}\nfunction CalendarMonthViewHeaderComponent_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 2);\n i0.ɵɵtemplate(1, CalendarMonthViewHeaderComponent_ng_template_0_div_1_Template, 3, 14, \"div\", 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const days_r5 = ctx.days;\n const trackByWeekDayHeaderDate_r6 = ctx.trackByWeekDayHeaderDate;\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", days_r5)(\"ngForTrackBy\", trackByWeekDayHeaderDate_r6);\n }\n}\nfunction CalendarMonthViewHeaderComponent_ng_template_2_Template(rf, ctx) {}\nfunction CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"mwl-calendar-month-cell\", 7);\n i0.ɵɵpipe(1, \"calendarA11y\");\n i0.ɵɵlistener(\"mwlClick\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_mwlClick_0_listener($event) {\n const day_r3 = i0.ɵɵrestoreView(_r2).$implicit;\n const ctx_r3 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r3.dayClicked.emit({\n day: day_r3,\n sourceEvent: $event\n }));\n })(\"mwlKeydownEnter\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_mwlKeydownEnter_0_listener($event) {\n const day_r3 = i0.ɵɵrestoreView(_r2).$implicit;\n const ctx_r3 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r3.dayClicked.emit({\n day: day_r3,\n sourceEvent: $event\n }));\n })(\"highlightDay\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_highlightDay_0_listener($event) {\n i0.ɵɵrestoreView(_r2);\n const ctx_r3 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r3.toggleDayHighlight($event.event, true));\n })(\"unhighlightDay\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_unhighlightDay_0_listener($event) {\n i0.ɵɵrestoreView(_r2);\n const ctx_r3 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r3.toggleDayHighlight($event.event, false));\n })(\"drop\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_drop_0_listener($event) {\n const day_r3 = i0.ɵɵrestoreView(_r2).$implicit;\n const ctx_r3 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r3.eventDropped(day_r3, $event.dropData.event, $event.dropData.draggedFrom));\n })(\"eventClicked\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_eventClicked_0_listener($event) {\n i0.ɵɵrestoreView(_r2);\n const ctx_r3 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r3.eventClicked.emit({\n event: $event.event,\n sourceEvent: $event.sourceEvent\n }));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const day_r3 = ctx.$implicit;\n const ctx_r3 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngClass\", day_r3 == null ? null : day_r3.cssClass)(\"day\", day_r3)(\"openDay\", ctx_r3.openDay)(\"locale\", ctx_r3.locale)(\"tooltipPlacement\", ctx_r3.tooltipPlacement)(\"tooltipAppendToBody\", ctx_r3.tooltipAppendToBody)(\"tooltipTemplate\", ctx_r3.tooltipTemplate)(\"tooltipDelay\", ctx_r3.tooltipDelay)(\"customTemplate\", ctx_r3.cellTemplate)(\"ngStyle\", i0.ɵɵpureFunction1(15, _c7, day_r3.backgroundColor))(\"clickListenerDisabled\", ctx_r3.dayClicked.observers.length === 0);\n i0.ɵɵattribute(\"tabindex\", i0.ɵɵpipeBind2(1, 12, i0.ɵɵpureFunction0(17, _c3), \"monthCellTabIndex\"));\n }\n}\nfunction CalendarMonthViewComponent_div_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\")(1, \"div\", 4);\n i0.ɵɵtemplate(2, CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template, 2, 18, \"mwl-calendar-month-cell\", 5);\n i0.ɵɵpipe(3, \"slice\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"mwl-calendar-open-day-events\", 6);\n i0.ɵɵlistener(\"eventClicked\", function CalendarMonthViewComponent_div_3_Template_mwl_calendar_open_day_events_eventClicked_4_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r3 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r3.eventClicked.emit({\n event: $event.event,\n sourceEvent: $event.sourceEvent\n }));\n })(\"drop\", function CalendarMonthViewComponent_div_3_Template_mwl_calendar_open_day_events_drop_4_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r3 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r3.eventDropped(ctx_r3.openDay, $event.dropData.event, $event.dropData.draggedFrom));\n });\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const rowIndex_r5 = ctx.$implicit;\n const ctx_r3 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", i0.ɵɵpipeBind3(3, 9, ctx_r3.view.days, rowIndex_r5, rowIndex_r5 + ctx_r3.view.totalDaysVisibleInWeek))(\"ngForTrackBy\", ctx_r3.trackByDate);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"locale\", ctx_r3.locale)(\"isOpen\", ctx_r3.openRowIndex === rowIndex_r5)(\"events\", ctx_r3.openDay == null ? null : ctx_r3.openDay.events)(\"date\", ctx_r3.openDay == null ? null : ctx_r3.openDay.date)(\"customTemplate\", ctx_r3.openDayEventsTemplate)(\"eventTitleTemplate\", ctx_r3.eventTitleTemplate)(\"eventActionsTemplate\", ctx_r3.eventActionsTemplate);\n }\n}\nconst _c16 = (a0, a1, a2, a3, a4, a5) => ({\n days: a0,\n locale: a1,\n dayHeaderClicked: a2,\n eventDropped: a3,\n dragEnter: a4,\n trackByWeekDayHeaderDate: a5\n});\nfunction CalendarWeekViewHeaderComponent_ng_template_0_div_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 4);\n i0.ɵɵlistener(\"mwlClick\", function CalendarWeekViewHeaderComponent_ng_template_0_div_1_Template_div_mwlClick_0_listener($event) {\n const day_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const dayHeaderClicked_r3 = i0.ɵɵnextContext().dayHeaderClicked;\n return i0.ɵɵresetView(dayHeaderClicked_r3.emit({\n day: day_r2,\n sourceEvent: $event\n }));\n })(\"drop\", function CalendarWeekViewHeaderComponent_ng_template_0_div_1_Template_div_drop_0_listener($event) {\n const day_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const eventDropped_r4 = i0.ɵɵnextContext().eventDropped;\n return i0.ɵɵresetView(eventDropped_r4.emit({\n event: $event.dropData.event,\n newStart: day_r2.date\n }));\n })(\"dragEnter\", function CalendarWeekViewHeaderComponent_ng_template_0_div_1_Template_div_dragEnter_0_listener() {\n const day_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const dragEnter_r5 = i0.ɵɵnextContext().dragEnter;\n return i0.ɵɵresetView(dragEnter_r5.emit({\n date: day_r2.date\n }));\n });\n i0.ɵɵelementStart(1, \"b\");\n i0.ɵɵtext(2);\n i0.ɵɵpipe(3, \"calendarDate\");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(4, \"br\");\n i0.ɵɵelementStart(5, \"span\");\n i0.ɵɵtext(6);\n i0.ɵɵpipe(7, \"calendarDate\");\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const day_r2 = ctx.$implicit;\n const locale_r6 = i0.ɵɵnextContext().locale;\n i0.ɵɵclassProp(\"cal-past\", day_r2.isPast)(\"cal-today\", day_r2.isToday)(\"cal-future\", day_r2.isFuture)(\"cal-weekend\", day_r2.isWeekend);\n i0.ɵɵproperty(\"ngClass\", day_r2.cssClass);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(3, 11, day_r2.date, \"weekViewColumnHeader\", locale_r6));\n i0.ɵɵadvance(4);\n i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(7, 15, day_r2.date, \"weekViewColumnSubHeader\", locale_r6));\n }\n}\nfunction CalendarWeekViewHeaderComponent_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 2);\n i0.ɵɵtemplate(1, CalendarWeekViewHeaderComponent_ng_template_0_div_1_Template, 8, 19, \"div\", 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const days_r7 = ctx.days;\n const trackByWeekDayHeaderDate_r8 = ctx.trackByWeekDayHeaderDate;\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", days_r7)(\"ngForTrackBy\", trackByWeekDayHeaderDate_r8);\n }\n}\nfunction CalendarWeekViewHeaderComponent_ng_template_2_Template(rf, ctx) {}\nconst _c17 = (a0, a1, a2, a3, a4, a5, a6, a7, a8) => ({\n weekEvent: a0,\n tooltipPlacement: a1,\n eventClicked: a2,\n tooltipTemplate: a3,\n tooltipAppendToBody: a4,\n tooltipDisabled: a5,\n tooltipDelay: a6,\n column: a7,\n daysInWeek: a8\n});\nconst _c18 = (a0, a1, a2) => ({\n color: a0,\n backgroundColor: a1,\n borderColor: a2\n});\nfunction CalendarWeekViewEventComponent_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 2);\n i0.ɵɵpipe(1, \"calendarEventTitle\");\n i0.ɵɵpipe(2, \"calendarA11y\");\n i0.ɵɵlistener(\"mwlClick\", function CalendarWeekViewEventComponent_ng_template_0_Template_div_mwlClick_0_listener($event) {\n const eventClicked_r2 = i0.ɵɵrestoreView(_r1).eventClicked;\n return i0.ɵɵresetView(eventClicked_r2.emit({\n sourceEvent: $event\n }));\n })(\"mwlKeydownEnter\", function CalendarWeekViewEventComponent_ng_template_0_Template_div_mwlKeydownEnter_0_listener($event) {\n const eventClicked_r2 = i0.ɵɵrestoreView(_r1).eventClicked;\n return i0.ɵɵresetView(eventClicked_r2.emit({\n sourceEvent: $event\n }));\n });\n i0.ɵɵelement(3, \"mwl-calendar-event-actions\", 3);\n i0.ɵɵtext(4, \" \");\n i0.ɵɵelement(5, \"mwl-calendar-event-title\", 4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const weekEvent_r3 = ctx.weekEvent;\n const tooltipPlacement_r4 = ctx.tooltipPlacement;\n const tooltipTemplate_r5 = ctx.tooltipTemplate;\n const tooltipAppendToBody_r6 = ctx.tooltipAppendToBody;\n const tooltipDisabled_r7 = ctx.tooltipDisabled;\n const tooltipDelay_r8 = ctx.tooltipDelay;\n const daysInWeek_r9 = ctx.daysInWeek;\n const ctx_r9 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngStyle\", i0.ɵɵpureFunction3(20, _c18, weekEvent_r3.event.color == null ? null : weekEvent_r3.event.color.secondaryText, weekEvent_r3.event.color == null ? null : weekEvent_r3.event.color.secondary, weekEvent_r3.event.color == null ? null : weekEvent_r3.event.color.primary))(\"mwlCalendarTooltip\", !tooltipDisabled_r7 ? i0.ɵɵpipeBind3(1, 13, weekEvent_r3.event.title, daysInWeek_r9 === 1 ? \"dayTooltip\" : \"weekTooltip\", weekEvent_r3.tempEvent || weekEvent_r3.event) : \"\")(\"tooltipPlacement\", tooltipPlacement_r4)(\"tooltipEvent\", weekEvent_r3.tempEvent || weekEvent_r3.event)(\"tooltipTemplate\", tooltipTemplate_r5)(\"tooltipAppendToBody\", tooltipAppendToBody_r6)(\"tooltipDelay\", tooltipDelay_r8);\n i0.ɵɵattribute(\"aria-label\", i0.ɵɵpipeBind2(2, 17, i0.ɵɵpureFunction2(24, _c14, weekEvent_r3.tempEvent || weekEvent_r3.event, ctx_r9.locale), \"eventDescription\"));\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"event\", weekEvent_r3.tempEvent || weekEvent_r3.event)(\"customTemplate\", ctx_r9.eventActionsTemplate);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"event\", weekEvent_r3.tempEvent || weekEvent_r3.event)(\"customTemplate\", ctx_r9.eventTitleTemplate)(\"view\", daysInWeek_r9 === 1 ? \"day\" : \"week\");\n }\n}\nfunction CalendarWeekViewEventComponent_ng_template_2_Template(rf, ctx) {}\nconst _c19 = (a0, a1, a2, a3, a4) => ({\n segment: a0,\n locale: a1,\n segmentHeight: a2,\n isTimeLabel: a3,\n daysInWeek: a4\n});\nfunction CalendarWeekViewHourSegmentComponent_ng_template_0_div_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 4);\n i0.ɵɵtext(1);\n i0.ɵɵpipe(2, \"calendarDate\");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n const segment_r2 = ctx_r0.segment;\n const locale_r3 = ctx_r0.locale;\n const daysInWeek_r4 = ctx_r0.daysInWeek;\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", i0.ɵɵpipeBind3(2, 1, segment_r2.displayDate, daysInWeek_r4 === 1 ? \"dayViewHour\" : \"weekViewHour\", locale_r3), \" \");\n }\n}\nfunction CalendarWeekViewHourSegmentComponent_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 2);\n i0.ɵɵpipe(1, \"calendarA11y\");\n i0.ɵɵtemplate(2, CalendarWeekViewHourSegmentComponent_ng_template_0_div_2_Template, 3, 5, \"div\", 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const segment_r2 = ctx.segment;\n const segmentHeight_r5 = ctx.segmentHeight;\n const isTimeLabel_r6 = ctx.isTimeLabel;\n const daysInWeek_r4 = ctx.daysInWeek;\n i0.ɵɵstyleProp(\"height\", segmentHeight_r5, \"px\");\n i0.ɵɵclassProp(\"cal-hour-start\", segment_r2.isStart)(\"cal-after-hour-start\", !segment_r2.isStart);\n i0.ɵɵproperty(\"ngClass\", segment_r2.cssClass);\n i0.ɵɵattribute(\"aria-hidden\", i0.ɵɵpipeBind2(1, 9, i0.ɵɵpureFunction0(12, _c3), daysInWeek_r4 === 1 ? \"hideDayHourSegment\" : \"hideWeekHourSegment\"));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", isTimeLabel_r6);\n }\n}\nfunction CalendarWeekViewHourSegmentComponent_ng_template_2_Template(rf, ctx) {}\nconst _c20 = (a0, a1, a2, a3, a4, a5, a6) => ({\n columnDate: a0,\n dayStartHour: a1,\n dayStartMinute: a2,\n dayEndHour: a3,\n dayEndMinute: a4,\n isVisible: a5,\n topPx: a6\n});\nfunction CalendarWeekViewCurrentTimeMarkerComponent_ng_template_0_div_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 3);\n }\n if (rf & 2) {\n const topPx_r1 = i0.ɵɵnextContext().topPx;\n i0.ɵɵstyleProp(\"top\", topPx_r1, \"px\");\n }\n}\nfunction CalendarWeekViewCurrentTimeMarkerComponent_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CalendarWeekViewCurrentTimeMarkerComponent_ng_template_0_div_0_Template, 1, 2, \"div\", 2);\n }\n if (rf & 2) {\n const isVisible_r2 = ctx.isVisible;\n i0.ɵɵproperty(\"ngIf\", isVisible_r2);\n }\n}\nfunction CalendarWeekViewCurrentTimeMarkerComponent_ng_template_2_Template(rf, ctx) {}\nconst _c21 = (a0, a1) => ({\n left: a0,\n right: a1\n});\nconst _c22 = (a0, a1) => ({\n event: a0,\n calendarId: a1\n});\nconst _c23 = a0 => ({\n x: a0\n});\nconst _c24 = () => ({\n left: true\n});\nconst _c25 = () => ({\n right: true\n});\nconst _c26 = (a0, a1, a2, a3) => ({\n left: a0,\n right: a1,\n top: a2,\n bottom: a3\n});\nconst _c27 = () => ({\n left: true,\n top: true\n});\nconst _c28 = () => ({\n right: true,\n bottom: true\n});\nfunction CalendarWeekViewComponent_div_2_ng_container_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nfunction CalendarWeekViewComponent_div_2_div_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 17);\n i0.ɵɵlistener(\"drop\", function CalendarWeekViewComponent_div_2_div_5_Template_div_drop_0_listener($event) {\n const day_r5 = i0.ɵɵrestoreView(_r4).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.eventDropped($event, day_r5.date, true));\n })(\"dragEnter\", function CalendarWeekViewComponent_div_2_div_5_Template_div_dragEnter_0_listener() {\n const day_r5 = i0.ɵɵrestoreView(_r4).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.dateDragEnter(day_r5.date));\n });\n i0.ɵɵelementEnd();\n }\n}\nfunction CalendarWeekViewComponent_div_2_div_6_div_2_div_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 24);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"resizeEdges\", i0.ɵɵpureFunction0(1, _c24));\n }\n}\nfunction CalendarWeekViewComponent_div_2_div_6_div_2_div_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 25);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"resizeEdges\", i0.ɵɵpureFunction0(1, _c25));\n }\n}\nfunction CalendarWeekViewComponent_div_2_div_6_div_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r6 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 20, 3);\n i0.ɵɵlistener(\"resizeStart\", function CalendarWeekViewComponent_div_2_div_6_div_2_Template_div_resizeStart_0_listener($event) {\n const allDayEvent_r7 = i0.ɵɵrestoreView(_r6).$implicit;\n i0.ɵɵnextContext();\n const eventRowContainer_r8 = i0.ɵɵreference(1);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.allDayEventResizeStarted(eventRowContainer_r8, allDayEvent_r7, $event));\n })(\"resizing\", function CalendarWeekViewComponent_div_2_div_6_div_2_Template_div_resizing_0_listener($event) {\n const allDayEvent_r7 = i0.ɵɵrestoreView(_r6).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.allDayEventResizing(allDayEvent_r7, $event, ctx_r2.dayColumnWidth));\n })(\"resizeEnd\", function CalendarWeekViewComponent_div_2_div_6_div_2_Template_div_resizeEnd_0_listener() {\n const allDayEvent_r7 = i0.ɵɵrestoreView(_r6).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.allDayEventResizeEnded(allDayEvent_r7));\n })(\"dragStart\", function CalendarWeekViewComponent_div_2_div_6_div_2_Template_div_dragStart_0_listener() {\n const allDayEvent_r7 = i0.ɵɵrestoreView(_r6).$implicit;\n const event_r9 = i0.ɵɵreference(1);\n i0.ɵɵnextContext();\n const eventRowContainer_r8 = i0.ɵɵreference(1);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.dragStarted(eventRowContainer_r8, event_r9, allDayEvent_r7, false));\n })(\"dragging\", function CalendarWeekViewComponent_div_2_div_6_div_2_Template_div_dragging_0_listener() {\n i0.ɵɵrestoreView(_r6);\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.allDayEventDragMove());\n })(\"dragEnd\", function CalendarWeekViewComponent_div_2_div_6_div_2_Template_div_dragEnd_0_listener($event) {\n const allDayEvent_r7 = i0.ɵɵrestoreView(_r6).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.dragEnded(allDayEvent_r7, $event, ctx_r2.dayColumnWidth));\n });\n i0.ɵɵtemplate(2, CalendarWeekViewComponent_div_2_div_6_div_2_div_2_Template, 1, 2, \"div\", 21);\n i0.ɵɵelementStart(3, \"mwl-calendar-week-view-event\", 22);\n i0.ɵɵlistener(\"eventClicked\", function CalendarWeekViewComponent_div_2_div_6_div_2_Template_mwl_calendar_week_view_event_eventClicked_3_listener($event) {\n const allDayEvent_r7 = i0.ɵɵrestoreView(_r6).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.eventClicked.emit({\n event: allDayEvent_r7.event,\n sourceEvent: $event.sourceEvent\n }));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(4, CalendarWeekViewComponent_div_2_div_6_div_2_div_4_Template, 1, 2, \"div\", 23);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const allDayEvent_r7 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵstyleProp(\"width\", 100 / ctx_r2.days.length * allDayEvent_r7.span, \"%\")(\"margin-left\", ctx_r2.rtl ? null : 100 / ctx_r2.days.length * allDayEvent_r7.offset, \"%\")(\"margin-right\", ctx_r2.rtl ? 100 / ctx_r2.days.length * allDayEvent_r7.offset : null, \"%\");\n i0.ɵɵclassProp(\"cal-draggable\", allDayEvent_r7.event.draggable && ctx_r2.allDayEventResizes.size === 0)(\"cal-starts-within-week\", !allDayEvent_r7.startsBeforeWeek)(\"cal-ends-within-week\", !allDayEvent_r7.endsAfterWeek);\n i0.ɵɵproperty(\"ngClass\", allDayEvent_r7.event == null ? null : allDayEvent_r7.event.cssClass)(\"resizeCursors\", ctx_r2.resizeCursors)(\"resizeSnapGrid\", i0.ɵɵpureFunction2(33, _c21, ctx_r2.dayColumnWidth, ctx_r2.dayColumnWidth))(\"validateResize\", ctx_r2.validateResize)(\"dropData\", i0.ɵɵpureFunction2(36, _c22, allDayEvent_r7.event, ctx_r2.calendarId))(\"dragAxis\", i0.ɵɵpureFunction2(39, _c9, allDayEvent_r7.event.draggable && ctx_r2.allDayEventResizes.size === 0, !ctx_r2.snapDraggedEvents && allDayEvent_r7.event.draggable && ctx_r2.allDayEventResizes.size === 0))(\"dragSnapGrid\", ctx_r2.snapDraggedEvents ? i0.ɵɵpureFunction1(42, _c23, ctx_r2.dayColumnWidth) : i0.ɵɵpureFunction0(44, _c3))(\"validateDrag\", ctx_r2.validateDrag)(\"touchStartLongPress\", i0.ɵɵpureFunction0(45, _c10));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", (allDayEvent_r7.event == null ? null : allDayEvent_r7.event.resizable == null ? null : allDayEvent_r7.event.resizable.beforeStart) && !allDayEvent_r7.startsBeforeWeek);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"locale\", ctx_r2.locale)(\"weekEvent\", allDayEvent_r7)(\"tooltipPlacement\", ctx_r2.tooltipPlacement)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"tooltipAppendToBody\", ctx_r2.tooltipAppendToBody)(\"tooltipDelay\", ctx_r2.tooltipDelay)(\"customTemplate\", ctx_r2.eventTemplate)(\"eventTitleTemplate\", ctx_r2.eventTitleTemplate)(\"eventActionsTemplate\", ctx_r2.eventActionsTemplate)(\"daysInWeek\", ctx_r2.daysInWeek);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", (allDayEvent_r7.event == null ? null : allDayEvent_r7.event.resizable == null ? null : allDayEvent_r7.event.resizable.afterEnd) && !allDayEvent_r7.endsAfterWeek);\n }\n}\nfunction CalendarWeekViewComponent_div_2_div_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 18, 2);\n i0.ɵɵtemplate(2, CalendarWeekViewComponent_div_2_div_6_div_2_Template, 5, 46, \"div\", 19);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const eventRow_r10 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", eventRow_r10.row)(\"ngForTrackBy\", ctx_r2.trackByWeekAllDayEvent);\n }\n}\nfunction CalendarWeekViewComponent_div_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 12, 1);\n i0.ɵɵlistener(\"dragEnter\", function CalendarWeekViewComponent_div_2_Template_div_dragEnter_0_listener() {\n i0.ɵɵrestoreView(_r2);\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.dragEnter(\"allDay\"));\n })(\"dragLeave\", function CalendarWeekViewComponent_div_2_Template_div_dragLeave_0_listener() {\n i0.ɵɵrestoreView(_r2);\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.dragLeave(\"allDay\"));\n });\n i0.ɵɵelementStart(2, \"div\", 10)(3, \"div\", 13);\n i0.ɵɵtemplate(4, CalendarWeekViewComponent_div_2_ng_container_4_Template, 1, 0, \"ng-container\", 14);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(5, CalendarWeekViewComponent_div_2_div_5_Template, 1, 0, \"div\", 15);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(6, CalendarWeekViewComponent_div_2_div_6_Template, 3, 2, \"div\", 16);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵadvance(4);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.allDayEventsLabelTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.days)(\"ngForTrackBy\", ctx_r2.trackByWeekDayHeaderDate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.view.allDayEventRows)(\"ngForTrackBy\", ctx_r2.trackById);\n }\n}\nfunction CalendarWeekViewComponent_div_4_div_1_mwl_calendar_week_view_hour_segment_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"mwl-calendar-week-view-hour-segment\", 29);\n }\n if (rf & 2) {\n const segment_r11 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵstyleProp(\"height\", ctx_r2.hourSegmentHeight, \"px\");\n i0.ɵɵproperty(\"segment\", segment_r11)(\"segmentHeight\", ctx_r2.hourSegmentHeight)(\"locale\", ctx_r2.locale)(\"customTemplate\", ctx_r2.hourSegmentTemplate)(\"isTimeLabel\", true)(\"daysInWeek\", ctx_r2.daysInWeek);\n }\n}\nfunction CalendarWeekViewComponent_div_4_div_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 27);\n i0.ɵɵtemplate(1, CalendarWeekViewComponent_div_4_div_1_mwl_calendar_week_view_hour_segment_1_Template, 1, 8, \"mwl-calendar-week-view-hour-segment\", 28);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const hour_r12 = ctx.$implicit;\n const odd_r13 = ctx.odd;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵclassProp(\"cal-hour-odd\", odd_r13);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", hour_r12.segments)(\"ngForTrackBy\", ctx_r2.trackByHourSegment);\n }\n}\nfunction CalendarWeekViewComponent_div_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 13);\n i0.ɵɵtemplate(1, CalendarWeekViewComponent_div_4_div_1_Template, 2, 4, \"div\", 26);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.view.hourColumns[0].hours)(\"ngForTrackBy\", ctx_r2.trackByHour);\n }\n}\nfunction CalendarWeekViewComponent_div_7_div_3_div_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 24);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"resizeEdges\", i0.ɵɵpureFunction0(1, _c27));\n }\n}\nfunction CalendarWeekViewComponent_div_7_div_3_ng_template_3_Template(rf, ctx) {}\nfunction CalendarWeekViewComponent_div_7_div_3_ng_template_4_Template(rf, ctx) {\n if (rf & 1) {\n const _r18 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"mwl-calendar-week-view-event\", 36);\n i0.ɵɵlistener(\"eventClicked\", function CalendarWeekViewComponent_div_7_div_3_ng_template_4_Template_mwl_calendar_week_view_event_eventClicked_0_listener($event) {\n i0.ɵɵrestoreView(_r18);\n const timeEvent_r15 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.eventClicked.emit({\n event: timeEvent_r15.event,\n sourceEvent: $event.sourceEvent\n }));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const timeEvent_r15 = i0.ɵɵnextContext().$implicit;\n const column_r19 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"locale\", ctx_r2.locale)(\"weekEvent\", timeEvent_r15)(\"tooltipPlacement\", ctx_r2.tooltipPlacement)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"tooltipAppendToBody\", ctx_r2.tooltipAppendToBody)(\"tooltipDisabled\", ctx_r2.dragActive || ctx_r2.timeEventResizes.size > 0)(\"tooltipDelay\", ctx_r2.tooltipDelay)(\"customTemplate\", ctx_r2.eventTemplate)(\"eventTitleTemplate\", ctx_r2.eventTitleTemplate)(\"eventActionsTemplate\", ctx_r2.eventActionsTemplate)(\"column\", column_r19)(\"daysInWeek\", ctx_r2.daysInWeek);\n }\n}\nfunction CalendarWeekViewComponent_div_7_div_3_div_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 25);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"resizeEdges\", i0.ɵɵpureFunction0(1, _c28));\n }\n}\nfunction CalendarWeekViewComponent_div_7_div_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r14 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 34, 3);\n i0.ɵɵlistener(\"resizeStart\", function CalendarWeekViewComponent_div_7_div_3_Template_div_resizeStart_0_listener($event) {\n const timeEvent_r15 = i0.ɵɵrestoreView(_r14).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n const dayColumns_r16 = i0.ɵɵreference(6);\n return i0.ɵɵresetView(ctx_r2.timeEventResizeStarted(dayColumns_r16, timeEvent_r15, $event));\n })(\"resizing\", function CalendarWeekViewComponent_div_7_div_3_Template_div_resizing_0_listener($event) {\n const timeEvent_r15 = i0.ɵɵrestoreView(_r14).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.timeEventResizing(timeEvent_r15, $event));\n })(\"resizeEnd\", function CalendarWeekViewComponent_div_7_div_3_Template_div_resizeEnd_0_listener() {\n const timeEvent_r15 = i0.ɵɵrestoreView(_r14).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.timeEventResizeEnded(timeEvent_r15));\n })(\"dragStart\", function CalendarWeekViewComponent_div_7_div_3_Template_div_dragStart_0_listener() {\n const timeEvent_r15 = i0.ɵɵrestoreView(_r14).$implicit;\n const event_r17 = i0.ɵɵreference(1);\n const ctx_r2 = i0.ɵɵnextContext(2);\n const dayColumns_r16 = i0.ɵɵreference(6);\n return i0.ɵɵresetView(ctx_r2.dragStarted(dayColumns_r16, event_r17, timeEvent_r15, true));\n })(\"dragging\", function CalendarWeekViewComponent_div_7_div_3_Template_div_dragging_0_listener($event) {\n const timeEvent_r15 = i0.ɵɵrestoreView(_r14).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.dragMove(timeEvent_r15, $event));\n })(\"dragEnd\", function CalendarWeekViewComponent_div_7_div_3_Template_div_dragEnd_0_listener($event) {\n const timeEvent_r15 = i0.ɵɵrestoreView(_r14).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.dragEnded(timeEvent_r15, $event, ctx_r2.dayColumnWidth, true));\n });\n i0.ɵɵtemplate(2, CalendarWeekViewComponent_div_7_div_3_div_2_Template, 1, 2, \"div\", 21)(3, CalendarWeekViewComponent_div_7_div_3_ng_template_3_Template, 0, 0, \"ng-template\", 35)(4, CalendarWeekViewComponent_div_7_div_3_ng_template_4_Template, 1, 12, \"ng-template\", null, 4, i0.ɵɵtemplateRefExtractor)(6, CalendarWeekViewComponent_div_7_div_3_div_6_Template, 1, 2, \"div\", 23);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const timeEvent_r15 = ctx.$implicit;\n const weekEventTemplate_r20 = i0.ɵɵreference(5);\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵstyleProp(\"top\", timeEvent_r15.top, \"px\")(\"height\", timeEvent_r15.height, \"px\")(\"left\", timeEvent_r15.left, \"%\")(\"width\", timeEvent_r15.width, \"%\");\n i0.ɵɵclassProp(\"cal-draggable\", timeEvent_r15.event.draggable && ctx_r2.timeEventResizes.size === 0)(\"cal-starts-within-day\", !timeEvent_r15.startsBeforeDay)(\"cal-ends-within-day\", !timeEvent_r15.endsAfterDay);\n i0.ɵɵproperty(\"ngClass\", timeEvent_r15.event.cssClass)(\"hidden\", timeEvent_r15.height === 0 && timeEvent_r15.width === 0)(\"resizeCursors\", ctx_r2.resizeCursors)(\"resizeSnapGrid\", i0.ɵɵpureFunction4(30, _c26, ctx_r2.dayColumnWidth, ctx_r2.dayColumnWidth, ctx_r2.eventSnapSize || ctx_r2.hourSegmentHeight, ctx_r2.eventSnapSize || ctx_r2.hourSegmentHeight))(\"validateResize\", ctx_r2.validateResize)(\"allowNegativeResizes\", true)(\"dropData\", i0.ɵɵpureFunction2(35, _c22, timeEvent_r15.event, ctx_r2.calendarId))(\"dragAxis\", i0.ɵɵpureFunction2(38, _c9, timeEvent_r15.event.draggable && ctx_r2.timeEventResizes.size === 0, timeEvent_r15.event.draggable && ctx_r2.timeEventResizes.size === 0))(\"dragSnapGrid\", ctx_r2.snapDraggedEvents ? i0.ɵɵpureFunction2(41, _c9, ctx_r2.dayColumnWidth, ctx_r2.eventSnapSize || ctx_r2.hourSegmentHeight) : i0.ɵɵpureFunction0(44, _c3))(\"touchStartLongPress\", i0.ɵɵpureFunction0(45, _c10))(\"ghostDragEnabled\", !ctx_r2.snapDraggedEvents)(\"ghostElementTemplate\", weekEventTemplate_r20)(\"validateDrag\", ctx_r2.validateDrag);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", (timeEvent_r15.event == null ? null : timeEvent_r15.event.resizable == null ? null : timeEvent_r15.event.resizable.beforeStart) && !timeEvent_r15.startsBeforeDay);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", weekEventTemplate_r20);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", (timeEvent_r15.event == null ? null : timeEvent_r15.event.resizable == null ? null : timeEvent_r15.event.resizable.afterEnd) && !timeEvent_r15.endsAfterDay);\n }\n}\nfunction CalendarWeekViewComponent_div_7_div_4_mwl_calendar_week_view_hour_segment_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r21 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"mwl-calendar-week-view-hour-segment\", 38);\n i0.ɵɵlistener(\"mwlClick\", function CalendarWeekViewComponent_div_7_div_4_mwl_calendar_week_view_hour_segment_1_Template_mwl_calendar_week_view_hour_segment_mwlClick_0_listener($event) {\n const segment_r22 = i0.ɵɵrestoreView(_r21).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.hourSegmentClicked.emit({\n date: segment_r22.date,\n sourceEvent: $event\n }));\n })(\"drop\", function CalendarWeekViewComponent_div_7_div_4_mwl_calendar_week_view_hour_segment_1_Template_mwl_calendar_week_view_hour_segment_drop_0_listener($event) {\n const segment_r22 = i0.ɵɵrestoreView(_r21).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.eventDropped($event, segment_r22.date, false));\n })(\"dragEnter\", function CalendarWeekViewComponent_div_7_div_4_mwl_calendar_week_view_hour_segment_1_Template_mwl_calendar_week_view_hour_segment_dragEnter_0_listener() {\n const segment_r22 = i0.ɵɵrestoreView(_r21).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.dateDragEnter(segment_r22.date));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const segment_r22 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵstyleProp(\"height\", ctx_r2.hourSegmentHeight, \"px\");\n i0.ɵɵproperty(\"segment\", segment_r22)(\"segmentHeight\", ctx_r2.hourSegmentHeight)(\"locale\", ctx_r2.locale)(\"customTemplate\", ctx_r2.hourSegmentTemplate)(\"daysInWeek\", ctx_r2.daysInWeek)(\"clickListenerDisabled\", ctx_r2.hourSegmentClicked.observers.length === 0)(\"dragOverClass\", !ctx_r2.dragActive || !ctx_r2.snapDraggedEvents ? \"cal-drag-over\" : null)(\"isTimeLabel\", ctx_r2.daysInWeek === 1);\n }\n}\nfunction CalendarWeekViewComponent_div_7_div_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 27);\n i0.ɵɵtemplate(1, CalendarWeekViewComponent_div_7_div_4_mwl_calendar_week_view_hour_segment_1_Template, 1, 10, \"mwl-calendar-week-view-hour-segment\", 37);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const hour_r23 = ctx.$implicit;\n const odd_r24 = ctx.odd;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵclassProp(\"cal-hour-odd\", odd_r24);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", hour_r23.segments)(\"ngForTrackBy\", ctx_r2.trackByHourSegment);\n }\n}\nfunction CalendarWeekViewComponent_div_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 30);\n i0.ɵɵelement(1, \"mwl-calendar-week-view-current-time-marker\", 31);\n i0.ɵɵelementStart(2, \"div\", 32);\n i0.ɵɵtemplate(3, CalendarWeekViewComponent_div_7_div_3_Template, 7, 46, \"div\", 33);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(4, CalendarWeekViewComponent_div_7_div_4_Template, 2, 4, \"div\", 26);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const column_r19 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"columnDate\", column_r19.date)(\"dayStartHour\", ctx_r2.dayStartHour)(\"dayStartMinute\", ctx_r2.dayStartMinute)(\"dayEndHour\", ctx_r2.dayEndHour)(\"dayEndMinute\", ctx_r2.dayEndMinute)(\"hourSegments\", ctx_r2.hourSegments)(\"hourDuration\", ctx_r2.hourDuration)(\"hourSegmentHeight\", ctx_r2.hourSegmentHeight)(\"customTemplate\", ctx_r2.currentTimeMarkerTemplate);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", column_r19.events)(\"ngForTrackBy\", ctx_r2.trackByWeekTimeEvent);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", column_r19.hours)(\"ngForTrackBy\", ctx_r2.trackByHour);\n }\n}\nexport { DAYS_OF_WEEK } from 'calendar-utils';\nimport * as i2 from 'angular-draggable-droppable';\nimport { DragAndDropModule } from 'angular-draggable-droppable';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i4 from 'angular-resizable-element';\nimport { ResizableModule } from 'angular-resizable-element';\nlet ClickDirective = /*#__PURE__*/(() => {\n class ClickDirective {\n constructor(renderer, elm, document) {\n this.renderer = renderer;\n this.elm = elm;\n this.document = document;\n this.clickListenerDisabled = false;\n this.click = new EventEmitter(); // eslint-disable-line\n this.destroy$ = new Subject();\n }\n ngOnInit() {\n if (!this.clickListenerDisabled) {\n this.listen().pipe(takeUntil(this.destroy$)).subscribe(event => {\n event.stopPropagation();\n this.click.emit(event);\n });\n }\n }\n ngOnDestroy() {\n this.destroy$.next();\n }\n listen() {\n return new Observable(observer => {\n return this.renderer.listen(this.elm.nativeElement, 'click', event => {\n observer.next(event);\n });\n });\n }\n }\n ClickDirective.ɵfac = function ClickDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ClickDirective)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(DOCUMENT));\n };\n ClickDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ClickDirective,\n selectors: [[\"\", \"mwlClick\", \"\"]],\n inputs: {\n clickListenerDisabled: \"clickListenerDisabled\"\n },\n outputs: {\n click: \"mwlClick\"\n }\n });\n return ClickDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet KeydownEnterDirective = /*#__PURE__*/(() => {\n class KeydownEnterDirective {\n constructor(host, ngZone, renderer) {\n this.host = host;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.keydown = new EventEmitter(); // eslint-disable-line\n this.keydownListener = null;\n }\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n this.keydownListener = this.renderer.listen(this.host.nativeElement, 'keydown', event => {\n if (event.keyCode === 13 || event.which === 13 || event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.ngZone.run(() => {\n this.keydown.emit(event);\n });\n }\n });\n });\n }\n ngOnDestroy() {\n if (this.keydownListener !== null) {\n this.keydownListener();\n this.keydownListener = null;\n }\n }\n }\n KeydownEnterDirective.ɵfac = function KeydownEnterDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || KeydownEnterDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n KeydownEnterDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: KeydownEnterDirective,\n selectors: [[\"\", \"mwlKeydownEnter\", \"\"]],\n outputs: {\n keydown: \"mwlKeydownEnter\"\n }\n });\n return KeydownEnterDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * This class is responsible for adding accessibility to the calendar.\n * You may override any of its methods via angulars DI to suit your requirements.\n * For example:\n *\n * ```typescript\n * import { A11yParams, CalendarA11y } from 'angular-calendar';\n * import { formatDate, I18nPluralPipe } from '@angular/common';\n * import { Injectable } from '@angular/core';\n *\n * // adding your own a11y params\n * export interface CustomA11yParams extends A11yParams {\n * isDrSuess?: boolean;\n * }\n *\n * @Injectable()\n * export class CustomCalendarA11y extends CalendarA11y {\n * constructor(protected i18nPlural: I18nPluralPipe) {\n * super(i18nPlural);\n * }\n *\n * // overriding a function\n * public openDayEventsLandmark({ date, locale, isDrSuess }: CustomA11yParams): string {\n * if (isDrSuess) {\n * return `\n * ${formatDate(date, 'EEEE MMMM d', locale)}\n * Today you are you! That is truer than true! There is no one alive\n * who is you-er than you!\n * `;\n * }\n * }\n * }\n *\n * // in your component that uses the calendar\n * providers: [{\n * provide: CalendarA11y,\n * useClass: CustomCalendarA11y\n * }]\n * ```\n */\nlet CalendarA11y = /*#__PURE__*/(() => {\n class CalendarA11y {\n constructor(i18nPlural) {\n this.i18nPlural = i18nPlural;\n }\n /**\n * Aria label for the badges/date of a cell\n * @example: `Saturday October 19 1 event click to expand`\n */\n monthCell({\n day,\n locale\n }) {\n if (day.badgeTotal > 0) {\n return `\n ${formatDate(day.date, 'EEEE MMMM d', locale)},\n ${this.i18nPlural.transform(day.badgeTotal, {\n '=0': 'No events',\n '=1': 'One event',\n other: '# events'\n })},\n click to expand\n `;\n } else {\n return `${formatDate(day.date, 'EEEE MMMM d', locale)}`;\n }\n }\n /**\n * Aria label for the open day events start landmark\n * @example: `Saturday October 19 expanded view`\n */\n openDayEventsLandmark({\n date,\n locale\n }) {\n return `\n Beginning of expanded view for ${formatDate(date, 'EEEE MMMM dd', locale)}\n `;\n }\n /**\n * Aria label for alert that a day in the month view was expanded\n * @example: `Saturday October 19 expanded`\n */\n openDayEventsAlert({\n date,\n locale\n }) {\n return `${formatDate(date, 'EEEE MMMM dd', locale)} expanded`;\n }\n /**\n * Descriptive aria label for an event\n * @example: `Saturday October 19th, Scott's Pizza Party, from 11:00am to 5:00pm`\n */\n eventDescription({\n event,\n locale\n }) {\n if (event.allDay === true) {\n return this.allDayEventDescription({\n event,\n locale\n });\n }\n const aria = `\n ${formatDate(event.start, 'EEEE MMMM dd', locale)},\n ${event.title}, from ${formatDate(event.start, 'hh:mm a', locale)}\n `;\n if (event.end) {\n return aria + ` to ${formatDate(event.end, 'hh:mm a', locale)}`;\n }\n return aria;\n }\n /**\n * Descriptive aria label for an all day event\n * @example:\n * `Scott's Party, event spans multiple days: start time October 19 5:00pm, no stop time`\n */\n allDayEventDescription({\n event,\n locale\n }) {\n const aria = `\n ${event.title}, event spans multiple days:\n start time ${formatDate(event.start, 'MMMM dd hh:mm a', locale)}\n `;\n if (event.end) {\n return aria + `, stop time ${formatDate(event.end, 'MMMM d hh:mm a', locale)}`;\n }\n return aria + `, no stop time`;\n }\n /**\n * Aria label for the calendar event actions icons\n * @returns 'Edit' for fa-pencil icons, and 'Delete' for fa-times icons\n */\n actionButtonLabel({\n action\n }) {\n return action.a11yLabel;\n }\n /**\n * @returns {number} Tab index to be given to month cells\n */\n monthCellTabIndex() {\n return 0;\n }\n /**\n * @returns true if the events inside the month cell should be aria-hidden\n */\n hideMonthCellEvents() {\n return true;\n }\n /**\n * @returns true if event titles should be aria-hidden (global)\n */\n hideEventTitle() {\n return true;\n }\n /**\n * @returns true if hour segments in the week view should be aria-hidden\n */\n hideWeekHourSegment() {\n return true;\n }\n /**\n * @returns true if hour segments in the day view should be aria-hidden\n */\n hideDayHourSegment() {\n return true;\n }\n }\n CalendarA11y.ɵfac = function CalendarA11y_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarA11y)(i0.ɵɵinject(i1.I18nPluralPipe));\n };\n CalendarA11y.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CalendarA11y,\n factory: CalendarA11y.ɵfac\n });\n return CalendarA11y;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * This pipe is primarily for rendering aria labels. Example usage:\n * ```typescript\n * // where `myEvent` is a `CalendarEvent` and myLocale is a locale identifier\n * {{ { event: myEvent, locale: myLocale } | calendarA11y: 'eventDescription' }}\n * ```\n */\nlet CalendarA11yPipe = /*#__PURE__*/(() => {\n class CalendarA11yPipe {\n constructor(calendarA11y, locale) {\n this.calendarA11y = calendarA11y;\n this.locale = locale;\n }\n transform(a11yParams, method) {\n a11yParams.locale = a11yParams.locale || this.locale;\n if (typeof this.calendarA11y[method] === 'undefined') {\n const allowedMethods = Object.getOwnPropertyNames(Object.getPrototypeOf(CalendarA11y.prototype)).filter(iMethod => iMethod !== 'constructor');\n throw new Error(`${method} is not a valid a11y method. Can only be one of ${allowedMethods.join(', ')}`);\n }\n return this.calendarA11y[method](a11yParams);\n }\n }\n CalendarA11yPipe.ɵfac = function CalendarA11yPipe_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarA11yPipe)(i0.ɵɵdirectiveInject(CalendarA11y, 16), i0.ɵɵdirectiveInject(LOCALE_ID, 16));\n };\n CalendarA11yPipe.ɵpipe = /* @__PURE__ */i0.ɵɵdefinePipe({\n name: \"calendarA11y\",\n type: CalendarA11yPipe,\n pure: true\n });\n return CalendarA11yPipe;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CalendarEventActionsComponent = /*#__PURE__*/(() => {\n class CalendarEventActionsComponent {\n constructor() {\n this.trackByActionId = (index, action) => action.id ? action.id : action;\n }\n }\n CalendarEventActionsComponent.ɵfac = function CalendarEventActionsComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarEventActionsComponent)();\n };\n CalendarEventActionsComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CalendarEventActionsComponent,\n selectors: [[\"mwl-calendar-event-actions\"]],\n inputs: {\n event: \"event\",\n customTemplate: \"customTemplate\"\n },\n decls: 3,\n vars: 5,\n consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"class\", \"cal-event-actions\", 4, \"ngIf\"], [1, \"cal-event-actions\"], [\"class\", \"cal-event-action\", \"href\", \"javascript:;\", \"tabindex\", \"0\", \"role\", \"button\", 3, \"ngClass\", \"innerHtml\", \"mwlClick\", \"mwlKeydownEnter\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"href\", \"javascript:;\", \"tabindex\", \"0\", \"role\", \"button\", 1, \"cal-event-action\", 3, \"mwlClick\", \"mwlKeydownEnter\", \"ngClass\", \"innerHtml\"]],\n template: function CalendarEventActionsComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CalendarEventActionsComponent_ng_template_0_Template, 1, 1, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(2, CalendarEventActionsComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n }\n if (rf & 2) {\n const defaultTemplate_r6 = i0.ɵɵreference(1);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || defaultTemplate_r6)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(2, _c0, ctx.event, ctx.trackByActionId));\n }\n },\n dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, ClickDirective, KeydownEnterDirective, CalendarA11yPipe],\n encapsulation: 2\n });\n return CalendarEventActionsComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * This class is responsible for displaying all event titles within the calendar. You may override any of its methods via angulars DI to suit your requirements. For example:\n *\n * ```typescript\n * import { Injectable } from '@angular/core';\n * import { CalendarEventTitleFormatter, CalendarEvent } from 'angular-calendar';\n *\n * @Injectable()\n * class CustomEventTitleFormatter extends CalendarEventTitleFormatter {\n *\n * month(event: CalendarEvent): string {\n * return `Custom prefix: ${event.title}`;\n * }\n *\n * }\n *\n * // in your component\n * providers: [{\n * provide: CalendarEventTitleFormatter,\n * useClass: CustomEventTitleFormatter\n * }]\n * ```\n */\nclass CalendarEventTitleFormatter {\n /**\n * The month view event title.\n */\n month(event, title) {\n return event.title;\n }\n /**\n * The month view event tooltip. Return a falsey value from this to disable the tooltip.\n */\n monthTooltip(event, title) {\n return event.title;\n }\n /**\n * The week view event title.\n */\n week(event, title) {\n return event.title;\n }\n /**\n * The week view event tooltip. Return a falsey value from this to disable the tooltip.\n */\n weekTooltip(event, title) {\n return event.title;\n }\n /**\n * The day view event title.\n */\n day(event, title) {\n return event.title;\n }\n /**\n * The day view event tooltip. Return a falsey value from this to disable the tooltip.\n */\n dayTooltip(event, title) {\n return event.title;\n }\n}\nlet CalendarEventTitlePipe = /*#__PURE__*/(() => {\n class CalendarEventTitlePipe {\n constructor(calendarEventTitle) {\n this.calendarEventTitle = calendarEventTitle;\n }\n transform(title, titleType, event) {\n return this.calendarEventTitle[titleType](event, title);\n }\n }\n CalendarEventTitlePipe.ɵfac = function CalendarEventTitlePipe_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarEventTitlePipe)(i0.ɵɵdirectiveInject(CalendarEventTitleFormatter, 16));\n };\n CalendarEventTitlePipe.ɵpipe = /* @__PURE__ */i0.ɵɵdefinePipe({\n name: \"calendarEventTitle\",\n type: CalendarEventTitlePipe,\n pure: true\n });\n return CalendarEventTitlePipe;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CalendarEventTitleComponent = /*#__PURE__*/(() => {\n class CalendarEventTitleComponent {}\n CalendarEventTitleComponent.ɵfac = function CalendarEventTitleComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarEventTitleComponent)();\n };\n CalendarEventTitleComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CalendarEventTitleComponent,\n selectors: [[\"mwl-calendar-event-title\"]],\n inputs: {\n event: \"event\",\n customTemplate: \"customTemplate\",\n view: \"view\"\n },\n decls: 3,\n vars: 5,\n consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-event-title\", 3, \"innerHTML\"]],\n template: function CalendarEventTitleComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CalendarEventTitleComponent_ng_template_0_Template, 3, 10, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(2, CalendarEventTitleComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n }\n if (rf & 2) {\n const defaultTemplate_r3 = i0.ɵɵreference(1);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || defaultTemplate_r3)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(2, _c2, ctx.event, ctx.view));\n }\n },\n dependencies: [i1.NgTemplateOutlet, CalendarEventTitlePipe, CalendarA11yPipe],\n encapsulation: 2\n });\n return CalendarEventTitleComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CalendarTooltipWindowComponent = /*#__PURE__*/(() => {\n class CalendarTooltipWindowComponent {}\n CalendarTooltipWindowComponent.ɵfac = function CalendarTooltipWindowComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarTooltipWindowComponent)();\n };\n CalendarTooltipWindowComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CalendarTooltipWindowComponent,\n selectors: [[\"mwl-calendar-tooltip-window\"]],\n inputs: {\n contents: \"contents\",\n placement: \"placement\",\n event: \"event\",\n customTemplate: \"customTemplate\"\n },\n decls: 3,\n vars: 6,\n consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-tooltip\", 3, \"ngClass\"], [1, \"cal-tooltip-arrow\"], [1, \"cal-tooltip-inner\", 3, \"innerHtml\"]],\n template: function CalendarTooltipWindowComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CalendarTooltipWindowComponent_ng_template_0_Template, 3, 2, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(2, CalendarTooltipWindowComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n }\n if (rf & 2) {\n const defaultTemplate_r3 = i0.ɵɵreference(1);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || defaultTemplate_r3)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction3(2, _c4, ctx.contents, ctx.placement, ctx.event));\n }\n },\n dependencies: [i1.NgClass, i1.NgTemplateOutlet],\n encapsulation: 2\n });\n return CalendarTooltipWindowComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CalendarTooltipDirective = /*#__PURE__*/(() => {\n class CalendarTooltipDirective {\n constructor(elementRef, injector, renderer, componentFactoryResolver, viewContainerRef, document // eslint-disable-line\n ) {\n this.elementRef = elementRef;\n this.injector = injector;\n this.renderer = renderer;\n this.viewContainerRef = viewContainerRef;\n this.document = document;\n this.placement = 'auto'; // eslint-disable-line @angular-eslint/no-input-rename\n this.delay = null; // eslint-disable-line @angular-eslint/no-input-rename\n this.cancelTooltipDelay$ = new Subject();\n this.tooltipFactory = componentFactoryResolver.resolveComponentFactory(CalendarTooltipWindowComponent);\n }\n ngOnChanges(changes) {\n if (this.tooltipRef && (changes.contents || changes.customTemplate || changes.event)) {\n this.tooltipRef.instance.contents = this.contents;\n this.tooltipRef.instance.customTemplate = this.customTemplate;\n this.tooltipRef.instance.event = this.event;\n this.tooltipRef.changeDetectorRef.markForCheck();\n if (!this.contents) {\n this.hide();\n }\n }\n }\n ngOnDestroy() {\n this.hide();\n }\n onMouseOver() {\n const delay$ = this.delay === null ? of('now') : timer(this.delay);\n delay$.pipe(takeUntil(this.cancelTooltipDelay$)).subscribe(() => {\n this.show();\n });\n }\n onMouseOut() {\n this.hide();\n }\n show() {\n if (!this.tooltipRef && this.contents) {\n this.tooltipRef = this.viewContainerRef.createComponent(this.tooltipFactory, 0, this.injector, []);\n this.tooltipRef.instance.contents = this.contents;\n this.tooltipRef.instance.customTemplate = this.customTemplate;\n this.tooltipRef.instance.event = this.event;\n if (this.appendToBody) {\n this.document.body.appendChild(this.tooltipRef.location.nativeElement);\n }\n requestAnimationFrame(() => {\n this.positionTooltip();\n });\n }\n }\n hide() {\n if (this.tooltipRef) {\n this.viewContainerRef.remove(this.viewContainerRef.indexOf(this.tooltipRef.hostView));\n this.tooltipRef = null;\n }\n this.cancelTooltipDelay$.next();\n }\n positionTooltip(previousPositions = []) {\n if (this.tooltipRef) {\n this.tooltipRef.changeDetectorRef.detectChanges();\n this.tooltipRef.instance.placement = positionElements(this.elementRef.nativeElement, this.tooltipRef.location.nativeElement.children[0], this.placement, this.appendToBody);\n // keep re-positioning the tooltip until the arrow position doesn't make a difference\n if (previousPositions.indexOf(this.tooltipRef.instance.placement) === -1) {\n this.positionTooltip([...previousPositions, this.tooltipRef.instance.placement]);\n }\n }\n }\n }\n CalendarTooltipDirective.ɵfac = function CalendarTooltipDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarTooltipDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(DOCUMENT));\n };\n CalendarTooltipDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CalendarTooltipDirective,\n selectors: [[\"\", \"mwlCalendarTooltip\", \"\"]],\n hostBindings: function CalendarTooltipDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"mouseenter\", function CalendarTooltipDirective_mouseenter_HostBindingHandler() {\n return ctx.onMouseOver();\n })(\"mouseleave\", function CalendarTooltipDirective_mouseleave_HostBindingHandler() {\n return ctx.onMouseOut();\n });\n }\n },\n inputs: {\n contents: [0, \"mwlCalendarTooltip\", \"contents\"],\n placement: [0, \"tooltipPlacement\", \"placement\"],\n customTemplate: [0, \"tooltipTemplate\", \"customTemplate\"],\n event: [0, \"tooltipEvent\", \"event\"],\n appendToBody: [0, \"tooltipAppendToBody\", \"appendToBody\"],\n delay: [0, \"tooltipDelay\", \"delay\"]\n },\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return CalendarTooltipDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nvar CalendarView = /*#__PURE__*/function (CalendarView) {\n CalendarView[\"Month\"] = \"month\";\n CalendarView[\"Week\"] = \"week\";\n CalendarView[\"Day\"] = \"day\";\n return CalendarView;\n}(CalendarView || {});\nconst validateEvents = events => {\n const warn = (...args) => console.warn('angular-calendar', ...args);\n return validateEvents$1(events, warn);\n};\nfunction isInsideLeftAndRight(outer, inner) {\n return Math.floor(outer.left) <= Math.ceil(inner.left) && Math.floor(inner.left) <= Math.ceil(outer.right) && Math.floor(outer.left) <= Math.ceil(inner.right) && Math.floor(inner.right) <= Math.ceil(outer.right);\n}\nfunction isInsideTopAndBottom(outer, inner) {\n return Math.floor(outer.top) <= Math.ceil(inner.top) && Math.floor(inner.top) <= Math.ceil(outer.bottom) && Math.floor(outer.top) <= Math.ceil(inner.bottom) && Math.floor(inner.bottom) <= Math.ceil(outer.bottom);\n}\nfunction isInside(outer, inner) {\n return isInsideLeftAndRight(outer, inner) && isInsideTopAndBottom(outer, inner);\n}\nfunction roundToNearest(amount, precision) {\n return Math.round(amount / precision) * precision;\n}\nconst trackByEventId = (index, event) => event.id ? event.id : event;\nconst trackByWeekDayHeaderDate = (index, day) => day.date.toISOString();\nconst trackByHourSegment = (index, segment) => segment.date.toISOString();\nconst trackByHour = (index, hour) => hour.segments[0].date.toISOString();\nconst trackByWeekAllDayEvent = (index, weekEvent) => weekEvent.event.id ? weekEvent.event.id : weekEvent.event;\nconst trackByWeekTimeEvent = (index, weekEvent) => weekEvent.event.id ? weekEvent.event.id : weekEvent.event;\nconst MINUTES_IN_HOUR = 60;\nfunction getPixelAmountInMinutes(hourSegments, hourSegmentHeight, hourDuration) {\n return (hourDuration || MINUTES_IN_HOUR) / (hourSegments * hourSegmentHeight);\n}\nfunction getMinutesMoved(movedY, hourSegments, hourSegmentHeight, eventSnapSize, hourDuration) {\n const draggedInPixelsSnapSize = roundToNearest(movedY, eventSnapSize || hourSegmentHeight);\n const pixelAmountInMinutes = getPixelAmountInMinutes(hourSegments, hourSegmentHeight, hourDuration);\n return draggedInPixelsSnapSize * pixelAmountInMinutes;\n}\nfunction getDefaultEventEnd(dateAdapter, event, minimumMinutes) {\n if (event.end) {\n return event.end;\n } else {\n return dateAdapter.addMinutes(event.start, minimumMinutes);\n }\n}\nfunction addDaysWithExclusions(dateAdapter, date, days, excluded) {\n let daysCounter = 0;\n let daysToAdd = 0;\n const changeDays = days < 0 ? dateAdapter.subDays : dateAdapter.addDays;\n let result = date;\n while (daysToAdd <= Math.abs(days)) {\n result = changeDays(date, daysCounter);\n const day = dateAdapter.getDay(result);\n if (excluded.indexOf(day) === -1) {\n daysToAdd++;\n }\n daysCounter++;\n }\n return result;\n}\nfunction isDraggedWithinPeriod(newStart, newEnd, period) {\n const end = newEnd || newStart;\n return period.start <= newStart && newStart <= period.end || period.start <= end && end <= period.end;\n}\nfunction shouldFireDroppedEvent(dropEvent, date, allDay, calendarId) {\n return dropEvent.dropData && dropEvent.dropData.event && (dropEvent.dropData.calendarId !== calendarId || dropEvent.dropData.event.allDay && !allDay || !dropEvent.dropData.event.allDay && allDay);\n}\nfunction getWeekViewPeriod(dateAdapter, viewDate, weekStartsOn, excluded = [], daysInWeek) {\n let viewStart = daysInWeek ? dateAdapter.startOfDay(viewDate) : dateAdapter.startOfWeek(viewDate, {\n weekStartsOn\n });\n const endOfWeek = dateAdapter.endOfWeek(viewDate, {\n weekStartsOn\n });\n while (excluded.indexOf(dateAdapter.getDay(viewStart)) > -1 && viewStart < endOfWeek) {\n viewStart = dateAdapter.addDays(viewStart, 1);\n }\n if (daysInWeek) {\n const viewEnd = dateAdapter.endOfDay(addDaysWithExclusions(dateAdapter, viewStart, daysInWeek - 1, excluded));\n return {\n viewStart,\n viewEnd\n };\n } else {\n let viewEnd = endOfWeek;\n while (excluded.indexOf(dateAdapter.getDay(viewEnd)) > -1 && viewEnd > viewStart) {\n viewEnd = dateAdapter.subDays(viewEnd, 1);\n }\n return {\n viewStart,\n viewEnd\n };\n }\n}\nfunction isWithinThreshold({\n x,\n y\n}) {\n const DRAG_THRESHOLD = 1;\n return Math.abs(x) > DRAG_THRESHOLD || Math.abs(y) > DRAG_THRESHOLD;\n}\nclass DateAdapter {}\n\n/**\n * Change the view date to the previous view. For example:\n *\n * ```typescript\n * \n * Previous\n * \n * ```\n */\nlet CalendarPreviousViewDirective = /*#__PURE__*/(() => {\n class CalendarPreviousViewDirective {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n /**\n * Days to skip when going back by 1 day\n */\n this.excludeDays = [];\n /**\n * Called when the view date is changed\n */\n this.viewDateChange = new EventEmitter();\n }\n /**\n * @hidden\n */\n onClick() {\n const subFn = {\n day: this.dateAdapter.subDays,\n week: this.dateAdapter.subWeeks,\n month: this.dateAdapter.subMonths\n }[this.view];\n if (this.view === CalendarView.Day) {\n this.viewDateChange.emit(addDaysWithExclusions(this.dateAdapter, this.viewDate, -1, this.excludeDays));\n } else if (this.view === CalendarView.Week && this.daysInWeek) {\n this.viewDateChange.emit(addDaysWithExclusions(this.dateAdapter, this.viewDate, -this.daysInWeek, this.excludeDays));\n } else {\n this.viewDateChange.emit(subFn(this.viewDate, 1));\n }\n }\n }\n CalendarPreviousViewDirective.ɵfac = function CalendarPreviousViewDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarPreviousViewDirective)(i0.ɵɵdirectiveInject(DateAdapter));\n };\n CalendarPreviousViewDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CalendarPreviousViewDirective,\n selectors: [[\"\", \"mwlCalendarPreviousView\", \"\"]],\n hostBindings: function CalendarPreviousViewDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function CalendarPreviousViewDirective_click_HostBindingHandler() {\n return ctx.onClick();\n });\n }\n },\n inputs: {\n view: \"view\",\n viewDate: \"viewDate\",\n excludeDays: \"excludeDays\",\n daysInWeek: \"daysInWeek\"\n },\n outputs: {\n viewDateChange: \"viewDateChange\"\n }\n });\n return CalendarPreviousViewDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Change the view date to the next view. For example:\n *\n * ```typescript\n * \n * Next\n * \n * ```\n */\nlet CalendarNextViewDirective = /*#__PURE__*/(() => {\n class CalendarNextViewDirective {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n /**\n * Days to skip when going forward by 1 day\n */\n this.excludeDays = [];\n /**\n * Called when the view date is changed\n */\n this.viewDateChange = new EventEmitter();\n }\n /**\n * @hidden\n */\n onClick() {\n const addFn = {\n day: this.dateAdapter.addDays,\n week: this.dateAdapter.addWeeks,\n month: this.dateAdapter.addMonths\n }[this.view];\n if (this.view === CalendarView.Day) {\n this.viewDateChange.emit(addDaysWithExclusions(this.dateAdapter, this.viewDate, 1, this.excludeDays));\n } else if (this.view === CalendarView.Week && this.daysInWeek) {\n this.viewDateChange.emit(addDaysWithExclusions(this.dateAdapter, this.viewDate, this.daysInWeek, this.excludeDays));\n } else {\n this.viewDateChange.emit(addFn(this.viewDate, 1));\n }\n }\n }\n CalendarNextViewDirective.ɵfac = function CalendarNextViewDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarNextViewDirective)(i0.ɵɵdirectiveInject(DateAdapter));\n };\n CalendarNextViewDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CalendarNextViewDirective,\n selectors: [[\"\", \"mwlCalendarNextView\", \"\"]],\n hostBindings: function CalendarNextViewDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function CalendarNextViewDirective_click_HostBindingHandler() {\n return ctx.onClick();\n });\n }\n },\n inputs: {\n view: \"view\",\n viewDate: \"viewDate\",\n excludeDays: \"excludeDays\",\n daysInWeek: \"daysInWeek\"\n },\n outputs: {\n viewDateChange: \"viewDateChange\"\n }\n });\n return CalendarNextViewDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Change the view date to the current day. For example:\n *\n * ```typescript\n * \n * Today\n * \n * ```\n */\nlet CalendarTodayDirective = /*#__PURE__*/(() => {\n class CalendarTodayDirective {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n /**\n * Called when the view date is changed\n */\n this.viewDateChange = new EventEmitter();\n }\n /**\n * @hidden\n */\n onClick() {\n this.viewDateChange.emit(this.dateAdapter.startOfDay(new Date()));\n }\n }\n CalendarTodayDirective.ɵfac = function CalendarTodayDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarTodayDirective)(i0.ɵɵdirectiveInject(DateAdapter));\n };\n CalendarTodayDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CalendarTodayDirective,\n selectors: [[\"\", \"mwlCalendarToday\", \"\"]],\n hostBindings: function CalendarTodayDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function CalendarTodayDirective_click_HostBindingHandler() {\n return ctx.onClick();\n });\n }\n },\n inputs: {\n viewDate: \"viewDate\"\n },\n outputs: {\n viewDateChange: \"viewDateChange\"\n }\n });\n return CalendarTodayDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * This will use the angular date pipe to do all date formatting. It is the default date formatter used by the calendar.\n */\nlet CalendarAngularDateFormatter = /*#__PURE__*/(() => {\n class CalendarAngularDateFormatter {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n }\n /**\n * The month view header week day labels\n */\n monthViewColumnHeader({\n date,\n locale\n }) {\n return formatDate(date, 'EEEE', locale);\n }\n /**\n * The month view cell day number\n */\n monthViewDayNumber({\n date,\n locale\n }) {\n return formatDate(date, 'd', locale);\n }\n /**\n * The month view title\n */\n monthViewTitle({\n date,\n locale\n }) {\n return formatDate(date, 'LLLL y', locale);\n }\n /**\n * The week view header week day labels\n */\n weekViewColumnHeader({\n date,\n locale\n }) {\n return formatDate(date, 'EEEE', locale);\n }\n /**\n * The week view sub header day and month labels\n */\n weekViewColumnSubHeader({\n date,\n locale\n }) {\n return formatDate(date, 'MMM d', locale);\n }\n /**\n * The week view title\n */\n weekViewTitle({\n date,\n locale,\n weekStartsOn,\n excludeDays,\n daysInWeek\n }) {\n const {\n viewStart,\n viewEnd\n } = getWeekViewPeriod(this.dateAdapter, date, weekStartsOn, excludeDays, daysInWeek);\n const format = (dateToFormat, showYear) => formatDate(dateToFormat, 'MMM d' + (showYear ? ', yyyy' : ''), locale);\n return `${format(viewStart, viewStart.getUTCFullYear() !== viewEnd.getUTCFullYear())} - ${format(viewEnd, true)}`;\n }\n /**\n * The time formatting down the left hand side of the week view\n */\n weekViewHour({\n date,\n locale\n }) {\n return formatDate(date, 'h a', locale);\n }\n /**\n * The time formatting down the left hand side of the day view\n */\n dayViewHour({\n date,\n locale\n }) {\n return formatDate(date, 'h a', locale);\n }\n /**\n * The day view title\n */\n dayViewTitle({\n date,\n locale\n }) {\n return formatDate(date, 'EEEE, MMMM d, y', locale);\n }\n }\n CalendarAngularDateFormatter.ɵfac = function CalendarAngularDateFormatter_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarAngularDateFormatter)(i0.ɵɵinject(DateAdapter));\n };\n CalendarAngularDateFormatter.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CalendarAngularDateFormatter,\n factory: CalendarAngularDateFormatter.ɵfac\n });\n return CalendarAngularDateFormatter;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * This class is responsible for all formatting of dates. There are 3 implementations available, the `CalendarAngularDateFormatter` (default) which uses the angular date pipe to format dates, the `CalendarNativeDateFormatter` which will use the Intl API to format dates, or there is the `CalendarMomentDateFormatter` which uses moment.\n *\n * If you wish, you may override any of the defaults via angulars DI. For example:\n *\n * ```typescript\n * import { CalendarDateFormatter, DateFormatterParams } from 'angular-calendar';\n * import { formatDate } from '@angular/common';\n * import { Injectable } from '@angular/core';\n *\n * @Injectable()\n * class CustomDateFormatter extends CalendarDateFormatter {\n *\n * public monthViewColumnHeader({date, locale}: DateFormatterParams): string {\n * return formatDate(date, 'EEE', locale); // use short week days\n * }\n *\n * }\n *\n * // in your component that uses the calendar\n * providers: [{\n * provide: CalendarDateFormatter,\n * useClass: CustomDateFormatter\n * }]\n * ```\n */\nlet CalendarDateFormatter = /*#__PURE__*/(() => {\n class CalendarDateFormatter extends CalendarAngularDateFormatter {}\n CalendarDateFormatter.ɵfac = /* @__PURE__ */(() => {\n let ɵCalendarDateFormatter_BaseFactory;\n return function CalendarDateFormatter_Factory(__ngFactoryType__) {\n return (ɵCalendarDateFormatter_BaseFactory || (ɵCalendarDateFormatter_BaseFactory = i0.ɵɵgetInheritedFactory(CalendarDateFormatter)))(__ngFactoryType__ || CalendarDateFormatter);\n };\n })();\n CalendarDateFormatter.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CalendarDateFormatter,\n factory: CalendarDateFormatter.ɵfac\n });\n return CalendarDateFormatter;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * This pipe is primarily for rendering the current view title. Example usage:\n * ```typescript\n * // where `viewDate` is a `Date` and view is `'month' | 'week' | 'day'`\n * {{ viewDate | calendarDate:(view + 'ViewTitle'):'en' }}\n * ```\n */\nlet CalendarDatePipe = /*#__PURE__*/(() => {\n class CalendarDatePipe {\n constructor(dateFormatter, locale) {\n this.dateFormatter = dateFormatter;\n this.locale = locale;\n }\n transform(date, method, locale = this.locale, weekStartsOn = 0, excludeDays = [], daysInWeek) {\n if (typeof this.dateFormatter[method] === 'undefined') {\n const allowedMethods = Object.getOwnPropertyNames(Object.getPrototypeOf(CalendarDateFormatter.prototype)).filter(iMethod => iMethod !== 'constructor');\n throw new Error(`${method} is not a valid date formatter. Can only be one of ${allowedMethods.join(', ')}`);\n }\n return this.dateFormatter[method]({\n date,\n locale,\n weekStartsOn,\n excludeDays,\n daysInWeek\n });\n }\n }\n CalendarDatePipe.ɵfac = function CalendarDatePipe_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarDatePipe)(i0.ɵɵdirectiveInject(CalendarDateFormatter, 16), i0.ɵɵdirectiveInject(LOCALE_ID, 16));\n };\n CalendarDatePipe.ɵpipe = /* @__PURE__ */i0.ɵɵdefinePipe({\n name: \"calendarDate\",\n type: CalendarDatePipe,\n pure: true\n });\n return CalendarDatePipe;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CalendarUtils = /*#__PURE__*/(() => {\n class CalendarUtils {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n }\n getMonthView(args) {\n return getMonthView(this.dateAdapter, args);\n }\n getWeekViewHeader(args) {\n return getWeekViewHeader(this.dateAdapter, args);\n }\n getWeekView(args) {\n return getWeekView(this.dateAdapter, args);\n }\n }\n CalendarUtils.ɵfac = function CalendarUtils_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarUtils)(i0.ɵɵinject(DateAdapter));\n };\n CalendarUtils.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CalendarUtils,\n factory: CalendarUtils.ɵfac\n });\n return CalendarUtils;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst MOMENT = new InjectionToken('Moment');\n/**\n * This will use moment to do all date formatting. To use this class:\n *\n * ```typescript\n * import { CalendarDateFormatter, CalendarMomentDateFormatter, MOMENT } from 'angular-calendar';\n * import moment from 'moment';\n *\n * // in your component\n * provide: [{\n * provide: MOMENT, useValue: moment\n * }, {\n * provide: CalendarDateFormatter, useClass: CalendarMomentDateFormatter\n * }]\n *\n * ```\n */\nlet CalendarMomentDateFormatter = /*#__PURE__*/(() => {\n class CalendarMomentDateFormatter {\n /**\n * @hidden\n */\n constructor(moment, dateAdapter) {\n this.moment = moment;\n this.dateAdapter = dateAdapter;\n }\n /**\n * The month view header week day labels\n */\n monthViewColumnHeader({\n date,\n locale\n }) {\n return this.moment(date).locale(locale).format('dddd');\n }\n /**\n * The month view cell day number\n */\n monthViewDayNumber({\n date,\n locale\n }) {\n return this.moment(date).locale(locale).format('D');\n }\n /**\n * The month view title\n */\n monthViewTitle({\n date,\n locale\n }) {\n return this.moment(date).locale(locale).format('MMMM YYYY');\n }\n /**\n * The week view header week day labels\n */\n weekViewColumnHeader({\n date,\n locale\n }) {\n return this.moment(date).locale(locale).format('dddd');\n }\n /**\n * The week view sub header day and month labels\n */\n weekViewColumnSubHeader({\n date,\n locale\n }) {\n return this.moment(date).locale(locale).format('MMM D');\n }\n /**\n * The week view title\n */\n weekViewTitle({\n date,\n locale,\n weekStartsOn,\n excludeDays,\n daysInWeek\n }) {\n const {\n viewStart,\n viewEnd\n } = getWeekViewPeriod(this.dateAdapter, date, weekStartsOn, excludeDays, daysInWeek);\n const format = (dateToFormat, showYear) => this.moment(dateToFormat).locale(locale).format('MMM D' + (showYear ? ', YYYY' : ''));\n return `${format(viewStart, viewStart.getUTCFullYear() !== viewEnd.getUTCFullYear())} - ${format(viewEnd, true)}`;\n }\n /**\n * The time formatting down the left hand side of the week view\n */\n weekViewHour({\n date,\n locale\n }) {\n return this.moment(date).locale(locale).format('ha');\n }\n /**\n * The time formatting down the left hand side of the day view\n */\n dayViewHour({\n date,\n locale\n }) {\n return this.moment(date).locale(locale).format('ha');\n }\n /**\n * The day view title\n */\n dayViewTitle({\n date,\n locale\n }) {\n return this.moment(date).locale(locale).format('dddd, LL'); // dddd = Thursday\n } // LL = locale-dependent Month Day, Year\n }\n CalendarMomentDateFormatter.ɵfac = function CalendarMomentDateFormatter_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarMomentDateFormatter)(i0.ɵɵinject(MOMENT), i0.ɵɵinject(DateAdapter));\n };\n CalendarMomentDateFormatter.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CalendarMomentDateFormatter,\n factory: CalendarMomentDateFormatter.ɵfac\n });\n return CalendarMomentDateFormatter;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * This will use Intl API to do all date formatting.\n *\n * You will need to include a polyfill for older browsers.\n */\nlet CalendarNativeDateFormatter = /*#__PURE__*/(() => {\n class CalendarNativeDateFormatter {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n }\n /**\n * The month view header week day labels\n */\n monthViewColumnHeader({\n date,\n locale\n }) {\n return new Intl.DateTimeFormat(locale, {\n weekday: 'long'\n }).format(date);\n }\n /**\n * The month view cell day number\n */\n monthViewDayNumber({\n date,\n locale\n }) {\n return new Intl.DateTimeFormat(locale, {\n day: 'numeric'\n }).format(date);\n }\n /**\n * The month view title\n */\n monthViewTitle({\n date,\n locale\n }) {\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'long'\n }).format(date);\n }\n /**\n * The week view header week day labels\n */\n weekViewColumnHeader({\n date,\n locale\n }) {\n return new Intl.DateTimeFormat(locale, {\n weekday: 'long'\n }).format(date);\n }\n /**\n * The week view sub header day and month labels\n */\n weekViewColumnSubHeader({\n date,\n locale\n }) {\n return new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'short'\n }).format(date);\n }\n /**\n * The week view title\n */\n weekViewTitle({\n date,\n locale,\n weekStartsOn,\n excludeDays,\n daysInWeek\n }) {\n const {\n viewStart,\n viewEnd\n } = getWeekViewPeriod(this.dateAdapter, date, weekStartsOn, excludeDays, daysInWeek);\n const format = (dateToFormat, showYear) => new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'short',\n year: showYear ? 'numeric' : undefined\n }).format(dateToFormat);\n return `${format(viewStart, viewStart.getUTCFullYear() !== viewEnd.getUTCFullYear())} - ${format(viewEnd, true)}`;\n }\n /**\n * The time formatting down the left hand side of the week view\n */\n weekViewHour({\n date,\n locale\n }) {\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric'\n }).format(date);\n }\n /**\n * The time formatting down the left hand side of the day view\n */\n dayViewHour({\n date,\n locale\n }) {\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric'\n }).format(date);\n }\n /**\n * The day view title\n */\n dayViewTitle({\n date,\n locale\n }) {\n return new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n weekday: 'long'\n }).format(date);\n }\n }\n CalendarNativeDateFormatter.ɵfac = function CalendarNativeDateFormatter_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarNativeDateFormatter)(i0.ɵɵinject(DateAdapter));\n };\n CalendarNativeDateFormatter.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CalendarNativeDateFormatter,\n factory: CalendarNativeDateFormatter.ɵfac\n });\n return CalendarNativeDateFormatter;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nvar CalendarEventTimesChangedEventType = /*#__PURE__*/function (CalendarEventTimesChangedEventType) {\n CalendarEventTimesChangedEventType[\"Drag\"] = \"drag\";\n CalendarEventTimesChangedEventType[\"Drop\"] = \"drop\";\n CalendarEventTimesChangedEventType[\"Resize\"] = \"resize\";\n return CalendarEventTimesChangedEventType;\n}(CalendarEventTimesChangedEventType || {});\n/**\n * Import this module to if you're just using a singular view and want to save on bundle size. Example usage:\n *\n * ```typescript\n * import { CalendarCommonModule, CalendarMonthModule } from 'angular-calendar';\n *\n * @NgModule({\n * imports: [\n * CalendarCommonModule.forRoot(),\n * CalendarMonthModule\n * ]\n * })\n * class MyModule {}\n * ```\n *\n */\nlet CalendarCommonModule = /*#__PURE__*/(() => {\n class CalendarCommonModule {\n static forRoot(dateAdapter, config = {}) {\n return {\n ngModule: CalendarCommonModule,\n providers: [dateAdapter, config.eventTitleFormatter || CalendarEventTitleFormatter, config.dateFormatter || CalendarDateFormatter, config.utils || CalendarUtils, config.a11y || CalendarA11y]\n };\n }\n }\n CalendarCommonModule.ɵfac = function CalendarCommonModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarCommonModule)();\n };\n CalendarCommonModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: CalendarCommonModule\n });\n CalendarCommonModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [I18nPluralPipe],\n imports: [CommonModule]\n });\n return CalendarCommonModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CalendarMonthCellComponent = /*#__PURE__*/(() => {\n class CalendarMonthCellComponent {\n constructor() {\n this.highlightDay = new EventEmitter();\n this.unhighlightDay = new EventEmitter();\n this.eventClicked = new EventEmitter();\n this.trackByEventId = trackByEventId;\n this.validateDrag = isWithinThreshold;\n }\n }\n CalendarMonthCellComponent.ɵfac = function CalendarMonthCellComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarMonthCellComponent)();\n };\n CalendarMonthCellComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CalendarMonthCellComponent,\n selectors: [[\"mwl-calendar-month-cell\"]],\n hostAttrs: [1, \"cal-cell\", \"cal-day-cell\"],\n hostVars: 18,\n hostBindings: function CalendarMonthCellComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"cal-past\", ctx.day.isPast)(\"cal-today\", ctx.day.isToday)(\"cal-future\", ctx.day.isFuture)(\"cal-weekend\", ctx.day.isWeekend)(\"cal-in-month\", ctx.day.inMonth)(\"cal-out-month\", !ctx.day.inMonth)(\"cal-has-events\", ctx.day.events.length > 0)(\"cal-open\", ctx.day === ctx.openDay)(\"cal-event-highlight\", !!ctx.day.backgroundColor);\n }\n },\n inputs: {\n day: \"day\",\n openDay: \"openDay\",\n locale: \"locale\",\n tooltipPlacement: \"tooltipPlacement\",\n tooltipAppendToBody: \"tooltipAppendToBody\",\n customTemplate: \"customTemplate\",\n tooltipTemplate: \"tooltipTemplate\",\n tooltipDelay: \"tooltipDelay\"\n },\n outputs: {\n highlightDay: \"highlightDay\",\n unhighlightDay: \"unhighlightDay\",\n eventClicked: \"eventClicked\"\n },\n decls: 3,\n vars: 15,\n consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-cell-top\"], [\"aria-hidden\", \"true\"], [\"class\", \"cal-day-badge\", 4, \"ngIf\"], [1, \"cal-day-number\"], [\"class\", \"cal-events\", 4, \"ngIf\"], [1, \"cal-day-badge\"], [1, \"cal-events\"], [\"class\", \"cal-event\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"ngStyle\", \"ngClass\", \"mwlCalendarTooltip\", \"tooltipPlacement\", \"tooltipEvent\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"tooltipDelay\", \"cal-draggable\", \"dropData\", \"dragAxis\", \"validateDrag\", \"touchStartLongPress\", \"mouseenter\", \"mouseleave\", \"mwlClick\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 1, \"cal-event\", 3, \"mouseenter\", \"mouseleave\", \"mwlClick\", \"ngStyle\", \"ngClass\", \"mwlCalendarTooltip\", \"tooltipPlacement\", \"tooltipEvent\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"tooltipDelay\", \"dropData\", \"dragAxis\", \"validateDrag\", \"touchStartLongPress\"]],\n template: function CalendarMonthCellComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CalendarMonthCellComponent_ng_template_0_Template, 8, 14, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(2, CalendarMonthCellComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n }\n if (rf & 2) {\n const defaultTemplate_r15 = i0.ɵɵreference(1);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || defaultTemplate_r15)(\"ngTemplateOutletContext\", i0.ɵɵpureFunctionV(2, _c5, [ctx.day, ctx.openDay, ctx.locale, ctx.tooltipPlacement, ctx.highlightDay, ctx.unhighlightDay, ctx.eventClicked, ctx.tooltipTemplate, ctx.tooltipAppendToBody, ctx.tooltipDelay, ctx.trackByEventId, ctx.validateDrag]));\n }\n },\n dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, i2.DraggableDirective, CalendarTooltipDirective, ClickDirective, CalendarDatePipe, CalendarEventTitlePipe, CalendarA11yPipe],\n encapsulation: 2\n });\n return CalendarMonthCellComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst collapseAnimation = trigger('collapse', [state('void', style({\n height: 0,\n overflow: 'hidden',\n 'padding-top': 0,\n 'padding-bottom': 0\n})), state('*', style({\n height: '*',\n overflow: 'hidden',\n 'padding-top': '*',\n 'padding-bottom': '*'\n})), transition('* => void', animate('150ms ease-out')), transition('void => *', animate('150ms ease-in'))]);\nlet CalendarOpenDayEventsComponent = /*#__PURE__*/(() => {\n class CalendarOpenDayEventsComponent {\n constructor() {\n this.isOpen = false;\n this.eventClicked = new EventEmitter();\n this.trackByEventId = trackByEventId;\n this.validateDrag = isWithinThreshold;\n }\n }\n CalendarOpenDayEventsComponent.ɵfac = function CalendarOpenDayEventsComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarOpenDayEventsComponent)();\n };\n CalendarOpenDayEventsComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CalendarOpenDayEventsComponent,\n selectors: [[\"mwl-calendar-open-day-events\"]],\n inputs: {\n locale: \"locale\",\n isOpen: \"isOpen\",\n events: \"events\",\n customTemplate: \"customTemplate\",\n eventTitleTemplate: \"eventTitleTemplate\",\n eventActionsTemplate: \"eventActionsTemplate\",\n date: \"date\"\n },\n outputs: {\n eventClicked: \"eventClicked\"\n },\n decls: 3,\n vars: 8,\n consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"class\", \"cal-open-day-events\", \"role\", \"application\", 4, \"ngIf\"], [\"role\", \"application\", 1, \"cal-open-day-events\"], [\"tabindex\", \"-1\", \"role\", \"alert\"], [\"tabindex\", \"0\", \"role\", \"landmark\"], [\"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"ngClass\", \"cal-draggable\", \"dropData\", \"dragAxis\", \"validateDrag\", \"touchStartLongPress\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"ngClass\", \"dropData\", \"dragAxis\", \"validateDrag\", \"touchStartLongPress\"], [1, \"cal-event\", 3, \"ngStyle\"], [\"view\", \"month\", \"tabindex\", \"0\", 3, \"mwlClick\", \"mwlKeydownEnter\", \"event\", \"customTemplate\"], [3, \"event\", \"customTemplate\"]],\n template: function CalendarOpenDayEventsComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CalendarOpenDayEventsComponent_ng_template_0_Template, 1, 1, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(2, CalendarOpenDayEventsComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n }\n if (rf & 2) {\n const defaultTemplate_r10 = i0.ɵɵreference(1);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || defaultTemplate_r10)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction5(2, _c11, ctx.events, ctx.eventClicked, ctx.isOpen, ctx.trackByEventId, ctx.validateDrag));\n }\n },\n dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, i2.DraggableDirective, CalendarEventActionsComponent, CalendarEventTitleComponent, ClickDirective, KeydownEnterDirective, CalendarA11yPipe],\n encapsulation: 2,\n data: {\n animation: [collapseAnimation]\n }\n });\n return CalendarOpenDayEventsComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CalendarMonthViewHeaderComponent = /*#__PURE__*/(() => {\n class CalendarMonthViewHeaderComponent {\n constructor() {\n this.columnHeaderClicked = new EventEmitter();\n this.trackByWeekDayHeaderDate = trackByWeekDayHeaderDate;\n }\n }\n CalendarMonthViewHeaderComponent.ɵfac = function CalendarMonthViewHeaderComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarMonthViewHeaderComponent)();\n };\n CalendarMonthViewHeaderComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CalendarMonthViewHeaderComponent,\n selectors: [[\"mwl-calendar-month-view-header\"]],\n inputs: {\n days: \"days\",\n locale: \"locale\",\n customTemplate: \"customTemplate\"\n },\n outputs: {\n columnHeaderClicked: \"columnHeaderClicked\"\n },\n decls: 3,\n vars: 6,\n consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"role\", \"row\", 1, \"cal-cell-row\", \"cal-header\"], [\"class\", \"cal-cell\", \"tabindex\", \"0\", \"role\", \"columnheader\", 3, \"cal-past\", \"cal-today\", \"cal-future\", \"cal-weekend\", \"ngClass\", \"click\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"tabindex\", \"0\", \"role\", \"columnheader\", 1, \"cal-cell\", 3, \"click\", \"ngClass\"]],\n template: function CalendarMonthViewHeaderComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CalendarMonthViewHeaderComponent_ng_template_0_Template, 2, 2, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(2, CalendarMonthViewHeaderComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n }\n if (rf & 2) {\n const defaultTemplate_r7 = i0.ɵɵreference(1);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || defaultTemplate_r7)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction3(2, _c15, ctx.days, ctx.locale, ctx.trackByWeekDayHeaderDate));\n }\n },\n dependencies: [i1.NgClass, i1.NgForOf, i1.NgTemplateOutlet, CalendarDatePipe],\n encapsulation: 2\n });\n return CalendarMonthViewHeaderComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Shows all events on a given month. Example usage:\n *\n * ```typescript\n * \n * \n * ```\n */\nlet CalendarMonthViewComponent = /*#__PURE__*/(() => {\n class CalendarMonthViewComponent {\n /**\n * @hidden\n */\n constructor(cdr, utils, locale, dateAdapter) {\n this.cdr = cdr;\n this.utils = utils;\n this.dateAdapter = dateAdapter;\n /**\n * An array of events to display on view.\n * The schema is available here: https://github.com/mattlewis92/calendar-utils/blob/c51689985f59a271940e30bc4e2c4e1fee3fcb5c/src/calendarUtils.ts#L49-L63\n */\n this.events = [];\n /**\n * An array of day indexes (0 = sunday, 1 = monday etc) that will be hidden on the view\n */\n this.excludeDays = [];\n /**\n * Whether the events list for the day of the `viewDate` option is visible or not\n */\n this.activeDayIsOpen = false;\n /**\n * The placement of the event tooltip\n */\n this.tooltipPlacement = 'auto';\n /**\n * Whether to append tooltips to the body or next to the trigger element\n */\n this.tooltipAppendToBody = true;\n /**\n * The delay in milliseconds before the tooltip should be displayed. If not provided the tooltip\n * will be displayed immediately.\n */\n this.tooltipDelay = null;\n /**\n * An output that will be called before the view is rendered for the current month.\n * If you add the `cssClass` property to a day in the body it will add that class to the cell element in the template\n */\n this.beforeViewRender = new EventEmitter();\n /**\n * Called when the day cell is clicked\n */\n this.dayClicked = new EventEmitter();\n /**\n * Called when the event title is clicked\n */\n this.eventClicked = new EventEmitter();\n /**\n * Called when a header week day is clicked. Returns ISO day number.\n */\n this.columnHeaderClicked = new EventEmitter();\n /**\n * Called when an event is dragged and dropped\n */\n this.eventTimesChanged = new EventEmitter();\n /**\n * @hidden\n */\n this.trackByRowOffset = (index, offset) => this.view.days.slice(offset, this.view.totalDaysVisibleInWeek).map(day => day.date.toISOString()).join('-');\n /**\n * @hidden\n */\n this.trackByDate = (index, day) => day.date.toISOString();\n this.locale = locale;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n if (this.refresh) {\n this.refreshSubscription = this.refresh.subscribe(() => {\n this.refreshAll();\n this.cdr.markForCheck();\n });\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n const refreshHeader = changes.viewDate || changes.excludeDays || changes.weekendDays;\n const refreshBody = changes.viewDate || changes.events || changes.excludeDays || changes.weekendDays;\n if (refreshHeader) {\n this.refreshHeader();\n }\n if (changes.events) {\n validateEvents(this.events);\n }\n if (refreshBody) {\n this.refreshBody();\n }\n if (refreshHeader || refreshBody) {\n this.emitBeforeViewRender();\n }\n if (changes.activeDayIsOpen || changes.viewDate || changes.events || changes.excludeDays || changes.activeDay) {\n this.checkActiveDayIsOpen();\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n toggleDayHighlight(event, isHighlighted) {\n this.view.days.forEach(day => {\n if (isHighlighted && day.events.indexOf(event) > -1) {\n day.backgroundColor = event.color && event.color.secondary || '#D1E8FF';\n } else {\n delete day.backgroundColor;\n }\n });\n }\n /**\n * @hidden\n */\n eventDropped(droppedOn, event, draggedFrom) {\n if (droppedOn !== draggedFrom) {\n const year = this.dateAdapter.getYear(droppedOn.date);\n const month = this.dateAdapter.getMonth(droppedOn.date);\n const date = this.dateAdapter.getDate(droppedOn.date);\n const newStart = this.dateAdapter.setDate(this.dateAdapter.setMonth(this.dateAdapter.setYear(event.start, year), month), date);\n let newEnd;\n if (event.end) {\n const secondsDiff = this.dateAdapter.differenceInSeconds(newStart, event.start);\n newEnd = this.dateAdapter.addSeconds(event.end, secondsDiff);\n }\n this.eventTimesChanged.emit({\n event,\n newStart,\n newEnd,\n day: droppedOn,\n type: CalendarEventTimesChangedEventType.Drop\n });\n }\n }\n refreshHeader() {\n this.columnHeaders = this.utils.getWeekViewHeader({\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n weekendDays: this.weekendDays\n });\n }\n refreshBody() {\n this.view = this.utils.getMonthView({\n events: this.events,\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n weekendDays: this.weekendDays\n });\n }\n checkActiveDayIsOpen() {\n if (this.activeDayIsOpen === true) {\n const activeDay = this.activeDay || this.viewDate;\n this.openDay = this.view.days.find(day => this.dateAdapter.isSameDay(day.date, activeDay));\n const index = this.view.days.indexOf(this.openDay);\n this.openRowIndex = Math.floor(index / this.view.totalDaysVisibleInWeek) * this.view.totalDaysVisibleInWeek;\n } else {\n this.openRowIndex = null;\n this.openDay = null;\n }\n }\n refreshAll() {\n this.refreshHeader();\n this.refreshBody();\n this.emitBeforeViewRender();\n this.checkActiveDayIsOpen();\n }\n emitBeforeViewRender() {\n if (this.columnHeaders && this.view) {\n this.beforeViewRender.emit({\n header: this.columnHeaders,\n body: this.view.days,\n period: this.view.period\n });\n }\n }\n }\n CalendarMonthViewComponent.ɵfac = function CalendarMonthViewComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarMonthViewComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(CalendarUtils), i0.ɵɵdirectiveInject(LOCALE_ID), i0.ɵɵdirectiveInject(DateAdapter));\n };\n CalendarMonthViewComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CalendarMonthViewComponent,\n selectors: [[\"mwl-calendar-month-view\"]],\n inputs: {\n viewDate: \"viewDate\",\n events: \"events\",\n excludeDays: \"excludeDays\",\n activeDayIsOpen: \"activeDayIsOpen\",\n activeDay: \"activeDay\",\n refresh: \"refresh\",\n locale: \"locale\",\n tooltipPlacement: \"tooltipPlacement\",\n tooltipTemplate: \"tooltipTemplate\",\n tooltipAppendToBody: \"tooltipAppendToBody\",\n tooltipDelay: \"tooltipDelay\",\n weekStartsOn: \"weekStartsOn\",\n headerTemplate: \"headerTemplate\",\n cellTemplate: \"cellTemplate\",\n openDayEventsTemplate: \"openDayEventsTemplate\",\n eventTitleTemplate: \"eventTitleTemplate\",\n eventActionsTemplate: \"eventActionsTemplate\",\n weekendDays: \"weekendDays\"\n },\n outputs: {\n beforeViewRender: \"beforeViewRender\",\n dayClicked: \"dayClicked\",\n eventClicked: \"eventClicked\",\n columnHeaderClicked: \"columnHeaderClicked\",\n eventTimesChanged: \"eventTimesChanged\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n decls: 4,\n vars: 5,\n consts: [[\"role\", \"grid\", 1, \"cal-month-view\"], [3, \"columnHeaderClicked\", \"days\", \"locale\", \"customTemplate\"], [1, \"cal-days\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"role\", \"row\", 1, \"cal-cell-row\"], [\"role\", \"gridcell\", \"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 3, \"ngClass\", \"day\", \"openDay\", \"locale\", \"tooltipPlacement\", \"tooltipAppendToBody\", \"tooltipTemplate\", \"tooltipDelay\", \"customTemplate\", \"ngStyle\", \"clickListenerDisabled\", \"mwlClick\", \"mwlKeydownEnter\", \"highlightDay\", \"unhighlightDay\", \"drop\", \"eventClicked\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 3, \"eventClicked\", \"drop\", \"locale\", \"isOpen\", \"events\", \"date\", \"customTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\"], [\"role\", \"gridcell\", \"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 3, \"mwlClick\", \"mwlKeydownEnter\", \"highlightDay\", \"unhighlightDay\", \"drop\", \"eventClicked\", \"ngClass\", \"day\", \"openDay\", \"locale\", \"tooltipPlacement\", \"tooltipAppendToBody\", \"tooltipTemplate\", \"tooltipDelay\", \"customTemplate\", \"ngStyle\", \"clickListenerDisabled\"]],\n template: function CalendarMonthViewComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0)(1, \"mwl-calendar-month-view-header\", 1);\n i0.ɵɵlistener(\"columnHeaderClicked\", function CalendarMonthViewComponent_Template_mwl_calendar_month_view_header_columnHeaderClicked_1_listener($event) {\n return ctx.columnHeaderClicked.emit($event);\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(2, \"div\", 2);\n i0.ɵɵtemplate(3, CalendarMonthViewComponent_div_3_Template, 5, 13, \"div\", 3);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"days\", ctx.columnHeaders)(\"locale\", ctx.locale)(\"customTemplate\", ctx.headerTemplate);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", ctx.view.rowOffsets)(\"ngForTrackBy\", ctx.trackByRowOffset);\n }\n },\n dependencies: [i1.NgClass, i1.NgForOf, i1.NgStyle, i2.DroppableDirective, ClickDirective, KeydownEnterDirective, CalendarMonthCellComponent, CalendarOpenDayEventsComponent, CalendarMonthViewHeaderComponent, i1.SlicePipe, CalendarA11yPipe],\n encapsulation: 2\n });\n return CalendarMonthViewComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CalendarMonthModule = /*#__PURE__*/(() => {\n class CalendarMonthModule {}\n CalendarMonthModule.ɵfac = function CalendarMonthModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarMonthModule)();\n };\n CalendarMonthModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: CalendarMonthModule\n });\n CalendarMonthModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [CommonModule, DragAndDropModule, CalendarCommonModule, DragAndDropModule]\n });\n return CalendarMonthModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nclass CalendarDragHelper {\n constructor(dragContainerElement, draggableElement) {\n this.dragContainerElement = dragContainerElement;\n this.startPosition = draggableElement.getBoundingClientRect();\n }\n validateDrag({\n x,\n y,\n snapDraggedEvents,\n dragAlreadyMoved,\n transform\n }) {\n const isDraggedWithinThreshold = isWithinThreshold({\n x,\n y\n }) || dragAlreadyMoved;\n if (snapDraggedEvents) {\n const inner = Object.assign({}, this.startPosition, {\n left: this.startPosition.left + transform.x,\n right: this.startPosition.right + transform.x,\n top: this.startPosition.top + transform.y,\n bottom: this.startPosition.bottom + transform.y\n });\n if (isDraggedWithinThreshold) {\n const outer = this.dragContainerElement.getBoundingClientRect();\n const isTopInside = outer.top < inner.top && inner.top < outer.bottom;\n const isBottomInside = outer.top < inner.bottom && inner.bottom < outer.bottom;\n return isInsideLeftAndRight(outer, inner) && (isTopInside || isBottomInside);\n }\n /* istanbul ignore next */\n return false;\n } else {\n return isDraggedWithinThreshold;\n }\n }\n}\nclass CalendarResizeHelper {\n constructor(resizeContainerElement, minWidth, rtl) {\n this.resizeContainerElement = resizeContainerElement;\n this.minWidth = minWidth;\n this.rtl = rtl;\n }\n validateResize({\n rectangle,\n edges\n }) {\n if (this.rtl) {\n // TODO - find a way of testing this, for some reason the tests always fail but it does actually work\n /* istanbul ignore next */\n if (typeof edges.left !== 'undefined') {\n rectangle.left -= edges.left;\n rectangle.right += edges.left;\n } else if (typeof edges.right !== 'undefined') {\n rectangle.left += edges.right;\n rectangle.right -= edges.right;\n }\n rectangle.width = rectangle.right - rectangle.left;\n }\n if (this.minWidth && Math.ceil(rectangle.width) < Math.ceil(this.minWidth)) {\n return false;\n }\n return isInside(this.resizeContainerElement.getBoundingClientRect(), rectangle);\n }\n}\nlet CalendarWeekViewHeaderComponent = /*#__PURE__*/(() => {\n class CalendarWeekViewHeaderComponent {\n constructor() {\n this.dayHeaderClicked = new EventEmitter();\n this.eventDropped = new EventEmitter();\n this.dragEnter = new EventEmitter();\n this.trackByWeekDayHeaderDate = trackByWeekDayHeaderDate;\n }\n }\n CalendarWeekViewHeaderComponent.ɵfac = function CalendarWeekViewHeaderComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarWeekViewHeaderComponent)();\n };\n CalendarWeekViewHeaderComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CalendarWeekViewHeaderComponent,\n selectors: [[\"mwl-calendar-week-view-header\"]],\n inputs: {\n days: \"days\",\n locale: \"locale\",\n customTemplate: \"customTemplate\"\n },\n outputs: {\n dayHeaderClicked: \"dayHeaderClicked\",\n eventDropped: \"eventDropped\",\n dragEnter: \"dragEnter\"\n },\n decls: 3,\n vars: 9,\n consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"role\", \"row\", 1, \"cal-day-headers\"], [\"class\", \"cal-header\", \"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", \"tabindex\", \"0\", \"role\", \"columnheader\", 3, \"cal-past\", \"cal-today\", \"cal-future\", \"cal-weekend\", \"ngClass\", \"mwlClick\", \"drop\", \"dragEnter\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", \"tabindex\", \"0\", \"role\", \"columnheader\", 1, \"cal-header\", 3, \"mwlClick\", \"drop\", \"dragEnter\", \"ngClass\"]],\n template: function CalendarWeekViewHeaderComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CalendarWeekViewHeaderComponent_ng_template_0_Template, 2, 2, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(2, CalendarWeekViewHeaderComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n }\n if (rf & 2) {\n const defaultTemplate_r9 = i0.ɵɵreference(1);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || defaultTemplate_r9)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction6(2, _c16, ctx.days, ctx.locale, ctx.dayHeaderClicked, ctx.eventDropped, ctx.dragEnter, ctx.trackByWeekDayHeaderDate));\n }\n },\n dependencies: [i1.NgClass, i1.NgForOf, i1.NgTemplateOutlet, i2.DroppableDirective, ClickDirective, CalendarDatePipe],\n encapsulation: 2\n });\n return CalendarWeekViewHeaderComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CalendarWeekViewEventComponent = /*#__PURE__*/(() => {\n class CalendarWeekViewEventComponent {\n constructor() {\n this.eventClicked = new EventEmitter();\n }\n }\n CalendarWeekViewEventComponent.ɵfac = function CalendarWeekViewEventComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarWeekViewEventComponent)();\n };\n CalendarWeekViewEventComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CalendarWeekViewEventComponent,\n selectors: [[\"mwl-calendar-week-view-event\"]],\n inputs: {\n locale: \"locale\",\n weekEvent: \"weekEvent\",\n tooltipPlacement: \"tooltipPlacement\",\n tooltipAppendToBody: \"tooltipAppendToBody\",\n tooltipDisabled: \"tooltipDisabled\",\n tooltipDelay: \"tooltipDelay\",\n customTemplate: \"customTemplate\",\n eventTitleTemplate: \"eventTitleTemplate\",\n eventActionsTemplate: \"eventActionsTemplate\",\n tooltipTemplate: \"tooltipTemplate\",\n column: \"column\",\n daysInWeek: \"daysInWeek\"\n },\n outputs: {\n eventClicked: \"eventClicked\"\n },\n decls: 3,\n vars: 12,\n consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"tabindex\", \"0\", \"role\", \"application\", 1, \"cal-event\", 3, \"mwlClick\", \"mwlKeydownEnter\", \"ngStyle\", \"mwlCalendarTooltip\", \"tooltipPlacement\", \"tooltipEvent\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"tooltipDelay\"], [3, \"event\", \"customTemplate\"], [3, \"event\", \"customTemplate\", \"view\"]],\n template: function CalendarWeekViewEventComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CalendarWeekViewEventComponent_ng_template_0_Template, 6, 27, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(2, CalendarWeekViewEventComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n }\n if (rf & 2) {\n const defaultTemplate_r11 = i0.ɵɵreference(1);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || defaultTemplate_r11)(\"ngTemplateOutletContext\", i0.ɵɵpureFunctionV(2, _c17, [ctx.weekEvent, ctx.tooltipPlacement, ctx.eventClicked, ctx.tooltipTemplate, ctx.tooltipAppendToBody, ctx.tooltipDisabled, ctx.tooltipDelay, ctx.column, ctx.daysInWeek]));\n }\n },\n dependencies: [i1.NgTemplateOutlet, i1.NgStyle, CalendarEventActionsComponent, CalendarEventTitleComponent, CalendarTooltipDirective, ClickDirective, KeydownEnterDirective, CalendarEventTitlePipe, CalendarA11yPipe],\n encapsulation: 2\n });\n return CalendarWeekViewEventComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CalendarWeekViewHourSegmentComponent = /*#__PURE__*/(() => {\n class CalendarWeekViewHourSegmentComponent {}\n CalendarWeekViewHourSegmentComponent.ɵfac = function CalendarWeekViewHourSegmentComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarWeekViewHourSegmentComponent)();\n };\n CalendarWeekViewHourSegmentComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CalendarWeekViewHourSegmentComponent,\n selectors: [[\"mwl-calendar-week-view-hour-segment\"]],\n inputs: {\n segment: \"segment\",\n segmentHeight: \"segmentHeight\",\n locale: \"locale\",\n isTimeLabel: \"isTimeLabel\",\n daysInWeek: \"daysInWeek\",\n customTemplate: \"customTemplate\"\n },\n decls: 3,\n vars: 8,\n consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-hour-segment\", 3, \"ngClass\"], [\"class\", \"cal-time\", 4, \"ngIf\"], [1, \"cal-time\"]],\n template: function CalendarWeekViewHourSegmentComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CalendarWeekViewHourSegmentComponent_ng_template_0_Template, 3, 13, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(2, CalendarWeekViewHourSegmentComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n }\n if (rf & 2) {\n const defaultTemplate_r7 = i0.ɵɵreference(1);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || defaultTemplate_r7)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction5(2, _c19, ctx.segment, ctx.locale, ctx.segmentHeight, ctx.isTimeLabel, ctx.daysInWeek));\n }\n },\n dependencies: [i1.NgClass, i1.NgIf, i1.NgTemplateOutlet, CalendarDatePipe, CalendarA11yPipe],\n encapsulation: 2\n });\n return CalendarWeekViewHourSegmentComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CalendarWeekViewCurrentTimeMarkerComponent = /*#__PURE__*/(() => {\n class CalendarWeekViewCurrentTimeMarkerComponent {\n constructor(dateAdapter, zone) {\n this.dateAdapter = dateAdapter;\n this.zone = zone;\n this.columnDate$ = new BehaviorSubject(undefined);\n this.marker$ = this.zone.onStable.pipe(switchMap(() => interval(60 * 1000)), startWith(0), switchMapTo(this.columnDate$), map(columnDate => {\n const startOfDay = this.dateAdapter.setMinutes(this.dateAdapter.setHours(columnDate, this.dayStartHour), this.dayStartMinute);\n const endOfDay = this.dateAdapter.setMinutes(this.dateAdapter.setHours(columnDate, this.dayEndHour), this.dayEndMinute);\n const hourHeightModifier = this.hourSegments * this.hourSegmentHeight / (this.hourDuration || 60);\n const now = new Date();\n return {\n isVisible: this.dateAdapter.isSameDay(columnDate, now) && now >= startOfDay && now <= endOfDay,\n top: this.dateAdapter.differenceInMinutes(now, startOfDay) * hourHeightModifier\n };\n }));\n }\n ngOnChanges(changes) {\n if (changes.columnDate) {\n this.columnDate$.next(changes.columnDate.currentValue);\n }\n }\n }\n CalendarWeekViewCurrentTimeMarkerComponent.ɵfac = function CalendarWeekViewCurrentTimeMarkerComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarWeekViewCurrentTimeMarkerComponent)(i0.ɵɵdirectiveInject(DateAdapter), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n CalendarWeekViewCurrentTimeMarkerComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CalendarWeekViewCurrentTimeMarkerComponent,\n selectors: [[\"mwl-calendar-week-view-current-time-marker\"]],\n inputs: {\n columnDate: \"columnDate\",\n dayStartHour: \"dayStartHour\",\n dayStartMinute: \"dayStartMinute\",\n dayEndHour: \"dayEndHour\",\n dayEndMinute: \"dayEndMinute\",\n hourSegments: \"hourSegments\",\n hourDuration: \"hourDuration\",\n hourSegmentHeight: \"hourSegmentHeight\",\n customTemplate: \"customTemplate\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n decls: 5,\n vars: 14,\n consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"class\", \"cal-current-time-marker\", 3, \"top\", 4, \"ngIf\"], [1, \"cal-current-time-marker\"]],\n template: function CalendarWeekViewCurrentTimeMarkerComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CalendarWeekViewCurrentTimeMarkerComponent_ng_template_0_Template, 1, 1, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(2, CalendarWeekViewCurrentTimeMarkerComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n i0.ɵɵpipe(3, \"async\");\n i0.ɵɵpipe(4, \"async\");\n }\n if (rf & 2) {\n let tmp_2_0;\n const defaultTemplate_r3 = i0.ɵɵreference(1);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || defaultTemplate_r3)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction7(6, _c20, ctx.columnDate, ctx.dayStartHour, ctx.dayStartMinute, ctx.dayEndHour, ctx.dayEndMinute, (tmp_2_0 = i0.ɵɵpipeBind1(3, 2, ctx.marker$)) == null ? null : tmp_2_0.isVisible, (tmp_2_0 = i0.ɵɵpipeBind1(4, 4, ctx.marker$)) == null ? null : tmp_2_0.top));\n }\n },\n dependencies: [i1.NgIf, i1.NgTemplateOutlet, i1.AsyncPipe],\n encapsulation: 2\n });\n return CalendarWeekViewCurrentTimeMarkerComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Shows all events on a given week. Example usage:\n *\n * ```typescript\n * \n * \n * ```\n */\nlet CalendarWeekViewComponent = /*#__PURE__*/(() => {\n class CalendarWeekViewComponent {\n /**\n * @hidden\n */\n constructor(cdr, utils, locale, dateAdapter, element) {\n this.cdr = cdr;\n this.utils = utils;\n this.dateAdapter = dateAdapter;\n this.element = element;\n /**\n * An array of events to display on view\n * The schema is available here: https://github.com/mattlewis92/calendar-utils/blob/c51689985f59a271940e30bc4e2c4e1fee3fcb5c/src/calendarUtils.ts#L49-L63\n */\n this.events = [];\n /**\n * An array of day indexes (0 = sunday, 1 = monday etc) that will be hidden on the view\n */\n this.excludeDays = [];\n /**\n * The placement of the event tooltip\n */\n this.tooltipPlacement = 'auto';\n /**\n * Whether to append tooltips to the body or next to the trigger element\n */\n this.tooltipAppendToBody = true;\n /**\n * The delay in milliseconds before the tooltip should be displayed. If not provided the tooltip\n * will be displayed immediately.\n */\n this.tooltipDelay = null;\n /**\n * The precision to display events.\n * `days` will round event start and end dates to the nearest day and `minutes` will not do this rounding\n */\n this.precision = 'days';\n /**\n * Whether to snap events to a grid when dragging\n */\n this.snapDraggedEvents = true;\n /**\n * The number of segments in an hour. Must divide equally into 60.\n */\n this.hourSegments = 2;\n /**\n * The height in pixels of each hour segment\n */\n this.hourSegmentHeight = 30;\n /**\n * The minimum height in pixels of each event\n */\n this.minimumEventHeight = 30;\n /**\n * The day start hours in 24 hour time. Must be 0-23\n */\n this.dayStartHour = 0;\n /**\n * The day start minutes. Must be 0-59\n */\n this.dayStartMinute = 0;\n /**\n * The day end hours in 24 hour time. Must be 0-23\n */\n this.dayEndHour = 23;\n /**\n * The day end minutes. Must be 0-59\n */\n this.dayEndMinute = 59;\n /**\n * Called when a header week day is clicked. Adding a `cssClass` property on `$event.day` will add that class to the header element\n */\n this.dayHeaderClicked = new EventEmitter();\n /**\n * Called when an event title is clicked\n */\n this.eventClicked = new EventEmitter();\n /**\n * Called when an event is resized or dragged and dropped\n */\n this.eventTimesChanged = new EventEmitter();\n /**\n * An output that will be called before the view is rendered for the current week.\n * If you add the `cssClass` property to a day in the header it will add that class to the cell element in the template\n */\n this.beforeViewRender = new EventEmitter();\n /**\n * Called when an hour segment is clicked\n */\n this.hourSegmentClicked = new EventEmitter();\n /**\n * @hidden\n */\n this.allDayEventResizes = new Map();\n /**\n * @hidden\n */\n this.timeEventResizes = new Map();\n /**\n * @hidden\n */\n this.eventDragEnterByType = {\n allDay: 0,\n time: 0\n };\n /**\n * @hidden\n */\n this.dragActive = false;\n /**\n * @hidden\n */\n this.dragAlreadyMoved = false;\n /**\n * @hidden\n */\n this.calendarId = Symbol('angular calendar week view id');\n /**\n * @hidden\n */\n this.rtl = false;\n /**\n * @hidden\n */\n this.trackByWeekDayHeaderDate = trackByWeekDayHeaderDate;\n /**\n * @hidden\n */\n this.trackByHourSegment = trackByHourSegment;\n /**\n * @hidden\n */\n this.trackByHour = trackByHour;\n /**\n * @hidden\n */\n this.trackByWeekAllDayEvent = trackByWeekAllDayEvent;\n /**\n * @hidden\n */\n this.trackByWeekTimeEvent = trackByWeekTimeEvent;\n /**\n * @hidden\n */\n this.trackByHourColumn = (index, column) => column.hours[0] ? column.hours[0].segments[0].date.toISOString() : column;\n /**\n * @hidden\n */\n this.trackById = (index, row) => row.id;\n this.locale = locale;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n if (this.refresh) {\n this.refreshSubscription = this.refresh.subscribe(() => {\n this.refreshAll();\n this.cdr.markForCheck();\n });\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n const refreshHeader = changes.viewDate || changes.excludeDays || changes.weekendDays || changes.daysInWeek || changes.weekStartsOn;\n const refreshBody = changes.viewDate || changes.dayStartHour || changes.dayStartMinute || changes.dayEndHour || changes.dayEndMinute || changes.hourSegments || changes.hourDuration || changes.weekStartsOn || changes.weekendDays || changes.excludeDays || changes.hourSegmentHeight || changes.events || changes.daysInWeek || changes.minimumEventHeight;\n if (refreshHeader) {\n this.refreshHeader();\n }\n if (changes.events) {\n validateEvents(this.events);\n }\n if (refreshBody) {\n this.refreshBody();\n }\n if (refreshHeader || refreshBody) {\n this.emitBeforeViewRender();\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n this.rtl = typeof window !== 'undefined' && getComputedStyle(this.element.nativeElement).direction === 'rtl';\n this.cdr.detectChanges();\n }\n /**\n * @hidden\n */\n timeEventResizeStarted(eventsContainer, timeEvent, resizeEvent) {\n this.timeEventResizes.set(timeEvent.event, resizeEvent);\n this.resizeStarted(eventsContainer, timeEvent);\n }\n /**\n * @hidden\n */\n timeEventResizing(timeEvent, resizeEvent) {\n this.timeEventResizes.set(timeEvent.event, resizeEvent);\n const adjustedEvents = new Map();\n const tempEvents = [...this.events];\n this.timeEventResizes.forEach((lastResizeEvent, event) => {\n const newEventDates = this.getTimeEventResizedDates(event, lastResizeEvent);\n const adjustedEvent = {\n ...event,\n ...newEventDates\n };\n adjustedEvents.set(adjustedEvent, event);\n const eventIndex = tempEvents.indexOf(event);\n tempEvents[eventIndex] = adjustedEvent;\n });\n this.restoreOriginalEvents(tempEvents, adjustedEvents, true);\n }\n /**\n * @hidden\n */\n timeEventResizeEnded(timeEvent) {\n this.view = this.getWeekView(this.events);\n const lastResizeEvent = this.timeEventResizes.get(timeEvent.event);\n if (lastResizeEvent) {\n this.timeEventResizes.delete(timeEvent.event);\n const newEventDates = this.getTimeEventResizedDates(timeEvent.event, lastResizeEvent);\n this.eventTimesChanged.emit({\n newStart: newEventDates.start,\n newEnd: newEventDates.end,\n event: timeEvent.event,\n type: CalendarEventTimesChangedEventType.Resize\n });\n }\n }\n /**\n * @hidden\n */\n allDayEventResizeStarted(allDayEventsContainer, allDayEvent, resizeEvent) {\n this.allDayEventResizes.set(allDayEvent, {\n originalOffset: allDayEvent.offset,\n originalSpan: allDayEvent.span,\n edge: typeof resizeEvent.edges.left !== 'undefined' ? 'left' : 'right'\n });\n this.resizeStarted(allDayEventsContainer, allDayEvent, this.getDayColumnWidth(allDayEventsContainer));\n }\n /**\n * @hidden\n */\n allDayEventResizing(allDayEvent, resizeEvent, dayWidth) {\n const currentResize = this.allDayEventResizes.get(allDayEvent);\n const modifier = this.rtl ? -1 : 1;\n if (typeof resizeEvent.edges.left !== 'undefined') {\n const diff = Math.round(+resizeEvent.edges.left / dayWidth) * modifier;\n allDayEvent.offset = currentResize.originalOffset + diff;\n allDayEvent.span = currentResize.originalSpan - diff;\n } else if (typeof resizeEvent.edges.right !== 'undefined') {\n const diff = Math.round(+resizeEvent.edges.right / dayWidth) * modifier;\n allDayEvent.span = currentResize.originalSpan + diff;\n }\n }\n /**\n * @hidden\n */\n allDayEventResizeEnded(allDayEvent) {\n const currentResize = this.allDayEventResizes.get(allDayEvent);\n if (currentResize) {\n const allDayEventResizingBeforeStart = currentResize.edge === 'left';\n let daysDiff;\n if (allDayEventResizingBeforeStart) {\n daysDiff = allDayEvent.offset - currentResize.originalOffset;\n } else {\n daysDiff = allDayEvent.span - currentResize.originalSpan;\n }\n allDayEvent.offset = currentResize.originalOffset;\n allDayEvent.span = currentResize.originalSpan;\n const newDates = this.getAllDayEventResizedDates(allDayEvent.event, daysDiff, allDayEventResizingBeforeStart);\n this.eventTimesChanged.emit({\n newStart: newDates.start,\n newEnd: newDates.end,\n event: allDayEvent.event,\n type: CalendarEventTimesChangedEventType.Resize\n });\n this.allDayEventResizes.delete(allDayEvent);\n }\n }\n /**\n * @hidden\n */\n getDayColumnWidth(eventRowContainer) {\n return Math.floor(eventRowContainer.offsetWidth / this.days.length);\n }\n /**\n * @hidden\n */\n dateDragEnter(date) {\n this.lastDragEnterDate = date;\n }\n /**\n * @hidden\n */\n eventDropped(dropEvent, date, allDay) {\n if (shouldFireDroppedEvent(dropEvent, date, allDay, this.calendarId) && this.lastDragEnterDate.getTime() === date.getTime() && (!this.snapDraggedEvents || dropEvent.dropData.event !== this.lastDraggedEvent)) {\n this.eventTimesChanged.emit({\n type: CalendarEventTimesChangedEventType.Drop,\n event: dropEvent.dropData.event,\n newStart: date,\n allDay\n });\n }\n this.lastDraggedEvent = null;\n }\n /**\n * @hidden\n */\n dragEnter(type) {\n this.eventDragEnterByType[type]++;\n }\n /**\n * @hidden\n */\n dragLeave(type) {\n this.eventDragEnterByType[type]--;\n }\n /**\n * @hidden\n */\n dragStarted(eventsContainerElement, eventElement, event, useY) {\n this.dayColumnWidth = this.getDayColumnWidth(eventsContainerElement);\n const dragHelper = new CalendarDragHelper(eventsContainerElement, eventElement);\n this.validateDrag = ({\n x,\n y,\n transform\n }) => {\n const isAllowed = this.allDayEventResizes.size === 0 && this.timeEventResizes.size === 0 && dragHelper.validateDrag({\n x,\n y,\n snapDraggedEvents: this.snapDraggedEvents,\n dragAlreadyMoved: this.dragAlreadyMoved,\n transform\n });\n if (isAllowed && this.validateEventTimesChanged) {\n const newEventTimes = this.getDragMovedEventTimes(event, {\n x,\n y\n }, this.dayColumnWidth, useY);\n return this.validateEventTimesChanged({\n type: CalendarEventTimesChangedEventType.Drag,\n event: event.event,\n newStart: newEventTimes.start,\n newEnd: newEventTimes.end\n });\n }\n return isAllowed;\n };\n this.dragActive = true;\n this.dragAlreadyMoved = false;\n this.lastDraggedEvent = null;\n this.eventDragEnterByType = {\n allDay: 0,\n time: 0\n };\n if (!this.snapDraggedEvents && useY) {\n this.view.hourColumns.forEach(column => {\n const linkedEvent = column.events.find(columnEvent => columnEvent.event === event.event && columnEvent !== event);\n // hide any linked events while dragging\n if (linkedEvent) {\n linkedEvent.width = 0;\n linkedEvent.height = 0;\n }\n });\n }\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n dragMove(dayEvent, dragEvent) {\n const newEventTimes = this.getDragMovedEventTimes(dayEvent, dragEvent, this.dayColumnWidth, true);\n const originalEvent = dayEvent.event;\n const adjustedEvent = {\n ...originalEvent,\n ...newEventTimes\n };\n const tempEvents = this.events.map(event => {\n if (event === originalEvent) {\n return adjustedEvent;\n }\n return event;\n });\n this.restoreOriginalEvents(tempEvents, new Map([[adjustedEvent, originalEvent]]), this.snapDraggedEvents);\n this.dragAlreadyMoved = true;\n }\n /**\n * @hidden\n */\n allDayEventDragMove() {\n this.dragAlreadyMoved = true;\n }\n /**\n * @hidden\n */\n dragEnded(weekEvent, dragEndEvent, dayWidth, useY = false) {\n this.view = this.getWeekView(this.events);\n this.dragActive = false;\n this.validateDrag = null;\n const {\n start,\n end\n } = this.getDragMovedEventTimes(weekEvent, dragEndEvent, dayWidth, useY);\n if ((this.snapDraggedEvents || this.eventDragEnterByType[useY ? 'time' : 'allDay'] > 0) && isDraggedWithinPeriod(start, end, this.view.period)) {\n this.lastDraggedEvent = weekEvent.event;\n this.eventTimesChanged.emit({\n newStart: start,\n newEnd: end,\n event: weekEvent.event,\n type: CalendarEventTimesChangedEventType.Drag,\n allDay: !useY\n });\n }\n }\n refreshHeader() {\n this.days = this.utils.getWeekViewHeader({\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n weekendDays: this.weekendDays,\n ...getWeekViewPeriod(this.dateAdapter, this.viewDate, this.weekStartsOn, this.excludeDays, this.daysInWeek)\n });\n }\n refreshBody() {\n this.view = this.getWeekView(this.events);\n }\n refreshAll() {\n this.refreshHeader();\n this.refreshBody();\n this.emitBeforeViewRender();\n }\n emitBeforeViewRender() {\n if (this.days && this.view) {\n this.beforeViewRender.emit({\n header: this.days,\n ...this.view\n });\n }\n }\n getWeekView(events) {\n return this.utils.getWeekView({\n events,\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n precision: this.precision,\n absolutePositionedEvents: true,\n hourSegments: this.hourSegments,\n hourDuration: this.hourDuration,\n dayStart: {\n hour: this.dayStartHour,\n minute: this.dayStartMinute\n },\n dayEnd: {\n hour: this.dayEndHour,\n minute: this.dayEndMinute\n },\n segmentHeight: this.hourSegmentHeight,\n weekendDays: this.weekendDays,\n minimumEventHeight: this.minimumEventHeight,\n ...getWeekViewPeriod(this.dateAdapter, this.viewDate, this.weekStartsOn, this.excludeDays, this.daysInWeek)\n });\n }\n getDragMovedEventTimes(weekEvent, dragEndEvent, dayWidth, useY) {\n const daysDragged = roundToNearest(dragEndEvent.x, dayWidth) / dayWidth * (this.rtl ? -1 : 1);\n const minutesMoved = useY ? getMinutesMoved(dragEndEvent.y, this.hourSegments, this.hourSegmentHeight, this.eventSnapSize, this.hourDuration) : 0;\n const start = this.dateAdapter.addMinutes(addDaysWithExclusions(this.dateAdapter, weekEvent.event.start, daysDragged, this.excludeDays), minutesMoved);\n let end;\n if (weekEvent.event.end) {\n end = this.dateAdapter.addMinutes(addDaysWithExclusions(this.dateAdapter, weekEvent.event.end, daysDragged, this.excludeDays), minutesMoved);\n }\n return {\n start,\n end\n };\n }\n restoreOriginalEvents(tempEvents, adjustedEvents, snapDraggedEvents = true) {\n const previousView = this.view;\n if (snapDraggedEvents) {\n this.view = this.getWeekView(tempEvents);\n }\n const adjustedEventsArray = tempEvents.filter(event => adjustedEvents.has(event));\n this.view.hourColumns.forEach((column, columnIndex) => {\n previousView.hourColumns[columnIndex].hours.forEach((hour, hourIndex) => {\n hour.segments.forEach((segment, segmentIndex) => {\n column.hours[hourIndex].segments[segmentIndex].cssClass = segment.cssClass;\n });\n });\n adjustedEventsArray.forEach(adjustedEvent => {\n const originalEvent = adjustedEvents.get(adjustedEvent);\n const existingColumnEvent = column.events.find(columnEvent => columnEvent.event === (snapDraggedEvents ? adjustedEvent : originalEvent));\n if (existingColumnEvent) {\n // restore the original event so trackBy kicks in and the dom isn't changed\n existingColumnEvent.event = originalEvent;\n existingColumnEvent['tempEvent'] = adjustedEvent;\n if (!snapDraggedEvents) {\n existingColumnEvent.height = 0;\n existingColumnEvent.width = 0;\n }\n } else {\n // add a dummy event to the drop so if the event was removed from the original column the drag doesn't end early\n const event = {\n event: originalEvent,\n left: 0,\n top: 0,\n height: 0,\n width: 0,\n startsBeforeDay: false,\n endsAfterDay: false,\n tempEvent: adjustedEvent\n };\n column.events.push(event);\n }\n });\n });\n adjustedEvents.clear();\n }\n getTimeEventResizedDates(calendarEvent, resizeEvent) {\n const newEventDates = {\n start: calendarEvent.start,\n end: getDefaultEventEnd(this.dateAdapter, calendarEvent, this.minimumEventHeight)\n };\n const {\n end,\n ...eventWithoutEnd\n } = calendarEvent;\n const smallestResizes = {\n start: this.dateAdapter.addMinutes(newEventDates.end, this.minimumEventHeight * -1),\n end: getDefaultEventEnd(this.dateAdapter, eventWithoutEnd, this.minimumEventHeight)\n };\n const modifier = this.rtl ? -1 : 1;\n if (typeof resizeEvent.edges.left !== 'undefined') {\n const daysDiff = Math.round(+resizeEvent.edges.left / this.dayColumnWidth) * modifier;\n const newStart = addDaysWithExclusions(this.dateAdapter, newEventDates.start, daysDiff, this.excludeDays);\n if (newStart < smallestResizes.start) {\n newEventDates.start = newStart;\n } else {\n newEventDates.start = smallestResizes.start;\n }\n } else if (typeof resizeEvent.edges.right !== 'undefined') {\n const daysDiff = Math.round(+resizeEvent.edges.right / this.dayColumnWidth) * modifier;\n const newEnd = addDaysWithExclusions(this.dateAdapter, newEventDates.end, daysDiff, this.excludeDays);\n if (newEnd > smallestResizes.end) {\n newEventDates.end = newEnd;\n } else {\n newEventDates.end = smallestResizes.end;\n }\n }\n if (typeof resizeEvent.edges.top !== 'undefined') {\n const minutesMoved = getMinutesMoved(resizeEvent.edges.top, this.hourSegments, this.hourSegmentHeight, this.eventSnapSize, this.hourDuration);\n const newStart = this.dateAdapter.addMinutes(newEventDates.start, minutesMoved);\n if (newStart < smallestResizes.start) {\n newEventDates.start = newStart;\n } else {\n newEventDates.start = smallestResizes.start;\n }\n } else if (typeof resizeEvent.edges.bottom !== 'undefined') {\n const minutesMoved = getMinutesMoved(resizeEvent.edges.bottom, this.hourSegments, this.hourSegmentHeight, this.eventSnapSize, this.hourDuration);\n const newEnd = this.dateAdapter.addMinutes(newEventDates.end, minutesMoved);\n if (newEnd > smallestResizes.end) {\n newEventDates.end = newEnd;\n } else {\n newEventDates.end = smallestResizes.end;\n }\n }\n return newEventDates;\n }\n resizeStarted(eventsContainer, event, dayWidth) {\n this.dayColumnWidth = this.getDayColumnWidth(eventsContainer);\n const resizeHelper = new CalendarResizeHelper(eventsContainer, dayWidth, this.rtl);\n this.validateResize = ({\n rectangle,\n edges\n }) => {\n const isWithinBoundary = resizeHelper.validateResize({\n rectangle: {\n ...rectangle\n },\n edges\n });\n if (isWithinBoundary && this.validateEventTimesChanged) {\n let newEventDates;\n if (!dayWidth) {\n newEventDates = this.getTimeEventResizedDates(event.event, {\n rectangle,\n edges\n });\n } else {\n const modifier = this.rtl ? -1 : 1;\n if (typeof edges.left !== 'undefined') {\n const diff = Math.round(+edges.left / dayWidth) * modifier;\n newEventDates = this.getAllDayEventResizedDates(event.event, diff, !this.rtl);\n } else {\n const diff = Math.round(+edges.right / dayWidth) * modifier;\n newEventDates = this.getAllDayEventResizedDates(event.event, diff, this.rtl);\n }\n }\n return this.validateEventTimesChanged({\n type: CalendarEventTimesChangedEventType.Resize,\n event: event.event,\n newStart: newEventDates.start,\n newEnd: newEventDates.end\n });\n }\n return isWithinBoundary;\n };\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n getAllDayEventResizedDates(event, daysDiff, beforeStart) {\n let start = event.start;\n let end = event.end || event.start;\n if (beforeStart) {\n start = addDaysWithExclusions(this.dateAdapter, start, daysDiff, this.excludeDays);\n } else {\n end = addDaysWithExclusions(this.dateAdapter, end, daysDiff, this.excludeDays);\n }\n return {\n start,\n end\n };\n }\n }\n CalendarWeekViewComponent.ɵfac = function CalendarWeekViewComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarWeekViewComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(CalendarUtils), i0.ɵɵdirectiveInject(LOCALE_ID), i0.ɵɵdirectiveInject(DateAdapter), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n CalendarWeekViewComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CalendarWeekViewComponent,\n selectors: [[\"mwl-calendar-week-view\"]],\n inputs: {\n viewDate: \"viewDate\",\n events: \"events\",\n excludeDays: \"excludeDays\",\n refresh: \"refresh\",\n locale: \"locale\",\n tooltipPlacement: \"tooltipPlacement\",\n tooltipTemplate: \"tooltipTemplate\",\n tooltipAppendToBody: \"tooltipAppendToBody\",\n tooltipDelay: \"tooltipDelay\",\n weekStartsOn: \"weekStartsOn\",\n headerTemplate: \"headerTemplate\",\n eventTemplate: \"eventTemplate\",\n eventTitleTemplate: \"eventTitleTemplate\",\n eventActionsTemplate: \"eventActionsTemplate\",\n precision: \"precision\",\n weekendDays: \"weekendDays\",\n snapDraggedEvents: \"snapDraggedEvents\",\n hourSegments: \"hourSegments\",\n hourDuration: \"hourDuration\",\n hourSegmentHeight: \"hourSegmentHeight\",\n minimumEventHeight: \"minimumEventHeight\",\n dayStartHour: \"dayStartHour\",\n dayStartMinute: \"dayStartMinute\",\n dayEndHour: \"dayEndHour\",\n dayEndMinute: \"dayEndMinute\",\n hourSegmentTemplate: \"hourSegmentTemplate\",\n eventSnapSize: \"eventSnapSize\",\n allDayEventsLabelTemplate: \"allDayEventsLabelTemplate\",\n daysInWeek: \"daysInWeek\",\n currentTimeMarkerTemplate: \"currentTimeMarkerTemplate\",\n validateEventTimesChanged: \"validateEventTimesChanged\",\n resizeCursors: \"resizeCursors\"\n },\n outputs: {\n dayHeaderClicked: \"dayHeaderClicked\",\n eventClicked: \"eventClicked\",\n eventTimesChanged: \"eventTimesChanged\",\n beforeViewRender: \"beforeViewRender\",\n hourSegmentClicked: \"hourSegmentClicked\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n decls: 8,\n vars: 9,\n consts: [[\"dayColumns\", \"\"], [\"allDayEventsContainer\", \"\"], [\"eventRowContainer\", \"\"], [\"event\", \"\"], [\"weekEventTemplate\", \"\"], [\"role\", \"grid\", 1, \"cal-week-view\"], [3, \"dayHeaderClicked\", \"eventDropped\", \"dragEnter\", \"days\", \"locale\", \"customTemplate\"], [\"class\", \"cal-all-day-events\", \"mwlDroppable\", \"\", 3, \"dragEnter\", \"dragLeave\", 4, \"ngIf\"], [\"mwlDroppable\", \"\", 1, \"cal-time-events\", 3, \"dragEnter\", \"dragLeave\"], [\"class\", \"cal-time-label-column\", 4, \"ngIf\"], [1, \"cal-day-columns\"], [\"class\", \"cal-day-column\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", 1, \"cal-all-day-events\", 3, \"dragEnter\", \"dragLeave\"], [1, \"cal-time-label-column\"], [4, \"ngTemplateOutlet\"], [\"class\", \"cal-day-column\", \"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 3, \"drop\", \"dragEnter\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"class\", \"cal-events-row\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 1, \"cal-day-column\", 3, \"drop\", \"dragEnter\"], [1, \"cal-events-row\"], [\"class\", \"cal-event-container\", \"mwlResizable\", \"\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"cal-draggable\", \"cal-starts-within-week\", \"cal-ends-within-week\", \"ngClass\", \"width\", \"marginLeft\", \"marginRight\", \"resizeCursors\", \"resizeSnapGrid\", \"validateResize\", \"dropData\", \"dragAxis\", \"dragSnapGrid\", \"validateDrag\", \"touchStartLongPress\", \"resizeStart\", \"resizing\", \"resizeEnd\", \"dragStart\", \"dragging\", \"dragEnd\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlResizable\", \"\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 1, \"cal-event-container\", 3, \"resizeStart\", \"resizing\", \"resizeEnd\", \"dragStart\", \"dragging\", \"dragEnd\", \"ngClass\", \"resizeCursors\", \"resizeSnapGrid\", \"validateResize\", \"dropData\", \"dragAxis\", \"dragSnapGrid\", \"validateDrag\", \"touchStartLongPress\"], [\"class\", \"cal-resize-handle cal-resize-handle-before-start\", \"mwlResizeHandle\", \"\", 3, \"resizeEdges\", 4, \"ngIf\"], [3, \"eventClicked\", \"locale\", \"weekEvent\", \"tooltipPlacement\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"tooltipDelay\", \"customTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\", \"daysInWeek\"], [\"class\", \"cal-resize-handle cal-resize-handle-after-end\", \"mwlResizeHandle\", \"\", 3, \"resizeEdges\", 4, \"ngIf\"], [\"mwlResizeHandle\", \"\", 1, \"cal-resize-handle\", \"cal-resize-handle-before-start\", 3, \"resizeEdges\"], [\"mwlResizeHandle\", \"\", 1, \"cal-resize-handle\", \"cal-resize-handle-after-end\", 3, \"resizeEdges\"], [\"class\", \"cal-hour\", 3, \"cal-hour-odd\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [1, \"cal-hour\"], [3, \"height\", \"segment\", \"segmentHeight\", \"locale\", \"customTemplate\", \"isTimeLabel\", \"daysInWeek\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"segment\", \"segmentHeight\", \"locale\", \"customTemplate\", \"isTimeLabel\", \"daysInWeek\"], [1, \"cal-day-column\"], [3, \"columnDate\", \"dayStartHour\", \"dayStartMinute\", \"dayEndHour\", \"dayEndMinute\", \"hourSegments\", \"hourDuration\", \"hourSegmentHeight\", \"customTemplate\"], [1, \"cal-events-container\"], [\"class\", \"cal-event-container\", \"mwlResizable\", \"\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"cal-draggable\", \"cal-starts-within-day\", \"cal-ends-within-day\", \"ngClass\", \"hidden\", \"top\", \"height\", \"left\", \"width\", \"resizeCursors\", \"resizeSnapGrid\", \"validateResize\", \"allowNegativeResizes\", \"dropData\", \"dragAxis\", \"dragSnapGrid\", \"touchStartLongPress\", \"ghostDragEnabled\", \"ghostElementTemplate\", \"validateDrag\", \"resizeStart\", \"resizing\", \"resizeEnd\", \"dragStart\", \"dragging\", \"dragEnd\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlResizable\", \"\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 1, \"cal-event-container\", 3, \"resizeStart\", \"resizing\", \"resizeEnd\", \"dragStart\", \"dragging\", \"dragEnd\", \"ngClass\", \"hidden\", \"resizeCursors\", \"resizeSnapGrid\", \"validateResize\", \"allowNegativeResizes\", \"dropData\", \"dragAxis\", \"dragSnapGrid\", \"touchStartLongPress\", \"ghostDragEnabled\", \"ghostElementTemplate\", \"validateDrag\"], [3, \"ngTemplateOutlet\"], [3, \"eventClicked\", \"locale\", \"weekEvent\", \"tooltipPlacement\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"tooltipDisabled\", \"tooltipDelay\", \"customTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\", \"column\", \"daysInWeek\"], [\"mwlDroppable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"height\", \"segment\", \"segmentHeight\", \"locale\", \"customTemplate\", \"daysInWeek\", \"clickListenerDisabled\", \"dragOverClass\", \"isTimeLabel\", \"mwlClick\", \"drop\", \"dragEnter\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"mwlClick\", \"drop\", \"dragEnter\", \"segment\", \"segmentHeight\", \"locale\", \"customTemplate\", \"daysInWeek\", \"clickListenerDisabled\", \"dragOverClass\", \"isTimeLabel\"]],\n template: function CalendarWeekViewComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 5)(1, \"mwl-calendar-week-view-header\", 6);\n i0.ɵɵlistener(\"dayHeaderClicked\", function CalendarWeekViewComponent_Template_mwl_calendar_week_view_header_dayHeaderClicked_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.dayHeaderClicked.emit($event));\n })(\"eventDropped\", function CalendarWeekViewComponent_Template_mwl_calendar_week_view_header_eventDropped_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.eventDropped({\n dropData: $event\n }, $event.newStart, true));\n })(\"dragEnter\", function CalendarWeekViewComponent_Template_mwl_calendar_week_view_header_dragEnter_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.dateDragEnter($event.date));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(2, CalendarWeekViewComponent_div_2_Template, 7, 5, \"div\", 7);\n i0.ɵɵelementStart(3, \"div\", 8);\n i0.ɵɵlistener(\"dragEnter\", function CalendarWeekViewComponent_Template_div_dragEnter_3_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.dragEnter(\"time\"));\n })(\"dragLeave\", function CalendarWeekViewComponent_Template_div_dragLeave_3_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.dragLeave(\"time\"));\n });\n i0.ɵɵtemplate(4, CalendarWeekViewComponent_div_4_Template, 2, 2, \"div\", 9);\n i0.ɵɵelementStart(5, \"div\", 10, 0);\n i0.ɵɵtemplate(7, CalendarWeekViewComponent_div_7_Template, 5, 13, \"div\", 11);\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"days\", ctx.days)(\"locale\", ctx.locale)(\"customTemplate\", ctx.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.view.allDayEventRows.length > 0);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.view.hourColumns.length > 0 && ctx.daysInWeek !== 1);\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"cal-resize-active\", ctx.timeEventResizes.size > 0);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", ctx.view.hourColumns)(\"ngForTrackBy\", ctx.trackByHourColumn);\n }\n },\n dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i4.ResizableDirective, i4.ResizeHandleDirective, i2.DraggableDirective, i2.DroppableDirective, ClickDirective, CalendarWeekViewHeaderComponent, CalendarWeekViewEventComponent, CalendarWeekViewHourSegmentComponent, CalendarWeekViewCurrentTimeMarkerComponent],\n encapsulation: 2\n });\n return CalendarWeekViewComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CalendarWeekModule = /*#__PURE__*/(() => {\n class CalendarWeekModule {}\n CalendarWeekModule.ɵfac = function CalendarWeekModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarWeekModule)();\n };\n CalendarWeekModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: CalendarWeekModule\n });\n CalendarWeekModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [CommonModule, ResizableModule, DragAndDropModule, CalendarCommonModule, ResizableModule, DragAndDropModule]\n });\n return CalendarWeekModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Shows all events on a given day. Example usage:\n *\n * ```typescript\n * \n * \n * ```\n */\nlet CalendarDayViewComponent = /*#__PURE__*/(() => {\n class CalendarDayViewComponent {\n constructor() {\n /**\n * An array of events to display on view\n * The schema is available here: https://github.com/mattlewis92/calendar-utils/blob/c51689985f59a271940e30bc4e2c4e1fee3fcb5c/src/calendarUtils.ts#L49-L63\n */\n this.events = [];\n /**\n * The number of segments in an hour. Must divide equally into 60.\n */\n this.hourSegments = 2;\n /**\n * The height in pixels of each hour segment\n */\n this.hourSegmentHeight = 30;\n /**\n * The minimum height in pixels of each event\n */\n this.minimumEventHeight = 30;\n /**\n * The day start hours in 24 hour time. Must be 0-23\n */\n this.dayStartHour = 0;\n /**\n * The day start minutes. Must be 0-59\n */\n this.dayStartMinute = 0;\n /**\n * The day end hours in 24 hour time. Must be 0-23\n */\n this.dayEndHour = 23;\n /**\n * The day end minutes. Must be 0-59\n */\n this.dayEndMinute = 59;\n /**\n * The placement of the event tooltip\n */\n this.tooltipPlacement = 'auto';\n /**\n * Whether to append tooltips to the body or next to the trigger element\n */\n this.tooltipAppendToBody = true;\n /**\n * The delay in milliseconds before the tooltip should be displayed. If not provided the tooltip\n * will be displayed immediately.\n */\n this.tooltipDelay = null;\n /**\n * Whether to snap events to a grid when dragging\n */\n this.snapDraggedEvents = true;\n /**\n * Called when an event title is clicked\n */\n this.eventClicked = new EventEmitter();\n /**\n * Called when an hour segment is clicked\n */\n this.hourSegmentClicked = new EventEmitter();\n /**\n * Called when an event is resized or dragged and dropped\n */\n this.eventTimesChanged = new EventEmitter();\n /**\n * An output that will be called before the view is rendered for the current day.\n * If you add the `cssClass` property to an hour grid segment it will add that class to the hour segment in the template\n */\n this.beforeViewRender = new EventEmitter();\n }\n }\n CalendarDayViewComponent.ɵfac = function CalendarDayViewComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarDayViewComponent)();\n };\n CalendarDayViewComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CalendarDayViewComponent,\n selectors: [[\"mwl-calendar-day-view\"]],\n inputs: {\n viewDate: \"viewDate\",\n events: \"events\",\n hourSegments: \"hourSegments\",\n hourSegmentHeight: \"hourSegmentHeight\",\n hourDuration: \"hourDuration\",\n minimumEventHeight: \"minimumEventHeight\",\n dayStartHour: \"dayStartHour\",\n dayStartMinute: \"dayStartMinute\",\n dayEndHour: \"dayEndHour\",\n dayEndMinute: \"dayEndMinute\",\n refresh: \"refresh\",\n locale: \"locale\",\n eventSnapSize: \"eventSnapSize\",\n tooltipPlacement: \"tooltipPlacement\",\n tooltipTemplate: \"tooltipTemplate\",\n tooltipAppendToBody: \"tooltipAppendToBody\",\n tooltipDelay: \"tooltipDelay\",\n hourSegmentTemplate: \"hourSegmentTemplate\",\n eventTemplate: \"eventTemplate\",\n eventTitleTemplate: \"eventTitleTemplate\",\n eventActionsTemplate: \"eventActionsTemplate\",\n snapDraggedEvents: \"snapDraggedEvents\",\n allDayEventsLabelTemplate: \"allDayEventsLabelTemplate\",\n currentTimeMarkerTemplate: \"currentTimeMarkerTemplate\",\n validateEventTimesChanged: \"validateEventTimesChanged\",\n resizeCursors: \"resizeCursors\"\n },\n outputs: {\n eventClicked: \"eventClicked\",\n hourSegmentClicked: \"hourSegmentClicked\",\n eventTimesChanged: \"eventTimesChanged\",\n beforeViewRender: \"beforeViewRender\"\n },\n decls: 1,\n vars: 27,\n consts: [[1, \"cal-day-view\", 3, \"eventClicked\", \"hourSegmentClicked\", \"eventTimesChanged\", \"beforeViewRender\", \"daysInWeek\", \"viewDate\", \"events\", \"hourSegments\", \"hourDuration\", \"hourSegmentHeight\", \"minimumEventHeight\", \"dayStartHour\", \"dayStartMinute\", \"dayEndHour\", \"dayEndMinute\", \"refresh\", \"locale\", \"eventSnapSize\", \"tooltipPlacement\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"tooltipDelay\", \"resizeCursors\", \"hourSegmentTemplate\", \"eventTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\", \"snapDraggedEvents\", \"allDayEventsLabelTemplate\", \"currentTimeMarkerTemplate\", \"validateEventTimesChanged\"]],\n template: function CalendarDayViewComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"mwl-calendar-week-view\", 0);\n i0.ɵɵlistener(\"eventClicked\", function CalendarDayViewComponent_Template_mwl_calendar_week_view_eventClicked_0_listener($event) {\n return ctx.eventClicked.emit($event);\n })(\"hourSegmentClicked\", function CalendarDayViewComponent_Template_mwl_calendar_week_view_hourSegmentClicked_0_listener($event) {\n return ctx.hourSegmentClicked.emit($event);\n })(\"eventTimesChanged\", function CalendarDayViewComponent_Template_mwl_calendar_week_view_eventTimesChanged_0_listener($event) {\n return ctx.eventTimesChanged.emit($event);\n })(\"beforeViewRender\", function CalendarDayViewComponent_Template_mwl_calendar_week_view_beforeViewRender_0_listener($event) {\n return ctx.beforeViewRender.emit($event);\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"daysInWeek\", 1)(\"viewDate\", ctx.viewDate)(\"events\", ctx.events)(\"hourSegments\", ctx.hourSegments)(\"hourDuration\", ctx.hourDuration)(\"hourSegmentHeight\", ctx.hourSegmentHeight)(\"minimumEventHeight\", ctx.minimumEventHeight)(\"dayStartHour\", ctx.dayStartHour)(\"dayStartMinute\", ctx.dayStartMinute)(\"dayEndHour\", ctx.dayEndHour)(\"dayEndMinute\", ctx.dayEndMinute)(\"refresh\", ctx.refresh)(\"locale\", ctx.locale)(\"eventSnapSize\", ctx.eventSnapSize)(\"tooltipPlacement\", ctx.tooltipPlacement)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"tooltipAppendToBody\", ctx.tooltipAppendToBody)(\"tooltipDelay\", ctx.tooltipDelay)(\"resizeCursors\", ctx.resizeCursors)(\"hourSegmentTemplate\", ctx.hourSegmentTemplate)(\"eventTemplate\", ctx.eventTemplate)(\"eventTitleTemplate\", ctx.eventTitleTemplate)(\"eventActionsTemplate\", ctx.eventActionsTemplate)(\"snapDraggedEvents\", ctx.snapDraggedEvents)(\"allDayEventsLabelTemplate\", ctx.allDayEventsLabelTemplate)(\"currentTimeMarkerTemplate\", ctx.currentTimeMarkerTemplate)(\"validateEventTimesChanged\", ctx.validateEventTimesChanged);\n }\n },\n dependencies: [CalendarWeekViewComponent],\n encapsulation: 2\n });\n return CalendarDayViewComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CalendarDayModule = /*#__PURE__*/(() => {\n class CalendarDayModule {}\n CalendarDayModule.ɵfac = function CalendarDayModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarDayModule)();\n };\n CalendarDayModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: CalendarDayModule\n });\n CalendarDayModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [CommonModule, CalendarCommonModule, CalendarWeekModule]\n });\n return CalendarDayModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * The main module of this library. Example usage:\n *\n * ```typescript\n * import { CalenderModule } from 'angular-calendar';\n *\n * @NgModule({\n * imports: [\n * CalenderModule.forRoot()\n * ]\n * })\n * class MyModule {}\n * ```\n *\n */\nlet CalendarModule = /*#__PURE__*/(() => {\n class CalendarModule {\n static forRoot(dateAdapter, config = {}) {\n return {\n ngModule: CalendarModule,\n providers: [dateAdapter, config.eventTitleFormatter || CalendarEventTitleFormatter, config.dateFormatter || CalendarDateFormatter, config.utils || CalendarUtils, config.a11y || CalendarA11y]\n };\n }\n }\n CalendarModule.ɵfac = function CalendarModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CalendarModule)();\n };\n CalendarModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: CalendarModule\n });\n CalendarModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [CalendarCommonModule, CalendarMonthModule, CalendarWeekModule, CalendarDayModule, CalendarCommonModule, CalendarMonthModule, CalendarWeekModule, CalendarDayModule]\n });\n return CalendarModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/*\n * Public API Surface of angular-calendar\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CalendarA11y, CalendarAngularDateFormatter, CalendarCommonModule, CalendarDateFormatter, CalendarDayModule, CalendarDayViewComponent, CalendarEventTimesChangedEventType, CalendarEventTitleFormatter, CalendarModule, CalendarMomentDateFormatter, CalendarMonthModule, CalendarMonthViewComponent, CalendarNativeDateFormatter, CalendarUtils, CalendarView, CalendarWeekModule, CalendarWeekViewComponent, DateAdapter, MOMENT, collapseAnimation, getWeekViewPeriod, CalendarA11yPipe as ɵCalendarA11yPipe, CalendarDatePipe as ɵCalendarDatePipe, CalendarEventActionsComponent as ɵCalendarEventActionsComponent, CalendarEventTitleComponent as ɵCalendarEventTitleComponent, CalendarEventTitlePipe as ɵCalendarEventTitlePipe, CalendarMonthCellComponent as ɵCalendarMonthCellComponent, CalendarMonthViewHeaderComponent as ɵCalendarMonthViewHeaderComponent, CalendarNextViewDirective as ɵCalendarNextViewDirective, CalendarOpenDayEventsComponent as ɵCalendarOpenDayEventsComponent, CalendarPreviousViewDirective as ɵCalendarPreviousViewDirective, CalendarTodayDirective as ɵCalendarTodayDirective, CalendarTooltipDirective as ɵCalendarTooltipDirective, CalendarTooltipWindowComponent as ɵCalendarTooltipWindowComponent, CalendarWeekViewCurrentTimeMarkerComponent as ɵCalendarWeekViewCurrentTimeMarkerComponent, CalendarWeekViewEventComponent as ɵCalendarWeekViewEventComponent, CalendarWeekViewHeaderComponent as ɵCalendarWeekViewHeaderComponent, CalendarWeekViewHourSegmentComponent as ɵCalendarWeekViewHourSegmentComponent, ClickDirective as ɵClickDirective, KeydownEnterDirective as ɵKeydownEnterDirective };\n\n"],"names":["Positioning","element","prop","offsetParentEl","round","elPosition","parentOffset","elBcr","viewportOffset","elOffset","hostElement","targetElement","placement","appendToBody","_a","_b","placementPrimary","_c","placementSecondary","hostElPosition","targetElStyles","marginTop","marginBottom","marginLeft","marginRight","topPosition","leftPosition","targetElBCR","html","windowHeight","windowWidth","placementSeparator","positionService","Positioning","positionElements","hostElement","targetElement","placement","appendToBody","baseClass","placementVals","allowedPlacements","classList","addClassesToTarget","targetPlacement","_a","primary","secondary","classes","classname","placementToRemove","hasAuto","val","obj","style","testPlacement","isInViewport","_i","placementVals_1","addedClasses","__assign","s","i","p","__spreadArray","to","from","pack","l","ar","DAYS_OF_WEEK","DEFAULT_WEEKEND_DAYS","DAYS_IN_WEEK","HOURS_IN_DAY","MINUTES_IN_HOUR","SECONDS_IN_DAY","getExcludedSeconds","dateAdapter","_a","startDate","seconds","excluded","precision","addSeconds","getDay","addDays","endDate","dayStart","dayEnd","result","current","_loop_1","day","excludedDay","calculateExcludedSeconds","differenceInSeconds","endOfDay","startOfDay","getWeekViewEventSpan","event","offset","startOfWeekDate","totalDaysInView","max","differenceInDays","span","begin","offsetSeconds","totalLength","secondsInView","getWeekViewEventOffset","isEventIsPeriod","periodStart","periodEnd","isSameSecond","eventStart","eventEnd","getEventsInPeriod","events","getWeekDay","date","_b","weekendDays","isSameDay","today","getWeekViewHeader","viewDate","weekStartsOn","_c","viewStart","_d","viewEnd","days","e","getDifferenceInDaysWithExclusions","date1","date2","diff","getAllDayWeekEvents","_e","absolutePositionedEvents","maxRange","eventsMapped","entry","itemA","itemB","startSecondsDiff","allDayEventRows","allocatedEvents","index","rowSpan_1","otherRowEvents","nextEvent","nextEventOffset","weekEvents","id","weekEvent","getWeekViewHourGrid","hourSegments","hourDuration","segmentHeight","minimumEventHeight","dayViewHourGrid","getDayViewHourGrid","weekDays","setHours","setMinutes","getHours","getMinutes","dayView","getDayView","hours","hour","segments","segment","getColumnCount","allEvents","prevOverlappingEvents","columnCount","iEvent","nextOverlappingEvents","getOverLappingWeekViewEvents","mappedEvents","width","overLappingEvents","otherEvent","getWeekView","_f","_g","eventsInPeriod","header","getMonthView","startOfWeek","endOfWeek","addHours","isSameMonth","start","end","eventsInMonth","initialViewDays","previousDate","_loop_2","totalDaysVisibleInWeek","row","isRowInMonth","rows","rowOffsets","top","bottom","previousEvent","previousEventTop","previousEventBottom","eventWidth","startOfMinute","differenceInMinutes","startOfView","sanitiseHours","sanitiseMinutes","endOfView","previousDayEvents","dayViewEvents","eventA","eventB","startsBeforeDay","endsAfterDay","hourHeightModifier","eventOffset","startOffset","timezoneOffset","height","overlappingPreviousEvents","left","dayEvent","allDayEvents","minutes","addMinutes","segmentDuration","startOfViewDay","endOfViewDay","dateAdjustment","d","dayDuration","j","EventValidationErrorMessage","validateEvents","log","isValid","isError","msg","getDef","f","d","boolean","func","def","arguments$1","_len","args","_key","_typeof","obj","isElement$1","input","indexOfElement","elements","element","resolveElement","i","hasElement","pushElements","toAdd","addElements","len","removeElements","toRemove","last","e","index","noThrow","createPointCB","object","options","allowUpdate","event","eventDoc","doc","body","createWindowRect","props","rect","getClientRect","el","pointInside","point","objectCreate","undefined$1","Temp","prototype","propertiesObject","result","objectCreate$1","mouseEventProps","createDispatcher","defaultSettings","onMove","dispatch","initMove","data","evt","createMoveInit","setSpecial","settings","name","destroy","prefix","requestFrame","limit","lastTime","callback","now","ttc","timer","cancelFrame","AutoScroller","self","maxSpeed","scrolling","margin","pointCB","dispatcher","down","forceCleanAnimation","onDown","onUp","onMouseOut","setScroll","cleanAnimation","hasWindow","windowAnimationFrame","temp","current","animationFrame","getTarget","target","getElementUnderPoint","underPoint","inside","scrollWindow","scrollTick","autoScroll","scrollx","scrolly","scrollY","scrollX","amount","AutoScrollerFactory","bundle_es_default","addClass","renderer","element","classToAdd","className","removeClass","classToRemove","DraggableHelper","Subject","__ngFactoryType__","ɵɵdefineInjectable","DraggableScrollContainerDirective","elementRef","ɵɵdirectiveInject","ElementRef","ɵɵdefineDirective","DraggableDirective","draggableHelper","zone","vcr","scrollContainer","document","EventEmitter","pointerDragged$","filter","mergeMap","pointerDownEvent","globalDragStyle","startScrollPosition","scrollContainerScroll$","Observable","observer","e","startWith","map","currentDrag$","cancelDrag$","ReplaySubject","dragComplete$","merge","share","pointerMove","combineLatest","pointerMoveEvent","scroll","moveData","scrollX","scrollY","__spreadProps","__spreadValues","x","y","transformX","transformY","takeUntil","dragStarted$","take","dragEnded$","takeLast","clientX","clientY","bundle_es_default","rect","clone","viewRef","node","dragEndData","dragEndData$","count","calledCount","dragCancelled","value","pairwise","previous","next","target","transform","changes","canDrag","hasEventListeners","event","mouseMoveEvent","isDragActivated","hasContainerScrollbar","contextMenuListener","fromEvent","touchMoveListener","touchMoveEvent","type","styles","key","moveScrollPosition","deltaScroll","deltaX","deltaY","deltaTotal","longPressConfig","containerHasHorizontalScroll","containerHasVerticalScroll","Renderer2","NgZone","ViewContainerRef","DOCUMENT","ɵɵNgOnChangesFeature","isCoordinateWithinRectangle","DroppableDirective","drag$","droppableElement","deregisterScrollListener","currentDragEvent","overlaps$","dropData","isWithinElement","isDropAllowed","overlapsChanged$","distinctUntilChanged","dragOverActive","overlapsNow","didOverlap","DragAndDropModule","ɵɵdefineNgModule","ɵɵdefineInjector","IS_TOUCH_DEVICE","deepCloneNode","node","clone","descendantsWithId","nodeName","descendant","transferCanvasData","transferInputData","transferData","selector","callback","descendantElements","cloneElements","i","cloneUniqueId","source","context","getNewBoundingRectangle","startingRect","edges","clientX","clientY","newBoundingRect","getElementRect","element","ghostElementPositioning","translateX","translateY","style","transform","property","value","boundingRect","DEFAULT_RESIZE_CURSORS","getResizeCursor","cursors","getEdgesDiff","initialRectangle","newRectangle","edgesDiff","edge","RESIZE_ACTIVE_CLASS","RESIZE_GHOST_ELEMENT_CLASS","MOUSE_MOVE_THROTTLE_MS","ResizableDirective","platformId","renderer","elm","zone","EventEmitter","Subject","PointerEventListeners","mousedown$","merge","mousemove$","tap","event","currentResize","share","mouseup$","removeGhostElement","getResizeCursors","__spreadValues","mergeMap","startCoords","getDiff","moveCoords","getSnapGrid","snapGrid","getGrid","coords","take","map","pairwise","previousCoords","newCoords","filter","previousGrid","newGrid","takeUntil","resizeCursors","cursor","isPlatformBrowser","name","add","__ngFactoryType__","ɵɵdirectiveInject","PLATFORM_ID","Renderer2","ElementRef","NgZone","ɵɵdefineDirective","_PointerEventListeners","Observable","observer","unsubscribeMouseDown","unsubscribeTouchStart","unsubscribeMouseMove","unsubscribeTouchMove","unsubscribeMouseUp","unsubscribeTouchEnd","unsubscribeTouchCancel","ResizeHandleDirective","resizableDirective","touchMoveEvent","mouseMoveEvent","type","eventName","fromEvent","ResizableModule","ɵɵdefineNgModule","ɵɵdefineInjector","_c0","a0","a1","_c1","CalendarEventActionsComponent_ng_template_0_span_0_a_1_Template","rf","ctx","_r1","ɵɵgetCurrentView","ɵɵelementStart","ɵɵpipe","ɵɵlistener","$event","action_r2","ɵɵrestoreView","event_r3","ɵɵnextContext","ɵɵresetView","ɵɵelementEnd","ɵɵproperty","ɵɵsanitizeHtml","ɵɵattribute","ɵɵpipeBind2","ɵɵpureFunction1","CalendarEventActionsComponent_ng_template_0_span_0_Template","ɵɵtemplate","ctx_r3","trackByActionId_r5","ɵɵadvance","CalendarEventActionsComponent_ng_template_0_Template","CalendarEventActionsComponent_ng_template_2_Template","_c2","_c3","CalendarEventTitleComponent_ng_template_0_Template","ɵɵelement","event_r1","view_r2","ɵɵpipeBind3","ɵɵpureFunction0","CalendarEventTitleComponent_ng_template_2_Template","_c4","a2","CalendarTooltipWindowComponent_ng_template_0_Template","contents_r1","placement_r2","CalendarTooltipWindowComponent_ng_template_2_Template","_c5","a3","a4","a5","a6","a7","a8","a9","a10","a11","_c6","_c7","_c8","_c9","_c10","CalendarMonthCellComponent_ng_template_0_span_3_Template","ɵɵtext","day_r1","ɵɵtextInterpolate","CalendarMonthCellComponent_ng_template_0_div_7_div_1_Template","_r2","highlightDay_r4","unhighlightDay_r5","eventClicked_r6","ctx_r6","tooltipPlacement_r8","tooltipTemplate_r9","tooltipAppendToBody_r10","tooltipDelay_r11","validateDrag_r12","ɵɵclassProp","ɵɵpureFunction2","CalendarMonthCellComponent_ng_template_0_div_7_Template","trackByEventId_r13","CalendarMonthCellComponent_ng_template_0_Template","locale_r14","CalendarMonthCellComponent_ng_template_2_Template","_c11","_c12","_c13","_c14","CalendarOpenDayEventsComponent_ng_template_0_div_0_div_5_Template","event_r2","eventClicked_r3","validateDrag_r4","ctx_r4","CalendarOpenDayEventsComponent_ng_template_0_div_0_Template","ctx_r5","events_r7","trackByEventId_r8","CalendarOpenDayEventsComponent_ng_template_0_Template","isOpen_r9","CalendarOpenDayEventsComponent_ng_template_2_Template","_c15","CalendarMonthViewHeaderComponent_ng_template_0_div_1_Template","day_r2","ctx_r2","locale_r4","ɵɵtextInterpolate1","CalendarMonthViewHeaderComponent_ng_template_0_Template","days_r5","trackByWeekDayHeaderDate_r6","CalendarMonthViewHeaderComponent_ng_template_2_Template","CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template","day_r3","CalendarMonthViewComponent_div_3_Template","rowIndex_r5","_c16","CalendarWeekViewHeaderComponent_ng_template_0_div_1_Template","dayHeaderClicked_r3","eventDropped_r4","dragEnter_r5","locale_r6","CalendarWeekViewHeaderComponent_ng_template_0_Template","days_r7","trackByWeekDayHeaderDate_r8","CalendarWeekViewHeaderComponent_ng_template_2_Template","_c17","_c18","CalendarWeekViewEventComponent_ng_template_0_Template","eventClicked_r2","weekEvent_r3","tooltipPlacement_r4","tooltipTemplate_r5","tooltipAppendToBody_r6","tooltipDisabled_r7","tooltipDelay_r8","daysInWeek_r9","ctx_r9","ɵɵpureFunction3","CalendarWeekViewEventComponent_ng_template_2_Template","_c19","CalendarWeekViewHourSegmentComponent_ng_template_0_div_2_Template","ctx_r0","segment_r2","locale_r3","daysInWeek_r4","CalendarWeekViewHourSegmentComponent_ng_template_0_Template","segmentHeight_r5","isTimeLabel_r6","ɵɵstyleProp","CalendarWeekViewHourSegmentComponent_ng_template_2_Template","_c20","CalendarWeekViewCurrentTimeMarkerComponent_ng_template_0_div_0_Template","topPx_r1","CalendarWeekViewCurrentTimeMarkerComponent_ng_template_0_Template","isVisible_r2","CalendarWeekViewCurrentTimeMarkerComponent_ng_template_2_Template","_c21","_c22","_c23","_c24","_c25","_c26","_c27","_c28","CalendarWeekViewComponent_div_2_ng_container_4_Template","ɵɵelementContainer","CalendarWeekViewComponent_div_2_div_5_Template","_r4","day_r5","CalendarWeekViewComponent_div_2_div_6_div_2_div_2_Template","CalendarWeekViewComponent_div_2_div_6_div_2_div_4_Template","CalendarWeekViewComponent_div_2_div_6_div_2_Template","_r6","allDayEvent_r7","eventRowContainer_r8","ɵɵreference","event_r9","CalendarWeekViewComponent_div_2_div_6_Template","eventRow_r10","CalendarWeekViewComponent_div_2_Template","CalendarWeekViewComponent_div_4_div_1_mwl_calendar_week_view_hour_segment_1_Template","segment_r11","CalendarWeekViewComponent_div_4_div_1_Template","hour_r12","odd_r13","CalendarWeekViewComponent_div_4_Template","CalendarWeekViewComponent_div_7_div_3_div_2_Template","CalendarWeekViewComponent_div_7_div_3_ng_template_3_Template","CalendarWeekViewComponent_div_7_div_3_ng_template_4_Template","_r18","timeEvent_r15","column_r19","CalendarWeekViewComponent_div_7_div_3_div_6_Template","CalendarWeekViewComponent_div_7_div_3_Template","_r14","dayColumns_r16","event_r17","ɵɵtemplateRefExtractor","weekEventTemplate_r20","ɵɵpureFunction4","CalendarWeekViewComponent_div_7_div_4_mwl_calendar_week_view_hour_segment_1_Template","_r21","segment_r22","CalendarWeekViewComponent_div_7_div_4_Template","hour_r23","odd_r24","CalendarWeekViewComponent_div_7_Template","ClickDirective","renderer","elm","document","EventEmitter","Subject","takeUntil","event","Observable","observer","__ngFactoryType__","ɵɵdirectiveInject","Renderer2","ElementRef","DOCUMENT","ɵɵdefineDirective","KeydownEnterDirective","host","ngZone","NgZone","CalendarA11y","i18nPlural","day","locale","formatDate","date","aria","action","ɵɵinject","I18nPluralPipe","ɵɵdefineInjectable","CalendarA11yPipe","calendarA11y","a11yParams","method","allowedMethods","iMethod","LOCALE_ID","ɵɵdefinePipe","CalendarEventActionsComponent","index","ɵɵdefineComponent","defaultTemplate_r6","NgClass","NgForOf","NgIf","NgTemplateOutlet","CalendarEventTitleFormatter","title","CalendarEventTitlePipe","calendarEventTitle","titleType","CalendarEventTitleComponent","defaultTemplate_r3","CalendarTooltipWindowComponent","CalendarTooltipDirective","elementRef","injector","componentFactoryResolver","viewContainerRef","changes","of","timer","previousPositions","positionElements","Injector","ComponentFactoryResolver$1","ViewContainerRef","ɵɵNgOnChangesFeature","CalendarView","validateEvents","events","args","isInsideLeftAndRight","outer","inner","isInsideTopAndBottom","isInside","roundToNearest","amount","precision","trackByEventId","trackByWeekDayHeaderDate","trackByHourSegment","segment","trackByHour","hour","trackByWeekAllDayEvent","weekEvent","trackByWeekTimeEvent","MINUTES_IN_HOUR","getPixelAmountInMinutes","hourSegments","hourSegmentHeight","hourDuration","getMinutesMoved","movedY","eventSnapSize","draggedInPixelsSnapSize","pixelAmountInMinutes","getDefaultEventEnd","dateAdapter","minimumMinutes","addDaysWithExclusions","days","excluded","daysCounter","daysToAdd","changeDays","result","isDraggedWithinPeriod","newStart","newEnd","period","end","shouldFireDroppedEvent","dropEvent","allDay","calendarId","getWeekViewPeriod","viewDate","weekStartsOn","daysInWeek","viewStart","endOfWeek","viewEnd","isWithinThreshold","x","y","DateAdapter","CalendarTodayDirective","dateAdapter","EventEmitter","__ngFactoryType__","ɵɵdirectiveInject","DateAdapter","ɵɵdefineDirective","rf","ctx","ɵɵlistener","CalendarAngularDateFormatter","date","locale","formatDate","weekStartsOn","excludeDays","daysInWeek","viewStart","viewEnd","getWeekViewPeriod","format","dateToFormat","showYear","ɵɵinject","ɵɵdefineInjectable","CalendarDateFormatter","ɵCalendarDateFormatter_BaseFactory","ɵɵgetInheritedFactory","CalendarDatePipe","dateFormatter","method","allowedMethods","iMethod","LOCALE_ID","ɵɵdefinePipe","CalendarUtils","args","getMonthView","getWeekViewHeader","getWeekView","MOMENT","InjectionToken","CalendarEventTimesChangedEventType","CalendarCommonModule","dateAdapter","config","CalendarEventTitleFormatter","CalendarDateFormatter","CalendarUtils","CalendarA11y","__ngFactoryType__","ɵɵdefineNgModule","ɵɵdefineInjector","I18nPluralPipe","CommonModule","CalendarMonthCellComponent","EventEmitter","trackByEventId","isWithinThreshold","ɵɵdefineComponent","rf","ctx","ɵɵclassProp","ɵɵtemplate","CalendarMonthCellComponent_ng_template_0_Template","ɵɵtemplateRefExtractor","CalendarMonthCellComponent_ng_template_2_Template","defaultTemplate_r15","ɵɵreference","ɵɵadvance","ɵɵproperty","ɵɵpureFunctionV","_c5","NgClass","NgForOf","NgIf","NgTemplateOutlet","NgStyle","DraggableDirective","CalendarTooltipDirective","ClickDirective","CalendarDatePipe","CalendarEventTitlePipe","CalendarA11yPipe","collapseAnimation","trigger","state","style","transition","animate","CalendarOpenDayEventsComponent","CalendarOpenDayEventsComponent_ng_template_0_Template","CalendarOpenDayEventsComponent_ng_template_2_Template","defaultTemplate_r10","ɵɵpureFunction5","_c11","CalendarEventActionsComponent","CalendarEventTitleComponent","KeydownEnterDirective","CalendarMonthViewHeaderComponent","trackByWeekDayHeaderDate","CalendarMonthViewHeaderComponent_ng_template_0_Template","CalendarMonthViewHeaderComponent_ng_template_2_Template","defaultTemplate_r7","ɵɵpureFunction3","_c15","CalendarMonthViewComponent","cdr","utils","locale","index","offset","day","changes","refreshHeader","refreshBody","validateEvents","event","isHighlighted","droppedOn","draggedFrom","year","month","date","newStart","newEnd","secondsDiff","activeDay","ɵɵdirectiveInject","ChangeDetectorRef","LOCALE_ID","DateAdapter","ɵɵNgOnChangesFeature","ɵɵelementStart","ɵɵlistener","$event","ɵɵelementEnd","CalendarMonthViewComponent_div_3_Template","DroppableDirective","SlicePipe","CalendarMonthModule","DragAndDropModule","CalendarDragHelper","dragContainerElement","draggableElement","x","y","snapDraggedEvents","dragAlreadyMoved","transform","isDraggedWithinThreshold","inner","outer","isTopInside","isBottomInside","isInsideLeftAndRight","CalendarResizeHelper","resizeContainerElement","minWidth","rtl","rectangle","edges","isInside","CalendarWeekViewHeaderComponent","CalendarWeekViewHeaderComponent_ng_template_0_Template","CalendarWeekViewHeaderComponent_ng_template_2_Template","defaultTemplate_r9","ɵɵpureFunction6","_c16","CalendarWeekViewEventComponent","CalendarWeekViewEventComponent_ng_template_0_Template","CalendarWeekViewEventComponent_ng_template_2_Template","defaultTemplate_r11","_c17","CalendarWeekViewHourSegmentComponent","CalendarWeekViewHourSegmentComponent_ng_template_0_Template","CalendarWeekViewHourSegmentComponent_ng_template_2_Template","_c19","CalendarWeekViewCurrentTimeMarkerComponent","zone","BehaviorSubject","switchMap","interval","startWith","switchMapTo","map","columnDate","startOfDay","endOfDay","hourHeightModifier","now","NgZone","CalendarWeekViewCurrentTimeMarkerComponent_ng_template_0_Template","CalendarWeekViewCurrentTimeMarkerComponent_ng_template_2_Template","ɵɵpipe","tmp_2_0","defaultTemplate_r3","ɵɵpureFunction7","_c20","ɵɵpipeBind1","AsyncPipe","CalendarWeekViewComponent","element","trackByHourSegment","trackByHour","trackByWeekAllDayEvent","trackByWeekTimeEvent","column","row","eventsContainer","timeEvent","resizeEvent","adjustedEvents","tempEvents","lastResizeEvent","newEventDates","adjustedEvent","__spreadValues","eventIndex","allDayEventsContainer","allDayEvent","dayWidth","currentResize","modifier","diff","allDayEventResizingBeforeStart","daysDiff","newDates","eventRowContainer","dropEvent","allDay","shouldFireDroppedEvent","type","eventsContainerElement","eventElement","useY","dragHelper","isAllowed","newEventTimes","linkedEvent","columnEvent","dayEvent","dragEvent","originalEvent","weekEvent","dragEndEvent","start","end","isDraggedWithinPeriod","getWeekViewPeriod","events","daysDragged","roundToNearest","minutesMoved","getMinutesMoved","addDaysWithExclusions","previousView","adjustedEventsArray","columnIndex","hour","hourIndex","segment","segmentIndex","existingColumnEvent","calendarEvent","getDefaultEventEnd","_a","eventWithoutEnd","__objRest","smallestResizes","resizeHelper","isWithinBoundary","beforeStart","ElementRef","_r1","ɵɵgetCurrentView","ɵɵrestoreView","ɵɵresetView","CalendarWeekViewComponent_div_2_Template","CalendarWeekViewComponent_div_4_Template","CalendarWeekViewComponent_div_7_Template","ResizableDirective","ResizeHandleDirective","CalendarWeekModule","ResizableModule","CalendarDayViewComponent","CalendarDayModule","CalendarModule"],"mappings":"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","debug_id":"f4c2441f-0af3-5745-a547-f421994a099b"}