@medplum/react-scheduling 5.1.29 → 5.1.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -3
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +4 -4
- package/dist/cjs/index.css +1 -1
- package/dist/cjs/index.css.map +4 -4
- package/dist/cjs/index.d.ts +250 -0
- package/dist/esm/index.css +1 -1
- package/dist/esm/index.css.map +4 -4
- package/dist/esm/index.d.ts +250 -0
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/index.mjs.map +4 -4
- package/package.json +9 -8
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var index_exports={};__export(index_exports,{Calendar:()=>Calendar2,ScheduleAvailabilityEditor:()=>ScheduleAvailabilityEditor,getEffectiveAvailability:()=>getEffectiveAvailability,setScheduleAvailability:()=>setScheduleAvailability});module.exports=__toCommonJS(index_exports);var NativeTemporal=globalThis.Temporal;var expectedPositive=(entityName,num)=>`Non-positive ${entityName}: ${num}`,expectedFinite=(entityName,num)=>`Non-finite ${entityName}: ${num}`,forbiddenBigIntToNumber=entityName=>`Cannot convert bigint to ${entityName}`,invalidObject="Invalid object",numberOutOfRange=(entityName,val,min,max)=>invalidEntity(entityName,val)+`; must be between ${min}-${max}`,invalidEntity=(fieldName,val)=>`Invalid ${fieldName}: ${val}`;var nanoInMicro=1e3,nanoInMilli=1e6,nanoInSec=1e9,nanoInMinute=6e10,nanoInHour=36e11;function normalizeOptions(options){return options===void 0?Object.create(null):requireObjectLike(options)}function toFiniteNumber(arg,entityName="number"){if(typeof arg=="bigint")throw new TypeError(forbiddenBigIntToNumber(entityName));if(arg=Number(arg),!Number.isFinite(arg))throw new RangeError(expectedFinite(entityName,arg));return arg}function toIntegerWithTrunc(arg,entityName){return Math.trunc(toFiniteNumber(arg,entityName))||0}function toPositiveIntegerWithTruncation(arg,entityName){return requireNumberIsPositive(toIntegerWithTrunc(arg,entityName),entityName)}function requireNumberIsPositive(num,entityName="number"){if(num<=0)throw new RangeError(expectedPositive(entityName,num));return num}function constrainToRange(num,min,max){return Math.min(Math.max(num,min),max)}function isObjectLike(arg){return arg!==null&&(typeof arg=="object"||typeof arg=="function")}function requireObjectLike(arg){if(!isObjectLike(arg))throw new TypeError(invalidObject);return arg}function createDiffFunc(unit){return(date0,date1,options)=>{let normOptions=normalizeDiffOptions(options);if(normOptions.roundingMode)return date0.until(date1,{...normOptions,largestUnit:unit,smallestUnit:unit})[unit];let duration=date0.until(date1,{...normOptions,largestUnit:unit});if(isTimeUnit(unit))return duration.total(unit);let relativeTo=!("day"in date0)&&"toPlainDate"in date0?date0.toPlainDate({day:1}):date0;return duration.total({unit,relativeTo})}}function isTimeUnit(unit){return unit==="hours"||unit==="minutes"||unit==="seconds"||unit==="milliseconds"||unit==="microseconds"||unit==="nanoseconds"}var diffYears=createDiffFunc("years"),diffMonths=createDiffFunc("months"),diffWeeks=createDiffFunc("weeks"),diffDays=createDiffFunc("days"),diffHours=createDiffFunc("hours"),diffMinutes=createDiffFunc("minutes"),diffSeconds=createDiffFunc("seconds"),diffMilliseconds=createDiffFunc("milliseconds"),diffMicroseconds=createDiffFunc("microseconds"),diffNanoseconds=createDiffFunc("nanoseconds");function normalizeDiffOptions(options){return typeof options=="string"?{roundingMode:options}:options||{}}var invalidEntity2=invalidEntity;var missingField=fieldName=>`Missing ${fieldName}`;var invalidChoice=(fieldName,val,choiceMap)=>invalidEntity(fieldName,val)+"; must be "+Object.keys(choiceMap).join(),forbiddenValueOf="Cannot use valueOf",invalidCallingContext="Invalid calling context";var exoticCalendarRequired=(calendarId,remedy)=>`Unknown calendar ${calendarId}; might need ${remedy}`,invalidTimeZone=calendarId=>invalidEntity("TimeZone",calendarId),outOfBoundsDate="Out-of-bounds date";var failedParse=s=>`Cannot parse: ${s}`,invalidSubstring=substring=>`Invalid substring: ${substring}`;var constrainToRange2=constrainToRange;function throwRangeError(message){throw new RangeError(message)}function throwTypeError(message){throw new TypeError(message)}function clampProp(props,propName,min,max,overflow){return clampEntity(propName,((props2,propName2)=>{let propVal=props2[propName2];return propVal===void 0&&throwTypeError(missingField(propName2)),propVal})(props,propName),min,max,overflow)}function clampEntity(entityName,num,min,max,overflow,choices){let clamped=constrainToRange2(num,min,max);return overflow&&num!==clamped&&throwRangeError(((entityName2,val,min2,max2,choices2)=>choices2?numberOutOfRange(entityName2,choices2[val],choices2[min2],choices2[max2]):numberOutOfRange(entityName2,val,min2,max2))(entityName,num,min,max,choices)),clamped}function memoize(generator,MapClass=Map){let map=new MapClass;return(key,...otherArgs)=>{if(map.has(key))return map.get(key);let val=generator(key,...otherArgs);return map.set(key,val),val}}var createNameDescriptors=name=>createPropDescriptors({name},1),createPropDescriptors=(propVals,readonly)=>mapProps(value=>({value,configurable:1,writable:!readonly}),propVals),createStringTagDescriptors=value=>({[Symbol.toStringTag]:{value,configurable:1}});function mapProps(transformer,props){let res={};for(let propName in props)res[propName]=transformer(props[propName],propName);return res}function zipPropsConst(propNames,propVal){let res={};for(let propName of propNames)res[propName]=propVal;return res}function createPropGetters(propNames){let getters={};for(let propName of propNames)getters[propName]=slots=>slots[propName];return getters}function pluckProps(propNames,props,dest=Object.create(null)){for(let propName of propNames)dest[propName]=props[propName];return dest}function bindArgs(f,...boundArgs){return(...dynamicArgs)=>f(...boundArgs,...dynamicArgs)}function noop(){}function capitalize(s){return s[0].toUpperCase()+s.substring(1)}function createRegExp(meat){return new RegExp(`^${meat}$`,"i")}function parseSubsecNano(fracStr){return parseInt(fracStr.padEnd(9,"0"))}function parseSign(s){return s&&s!=="+"?-1:1}function parseInt0(s){return s===void 0?0:parseInt(s)}function padNumber(digits,num){return String(num).padStart(digits,"0")}var padNumber2=bindArgs(padNumber,2);function compareNumbers(a,b){return Math.sign(a-b)}function divFloorBigInt(num,denom){let whole=num/denom;return num%denom<0n?whole-1n:whole}function divModFloorBigInt(num,divisor){let quotient=divFloorBigInt(num,divisor);return[quotient,num-quotient*divisor]}function divModFloor(num,divisor){return[Math.floor(num/divisor),modFloor(num,divisor)]}function modFloor(num,divisor){return(num%divisor+divisor)%divisor}function divTrunc(num,divisor){return Math.trunc(num/divisor)||0}function hasHalf(num){return Math.abs(num%1)===.5}function normalizeEraName(era){let normalized=era.normalize("NFD").toLowerCase().replace(/[^a-z0-9]/g,"");return normalized==="bc"||normalized==="b"?"bce":normalized==="ad"||normalized==="a"?"ce":normalized}var isoCalendarImpl=void 0;function getCalendarSlotId(calendar){return calendar===isoCalendarImpl?"iso8601":calendar===0?"gregory":calendar.id}function formatMonthCode(monthCodeNumber,isLeapMonth){return"M"+padNumber2(monthCodeNumber)+(isLeapMonth?"L":"")}var unitNameMap={nanosecond:0,microsecond:1,millisecond:2,second:3,minute:4,hour:5,day:6,week:7,month:8,year:9},unitNamesAsc=Object.keys(unitNameMap);var nanoInMicro2=nanoInMicro,nanoInMilli2=nanoInMilli,nanoInSec2=nanoInSec,nanoInMinute2=nanoInMinute,nanoInHour2=nanoInHour,nanoInUtcDay=864e11;var bigNanoInMilli=BigInt(nanoInMilli2),bigNanoInSec=BigInt(nanoInSec2);var bigNanoInUtcDay=BigInt(nanoInUtcDay);var timeFieldNamesAsc=unitNamesAsc.slice(0,6),timeGetters=createPropGetters(timeFieldNamesAsc);var calendarDateFieldNamesAsc=["day","month","year"];function validateTimeFields(timeFields){return constrainTimeFields(timeFields,1),timeFields}var maxValues={hour:23,minute:59,second:59};function constrainTimeFields(timeFields,overflow){let constrainedFields={};for(let fieldName of timeFieldNamesAsc)constrainedFields[fieldName]=clampEntity(fieldName,timeFields[fieldName],0,maxValues[fieldName]||999,overflow);return constrainedFields}function timeFieldsToNano(timeFields){return timeFieldsToSec(timeFields)*nanoInSec2+timeFieldsToSubsecNano(timeFields)}function timeFieldsToSec(timeFields){return 3600*timeFields.hour+60*timeFields.minute+timeFields.second}function timeFieldsToSubsecNano(timeFields){return timeFields.millisecond*nanoInMilli2+timeFields.microsecond*nanoInMicro2+timeFields.nanosecond}function nanoToTimeFields(timeNano){let[timeMilli,nanoAfterMilli]=divModFloor(timeNano,nanoInMilli2),[microsecond,nanosecond]=divModFloor(nanoAfterMilli,nanoInMicro2);return milliToTimeFields(timeMilli,microsecond,nanosecond)}function milliToTimeFields(timeMilli,microsecond=0,nanosecond=0){let[hour,milliAfterHour]=divModFloor(timeMilli,36e5),[minute,milliAfterMinute]=divModFloor(milliAfterHour,6e4),[second,millisecond]=divModFloor(milliAfterMinute,1e3);return{hour,minute,second,millisecond,microsecond,nanosecond}}function epochNanoToSecMod(epochNano){let[epochSec,nano]=divModFloorBigInt(epochNano,bigNanoInSec);return[Number(epochSec),Number(nano)]}function isoDateTimeToEpochNano(isoDateTime){return isoDateToEpochNano(isoDateTime)+BigInt(timeFieldsToNano(isoDateTime))}function isoDateToEpochNano(isoDate){return BigInt(isoDateToEpochDays(isoDate))*bigNanoInUtcDay}function isoDateToEpochDays(isoDate){return isoArgsToEpochDays(isoDate.year,isoDate.month,isoDate.day)}function isoArgsToEpochDays(isoYear,isoMonth=1,isoDay=1){let monthIndex=isoMonth-1;return isoYear+=Math.floor(monthIndex/12),isoMonth=modFloor(monthIndex,12),Date.UTC(isoYear%400-400,isoMonth,0)/864e5+146097*(divTrunc(isoYear,400)+1)+isoDay}function epochNanoToIsoDateTime(epochNano){let[epochDays,nanoAfterDay]=divModFloorBigInt(epochNano,bigNanoInUtcDay);return{...epochDaysToIsoDate(Number(epochDays)),...nanoToTimeFields(Number(nanoAfterDay))}}function epochDaysToIsoDate(epochDays){let legacyDate=new Date(864e5*modFloor(epochDays,146097));return{year:legacyDate.getUTCFullYear()+400*Math.floor(epochDays/146097),month:legacyDate.getUTCMonth()+1,day:legacyDate.getUTCDate()}}function computeIsoMonthCodeParts(month){return[month,0]}function computeIsoFieldsFromParts(year,month,day){return{year,month,day}}function computeIsoDaysInMonth(year,month){switch(month){case 2:return computeIsoInLeapYear(year)?29:28;case 4:case 6:case 9:case 11:return 30}return 31}function computeIsoDaysInYear(year){return computeIsoInLeapYear(year)?366:365}function computeIsoInLeapYear(year){return year%4==0&&(year%100!=0||year%400==0)}function computeIsoDayOfWeek(isoDateFields){return modFloor(isoArgsToEpochDays(isoDateFields.year,isoDateFields.month,isoDateFields.day)+4,7)||7}function computeIsoDayOfYear(isoDateFields){return isoArgsToEpochDays(isoDateFields.year,isoDateFields.month,isoDateFields.day)-isoArgsToEpochDays(isoDateFields.year)+1}function computeIsoWeekFields(isoDateFields){let yearOfWeek3=isoDateFields.year,weekOfYear4=Math.floor((computeIsoDayOfYear(isoDateFields)-computeIsoDayOfWeek(isoDateFields)+10)/7),weeksInYear=computeIsoWeeksInYear(yearOfWeek3);return weekOfYear4<1?weekOfYear4=weeksInYear=computeIsoWeeksInYear(--yearOfWeek3):weekOfYear4>weeksInYear&&(weekOfYear4=1,weeksInYear=computeIsoWeeksInYear(++yearOfWeek3)),{weekOfYear:weekOfYear4,yearOfWeek:yearOfWeek3,Be:weeksInYear}}function computeIsoWeeksInYear(year){let y0DayOfWeek=computeIsoDayOfWeek({year,month:1,day:1});return y0DayOfWeek===4||y0DayOfWeek===3&&computeIsoInLeapYear(year)?53:52}function computeGregoryEraFields({year}){return year<1?{era:"bce",eraYear:1-year}:{era:"ce",eraYear:year}}function validateIsoDateTimeFields(isoDateTime){return validateIsoDateFields(isoDateTime),validateTimeFields(isoDateTime)}function validateIsoDateFields(isoInternals){return constrainIsoDateFields(isoInternals,1),isoInternals}function constrainIsoDateFields(isoDate,overflow){let{year}=isoDate,month=clampProp(isoDate,"month",1,12,overflow);return{year,month,day:clampProp(isoDate,"day",1,computeIsoDaysInMonth(year,month),overflow)}}function computeCalendarDateFields(calendar,isoDate){return calendar?calendar.ae(isoDate):isoDate}function computeCalendarMonthCodeParts(calendar,year,month){return calendar?calendar.L(year,month):computeIsoMonthCodeParts(month)}function computeCalendarEraFields(calendar,isoDate){return calendar===0?computeGregoryEraFields(isoDate):calendar&&calendar.h?.(isoDate)||{}}function computeCalendarIsoFieldsFromParts(calendar,year,month,day){return calendar?calendar.de(year,month,day):computeIsoFieldsFromParts(year,month,day)}function computeCalendarMonthsInYearForYear(calendar,year){return calendar?calendar.j(year):12}function computeCalendarDaysInMonthForYearMonth(calendar,year,month){return calendar?calendar.o(year,month):computeIsoDaysInMonth(year,month)}function computeCalendarMonthCode(calendar,isoDate){let{year,month}=computeCalendarDateFields(calendar,isoDate),[monthCodeNumber,isLeapMonth]=computeCalendarMonthCodeParts(calendar,year,month);return formatMonthCode(monthCodeNumber,isLeapMonth)}function computeCalendarInLeapYear(calendar,isoDate){let{year}=computeCalendarDateFields(calendar,isoDate);return calendar?calendar.q(year):computeIsoInLeapYear(year)}function computeCalendarMonthsInYear(calendar,isoDate){let{year}=computeCalendarDateFields(calendar,isoDate);return computeCalendarMonthsInYearForYear(calendar,year)}function computeCalendarDaysInMonth(calendar,isoDate){let{year,month}=computeCalendarDateFields(calendar,isoDate);return computeCalendarDaysInMonthForYearMonth(calendar,year,month)}function computeCalendarDaysInYear(calendar,isoDate){let{year}=computeCalendarDateFields(calendar,isoDate);return calendar?calendar.i(year):computeIsoDaysInYear(year)}function computeCalendarDayOfYear(calendar,isoDate){if(!calendar)return computeIsoDayOfYear(isoDate);let{year}=computeCalendarDateFields(calendar,isoDate),yearStartIsoDate=computeCalendarIsoFieldsFromParts(calendar,year,1,1);return isoDateToEpochDays(isoDate)-isoDateToEpochDays(yearStartIsoDate)+1}function computeCalendarWeekOfYear(calendar,isoDate){return calendar===isoCalendarImpl?computeIsoWeekFields(isoDate).weekOfYear:void 0}function computeCalendarYearOfWeek(calendar,isoDate){return calendar===isoCalendarImpl?computeIsoWeekFields(isoDate).yearOfWeek:void 0}var requireString=bindArgs(requireType,"string");function requireType(typeName,arg,entityName=typeName){return typeof arg!==typeName&&throwTypeError(invalidEntity2(entityName,arg)),arg}function requireNumberIsInteger(num,entityName="number"){return Number.isInteger(num)||throwRangeError(((entityName2,num2)=>`Non-integer ${entityName2}: ${num2}`)(entityName,num)),num||0}function toString(arg){return typeof arg=="symbol"&&throwTypeError("Cannot convert Symbol to string"),String(arg)}function toStringViaPrimitive(arg,entityName){return isObjectLike(arg)?String(arg):requireString(arg,entityName)}function toStrictInteger(arg,entityName){return requireNumberIsInteger(toFiniteNumber(arg,entityName),entityName)}var epochDisambigMap={compatible:0,reject:1,earlier:2,later:3};var roundingModeFuncs=[Math.floor,num=>hasHalf(num)?Math.floor(num):Math.round(num),Math.ceil,num=>hasHalf(num)?Math.ceil(num):Math.round(num),Math.trunc,num=>hasHalf(num)?Math.trunc(num)||0:Math.round(num),num=>num<0?Math.floor(num):Math.ceil(num),num=>Math.sign(num)*Math.round(Math.abs(num))||0,num=>hasHalf(num)?(num=Math.trunc(num)||0)+num%2:Math.round(num)];function coerceChoiceOption(optionName,enumNameMap,options,defaultChoice=0){let enumArg=options[optionName];if(enumArg===void 0)return defaultChoice;let enumStr=toString(enumArg),enumNum=enumNameMap[enumStr];return enumNum===void 0&&throwRangeError(invalidChoice(optionName,enumStr,enumNameMap)),enumNum}var coerceEpochDisambig=bindArgs(coerceChoiceOption,"disambiguation",epochDisambigMap);function combineDateAndTime(isoDate,time){return pluckProps(calendarDateFieldNamesAsc,isoDate,pluckProps(timeFieldNamesAsc,time))}var epochNanoMax=BigInt(1e8)*bigNanoInUtcDay,epochNanoMin=BigInt(-1e8)*bigNanoInUtcDay,plainDateEpochNanoMin=epochNanoMin-bigNanoInUtcDay;function checkIsoDateInBounds(isoDate,allowPlainDateLowerEdge=1){return checkIsoDateEpochNanoInBounds(isoDateToEpochNano(isoDate),allowPlainDateLowerEdge),isoDate}function checkIsoDateTimeInBounds(isoDateTime){let epochNano=isoDateToEpochNano(isoDateTime);return checkIsoDateEpochNanoInBounds(epochNano),epochNano!==plainDateEpochNanoMin||timeFieldsToNano(isoDateTime)||throwRangeError(outOfBoundsDate),isoDateTime}function checkIsoDateEpochNanoInBounds(epochNano,allowPlainDateLowerEdge=1){(epochNano<(allowPlainDateLowerEdge?plainDateEpochNanoMin:epochNanoMin)||epochNano>epochNanoMax)&&throwRangeError(outOfBoundsDate)}function checkEpochNanoInBounds(epochNano){return(epochNano<epochNanoMin||epochNano>epochNanoMax)&&throwRangeError(outOfBoundsDate),epochNano}function isoDateTimeAndOffsetToEpochNano(isoDateTime,offsetNano){return checkEpochNanoInBounds(isoDateToEpochNano(isoDateTime)+BigInt(timeFieldsToNano(isoDateTime)-offsetNano))}function createEpochNanoSlots(epochNano){return{epochNanoseconds:epochNano}}function createZonedEpochNanoSlots(epochNano,timeZone,calendar){return{calendar,timeZone,epochNanoseconds:epochNano}}function createDateTimeSlots(isoDateTime,calendar){return pluckProps(timeFieldNamesAsc,isoDateTime,createDateSlots(isoDateTime,calendar))}function createDateSlots(isoDate,calendar){return pluckProps(calendarDateFieldNamesAsc,isoDate,{calendar})}function getEpochMilli(slots){return epochNano=slots.epochNanoseconds,Number(divFloorBigInt(epochNano,bigNanoInMilli));var epochNano}function getEpochNano(slots){return slots.epochNanoseconds}function roundToMinute(offsetNano){return roundNumberToInc(offsetNano,nanoInMinute2,7)}function roundNumberToInc(num,roundingInc,roundingMode){return roundWithMode(num/roundingInc,roundingMode)*roundingInc}function roundWithMode(num,roundingMode){return roundingModeFuncs[roundingMode](num)}var zonedEpochSlotsToIso=memoize(_zonedEpochSlotsToIso,WeakMap);function _zonedEpochSlotsToIso(slots){let{epochNanoseconds,timeZone}=slots,offsetNanoseconds4=timeZone.B(epochNanoseconds);return{...epochNanoToIsoDateTime(epochNanoseconds+BigInt(offsetNanoseconds4)),offsetNanoseconds:offsetNanoseconds4}}function getMatchingInstantFor(timeZone,isoDateTime,offsetNano,offsetDisambig=0,epochDisambig=0,epochFuzzy,hasZ){if(offsetNano!==void 0&&offsetDisambig===1&&(offsetDisambig===1||hasZ))return isoDateTimeAndOffsetToEpochNano(isoDateTime,offsetNano);offsetDisambig!==2&&offsetDisambig!==0||checkIsoDateInBounds(isoDateTime,0);let possibleEpochNanos=timeZone.N(isoDateTime);if(offsetNano!==void 0&&offsetDisambig!==3){let matchingEpochNano=((possibleEpochNanos2,isoDateTime2,offsetNano2,fuzzy)=>{let zonedEpochNano=isoDateTimeToEpochNano(isoDateTime2);fuzzy&&(offsetNano2=roundToMinute(offsetNano2));for(let possibleEpochNano of possibleEpochNanos2){let possibleOffsetNano=Number(zonedEpochNano-possibleEpochNano);if(fuzzy&&(possibleOffsetNano=roundToMinute(possibleOffsetNano)),possibleOffsetNano===offsetNano2)return possibleEpochNano}})(possibleEpochNanos,isoDateTime,offsetNano,epochFuzzy);if(matchingEpochNano!==void 0)return matchingEpochNano;offsetDisambig===0&&throwRangeError("Invalid TimeZone offset")}return hasZ?isoDateTimeToEpochNano(isoDateTime):getSingleInstantFor(timeZone,isoDateTime,epochDisambig,possibleEpochNanos)}function getSingleInstantFor(timeZone,isoDateTime,disambig=0,possibleEpochNanos=timeZone.N(isoDateTime)){if(possibleEpochNanos.length===1)return possibleEpochNanos[0];if(disambig===1&&throwRangeError("Ambiguous offset"),possibleEpochNanos.length)return possibleEpochNanos[disambig===3?1:0];let zonedEpochNano=isoDateTimeToEpochNano(isoDateTime),gapNano=((timeZone2,zonedEpochNano2)=>{let startOffsetNano=timeZone2.B(zonedEpochNano2-bigNanoInUtcDay);return(gapNano2=>(gapNano2>nanoInUtcDay&&throwRangeError("Out-of-bounds TimeZone gap"),gapNano2))(timeZone2.B(zonedEpochNano2+bigNanoInUtcDay)-startOffsetNano)})(timeZone,zonedEpochNano),shiftedIsoDateTime=epochNanoToIsoDateTime(zonedEpochNano+BigInt(gapNano*(disambig===2?-1:1)));return(possibleEpochNanos=timeZone.N(shiftedIsoDateTime))[disambig===2?0:possibleEpochNanos.length-1]}var maxDurationSeconds=2**53;var offsetRegExp=createRegExp("([+-])(\\d{2})(?::?(\\d{2})(?::?(\\d{2})(?:[.,](\\d{1,9}))?)?)?");function parseOffsetNano(s){let offsetNano=parseOffsetNanoMaybe(s);return offsetNano===void 0&&throwRangeError(failedParse(s)),offsetNano}function parseOffsetNanoMaybe(s,onlyHourMinute){let parts=offsetRegExp.exec(s);if(parts&&(s2=>(s3=>{s3[0]!=="T"&&s3[0]!=="t"||(s3=s3.slice(1));let fractionIndex=s3.search(/[.,]/),main=fractionIndex<0?s3:s3.slice(0,fractionIndex),parts2=main.split(":");return parts2.length===1?/^(?:\d{2}|\d{4}|\d{6})$/i.test(main):(parts2.length===2||parts2.length===3)&&parts2.every(part=>part.length===2&&/^\d{2}$/i.test(part))})(s2.slice(1)))(parts[0]))return((parts2,onlyHourMinute2)=>{let firstSubMinutePart=parts2[4]||parts2[5];return onlyHourMinute2&&firstSubMinutePart&&throwRangeError(invalidSubstring(firstSubMinutePart)),offsetNano=(parseInt0(parts2[2])*nanoInHour2+parseInt0(parts2[3])*nanoInMinute2+parseInt0(parts2[4])*nanoInSec2+parseSubsecNano(parts2[5]||""))*parseSign(parts2[1]),Math.abs(offsetNano)>=nanoInUtcDay&&throwRangeError("Out-of-bounds offset"),offsetNano;var offsetNano})(parts,onlyHourMinute)}var dateFieldRefiners={era:toStringViaPrimitive,month:toPositiveIntegerWithTruncation,monthCode(monthCode,entityName){if(typeof monthCode=="string")return monthCode;if(monthCode&&typeof monthCode=="object"){let monthCodeToString=monthCode.toString;if(typeof monthCodeToString=="function")return requireString(monthCodeToString.call(monthCode),entityName)}return requireString(monthCode,entityName)},day:toPositiveIntegerWithTruncation},timeFieldRefiners=zipPropsConst(timeFieldNamesAsc,toIntegerWithTrunc);var dateTimeFieldRefiners=Object.assign({},dateFieldRefiners,timeFieldRefiners),zonedDateTimeFieldRefiners={offset(offsetString){return parseOffsetNano(toStringViaPrimitive(offsetString))},...dateTimeFieldRefiners};var RawDateTimeFormat=Intl.DateTimeFormat;function formatEpochMilliToPartsRecord(intlFormat,epochMilli){epochMilli<-864e13&&throwRangeError(outOfBoundsDate);let parts=intlFormat.formatToParts(epochMilli),hash={};for(let part of parts)hash[part.type]=part.value;return hash}var timeZonePeriodDaysByName={El_Aaiun:17,Tucuman:12,Tirane:11,Riga:10,Simferopol:9,Vienna:9,Tunis:8,Boa_Vista:6,Fortaleza:6,Maceio:6,Noronha:6,Recife:6,Gaza:6,Hebron:6,DeNoronha:6},minPossibleTransitionSec=-388152e4;function formatInstantIsoAuto(instantSlots){return formatIsoDateTimeFields(epochNanoToIsoDateTime(instantSlots.epochNanoseconds),void 0)+"Z"}function formatZonedDateTimeIsoAuto(zonedDateTimeSlots){let calendar=zonedDateTimeSlots.calendar,timeZone=zonedDateTimeSlots.timeZone,offsetNano=timeZone.B(zonedDateTimeSlots.epochNanoseconds);return formatIsoDateTimeFields(epochNanoToIsoDateTime(zonedDateTimeSlots.epochNanoseconds+BigInt(offsetNano)),void 0)+formatOffsetNano(roundToMinute(offsetNano))+formatTimeZone(timeZone.id,0)+(calendar===isoCalendarImpl?"":formatCalendarId(getCalendarSlotId(calendar),0))}function formatDateTimeIsoAuto(isoDateTimeSlots){let calendar=isoDateTimeSlots.calendar;return formatIsoDateTimeFields(isoDateTimeSlots,void 0)+(calendar===isoCalendarImpl?"":formatCalendarId(getCalendarSlotId(calendar),0))}function formatIsoDateTimeFields(isoDateTime,subsecDigits){return formatIsoDateFields(isoDateTime)+"T"+formatTimeFields(isoDateTime,subsecDigits)}function formatIsoDateFields(isoDateFields){return formatIsoYearMonthFields(isoDateFields)+"-"+padNumber2(isoDateFields.day)}function formatIsoYearMonthFields(isoDateFields){let{year}=isoDateFields;return(year<0||year>9999?getSignStr(year)+padNumber(6,Math.abs(year)):padNumber(4,year))+"-"+padNumber2(isoDateFields.month)}function formatTimeFields(timeFields,subsecDigits){let parts=[padNumber2(timeFields.hour),padNumber2(timeFields.minute)];return subsecDigits!==-1&&parts.push(padNumber2(timeFields.second)+((millisecond,microsecond,nanosecond,subsecDigits2)=>formatSubsecNano(millisecond*nanoInMilli2+microsecond*nanoInMicro2+nanosecond,subsecDigits2))(timeFields.millisecond,timeFields.microsecond,timeFields.nanosecond,subsecDigits)),parts.join(":")}function formatOffsetNano(offsetNano,offsetDisplay=0){if(offsetDisplay===1)return"";let[hour,nanoRemainder0]=divModFloor(Math.abs(offsetNano),nanoInHour2),[minute,nanoRemainder1]=divModFloor(nanoRemainder0,nanoInMinute2),[second,nanoRemainder2]=divModFloor(nanoRemainder1,nanoInSec2);return getSignStr(offsetNano)+padNumber2(hour)+":"+padNumber2(minute)+(second||nanoRemainder2?":"+padNumber2(second)+formatSubsecNano(nanoRemainder2):"")}function formatTimeZone(timeZoneId,timeZoneDisplay){return timeZoneDisplay!==1?"["+(timeZoneDisplay===2?"!":"")+timeZoneId+"]":""}function formatCalendarId(calendarId,isCritical){return"["+(isCritical?"!":"")+"u-ca="+calendarId+"]"}var trailingZerosRE=/0+$/;function formatSubsecNano(totalNano,subsecDigits){let s=padNumber(9,totalNano);return s=subsecDigits===void 0?s.replace(trailingZerosRE,""):s.slice(0,subsecDigits),s?"."+s:""}function getSignStr(num){return num<0?"-":"+"}var icuRegExp=/^(AC|AE|AG|AR|AS|BE|BS|CA|CN|CS|CT|EA|EC|IE|IS|JS|MI|NE|NS|PL|PN|PR|PS|SS|VS)T$/,badCharactersRegExp=/[^\w\/:+-]+/;function refineTimeZoneId(rawId){return resolveTimeZoneId(requireString(rawId))}function resolveTimeZoneId(rawId){return resolveTimeZoneRecord(rawId).id}function resolveTimeZoneRecord(rawId){let upperRawId=rawId.toUpperCase(),offsetRecord=(upperRawId2=>{let offsetNano=parseOffsetNanoMaybe(upperRawId2,1);if(offsetNano!==void 0)return{id:formatOffsetNano(offsetNano),X:offsetNano,m:offsetNano}})(upperRawId);if(offsetRecord)return{kind:"fixed",...offsetRecord};let normId=upperRawId==="UTC"?"UTC":(rawId2=>(badCharactersRegExp.test(rawId2)&&throwRangeError(invalidTimeZone(rawId2)),icuRegExp.test(rawId2)&&throwRangeError("Forbidden ICU TimeZone"),rawId2.toLowerCase().split("/").map((part,partI)=>(part.length<=3||/\d/.test(part))&&!/etc|yap/.test(part)?part.toUpperCase():part.replace(/baja|dumont|[a-z]+/g,(a,i)=>a.length<=2&&!partI||a==="in"||a==="chat"?a.toUpperCase():a.length>2||!i?capitalize(a).replace(/island|noronha|murdo|rivadavia|urville/,capitalize):a)).join("/")))(rawId);return queryNamedTimeZoneRecord(normId)}var queryNamedTimeZoneRecord=memoize(normId=>{if(normId==="UTC")return{kind:"utc",id:normId,m:normId};let upperNormId=normId.toUpperCase(),format=queryTimeZoneIntlFormat(upperNormId);return{kind:"named",id:normId,format,m:format.resolvedOptions().timeZone}}),queryTimeZoneIntlFormat=memoize(upperNormId=>new RawDateTimeFormat("en-u-hc-h23",{calendar:"iso8601",timeZone:upperNormId,era:"short",year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric"}));function queryTimeZone(rawTimeZoneId){let record=resolveTimeZoneRecord(rawTimeZoneId);return queryTimeZoneRecord(record.id,record)}var queryTimeZoneRecord=memoize((normTimeZoneId,record)=>record.kind==="named"?new IntlTimeZone(normTimeZoneId,record.m,record.format):new FixedTimeZone(normTimeZoneId,record.m,record.kind==="fixed"?record.X:0)),FixedTimeZone=class{constructor(id,compareKey,offsetNano){this.id=id,this.m=compareKey,this.X=offsetNano}B(){return this.X}N(isoDateTime){return[isoDateTimeAndOffsetToEpochNano(isoDateTime,this.X)]}O(){}},IntlTimeZone=class{constructor(id,compareKey,format){this.id=id,this.m=compareKey,this.ke=((computeOffsetSec,periodDays)=>{let getSample=memoize(computeOffsetSec),getSplit=memoize(createSplitTuple),periodSec=86400*periodDays;function getOffsetSec(epochSec){let[startEpochSec,endEpochSec]=computePeriod(epochSec,periodSec),clampedStartEpochSec=clampIntlSampleEpochSec(startEpochSec),clampedEndEpochSec=clampIntlSampleEpochSec(endEpochSec),startOffsetSec=getSample(clampedStartEpochSec),endOffsetSec=getSample(clampedEndEpochSec);return startOffsetSec===endOffsetSec?startOffsetSec:pinch(getSplit(clampedStartEpochSec,clampedEndEpochSec),startOffsetSec,endOffsetSec,epochSec)}function pinch(split,startOffsetSec,endOffsetSec,forEpochSec){let offsetSec,splitDurSec;for(;(forEpochSec===void 0||(offsetSec=forEpochSec<split[0]?startOffsetSec:forEpochSec>=split[1]?endOffsetSec:void 0)===void 0)&&(splitDurSec=split[1]-split[0]);){let middleEpochSec=split[0]+Math.floor(splitDurSec/2);computeOffsetSec(middleEpochSec)===endOffsetSec?split[1]=middleEpochSec:split[0]=middleEpochSec+1}return offsetSec}return{xe(zonedEpochSec){let wideOffsetSec0=getOffsetSec(zonedEpochSec-86400),wideOffsetSec1=getOffsetSec(zonedEpochSec+86400),wideUtcEpochSec0=zonedEpochSec-wideOffsetSec0,wideUtcEpochSec1=zonedEpochSec-wideOffsetSec1;if(wideOffsetSec0===wideOffsetSec1)return[wideUtcEpochSec0];let narrowOffsetSec0=getOffsetSec(wideUtcEpochSec0);return narrowOffsetSec0===getOffsetSec(wideUtcEpochSec1)?[zonedEpochSec-narrowOffsetSec0]:wideOffsetSec0>wideOffsetSec1?[wideUtcEpochSec0,wideUtcEpochSec1]:[]},we:getOffsetSec,O:function getTransition(epochSec,direction){if(direction>0&&epochSec>=864e10)return;if(direction<0){if(epochSec<=minPossibleTransitionSec)return;let lookaheadEpochSec=getCurrentEpochSec()+94867200;if(epochSec>lookaheadEpochSec)return getTransition(lookaheadEpochSec,-1)}let searchEpochSec=direction>0?Math.max(epochSec,minPossibleTransitionSec):epochSec,[startEpochSec,endEpochSec]=computePeriod(searchEpochSec,periodSec),inc=periodSec*direction,searchLimit=direction>0?Math.max(epochSec,getCurrentEpochSec())+94867200:minPossibleTransitionSec,inBounds=()=>direction<0?endEpochSec>searchLimit:startEpochSec<searchLimit;for(;inBounds();){let clampedStartEpochSec=clampIntlSampleEpochSec(startEpochSec),clampedEndEpochSec=clampIntlSampleEpochSec(endEpochSec),startOffsetSec=getSample(clampedStartEpochSec),endOffsetSec=getSample(clampedEndEpochSec);if(startOffsetSec!==endOffsetSec){let split=getSplit(clampedStartEpochSec,clampedEndEpochSec);pinch(split,startOffsetSec,endOffsetSec);let transitionEpochSec=split[0];if((compareNumbers(transitionEpochSec,epochSec)||1)===direction)return transitionEpochSec}startEpochSec+=inc,endEpochSec+=inc}}}})((format2=>epochSec=>{let intlParts=formatEpochMilliToPartsRecord(format2,1e3*epochSec);return 86400*isoArgsToEpochDays((intlParts2=>{let relatedYear=intlParts2.relatedYear;if(relatedYear!==void 0)return parseInt(relatedYear);let year=parseInt(intlParts2.year);return intlParts2.era!==void 0&&normalizeEraName(intlParts2.era)==="bce"?1-year:year})(intlParts),parseInt(intlParts.month),parseInt(intlParts.day))+3600*parseInt(intlParts.hour)+60*parseInt(intlParts.minute)+parseInt(intlParts.second)-epochSec})(format),(timeZoneId=>{let timeZoneName=timeZoneId.split("/").pop();return timeZonePeriodDaysByName[timeZoneName]||60})(id))}B(epochNano){return this.ke.we((epochNano2=>epochNanoToSecMod(epochNano2)[0])(epochNano))*nanoInSec2}N(isoDateTime){let zonedEpochSec=86400*isoDateToEpochDays(isoDateTime)+timeFieldsToSec(isoDateTime),subsecNano=timeFieldsToSubsecNano(isoDateTime);return this.ke.xe(zonedEpochSec).map(epochSec=>checkEpochNanoInBounds(BigInt(epochSec)*bigNanoInSec+BigInt(subsecNano)))}O(epochNano,direction){let[epochSec,subsecNano]=epochNanoToSecMod(epochNano),resEpochSec=this.ke.O(epochSec+(direction>0||subsecNano?1:0),direction);if(resEpochSec!==void 0)return BigInt(resEpochSec)*bigNanoInSec}};function getCurrentEpochSec(){return Math.floor(Date.now()/1e3)}function createSplitTuple(startEpochSec,endEpochSec){return[startEpochSec,endEpochSec]}function computePeriod(epochSec,periodSec){let startEpochSec=Math.floor(epochSec/periodSec)*periodSec;return[startEpochSec,startEpochSec+periodSec]}function clampIntlSampleEpochSec(epochSec){return constrainToRange2(epochSec,-1e10,864e10)}function timeRegExpStr(separatorIndex){return`(\\d{2})(?:(:?)(\\d{2})(?:\\${separatorIndex}(\\d{2})(?:[.,](\\d{1,9}))?)?)?`}var dateTimeRegExpStr="(?:(?:([+-])(\\d{6}))|(\\d{4}))(-?)(\\d{2})\\4(\\d{2})(?:[T ]"+timeRegExpStr(8)+"(Z|([+-])"+timeRegExpStr(15)+")?)?";var dateTimeRegExp=createRegExp(dateTimeRegExpStr+"((?:\\[(!?)([^\\]]*)\\]){0,9})"),timeRegExp=createRegExp("T?"+timeRegExpStr(2)+`(([+-])${timeRegExpStr(9)})?((?:\\[(!?)([^\\]]*)\\]){0,9})`);function instantToZonedDateTime(instantSlots,timeZone,calendar){return createZonedEpochNanoSlots(instantSlots.epochNanoseconds,timeZone,calendar)}function plainDateTimeToZonedDateTime(plainDateTimeSlots,timeZone,options){let epochNano=getSingleInstantFor(timeZone,plainDateTimeSlots,(options2=>coerceEpochDisambig(normalizeOptions(options2)))(options));return createZonedEpochNanoSlots(checkEpochNanoInBounds(epochNano),timeZone,plainDateTimeSlots.calendar)}function epochMilliToInstant(epochMilli){return createEpochNanoSlots(checkEpochNanoInBounds(BigInt(toStrictInteger(epochMilli))*bigNanoInMilli))}function createOptionsTransformer(shapeFieldNames,invalidShapeFieldNames,ignoredFieldNames,defaultShapeFields,dateStyleReplacementFields){let shapeFieldNameSet=new Set(shapeFieldNames),invalidShapeFieldNameSet=new Set(invalidShapeFieldNames),ignoredFieldNameSet=new Set(ignoredFieldNames);return(options,allowPartialOverlap)=>{let dateStyle,timeStyle,granularShapeFields={},modifierFields={},otherFields={},hasInvalidGranularShapeFields=0,hasInvalidStyleFields=0;for(let name of Object.keys(options)){let value=options[name];value===void 0||ignoredFieldNameSet.has(name)||(shapeFieldNameSet.has(name)?name==="dateStyle"?dateStyle=value:name==="timeStyle"?timeStyle=value:granularShapeFields[name]=value:name==="era"?modifierFields[name]=value:invalidShapeFieldNameSet.has(name)?name==="dateStyle"||name==="timeStyle"?hasInvalidStyleFields=1:hasInvalidGranularShapeFields=1:otherFields[name]=value)}let hasDateStyle=dateStyle!==void 0,hasTimeStyle=timeStyle!==void 0,hasAnyStyle=hasDateStyle||hasTimeStyle,hasGranularShapeFields=Object.keys(granularShapeFields).length>0,hasInvalids=hasInvalidGranularShapeFields||hasInvalidStyleFields,hasShapeFields=hasGranularShapeFields||hasDateStyle||hasTimeStyle,hasModifierFields=Object.keys(modifierFields).length>0;(!allowPartialOverlap&&hasInvalids||allowPartialOverlap&&hasInvalids&&!hasShapeFields||hasAnyStyle&&(hasGranularShapeFields||hasModifierFields||hasInvalidGranularShapeFields))&&throwTypeError("Invalid formatting options");let transformedOptions={};return hasAnyStyle||hasShapeFields||Object.assign(transformedOptions,defaultShapeFields),Object.assign(transformedOptions,granularShapeFields,modifierFields,otherFields),hasDateStyle&&(dateStyleReplacementFields?Object.assign(transformedOptions,dateStyleReplacementFields[dateStyle]):transformedOptions.dateStyle=dateStyle),hasTimeStyle&&(transformedOptions.timeStyle=timeStyle),transformedOptions}}var dateDefaultShapeFields={year:"numeric",month:"numeric",day:"numeric"},timeDefaultShapeFields={hour:"numeric",minute:"numeric",second:"numeric"},dateTimeDefaultShapeFields=Object.assign({},dateDefaultShapeFields,timeDefaultShapeFields),dateShapeFieldNames=["weekday","year","month","day","dateStyle"],timeShapeFieldNames=["dayPeriod","hour","minute","second","fractionalSecondDigits","timeStyle"],dateTimeShapeFieldNames=dateShapeFieldNames.concat(timeShapeFieldNames);var transformZonedOptions=createOptionsTransformer(dateTimeShapeFieldNames,[],[],{...dateTimeDefaultShapeFields,timeZoneName:"short"});var PlainYearMonthBranding="PlainYearMonth",PlainMonthDayBranding="PlainMonthDay",PlainDateBranding="PlainDate",PlainDateTimeBranding="PlainDateTime",PlainTimeBranding="PlainTime",ZonedDateTimeBranding="ZonedDateTime",InstantBranding="Instant",DurationBranding="Duration",CalendarBranding="Calendar";function defineTemporalClass(branding,cls,getSlots,...getterMaps){return Object.defineProperties(cls,createNameDescriptors(branding)),Object.defineProperties(cls.prototype,createStringTagDescriptors("Temporal."+branding)),Object.defineProperties(cls.prototype,mapProps(getter=>({get(){return getter(getSlots(this))},configurable:1}),Object.assign({},...getterMaps))),cls}var attachDebugString=noop.name==="noop"?instance=>{Object.defineProperty(instance,"_str_",{value:instance.toJSON()})}:noop;function invalidRecordType(){throwTypeError(invalidCallingContext)}function forbiddenValueOf2(){throwTypeError(forbiddenValueOf)}var dateFieldGetters$1={era(slots){return computeCalendarEraFields(slots.calendar,slots).era},eraYear(slots){return computeCalendarEraFields(slots.calendar,slots).eraYear},year(slots){return computeCalendarDateFields(slots.calendar,slots).year},month(slots){return computeCalendarDateFields(slots.calendar,slots).month},monthCode(slots){return computeCalendarMonthCode(slots.calendar,slots)},day(slots){return computeCalendarDateFields(slots.calendar,slots).day}};var yearMonthDerivedGetters={daysInMonth(slots){return computeCalendarDaysInMonth(slots.calendar,slots)},daysInYear(slots){return computeCalendarDaysInYear(slots.calendar,slots)},monthsInYear(slots){return computeCalendarMonthsInYear(slots.calendar,slots)},inLeapYear(slots){return computeCalendarInLeapYear(slots.calendar,slots)}},dateDerivedGetters={dayOfWeek(slots){return computeIsoDayOfWeek(slots)},dayOfYear(slots){return computeCalendarDayOfYear(slots.calendar,slots)},weekOfYear(slots){return computeCalendarWeekOfYear(slots.calendar,slots)},yearOfWeek(slots){return computeCalendarYearOfWeek(slots.calendar,slots)},daysInWeek(){return 7},daysInMonth(slots){return computeCalendarDaysInMonth(slots.calendar,slots)},daysInYear(slots){return computeCalendarDaysInYear(slots.calendar,slots)},monthsInYear(slots){return computeCalendarMonthsInYear(slots.calendar,slots)},inLeapYear(slots){return computeCalendarInLeapYear(slots.calendar,slots)}};function createNativeGetters(shimGetters){return createPropGetters(Object.keys(shimGetters))}var timeGetters2=createNativeGetters(timeGetters);var dateFieldGetters=createNativeGetters(dateFieldGetters$1);createNativeGetters(yearMonthDerivedGetters),createNativeGetters(dateDerivedGetters);var PlainYearMonthRecordBranding=`${PlainYearMonthBranding}Record`,PlainMonthDayRecordBranding=`${PlainMonthDayBranding}Record`,PlainDateRecordBranding=`${PlainDateBranding}Record`,PlainDateTimeRecordBranding=`${PlainDateTimeBranding}Record`,PlainTimeRecordBranding=`${PlainTimeBranding}Record`,ZonedDateTimeRecordBranding=`${ZonedDateTimeBranding}Record`,InstantRecordBranding=`${InstantBranding}Record`,DurationRecordBranding=`${DurationBranding}Record`,CalendarRecordBranding=`${CalendarBranding}Record`,calendarMap=new WeakMap,instantMap=new WeakMap,zonedDateTimeMap=new WeakMap,plainDateTimeMap=new WeakMap;function getCalendarSlots(record){return getCalendarSlotsIfPresent(record)||invalidRecordType()}function getCalendarSlotsIfPresent(record){return calendarMap.get(record)}function getInstantSlots(record){return getInstantSlotsIfPresent(record)||invalidRecordType()}function getInstantSlotsIfPresent(record){return instantMap.get(record)}function setInstantSlots(instance,slots){instantMap.set(instance,slots)}function getZonedDateTimeSlots(record){return getZonedDateTimeSlotsIfPresent(record)||invalidRecordType()}function getZonedDateTimeSlotsIfPresent(record){return zonedDateTimeMap.get(record)}function setZonedDateTimeSlots(instance,slots){zonedDateTimeMap.set(instance,slots)}function getPlainDateTimeSlots(record){return getPlainDateTimeSlotsIfPresent(record)||invalidRecordType()}function getPlainDateTimeSlotsIfPresent(record){return plainDateTimeMap.get(record)}function setPlainDateTimeSlots(instance,slots){plainDateTimeMap.set(instance,slots)}function getCalendarRecordId(record){return getCalendarSlots(record).id}function getCalendarRecordImplCreator(record){let getImpl=getCalendarSlots(record).ue;return getImpl||throwRangeError(exoticCalendarRequired(getCalendarRecordId(record),"getExotic or getAny")),getImpl}function refineNativeCalendarArgMaybe(calendarRecord){if(calendarRecord!==void 0)return getValidatedCalendarId(calendarRecord)}function getValidatedCalendarId(record){return getCalendarRecordImplCreator(record),getCalendarRecordId(record)}var getNativePlainDateTime=getPlainDateTimeSlots,NativePlainDateTimeRecord=defineTemporalClass(PlainDateTimeRecordBranding,class{get calendarId(){return getNativePlainDateTime(this).calendarId}toJSON(){return getNativePlainDateTime(this).toJSON()}valueOf(){return getNativePlainDateTime(this).valueOf()}},getNativePlainDateTime,dateFieldGetters,timeGetters2);function createNativePlainDateTimeRecord(native){let instance=Object.create(NativePlainDateTimeRecord.prototype);return setPlainDateTimeSlots(instance,native),attachDebugString(instance),instance}function create$5(isoYear,isoMonth,isoDay,hour,minute,second,millisecond,microsecond,nanosecond,calendar){return createNativePlainDateTimeRecord(new NativeTemporal.PlainDateTime(isoYear,isoMonth,isoDay,hour,minute,second,millisecond,microsecond,nanosecond,refineNativeCalendarArgMaybe(calendar)))}function toZonedDateTime$1(record,timeZoneId,options){return createNativeZonedDateTimeRecord(getNativePlainDateTime(record).toZonedDateTime(timeZoneId,options))}var getNativeZonedDateTime=getZonedDateTimeSlots,NativeZonedDateTimeRecord=defineTemporalClass(ZonedDateTimeRecordBranding,class{get calendarId(){return getNativeZonedDateTime(this).calendarId}get timeZoneId(){return getNativeZonedDateTime(this).timeZoneId}get epochMilliseconds(){return getNativeZonedDateTime(this).epochMilliseconds}get epochNanoseconds(){return getNativeZonedDateTime(this).epochNanoseconds}toJSON(){return getNativeZonedDateTime(this).toJSON()}valueOf(){return getNativeZonedDateTime(this).valueOf()}},getNativeZonedDateTime,dateFieldGetters,timeGetters2);function createNativeZonedDateTimeRecord(native){let instance=Object.create(NativeZonedDateTimeRecord.prototype);return setZonedDateTimeSlots(instance,native),attachDebugString(instance),instance}function offsetNanoseconds(record){return getNativeZonedDateTime(record).offsetNanoseconds}var getNativeInstant=getInstantSlots,NativeInstantRecord=defineTemporalClass(InstantRecordBranding,class{get epochMilliseconds(){return getNativeInstant(this).epochMilliseconds}get epochNanoseconds(){return getNativeInstant(this).epochNanoseconds}toJSON(){return getNativeInstant(this).toJSON()}valueOf(){return getNativeInstant(this).valueOf()}});function createNativeInstantRecord(native){let instance=Object.create(NativeInstantRecord.prototype);return setInstantSlots(instance,native),attachDebugString(instance),instance}function fromEpochMilliseconds(epochMilliseconds){return createNativeInstantRecord(NativeTemporal.Instant.fromEpochMilliseconds(epochMilliseconds))}function toZonedDateTimeISO(record,timeZoneId){return createNativeZonedDateTimeRecord(getNativeInstant(record).toZonedDateTimeISO(timeZoneId))}function refineShimCalendarArgMaybe(calendarRecord){return calendarRecord===void 0?isoCalendarImpl:getCalendarRecordImpl(calendarRecord)}function getCalendarRecordImpl(record){return getCalendarRecordImplCreator(record)()}var getShimPlainDateTimeSlots=getPlainDateTimeSlots,ShimPlainDateTimeRecord=defineTemporalClass(PlainDateTimeRecordBranding,class{get calendarId(){return getCalendarSlotId(getShimPlainDateTimeSlots(this).calendar)}toJSON(){return formatDateTimeIsoAuto(getShimPlainDateTimeSlots(this))}valueOf(){return forbiddenValueOf2()}},getShimPlainDateTimeSlots,dateFieldGetters$1,timeGetters);function createShimPlainDateTimeRecord(slots){let instance=Object.create(ShimPlainDateTimeRecord.prototype);return setPlainDateTimeSlots(instance,slots),attachDebugString(instance),instance}function create$52(isoYear,isoMonth,isoDay,hour=0,minute=0,second=0,millisecond=0,microsecond=0,nanosecond=0,calendar){let fields=checkIsoDateTimeInBounds(validateIsoDateTimeFields(mapProps(toIntegerWithTrunc,{year:isoYear,month:isoMonth,day:isoDay,hour,minute,second,millisecond,microsecond,nanosecond}))),calendarImpl=refineShimCalendarArgMaybe(calendar);return createShimPlainDateTimeRecord(createDateTimeSlots(fields,calendarImpl))}function toZonedDateTime$12(record,timeZoneId,options){return createShimZonedDateTimeRecord(plainDateTimeToZonedDateTime(getShimPlainDateTimeSlots(record),queryTimeZone(refineTimeZoneId(timeZoneId)),options))}var getShimZonedDateTimeSlots=getZonedDateTimeSlots,ShimZonedDateTimeRecord=defineTemporalClass(ZonedDateTimeRecordBranding,class{get calendarId(){return getCalendarSlotId(getShimZonedDateTimeSlots(this).calendar)}get timeZoneId(){return getShimZonedDateTimeSlots(this).timeZone.id}get epochMilliseconds(){return getEpochMilli(getShimZonedDateTimeSlots(this))}get epochNanoseconds(){return getEpochNano(getShimZonedDateTimeSlots(this))}toJSON(){return formatZonedDateTimeIsoAuto(getShimZonedDateTimeSlots(this))}valueOf(){return forbiddenValueOf2()}},getShimZonedDateTimeIsoSlots,dateFieldGetters$1,timeGetters);function createShimZonedDateTimeRecord(slots){let instance=Object.create(ShimZonedDateTimeRecord.prototype);return setZonedDateTimeSlots(instance,slots),attachDebugString(instance),instance}function getShimZonedDateTimeIsoSlots(record){let slots=getShimZonedDateTimeSlots(record);return{...zonedEpochSlotsToIso(slots),calendar:slots.calendar}}function offsetNanoseconds2(record){return zonedEpochSlotsToIso(getShimZonedDateTimeSlots(record)).offsetNanoseconds}var endOfHour2=alignedZonedTime(slots=>({hour:slots.hour,minute:0,second:0,millisecond:0,microsecond:0,nanosecond:0}),nanoInHour2-1),endOfMinute2=alignedZonedTime(slots=>({hour:slots.hour,minute:slots.minute,second:0,millisecond:0,microsecond:0,nanosecond:0}),nanoInMinute2-1),endOfSecond2=alignedZonedTime(slots=>({hour:slots.hour,minute:slots.minute,second:slots.second,millisecond:0,microsecond:0,nanosecond:0}),nanoInSec2-1),endOfMillisecond2=alignedZonedTime(slots=>({hour:slots.hour,minute:slots.minute,second:slots.second,millisecond:slots.millisecond,microsecond:0,nanosecond:0}),nanoInMilli2-1),endOfMicrosecond2=alignedZonedTime(slots=>({hour:slots.hour,minute:slots.minute,second:slots.second,millisecond:slots.millisecond,microsecond:slots.microsecond,nanosecond:0}),nanoInMicro2-1);function alignedZonedTime(computeAlignment,nanoDelta=0){return record=>{let slots=getShimZonedDateTimeSlots(record),{timeZone}=slots,isoDateTime=zonedEpochSlotsToIso(slots),alignedIsoDateTime=combineDateAndTime(isoDateTime,computeAlignment(isoDateTime)),epochNanoseconds=getMatchingInstantFor(timeZone,alignedIsoDateTime,isoDateTime.offsetNanoseconds,2,0,1)+BigInt(nanoDelta);return createShimZonedDateTimeRecord({...slots,epochNanoseconds:checkEpochNanoInBounds(epochNanoseconds)})}}var getShimInstantSlots=getInstantSlots,ShimInstantRecord=defineTemporalClass(InstantRecordBranding,class{get epochMilliseconds(){return getEpochMilli(getShimInstantSlots(this))}get epochNanoseconds(){return getEpochNano(getShimInstantSlots(this))}toJSON(){return formatInstantIsoAuto(getShimInstantSlots(this))}valueOf(){return forbiddenValueOf2()}});function createShimInstantRecord(slots){let instance=Object.create(ShimInstantRecord.prototype);return setInstantSlots(instance,slots),attachDebugString(instance),instance}function fromEpochMilliseconds2(epochMilliseconds){return createShimInstantRecord(epochMilliToInstant(epochMilliseconds))}function toZonedDateTimeISO2(record,timeZoneId){return createShimZonedDateTimeRecord(instantToZonedDateTime(getShimInstantSlots(record),queryTimeZone(refineTimeZoneId(timeZoneId))))}var offsetNanoseconds3=NativeTemporal?offsetNanoseconds:offsetNanoseconds2;var create=NativeTemporal?create$5:create$52;var toZonedDateTime=NativeTemporal?toZonedDateTime$1:toZonedDateTime$12;var fromEpochMilliseconds3=NativeTemporal?fromEpochMilliseconds:fromEpochMilliseconds2;var toZonedDateTimeISO3=NativeTemporal?toZonedDateTimeISO:toZonedDateTimeISO2;function addWeeks3(m,n){let a=dateToUtcArray(m);return a[2]+=n*7,arrayToUtcDate(a)}function addDays3(m,n){let a=dateToUtcArray(m);return a[2]+=n,arrayToUtcDate(a)}function addMs(m,n){let a=dateToUtcArray(m);return a[6]+=n,arrayToUtcDate(a)}function diffWeeks4(m0,m1){return diffDays4(m0,m1)/7}function diffDays4(m0,m1){return(m1.valueOf()-m0.valueOf())/(1e3*60*60*24)}function diffHours4(m0,m1){return(m1.valueOf()-m0.valueOf())/(1e3*60*60)}function diffMinutes4(m0,m1){return(m1.valueOf()-m0.valueOf())/(1e3*60)}function diffSeconds4(m0,m1){return(m1.valueOf()-m0.valueOf())/1e3}function diffDayAndTime(m0,m1){let m0day=startOfDay4(m0),m1day=startOfDay4(m1);return{years:0,months:0,days:Math.round(diffDays4(m0day,m1day)),milliseconds:m1.valueOf()-m1day.valueOf()-(m0.valueOf()-m0day.valueOf())}}function diffWholeWeeks(m0,m1){let d=diffWholeDays(m0,m1);return d!==null&&d%7===0?d/7:null}function diffWholeDays(m0,m1){return timeAsMs(m0)===timeAsMs(m1)?Math.round(diffDays4(m0,m1)):null}function startOfDay4(m){return arrayToUtcDate([m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate()])}function startOfHour4(m){return arrayToUtcDate([m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate(),m.getUTCHours()])}function startOfMinute4(m){return arrayToUtcDate([m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate(),m.getUTCHours(),m.getUTCMinutes()])}function startOfSecond4(m){return arrayToUtcDate([m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate(),m.getUTCHours(),m.getUTCMinutes(),m.getUTCSeconds()])}function weekOfYear3(marker,dow,doy){let y=marker.getUTCFullYear(),w=weekOfGivenYear(marker,y,dow,doy);if(w<1)return weekOfGivenYear(marker,y-1,dow,doy);let nextW=weekOfGivenYear(marker,y+1,dow,doy);return nextW>=1?Math.min(w,nextW):w}function weekOfGivenYear(marker,year,dow,doy){let firstWeekStart=arrayToUtcDate([year,0,1+firstWeekOffset(year,dow,doy)]),dayStart=startOfDay4(marker),days=Math.round(diffDays4(firstWeekStart,dayStart));return Math.floor(days/7)+1}function firstWeekOffset(year,dow,doy){let fwd=7+dow-doy;return-((7+arrayToUtcDate([year,0,fwd]).getUTCDay()-dow)%7)+fwd-1}function dateToLocalArray(date){return[date.getFullYear(),date.getMonth(),date.getDate(),date.getHours(),date.getMinutes(),date.getSeconds(),date.getMilliseconds()]}function arrayToLocalDate(a){return new Date(a[0],a[1]||0,a[2]==null?1:a[2],a[3]||0,a[4]||0,a[5]||0)}function dateToUtcArray(date){return[date.getUTCFullYear(),date.getUTCMonth(),date.getUTCDate(),date.getUTCHours(),date.getUTCMinutes(),date.getUTCSeconds(),date.getUTCMilliseconds()]}function arrayToUtcDate(a){return a.length===1&&(a=a.concat([0])),new Date(Date.UTC(...a))}function isValidDate(m){return!isNaN(m.valueOf())}function timeAsMs(m){return m.getUTCHours()*1e3*60*60+m.getUTCMinutes()*1e3*60+m.getUTCSeconds()*1e3+m.getUTCMilliseconds()}var calendarSystemClassMap={};function registerCalendarSystem(name,theClass){calendarSystemClassMap[name]=theClass}function createCalendarSystem(name){return new calendarSystemClassMap[name]}var GregorianCalendarSystem=class{getMarkerYear(d){return d.getUTCFullYear()}getMarkerMonth(d){return d.getUTCMonth()}getMarkerDay(d){return d.getUTCDate()}arrayToMarker(arr){return arrayToUtcDate(arr)}markerToArray(marker){return dateToUtcArray(marker)}};registerCalendarSystem("gregory",GregorianCalendarSystem);function parseRange(input,dateEnv){let start=null,end=null;return input.start&&(start=dateEnv.createMarker(input.start)),input.end&&(end=dateEnv.createMarker(input.end)),!start&&!end||start&&end&&end<start?null:{start,end}}function invertRanges(ranges,constraintRange){let invertedRanges=[],{start}=constraintRange,i,dateRange;for(ranges.sort(compareRanges),i=0;i<ranges.length;i+=1)dateRange=ranges[i],dateRange.start>start&&invertedRanges.push({start,end:dateRange.start}),dateRange.end>start&&(start=dateRange.end);return start<constraintRange.end&&invertedRanges.push({start,end:constraintRange.end}),invertedRanges}function compareRanges(range0,range1){return range0.start.valueOf()-range1.start.valueOf()}function intersectRanges(range0,range1){let{start,end}=range0,newRange=null;return range1.start!==null&&(start===null?start=range1.start:start=new Date(Math.max(start.valueOf(),range1.start.valueOf()))),range1.end!=null&&(end===null?end=range1.end:end=new Date(Math.min(end.valueOf(),range1.end.valueOf()))),(start===null||end===null||start<end)&&(newRange={start,end}),newRange}function rangesEqual(range0,range1){return(range0.start===null?null:range0.start.valueOf())===(range1.start===null?null:range1.start.valueOf())&&(range0.end===null?null:range0.end.valueOf())===(range1.end===null?null:range1.end.valueOf())}function rangesIntersect(range0,range1){return(range0.end===null||range1.start===null||range0.end>range1.start)&&(range0.start===null||range1.end===null||range0.start<range1.end)}function rangeContainsRange(outerRange,innerRange){return(outerRange.start===null||innerRange.start!==null&&innerRange.start>=outerRange.start)&&(outerRange.end===null||innerRange.end!==null&&innerRange.end<=outerRange.end)}function rangeContainsMarker(range,date){return(range.start===null||date>=range.start)&&(range.end===null||date<range.end)}function constrainMarkerToRange(date,range){return range.start!=null&&date<range.start?range.start:range.end!=null&&date>=range.end?new Date(range.end.valueOf()-1):date}function expandZonedMarker(dateInfo,calendarSystem){let a=calendarSystem.markerToArray(dateInfo.marker);return{marker:dateInfo.marker,timeZoneOffset:dateInfo.timeZoneOffset,array:a,year:a[0],month:a[1],day:a[2],hour:a[3],minute:a[4],second:a[5],millisecond:a[6]}}function createVerboseFormattingArg(start,end,context){let startInfo=expandZonedMarker(start,context.calendarSystem),endInfo=end?expandZonedMarker(end,context.calendarSystem):null;return{date:startInfo,start:startInfo,end:endInfo,timeZone:context.timeZone,localeCodes:context.locale.codes}}function isInt(n){return n%1===0}function padStart(val,len){let s=String(val);return"000".substr(0,len-s.length)+s}var INTERNAL_UNITS=["years","months","days","milliseconds"],PARSE_RE=/^(-?)(?:(\d+)\.)?(\d+):(\d\d)(?::(\d\d)(?:\.(\d\d\d))?)?/;function createDuration(input,unit){return typeof input=="string"?parseString(input):typeof input=="object"&&input?parseObject(input):typeof input=="number"?parseObject({[unit||"milliseconds"]:input}):null}function parseString(s){let m=PARSE_RE.exec(s);if(m){let sign=m[1]?-1:1;return{years:0,months:0,days:sign*(m[2]?parseInt(m[2],10):0),milliseconds:sign*((m[3]?parseInt(m[3],10):0)*60*60*1e3+(m[4]?parseInt(m[4],10):0)*60*1e3+(m[5]?parseInt(m[5],10):0)*1e3+(m[6]?parseInt(m[6],10):0))}}return null}function parseObject(obj){let duration={years:obj.years||obj.year||0,months:obj.months||obj.month||0,days:obj.days||obj.day||0,milliseconds:(obj.hours||obj.hour||0)*60*60*1e3+(obj.minutes||obj.minute||0)*60*1e3+(obj.seconds||obj.second||0)*1e3+(obj.milliseconds||obj.millisecond||obj.ms||0)},weeks=obj.weeks||obj.week;return weeks&&(duration.days+=weeks*7,duration.specifiedWeeks=!0),duration}function durationsEqual(d0,d1){return d0.years===d1.years&&d0.months===d1.months&&d0.days===d1.days&&d0.milliseconds===d1.milliseconds}function addDurations(d0,d1){return{years:d0.years+d1.years,months:d0.months+d1.months,days:d0.days+d1.days,milliseconds:d0.milliseconds+d1.milliseconds}}function subtractDurations(d1,d0){return{years:d1.years-d0.years,months:d1.months-d0.months,days:d1.days-d0.days,milliseconds:d1.milliseconds-d0.milliseconds}}function multiplyDuration(d,n){return{years:d.years*n,months:d.months*n,days:d.days*n,milliseconds:d.milliseconds*n}}function asRoughYears(dur){return asRoughDays(dur)/365}function asRoughMonths(dur){return asRoughDays(dur)/30}function asRoughDays(dur){return asRoughMs(dur)/864e5}function asRoughMs(dur){return dur.years*(365*864e5)+dur.months*(30*864e5)+dur.days*864e5+dur.milliseconds}function wholeDivideDurations(numerator,denominator){let res=null;for(let i=0;i<INTERNAL_UNITS.length;i+=1){let unit=INTERNAL_UNITS[i];if(denominator[unit]){let localRes=numerator[unit]/denominator[unit];if(!isInt(localRes)||res!==null&&res!==localRes)return null;res=localRes}else if(numerator[unit])return null}return res}function greatestDurationDenominator(dur){let ms=dur.milliseconds;if(ms){if(ms%1e3!==0)return{unit:"millisecond",value:ms};if(ms%(1e3*60)!==0)return{unit:"second",value:ms/1e3};if(ms%(1e3*60*60)!==0)return{unit:"minute",value:ms/(1e3*60)};if(ms)return{unit:"hour",value:ms/(1e3*60*60)}}return dur.days?dur.specifiedWeeks&&dur.days%7===0?{unit:"week",value:dur.days/7}:{unit:"day",value:dur.days}:dur.months?{unit:"month",value:dur.months}:dur.years?{unit:"year",value:dur.years}:{unit:"millisecond",value:0}}function buildIsoString(marker,timeZoneOffset,stripZeroTime=!1){let s=marker.toISOString();return s=s.replace(".000",""),stripZeroTime&&(s=s.replace("T00:00:00Z","")),s.length>10&&(timeZoneOffset==null?s=s.replace("Z",""):timeZoneOffset!==0&&(s=s.replace("Z",formatTimeZoneOffset(timeZoneOffset,!0)))),s}function formatDayString(marker){return marker.toISOString().replace(/T.*$/,"")}function formatIsoTimeString(marker){return padStart(marker.getUTCHours(),2)+":"+padStart(marker.getUTCMinutes(),2)+":"+padStart(marker.getUTCSeconds(),2)}function formatTimeZoneOffset(minutes,doIso=!1){let sign=minutes<0?"-":"+",abs=Math.abs(minutes),hours=Math.floor(abs/60),mins=Math.round(abs%60);return doIso?`${sign+padStart(hours,2)}:${padStart(mins,2)}`:`GMT${sign}${hours}${mins?`:${padStart(mins,2)}`:""}`}function joinDateTimeFormatParts(parts){let s="";for(let part of parts)s+=part.value;return s}var ISO_RE=/^\s*(\d{4})(-?(\d{2})(-?(\d{2})([T ](\d{2}):?(\d{2})(:?(\d{2})(\.(\d+))?)?(Z|(([-+])(\d{2})(:?(\d{2}))?))?)?)?)?$/;function parse(str){let m=ISO_RE.exec(str);if(m){let marker=new Date(Date.UTC(Number(m[1]),m[3]?Number(m[3])-1:0,Number(m[5]||1),Number(m[7]||0),Number(m[8]||0),Number(m[10]||0),m[12]?+`0.${m[12]}`*1e3:0));if(isValidDate(marker)){let timeZoneOffset=null;return m[13]&&(timeZoneOffset=(m[15]==="-"?-1:1)*(Number(m[16]||0)*60+Number(m[18]||0))),{marker,isTimeUnspecified:!m[6],timeZoneOffset}}}return null}var DateEnv=class{constructor(settings){this.timeZone=settings.timeZone,this.calendarSystem=createCalendarSystem(settings.calendarSystem),this.locale=settings.locale,this.weekDow=settings.locale.week.dow,this.weekDoy=settings.locale.week.doy,settings.weekNumberCalculation==="ISO"&&(this.weekDow=1,this.weekDoy=4),typeof settings.firstDay=="number"&&(this.weekDow=settings.firstDay),typeof settings.weekNumberCalculation=="function"&&(this.weekNumberFunc=settings.weekNumberCalculation),this.weekTextLong=settings.weekTextLong,this.weekTextShort=settings.weekTextShort??settings.weekTextLong,this.cmdFormatter=settings.cmdFormatter}createMarker(input){let meta=this.createMarkerMeta(input);return meta===null?null:meta.marker}createNowMarker(){return this.timestampToMarker(new Date().valueOf())}createMarkerMeta(input){if(typeof input=="string")return this.parse(input);let marker=null;return typeof input=="number"?marker=this.timestampToMarker(input):input instanceof Date?(input=input.valueOf(),isNaN(input)||(marker=this.timestampToMarker(input))):Array.isArray(input)&&(marker=arrayToUtcDate(input)),marker===null||!isValidDate(marker)?null:{marker,isTimeUnspecified:!1}}parse(s){let parts=parse(s);if(parts===null)return null;let{marker}=parts;return parts.timeZoneOffset!==null&&(marker=this.timestampToMarker(marker.valueOf()-parts.timeZoneOffset*60*1e3)),{marker,isTimeUnspecified:parts.isTimeUnspecified}}getYear(marker){return this.calendarSystem.getMarkerYear(marker)}getMonth(marker){return this.calendarSystem.getMarkerMonth(marker)}getDay(marker){return this.calendarSystem.getMarkerDay(marker)}add(marker,dur){let a=this.calendarSystem.markerToArray(marker);return a[0]+=dur.years,a[1]+=dur.months,a[2]+=dur.days,a[6]+=dur.milliseconds,this.calendarSystem.arrayToMarker(a)}subtract(marker,dur){let a=this.calendarSystem.markerToArray(marker);return a[0]-=dur.years,a[1]-=dur.months,a[2]-=dur.days,a[6]-=dur.milliseconds,this.calendarSystem.arrayToMarker(a)}addYears(marker,n){let a=this.calendarSystem.markerToArray(marker);return a[0]+=n,this.calendarSystem.arrayToMarker(a)}addMonths(marker,n){let a=this.calendarSystem.markerToArray(marker);return a[1]+=n,this.calendarSystem.arrayToMarker(a)}diffWholeYears(m0,m1){let{calendarSystem}=this;return timeAsMs(m0)===timeAsMs(m1)&&calendarSystem.getMarkerDay(m0)===calendarSystem.getMarkerDay(m1)&&calendarSystem.getMarkerMonth(m0)===calendarSystem.getMarkerMonth(m1)?calendarSystem.getMarkerYear(m1)-calendarSystem.getMarkerYear(m0):null}diffWholeMonths(m0,m1){let{calendarSystem}=this;return timeAsMs(m0)===timeAsMs(m1)&&calendarSystem.getMarkerDay(m0)===calendarSystem.getMarkerDay(m1)?calendarSystem.getMarkerMonth(m1)-calendarSystem.getMarkerMonth(m0)+(calendarSystem.getMarkerYear(m1)-calendarSystem.getMarkerYear(m0))*12:null}greatestWholeUnit(m0,m1){let n=this.diffWholeYears(m0,m1);return n!==null?{unit:"year",value:n}:(n=this.diffWholeMonths(m0,m1),n!==null?{unit:"month",value:n}:(n=diffWholeWeeks(m0,m1),n!==null?{unit:"week",value:n}:(n=diffWholeDays(m0,m1),n!==null?{unit:"day",value:n}:(n=diffHours4(m0,m1),isInt(n)?{unit:"hour",value:n}:(n=diffMinutes4(m0,m1),isInt(n)?{unit:"minute",value:n}:(n=diffSeconds4(m0,m1),isInt(n)?{unit:"second",value:n}:{unit:"millisecond",value:m1.valueOf()-m0.valueOf()}))))))}countDurationsBetween(m0,m1,d){let diff3;return d.years&&(diff3=this.diffWholeYears(m0,m1),diff3!==null)?diff3/asRoughYears(d):d.months&&(diff3=this.diffWholeMonths(m0,m1),diff3!==null)?diff3/asRoughMonths(d):d.days&&(diff3=diffWholeDays(m0,m1),diff3!==null)?diff3/asRoughDays(d):(m1.valueOf()-m0.valueOf())/asRoughMs(d)}startOf(m,unit){return unit==="year"?this.startOfYear(m):unit==="month"?this.startOfMonth(m):unit==="week"?this.startOfWeek(m):unit==="day"?startOfDay4(m):unit==="hour"?startOfHour4(m):unit==="minute"?startOfMinute4(m):unit==="second"?startOfSecond4(m):null}startOfYear(m){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m)])}startOfMonth(m){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m),this.calendarSystem.getMarkerMonth(m)])}startOfWeek(m){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m),this.calendarSystem.getMarkerMonth(m),m.getUTCDate()-(m.getUTCDay()-this.weekDow+7)%7])}computeWeekNumber(marker){return this.weekNumberFunc?this.weekNumberFunc(this.toDate(marker)):weekOfYear3(marker,this.weekDow,this.weekDoy)}formatToParts(marker,formatter){return formatter.formatToParts({marker,timeZoneOffset:this.offsetForMarker(marker)},this)}formatRangeToParts(start,end,formatter,dateOptions={}){return dateOptions.isEndExclusive&&(end=addMs(end,-1)),formatter.formatRangeToParts({marker:start,timeZoneOffset:this.offsetForMarker(start)},{marker:end,timeZoneOffset:this.offsetForMarker(end)},this)}formatIso(marker,extraOptions={}){let timeZoneOffset=null;return extraOptions.omitTimeZoneOffset||(timeZoneOffset=this.offsetForMarker(marker)),buildIsoString(marker,timeZoneOffset,extraOptions.omitTime)}timestampToMarker(ms){if(this.timeZone==="local")return arrayToUtcDate(dateToLocalArray(new Date(ms)));if(this.timeZone==="UTC")return new Date(ms);let zdt=toZonedDateTimeISO3(fromEpochMilliseconds3(ms),this.timeZone);return new Date(Date.UTC(zdt.year,zdt.month-1,zdt.day,zdt.hour,zdt.minute,zdt.second,zdt.millisecond))}offsetForMarker(m){return this.timeZone==="local"?-arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset():this.timeZone==="UTC"?0:offsetNanoseconds3(toZonedDateTime(create(m.getUTCFullYear(),m.getUTCMonth()+1,m.getUTCDate(),m.getUTCHours(),m.getUTCMinutes(),m.getUTCSeconds(),m.getUTCMilliseconds()),this.timeZone))/(1e9*60)}toDate(m){return this.timeZone==="local"?arrayToLocalDate(dateToUtcArray(m)):this.timeZone==="UTC"?new Date(m.valueOf()):new Date(toZonedDateTime(create(m.getUTCFullYear(),m.getUTCMonth()+1,m.getUTCDate(),m.getUTCHours(),m.getUTCMinutes(),m.getUTCSeconds(),m.getUTCMilliseconds()),this.timeZone).epochMilliseconds)}},EXTENDED_SETTINGS=new Set(["week","meridiem","omitZeroMinute","omitCommas","forceCommas","omitTrailing","weekdayJustify"]),MERIDIEM_RE=/([ap])\.?m\.?/i,COMMA_RE=/,/g,LTR_RE=/\u200e/g,TRAILING_RE=/[\s.,]+$/,WHITESPACE_ONLY_RE=/^\s+$/,NativeDateFormatter=class{constructor(options){let standardOptions={},extendedOptions={};for(let name in options)EXTENDED_SETTINGS.has(name)?extendedOptions[name]=options[name]:standardOptions[name]=options[name];standardOptions.timeZoneName==="long"&&(standardOptions.timeZoneName="short"),this.timeZoneOnly=Object.keys(standardOptions).length===1&&standardOptions.timeZoneName==="short",this.weekOnly=!!(!Object.keys(standardOptions).length&&extendedOptions.week),this.timeZoneOnly||(standardOptions.timeZoneName&&(standardOptions.hour||(standardOptions.hour="2-digit"),standardOptions.minute||(standardOptions.minute="2-digit")),extendedOptions.omitZeroMinute&&(standardOptions.second||standardOptions.fractionalSecondDigits)&&delete extendedOptions.omitZeroMinute,standardOptions.timeZone="UTC"),this.standardOptions=standardOptions,this.extendedOptions=extendedOptions}formatToParts(date,context){let{standardOptions,extendedOptions}=this;if(this.timeZoneOnly)return[{type:"timeZoneName",value:formatTimeZoneOffset(date.timeZoneOffset)}];if(this.weekOnly)return formatWeekNumberParts(context.computeWeekNumber(date.marker),context.weekTextLong,context.weekTextShort,context.locale,extendedOptions.week);let{normalFormat,zeroFormat}=this.getFormats(context),parts=(zeroFormat&&!date.marker.getUTCMinutes()?zeroFormat:normalFormat).formatToParts(date.marker);return postProcessParts(parts,date,standardOptions,extendedOptions)}formatRangeToParts(start,end,context){let{standardOptions,extendedOptions}=this;if(this.timeZoneOnly||this.weekOnly)return this.formatToParts(start,context).map(part=>({source:part.type==="literal"?"shared":"startRange",...part}));let{normalFormat,zeroFormat}=this.getFormats(context),parts=(zeroFormat&&!start.marker.getUTCMinutes()&&!end.marker.getUTCMinutes()?zeroFormat:normalFormat).formatRangeToParts(start.marker,end.marker);return postProcessRangeParts(parts,start,end,standardOptions,extendedOptions)}getFormats(context){if(this.cachedContext!==context){let{standardOptions,extendedOptions}=this,{codes}=context.locale,normalFormat=new Intl.DateTimeFormat(codes,standardOptions),zeroFormat;if(extendedOptions.omitZeroMinute){let zeroProps={...standardOptions};delete zeroProps.minute,zeroFormat=new Intl.DateTimeFormat(codes,zeroProps)}this.cachedContext=context,this.cachedFormats={normalFormat,zeroFormat}}return this.cachedFormats}};function processPartsLoop(parts,extendedOptions,getTzValue){let anyTzInjected=!1,priorLiteral;for(let part of parts){let isLiteral=part.type==="literal";if(isLiteral||part.type==="dayPeriod"){let s=part.value;if(s=s.replace(LTR_RE,""),extendedOptions.omitCommas&&(s=s.replace(COMMA_RE,"")),!isLiteral){let{meridiem}=extendedOptions;meridiem===!1?s=s.replace(MERIDIEM_RE,""):meridiem==="narrow"?s=s.replace(MERIDIEM_RE,(_m0,m1)=>m1.toLocaleLowerCase()):meridiem==="short"?s=s.replace(MERIDIEM_RE,(_m0,m1)=>`${m1.toLocaleLowerCase()}m`):meridiem==="lowercase"&&(s=s.replace(MERIDIEM_RE,m0=>m0.toLocaleLowerCase())),priorLiteral&&(priorLiteral.value=priorLiteral.value.trimEnd())}part.value=s}else if(part.type==="timeZoneName"){let tzValue=getTzValue(part);tzValue!=null&&(part.value=tzValue,anyTzInjected=!0)}priorLiteral=isLiteral?part:void 0}return{lastLiteral:priorLiteral,anyTzInjected}}function postProcessParts(parts,date,standardOptions,extendedOptions){let injectableTz=standardOptions.timeZoneName==="short"?date.timeZoneOffset==null?"UTC":formatTimeZoneOffset(date.timeZoneOffset):void 0,{lastLiteral,anyTzInjected}=processPartsLoop(parts,extendedOptions,()=>injectableTz);if(injectableTz&&!anyTzInjected&&(lastLiteral?lastLiteral.value+=" ":parts.push({type:"literal",value:" "}),parts.push({type:"timeZoneName",value:injectableTz})),extendedOptions.weekdayJustify&&parts.length===3&&WHITESPACE_ONLY_RE.test(parts[1].value)&&parts[extendedOptions.weekdayJustify==="start"?2:0].type==="weekday"&&parts.reverse(),extendedOptions.forceCommas)for(let part of parts)part.type==="literal"&&WHITESPACE_ONLY_RE.test(part.value)&&(part.value=`,${part.value}`);return extendedOptions.omitTrailing&&stripTrailingLiteral(parts),parts.filter(part=>part.value)}function postProcessRangeParts(parts,start,end,standardOptions,extendedOptions){let injectTz=standardOptions.timeZoneName==="short";if(processPartsLoop(parts,extendedOptions,part=>{if(!injectTz)return;let offset3=part.source==="endRange"?end.timeZoneOffset:start.timeZoneOffset;return offset3==null?"UTC":formatTimeZoneOffset(offset3)}),extendedOptions.forceCommas)for(let part of parts)part.type==="literal"&&WHITESPACE_ONLY_RE.test(part.value)&&(part.value=`,${part.value}`);return extendedOptions.omitTrailing&&stripTrailingLiteral(parts),parts.filter(part=>part.value)}function stripTrailingLiteral(parts){let lastPart=parts[parts.length-1];lastPart?.type==="literal"&&(lastPart.value=lastPart.value.replace(TRAILING_RE,""),lastPart.value||parts.pop())}function formatWeekNumberParts(num,weekTextLong,weekTextShort,locale,display){let parts=[];return display==="long"?parts.push({type:"literal",value:weekTextLong}):(display==="short"||display==="narrow")&&parts.push({type:"literal",value:weekTextShort}),(display==="long"||display==="short")&&parts.push({type:"literal",value:" "}),parts.push({type:"week",value:locale.simpleNumberFormat.format(num)}),locale.options.direction==="rtl"&&parts.reverse(),parts}var CmdDateFormatter=class{constructor(cmdStr){this.cmdStr=cmdStr}formatToParts(date,context){let res=context.cmdFormatter(this.cmdStr,createVerboseFormattingArg(date,null,context));return Array.isArray(res)?res:[{type:"literal",value:res}]}formatRangeToParts(start,end,context){let res=context.cmdFormatter(this.cmdStr,createVerboseFormattingArg(start,end,context));return Array.isArray(res)?res.map(part=>({source:"shared",...part})):[{source:"shared",type:"literal",value:res}]}},FuncDateFormatter=class{constructor(func){this.func=func}formatToParts(date,context){return[{type:"literal",value:this.func(createVerboseFormattingArg(date,null,context))}]}formatRangeToParts(start,end,context){return[{source:"shared",type:"literal",value:this.func(createVerboseFormattingArg(start,end,context))}]}};var classNames={popoverZ:"fc-nH",isolate:"fc-7s",borderBoxRoot:"fc-wa",notAllowed:"fc-4m",noScrollbars:"fc-eM",noShrink:"fc-Qo",calendarScreenRoot:"fc-fi",safeTiles:"fc-fl",calendarPrintRoot:"fc-Jf",cursorPointer:"fc-DP",cursorResizeT:"fc-An",cursorResizeB:"fc-lZ",cursorResizeS:"fc-9V",cursorResizeE:"fc-70",cursorColResizer:"fc-gQ",hit:"fc-mN",hitX:"fc-2d",hitY:"fc-B0",hitXSkinny:"fc-Z1",selectNone:"fc-1Y",invisible:"fc-a9",borderNone:"fc-Tu",borderOnlyT:"fc-hU",borderOnlyB:"fc-3e",borderOnlyS:"fc-PB",borderOnlyE:"fc-II",borderlessX:"fc-MQ",borderlessY:"fc-Vo",fakeBorderS:"fc-2l",flexRow:"fc-Ao",flexCol:"fc-HH",grow:"fc-GV",liquid:"fc-g2",minHeight0:"fc-Ot",liquidX:"fc-hp",printRoot:"fc-uD",printHeader:"fc-jM",noPadding:"fc-OJ",noMargin:"fc-oE",noMarginY:"fc-V3",noMarginX:"fc-SS",whiteSpaceNoWrap:"fc-y2",whiteSpacePre:"fc-CN",overflowAnchorNone:"fc-gZ",crop:"fc-FA",cropNowrap:"fc-7T",rel:"fc-cc",abs:"fc-H0",start0:"fc-6t",fill:"fc-ct",fillTop:"fc-iv",fillX:"fc-Uu",fillY:"fc-7k",fillStart:"fc-Yw",sticky:"fc-Ip",stickyT:"fc-CS",stickyS:"fc-tT",tableHeaderSticky:"fc-hy",contentBox:"fc-Np",offscreen:"fc-aP",alignCenter:"fc-6H",alignStart:"fc-K8",alignEnd:"fc-E3",footerScrollbarSticky:"fc-Px",footerScrollbar:"fc-J4",breakInsideAvoid:"fc-Yi",printSiblingRow:"fc-fx",z0:"fc-BS",z1:"fc-iu",focusZ2:"fc-Bk",internalTimelineSlot:"fc-Nm",internalEvent:"fc-Ft",internalEventMirror:"fc-lc",internalEventDraggable:"fc-uL",internalEventSelected:"fc-Bv",internalEventResizable:"fc-Qk",internalEventResizer:"fc-9X",internalEventResizerStart:"fc-Sj",internalEventResizerEnd:"fc-DL",internalBgEvent:"fc-oP",internalMoreLink:"fc-R2",internalNavLink:"fc-SW",internalPopover:"fc-Cs",internalView:"fc-LQ",internalScroller:"fc-dT"};function joinClassNames(...args){return args.filter(Boolean).join(" ")}function fracToCssDim(frac){return frac*100+"%"}function createFormatter(input){return typeof input=="object"&&input?new NativeDateFormatter(input):typeof input=="string"?new CmdDateFormatter(input):typeof input=="function"?new FuncDateFormatter(input):null}function warn(...args){console.warn("FullCalendar:",...args)}var warnedClassNameOptions={};function refineClassName(input,optionName){return!input||typeof input=="string"?input:(warnInvalidClassName(optionName),"")}function refineClassNameGenerator(input,optionName){return typeof input=="function"?renderProps=>refineClassName(input(renderProps),optionName):refineClassName(input,optionName)}function warnInvalidClassName(optionName){warnedClassNameOptions[optionName]||(warn(`Invalid option \`${optionName}\`: expected a className string or a falsy value.`),warnedClassNameOptions[optionName]=!0)}function preventDefault(ev){ev.preventDefault()}function buildDelegationHandler(selector,handler){return ev=>{let matchedChild=ev.target.closest(selector);matchedChild&&handler.call(matchedChild,ev,matchedChild)}}function listenBySelector(container,eventType,selector,handler){let attachedHandler=buildDelegationHandler(selector,handler);return container.addEventListener(eventType,attachedHandler),()=>{container.removeEventListener(eventType,attachedHandler)}}function listenToHoverBySelector(container,selector,onMouseEnter,onMouseLeave){let currentMatchedChild;return listenBySelector(container,"mouseover",selector,(mouseOverEv,matchedChild)=>{if(matchedChild!==currentMatchedChild){currentMatchedChild=matchedChild,onMouseEnter(mouseOverEv,matchedChild);let realOnMouseLeave=mouseLeaveEv=>{currentMatchedChild=null,onMouseLeave(mouseLeaveEv,matchedChild),matchedChild.removeEventListener("mouseleave",realOnMouseLeave)};matchedChild.addEventListener("mouseleave",realOnMouseLeave)}})}var transitionEventNames=["webkitTransitionEnd","otransitionend","oTransitionEnd","msTransitionEnd","transitionend"];function whenTransitionDone(el,callback){let realCallback=ev=>{callback(ev),transitionEventNames.forEach(eventName=>{el.removeEventListener(eventName,realCallback)})};transitionEventNames.forEach(eventName=>{el.addEventListener(eventName,realCallback)})}function createAriaClickAttrs(handler){return{onClick:handler,...createAriaKeyboardAttrs(handler)}}function createAriaKeyboardAttrs(handler){return{tabIndex:0,onKeyDown(ev){(ev.key==="Enter"||ev.key===" ")&&(handler(ev),ev.preventDefault())}}}var guidNumber=0;function guid(){return guidNumber+=1,String(guidNumber)}function disableCursor(){document.body.classList.add(classNames.notAllowed)}function enableCursor(){document.body.classList.remove(classNames.notAllowed)}function preventSelection(el){el.style.userSelect="none",el.style.webkitUserSelect="none",el.addEventListener("selectstart",preventDefault)}function allowSelection(el){el.style.userSelect="",el.style.webkitUserSelect="",el.removeEventListener("selectstart",preventDefault)}function preventContextMenu(el){el.addEventListener("contextmenu",preventDefault)}function allowContextMenu(el){el.removeEventListener("contextmenu",preventDefault)}function parseFieldSpecs(input){let specs=[],tokens=[],i,token;for(typeof input=="string"?tokens=input.split(/\s*,\s*/):typeof input=="function"?tokens=[input]:Array.isArray(input)&&(tokens=input),i=0;i<tokens.length;i+=1)token=tokens[i],typeof token=="string"?specs.push(token.charAt(0)==="-"?{field:token.substring(1),order:-1}:{field:token,order:1}):typeof token=="function"&&specs.push({func:token});return specs}function compareByFieldSpecs(obj0,obj1,fieldSpecs){let i,cmp;for(i=0;i<fieldSpecs.length;i+=1)if(cmp=compareByFieldSpec(obj0,obj1,fieldSpecs[i]),cmp)return cmp;return 0}function compareByFieldSpec(obj0,obj1,fieldSpec){return fieldSpec.func?fieldSpec.func(obj0,obj1):flexibleCompare(obj0[fieldSpec.field],obj1[fieldSpec.field])*(fieldSpec.order||1)}function flexibleCompare(a,b){return!a&&!b?0:b==null?-1:a==null?1:typeof a=="string"||typeof b=="string"?String(a).localeCompare(String(b)):a-b}function formatWithOrdinals(formatter,args,fallbackText){return typeof formatter=="function"?formatter(...args):typeof formatter=="string"?args.reduce((str,arg,index2)=>str.replace("$"+index2,arg||""),formatter):fallbackText}function compareNumbers2(a,b){return a-b}function valuesIdentical(a,b){return a===b}function computeViewBorderless(options){let borderless=options.borderless;return{borderlessX:!!(options.borderlessX??borderless),borderlessTop:!!(options.borderlessTop??borderless),borderlessBottom:!!(options.borderlessBottom??borderless)}}var{hasOwnProperty}=Object.prototype;function filterHash(hash,func){let filtered={};for(let key in hash)func(hash[key],key)&&(filtered[key]=hash[key]);return filtered}function mapHash(hash,func){let newHash={};for(let key in hash)newHash[key]=func(hash[key],key);return newHash}function hashValuesToArray(obj){let a=[];for(let key in obj)a.push(obj[key]);return a}function arrayToHash(a){let hash={};for(let item of a)hash[item]=!0;return hash}function isMaybePropsEqualDepth1(props0,props1){return typeof props0=="object"&&props0&&typeof props1=="object"&&props1?isPropsEqualWithFunc(props0,props1,isPropsEqualShallow):props0===props1}function isPropsEqualWithFunc(props0,props1,valuesEqual){if(props0===props1)return!0;for(let key in props0)if(hasOwnProperty.call(props0,key)&&!(key in props1))return!1;for(let key in props1)if(hasOwnProperty.call(props1,key)&&(!(key in props0)||!valuesEqual(props0[key],props1[key],key)))return!1;return!0}function isMaybePropsEqualShallow(props0,props1){return typeof props0=="object"&&typeof props1=="object"&&props0&&props1?isPropsEqualShallow(props0,props1):props0===props1}function isPropsEqualShallow(props0,props1){return isPropsEqualWithFunc(props0,props1,valuesIdentical)}function isPropsEqualWithMap(props0,props1,equalityFuncMap){return isPropsEqualWithFunc(props0,props1,(val0,val1,key)=>{let equalityFunc=equalityFuncMap[key];return equalityFunc?equalityFunc(val0,val1):val0===val1})}function getUnequalProps(props0,props1){let keys=[];for(let key in props0)hasOwnProperty.call(props0,key)&&(key in props1||keys.push(key));for(let key in props1)hasOwnProperty.call(props1,key)&&props0[key]!==props1[key]&&keys.push(key);return keys}function mergeMaybePropsDepth1(props0,props1){return props0?mergePropsWithFunc(props0,props1,mergePropsShallow):props1}function mergePropsWithFunc(props0,props1,mergeValues){let dest={};for(let key in props0)hasOwnProperty.call(props0,key)&&(key in props1||(dest[key]=props0[key]));for(let key in props1)hasOwnProperty.call(props1,key)&&(key in props0?dest[key]=mergeValues(props0[key],props1[key]):dest[key]=props1[key]);return dest}function mergePropsShallow(props0,props1){return Object.assign({},props0,props1)}function isMaybeArraysEqual(array0,array1){return Array.isArray(array0)&&Array.isArray(array1)?isArraysEqual(array0,array1):array0===array1}function isArraysEqual(array0,array1,itemsEqual=valuesIdentical){if(array0===array1)return!0;let len=array0.length,i;if(len!==array1.length)return!1;for(i=0;i<len;i+=1)if(!itemsEqual(array0[i],array1[i]))return!1;return!0}var BASE_OPTION_REFINERS={navLinkDayClick:identity,navLinkWeekClick:identity,duration:createDuration,buttons:identity,toolbarElements:identity,prevText:String,nextText:String,prevYearText:String,nextYearText:String,todayText:String,yearText:String,monthText:String,weekTextLong:String,weekTextShort:String,dayText:String,listText:identity,todayHint:identity,prevHint:identity,nextHint:identity,buttonDisplay:identity,buttonGroupClass:refineClassNameGenerator,buttonClass:refineClassNameGenerator,defaultAllDayEventDuration:createDuration,defaultTimedEventDuration:createDuration,nextDayThreshold:createDuration,scrollTime:createDuration,scrollTimeReset:Boolean,slotMinTime:createDuration,slotMaxTime:createDuration,popoverFormat:createFormatter,slotDuration:createDuration,snapDuration:createDuration,headerToolbar:identity,footerToolbar:identity,forceEventDuration:Boolean,dayLaneClass:refineClassNameGenerator,dayLaneInnerClass:refineClassNameGenerator,dayLaneDidMount:identity,dayLaneWillUnmount:identity,initialView:String,aspectRatio:Number,weekends:Boolean,weekNumberCalculation:identity,weekNumbers:Boolean,weekNumberHeaderClass:refineClassNameGenerator,weekNumberHeaderInnerClass:refineClassNameGenerator,weekNumberHeaderContent:identity,weekNumberHeaderDidMount:identity,weekNumberHeaderWillUnmount:identity,inlineWeekNumberClass:refineClassNameGenerator,inlineWeekNumberContent:identity,inlineWeekNumberDidMount:identity,inlineWeekNumberWillUnmount:identity,editable:Boolean,controller:identity,nowIndicator:Boolean,nowIndicatorSnap:identity,nowIndicatorHeaderClass:refineClassNameGenerator,nowIndicatorHeaderContent:identity,nowIndicatorHeaderDidMount:identity,nowIndicatorHeaderWillUnmount:identity,nowIndicatorDotClass:refineClassName,nowIndicatorLineClass:refineClassNameGenerator,nowIndicatorLineContent:identity,nowIndicatorLineDidMount:identity,nowIndicatorLineWillUnmount:identity,showNonCurrentDates:Boolean,lazyFetching:Boolean,startParam:String,endParam:String,timeZoneParam:String,timeZone:String,locales:identity,locale:identity,dragRevertDuration:Number,dragScroll:Boolean,allDayMaintainDuration:Boolean,unselectAuto:Boolean,dropAccept:identity,eventOrder:parseFieldSpecs,eventOrderStrict:Boolean,eventSlicing:Boolean,eventPrintLayout:String,longPressDelay:Number,eventDragMinDistance:Number,expandRows:Boolean,height:identity,contentHeight:identity,direction:String,colorScheme:String,weekNumberFormat:createFormatter,eventResizableFromStart:Boolean,displayEventTime:Boolean,displayEventEnd:Boolean,progressiveEventRendering:Boolean,businessHours:identity,initialDate:identity,now:identity,eventDataTransform:identity,tableHeaderSticky:identity,footerScrollbarSticky:identity,defaultAllDay:Boolean,eventSourceFailure:identity,eventSourceSuccess:identity,eventDisplay:String,eventStartEditable:Boolean,eventDurationEditable:Boolean,eventOverlap:identity,eventConstraint:identity,eventAllow:identity,eventColor:String,eventContrastColor:String,eventDidMount:identity,eventWillUnmount:identity,eventContent:identity,eventClass:refineClassNameGenerator,eventInnerClass:refineClassNameGenerator,eventTimeClass:refineClassNameGenerator,eventTitleClass:refineClassNameGenerator,eventBeforeClass:refineClassNameGenerator,eventAfterClass:refineClassNameGenerator,listItemEventClass:refineClassNameGenerator,listItemEventInnerClass:refineClassNameGenerator,listItemEventTimeClass:refineClassNameGenerator,listItemEventTitleClass:refineClassNameGenerator,listItemEventBeforeClass:refineClassNameGenerator,listItemEventAfterClass:refineClassNameGenerator,blockEventClass:refineClassNameGenerator,blockEventInnerClass:refineClassNameGenerator,blockEventTimeClass:refineClassNameGenerator,blockEventTitleClass:refineClassNameGenerator,blockEventBeforeClass:refineClassNameGenerator,blockEventAfterClass:refineClassNameGenerator,rowEventClass:refineClassNameGenerator,rowEventInnerClass:refineClassNameGenerator,rowEventTimeClass:refineClassNameGenerator,rowEventTitleClass:refineClassNameGenerator,rowEventTitleSticky:Boolean,rowEventBeforeClass:refineClassNameGenerator,rowEventBeforeContent:identity,rowEventAfterClass:refineClassNameGenerator,rowEventAfterContent:identity,columnEventClass:refineClassNameGenerator,columnEventInnerClass:refineClassNameGenerator,columnEventTimeClass:refineClassNameGenerator,columnEventTitleClass:refineClassNameGenerator,columnEventTitleSticky:Boolean,columnEventBeforeClass:refineClassNameGenerator,columnEventAfterClass:refineClassNameGenerator,backgroundEventClass:refineClassNameGenerator,backgroundEventDidMount:identity,backgroundEventWillUnmount:identity,backgroundEventContent:identity,backgroundEventInnerClass:refineClassNameGenerator,backgroundEventTitleClass:refineClassNameGenerator,backgroundEventColor:String,selectConstraint:identity,selectOverlap:identity,selectAllow:identity,droppable:Boolean,unselectCancel:String,slotHeaderFormat:identity,slotLaneClass:refineClassNameGenerator,slotLaneDidMount:identity,slotLaneWillUnmount:identity,slotHeaderClass:refineClassNameGenerator,slotHeaderInnerClass:refineClassNameGenerator,slotHeaderContent:identity,slotHeaderDidMount:identity,slotHeaderWillUnmount:identity,slotHeaderAlign:identity,slotHeaderSticky:identity,slotHeaderRowClass:refineClassName,slotHeaderDividerClass:refineClassNameGenerator,dayMaxEvents:identity,dayMaxEventRows:identity,dayMinWidth:Number,slotHeaderInterval:createDuration,dayHeaderClass:refineClassNameGenerator,dayHeaderInnerClass:refineClassNameGenerator,dayHeaderContent:identity,dayHeaderDidMount:identity,dayHeaderWillUnmount:identity,dayHeaderAlign:identity,_dayHeaderSticky:identity,dayHeaderRowClass:refineClassName,dayHeaderDividerClass:refineClassNameGenerator,dayRowClass:refineClassName,dayCellDidMount:identity,dayCellWillUnmount:identity,dayCellClass:refineClassNameGenerator,dayCellInnerClass:refineClassNameGenerator,dayCellTopContent:identity,dayCellTopClass:refineClassNameGenerator,dayCellTopInnerClass:refineClassNameGenerator,dayCellBottomClass:refineClassNameGenerator,allDaySlot:Boolean,allDayText:String,allDayHeaderClass:refineClassNameGenerator,allDayHeaderInnerClass:refineClassNameGenerator,allDayHeaderContent:identity,allDayHeaderDidMount:identity,allDayHeaderWillUnmount:identity,timedText:String,slotMinWidth:Number,slotMinHeight:Number,navLinks:Boolean,eventTimeFormat:createFormatter,rerenderDelay:Number,moreLinkText:identity,moreLinkHint:identity,selectMinDistance:Number,selectable:Boolean,selectLongPressDelay:Number,eventLongPressDelay:Number,selectMirror:Boolean,eventMaxStack:Number,eventMinHeight:Number,eventMinWidth:Number,eventShortHeight:Number,slotEventOverlap:Boolean,firstDay:Number,dayCount:Number,dateAlignment:String,dateIncrement:createDuration,hiddenDays:identity,fixedWeekCount:Boolean,validRange:identity,visibleRange:identity,titleFormat:identity,eventInteractive:Boolean,noEventsText:String,viewHint:identity,viewChangeHint:String,navLinkHint:identity,closeHint:String,eventsHint:String,headingLevel:Number,moreLinkClick:identity,moreLinkContent:identity,moreLinkDidMount:identity,moreLinkWillUnmount:identity,moreLinkClass:refineClassNameGenerator,moreLinkInnerClass:refineClassNameGenerator,rowMoreLinkClass:refineClassNameGenerator,rowMoreLinkInnerClass:refineClassNameGenerator,columnMoreLinkClass:refineClassNameGenerator,columnMoreLinkInnerClass:refineClassNameGenerator,navLinkClass:refineClassName,monthStartFormat:createFormatter,dayCellFormat:createFormatter,handleCustomRendering:identity,customRenderingMetaMap:identity,popoverClass:refineClassName,popoverCloseClass:refineClassName,popoverCloseContent:identity,dayNarrowWidth:Number,borderless:Boolean,borderlessX:Boolean,borderlessTop:Boolean,borderlessBottom:Boolean,fillerClass:refineClassNameGenerator,headerToolbarClass:refineClassNameGenerator,footerToolbarClass:refineClassNameGenerator,toolbarClass:refineClassNameGenerator,toolbarSectionClass:refineClassNameGenerator,toolbarTitleClass:refineClassName,tableClass:refineClassNameGenerator,tableHeaderClass:refineClassNameGenerator,tableBodyClass:refineClassNameGenerator,nonBusinessHoursClass:refineClassName,highlightClass:refineClassName,dayHeaders:Boolean,dayHeaderFormat:createFormatter,allDayDividerClass:refineClassName,listDaysClass:refineClassName,listDayClass:refineClassNameGenerator,listDayFormat:createFalsableFormatter,listDayAltFormat:createFalsableFormatter,listDayHeaderDidMount:identity,listDayHeaderWillUnmount:identity,listDayHeaderClass:refineClassNameGenerator,listDayHeaderInnerClass:refineClassNameGenerator,listDayHeaderContent:identity,listDayBodyClass:refineClassNameGenerator,noEventsClass:refineClassNameGenerator,noEventsInnerClass:refineClassNameGenerator,noEventsContent:identity,noEventsDidMount:identity,noEventsWillUnmount:identity,multiMonthMaxColumns:Number,singleMonthMinWidth:Number,singleMonthTitleFormat:createFormatter,singleMonthDidMount:identity,singleMonthWillUnmount:identity,singleMonthClass:refineClassNameGenerator,singleMonthHeaderClass:refineClassNameGenerator,singleMonthHeaderInnerClass:refineClassNameGenerator},BASE_OPTION_DEFAULTS={buttonDisplay:"auto",eventDisplay:"auto",defaultTimedEventDuration:"01:00:00",defaultAllDayEventDuration:{day:1},forceEventDuration:!1,nextDayThreshold:"00:00:00",initialView:"",aspectRatio:1.35,weekends:!0,weekNumbers:!1,weekNumberCalculation:"local",editable:!1,nowIndicator:!1,scrollTime:"06:00:00",scrollTimeReset:!0,slotMinTime:"00:00:00",slotMaxTime:"24:00:00",showNonCurrentDates:!0,lazyFetching:!0,startParam:"start",endParam:"end",timeZoneParam:"timeZone",timeZone:"local",locales:[],locale:"",dragRevertDuration:500,dragScroll:!0,allDayMaintainDuration:!1,unselectAuto:!0,dropAccept:"*",eventOrder:"start,-duration,allDay,title",eventPrintLayout:"auto",popoverFormat:{month:"long",day:"numeric",year:"numeric"},longPressDelay:1e3,eventDragMinDistance:5,expandRows:!1,navLinks:!1,selectable:!1,eventMinHeight:15,eventMinWidth:30,eventShortHeight:30,monthStartFormat:{month:"long",day:"numeric"},dayCellFormat:{day:"numeric",omitTrailing:!0},headingLevel:2,outerBorder:!0,dayNarrowWidth:80,eventOverlap:!0,slotHeaderAlign:"start",slotHeaderSticky:!0,dayHeaderAlign:"start",_dayHeaderSticky:!0,rowEventTitleSticky:!0,columnEventTitleSticky:!0,nowIndicatorSnap:"auto",dayHeaders:!0},CALENDAR_LISTENER_REFINERS={datesSet:identity,eventsSet:identity,eventAdd:identity,eventChange:identity,eventRemove:identity,eventClick:identity,eventMouseEnter:identity,eventMouseLeave:identity,select:identity,unselect:identity,loading:identity,_unmount:identity,_beforeprint:identity,_afterprint:identity,_noDateSelect:identity,_noEventDrop:identity,_noEventResize:identity,_timeScrollRequest:identity,dateClick:identity,eventDragStart:identity,eventDragStop:identity,eventDrop:identity,eventResizeStart:identity,eventResizeStop:identity,eventResize:identity,drop:identity,eventReceive:identity,eventLeave:identity},CALENDAR_ONLY_OPTION_REFINERS={class:refineClassNameGenerator,className:refineClassNameGenerator,viewClass:refineClassNameGenerator,viewDidMount:identity,viewWillUnmount:identity,views:identity,plugins:identity,initialEvents:identity,events:identity,eventSources:identity},VIEW_ONLY_OPTION_REFINERS={type:String,component:identity,class:refineClassNameGenerator,className:refineClassNameGenerator,content:identity,didMount:identity,willUnmount:identity,buttonTextKey:String,dateProfileGeneratorClass:identity,usesMinMaxTime:Boolean,disallowAmbigTitle:Boolean},COMPLEX_OPTION_COMPARATORS={dateIncrement:isMaybePropsEqualShallow,headerToolbar:isMaybePropsEqualShallow,footerToolbar:isMaybePropsEqualShallow,buttons:isMaybePropsEqualDepth1,plugins:isMaybeArraysEqual,events:isMaybeArraysEqual,eventSources:isMaybeArraysEqual,resources:isMaybeArraysEqual};function refineProps(input,refiners){let refined={},extra={};for(let propName in refiners)propName in input&&(refined[propName]=refiners[propName](input[propName],propName));for(let propName in input)propName in refiners||(extra[propName]=input[propName]);return{refined,extra}}function identity(raw){return raw}function createFalsableFormatter(input){return input===!1?null:createFormatter(input)}function computeAlignedDayRange(timedRange){let dayCnt=Math.floor(diffDays4(timedRange.start,timedRange.end))||1,start=startOfDay4(timedRange.start),end=addDays3(start,dayCnt);return{start,end}}function computeVisibleDayRange(timedRange,nextDayThreshold=createDuration(0)){let startDay=null,endDay=null;if(timedRange.end){endDay=startOfDay4(timedRange.end);let endTimeMS=timedRange.end.valueOf()-endDay.valueOf();endTimeMS&&endTimeMS>=asRoughMs(nextDayThreshold)&&(endDay=addDays3(endDay,1))}return timedRange.start&&(startDay=startOfDay4(timedRange.start),endDay&&endDay<=startDay&&(endDay=addDays3(startDay,1))),{start:startDay,end:endDay}}function diffDates(date0,date1,dateEnv,largeUnit){return largeUnit==="year"?createDuration(dateEnv.diffWholeYears(date0,date1),"year"):largeUnit==="month"?createDuration(dateEnv.diffWholeMonths(date0,date1),"month"):diffDayAndTime(date0,date1)}function createEventInstance(defId,range){return{instanceId:guid(),defId,range}}function parseRecurring(refined,defaultAllDay,dateEnv,recurringTypes){for(let i=0;i<recurringTypes.length;i+=1){let parsed=recurringTypes[i].parse(refined,dateEnv);if(parsed){let{allDay}=refined;return allDay==null&&(allDay=defaultAllDay,allDay==null&&(allDay=parsed.allDayGuess,allDay==null&&(allDay=!1))),{allDay,duration:parsed.duration,typeData:parsed.typeData,typeId:i}}}return null}function expandRecurring(eventStore,framingRange,context){let{dateEnv,pluginHooks,options}=context,{defs,instances}=eventStore;instances=filterHash(instances,instance=>!defs[instance.defId].recurringDef);for(let defId in defs){let def=defs[defId];if(def.recurringDef){let{duration}=def.recurringDef;duration||(duration=def.allDay?options.defaultAllDayEventDuration:options.defaultTimedEventDuration);let starts=expandRecurringRanges(def,duration,framingRange,dateEnv,pluginHooks.recurringTypes);for(let start of starts){let instance=createEventInstance(defId,{start,end:dateEnv.add(start,duration)});instances[instance.instanceId]=instance}}}return{defs,instances}}function expandRecurringRanges(eventDef,duration,framingRange,dateEnv,recurringTypes){let markers=recurringTypes[eventDef.recurringDef.typeId].expand(eventDef.recurringDef.typeData,{start:dateEnv.subtract(framingRange.start,duration),end:framingRange.end},dateEnv);return eventDef.allDay&&(markers=markers.map(startOfDay4)),markers}function parseEvents(rawEvents,eventSource,context,allowOpenRange,defIdMap,instanceIdMap){let eventStore=createEmptyEventStore(),eventRefiners=buildEventRefiners(context);for(let rawEvent of rawEvents){let tuple=parseEvent(rawEvent,eventSource,context,allowOpenRange,eventRefiners,defIdMap,instanceIdMap);tuple&&eventTupleToStore(tuple,eventStore)}return eventStore}function eventTupleToStore(tuple,eventStore=createEmptyEventStore()){return eventStore.defs[tuple.def.defId]=tuple.def,tuple.instance&&(eventStore.instances[tuple.instance.instanceId]=tuple.instance),eventStore}function getRelevantEvents(eventStore,instanceId){let instance=eventStore.instances[instanceId];if(instance){let def=eventStore.defs[instance.defId],newStore=filterEventStoreDefs(eventStore,lookDef=>isEventDefsGrouped(def,lookDef));return newStore.defs[def.defId]=def,newStore.instances[instance.instanceId]=instance,newStore}return createEmptyEventStore()}function isEventDefsGrouped(def0,def1){return!!(def0.groupId&&def0.groupId===def1.groupId)}function createEmptyEventStore(){return{defs:{},instances:{}}}function mergeEventStores(store0,store1){return{defs:{...store0.defs,...store1.defs},instances:{...store0.instances,...store1.instances}}}function filterEventStoreDefs(eventStore,filterFunc){let defs=filterHash(eventStore.defs,filterFunc),instances=filterHash(eventStore.instances,instance=>defs[instance.defId]);return{defs,instances}}function excludeSubEventStore(master,sub){let{defs,instances}=master,filteredDefs={},filteredInstances={};for(let defId in defs)sub.defs[defId]||(filteredDefs[defId]=defs[defId]);for(let instanceId in instances)!sub.instances[instanceId]&&filteredDefs[instances[instanceId].defId]&&(filteredInstances[instanceId]=instances[instanceId]);return{defs:filteredDefs,instances:filteredInstances}}function normalizeConstraint(input,context){return Array.isArray(input)?parseEvents(input,null,context,!0):typeof input=="object"&&input?parseEvents([input],null,context,!0):input!=null?String(input):null}var EVENT_UI_REFINERS={display:String,editable:Boolean,startEditable:Boolean,durationEditable:Boolean,constraint:identity,overlap:identity,allow:identity,class:refineClassName,className:refineClassName,color:String,contrastColor:String},EMPTY_EVENT_UI={display:null,startEditable:null,durationEditable:null,constraints:[],overlap:null,allows:[],color:"",contrastColor:"",className:""};function createEventUi(refined,context){let constraint=normalizeConstraint(refined.constraint,context);return{display:refined.display||null,startEditable:refined.startEditable!=null?refined.startEditable:refined.editable,durationEditable:refined.durationEditable!=null?refined.durationEditable:refined.editable,constraints:constraint!=null?[constraint]:[],overlap:refined.overlap!=null?refined.overlap:null,allows:refined.allow!=null?[refined.allow]:[],color:refined.color||"",contrastColor:refined.contrastColor||"",className:(refined.class??refined.className)||""}}function combineEventUis(uis){return uis.reduce(combineTwoEventUis,EMPTY_EVENT_UI)}function combineTwoEventUis(item0,item1){return{display:item1.display!=null?item1.display:item0.display,startEditable:item1.startEditable!=null?item1.startEditable:item0.startEditable,durationEditable:item1.durationEditable!=null?item1.durationEditable:item0.durationEditable,constraints:item0.constraints.concat(item1.constraints),overlap:typeof item1.overlap=="boolean"?item1.overlap:item0.overlap,allows:item0.allows.concat(item1.allows),color:item1.color||item0.color,contrastColor:item1.contrastColor||item0.contrastColor,className:joinClassNames(item0.className,item1.className)}}var EVENT_NON_DATE_REFINERS={id:String,groupId:String,title:String,url:String,interactive:Boolean},EVENT_DATE_REFINERS={start:identity,end:identity,date:identity,allDay:Boolean},EVENT_REFINERS={...EVENT_NON_DATE_REFINERS,...EVENT_DATE_REFINERS,extendedProps:identity};function parseEvent(raw,eventSource,context,allowOpenRange,refiners=buildEventRefiners(context),defIdMap,instanceIdMap){let{refined,extra}=refineEventDef(raw,context,refiners),defaultAllDay=computeIsDefaultAllDay(eventSource,context),recurringRes=parseRecurring(refined,defaultAllDay,context.dateEnv,context.pluginHooks.recurringTypes);if(recurringRes){let def=parseEventDef(refined,extra,eventSource?eventSource.sourceId:"",recurringRes.allDay,!!recurringRes.duration,context,defIdMap);return def.recurringDef={typeId:recurringRes.typeId,typeData:recurringRes.typeData,duration:recurringRes.duration},{def,instance:null}}let singleRes=parseSingle(refined,defaultAllDay,context,allowOpenRange);if(singleRes){let def=parseEventDef(refined,extra,eventSource?eventSource.sourceId:"",singleRes.allDay,singleRes.hasEnd,context,defIdMap),instance=createEventInstance(def.defId,singleRes.range);return instanceIdMap&&def.publicId&&instanceIdMap[def.publicId]&&(instance.instanceId=instanceIdMap[def.publicId]),{def,instance}}return null}function refineEventDef(raw,context,refiners=buildEventRefiners(context)){return refineProps(raw,refiners)}function buildEventRefiners(context){return{...EVENT_UI_REFINERS,...EVENT_REFINERS,...context.pluginHooks.eventRefiners}}function parseEventDef(refined,extra,sourceId,allDay,hasEnd,context,defIdMap){let def={title:refined.title||"",groupId:refined.groupId||"",publicId:refined.id||"",url:refined.url||"",recurringDef:null,defId:(defIdMap&&refined.id?defIdMap[refined.id]:"")||guid(),sourceId,allDay,hasEnd,interactive:refined.interactive,ui:createEventUi(refined,context),extendedProps:{...refined.extendedProps||{},...extra}};for(let memberAdder of context.pluginHooks.eventDefMemberAdders)Object.assign(def,memberAdder(refined));return Object.freeze(def.ui.className),Object.freeze(def.extendedProps),def}function parseSingle(refined,defaultAllDay,context,allowOpenRange){let{allDay}=refined,startMeta,startMarker=null,hasEnd=!1,endMeta,endMarker=null,startInput=refined.start!=null?refined.start:refined.date;if(startMeta=context.dateEnv.createMarkerMeta(startInput),startMeta)startMarker=startMeta.marker;else if(!allowOpenRange)return null;return refined.end!=null&&(endMeta=context.dateEnv.createMarkerMeta(refined.end)),allDay==null&&(defaultAllDay!=null?allDay=defaultAllDay:allDay=(!startMeta||startMeta.isTimeUnspecified)&&(!endMeta||endMeta.isTimeUnspecified)),allDay&&startMarker&&(startMarker=startOfDay4(startMarker)),endMeta&&(endMarker=endMeta.marker,allDay&&(endMarker=startOfDay4(endMarker)),startMarker&&endMarker<=startMarker&&(endMarker=null)),endMarker?hasEnd=!0:allowOpenRange||(hasEnd=context.options.forceEventDuration||!1,endMarker=context.dateEnv.add(startMarker,allDay?context.options.defaultAllDayEventDuration:context.options.defaultTimedEventDuration)),{allDay,hasEnd,range:{start:startMarker,end:endMarker}}}function computeIsDefaultAllDay(eventSource,context){let res=null;return eventSource&&(res=eventSource.defaultAllDay),res==null&&(res=context.options.defaultAllDay),res}var STANDARD_PROPS={start:identity,end:identity,allDay:Boolean};function parseDateSpan(raw,dateEnv,defaultDuration){let span=parseOpenDateSpan(raw,dateEnv),{range}=span;if(!range.start)return null;if(!range.end){if(defaultDuration==null)return null;range.end=dateEnv.add(range.start,defaultDuration)}return span}function parseOpenDateSpan(raw,dateEnv){let{refined:standardProps,extra}=refineProps(raw,STANDARD_PROPS),startMeta=standardProps.start?dateEnv.createMarkerMeta(standardProps.start):null,endMeta=standardProps.end?dateEnv.createMarkerMeta(standardProps.end):null,{allDay}=standardProps;return allDay==null&&(allDay=startMeta&&startMeta.isTimeUnspecified&&(!endMeta||endMeta.isTimeUnspecified)),{range:{start:startMeta?startMeta.marker:null,end:endMeta?endMeta.marker:null},allDay,...extra}}function isDateSpansEqual(span0,span1){return rangesEqual(span0.range,span1.range)&&span0.allDay===span1.allDay&&isSpanPropsEqual(span0,span1)}function isSpanPropsEqual(span0,span1){for(let propName in span1)if(propName!=="range"&&propName!=="allDay"&&span0[propName]!==span1[propName])return!1;for(let propName in span0)if(!(propName in span1))return!1;return!0}function buildDateSpanApi(span,dateEnv){return{...buildRangeApi(span.range,dateEnv,span.allDay),allDay:span.allDay}}function buildRangeApiWithTimeZone(range,dateEnv,omitTime){return{...buildRangeApi(range,dateEnv,omitTime),timeZone:dateEnv.timeZone}}function buildRangeApi(range,dateEnv,omitTime){return{start:dateEnv.toDate(range.start),end:dateEnv.toDate(range.end),startStr:dateEnv.formatIso(range.start,{omitTime}),endStr:dateEnv.formatIso(range.end,{omitTime})}}function fabricateEventRange(dateSpan,eventUiBases,context){let res=refineEventDef({editable:!1},context),def=parseEventDef(res.refined,res.extra,"",dateSpan.allDay,!0,context);return{def,ui:compileEventUi(def,eventUiBases),instance:createEventInstance(def.defId,dateSpan.range),range:dateSpan.range,isStart:!0,isEnd:!0}}function triggerDateSelect(selection,pev,context){context.emitter.trigger("select",{...buildDateSpanApiWithContext(selection,context),jsEvent:pev?pev.origEvent:null,view:context.viewApi||context.calendarApi.view})}function triggerDateUnselect(pev,context){context.emitter.trigger("unselect",{jsEvent:pev?pev.origEvent:null,view:context.viewApi||context.calendarApi.view})}function buildDateSpanApiWithContext(dateSpan,context){let props={};for(let transform of context.pluginHooks.dateSpanTransforms)Object.assign(props,transform(dateSpan,context));return Object.assign(props,buildDateSpanApi(dateSpan,context.dateEnv)),props}function getDefaultEventEnd(allDay,marker,context){let{dateEnv,options}=context,end=marker;return allDay?(end=startOfDay4(end),end=dateEnv.add(end,options.defaultAllDayEventDuration)):end=dateEnv.add(end,options.defaultTimedEventDuration),end}function applyMutationToEventStore(eventStore,eventConfigBase,mutation,context){let eventConfigs=compileEventUis(eventStore.defs,eventConfigBase),dest=createEmptyEventStore();for(let defId in eventStore.defs){let def=eventStore.defs[defId];dest.defs[defId]=applyMutationToEventDef(def,eventConfigs[defId],mutation,context)}for(let instanceId in eventStore.instances){let instance=eventStore.instances[instanceId],def=dest.defs[instance.defId];dest.instances[instanceId]=applyMutationToEventInstance(instance,def,eventConfigs[instance.defId],mutation,context)}return dest}function applyMutationToEventDef(eventDef,eventConfig,mutation,context){let standardProps=mutation.standardProps||{};standardProps.hasEnd==null&&eventConfig.durationEditable&&(mutation.startDelta||mutation.endDelta)&&(standardProps.hasEnd=!0);let copy={...eventDef,...standardProps,ui:{...eventDef.ui,...standardProps.ui}};mutation.extendedProps&&(copy.extendedProps={...copy.extendedProps,...mutation.extendedProps});for(let applier of context.pluginHooks.eventDefMutationAppliers)applier(copy,mutation,context);return!copy.hasEnd&&context.options.forceEventDuration&&(copy.hasEnd=!0),copy}function applyMutationToEventInstance(eventInstance,eventDef,eventConfig,mutation,context){let{dateEnv}=context,forceAllDay=mutation.standardProps&&mutation.standardProps.allDay===!0,clearEnd=mutation.standardProps&&mutation.standardProps.hasEnd===!1,copy={...eventInstance};return forceAllDay&&(copy.range=computeAlignedDayRange(copy.range)),mutation.datesDelta&&eventConfig.startEditable&&(copy.range={start:dateEnv.add(copy.range.start,mutation.datesDelta),end:dateEnv.add(copy.range.end,mutation.datesDelta)}),mutation.startDelta&&eventConfig.durationEditable&&(copy.range={start:dateEnv.add(copy.range.start,mutation.startDelta),end:copy.range.end}),mutation.endDelta&&eventConfig.durationEditable&&(copy.range={start:copy.range.start,end:dateEnv.add(copy.range.end,mutation.endDelta)}),clearEnd&&(copy.range={start:copy.range.start,end:getDefaultEventEnd(eventDef.allDay,copy.range.start,context)}),eventDef.allDay&&(copy.range={start:startOfDay4(copy.range.start),end:startOfDay4(copy.range.end)}),copy.range.end<copy.range.start&&(copy.range.end=getDefaultEventEnd(eventDef.allDay,copy.range.start,context)),copy}var EventSourceImpl=class{constructor(context,internalEventSource){this.context=context,this.internalEventSource=internalEventSource}remove(){this.context.dispatch({type:"REMOVE_EVENT_SOURCE",sourceId:this.internalEventSource.sourceId})}refetch(){this.context.dispatch({type:"FETCH_EVENT_SOURCES",sourceIds:[this.internalEventSource.sourceId],isRefetch:!0})}get id(){return this.internalEventSource.publicId}get url(){return this.internalEventSource.meta.url}get format(){return this.internalEventSource.meta.format}},EventImpl=class _EventImpl{constructor(context,def,instance){this._context=context,this._def=def,this._instance=instance||null}setProp(name,val){if(name in EVENT_DATE_REFINERS)warn(`Cannot set date-related event property \`${name}\`. Use a method instead.`);else if(name==="id")val=EVENT_NON_DATE_REFINERS[name](val),this.mutate({standardProps:{publicId:val}});else if(name in EVENT_NON_DATE_REFINERS)val=EVENT_NON_DATE_REFINERS[name](val),this.mutate({standardProps:{[name]:val}});else if(name in EVENT_UI_REFINERS){let ui=EVENT_UI_REFINERS[name](val);name==="editable"?ui={startEditable:val,durationEditable:val}:ui={[name]:val},this.mutate({standardProps:{ui}})}else warn(`Cannot set event property \`${name}\`. Use setExtendedProp instead.`)}setExtendedProp(name,val){this.mutate({extendedProps:{[name]:val}})}setStart(startInput,options={}){let{dateEnv}=this._context,start=dateEnv.createMarker(startInput);if(start&&this._instance){let instanceRange=this._instance.range,startDelta=diffDates(instanceRange.start,start,dateEnv,options.granularity);options.maintainDuration?this.mutate({datesDelta:startDelta}):this.mutate({startDelta})}}setEnd(endInput,options={}){let{dateEnv}=this._context,end;if(!(endInput!=null&&(end=dateEnv.createMarker(endInput),!end))&&this._instance)if(end){let endDelta=diffDates(this._instance.range.end,end,dateEnv,options.granularity);this.mutate({endDelta})}else this.mutate({standardProps:{hasEnd:!1}})}setDates(startInput,endInput,options={}){let{dateEnv}=this._context,standardProps={allDay:options.allDay},start=dateEnv.createMarker(startInput),end;if(start&&!(endInput!=null&&(end=dateEnv.createMarker(endInput),!end))&&this._instance){let instanceRange=this._instance.range;options.allDay===!0&&(instanceRange=computeAlignedDayRange(instanceRange));let startDelta=diffDates(instanceRange.start,start,dateEnv,options.granularity);if(end){let endDelta=diffDates(instanceRange.end,end,dateEnv,options.granularity);durationsEqual(startDelta,endDelta)?this.mutate({datesDelta:startDelta,standardProps}):this.mutate({startDelta,endDelta,standardProps})}else standardProps.hasEnd=!1,this.mutate({datesDelta:startDelta,standardProps})}}moveStart(deltaInput){let delta=createDuration(deltaInput);delta&&this.mutate({startDelta:delta})}moveEnd(deltaInput){let delta=createDuration(deltaInput);delta&&this.mutate({endDelta:delta})}moveDates(deltaInput){let delta=createDuration(deltaInput);delta&&this.mutate({datesDelta:delta})}setAllDay(allDay,options={}){let standardProps={allDay},{maintainDuration}=options;maintainDuration==null&&(maintainDuration=this._context.options.allDayMaintainDuration),this._def.allDay!==allDay&&(standardProps.hasEnd=maintainDuration),this.mutate({standardProps})}formatRange(formatInput){let{dateEnv}=this._context,instance=this._instance,formatter=createFormatter(formatInput);return this._def.hasEnd?joinDateTimeFormatParts(dateEnv.formatRangeToParts(instance.range.start,instance.range.end,formatter)):joinDateTimeFormatParts(dateEnv.formatToParts(instance.range.start,formatter))}mutate(mutation){let instance=this._instance;if(instance){let def=this._def,context=this._context,{eventStore}=context.getCurrentData(),relevantEvents=getRelevantEvents(eventStore,instance.instanceId);relevantEvents=applyMutationToEventStore(relevantEvents,{"":{display:"",startEditable:!0,durationEditable:!0,constraints:[],overlap:null,allows:[],color:"",contrastColor:"",className:""}},mutation,context);let oldEvent=new _EventImpl(context,def,instance);this._def=relevantEvents.defs[def.defId],this._instance=relevantEvents.instances[instance.instanceId],context.dispatch({type:"MERGE_EVENTS",eventStore:relevantEvents}),context.emitter.trigger("eventChange",{oldEvent,event:this,relatedEvents:buildEventApis(relevantEvents,context,instance),revert(){context.dispatch({type:"RESET_EVENTS",eventStore})}})}}remove(){let context=this._context,asStore=eventApiToStore(this);context.dispatch({type:"REMOVE_EVENTS",eventStore:asStore}),context.emitter.trigger("eventRemove",{event:this,relatedEvents:[],revert(){context.dispatch({type:"MERGE_EVENTS",eventStore:asStore})}})}get source(){let{sourceId}=this._def;return sourceId?new EventSourceImpl(this._context,this._context.getCurrentData().eventSources[sourceId]):null}get start(){return this._instance?this._context.dateEnv.toDate(this._instance.range.start):null}get end(){return this._instance&&this._def.hasEnd?this._context.dateEnv.toDate(this._instance.range.end):null}get startStr(){let instance=this._instance;return instance?this._context.dateEnv.formatIso(instance.range.start,{omitTime:this._def.allDay}):""}get endStr(){let instance=this._instance;return instance&&this._def.hasEnd?this._context.dateEnv.formatIso(instance.range.end,{omitTime:this._def.allDay}):""}get id(){return this._def.publicId}get groupId(){return this._def.groupId}get allDay(){return this._def.allDay}get title(){return this._def.title}get url(){return this._def.url}get display(){return this._def.ui.display||"auto"}get startEditable(){return this._def.ui.startEditable}get durationEditable(){return this._def.ui.durationEditable}get constraint(){return this._def.ui.constraints[0]||null}get overlap(){return this._def.ui.overlap}get allow(){return this._def.ui.allows[0]||null}get color(){return this._def.ui.color}get contrastColor(){return this._def.ui.contrastColor}get className(){return this._def.ui.className}get extendedProps(){return this._def.extendedProps}toPlainObject(settings={}){let def=this._def,{ui}=def,{startStr,endStr}=this,res={allDay:def.allDay};return def.title&&(res.title=def.title),startStr&&(res.start=startStr),endStr&&(res.end=endStr),def.publicId&&(res.id=def.publicId),def.groupId&&(res.groupId=def.groupId),def.url&&(res.url=def.url),ui.display&&ui.display!=="auto"&&(res.display=ui.display),ui.color&&(res.color=ui.color),ui.contrastColor&&(res.contrastColor=ui.contrastColor),ui.className&&(res.className=ui.className),Object.keys(def.extendedProps).length&&(settings.collapseExtendedProps?Object.assign(res,def.extendedProps):res.extendedProps=def.extendedProps),res}toJSON(){return this.toPlainObject()}};function eventApiToStore(eventApi){let def=eventApi._def,instance=eventApi._instance;return{defs:{[def.defId]:def},instances:instance?{[instance.instanceId]:instance}:{}}}function buildEventApis(eventStore,context,excludeInstance){let{defs,instances}=eventStore,eventApis=[],excludeInstanceId=excludeInstance?excludeInstance.instanceId:"";for(let id in instances){let instance=instances[id],def=defs[instance.defId];instance.instanceId!==excludeInstanceId&&eventApis.push(new EventImpl(context,def,instance))}return eventApis}function getEventKey(seg){return seg.eventRange.instance.instanceId}function sliceEventStore(eventStore,eventUiBases,framingRange,nextDayThreshold){let inverseBgByGroupId={},inverseBgByDefId={},defByGroupId={},bgRanges=[],fgRanges=[],eventUis=compileEventUis(eventStore.defs,eventUiBases);for(let defId in eventStore.defs){let def=eventStore.defs[defId];eventUis[def.defId].display==="inverse-background"&&(def.groupId?(inverseBgByGroupId[def.groupId]=[],defByGroupId[def.groupId]||(defByGroupId[def.groupId]=def)):inverseBgByDefId[defId]=[])}for(let instanceId in eventStore.instances){let instance=eventStore.instances[instanceId],def=eventStore.defs[instance.defId],ui=eventUis[def.defId],origRange=instance.range,normalRange=!def.allDay&&nextDayThreshold?computeVisibleDayRange(origRange,nextDayThreshold):origRange,slicedRange=intersectRanges(normalRange,framingRange);slicedRange&&(ui.display==="inverse-background"?def.groupId?inverseBgByGroupId[def.groupId].push(slicedRange):inverseBgByDefId[instance.defId].push(slicedRange):ui.display!=="none"&&(ui.display==="background"?bgRanges:fgRanges).push({def,ui,instance,range:slicedRange,isStart:normalRange.start&&normalRange.start.valueOf()===slicedRange.start.valueOf(),isEnd:normalRange.end&&normalRange.end.valueOf()===slicedRange.end.valueOf()}))}for(let groupId in inverseBgByGroupId){let ranges=inverseBgByGroupId[groupId],invertedRanges=invertRanges(ranges,framingRange);for(let invertedRange of invertedRanges){let def=defByGroupId[groupId],ui=eventUis[def.defId];bgRanges.push({def,ui,instance:null,range:invertedRange,isStart:!1,isEnd:!1})}}for(let defId in inverseBgByDefId){let ranges=inverseBgByDefId[defId],invertedRanges=invertRanges(ranges,framingRange);for(let invertedRange of invertedRanges)bgRanges.push({def:eventStore.defs[defId],ui:eventUis[defId],instance:null,range:invertedRange,isStart:!1,isEnd:!1})}return{bg:bgRanges,fg:fgRanges}}function hasBgRendering(def){return def.ui.display==="background"||def.ui.display==="inverse-background"}function setElEventRange(el,eventRange){el.fcEventRange=eventRange}function getElEventRange(el){return el.fcEventRange||el.parentNode.fcEventRange||null}function compileEventUis(eventDefs,eventUiBases){return mapHash(eventDefs,eventDef=>compileEventUi(eventDef,eventUiBases))}function compileEventUi(eventDef,eventUiBases){let uis=[],fallbackBase=eventUiBases[""],defBase=eventUiBases[eventDef.defId];return fallbackBase&&uis.push(fallbackBase),defBase&&uis.push(defBase),uis.push(eventDef.ui),combineEventUis(uis)}function sortEventSegs(segs,eventOrderSpecs){let objs=segs.map(buildSegCompareObj);return objs.sort((obj0,obj1)=>compareByFieldSpecs(obj0,obj1,eventOrderSpecs)),objs.map(c=>c._seg)}function buildSegCompareObj(seg){let{eventRange}=seg,eventDef=eventRange.def,range=eventRange.instance?eventRange.instance.range:eventRange.range,start=range.start?range.start.valueOf():0,end=range.end?range.end.valueOf():0;return{...eventDef.extendedProps,...eventDef,id:eventDef.publicId,start,end,duration:end-start,allDay:Number(eventDef.allDay),_seg:seg}}function computeEventRangeDraggable(eventRange,context){let{pluginHooks}=context,transformers=pluginHooks.isDraggableTransformers,{def,ui}=eventRange,val=ui.startEditable;for(let transformer of transformers)val=transformer(val,def,ui,context);return val}function buildEventRangeTimeText(timeFormat,eventRange,slicedStart,slicedEnd,isStart,isEnd,context,defaultDisplayEventTime=!0,defaultDisplayEventEnd=!0){let{dateEnv,options}=context,{def}=eventRange,{displayEventTime,displayEventEnd}=options;displayEventTime==null&&(displayEventTime=defaultDisplayEventTime!==!1),displayEventEnd==null&&(displayEventEnd=defaultDisplayEventEnd!==!1);let startDate=!isStart&&slicedStart&&startOfDay4(slicedStart).valueOf()!==startOfDay4(eventRange.instance.range.start).valueOf()?slicedStart:eventRange.instance.range.start,endDate=!isEnd&&slicedEnd&&startOfDay4(addMs(slicedEnd,-1)).valueOf()!==startOfDay4(addMs(eventRange.instance.range.end,-1)).valueOf()?slicedEnd:eventRange.instance.range.end;if(displayEventTime&&!def.allDay){if(displayEventEnd&&(isStart||isEnd)&&def.hasEnd){let rangeParts=dateEnv.formatRangeToParts(startDate,endDate,timeFormat),multiDaySeparator=detectMultiDayTimes(rangeParts);return multiDaySeparator!=null?joinDateTimeFormatParts(dateEnv.formatToParts(startDate,timeFormat))+multiDaySeparator+joinDateTimeFormatParts(dateEnv.formatToParts(endDate,timeFormat)):joinDateTimeFormatParts(rangeParts)}if(isStart)return joinDateTimeFormatParts(dateEnv.formatToParts(startDate,timeFormat))}return""}var dateUnits=new Set(["year","month","day"]);function detectMultiDayTimes(parts){let sharedPart,hasDatePart=!1;for(let part of parts)part.source==="shared"&&(sharedPart=part),dateUnits.has(part.type)&&(hasDatePart=!0);return hasDatePart?sharedPart.value:void 0}function getEventRangeMeta(eventRange,todayRange,nowDate){let segRange=eventRange.range;return{isPast:segRange.end<=(nowDate||todayRange.start),isFuture:segRange.start>=(nowDate||todayRange.end),isToday:todayRange&&rangeContainsMarker(todayRange,segRange.start)}}function buildEventRangeKey(eventRange){return eventRange.instance?eventRange.instance.instanceId:`${eventRange.def.defId}:${eventRange.range.start.toISOString()}`}function getEventTagAndAttrs(eventRange,context){let{def,instance}=eventRange,{url}=def;if(url)return["a",{href:url},!0];let{emitter,options}=context,{eventInteractive}=options;eventInteractive==null&&(eventInteractive=def.interactive,eventInteractive==null&&(eventInteractive=!!emitter.hasHandlers("eventClick")));let attrs;return eventInteractive&&(attrs=createAriaKeyboardAttrs(ev=>{emitter.trigger("eventClick",{el:ev.target,event:new EventImpl(context,def,instance),jsEvent:ev,view:context.viewApi})}),attrs={role:"button",...attrs}),["div",attrs,eventInteractive]}var classNamesRe=/(^c|C)lass(Name)?$/,contentRe=/Content$/,lifecycleRe=/(DidMount|WillUnmount)$/,handlerRe=/^on[A-Z]/,customMergeFuncs={buttons:mergeMaybePropsDepth1};function mergeViewOptionsMap(...hashes){let merged={};for(let hash of hashes)for(let viewName in hash){let viewOptions=hash[viewName];merged[viewName]?merged[viewName]=mergeCalendarOptions(merged[viewName],viewOptions):merged[viewName]=viewOptions}return merged}function mergeCalendarOptions(...optionSets){let dest={};for(let options of optionSets)for(let name in options)if(name in dest){let mergeFunc=customMergeFuncs[name]||(classNamesRe.test(name)?joinFuncishClassNames:contentRe.test(name)?mergeContentInjectors:lifecycleRe.test(name)?mergeLifecycleCallbacks:void 0);dest[name]=mergeFunc?mergeFunc(dest[name],options[name],name):options[name]}else dest[name]=options[name];return dest}function joinFuncishClassNames(input0,input1,optionName){let isFunc0=typeof input0=="function",isFunc1=typeof input1=="function";if(isFunc0||isFunc1){let combinedFunc=info=>joinClassNames(refineClassName(isFunc0?input0(info):input0,optionName),refineClassName(isFunc1?input1(info):input1,optionName));return combinedFunc.parts=[input0,input1],combinedFunc}return joinClassNames(refineClassName(input0,optionName),refineClassName(input1,optionName))}function mergeContentInjectors(contentGenerator0,contentGenerator1){if(typeof contentGenerator1=="function"){let combinedFunc=renderProps=>{let res=contentGenerator1(renderProps);return res===!0?typeof contentGenerator0=="function"?contentGenerator0(renderProps):contentGenerator0:res};return combinedFunc.parts=[contentGenerator0,contentGenerator1],combinedFunc}return contentGenerator1??contentGenerator0}function mergeLifecycleCallbacks(fn0,fn1){if(fn0&&fn1){let combinedFunc=(...args)=>{fn0(...args),fn1(...args)};return combinedFunc.parts=[fn0,fn1],combinedFunc}return fn0||fn1}function isNonHandlerPropsEqual(obj0,obj1){let keys=getUnequalProps(obj0,obj1);for(let key of keys)if(!handlerRe.test(key))return!1;return!0}function isMergedPropsEqual(val0,val1){let parts0=val0&&val0.parts,parts1=val1&&val1.parts;if(parts0&&parts1){let count0=parts0.length,count1=parts1.length;if(count0!==count1)return!1;for(let i=0;i<count0;i++)if(!(parts0[i]===parts1[i]||isMergedPropsEqual(parts0[i],parts1[i])))return!1;return!0}return!1}var globalLocales=[],MINIMAL_RAW_EN_LOCALE={code:"en",week:{dow:0,doy:4},direction:"ltr",todayText:"Today",prevText:"Prev",nextText:"Next",prevYearText:"Prev year",nextYearText:"Next year",yearText:"Year",monthText:"Month",weekTextLong:"Week",dayText:"Day",listText:"List",closeHint:"Close",eventsHint:"Events",allDayText:"All-day",timedText:"Timed",moreLinkText:"more",noEventsText:"No events to display"},RAW_EN_LOCALE={...MINIMAL_RAW_EN_LOCALE,weekTextShort:"W",todayHint:(unitText,unit)=>unit==="day"?"Today":`This ${unitText}`,prevHint:"Previous $0",nextHint:"Next $0",viewHint:"$0 view",viewChangeHint:"Change view",navLinkHint:"Go to $0",moreLinkHint(eventCnt){return`Show ${eventCnt} more event${eventCnt===1?"":"s"}`}};function organizeRawLocales(explicitRawLocales){let defaultCode=explicitRawLocales.length>0?explicitRawLocales[0].code:"en",allRawLocales=globalLocales.concat(explicitRawLocales),rawLocaleMap={en:RAW_EN_LOCALE};for(let rawLocale of allRawLocales)rawLocaleMap[rawLocale.code]=rawLocale;return{map:rawLocaleMap,defaultCode}}function buildLocale(inputSingular,available){return typeof inputSingular=="object"&&!Array.isArray(inputSingular)?parseLocale(inputSingular.code,[inputSingular.code],inputSingular):queryLocale(inputSingular,available)}function queryLocale(codeArg,available){let codes=[].concat(codeArg||[]),raw=queryRawLocale(codes,available)||RAW_EN_LOCALE;return parseLocale(codeArg,codes,raw)}function queryRawLocale(codes,available){for(let i=0;i<codes.length;i+=1){let parts=codes[i].toLocaleLowerCase().split("-");for(let j=parts.length;j>0;j-=1){let simpleId=parts.slice(0,j).join("-");if(available[simpleId])return available[simpleId]}}return null}function parseLocale(codeArg,codes,raw){let merged=mergeCalendarOptions(MINIMAL_RAW_EN_LOCALE,raw);delete merged.code;let{week}=merged;return delete merged.week,{codeArg,codes,week,simpleNumberFormat:new Intl.NumberFormat(codeArg),options:merged}}var JsonRequestError=class extends Error{constructor(message,response){super(message),this.response=response}};function requestJson(method,url,params){method=method.toUpperCase();let fetchOptions={method};return method==="GET"?url+=(url.indexOf("?")===-1?"?":"&")+new URLSearchParams(params):(fetchOptions.body=new URLSearchParams(params),fetchOptions.headers={"Content-Type":"application/x-www-form-urlencoded"}),fetch(url,fetchOptions).then(fetchRes=>{if(fetchRes.ok)return fetchRes.json().then(parsedResponse=>[parsedResponse,fetchRes],()=>{throw new JsonRequestError("Failure parsing JSON",fetchRes)});throw new JsonRequestError("Request failed",fetchRes)})}function handleDateProfile(dateProfile,context){context.emitter.trigger("datesSet",{...buildRangeApiWithTimeZone(dateProfile.activeRange,context.dateEnv),view:context.viewApi})}function handleEventStore(eventStore,context){let{emitter}=context;emitter.hasHandlers("eventsSet")&&emitter.trigger("eventsSet",buildEventApis(eventStore,context))}var eventSourceDef$2={ignoreRange:!0,parseMeta(refined){return Array.isArray(refined.events)?refined.events:null},fetch(arg,successCallback){successCallback({rawEvents:arg.eventSource.meta})}},arrayEventSourcePlugin={name:"array-event-source",eventSourceDefs:[eventSourceDef$2]};function unpromisify(func,normalizedSuccessCallback,normalizedFailureCallback){let isResolved=!1,wrappedSuccess=function(res2){isResolved||(isResolved=!0,normalizedSuccessCallback(res2))},wrappedFailure=function(error){isResolved||(isResolved=!0,normalizedFailureCallback(error))},res=func(wrappedSuccess,wrappedFailure);res&&typeof res.then=="function"&&res.then(wrappedSuccess,wrappedFailure)}var eventSourceDef$1={parseMeta(refined){return typeof refined.events=="function"?refined.events:null},fetch(arg,successCallback,errorCallback){let{dateEnv}=arg.context,func=arg.eventSource.meta;unpromisify(func.bind(null,buildRangeApiWithTimeZone(arg.range,dateEnv)),rawEvents=>successCallback({rawEvents}),errorCallback)}},funcEventSourcePlugin={name:"func-event-source",eventSourceDefs:[eventSourceDef$1]},JSON_FEED_EVENT_SOURCE_REFINERS={method:String,extraParams:identity,startParam:String,endParam:String,timeZoneParam:String},eventSourceDef={parseMeta(refined){return refined.url&&(refined.format==="json"||!refined.format)?{url:refined.url,format:"json",method:(refined.method||"GET").toUpperCase(),extraParams:refined.extraParams,startParam:refined.startParam,endParam:refined.endParam,timeZoneParam:refined.timeZoneParam}:null},fetch(arg,successCallback,errorCallback){let{meta}=arg.eventSource,requestParams=buildRequestParams(meta,arg.range,arg.context);requestJson(meta.method,meta.url,requestParams).then(([rawEvents,response])=>{successCallback({rawEvents,response})},errorCallback)}},jsonFeedEventSourcePlugin={name:"json-event-source",eventSourceRefiners:JSON_FEED_EVENT_SOURCE_REFINERS,eventSourceDefs:[eventSourceDef]};function buildRequestParams(meta,range,context){let{dateEnv,options}=context,startParam,endParam,timeZoneParam,customRequestParams,params={};return startParam=meta.startParam,startParam==null&&(startParam=options.startParam),endParam=meta.endParam,endParam==null&&(endParam=options.endParam),timeZoneParam=meta.timeZoneParam,timeZoneParam==null&&(timeZoneParam=options.timeZoneParam),typeof meta.extraParams=="function"?customRequestParams=meta.extraParams():customRequestParams=meta.extraParams||{},Object.assign(params,customRequestParams),params[startParam]=dateEnv.formatIso(range.start),params[endParam]=dateEnv.formatIso(range.end),dateEnv.timeZone!=="local"&&(params[timeZoneParam]=dateEnv.timeZone),params}var changeHandlerPlugin={name:"change-handler",optionChangeHandlers:{controller(controller,context){controller._setApi(context.calendarApi)},events(events,context){handleEventSources([events],context)},eventSources:handleEventSources}};function handleEventSources(inputs,context){let unfoundSources=hashValuesToArray(context.getCurrentData().eventSources);if(unfoundSources.length===1&&inputs.length===1&&Array.isArray(unfoundSources[0]._raw)&&Array.isArray(inputs[0])){context.dispatch({type:"RESET_RAW_EVENTS",sourceId:unfoundSources[0].sourceId,rawEvents:inputs[0]});return}let newInputs=[];for(let input of inputs){let inputFound=!1;for(let i=0;i<unfoundSources.length;i+=1)if(unfoundSources[i]._raw===input){unfoundSources.splice(i,1),inputFound=!0;break}inputFound||newInputs.push(input)}for(let unfoundSource of unfoundSources)context.dispatch({type:"REMOVE_EVENT_SOURCE",sourceId:unfoundSource.sourceId});for(let newInput of newInputs)context.calendarApi.addEventSource(newInput)}var EVENT_SOURCE_REFINERS={id:String,defaultAllDay:Boolean,url:String,format:String,events:identity,eventDataTransform:identity,success:identity,failure:identity};function parseEventSource(raw,context,refiners=buildEventSourceRefiners(context)){let rawObj;if(typeof raw=="string"?rawObj={url:raw}:typeof raw=="function"||Array.isArray(raw)?rawObj={events:raw}:typeof raw=="object"&&raw&&(rawObj=raw),rawObj){let{refined,extra}=refineProps(rawObj,refiners),metaRes=buildEventSourceMeta(refined,context);if(metaRes)return{_raw:raw,isFetching:!1,latestFetchId:"",fetchRange:null,defaultAllDay:refined.defaultAllDay,eventDataTransform:refined.eventDataTransform,success:refined.success,failure:refined.failure,publicId:refined.id||"",sourceId:guid(),sourceDefId:metaRes.sourceDefId,meta:metaRes.meta,ui:createEventUi(refined,context),extendedProps:extra}}return null}function buildEventSourceRefiners(context){return{...EVENT_UI_REFINERS,...EVENT_SOURCE_REFINERS,...context.pluginHooks.eventSourceRefiners}}function buildEventSourceMeta(raw,context){let defs=context.pluginHooks.eventSourceDefs;for(let i=defs.length-1;i>=0;i-=1){let meta=defs[i].parseMeta(raw);if(meta)return{sourceDefId:i,meta}}return null}function initEventSources(calendarOptions,dateProfile,context){let activeRange=dateProfile?dateProfile.activeRange:null;return addSources({},parseInitialSources(calendarOptions,context),activeRange,context)}function reduceEventSources(eventSources,action,dateProfile,context){let activeRange=dateProfile?dateProfile.activeRange:null;switch(action.type){case"ADD_EVENT_SOURCES":return addSources(eventSources,action.sources,activeRange,context);case"REMOVE_EVENT_SOURCE":return removeSource(eventSources,action.sourceId);case"PREV":case"NEXT":case"CHANGE_DATE":case"CHANGE_VIEW_TYPE":return dateProfile?fetchDirtySources(eventSources,activeRange,context):eventSources;case"FETCH_EVENT_SOURCES":return fetchSourcesByIds(eventSources,action.sourceIds?arrayToHash(action.sourceIds):excludeStaticSources(eventSources,context),activeRange,action.isRefetch||!1,context);case"RECEIVE_EVENTS":case"RECEIVE_EVENT_ERROR":return receiveResponse(eventSources,action.sourceId,action.fetchId,action.fetchRange);case"REMOVE_ALL_EVENT_SOURCES":return{};default:return eventSources}}function reduceEventSourcesNewTimeZone(eventSources,dateProfile,context){let activeRange=dateProfile?dateProfile.activeRange:null;return fetchSourcesByIds(eventSources,excludeStaticSources(eventSources,context),activeRange,!0,context)}function computeEventSourcesLoading(eventSources){for(let sourceId in eventSources)if(eventSources[sourceId].isFetching)return!0;return!1}function addSources(eventSourceHash,sources,fetchRange,context){let hash={};for(let source of sources)hash[source.sourceId]=source;return fetchRange&&(hash=fetchDirtySources(hash,fetchRange,context)),{...eventSourceHash,...hash}}function removeSource(eventSourceHash,sourceId){return filterHash(eventSourceHash,eventSource=>eventSource.sourceId!==sourceId)}function fetchDirtySources(sourceHash,fetchRange,context){return fetchSourcesByIds(sourceHash,filterHash(sourceHash,eventSource=>isSourceDirty(eventSource,fetchRange,context)),fetchRange,!1,context)}function isSourceDirty(eventSource,fetchRange,context){return doesSourceNeedRange(eventSource,context)?!context.options.lazyFetching||!eventSource.fetchRange||eventSource.isFetching||fetchRange.start<eventSource.fetchRange.start||fetchRange.end>eventSource.fetchRange.end:!eventSource.latestFetchId}function fetchSourcesByIds(prevSources,sourceIdHash,fetchRange,isRefetch,context){let nextSources={};for(let sourceId in prevSources){let source=prevSources[sourceId];sourceIdHash[sourceId]?nextSources[sourceId]=fetchSource(source,fetchRange,isRefetch,context):nextSources[sourceId]=source}return nextSources}function fetchSource(eventSource,fetchRange,isRefetch,context){let{options,calendarApi}=context,sourceDef=context.pluginHooks.eventSourceDefs[eventSource.sourceDefId],fetchId=guid();return sourceDef.fetch({eventSource,range:fetchRange,isRefetch,context},res=>{let{rawEvents}=res;options.eventSourceSuccess&&(rawEvents=options.eventSourceSuccess.call(calendarApi,rawEvents,res.response)||rawEvents),eventSource.success&&(rawEvents=eventSource.success.call(calendarApi,rawEvents,res.response)||rawEvents),context.dispatch({type:"RECEIVE_EVENTS",sourceId:eventSource.sourceId,fetchId,fetchRange,rawEvents})},error=>{let errorHandled=!1;options.eventSourceFailure&&(options.eventSourceFailure.call(calendarApi,error),errorHandled=!0),eventSource.failure&&(eventSource.failure(error),errorHandled=!0),errorHandled||warn(`Unhandled event source error: ${error.message}`,error),context.dispatch({type:"RECEIVE_EVENT_ERROR",sourceId:eventSource.sourceId,fetchId,fetchRange,error})}),{...eventSource,isFetching:!0,latestFetchId:fetchId}}function receiveResponse(sourceHash,sourceId,fetchId,fetchRange){let eventSource=sourceHash[sourceId];return eventSource&&fetchId===eventSource.latestFetchId?{...sourceHash,[sourceId]:{...eventSource,isFetching:!1,fetchRange}}:sourceHash}function excludeStaticSources(eventSources,context){return filterHash(eventSources,eventSource=>doesSourceNeedRange(eventSource,context))}function parseInitialSources(rawOptions,context){let refiners=buildEventSourceRefiners(context),rawSources=[].concat(rawOptions.eventSources||[]),sources=[];rawOptions.initialEvents&&rawSources.unshift(rawOptions.initialEvents),rawOptions.events&&rawSources.unshift(rawOptions.events);for(let rawSource of rawSources){let source=parseEventSource(rawSource,context,refiners);source&&sources.push(source)}return sources}function doesSourceNeedRange(eventSource,context){return!context.pluginHooks.eventSourceDefs[eventSource.sourceDefId].ignoreRange}var SIMPLE_RECURRING_REFINERS={daysOfWeek:identity,startTime:createDuration,endTime:createDuration,duration:createDuration,startRecur:identity,endRecur:identity},recurring={parse(refined,dateEnv){if(refined.daysOfWeek||refined.startTime||refined.endTime||refined.startRecur||refined.endRecur){let recurringData={daysOfWeek:refined.daysOfWeek||null,startTime:refined.startTime||null,endTime:refined.endTime||null,startRecur:refined.startRecur?dateEnv.createMarker(refined.startRecur):null,endRecur:refined.endRecur?dateEnv.createMarker(refined.endRecur):null,dateEnv},duration;return refined.duration&&(duration=refined.duration),!duration&&refined.startTime&&refined.endTime&&(duration=subtractDurations(refined.endTime,refined.startTime)),{allDayGuess:!refined.startTime&&!refined.endTime,duration,typeData:recurringData}}return null},expand(typeData,framingRange,dateEnv){let clippedFramingRange=intersectRanges(framingRange,{start:typeData.startRecur,end:typeData.endRecur});return clippedFramingRange?expandRanges(typeData.daysOfWeek,typeData.startTime,typeData.dateEnv,dateEnv,clippedFramingRange):[]}},simpleRecurringEventsPlugin={name:"simple-recurring-event",recurringTypes:[recurring],eventRefiners:SIMPLE_RECURRING_REFINERS};function expandRanges(daysOfWeek,startTime,eventDateEnv,calendarDateEnv,framingRange){let dowHash=daysOfWeek?arrayToHash(daysOfWeek):null,dayMarker=startOfDay4(framingRange.start),endMarker=framingRange.end,instanceStarts=[];for(startTime&&(startTime.milliseconds<0?endMarker=addDays3(endMarker,1):startTime.milliseconds>=1e3*60*60*24&&(dayMarker=addDays3(dayMarker,-1)));dayMarker<endMarker;){let instanceStart;(!dowHash||dowHash[dayMarker.getUTCDay()])&&(startTime?instanceStart=calendarDateEnv.add(dayMarker,startTime):instanceStart=dayMarker,instanceStarts.push(calendarDateEnv.createMarker(eventDateEnv.toDate(instanceStart)))),dayMarker=addDays3(dayMarker,1)}return instanceStarts}var globalPlugins=[arrayEventSourcePlugin,funcEventSourcePlugin,jsonFeedEventSourcePlugin,simpleRecurringEventsPlugin,changeHandlerPlugin,{name:"misc",isLoadingFuncs:[state=>computeEventSourcesLoading(state.eventSources)],propSetHandlers:{dateProfile:handleDateProfile,eventStore:handleEventStore}}];var blankButtonState={text:"",hint:"",isDisabled:!1},CalendarController=class{constructor(handleDateChange){this.handleDateChange=handleDateChange}today(){this.calendarApi?.today()}prev(){this.calendarApi?.prev()}next(){this.calendarApi?.next()}prevYear(){this.calendarApi?.prevYear()}nextYear(){this.calendarApi?.nextYear()}gotoDate(zonedDateInput){this.calendarApi?.gotoDate(zonedDateInput)}incrementDate(duration){this.calendarApi?.incrementDate(duration)}changeView(viewType){this.calendarApi?.changeView(viewType)}get view(){return this.calendarApi?.view}getDate(){return this.calendarApi?.getDate()}getButtonState(){let{calendarApi}=this;return calendarApi&&calendarApi.getButtonState()||{today:blankButtonState,prev:blankButtonState,next:blankButtonState,prevYear:blankButtonState,nextYear:blankButtonState}}_setApi(calendarApi){this.calendarApi!==calendarApi&&(this.calendarApi&&(this.calendarApi.off("datesSet",this.handleDateChange),this.calendarApi=void 0),calendarApi&&(this.calendarApi=calendarApi,calendarApi.on("datesSet",this.handleDateChange)))}};var import_react4=require("react");var import_jsx_runtime2=require("react/jsx-runtime"),import_react3=__toESM(require("react"),1),import_react_dom2=require("react-dom");var import_react=require("react");function memoize2(workerFunc,resEquality,teardownFunc){let currentArgs,currentRes;return function(...newArgs){if(!currentArgs)currentRes=workerFunc.apply(this,newArgs);else if(!isArraysEqual(currentArgs,newArgs)){teardownFunc&&teardownFunc(currentRes);let res=workerFunc.apply(this,newArgs);(!resEquality||!resEquality(res,currentRes))&&(currentRes=res)}return currentArgs=newArgs,currentRes}}function memoizeObjArg(workerFunc,resEquality,teardownFunc){let currentArg,currentRes;return newArg=>{if(!currentArg)currentRes=workerFunc.call(this,newArg);else if(!isPropsEqualShallow(currentArg,newArg)){teardownFunc&&teardownFunc(currentRes);let res=workerFunc.call(this,newArg);(!resEquality||!resEquality(res,currentRes))&&(currentRes=res)}return currentArg=newArg,currentRes}}var ViewContextType=(0,import_react.createContext)({});function buildViewContext(viewSpec,viewApi,viewOptions,dateProfileGenerator,dateEnv,nowManager,pluginHooks,dispatch,getCurrentData,emitter,calendarApi,baseId,registerInteractiveComponent,unregisterInteractiveComponent){return{dateEnv,nowManager,options:viewOptions,pluginHooks,emitter,dispatch,getCurrentData,calendarApi,viewSpec,viewApi,dateProfileGenerator,baseId,registerInteractiveComponent,unregisterInteractiveComponent}}var PureComponent=class extends import_react.Component{shouldComponentUpdate(nextProps,nextState){return!isPropsEqualWithMap(this.props,nextProps,this.propEquality)||!isPropsEqualWithMap(this.state,nextState,this.stateEquality)}};PureComponent.addPropsEquality=addPropsEquality;PureComponent.addStateEquality=addStateEquality;PureComponent.contextType=ViewContextType;PureComponent.prototype.propEquality={};PureComponent.prototype.stateEquality={};var BaseComponent=class extends PureComponent{};BaseComponent.contextType=ViewContextType;function addPropsEquality(propEquality){let hash=Object.create(this.prototype.propEquality);Object.assign(hash,propEquality),this.prototype.propEquality=hash}function addStateEquality(stateEquality){let hash=Object.create(this.prototype.stateEquality);Object.assign(hash,stateEquality),this.prototype.stateEquality=hash}function setRef(ref,current){typeof ref=="function"?ref(current):ref&&(ref.current=current)}var ContentInjector=class extends BaseComponent{constructor(){super(...arguments),this.id=guid(),this.queuedDomNodes=[],this.currentDomNodes=[],this.handleEl=el=>{this.el=el,this.props.elRef&&setRef(this.props.elRef,el)}}render(){let{props,context}=this,{options}=context,{customGenerator,defaultGenerator,renderProps}=props,attrs=buildElAttrs(props,"",this.handleEl),useDefault=!1,innerContent,queuedDomNodes=[],currentGeneratorMeta;if(customGenerator!=null){let customGeneratorRes=typeof customGenerator=="function"?customGenerator(renderProps):customGenerator;if(customGeneratorRes===!0)useDefault=!0;else{let isObject=customGeneratorRes&&typeof customGeneratorRes=="object";isObject&&"html"in customGeneratorRes?attrs.dangerouslySetInnerHTML={__html:customGeneratorRes.html}:isObject&&"domNodes"in customGeneratorRes?queuedDomNodes=Array.prototype.slice.call(customGeneratorRes.domNodes):(isObject?(0,import_react.isValidElement)(customGeneratorRes):typeof customGeneratorRes!="function")?innerContent=customGeneratorRes:currentGeneratorMeta=customGeneratorRes}}else useDefault=!hasCustomRenderingHandler(props.generatorName,options);return useDefault&&defaultGenerator&&(innerContent=defaultGenerator(renderProps)),this.queuedDomNodes=queuedDomNodes,this.currentGeneratorMeta=currentGeneratorMeta,(0,import_react.createElement)(props.tag,attrs,innerContent)}componentDidMount(){this.applyQueueudDomNodes(),this.triggerCustomRendering(!0)}componentDidUpdate(){this.applyQueueudDomNodes(),this.triggerCustomRendering(!0)}componentWillUnmount(){this.triggerCustomRendering(!1)}triggerCustomRendering(isActive){let{props,context}=this,{handleCustomRendering,customRenderingMetaMap}=context.options;if(handleCustomRendering){let generatorMeta=this.currentGeneratorMeta??customRenderingMetaMap?.[props.generatorName];generatorMeta&&handleCustomRendering({id:this.id,isActive,containerEl:this.el,generatorMeta,renderProps:props.renderProps})}}applyQueueudDomNodes(){let{queuedDomNodes,currentDomNodes}=this,{el}=this;if(!isArraysEqual(queuedDomNodes,currentDomNodes)){for(let domNode of currentDomNodes)domNode.remove();for(let newNode of queuedDomNodes)el.appendChild(newNode);this.currentDomNodes=queuedDomNodes}}};ContentInjector.addPropsEquality({renderProps:isPropsEqualShallow,attrs:isNonHandlerPropsEqual,style:isPropsEqualShallow});function hasCustomRenderingHandler(generatorName,options){return!!(options.handleCustomRendering&&generatorName&&options.customRenderingMetaMap?.[generatorName])}function buildElAttrs(props,className,elRef){let attrs={...props.attrs,ref:elRef};return(props.className||className)&&(attrs.className=joinClassNames(className,props.className,attrs.className)),props.style&&(attrs.style=props.style),attrs}var RenderId=(0,import_react.createContext)(0),ContentContainer=class extends import_react.Component{constructor(){super(...arguments),this.InnerContent=InnerContentInjector.bind(void 0,this),this.handleEl=el=>{this.el=el,this.props.elRef&&(setRef(this.props.elRef,el),el&&this.didMountMisfire&&this.componentDidMount())}}render(){let{props}=this,generatedClassName=generateClassName(props.classNameGenerator,props.renderProps);if(props.children){let attrs=buildElAttrs(props,generatedClassName,this.handleEl),children=props.children(this.InnerContent,props.renderProps,attrs);return props.tag?(0,import_react.createElement)(props.tag,attrs,children):children}else return(0,import_react.createElement)(ContentInjector,{...props,elRef:this.handleEl,tag:props.tag||"div",className:joinClassNames(props.className,generatedClassName),renderId:this.context})}componentDidMount(){this.el?this.props.didMount?.({...this.props.renderProps,el:this.el}):this.didMountMisfire=!0}componentWillUnmount(){this.props.willUnmount?.({...this.props.renderProps,el:this.el})}};ContentContainer.contextType=RenderId;function InnerContentInjector(containerComponent,props){let parentProps=containerComponent.props;return(0,import_react.createElement)(ContentInjector,{renderProps:parentProps.renderProps,generatorName:parentProps.generatorName,customGenerator:parentProps.customGenerator,defaultGenerator:parentProps.defaultGenerator,renderId:containerComponent.context,...props})}function generateClassName(classNameGenerator,renderProps){return(typeof classNameGenerator=="function"?classNameGenerator(renderProps):classNameGenerator)||""}function renderText(renderProps){return renderProps.text}function getIsHeightAuto(options){return options.height==="auto"||options.contentHeight==="auto"}function getTableHeaderSticky(options){let{tableHeaderSticky}=options;return(tableHeaderSticky==null||tableHeaderSticky==="auto")&&(tableHeaderSticky=getIsHeightAuto(options)),tableHeaderSticky}function getFooterScrollbarSticky(options){let isHeightAuto=getIsHeightAuto(options),{footerScrollbarSticky}=options;return(footerScrollbarSticky==null||footerScrollbarSticky==="auto")&&(footerScrollbarSticky=isHeightAuto),!!footerScrollbarSticky&&isHeightAuto}function getScrollerSyncerClass(pluginHooks){let ScrollerSyncer=pluginHooks.scrollerSyncerClass;if(!ScrollerSyncer)throw new RangeError("Must import @fullcalendar/scrollgrid");return ScrollerSyncer}var NowTimerRunner=class{constructor(handleChange){this.handleChange=handleChange,this.isMounted=!1,this.handleRefresh=()=>{let timing=this.computeTiming();timing.nowDate.valueOf()!==this.nowDate.valueOf()&&(this.nowDate=timing.nowDate,this.todayRange=timing.todayRange,this.handleChange()),this.clearTimeout(),this.setTimeout(timing.waitMs)},this.handleVisibilityChange=()=>{document.hidden||this.handleRefresh()}}update(input){if(this.isMounted)(input.unit!==this.unit||input.unitValue!==this.unitValue||input.nowIndicatorSnap!==this.nowIndicatorSnap||input.nowManager!==this.nowManager||input.dateEnv!==this.dateEnv)&&(this.unit=input.unit,this.unitValue=input.unitValue,this.nowIndicatorSnap=input.nowIndicatorSnap,this.nowManager=input.nowManager,this.dateEnv=input.dateEnv,this.clearTimeout(),this.setTimeout());else{this.isMounted=!0,this.unit=input.unit,this.unitValue=input.unitValue,this.nowIndicatorSnap=input.nowIndicatorSnap,this.nowManager=input.nowManager,this.dateEnv=input.dateEnv;let timing=this.computeTiming();this.nowDate=timing.nowDate,this.todayRange=timing.todayRange,this.setTimeout(),this.nowManager.addResetListener(this.handleRefresh),typeof document<"u"&&document.addEventListener("visibilitychange",this.handleVisibilityChange)}return{nowDate:this.nowDate,todayRange:this.todayRange}}destroy(){this.isMounted&&(this.isMounted=!1,this.clearTimeout(),this.nowManager.removeResetListener(this.handleRefresh),typeof document<"u"&&document.removeEventListener("visibilitychange",this.handleVisibilityChange))}computeTiming(){let unroundedNow=this.nowManager.getDateMarker(),{unit,unitValue,nowIndicatorSnap,dateEnv}=this;nowIndicatorSnap==="auto"&&(nowIndicatorSnap=/year|month|week|day/.test(unit)||(unitValue||1)===1);let nowDate,waitMs;return nowIndicatorSnap?(nowDate=dateEnv.startOf(unroundedNow,unit),waitMs=dateEnv.add(nowDate,createDuration(1,unit)).valueOf()-unroundedNow.valueOf()):(nowDate=unroundedNow,waitMs=1e3*60),waitMs=Math.min(1e3*60*60*24,waitMs),{nowDate,todayRange:buildDayRange(nowDate),waitMs}}setTimeout(waitMs=this.computeTiming().waitMs){this.timeoutId=setTimeout(()=>{let timing=this.computeTiming();this.nowDate=timing.nowDate,this.todayRange=timing.todayRange,this.handleChange(),this.setTimeout(timing.waitMs)},waitMs)}clearTimeout(){this.timeoutId&&clearTimeout(this.timeoutId)}};function buildDayRange(date){let start=startOfDay4(date),end=addDays3(start,1);return{start,end}}var import_jsx_runtime=require("react/jsx-runtime");var DateProfileGenerator=class{constructor(props){this.props=props,this.initHiddenDays()}buildPrev(currentDateProfile,currentDate,nowDate,forceToValid){let{dateEnv}=this.props,prevDate=dateEnv.subtract(dateEnv.startOf(currentDate,currentDateProfile.currentRangeUnit),currentDateProfile.dateIncrement);return this.build(prevDate,nowDate,-1,forceToValid)}buildNext(currentDateProfile,currentDate,nowDate,forceToValid){let{dateEnv}=this.props,nextDate=dateEnv.add(dateEnv.startOf(currentDate,currentDateProfile.currentRangeUnit),currentDateProfile.dateIncrement);return this.build(nextDate,nowDate,1,forceToValid)}build(currentDate,nowDate,direction,forceToValid=!0){let{props}=this,validRange,currentInfo,isRangeAllDay,renderRange,activeRange,isValid;return validRange=this.buildValidRange(nowDate),validRange=this.trimHiddenDays(validRange),forceToValid&&(currentDate=constrainMarkerToRange(currentDate,validRange)),currentInfo=this.buildCurrentRangeInfo(currentDate,direction),isRangeAllDay=/^(year|month|week|day)$/.test(currentInfo.unit),renderRange=this.buildRenderRange(this.trimHiddenDays(currentInfo.range),currentInfo.unit,isRangeAllDay),renderRange=this.trimHiddenDays(renderRange),activeRange=renderRange,props.showNonCurrentDates||(activeRange=intersectRanges(activeRange,currentInfo.range)),activeRange=this.adjustActiveRange(activeRange),activeRange=intersectRanges(activeRange,validRange),isValid=rangesIntersect(currentInfo.range,validRange),rangeContainsMarker(renderRange,currentDate)||(currentDate=renderRange.start),{currentDate,validRange,currentRange:currentInfo.range,currentRangeUnit:currentInfo.unit,isRangeAllDay,activeRange,renderRange,slotMinTime:props.slotMinTime,slotMaxTime:props.slotMaxTime,isValid,dateIncrement:this.buildDateIncrement(currentInfo.duration)}}buildValidRange(nowDate){let input=this.props.validRangeInput,simpleInput=typeof input=="function"?input.call(this.props.calendarApi,this.props.dateEnv.toDate(nowDate)):input;return this.refineRange(simpleInput)||{start:null,end:null}}buildCurrentRangeInfo(date,direction){let{props}=this,duration=null,unit=null,range=null,dayCount;return props.duration?(duration=props.duration,unit=props.durationUnit,range=this.buildRangeFromDuration(date,direction,duration,unit)):(dayCount=this.props.dayCount)?(unit="day",range=this.buildRangeFromDayCount(date,direction,dayCount)):(range=this.buildCustomVisibleRange(date))?unit=props.dateEnv.greatestWholeUnit(range.start,range.end).unit:(duration=this.getFallbackDuration(),unit=greatestDurationDenominator(duration).unit,range=this.buildRangeFromDuration(date,direction,duration,unit)),{duration,unit,range}}getFallbackDuration(){return createDuration({day:1})}adjustActiveRange(range){let{dateEnv,usesMinMaxTime,slotMinTime,slotMaxTime}=this.props,{start,end}=range;return usesMinMaxTime&&(asRoughDays(slotMinTime)<0&&(start=startOfDay4(start),start=dateEnv.add(start,slotMinTime)),asRoughDays(slotMaxTime)>1&&(end=startOfDay4(end),end=addDays3(end,-1),end=dateEnv.add(end,slotMaxTime))),{start,end}}buildRangeFromDuration(date,direction,duration,unit){let{dateEnv,dateAlignment}=this.props,start,end,res;if(!dateAlignment){let{dateIncrement}=this.props;dateIncrement&&asRoughMs(dateIncrement)<asRoughMs(duration)?dateAlignment=greatestDurationDenominator(dateIncrement).unit:dateAlignment=unit}asRoughDays(duration)<=1&&this.isHiddenDay(start)&&(start=this.skipHiddenDays(start,direction),start=startOfDay4(start));function computeRes(){start=dateEnv.startOf(date,dateAlignment),end=dateEnv.add(start,duration),res={start,end}}return computeRes(),this.trimHiddenDays(res)||(date=this.skipHiddenDays(date,direction),computeRes()),res}buildRangeFromDayCount(date,direction,dayCount){let{dateEnv,dateAlignment}=this.props,runningCount=0,start=date,end;dateAlignment&&(start=dateEnv.startOf(start,dateAlignment)),start=startOfDay4(start),start=this.skipHiddenDays(start,direction),end=start;do end=addDays3(end,1),this.isHiddenDay(end)||(runningCount+=1);while(runningCount<dayCount);return{start,end}}buildCustomVisibleRange(date){let{props}=this,input=props.visibleRangeInput,simpleInput=typeof input=="function"?input.call(props.calendarApi,props.dateEnv.toDate(date)):input,range=this.refineRange(simpleInput);return range&&(range.start==null||range.end==null)?null:range}buildRenderRange(currentRange,currentRangeUnit,isRangeAllDay){return currentRange}buildDateIncrement(fallback){let{dateIncrement}=this.props,customAlignment;return dateIncrement||((customAlignment=this.props.dateAlignment)?createDuration(1,customAlignment):fallback||createDuration({days:1}))}refineRange(rangeInput){if(rangeInput){let range=parseRange(rangeInput,this.props.dateEnv);return range&&(range=computeVisibleDayRange(range)),range}return null}initHiddenDays(){let hiddenDays=this.props.hiddenDays||[],isHiddenDayHash=[],dayCnt=0,i;for(this.props.weekends===!1&&hiddenDays.push(0,6),i=0;i<7;i+=1)(isHiddenDayHash[i]=hiddenDays.indexOf(i)!==-1)||(dayCnt+=1);if(!dayCnt)throw new Error("invalid hiddenDays");this.isHiddenDayHash=isHiddenDayHash}trimHiddenDays(range){let{start,end}=range;return start&&(start=this.skipHiddenDays(start)),end&&(end=this.skipHiddenDays(end,-1,!0)),start==null||end==null||start<end?{start,end}:null}isHiddenDay(day){return day instanceof Date&&(day=day.getUTCDay()),this.isHiddenDayHash[day]}skipHiddenDays(date,inc=1,isExclusive=!1){for(;this.isHiddenDayHash[(date.getUTCDay()+(isExclusive?inc:0)+7)%7];)date=addDays3(date,inc);return date}};function computeMajorUnit(dateProfile,dateEnv){let{currentRange}=dateProfile;if(dateProfile.currentRangeUnit==="year")return dateEnv.diffWholeYears(currentRange.start,currentRange.end)>1?"year":"month";if(dateProfile.currentRangeUnit==="month"){if(dateEnv.diffWholeMonths(currentRange.start,currentRange.end)>1)return"month"}else if(dateProfile.currentRangeUnit==="week"){if(diffWholeWeeks(currentRange.start,currentRange.end)>1)return"week"}else if(dateProfile.currentRangeUnit==="day"&&diffWholeDays(currentRange.start,currentRange.end)>1)return"day"}function isMajorUnit(dateMarker,majorUnit,dateEnv){if(dateMarker.valueOf()===startOfDay4(dateMarker).valueOf()){if(majorUnit==="year")return!dateEnv.getMonth(dateMarker)&&dateEnv.getDay(dateMarker)===1;if(majorUnit==="month")return dateEnv.getDay(dateMarker)===1;if(majorUnit==="week")return dateMarker.getUTCDay()===dateEnv.weekDow;if(majorUnit==="day")return!0}return!1}function reduceEventStore(eventStore,action,eventSources,dateProfile,context){switch(action.type){case"RECEIVE_EVENTS":return receiveRawEvents(eventStore,eventSources[action.sourceId],action.fetchId,action.fetchRange,action.rawEvents,context);case"RESET_RAW_EVENTS":return resetRawEvents(eventStore,eventSources[action.sourceId],action.rawEvents,dateProfile.activeRange,context);case"ADD_EVENTS":return addEvent(eventStore,action.eventStore,dateProfile?dateProfile.activeRange:null,context);case"RESET_EVENTS":return action.eventStore;case"MERGE_EVENTS":return mergeEventStores(eventStore,action.eventStore);case"PREV":case"NEXT":case"CHANGE_DATE":case"CHANGE_VIEW_TYPE":return dateProfile?expandRecurring(eventStore,dateProfile.activeRange,context):eventStore;case"REMOVE_EVENTS":return excludeSubEventStore(eventStore,action.eventStore);case"REMOVE_EVENT_SOURCE":return excludeEventsBySourceId(eventStore,action.sourceId);case"REMOVE_ALL_EVENT_SOURCES":return filterEventStoreDefs(eventStore,eventDef=>!eventDef.sourceId);case"REMOVE_ALL_EVENTS":return createEmptyEventStore();default:return eventStore}}function receiveRawEvents(eventStore,eventSource,fetchId,fetchRange,rawEvents,context){if(eventSource&&fetchId===eventSource.latestFetchId){let subset=parseEvents(transformRawEvents(rawEvents,eventSource,context),eventSource,context);return fetchRange&&(subset=expandRecurring(subset,fetchRange,context)),mergeEventStores(excludeEventsBySourceId(eventStore,eventSource.sourceId),subset)}return eventStore}function resetRawEvents(existingEventStore,eventSource,rawEvents,activeRange,context){let{defIdMap,instanceIdMap}=buildPublicIdMaps(existingEventStore),newEventStore=parseEvents(transformRawEvents(rawEvents,eventSource,context),eventSource,context,!1,defIdMap,instanceIdMap);return expandRecurring(newEventStore,activeRange,context)}function transformRawEvents(rawEvents,eventSource,context){let calEachTransform=context.options.eventDataTransform,sourceEachTransform=eventSource?eventSource.eventDataTransform:null;return sourceEachTransform&&(rawEvents=transformEachRawEvent(rawEvents,sourceEachTransform)),calEachTransform&&(rawEvents=transformEachRawEvent(rawEvents,calEachTransform)),rawEvents}function transformEachRawEvent(rawEvents,func){let refinedEvents;if(!func)refinedEvents=rawEvents;else{refinedEvents=[];for(let rawEvent of rawEvents){let refinedEvent=func(rawEvent);refinedEvent?refinedEvents.push(refinedEvent):refinedEvent==null&&refinedEvents.push(rawEvent)}}return refinedEvents}function addEvent(eventStore,subset,expandRange,context){return expandRange&&(subset=expandRecurring(subset,expandRange,context)),mergeEventStores(eventStore,subset)}function rezoneEventStoreDates(eventStore,oldDateEnv,newDateEnv){let{defs}=eventStore,instances=mapHash(eventStore.instances,instance=>defs[instance.defId].allDay?instance:{...instance,range:{start:newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start)),end:newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end))}});return{defs,instances}}function excludeEventsBySourceId(eventStore,sourceId){return filterEventStoreDefs(eventStore,eventDef=>eventDef.sourceId!==sourceId)}function excludeInstances(eventStore,removals){return{defs:eventStore.defs,instances:filterHash(eventStore.instances,instance=>!removals[instance.instanceId])}}function buildPublicIdMaps(eventStore){let{defs,instances}=eventStore,defIdMap={},instanceIdMap={};for(let defId in defs){let def=defs[defId],{publicId}=def;publicId&&(defIdMap[publicId]=defId)}for(let instanceId in instances){let instance=instances[instanceId],def=defs[instance.defId],{publicId}=def;publicId&&(instanceIdMap[publicId]=instanceId)}return{defIdMap,instanceIdMap}}var Interaction=class{constructor(settings){this.component=settings.component,this.isHitComboAllowed=settings.isHitComboAllowed||null}destroy(){}};function parseInteractionSettings(component,input){return{component,el:input.el,useEventCenter:input.useEventCenter!=null?input.useEventCenter:!0,isHitComboAllowed:input.isHitComboAllowed||null}}function interactionSettingsToStore(settings){return{[settings.component.uid]:settings}}var interactionSettingsStore={};var Emitter=class{constructor(){this.handlers={},this.thisContext=null}setThisContext(thisContext){this.thisContext=thisContext}setOptions(options){this.options=options}on(type,handler){addToHash(this.handlers,type,handler)}off(type,handler){removeFromHash(this.handlers,type,handler)}trigger(type,...args){let attachedHandlers=this.handlers[type]||[],optionHandler=this.options&&this.options[type],handlers=[].concat(optionHandler||[],attachedHandlers);for(let handler of handlers)handler.apply(this.thisContext,args)}hasHandlers(type){return!!(this.handlers[type]&&this.handlers[type].length||this.options&&this.options[type])}};function addToHash(hash,type,handler){(hash[type]||(hash[type]=[])).push(handler)}function removeFromHash(hash,type,handler){handler?hash[type]&&(hash[type]=hash[type].filter(func=>func!==handler)):delete hash[type]}var import_react2=require("react"),import_react_dom=require("react-dom");function refinePluginDef(input){return{name:input.name,premiumReleaseDate:input.premiumReleaseDate?new Date(input.premiumReleaseDate):void 0,reducers:input.reducers||[],isLoadingFuncs:input.isLoadingFuncs||[],contextInit:[].concat(input.contextInit||[]),eventRefiners:input.eventRefiners||{},eventDefMemberAdders:input.eventDefMemberAdders||[],eventSourceRefiners:input.eventSourceRefiners||{},isDraggableTransformers:input.isDraggableTransformers||[],eventDragMutationMassagers:input.eventDragMutationMassagers||[],eventDefMutationAppliers:input.eventDefMutationAppliers||[],dateSelectionTransformers:input.dateSelectionTransformers||[],datePointTransforms:input.datePointTransforms||[],dateSpanTransforms:input.dateSpanTransforms||[],views:input.views||{},viewPropsTransformers:input.viewPropsTransformers||[],isPropsValid:input.isPropsValid||null,externalDefTransforms:input.externalDefTransforms||[],viewContainerAppends:input.viewContainerAppends||[],eventDropTransformers:input.eventDropTransformers||[],componentInteractions:input.componentInteractions||[],calendarInteractions:input.calendarInteractions||[],eventSourceDefs:input.eventSourceDefs||[],cmdFormatter:input.cmdFormatter,recurringTypes:input.recurringTypes||[],initialView:input.initialView||"",elementDraggingImpl:input.elementDraggingImpl,optionChangeHandlers:input.optionChangeHandlers||{},scrollerSyncerClass:input.scrollerSyncerClass||null,listenerRefiners:input.listenerRefiners||{},optionRefiners:input.optionRefiners||{},optionDefaults:input.optionDefaults?[input.optionDefaults]:[],propSetHandlers:input.propSetHandlers||{}}}function buildPluginHooks(pluginDefs,globalDefs){let pluginsByName={},hooks={premiumReleaseDate:void 0,reducers:[],isLoadingFuncs:[],contextInit:[],eventRefiners:{},eventDefMemberAdders:[],eventSourceRefiners:{},isDraggableTransformers:[],eventDragMutationMassagers:[],eventDefMutationAppliers:[],dateSelectionTransformers:[],datePointTransforms:[],dateSpanTransforms:[],views:{},viewPropsTransformers:[],isPropsValid:null,externalDefTransforms:[],viewContainerAppends:[],eventDropTransformers:[],componentInteractions:[],calendarInteractions:[],eventSourceDefs:[],cmdFormatter:null,recurringTypes:[],initialView:"",elementDraggingImpl:null,optionChangeHandlers:{},scrollerSyncerClass:null,listenerRefiners:{},optionRefiners:{},optionDefaults:[],propSetHandlers:{}};function addDefs(defs){for(let unrefinedDef of defs){let{name}=unrefinedDef;if(!name)throw new Error("Plugin must specify a name");if(!pluginsByName[name]){let def=pluginsByName[name]=refinePluginDef(unrefinedDef);hooks=combineHooks(hooks,def),addDefs(unrefinedDef.deps||[])}}}return pluginDefs&&addDefs(pluginDefs),addDefs(globalDefs),hooks}function buildBuildPluginHooks(){let currentOverrideDefs=[],currentGlobalDefs=[],currentHooks;return(overrideDefs,globalDefs)=>((!currentHooks||!isArraysEqual(overrideDefs,currentOverrideDefs)||!isArraysEqual(globalDefs,currentGlobalDefs))&&(currentHooks=buildPluginHooks(overrideDefs,globalDefs)),currentOverrideDefs=overrideDefs,currentGlobalDefs=globalDefs,currentHooks)}function combineHooks(hooks0,hooks1){return{premiumReleaseDate:compareOptionalDates(hooks0.premiumReleaseDate,hooks1.premiumReleaseDate),reducers:hooks0.reducers.concat(hooks1.reducers),isLoadingFuncs:hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),contextInit:hooks0.contextInit.concat(hooks1.contextInit),eventRefiners:{...hooks0.eventRefiners,...hooks1.eventRefiners},eventDefMemberAdders:hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),eventSourceRefiners:{...hooks0.eventSourceRefiners,...hooks1.eventSourceRefiners},isDraggableTransformers:hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),eventDragMutationMassagers:hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),eventDefMutationAppliers:hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),dateSelectionTransformers:hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),datePointTransforms:hooks0.datePointTransforms.concat(hooks1.datePointTransforms),dateSpanTransforms:hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),views:mergeViewOptionsMap(hooks0.views,hooks1.views),viewPropsTransformers:hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),isPropsValid:hooks1.isPropsValid||hooks0.isPropsValid,externalDefTransforms:hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),viewContainerAppends:hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),eventDropTransformers:hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),calendarInteractions:hooks0.calendarInteractions.concat(hooks1.calendarInteractions),componentInteractions:hooks0.componentInteractions.concat(hooks1.componentInteractions),eventSourceDefs:hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),cmdFormatter:hooks1.cmdFormatter||hooks0.cmdFormatter,recurringTypes:hooks0.recurringTypes.concat(hooks1.recurringTypes),initialView:hooks0.initialView||hooks1.initialView,elementDraggingImpl:hooks0.elementDraggingImpl||hooks1.elementDraggingImpl,optionChangeHandlers:{...hooks0.optionChangeHandlers,...hooks1.optionChangeHandlers},scrollerSyncerClass:hooks0.scrollerSyncerClass||hooks1.scrollerSyncerClass,listenerRefiners:{...hooks0.listenerRefiners,...hooks1.listenerRefiners},optionRefiners:{...hooks0.optionRefiners,...hooks1.optionRefiners},optionDefaults:hooks0.optionDefaults.concat(hooks1.optionDefaults),propSetHandlers:{...hooks0.propSetHandlers,...hooks1.propSetHandlers}}}function compareOptionalDates(date0,date1){return date0===void 0?date1:date1===void 0?date0:new Date(Math.max(date0.valueOf(),date1.valueOf()))}function compileViewDefs(defaultConfigs,overrideConfigs){let hash={},viewType;for(viewType in defaultConfigs)ensureViewDef(viewType,hash,defaultConfigs,overrideConfigs);for(viewType in overrideConfigs)ensureViewDef(viewType,hash,defaultConfigs,overrideConfigs);return hash}function ensureViewDef(viewType,hash,defaultConfigs,overrideConfigs){if(hash[viewType])return hash[viewType];let viewDef=buildViewDef(viewType,hash,defaultConfigs,overrideConfigs);return viewDef&&(hash[viewType]=viewDef),viewDef}function buildViewDef(viewType,hash,defaultConfigs,overrideConfigs){let defaultConfig=defaultConfigs[viewType],overrideConfig=overrideConfigs[viewType],queryProp=name=>defaultConfig&&defaultConfig[name]!==null?defaultConfig[name]:overrideConfig&&overrideConfig[name]!==null?overrideConfig[name]:null,theComponent=queryProp("component"),superType=queryProp("superType"),superDef=null;if(superType){if(superType===viewType)throw new Error("Can't have a custom view type that references itself");superDef=ensureViewDef(superType,hash,defaultConfigs,overrideConfigs)}return!theComponent&&superDef&&(theComponent=superDef.component),theComponent?{type:viewType,component:theComponent,defaults:mergeCalendarOptions(superDef?superDef.defaults:{},defaultConfig?defaultConfig.rawOptions:{}),overrides:mergeCalendarOptions(superDef?superDef.overrides:{},overrideConfig?overrideConfig.rawOptions:{})}:null}function parseViewConfigs(inputs){return mapHash(inputs,parseViewConfig)}function parseViewConfig(input){let rawOptions=typeof input=="function"?{component:input}:input,{component}=rawOptions;return rawOptions.content?component=createViewHookComponent(rawOptions.content):component&&!(component.prototype instanceof BaseComponent)&&(component=createViewHookComponent(component)),{superType:rawOptions.type,component,rawOptions}}function createViewHookComponent(contentGenerator){return viewProps=>(0,import_jsx_runtime.jsx)(ViewContextType.Consumer,{children:context=>{let{options,viewSpec}=context,renderProps={...viewProps,nextDayThreshold:options.nextDayThreshold,...computeViewBorderless(options),options:{headerToolbar:options.headerToolbar,footerToolbar:options.footerToolbar},isHeightAuto:getIsHeightAuto(options),view:context.viewApi};return(0,import_jsx_runtime.jsx)(ContentContainer,{tag:"div",className:joinClassNames(generateClassName(options.viewClass,renderProps),generateClassName(viewSpec.optionDefaults.class,renderProps),generateClassName(viewSpec.optionDefaults.className,renderProps),generateClassName(viewSpec.optionOverrides.class,renderProps),generateClassName(viewSpec.optionOverrides.className,renderProps)),renderProps,generatorName:void 0,customGenerator:contentGenerator,didMount:options.didMount||options.viewDidMount,willUnmount:options.willUnmount||options.viewWillUnmount})}})}function buildViewSpecs(defaultInputs,optionOverrides,dynamicOptionOverrides){let defaultConfigs=parseViewConfigs(defaultInputs),overrideConfigs=parseViewConfigs(optionOverrides.views),viewDefs=compileViewDefs(defaultConfigs,overrideConfigs);return mapHash(viewDefs,viewDef=>buildViewSpec(viewDef,overrideConfigs,optionOverrides,dynamicOptionOverrides))}function buildViewSpec(viewDef,overrideConfigs,optionOverrides,dynamicOptionOverrides){let durationInput=viewDef.overrides.duration||viewDef.defaults.duration||dynamicOptionOverrides.duration||optionOverrides.duration,duration=null,durationUnit="",singleUnit="",singleUnitOverrides={};if(durationInput&&(duration=createDurationCached(durationInput),duration)){let denom=greatestDurationDenominator(duration);durationUnit=denom.unit,denom.value===1&&(singleUnit=durationUnit,singleUnitOverrides=overrideConfigs[durationUnit]?overrideConfigs[durationUnit].rawOptions:{})}return{type:viewDef.type,component:viewDef.component,duration,durationUnit,singleUnit,optionDefaults:viewDef.defaults,optionOverrides:{...singleUnitOverrides,...viewDef.overrides}}}var durationInputMap={};function createDurationCached(durationInput){let json=JSON.stringify(durationInput),res=durationInputMap[json];return res===void 0&&(res=createDuration(durationInput),durationInputMap[json]=res),res}function reduceViewType(viewType,action){return action.type==="CHANGE_VIEW_TYPE"&&(viewType=action.viewType),viewType}function reduceCurrentDate(currentDate,action){return action.type==="CHANGE_DATE"?action.dateMarker:currentDate}function getInitialDate(options,dateEnv,nowManager){let initialDateInput=options.initialDate;return initialDateInput!=null?dateEnv.createMarker(initialDateInput):nowManager.getDateMarker()}function reduceDynamicOptionOverrides(dynamicOptionOverrides,action){return action.type==="SET_OPTION"?{...dynamicOptionOverrides,[action.optionName]:action.rawOptionValue}:dynamicOptionOverrides}function reduceDateProfile(currentDateProfile,action,currentDate,nowDate,dateProfileGenerator){let dp;switch(action.type){case"CHANGE_VIEW_TYPE":return dateProfileGenerator.build(action.dateMarker||currentDate,nowDate);case"CHANGE_DATE":return dateProfileGenerator.build(action.dateMarker,nowDate);case"PREV":if(dp=dateProfileGenerator.buildPrev(currentDateProfile,currentDate,nowDate),dp.isValid)return dp;break;case"NEXT":if(dp=dateProfileGenerator.buildNext(currentDateProfile,currentDate,nowDate),dp.isValid)return dp;break}return currentDateProfile}function reduceDateSelection(currentSelection,action){switch(action.type){case"UNSELECT_DATES":return null;case"SELECT_DATES":return action.selection;default:return currentSelection}}function reduceSelectedEvent(currentInstanceId,action){switch(action.type){case"UNSELECT_EVENT":return"";case"SELECT_EVENT":return action.eventInstanceId;default:return currentInstanceId}}function reduceEventDrag(currentDrag,action){let newDrag;switch(action.type){case"UNSET_EVENT_DRAG":return null;case"SET_EVENT_DRAG":return newDrag=action.state,{affectedEvents:newDrag.affectedEvents,mutatedEvents:newDrag.mutatedEvents,isEvent:newDrag.isEvent};default:return currentDrag}}function reduceEventResize(currentResize,action){let newResize;switch(action.type){case"UNSET_EVENT_RESIZE":return null;case"SET_EVENT_RESIZE":return newResize=action.state,{affectedEvents:newResize.affectedEvents,mutatedEvents:newResize.mutatedEvents,isEvent:newResize.isEvent};default:return currentResize}}function parseToolbars(calendarOptions,viewSpecs,calendarApi){let header=calendarOptions.headerToolbar?parseToolbar(calendarOptions.headerToolbar,calendarOptions,viewSpecs,calendarApi):null,footer=calendarOptions.footerToolbar?parseToolbar(calendarOptions.footerToolbar,calendarOptions,viewSpecs,calendarApi):null;return{header,footer}}function parseToolbar(sectionStrHash,calendarOptions,viewSpecs,calendarApi){let isRtl=calendarOptions.direction==="rtl",viewsWithButtons=[],hasTitle=!1;function processSectionStr(sectionStr){let sectionRes=parseSection(sectionStr,calendarOptions,viewSpecs,calendarApi);return viewsWithButtons.push(...sectionRes.viewsWithButtons),hasTitle=hasTitle||sectionRes.hasTitle,sectionRes.widgets}return{sectionWidgets:{start:processSectionStr(sectionStrHash[isRtl?"right":"left"]||sectionStrHash.start||""),center:processSectionStr(sectionStrHash.center||""),end:processSectionStr(sectionStrHash[isRtl?"left":"right"]||sectionStrHash.end||"")},viewsWithButtons,hasTitle}}function parseSection(sectionStr,calendarOptions,viewSpecs,calendarApi){let calendarButtons=calendarOptions.buttons||{},customElements=calendarOptions.toolbarElements||{},sectionSubstrs=sectionStr?sectionStr.split(" "):[],viewsWithButtons=[],hasTitle=!1;return{widgets:sectionSubstrs.map(buttonGroupStr=>buttonGroupStr.split(",").map(name=>{if(name==="title")return hasTitle=!0,{name};if(customElements[name])return{name,customElement:customElements[name]};let viewSpec,buttonInput=calendarButtons[name]||{},buttonText,buttonHint,buttonClick;if(viewSpec=viewSpecs[name]){viewsWithButtons.push(name);let buttonTextKey=viewSpec.optionDefaults.buttonTextKey;buttonText=buttonInput.text||(buttonTextKey?calendarOptions[buttonTextKey]:"")||(viewSpec.singleUnit?calendarOptions[viewSpec.singleUnit+"TextLong"]||calendarOptions[viewSpec.singleUnit+"Text"]:"")||name,buttonHint=formatWithOrdinals(buttonInput.hint||calendarOptions.viewHint,[buttonText,name],buttonText),buttonClick=ev=>{buttonInput?.click?.(ev),ev.defaultPrevented||calendarApi.changeView(name)}}else buttonText=buttonInput.text||calendarOptions[name+"TextLong"]||calendarOptions[name+"Text"]||name,name==="prevYear"?buttonHint=formatWithOrdinals(buttonInput.hint||calendarOptions.prevHint,[calendarOptions.yearText,"year"],buttonText):name==="nextYear"?buttonHint=formatWithOrdinals(buttonInput.hint||calendarOptions.nextHint,[calendarOptions.yearText,"year"],buttonText):buttonHint=currentUnit=>formatWithOrdinals(buttonInput.hint||calendarOptions[name+"Hint"],[calendarOptions[currentUnit+"TextLong"]||calendarOptions[currentUnit+"Text"],currentUnit],buttonText),buttonClick=ev=>{buttonInput?.click?.(ev),ev.defaultPrevented||calendarApi[name]?.()};return{name,isView:!!viewSpec,buttonText,buttonHint,buttonDisplay:buttonInput.display,buttonIconClass:buttonInput.iconClass,buttonIconContent:buttonInput.iconContent,buttonClick,buttonIsPrimary:buttonInput.isPrimary||!1,buttonClass:buttonInput.class??buttonInput.className,buttonDidMount:buttonInput.didMount,buttonWillUnmount:buttonInput.willUnmount}})),viewsWithButtons,hasTitle}}var ViewImpl=class{constructor(type,getCurrentData,dateEnv){this.type=type,this.getCurrentData=getCurrentData,this.dateEnv=dateEnv}get calendar(){return this.getCurrentData().calendarApi}get title(){return this.getCurrentData().viewTitle}get activeStart(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start)}get activeEnd(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end)}get currentStart(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start)}get currentEnd(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end)}getOption(name){return this.getCurrentData().options[name]}},DEF_DEFAULTS={startTime:"09:00",endTime:"17:00",daysOfWeek:[1,2,3,4,5],display:"inverse-background",className:"",groupId:"_businessHours"};function parseBusinessHours(input,context){return parseEvents(refineInputs(input),null,context)}function refineInputs(input){let rawDefs;return input===!0?rawDefs=[{}]:Array.isArray(input)?rawDefs=input.filter(rawDef=>rawDef.daysOfWeek):typeof input=="object"&&input?rawDefs=[input]:rawDefs=[],rawDefs=rawDefs.map(rawDef=>({...DEF_DEFAULTS,...rawDef})),rawDefs}function buildTitle(dateProfile,viewOptions,dateEnv){let range;/^(year|month)$/.test(dateProfile.currentRangeUnit)?range=dateProfile.currentRange:range=dateProfile.activeRange;let parts,options={isEndExclusive:dateProfile.isRangeAllDay};return viewOptions.titleFormat?parts=dateEnv.formatRangeToParts(range.start,range.end,createFormatter(viewOptions.titleFormat),options):(parts=dateEnv.formatRangeToParts(range.start,range.end,createFormatter(buildTitleFormat(dateProfile,viewOptions.disallowAmbigTitle,"long")),options),hasTwoMonths(parts)&&(parts=dateEnv.formatRangeToParts(range.start,range.end,createFormatter(buildTitleFormat(dateProfile,viewOptions.disallowAmbigTitle,"short")),options))),joinDateTimeFormatParts(parts)}function buildTitleFormat(dateProfile,disallowAmbigTitle,monthFormat){let{currentRangeUnit}=dateProfile;if(currentRangeUnit==="year")return{year:"numeric"};if(currentRangeUnit==="month")return{year:"numeric",month:monthFormat};if(!disallowAmbigTitle){let days=diffWholeDays(dateProfile.currentRange.start,dateProfile.currentRange.end);if(days!==null&&days>1)return{year:"numeric",month:monthFormat}}return{year:"numeric",month:"long",day:"numeric"}}function hasTwoMonths(parts){let hasStartMonth=!1,hasEndMonth=!1;for(let part of parts)part.type==="month"&&(part.source==="startRange"&&(hasStartMonth=!0),part.source==="endRange"&&(hasEndMonth=!0));return hasStartMonth&&hasEndMonth}var CalendarNowManager=class{constructor(){this.resetListeners=new Set}handleInput(dateEnv,nowInput){let oldDateEnv=this.dateEnv;if(dateEnv!==oldDateEnv&&(typeof nowInput=="function"?this.nowFn=nowInput:oldDateEnv||(this.nowAnchorDate=dateEnv.toDate(nowInput?dateEnv.createMarker(nowInput):dateEnv.createNowMarker()),this.nowAnchorQueried=Date.now()),this.dateEnv=dateEnv,oldDateEnv))for(let resetListener of this.resetListeners.values())resetListener()}getDateMarker(){return this.nowAnchorDate?this.dateEnv.timestampToMarker(this.nowAnchorDate.valueOf()+(Date.now()-this.nowAnchorQueried)):this.dateEnv.createMarker(this.nowFn())}addResetListener(handler){this.resetListeners.add(handler)}removeResetListener(handler){this.resetListeners.delete(handler)}},CalendarDataManager=class{constructor(config2){this.computeCurrentViewData=memoize2(this._computeCurrentViewData),this.organizeRawLocales=memoize2(organizeRawLocales),this.buildLocale=memoize2(buildLocale),this.buildPluginHooks=buildBuildPluginHooks(),this.buildDateEnv=memoize2(buildDateEnv),this.parseToolbars=memoize2(parseToolbars),this.buildViewSpecs=memoize2(buildViewSpecs),this.buildDateProfileGenerator=memoizeObjArg(buildDateProfileGenerator),this.buildViewApi=memoize2(buildViewApi),this.buildViewUiProps=memoizeObjArg(buildViewUiProps),this.buildEventUiBySource=memoize2(buildEventUiBySource,isPropsEqualShallow),this.buildEventUiBases=memoize2(buildEventUiBases),this.parseContextBusinessHours=memoizeObjArg(parseContextBusinessHours),this.buildToolbarProps=memoize2(buildToolbarProps),this.buildTitle=memoize2(buildTitle),this.nowManager=new CalendarNowManager,this.isDrainingActionQueue=!1,this.actionQueue=[],this.optionOverrides={},this.emitter=new Emitter,this.currentCalendarOptionsRefiners={},this.currentCalendarOptionsInput={},this.currentCalendarOptionsRefined={},this.currentViewOptionsInput={},this.currentViewOptionsRefined={},this.optionsForRefining=[],this.optionsForHandling=[],this.getCurrentData=()=>this.data,this.handleNowChange=()=>{this.dispatch({type:"UPDATE_NOW"})},this.dispatch=action=>{this.actionQueue.push(action),this.isDrainingActionQueue||this.drainActionQueue()},this.config=config2,this.nowManager=new CalendarNowManager,this.nowTimer=new NowTimerRunner(this.handleNowChange)}destroy(){this.nowTimer.destroy()}update(optionOverrides){return this.optionOverrides=optionOverrides,this.actionQueue.push({type:"IDLE"}),this.drainActionQueue(),this.data}resetOptions(optionOverrides,changedOptionNames){changedOptionNames===void 0?this.optionOverrides=optionOverrides:(this.optionOverrides={...this.optionOverrides,...optionOverrides},this.optionsForRefining.push(...changedOptionNames)),this.dispatch({type:"RESET_OPTIONS"})}drainActionQueue(){let calendarContext,{state,data}=this,isInit=!state,{actionQueue}=this,actionsComplete=[];for(this.isDrainingActionQueue=!0;actionQueue.length;){let action=actionQueue.shift();({state,data,calendarContext}=this.reduce(state,data,action)),this.state=state,this.data=data,action.type!=="IDLE"&&actionsComplete.push(action)}if(this.isDrainingActionQueue=!1,isInit){let controllerOption=calendarContext.options.controller;controllerOption&&controllerOption._setApi(this.config.calendarApi)}if(!isInit&&actionsComplete.length){let{onDataChange}=this.config;onDataChange&&onDataChange(this.data,actionsComplete)}}reduce(prevState,prevData,action){let{config:config2}=this,isInit=!prevState,dynamicOptionOverrides=isInit?{}:reduceDynamicOptionOverrides(prevState.dynamicOptionOverrides,action),optionsData=this.computeOptionsData(this.optionOverrides,dynamicOptionOverrides,config2.calendarApi),currentViewType=isInit?optionsData.calendarOptions.initialView||optionsData.pluginHooks.initialView:reduceViewType(prevState.currentViewType,action),currentViewData=this.computeCurrentViewData(currentViewType,optionsData,this.optionOverrides,dynamicOptionOverrides);config2.calendarApi.currentDataManager=this,this.emitter.setThisContext(config2.calendarApi),this.emitter.setOptions(currentViewData.options);let calendarContext={nowManager:this.nowManager,dateEnv:optionsData.dateEnv,options:optionsData.calendarOptions,pluginHooks:optionsData.pluginHooks,calendarApi:config2.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},{nowDate}=this.nowTimer.update({unit:"day",unitValue:1,nowIndicatorSnap:"auto",nowManager:this.nowManager,dateEnv:optionsData.dateEnv}),currentDate=isInit?getInitialDate(optionsData.calendarOptions,optionsData.dateEnv,this.nowManager):reduceCurrentDate(prevState.currentDate,action),dateProfile;isInit?dateProfile=currentViewData.dateProfileGenerator.build(currentDate,nowDate):(dateProfile=prevState.dateProfile,prevData&&prevData.dateProfileGenerator!==currentViewData.dateProfileGenerator&&(dateProfile=currentViewData.dateProfileGenerator.build(currentDate,nowDate)),dateProfile=reduceDateProfile(dateProfile,action,currentDate,nowDate,currentViewData.dateProfileGenerator)),(action&&(action.type==="PREV"||action.type==="NEXT")||!rangeContainsMarker(dateProfile.activeRange,currentDate))&&(currentDate=dateProfile.currentRange.start);let eventSources=isInit?initEventSources(optionsData.calendarOptions,dateProfile,calendarContext):reduceEventSources(prevState.eventSources,action,dateProfile,calendarContext),eventStore=isInit?createEmptyEventStore():reduceEventStore(prevState.eventStore,action,eventSources,dateProfile,calendarContext),isEventsLoading=computeEventSourcesLoading(eventSources),renderableEventStore=isInit?createEmptyEventStore():isEventsLoading&&!currentViewData.options.progressiveEventRendering&&prevState.renderableEventStore||eventStore,{eventUiSingleBase,selectionConfig}=this.buildViewUiProps(calendarContext),eventUiBySource=this.buildEventUiBySource(eventSources),eventUiBases=isInit?{}:this.buildEventUiBases(renderableEventStore.defs,eventUiSingleBase,eventUiBySource),newState={dynamicOptionOverrides,currentViewType,currentDate,dateProfile,eventSources,eventStore,renderableEventStore,selectionConfig,eventUiBases,businessHours:this.parseContextBusinessHours(calendarContext),dateSelection:isInit?null:reduceDateSelection(prevState.dateSelection,action),eventSelection:isInit?"":reduceSelectedEvent(prevState.eventSelection,action),eventDrag:isInit?null:reduceEventDrag(prevState.eventDrag,action),eventResize:isInit?null:reduceEventResize(prevState.eventResize,action),nowDate},contextAndState={...calendarContext,...newState};for(let reducer of optionsData.pluginHooks.reducers)Object.assign(newState,reducer(prevState,action,contextAndState));let wasLoading=prevState?computeIsLoading(prevState,calendarContext):!1,isLoading=computeIsLoading(newState,calendarContext);!wasLoading&&isLoading?this.emitter.trigger("loading",!0):wasLoading&&!isLoading&&this.emitter.trigger("loading",!1);let viewTitle=this.buildTitle(dateProfile,currentViewData.options,optionsData.dateEnv),toolbarProps=this.buildToolbarProps(currentViewData.viewSpec,dateProfile,currentViewData.dateProfileGenerator,currentDate,nowDate,viewTitle),newData={viewTitle,nowManager:this.nowManager,calendarApi:config2.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData,toolbarProps,...optionsData,...currentViewData,...newState},changeHandlers=optionsData.pluginHooks.optionChangeHandlers,prevCalendarOptions=prevData&&prevData.calendarOptions,newCalendarOptions=optionsData.calendarOptions;if(prevCalendarOptions&&prevCalendarOptions!==newCalendarOptions){prevCalendarOptions.timeZone!==newCalendarOptions.timeZone&&(newState.eventSources=newData.eventSources=reduceEventSourcesNewTimeZone(newData.eventSources,dateProfile,newData),newState.eventStore=newData.eventStore=rezoneEventStoreDates(newData.eventStore,prevData.dateEnv,newData.dateEnv),newState.renderableEventStore=newData.renderableEventStore=rezoneEventStoreDates(newData.renderableEventStore,prevData.dateEnv,newData.dateEnv));for(let optionName in changeHandlers)(this.optionsForHandling.indexOf(optionName)!==-1||prevCalendarOptions[optionName]!==newCalendarOptions[optionName])&&changeHandlers[optionName](newCalendarOptions[optionName],newData)}return this.optionsForHandling=[],{state:newState,data:newData,calendarContext}}computeOptionsData(optionOverrides,dynamicOptionOverrides,calendarApi){if(!this.optionsForRefining.length&&optionOverrides===this.stableOptionOverrides&&dynamicOptionOverrides===this.stableDynamicOptionOverrides)return this.stableCalendarOptionsData;let{refinedOptions,pluginHooks,localeDefaults,availableLocaleData}=this.processRawCalendarOptions(optionOverrides,dynamicOptionOverrides),dateEnv=this.buildDateEnv(refinedOptions.timeZone,refinedOptions.locale,refinedOptions.weekNumberCalculation,refinedOptions.firstDay,refinedOptions.weekTextLong,refinedOptions.weekTextShort,pluginHooks,availableLocaleData),viewSpecs=this.buildViewSpecs(pluginHooks.views,this.stableOptionOverrides,this.stableDynamicOptionOverrides),toolbarConfig=this.parseToolbars(refinedOptions,viewSpecs,calendarApi);return this.stableCalendarOptionsData={calendarOptions:refinedOptions,pluginHooks,dateEnv,viewSpecs,toolbarConfig,localeDefaults,availableRawLocales:availableLocaleData.map}}processRawCalendarOptions(optionOverrides,dynamicOptionOverrides){let{locales,locale}=mergeCalendarOptions(BASE_OPTION_DEFAULTS,optionOverrides,dynamicOptionOverrides),availableLocaleData=this.organizeRawLocales(locales),availableRawLocales=availableLocaleData.map,localeDefaults=this.buildLocale(locale||availableLocaleData.defaultCode,availableRawLocales).options,pluginHooks=this.buildPluginHooks(optionOverrides.plugins||[],globalPlugins),refiners=this.currentCalendarOptionsRefiners={...BASE_OPTION_REFINERS,...CALENDAR_LISTENER_REFINERS,...CALENDAR_ONLY_OPTION_REFINERS,...pluginHooks.listenerRefiners,...pluginHooks.optionRefiners},raw=mergeCalendarOptions(BASE_OPTION_DEFAULTS,...pluginHooks.optionDefaults,localeDefaults,filterKnownOptions(mergeCalendarOptions(optionOverrides,dynamicOptionOverrides),refiners)),refined={},currentRaw=this.currentCalendarOptionsInput,currentRefined=this.currentCalendarOptionsRefined,anyChanges=!1;for(let optionName in raw)this.optionsForRefining.indexOf(optionName)===-1&&(raw[optionName]===currentRaw[optionName]||COMPLEX_OPTION_COMPARATORS[optionName]&&optionName in currentRaw&&COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName],raw[optionName])||isMergedPropsEqual(currentRaw[optionName],raw[optionName]))?refined[optionName]=currentRefined[optionName]:refiners[optionName]&&(refined[optionName]=refiners[optionName](raw[optionName],optionName),anyChanges=!0);return anyChanges&&(this.currentCalendarOptionsInput=raw,this.currentCalendarOptionsRefined=refined,this.stableOptionOverrides=optionOverrides,this.stableDynamicOptionOverrides=dynamicOptionOverrides),this.optionsForHandling.push(...this.optionsForRefining),this.optionsForRefining=[],{rawOptions:this.currentCalendarOptionsInput,refinedOptions:this.currentCalendarOptionsRefined,pluginHooks,availableLocaleData,localeDefaults}}_computeCurrentViewData(viewType,optionsData,optionOverrides,dynamicOptionOverrides){let viewSpec=optionsData.viewSpecs[viewType];if(!viewSpec)throw new Error(`viewType "${viewType}" is not available. Please make sure you've loaded all neccessary plugins`);let{refinedOptions}=this.processRawViewOptions(viewSpec,optionsData.pluginHooks,optionsData.localeDefaults,optionOverrides,dynamicOptionOverrides);this.nowManager.handleInput(optionsData.dateEnv,refinedOptions.now);let dateProfileGenerator=this.buildDateProfileGenerator({dateProfileGeneratorClass:viewSpec.optionDefaults.dateProfileGeneratorClass,duration:viewSpec.duration,durationUnit:viewSpec.durationUnit,usesMinMaxTime:viewSpec.optionDefaults.usesMinMaxTime,dateEnv:optionsData.dateEnv,calendarApi:this.config.calendarApi,slotMinTime:refinedOptions.slotMinTime,slotMaxTime:refinedOptions.slotMaxTime,showNonCurrentDates:refinedOptions.showNonCurrentDates,dayCount:refinedOptions.dayCount,dateAlignment:refinedOptions.dateAlignment,dateIncrement:refinedOptions.dateIncrement,hiddenDays:refinedOptions.hiddenDays,weekends:refinedOptions.weekends,validRangeInput:refinedOptions.validRange,visibleRangeInput:refinedOptions.visibleRange,fixedWeekCount:refinedOptions.fixedWeekCount}),viewApi=this.buildViewApi(viewType,this.getCurrentData,optionsData.dateEnv);return{viewSpec,options:refinedOptions,dateProfileGenerator,viewApi}}processRawViewOptions(viewSpec,pluginHooks,localeDefaults,optionOverrides,dynamicOptionOverrides){let refiners={...BASE_OPTION_REFINERS,...CALENDAR_LISTENER_REFINERS,...CALENDAR_ONLY_OPTION_REFINERS,...VIEW_ONLY_OPTION_REFINERS,...pluginHooks.listenerRefiners,...pluginHooks.optionRefiners},raw=mergeCalendarOptions(BASE_OPTION_DEFAULTS,...pluginHooks.optionDefaults,viewSpec.optionDefaults,localeDefaults,filterKnownOptions(mergeCalendarOptions(optionOverrides,viewSpec.optionOverrides,dynamicOptionOverrides),refiners)),refined={},currentRaw=this.currentViewOptionsInput,currentRefined=this.currentViewOptionsRefined,anyChanges=!1;for(let optionName in raw)raw[optionName]===currentRaw[optionName]||COMPLEX_OPTION_COMPARATORS[optionName]&&COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName],currentRaw[optionName])||isMergedPropsEqual(currentRaw[optionName],raw[optionName])?refined[optionName]=currentRefined[optionName]:(raw[optionName]===this.currentCalendarOptionsInput[optionName]||COMPLEX_OPTION_COMPARATORS[optionName]&&COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName],this.currentCalendarOptionsInput[optionName])?optionName in this.currentCalendarOptionsRefined&&(refined[optionName]=this.currentCalendarOptionsRefined[optionName]):refiners[optionName]&&(refined[optionName]=refiners[optionName](raw[optionName],optionName)),anyChanges=!0);return anyChanges&&(this.currentViewOptionsInput=raw,this.currentViewOptionsRefined=refined),{rawOptions:this.currentViewOptionsInput,refinedOptions:this.currentViewOptionsRefined}}};function buildDateEnv(timeZone,explicitLocale,weekNumberCalculation,firstDay,weekTextLong,weekTextShort,pluginHooks,availableLocaleData){let locale=buildLocale(explicitLocale||availableLocaleData.defaultCode,availableLocaleData.map);return new DateEnv({calendarSystem:"gregory",timeZone,locale,weekNumberCalculation,firstDay,weekTextLong,weekTextShort,cmdFormatter:pluginHooks.cmdFormatter})}function buildDateProfileGenerator(props){let DateProfileGeneratorClass=props.dateProfileGeneratorClass||DateProfileGenerator;return new DateProfileGeneratorClass(props)}function buildViewApi(type,getCurrentData,dateEnv){return new ViewImpl(type,getCurrentData,dateEnv)}function buildEventUiBySource(eventSources){return mapHash(eventSources,eventSource=>eventSource.ui)}function buildEventUiBases(eventDefs,eventUiSingleBase,eventUiBySource){let eventUiBases={"":eventUiSingleBase};for(let defId in eventDefs){let def=eventDefs[defId];def.sourceId&&eventUiBySource[def.sourceId]&&(eventUiBases[defId]=eventUiBySource[def.sourceId])}return eventUiBases}function buildViewUiProps(calendarContext){let{options}=calendarContext;return{eventUiSingleBase:createEventUi({display:options.eventDisplay,editable:options.editable,startEditable:options.eventStartEditable,durationEditable:options.eventDurationEditable,constraint:options.eventConstraint,overlap:typeof options.eventOverlap=="boolean"?options.eventOverlap:void 0,allow:options.eventAllow},calendarContext),selectionConfig:createEventUi({constraint:options.selectConstraint,overlap:typeof options.selectOverlap=="boolean"?options.selectOverlap:void 0,allow:options.selectAllow},calendarContext)}}function computeIsLoading(state,context){for(let isLoadingFunc of context.pluginHooks.isLoadingFuncs)if(isLoadingFunc(state))return!0;return!1}function parseContextBusinessHours(calendarContext){return parseBusinessHours(calendarContext.options.businessHours,calendarContext)}var warnedUnknownOptions={};function filterKnownOptions(options,optionRefiners){let knownOptions={};for(let optionName in options)optionRefiners[optionName]?knownOptions[optionName]=options[optionName]:warnedUnknownOptions[optionName]||(warn(`Unknown option \`${optionName}\`.`),warnedUnknownOptions[optionName]=!0);return knownOptions}function buildToolbarProps(viewSpec,dateProfile,dateProfileGenerator,currentDate,nowDate,title){let todayInfo=dateProfileGenerator.build(nowDate,nowDate,void 0,!1),prevInfo=dateProfileGenerator.buildPrev(dateProfile,currentDate,nowDate,!1),nextInfo=dateProfileGenerator.buildNext(dateProfile,currentDate,nowDate,!1);return{title,selectedButton:viewSpec.type,navUnit:viewSpec.singleUnit,isTodayEnabled:todayInfo.isValid&&!rangeContainsMarker(dateProfile.currentRange,nowDate),isPrevEnabled:prevInfo.isValid,isNextEnabled:nextInfo.isValid}}var CalendarApiImpl=class{getCurrentData(){return this.currentDataManager.getCurrentData()}dispatch(action){this.currentDataManager.dispatch(action)}get view(){return this.getCurrentData().viewApi}batchRendering(callback){callback()}setOption(name,val){this.dispatch({type:"SET_OPTION",optionName:name,rawOptionValue:val})}getOption(name){return this.currentDataManager.currentCalendarOptionsInput[name]}getAvailableLocaleCodes(){return Object.keys(this.getCurrentData().availableRawLocales)}on(handlerName,handler){let{currentDataManager}=this;currentDataManager.currentCalendarOptionsRefiners[handlerName]?currentDataManager.emitter.on(handlerName,handler):warn(`Unknown listener \`${handlerName}\`.`)}off(handlerName,handler){this.currentDataManager.emitter.off(handlerName,handler)}trigger(handlerName,...args){this.currentDataManager.emitter.trigger(handlerName,...args)}changeView(viewType,dateOrRange){this.batchRendering(()=>{if(this.unselect(),dateOrRange)if(dateOrRange.start&&dateOrRange.end)this.dispatch({type:"CHANGE_VIEW_TYPE",viewType}),this.dispatch({type:"SET_OPTION",optionName:"visibleRange",rawOptionValue:dateOrRange});else{let{dateEnv}=this.getCurrentData();this.dispatch({type:"CHANGE_VIEW_TYPE",viewType,dateMarker:dateEnv.createMarker(dateOrRange)})}else this.dispatch({type:"CHANGE_VIEW_TYPE",viewType})})}zoomTo(dateMarker,viewType){let state=this.getCurrentData(),spec;viewType=viewType||"day",spec=state.viewSpecs[viewType]||this.getUnitViewSpec(viewType),this.unselect(),spec?this.dispatch({type:"CHANGE_VIEW_TYPE",viewType:spec.type,dateMarker}):this.dispatch({type:"CHANGE_DATE",dateMarker})}getUnitViewSpec(unit){let{viewSpecs,toolbarConfig}=this.getCurrentData(),viewTypes=[].concat(toolbarConfig.header?toolbarConfig.header.viewsWithButtons:[],toolbarConfig.footer?toolbarConfig.footer.viewsWithButtons:[]),i,spec;for(let viewType in viewSpecs)viewTypes.push(viewType);for(i=0;i<viewTypes.length;i+=1)if(spec=viewSpecs[viewTypes[i]],spec&&spec.singleUnit===unit)return spec;return null}prev(){this.unselect(),this.dispatch({type:"PREV"})}next(){this.unselect(),this.dispatch({type:"NEXT"})}prevYear(){let state=this.getCurrentData();this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:state.dateEnv.addYears(state.currentDate,-1)})}nextYear(){let state=this.getCurrentData();this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:state.dateEnv.addYears(state.currentDate,1)})}today(){let state=this.getCurrentData();this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:state.nowManager.getDateMarker()})}gotoDate(zonedDateInput){let state=this.getCurrentData();this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:state.dateEnv.createMarker(zonedDateInput)})}incrementDate(deltaInput){let state=this.getCurrentData(),delta=createDuration(deltaInput);delta&&(this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:state.dateEnv.add(state.currentDate,delta)}))}getDate(){let state=this.getCurrentData();return state.dateEnv.toDate(state.currentDate)}formatDate(d,formatter){let{dateEnv}=this.getCurrentData();return joinDateTimeFormatParts(dateEnv.formatToParts(dateEnv.createMarker(d),createFormatter(formatter)))}formatRange(d0,d1,settings){let{dateEnv}=this.getCurrentData();return joinDateTimeFormatParts(dateEnv.formatRangeToParts(dateEnv.createMarker(d0),dateEnv.createMarker(d1),createFormatter(settings),settings))}formatIso(d,omitTime){let{dateEnv}=this.getCurrentData();return dateEnv.formatIso(dateEnv.createMarker(d),{omitTime})}select(dateOrObj,endDate){let selectionInput;endDate==null?dateOrObj.start!=null?selectionInput=dateOrObj:selectionInput={start:dateOrObj,end:null}:selectionInput={start:dateOrObj,end:endDate};let state=this.getCurrentData(),selection=parseDateSpan(selectionInput,state.dateEnv,createDuration({days:1}));selection&&(this.dispatch({type:"SELECT_DATES",selection}),triggerDateSelect(selection,null,state))}unselect(pev){let state=this.getCurrentData();state.dateSelection&&(this.dispatch({type:"UNSELECT_DATES"}),triggerDateUnselect(pev,state))}addEvent(eventInput,sourceInput){if(eventInput instanceof EventImpl){let def=eventInput._def,instance=eventInput._instance;return this.getCurrentData().eventStore.defs[def.defId]||(this.dispatch({type:"ADD_EVENTS",eventStore:eventTupleToStore({def,instance})}),this.triggerEventAdd(eventInput)),eventInput}let state=this.getCurrentData(),eventSource;if(sourceInput instanceof EventSourceImpl)eventSource=sourceInput.internalEventSource;else if(typeof sourceInput=="boolean")sourceInput&&([eventSource]=hashValuesToArray(state.eventSources));else if(sourceInput!=null){let sourceApi=this.getEventSourceById(sourceInput);if(!sourceApi)return warn(`Unknown event source ID \`${sourceInput}\`.`),null;eventSource=sourceApi.internalEventSource}let tuple=parseEvent(eventInput,eventSource,state,!1);if(tuple){let newEventApi=new EventImpl(state,tuple.def,tuple.def.recurringDef?null:tuple.instance);return this.dispatch({type:"ADD_EVENTS",eventStore:eventTupleToStore(tuple)}),this.triggerEventAdd(newEventApi),newEventApi}return null}triggerEventAdd(eventApi){let{emitter}=this.getCurrentData();emitter.trigger("eventAdd",{event:eventApi,relatedEvents:[],revert:()=>{this.dispatch({type:"REMOVE_EVENTS",eventStore:eventApiToStore(eventApi)})}})}getEventById(id){let state=this.getCurrentData(),{defs,instances}=state.eventStore;id=String(id);for(let defId in defs){let def=defs[defId];if(def.publicId===id){if(def.recurringDef)return new EventImpl(state,def,null);for(let instanceId in instances){let instance=instances[instanceId];if(instance.defId===def.defId)return new EventImpl(state,def,instance)}}}return null}getEvents(){let currentData=this.getCurrentData();return buildEventApis(currentData.eventStore,currentData)}removeAllEvents(){this.dispatch({type:"REMOVE_ALL_EVENTS"})}getEventSources(){let state=this.getCurrentData(),sourceHash=state.eventSources,sourceApis=[];for(let internalId in sourceHash)sourceApis.push(new EventSourceImpl(state,sourceHash[internalId]));return sourceApis}getEventSourceById(id){let state=this.getCurrentData(),sourceHash=state.eventSources;id=String(id);for(let sourceId in sourceHash)if(sourceHash[sourceId].publicId===id)return new EventSourceImpl(state,sourceHash[sourceId]);return null}addEventSource(sourceInput){let state=this.getCurrentData();if(sourceInput instanceof EventSourceImpl)return state.eventSources[sourceInput.internalEventSource.sourceId]||this.dispatch({type:"ADD_EVENT_SOURCES",sources:[sourceInput.internalEventSource]}),sourceInput;let eventSource=parseEventSource(sourceInput,state);return eventSource?(this.dispatch({type:"ADD_EVENT_SOURCES",sources:[eventSource]}),new EventSourceImpl(state,eventSource)):null}removeAllEventSources(){this.dispatch({type:"REMOVE_ALL_EVENT_SOURCES"})}refetchEvents(){this.dispatch({type:"FETCH_EVENT_SOURCES",isRefetch:!0})}scrollToTime(timeInput){let time=createDuration(timeInput);time&&this.trigger("_timeScrollRequest",time)}getButtonState(){let currentData=this.getCurrentData(),{toolbarProps}=currentData,options=currentData.calendarOptions,buttonConfigs=options.buttons||{},viewSpecs=currentData.viewSpecs,currentUnit=currentData.viewSpec.singleUnit,currentHintOrdinal=[currentUnit?getSingleUnitText(currentUnit,options):"",currentUnit],buttonState={today:{text:options.todayText,hint:formatWithOrdinals(options.todayHint,currentHintOrdinal,options.todayText),isDisabled:!toolbarProps.isTodayEnabled},prev:{text:options.prevText,hint:formatWithOrdinals(options.prevHint,currentHintOrdinal,options.prevText),isDisabled:!toolbarProps.isPrevEnabled},next:{text:options.nextText,hint:formatWithOrdinals(options.nextHint,currentHintOrdinal,options.nextText),isDisabled:!toolbarProps.isNextEnabled},prevYear:{text:options.prevYearText,hint:formatWithOrdinals(options.prevHint,[options.yearText,"year"],options.prevYearText),isDisabled:!1},nextYear:{text:options.prevYearText,hint:formatWithOrdinals(options.nextHint,[options.yearText,"year"],options.nextYearText),isDisabled:!1}};for(let viewSpecName in viewSpecs){let viewSpec=viewSpecs[viewSpecName],{singleUnit}=viewSpec,buttonTextKey=viewSpec.optionDefaults.buttonTextKey,buttonText=buttonConfigs[viewSpecName]?.text||(buttonTextKey?options[buttonTextKey]:"")||(singleUnit?getSingleUnitText(singleUnit,options):"")||viewSpecName,buttonHint=formatWithOrdinals(options.viewHint,[buttonText,viewSpecName],buttonText);buttonState[viewSpecName]={text:buttonText,hint:buttonHint}}return buttonState}};function getSingleUnitText(singleUnit,options){return options[singleUnit+"TextLong"]||options[singleUnit+"Text"]}var CalendarMediaRoot=class extends import_react2.Component{constructor(){super(...arguments),this.state={forPrint:!1},this.handleBeforePrint=()=>{(0,import_react_dom.flushSync)(()=>{this.setState({forPrint:!0})})},this.handleAfterPrint=()=>{(0,import_react_dom.flushSync)(()=>{this.setState({forPrint:!1})})}}render(){return this.props?.children(this.state.forPrint)}componentDidMount(){let{props}=this,{emitter}=props;emitter.on("_beforeprint",this.handleBeforePrint),emitter.on("_afterprint",this.handleAfterPrint)}componentWillUnmount(){let{props}=this,{emitter}=props;emitter.off("_beforeprint",this.handleBeforePrint),emitter.off("_afterprint",this.handleAfterPrint)}};function computeRootClassName(options,forPrint){let borderlessX=options.borderlessX??options.borderless,borderlessTop=options.borderlessTop??options.borderless,borderlessBottom=options.borderlessBottom??options.borderless,calendarDisplayData={borderlessX:!!borderlessX,borderlessTop:!!borderlessTop,borderlessBottom:!!borderlessBottom};return joinClassNames(generateClassName(options.class,calendarDisplayData),generateClassName(options.className,calendarDisplayData),classNames.borderBoxRoot,classNames.isolate,classNames.flexCol,forPrint?classNames.calendarPrintRoot:classNames.calendarScreenRoot)}var ButtonIcon=class extends BaseComponent{render(){let{contentGenerator,className}=this.props;if(contentGenerator)return(0,import_jsx_runtime.jsx)(ContentContainer,{tag:"span",style:{display:"contents"},attrs:{"aria-hidden":!0},renderProps:{},generatorName:void 0,customGenerator:contentGenerator});if(className!==void 0)return(0,import_jsx_runtime.jsx)("span",{"aria-hidden":!0,className})}},ToolbarSection=class extends BaseComponent{render(){let{props}=this,{options}=this.context,children=props.widgetGroups.map(widgetGroup=>this.renderWidgetGroup(widgetGroup));return(0,import_react2.createElement)("div",{className:generateClassName(options.toolbarSectionClass,{name:props.name})},...children)}renderWidgetGroup(widgetGroup){let{props,context}=this,{options}=context,children=[],isOnlyButtons=!0,isOnlyView=!0;for(let widget of widgetGroup){let{name,isView}=widget;name==="title"?isOnlyButtons=!1:isView||(isOnlyView=!1)}for(let widget of widgetGroup){let{name,customElement,buttonHint}=widget;if(name==="title")children.push((0,import_jsx_runtime.jsx)("div",{role:"heading","aria-level":options.headingLevel,id:props.titleId,className:joinClassNames(options.toolbarTitleClass),children:props.title}));else if(customElement)children.push((0,import_jsx_runtime.jsx)(ContentContainer,{tag:"span",style:{display:"contents"},renderProps:{},generatorName:void 0,customGenerator:customElement}));else{let isSelected=name===props.selectedButton,isDisabled=!props.isTodayEnabled&&name==="today"||!props.isPrevEnabled&&name==="prev"||!props.isNextEnabled&&name==="next",buttonDisplay=widget.buttonDisplay??options.buttonDisplay;buttonDisplay==="auto"&&(buttonDisplay=widget.buttonIconContent||widget.buttonIconClass?"icon":"text");let iconNode;buttonDisplay!=="text"&&(iconNode=(0,import_jsx_runtime.jsx)(ButtonIcon,{className:widget.buttonIconClass,contentGenerator:widget.buttonIconContent}));let inGroup=widgetGroup.length>1&&isOnlyButtons,buttonGroup=inGroup?{hasSelection:isOnlyView}:null,renderProps={name,text:widget.buttonText,isPrimary:widget.buttonIsPrimary,isSelected,isDisabled,isIconOnly:buttonDisplay==="icon",buttonGroup};children.push((0,import_jsx_runtime.jsx)(ContentContainer,{tag:"button",attrs:{type:"button",disabled:isDisabled,...isOnlyButtons&&isOnlyView?{role:"tab","aria-selected":isSelected}:{"aria-pressed":isSelected},"aria-label":typeof buttonHint=="function"?buttonHint(props.navUnit):buttonHint,onClick:widget.buttonClick},className:joinClassNames(generateClassName(options.buttonClass,renderProps),!isDisabled&&classNames.cursorPointer,inGroup&&joinClassNames(isSelected?classNames.z1:classNames.z0,classNames.focusZ2)),renderProps,generatorName:void 0,classNameGenerator:widget.buttonClass,didMount:widget.buttonDidMount,willUnmount:widget.buttonWillUnmount,children:()=>buttonDisplay==="text"?widget.buttonText:buttonDisplay==="icon"?iconNode:buttonDisplay==="icon-text"?(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[iconNode,widget.buttonText]}):(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[widget.buttonText,iconNode]})}))}}return children.length>1?(0,import_react2.createElement)("div",{role:isOnlyButtons&&isOnlyView?"tablist":void 0,"aria-label":isOnlyButtons&&isOnlyView?options.viewChangeHint:void 0,className:joinClassNames(generateClassName(options.buttonGroupClass,{hasSelection:isOnlyView}),classNames.isolate)},...children):children[0]}},Toolbar=class extends BaseComponent{render(){let{props}=this,options=this.context.options,{sectionWidgets}=props.model,{borderlessX,borderlessTop,borderlessBottom}=computeViewBorderless(options),toolbarClassOption=props.isHeader?options.headerToolbarClass:options.footerToolbarClass;return(0,import_jsx_runtime.jsxs)("div",{className:joinClassNames(generateClassName(toolbarClassOption,{borderlessX,borderlessTop,borderlessBottom}),generateClassName(options.toolbarClass,{borderlessX,borderlessTop,borderlessBottom})),children:[this.renderSection("start",sectionWidgets.start),this.renderSection("center",sectionWidgets.center),this.renderSection("end",sectionWidgets.end)]})}renderSection(name,widgetGroups){let{props}=this;return(0,import_jsx_runtime.jsx)(ToolbarSection,{name,widgetGroups,title:props.title,titleId:props.titleId,navUnit:props.navUnit,selectedButton:props.selectedButton,isTodayEnabled:props.isTodayEnabled,isPrevEnabled:props.isPrevEnabled,isNextEnabled:props.isNextEnabled},name)}},EventClicking=class extends Interaction{constructor(settings){super(settings),this.handleSegClick=(ev,segEl)=>{let{component}=this,{context}=component,eventRange=getElEventRange(segEl);eventRange&&component.isValidSegDownEl(ev.target)&&context.emitter.trigger("eventClick",{el:segEl,event:new EventImpl(component.context,eventRange.def,eventRange.instance),jsEvent:ev,view:context.viewApi})},this.destroy=listenBySelector(settings.el,"click",`.${classNames.internalEvent}`,this.handleSegClick)}},EventHovering=class extends Interaction{constructor(settings){super(settings),this.handleEventElRemove=el=>{el===this.currentSegEl&&this.handleSegLeave(null,this.currentSegEl)},this.handleSegEnter=(ev,segEl)=>{getElEventRange(segEl)&&(this.currentSegEl=segEl,this.triggerEvent("eventMouseEnter",ev,segEl))},this.handleSegLeave=(ev,segEl)=>{this.currentSegEl&&(this.currentSegEl=null,this.triggerEvent("eventMouseLeave",ev,segEl))},this.removeHoverListeners=listenToHoverBySelector(settings.el,`.${classNames.internalEvent}`,this.handleSegEnter,this.handleSegLeave)}destroy(){this.removeHoverListeners()}triggerEvent(publicEvName,ev,segEl){let{component}=this,{context}=component,eventRange=getElEventRange(segEl);(!ev||component.isValidSegDownEl(ev.target))&&context.emitter.trigger(publicEvName,{el:segEl,event:new EventImpl(context,eventRange.def,eventRange.instance),jsEvent:ev,view:context.viewApi})}},CalendarInner=class extends PureComponent{constructor(){super(...arguments),this.buildViewContext=memoize2(buildViewContext),this.buildViewPropTransformers=memoize2(buildViewPropTransformers),this.interactionsStore={},this.calendarInteractions=[],this.registerInteractiveComponent=(component,settingsInput)=>{let settings=parseInteractionSettings(component,settingsInput),interactionClasses=[EventClicking,EventHovering];settingsInput.disableHits||(interactionClasses=interactionClasses.concat(this.props.pluginHooks.componentInteractions));let interactions=interactionClasses.map(TheInteractionClass=>new TheInteractionClass(settings));this.interactionsStore[component.uid]=interactions,interactionSettingsStore[component.uid]=settings},this.unregisterInteractiveComponent=component=>{let listeners=this.interactionsStore[component.uid];if(listeners){for(let listener of listeners)listener.destroy();delete this.interactionsStore[component.uid]}delete interactionSettingsStore[component.uid]}}get viewTitleId(){return this.props.baseId+"title"}render(){let{props}=this,{toolbarConfig,options}=props,viewHeight,viewHeightLiquid=!1,viewAspectRatio;props.forPrint||getIsHeightAuto(options)||(options.height!=null?viewHeightLiquid=!0:options.contentHeight!=null?viewHeight=options.contentHeight:viewAspectRatio=Math.max(options.aspectRatio,.5));let viewContext=this.buildViewContext(props.viewSpec,props.viewApi,props.options,props.dateProfileGenerator,props.dateEnv,props.nowManager,props.pluginHooks,props.dispatch,props.getCurrentData,props.emitter,props.calendarApi,props.baseId,this.registerInteractiveComponent,this.unregisterInteractiveComponent);return(0,import_jsx_runtime.jsxs)(ViewContextType.Provider,{value:viewContext,children:[toolbarConfig.header&&(0,import_jsx_runtime.jsx)(Toolbar,{model:toolbarConfig.header,isHeader:!0,titleId:this.viewTitleId,...props.toolbarProps}),(0,import_jsx_runtime.jsxs)("div",{className:joinClassNames(classNames.flexCol,classNames.rel,classNames.overflowAnchorNone,classNames.minHeight0,viewHeightLiquid&&classNames.liquid),style:{height:viewHeight,aspectRatio:viewAspectRatio!=null?String(viewAspectRatio):void 0},children:[this.renderView(joinClassNames((viewHeightLiquid||viewHeight)&&classNames.liquid,viewAspectRatio!=null&&classNames.fill,classNames.internalView)),this.buildAppendContent()]}),toolbarConfig.footer&&(0,import_jsx_runtime.jsx)(Toolbar,{model:toolbarConfig.footer,isHeader:!1,...props.toolbarProps})]})}renderView(className){let{props}=this,{pluginHooks,viewSpec,toolbarConfig,toolbarProps}=props,viewProps={className,dateProfile:props.dateProfile,businessHours:props.businessHours,eventStore:props.renderableEventStore,eventUiBases:props.eventUiBases,dateSelection:props.dateSelection,eventSelection:props.eventSelection,eventDrag:props.eventDrag,eventResize:props.eventResize,forPrint:props.forPrint,labelId:toolbarConfig.header&&toolbarConfig.header.hasTitle?this.viewTitleId:void 0,labelStr:toolbarConfig.header&&toolbarConfig.header.hasTitle?void 0:toolbarProps.title},transformers=this.buildViewPropTransformers(pluginHooks.viewPropsTransformers),contentProps={...props,toolbarProps,forPrint:props.forPrint};for(let transformer of transformers)Object.assign(viewProps,transformer.transform(viewProps,contentProps));let ViewComponent=viewSpec.component;return(0,import_jsx_runtime.jsx)(ViewComponent,{...viewProps})}buildAppendContent(){let{props}=this;return(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:props.pluginHooks.viewContainerAppends.map((buildAppendContent,i)=>(0,import_jsx_runtime.jsx)(import_react2.Fragment,{children:buildAppendContent(props)},i))})}componentDidMount(){let{props}=this;this.calendarInteractions=props.pluginHooks.calendarInteractions.map(CalendarInteractionClass=>new CalendarInteractionClass(props));let{propSetHandlers}=props.pluginHooks;for(let propName in propSetHandlers)propSetHandlers[propName](props[propName],props);for(let callback of props.pluginHooks.contextInit)callback(props)}componentDidUpdate(prevProps){let{props}=this,{propSetHandlers}=props.pluginHooks;for(let propName in propSetHandlers)props[propName]!==prevProps[propName]&&propSetHandlers[propName](props[propName],props)}componentWillUnmount(){let{props}=this;for(let interaction of this.calendarInteractions)interaction.destroy();this.calendarInteractions=[],props.emitter.trigger("_unmount")}};function buildViewPropTransformers(theClasses){return theClasses.map(TheClass=>new TheClass)}var Calendar=(0,import_react3.forwardRef)((props,ref)=>{let baseId=useStableId(props.id),[_revision,setRevision]=(0,import_react3.useState)("");function handleDataChange(_data,actions){(needsSyncRender(actions)?import_react_dom2.flushSync:runNormal)(()=>{setRevision(guid())})}let[calendarApi]=(0,import_react3.useState)(()=>new CalendarApiImpl),[calendarDataManager]=(0,import_react3.useState)(()=>new CalendarDataManager({calendarApi,onDataChange:handleDataChange}));(0,import_react3.useEffect)(()=>()=>{calendarDataManager.destroy()},[]),(0,import_react3.useImperativeHandle)(ref,()=>({getApi:()=>calendarApi}),[]);let data=calendarDataManager.update(props);return(0,import_jsx_runtime2.jsx)(CalendarMediaRoot,{emitter:data.emitter,children:forPrint=>{let options=data.calendarOptions,isRtl=options.direction==="rtl",className=computeRootClassName(options,forPrint);return(0,import_jsx_runtime2.jsx)("div",{dir:isRtl?"rtl":void 0,className,style:{height:options.height},"data-color-scheme":options.colorScheme||void 0,children:(0,import_jsx_runtime2.jsx)(CalendarInner,{...data,baseId,forPrint})})}})});function needsSyncRender(actions){for(let action of actions)if(action.type==="SET_EVENT_DRAG"||action.type==="UNSET_EVENT_DRAG"||action.type==="SET_EVENT_RESIZE"||action.type==="UNSET_EVENT_RESIZE"||action.type==="MERGE_EVENTS")return!0;return!1}function runNormal(f){f()}var warnedStableId=!1;function useStableId(fallbackId){if(import_react3.default.useId)return import_react3.default.useId();let[uid]=(0,import_react3.useState)(()=>guid());return fallbackId?fallbackId+":":(warnedStableId||(warnedStableId=!0,warn("Missing `id` prop. Provide one for better SSR support in React 17.")),`fc:${uid}:`)}function useCalendarController(){let handleDateChange=(0,import_react4.useCallback)(()=>{setControllerWrap({controller:controllerWrap.controller})},[]),[controllerWrap,setControllerWrap]=(0,import_react4.useState)(()=>({controller:new CalendarController(handleDateChange)}));return controllerWrap.controller}var import_jsx_runtime6=require("react/jsx-runtime");var import_react5=require("react");var import_jsx_runtime3=require("react/jsx-runtime");function getAppendableRoot(el){let root=el.getRootNode();return root instanceof Document?root.body||root.documentElement:root}function computeElIsRtl(el){return getComputedStyle(el).direction==="rtl"}var PIXEL_PROP_RE=/(top|left|right|bottom|width|height)$/i;function applyStyle(el,props){for(let propName in props)applyStyleProp(el,propName,props[propName])}function applyStyleProp(el,name,val){val==null?el.style[name]="":typeof val=="number"&&PIXEL_PROP_RE.test(name)?el.style[name]=`${val}px`:el.style[name]=val}function getEventTargetViaRoot(ev){return ev.composedPath?.()[0]??ev.target}var import_react_dom3=require("react-dom");var NowTimer=class extends import_react5.Component{constructor(props,context){super(props,context),this.handleChange=()=>{this.forceUpdate()},this.runner=new NowTimerRunner(this.handleChange)}render(){let{props,context}=this,{nowDate,todayRange}=this.runner.update({nowManager:context.nowManager,unit:props.unit,unitValue:props.unitValue,nowIndicatorSnap:context.options.nowIndicatorSnap,dateEnv:context.dateEnv});return props.children(nowDate,todayRange)}componentWillUnmount(){this.runner.destroy()}};NowTimer.contextType=ViewContextType;var FULL_DATE_FORMAT=createFormatter({year:"numeric",month:"long",day:"numeric"}),WEEK_FORMAT=createFormatter({week:"long"}),WEEKDAY_ONLY_FORMAT=createFormatter({weekday:"long"});function findWeekdayText(parts){for(let part of parts)if(part.type==="weekday")return part.value;return""}function findDayNumberText(parts){for(let part of parts)if(part.type==="day")return part.value;return""}function findMonthText(parts){for(let part of parts)if(part.type==="month")return part.value;return""}function buildDateStr(context,dateMarker,viewType="day"){return joinDateTimeFormatParts(context.dateEnv.formatToParts(dateMarker,viewType==="week"?WEEK_FORMAT:FULL_DATE_FORMAT))}function buildNavLinkAttrs(context,dateMarker,viewType="day",dateStr=buildDateStr(context,dateMarker,viewType),isTabbable=!0){let{dateEnv,options,calendarApi}=context,zonedDate=dateEnv.toDate(dateMarker),handleInteraction=ev=>{let customAction=viewType==="day"?options.navLinkDayClick:viewType==="week"?options.navLinkWeekClick:null;typeof customAction=="function"?customAction.call(calendarApi,dateEnv.toDate(dateMarker),ev):(typeof customAction=="string"&&(viewType=customAction),calendarApi.zoomTo(dateMarker,viewType))};return{role:"link","aria-label":formatWithOrdinals(options.navLinkHint,[dateStr,zonedDate],dateStr),className:joinClassNames(options.navLinkClass,classNames.cursorPointer,classNames.internalNavLink),...isTabbable?createAriaClickAttrs(handleInteraction):{onClick:handleInteraction}}}function getDateMeta(dateMarker,dateEnv,dateProfile,todayRange,nowDate){let isDisabled=!!(dateProfile&&(!dateProfile.activeRange||!rangeContainsMarker(dateProfile.activeRange,dateMarker)));return{date:dateEnv.toDate(dateMarker),dow:dateMarker.getUTCDay(),isDisabled,isOther:!isDisabled&&!!(dateProfile&&!rangeContainsMarker(dateProfile.currentRange,dateMarker)),isToday:!isDisabled&&!!(todayRange&&rangeContainsMarker(todayRange,dateMarker)),isPast:!isDisabled&&!!(nowDate?dateMarker<nowDate:todayRange&&dateMarker<todayRange.start),isFuture:!isDisabled&&!!(nowDate?dateMarker>nowDate:todayRange&&dateMarker>=todayRange.end)}}function isDimsEqual(v0,v1){return v0!=null&&(v0===v1||Math.abs(v0-v1)<.01)}var nativeBorderBoxEnabled=!0,configMap=new Map,afterSizeCallbacks=new Set,isHandling=!1,isStalling=!1;function afterSize(callback){afterSizeCallbacks.add(callback),!isHandling&&!isStalling&&(isStalling=!0,requestAnimationFrame(()=>{isStalling=!1,flushAfterSize()}))}function flushAfterSize(){for(let flushedCallback of afterSizeCallbacks.values())flushedCallback(),afterSizeCallbacks.delete(flushedCallback)}var globalResizeObserver=typeof ResizeObserver<"u"&&new ResizeObserver(entries=>{isHandling=!0;for(let entry of entries){let el=entry.target,config2=configMap.get(el),width,height;if(entry.borderBoxSize&&nativeBorderBoxEnabled){let borderBoxSize=entry.borderBoxSize[0]||entry.borderBoxSize;width=borderBoxSize.inlineSize,height=borderBoxSize.blockSize}else({width,height}=el.getBoundingClientRect());let shouldFire=!1;isDimsEqual(config2.width,width)||(config2.width=width,shouldFire=config2.watchWidth),isDimsEqual(config2.height,height)||(config2.height=height,shouldFire||(shouldFire=config2.watchHeight)),shouldFire&&config2.callback(width,height)}(0,import_react_dom3.flushSync)(()=>{flushAfterSize(),isHandling=!1})});function watchSize(el,callback,watchWidth2=!0,watchHeight2=!0){return configMap.set(el,{callback,watchWidth:watchWidth2,watchHeight:watchHeight2}),globalResizeObserver&&globalResizeObserver.observe(el,{box:"border-box"}),()=>{configMap.delete(el),globalResizeObserver&&globalResizeObserver.unobserve(el)}}function watchWidth(el,callback){return watchSize(el,callback,!0)}function watchHeight(el,callback){return watchSize(el,(_width,height)=>callback(height),!1,!0)}var ViewContainer=class extends BaseComponent{constructor(){super(...arguments),this.refineRenderProps=memoizeObjArg(refineRenderProps)}render(){let{props,context}=this,{options,viewSpec}=context,renderProps=this.refineRenderProps({...computeViewBorderless(options),options:{headerToolbar:options.headerToolbar,footerToolbar:options.footerToolbar},isHeightAuto:getIsHeightAuto(options),viewApi:context.viewApi});return(0,import_jsx_runtime3.jsx)(ContentContainer,{elRef:props.elRef,tag:props.tag||"div",attrs:props.attrs,style:props.style,className:joinClassNames(props.className,generateClassName(options.viewClass,renderProps),generateClassName(viewSpec.optionDefaults.class,renderProps),generateClassName(viewSpec.optionDefaults.className,renderProps),generateClassName(viewSpec.optionOverrides.class,renderProps),generateClassName(viewSpec.optionOverrides.className,renderProps)),renderProps,generatorName:void 0,didMount:options.didMount||options.viewDidMount,willUnmount:options.willUnmount||options.viewWillUnmount,children:()=>props.children})}};function refineRenderProps(raw){return{view:raw.viewApi,borderlessX:raw.borderlessX,borderlessTop:raw.borderlessTop,borderlessBottom:raw.borderlessBottom,options:raw.options,isHeightAuto:raw.isHeightAuto}}var DateComponent=class extends BaseComponent{constructor(){super(...arguments),this.uid=guid()}prepareHits(){}queryHit(isRtl,positionLeft,positionTop,elWidth,elHeight){return null}isValidSegDownEl(el){return!this.props.eventDrag&&!this.props.eventResize&&!el.closest(`.${classNames.internalEventMirror}`)}isValidDateDownEl(el){return!el.closest(`.${classNames.internalEvent}:not(.${classNames.internalBgEvent})`)&&!el.closest(`.${classNames.internalMoreLink}`)&&!el.closest(`.${classNames.internalNavLink}`)&&!el.closest(`.${classNames.internalPopover}`)}},DelayedRunner=class{constructor(drainedOption){this.drainedOption=drainedOption,this.isRunning=!1,this.isDirty=!1,this.pauseDepths={},this.timeoutId=0}request(delay){this.isDirty=!0,this.isPaused()||(this.clearTimeout(),delay==null?this.tryDrain():this.timeoutId=setTimeout(this.tryDrain.bind(this),delay))}pause(scope=""){let{pauseDepths}=this;pauseDepths[scope]=(pauseDepths[scope]||0)+1,this.clearTimeout()}resume(scope="",force){let{pauseDepths}=this;scope in pauseDepths&&(force?delete pauseDepths[scope]:(pauseDepths[scope]-=1,pauseDepths[scope]<=0&&delete pauseDepths[scope]),this.tryDrain())}isPaused(){return Object.keys(this.pauseDepths).length}tryDrain(){if(!this.isRunning&&!this.isPaused()){for(this.isRunning=!0;this.isDirty;)this.isDirty=!1,this.drained();this.isRunning=!1}}clear(){this.clearTimeout(),this.isDirty=!1,this.pauseDepths={}}clearTimeout(){this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=0)}drained(){this.drainedOption&&this.drainedOption()}},ScrollListener=class{constructor(el){this.el=el,this.emitter=new Emitter,this.isScroll=!1,this.isScrollRecent=!1,this.isWheelRecent=!1,this.isMouseDown=!1,this.isTouchDown=!1,this.isMouse=!1,this.isTouch=!1,this.isWheel=!1,this.handleScroll=()=>{this.isScrollRecent=!0,this.isMouseDown&&(this.isMouse=!0),this.isTouchDown&&(this.isTouch=!0),this.isWheelRecent&&(this.isWheel=!0),this.startScroll(),this.emitter.trigger("scroll",this.getIsDevice()),this.scrollWaiter.request(500)},this.handleScrollWait=()=>{this.isScrollRecent=!1,this.isTouchDown||this.endScroll()},this.handleWheel=()=>{this.isWheelRecent=!0,this.wheelWaiter.request(500)},this.handleWheelWait=()=>{this.isWheelRecent=!1},this.handleMouseDown=()=>{this.isMouseDown=!0},this.handleMouseUp=()=>{this.isMouseDown=!1},this.handleTouchStart=()=>{this.isTouchDown=!0},this.handleTouchEnd=()=>{this.isTouchDown=!1,this.isScrollRecent||this.endScroll()},this.wheelWaiter=new DelayedRunner(this.handleWheelWait),this.scrollWaiter=new DelayedRunner(this.handleScrollWait),el.addEventListener("scroll",this.handleScroll,{passive:!0}),el.addEventListener("wheel",this.handleWheel,{passive:!0}),el.addEventListener("mousedown",this.handleMouseDown),el.addEventListener("mouseup",this.handleMouseUp),el.addEventListener("touchstart",this.handleTouchStart,{passive:!0}),el.addEventListener("touchend",this.handleTouchEnd)}destroy(){let{el}=this;el.removeEventListener("scroll",this.handleScroll,{passive:!0}),el.removeEventListener("wheel",this.handleWheel,{passive:!0}),el.removeEventListener("mousedown",this.handleMouseDown),el.removeEventListener("mouseup",this.handleMouseUp),el.removeEventListener("touchstart",this.handleTouchStart,{passive:!0}),el.removeEventListener("touchend",this.handleTouchEnd)}startScroll(){this.isScroll||(this.isScroll=!0,this.emitter.trigger("scrollStart",this.getIsDevice()))}endScroll(){this.isScroll&&(this.scrollWaiter.clear(),this.wheelWaiter.clear(),this.isScroll=!1,this.isWheelRecent=!1,this.emitter.trigger("scrollEnd",this.getIsDevice()),this.isMouse=!1,this.isTouch=!1,this.isWheel=!1)}getIsDevice(){return this.isWheel||this.isMouse||this.isTouch}},Scroller=class extends DateComponent{constructor(){super(...arguments),this.handleEl=el=>{this.el&&(this.el=null,this._isUnmounting=!0,this.listener.destroy()),el&&(this.el=el,this._isUnmounting=!1,this.listener=new ScrollListener(el))},this.handleHRuler=el=>{this.disconnectHRuler&&(this.disconnectHRuler(),this.disconnectHRuler=void 0,this.clientWidth!==void 0&&(this.clientWidth=void 0,setRef(this.props.clientWidthRef,null))),el&&(this.disconnectHRuler=watchWidth(el,clientWidth=>{this._isUnmounting||clientWidth!==this.clientWidth&&(this.clientWidth=clientWidth,setRef(this.props.clientWidthRef,clientWidth))}))},this.handleVRuler=el=>{this.disconnectVRuler&&(this.disconnectVRuler(),this.disconnectVRuler=void 0,this.clientHeight!==void 0&&(this.clientHeight=void 0,setRef(this.props.clientHeightRef,null))),el&&(this.disconnectVRuler=watchHeight(el,clientHeight=>{if(this._isUnmounting)return;clientHeight!==this.clientHeight&&(this.clientHeight=clientHeight,setRef(this.props.clientHeightRef,clientHeight));let bottomScrollbarWidth=Math.round(this.el.getBoundingClientRect().height-clientHeight);bottomScrollbarWidth!==this.bottomScrollbarWidth&&(this.bottomScrollbarWidth=bottomScrollbarWidth,setRef(this.props.bottomScrollbarWidthRef,bottomScrollbarWidth))}))}}render(){let{props}=this,fallbackOverflow=props.horizontal||props.vertical?"hidden":"";return(0,import_jsx_runtime3.jsxs)("div",{ref:this.handleEl,className:joinClassNames(props.className,classNames.noPadding,classNames.rel,props.hideScrollbars&&classNames.noScrollbars,classNames.internalScroller),style:{...props.style,overflowX:props.horizontal?"auto":fallbackOverflow,overflowY:props.vertical?"auto":fallbackOverflow},children:[props.children,!!props.clientWidthRef&&(0,import_jsx_runtime3.jsx)("div",{ref:this.handleHRuler,className:classNames.fillTop}),!!(props.clientHeightRef||props.bottomScrollbarWidthRef)&&(0,import_jsx_runtime3.jsx)("div",{ref:this.handleVRuler,className:classNames.fillStart})]})}endScroll(){this.listener.endScroll()}get x(){let{el}=this;return el?getNormalizedScrollX(el):0}get y(){let{el}=this;return el?el.scrollTop:0}scrollTo({x:x2,y}){let{el}=this;el&&(y!=null&&(el.scrollTop=y),x2!=null&&setNormalizedScrollX(el,x2))}addScrollStartListener(handler){this.listener.emitter.on("scrollStart",handler)}removeScrollStartListener(handler){this.listener.emitter.off("scrollStart",handler)}addScrollEndListener(handler){this.listener.emitter.on("scrollEnd",handler)}removeScrollEndListener(handler){this.listener.emitter.off("scrollEnd",handler)}};function getNormalizedScrollX(el){let{scrollLeft}=el;return computeElIsRtl(el)?getNormalizedRtlScrollX(scrollLeft,el):scrollLeft}function setNormalizedScrollX(el,x2){let isRtl=computeElIsRtl(el);el.scrollLeft=isRtl?getNormalizedRtlScrollLeft(x2,el):x2}function getNormalizedRtlScrollX(scrollLeft,el){switch(getRtlScrollerSystem()){case"positive":return el.scrollWidth-el.clientWidth-scrollLeft;case"negative":return-scrollLeft}return scrollLeft}function getNormalizedRtlScrollLeft(x2,el){switch(getRtlScrollerSystem()){case"positive":return el.scrollWidth-el.clientWidth-x2;case"negative":return-x2}return x2}var _rtlScrollerSystem;function getRtlScrollerSystem(){return _rtlScrollerSystem||(_rtlScrollerSystem=detectRtlScrollerSystem())}function detectRtlScrollerSystem(){let el=document.createElement("div");el.style.position="absolute",el.style.top="-1000px",el.style.width="100px",el.style.height="100px",el.style.overflow="scroll",el.style.direction="rtl";let innerEl=document.createElement("div");innerEl.style.width="200px",innerEl.style.height="200px",el.appendChild(innerEl),document.body.appendChild(el);let system;return el.scrollLeft>0?system="positive":(el.scrollLeft=50,el.scrollLeft>0?system="reverse":system="negative"),el.remove(),system}var StandardEvent=class extends BaseComponent{constructor(){super(...arguments),this.buildPublicEvent=memoize2((context,eventDef,eventInstance)=>new EventImpl(context,eventDef,eventInstance)),this.handleEl=el=>{this.el=el,setRef(this.props.elRef,el),el&&setElEventRange(el,this.props.eventRange)}}render(){let{props,context}=this,{options}=context,{eventRange}=props,eventUi=eventRange.ui,timeFormat=options.eventTimeFormat||props.defaultTimeFormat,timeText=props.forcedTimeText??buildEventRangeTimeText(timeFormat,eventRange,props.slicedStart,props.slicedEnd,props.isStart,props.isEnd,context,props.defaultDisplayEventTime,props.defaultDisplayEventEnd),[tag,attrs,isInteractive]=getEventTagAndAttrs(eventRange,context),eventApi=this.buildPublicEvent(context,eventRange.def,eventRange.instance),isDraggable=!props.disableDragging&&computeEventRangeDraggable(eventRange,context),isBlock=/row|column/.test(props.display),subcontentRenderProps={event:eventApi,isNarrow:props.isNarrow||!1,isShort:props.isShort||!1,timeText},renderProps={event:eventApi,view:context.viewApi,timeText,color:eventUi.color||options.eventColor,contrastColor:eventUi.contrastColor||options.eventContrastColor,isDraggable,isStartResizable:!props.disableResizing&&props.isStart&&eventUi.durationEditable&&options.eventResizableFromStart,isEndResizable:!props.disableResizing&&props.isEnd&&eventUi.durationEditable,isMirror:props.isMirror,isStart:!!props.isStart,isEnd:!!props.isEnd,isFirst:!!props.isFirst,isLast:!!props.isLast,isPast:!!props.isPast,isFuture:!!props.isFuture,isToday:!!props.isToday,isSelected:!!props.isSelected,isDragging:!!props.isDragging,isResizing:!!props.isResizing,isInteractive,isNarrow:props.isNarrow||!1,isShort:props.isShort||!1,level:props.level||0,timeClass:joinClassNames(generateClassName(options.eventTimeClass,subcontentRenderProps),isBlock&&generateClassName(options.blockEventTimeClass,subcontentRenderProps),props.display==="row"&&generateClassName(options.rowEventTimeClass,subcontentRenderProps),props.display==="column"&&generateClassName(options.columnEventTimeClass,subcontentRenderProps),props.display==="list-item"&&generateClassName(options.listItemEventTimeClass,subcontentRenderProps)),titleClass:joinClassNames(generateClassName(options.eventTitleClass,subcontentRenderProps),isBlock&&generateClassName(options.blockEventTitleClass,subcontentRenderProps),props.display==="row"&&generateClassName(options.rowEventTitleClass,subcontentRenderProps),props.display==="column"&&generateClassName(options.columnEventTitleClass,subcontentRenderProps),props.display==="list-item"&&generateClassName(options.listItemEventTitleClass,subcontentRenderProps),props.display==="row"&&options.rowEventTitleSticky&&classNames.stickyS,props.display==="column"&&options.columnEventTitleSticky&&classNames.stickyT),options:{eventOverlap:!!options.eventOverlap}},outerClassName=joinClassNames(isBlock&&generateClassName(options.blockEventClass,renderProps),props.display==="row"&&generateClassName(options.rowEventClass,renderProps),props.display==="column"&&generateClassName(options.columnEventClass,renderProps),props.display==="list-item"&&generateClassName(options.listItemEventClass,renderProps),eventUi.className,props.className,props.display==="column"?classNames.flexCol:classNames.flexRow,(eventRange.def.url||isDraggable)&&classNames.cursorPointer,classNames.internalEvent,props.isMirror&&classNames.internalEventMirror,isDraggable&&classNames.internalEventDraggable,renderProps.isSelected&&classNames.internalEventSelected,(renderProps.isStartResizable||renderProps.isEndResizable)&&classNames.internalEventResizable),beforeClassName=joinClassNames(generateClassName(options.eventBeforeClass,renderProps),isBlock&&generateClassName(options.blockEventBeforeClass,renderProps),props.display==="row"&&generateClassName(options.rowEventBeforeClass,renderProps),props.display==="column"&&generateClassName(options.columnEventBeforeClass,renderProps),props.display==="list-item"&&generateClassName(options.listItemEventBeforeClass,renderProps)),afterClassName=joinClassNames(generateClassName(options.eventAfterClass,renderProps),isBlock&&generateClassName(options.blockEventAfterClass,renderProps),props.display==="row"&&generateClassName(options.rowEventAfterClass,renderProps),props.display==="column"&&generateClassName(options.columnEventAfterClass,renderProps),props.display==="list-item"&&generateClassName(options.listItemEventAfterClass,renderProps)),innerClassName=joinClassNames(generateClassName(options.eventInnerClass,renderProps),isBlock&&generateClassName(options.blockEventInnerClass,renderProps),props.display==="row"&&generateClassName(options.rowEventInnerClass,renderProps),props.display==="column"&&generateClassName(options.columnEventInnerClass,renderProps),props.display==="list-item"&&generateClassName(options.listItemEventInnerClass,renderProps),!props.disableLiquid&&classNames.liquid),beforeContent=props.display==="row"&&options.rowEventBeforeContent,afterContent=props.display==="row"&&options.rowEventAfterContent;return(0,import_jsx_runtime3.jsx)(ContentContainer,{tag,attrs:{...props.attrs,...attrs,dir:props.isDragging&&options.direction==="rtl"?"rtl":void 0},className:outerClassName,style:{"--fc-event-color":renderProps.color,"--fc-event-contrast-color":renderProps.contrastColor},elRef:this.handleEl,renderProps,generatorName:"eventContent",customGenerator:options.eventContent,defaultGenerator:renderInnerContent,classNameGenerator:options.eventClass,didMount:options.eventDidMount,willUnmount:options.eventWillUnmount,children:InnerContent=>(0,import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment,{children:[!!(renderProps.isSelected&&isBlock)&&(0,import_jsx_runtime3.jsx)("div",{className:props.display==="column"?classNames.hitX:classNames.hitY}),(beforeClassName||beforeContent)&&(0,import_jsx_runtime3.jsxs)("div",{className:joinClassNames(beforeClassName,!props.disableZindexes&&classNames.z1,renderProps.isStartResizable&&joinClassNames(props.display==="column"?classNames.cursorResizeT:classNames.cursorResizeS,classNames.internalEventResizer,classNames.internalEventResizerStart)),children:[beforeContent&&(0,import_jsx_runtime3.jsx)(ContentContainer,{tag:"div",style:{display:"contents"},attrs:{"aria-hidden":!0},renderProps,generatorName:void 0,customGenerator:beforeContent}),!!(renderProps.isStartResizable&&renderProps.isSelected)&&(0,import_jsx_runtime3.jsx)("div",{className:classNames.hit})]}),(0,import_jsx_runtime3.jsx)(InnerContent,{tag:"div",className:joinClassNames(innerClassName,!props.disableZindexes&&classNames.z0)}),(afterClassName||afterContent)&&(0,import_jsx_runtime3.jsxs)("div",{className:joinClassNames(afterClassName,!props.disableZindexes&&classNames.z1,renderProps.isEndResizable&&joinClassNames(props.display==="column"?classNames.cursorResizeB:classNames.cursorResizeE,classNames.internalEventResizer,classNames.internalEventResizerEnd)),children:[afterContent&&(0,import_jsx_runtime3.jsx)(ContentContainer,{tag:"div",style:{display:"contents"},attrs:{"aria-hidden":!0},renderProps,generatorName:void 0,customGenerator:afterContent}),!!(renderProps.isEndResizable&&renderProps.isSelected)&&(0,import_jsx_runtime3.jsx)("div",{className:classNames.hit})]})]})})}componentDidUpdate(prevProps){this.el&&this.props.eventRange!==prevProps.eventRange&&setElEventRange(this.el,this.props.eventRange)}};StandardEvent.addPropsEquality({seg:isPropsEqualShallow});function renderInnerContent(innerProps){return(0,import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment,{children:[innerProps.timeText&&(0,import_jsx_runtime3.jsx)("div",{className:innerProps.timeClass,children:innerProps.timeText}),(0,import_jsx_runtime3.jsx)("div",{className:innerProps.titleClass,children:innerProps.event.title||(0,import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment,{children:"\xA0"})})]})}var import_jsx_runtime4=require("react/jsx-runtime"),import_react6=require("react");var import_react_dom4=require("react-dom");function pointInsideRect(point,rect){return point.left>=rect.left&&point.left<rect.right&&point.top>=rect.top&&point.top<rect.bottom}function intersectRects(rect1,rect2){let res={left:Math.max(rect1.left,rect2.left),right:Math.min(rect1.right,rect2.right),top:Math.max(rect1.top,rect2.top),bottom:Math.min(rect1.bottom,rect2.bottom)};return res.left<res.right&&res.top<res.bottom?res:!1}function constrainPoint(point,rect){return{left:Math.min(Math.max(point.left,rect.left),rect.right),top:Math.min(Math.max(point.top,rect.top),rect.bottom)}}function getRectCenter(rect){return{left:(rect.left+rect.right)/2,top:(rect.top+rect.bottom)/2}}function diffPoints(point1,point2){return{left:point1.left-point2.left,top:point1.top-point2.top}}function computeEdges(el,getPadding=!1){let computedStyle=window.getComputedStyle(el),borderLeft=parseInt(computedStyle.borderLeftWidth,10)||0,borderRight=parseInt(computedStyle.borderRightWidth,10)||0,borderTop=parseInt(computedStyle.borderTopWidth,10)||0,borderBottom=parseInt(computedStyle.borderBottomWidth,10)||0,badScrollbarWidths=computeScrollbarWidthsForEl(el),scrollbarLeftRight=badScrollbarWidths.y-borderLeft-borderRight,scrollbarBottom=badScrollbarWidths.x-borderTop-borderBottom,res={borderLeft,borderRight,borderTop,borderBottom,scrollbarBottom,scrollbarLeft:0,scrollbarRight:0};return computedStyle.direction==="rtl"?res.scrollbarLeft=scrollbarLeftRight:res.scrollbarRight=scrollbarLeftRight,getPadding&&(res.paddingLeft=parseInt(computedStyle.paddingLeft,10)||0,res.paddingRight=parseInt(computedStyle.paddingRight,10)||0,res.paddingTop=parseInt(computedStyle.paddingTop,10)||0,res.paddingBottom=parseInt(computedStyle.paddingBottom,10)||0),res}function computeInnerRect(el,goWithinPadding=!1,doFromWindowViewport){let outerRect=doFromWindowViewport?el.getBoundingClientRect():computeRect(el),edges=computeEdges(el,goWithinPadding),res={left:outerRect.left+edges.borderLeft+edges.scrollbarLeft,right:outerRect.right-edges.borderRight-edges.scrollbarRight,top:outerRect.top+edges.borderTop,bottom:outerRect.bottom-edges.borderBottom-edges.scrollbarBottom};return goWithinPadding&&(res.left+=edges.paddingLeft,res.right-=edges.paddingRight,res.top+=edges.paddingTop,res.bottom-=edges.paddingBottom),res}function computeRect(el){let rect=el.getBoundingClientRect();return{left:rect.left+window.scrollX,top:rect.top+window.scrollY,right:rect.right+window.scrollX,bottom:rect.bottom+window.scrollY}}function computeClippedClientRect(el){let clippingParents=getClippingParents(el),rect=el.getBoundingClientRect();for(let clippingParent of clippingParents){let intersection=intersectRects(rect,clippingParent.getBoundingClientRect());if(intersection)rect=intersection;else return null}return rect}function getClippingParents(el){let parents=[];for(;el instanceof HTMLElement;){let computedStyle=window.getComputedStyle(el);if(computedStyle.position==="fixed")break;/(auto|scroll)/.test(computedStyle.overflow+computedStyle.overflowY+computedStyle.overflowX)&&parents.push(el),el=el.parentNode}return parents}function computeScrollbarWidthsForEl(el){return{x:el.offsetHeight-el.clientHeight,y:el.offsetWidth-el.clientWidth}}var Slicer=class{constructor(){this.sliceBusinessHours=memoize2(this._sliceBusinessHours),this.sliceDateSelection=memoize2(this._sliceDateSpan),this.sliceEventStore=memoize2(this._sliceEventStore),this.sliceEventDrag=memoize2(this._sliceInteraction),this.sliceEventResize=memoize2(this._sliceInteraction),this.forceDayIfListItem=!1}sliceProps(props,dateProfile,nextDayThreshold,context,...extraArgs){let{eventUiBases}=props,eventSegs=this.sliceEventStore(props.eventStore,eventUiBases,dateProfile,nextDayThreshold,...extraArgs);return{dateSelectionSegs:this.sliceDateSelection(props.dateSelection,dateProfile,nextDayThreshold,eventUiBases,context,...extraArgs),businessHourSegs:this.sliceBusinessHours(props.businessHours,dateProfile,nextDayThreshold,context,...extraArgs),fgEventSegs:eventSegs.fg,bgEventSegs:eventSegs.bg,eventDrag:this.sliceEventDrag(props.eventDrag,eventUiBases,dateProfile,nextDayThreshold,...extraArgs),eventResize:this.sliceEventResize(props.eventResize,eventUiBases,dateProfile,nextDayThreshold,...extraArgs),eventSelection:props.eventSelection}}sliceNowDate(date,dateProfile,nextDayThreshold,context,...extraArgs){return this._sliceDateSpan({range:{start:date,end:addMs(date,1)},allDay:!1},dateProfile,nextDayThreshold,{},context,...extraArgs)}_sliceBusinessHours(businessHours,dateProfile,nextDayThreshold,context,...extraArgs){return businessHours?this._sliceEventStore(expandRecurring(businessHours,computeActiveRange(dateProfile,!!nextDayThreshold),context),{},dateProfile,nextDayThreshold,...extraArgs).bg:[]}_sliceEventStore(eventStore,eventUiBases,dateProfile,nextDayThreshold,...extraArgs){if(eventStore){let rangeRes=sliceEventStore(eventStore,eventUiBases,computeActiveRange(dateProfile,!!nextDayThreshold),nextDayThreshold);return{bg:this.sliceEventRanges(rangeRes.bg,extraArgs),fg:this.sliceEventRanges(rangeRes.fg,extraArgs)}}return{bg:[],fg:[]}}_sliceInteraction(interaction,eventUiBases,dateProfile,nextDayThreshold,...extraArgs){if(!interaction)return null;let rangeRes=sliceEventStore(interaction.mutatedEvents,eventUiBases,computeActiveRange(dateProfile,!!nextDayThreshold),nextDayThreshold);return{segs:this.sliceEventRanges(rangeRes.fg,extraArgs),affectedInstances:interaction.affectedEvents.instances,isEvent:interaction.isEvent}}_sliceDateSpan(dateSpan,dateProfile,nextDayThreshold,eventUiBases,context,...extraArgs){if(!dateSpan)return[];let activeRange=computeActiveRange(dateProfile,!!nextDayThreshold),activeDateSpanRange=intersectRanges(dateSpan.range,activeRange);if(activeDateSpanRange){dateSpan={...dateSpan,range:activeDateSpanRange};let eventRange=fabricateEventRange(dateSpan,eventUiBases,context),segs=this.sliceRange(dateSpan.range,...extraArgs);for(let seg of segs)seg.eventRange=eventRange;return segs}return[]}sliceEventRanges(eventRanges,extraArgs){let segs=[];for(let eventRange of eventRanges)segs.push(...this.sliceEventRange(eventRange,extraArgs));return segs}sliceEventRange(eventRange,extraArgs){let dateRange=eventRange.range;this.forceDayIfListItem&&eventRange.ui.display==="list-item"&&(dateRange={start:dateRange.start,end:addDays3(dateRange.start,1)});let segs=this.sliceRange(dateRange,...extraArgs);for(let seg of segs)seg.eventRange=eventRange,seg.isStart=eventRange.isStart&&seg.isStart,seg.isEnd=eventRange.isEnd&&seg.isEnd;return segs}};function computeActiveRange(dateProfile,isComponentAllDay){let range=dateProfile.activeRange;return isComponentAllDay?range:{start:addMs(range.start,dateProfile.slotMinTime.milliseconds),end:addMs(range.end,dateProfile.slotMaxTime.milliseconds-864e5)}}var DayTableSlicer=class extends Slicer{constructor(){super(...arguments),this.forceDayIfListItem=!0}sliceRange(dateRange,dayTableModel){return dayTableModel.sliceRange(dateRange)}},firstSunday=new Date(2592e5);function buildDateRowConfigs(dates,datesRepDistinctDays,dateProfile,todayRange,dayHeaderFormat,context){let rowConfig=buildDateRowConfig(dates,datesRepDistinctDays,dateProfile,todayRange,dayHeaderFormat,context),majorUnit=computeMajorUnit(dateProfile,context.dateEnv);if(datesRepDistinctDays&&majorUnit!=="day")for(let dataConfig of rowConfig.dataConfigs)isMajorUnit(dataConfig.dateMarker,majorUnit,context.dateEnv)&&(dataConfig.renderProps.isMajor=!0);return[rowConfig]}function buildDateRowConfig(dateMarkers,datesRepDistinctDays,dateProfile,todayRange,dayHeaderFormat,context,colSpan,isMajorMod){return{isDateRow:!0,renderConfig:buildDateRenderConfig(dayHeaderFormat,datesRepDistinctDays,context),dataConfigs:buildDateDataConfigs(dateMarkers,datesRepDistinctDays,dateProfile,todayRange,dayHeaderFormat,context,colSpan,void 0,void 0,void 0,void 0,isMajorMod)}}function buildDateRenderConfig(dayHeaderFormat,datesRepDistinctDays,context){let{options}=context;return{generatorName:"dayHeaderContent",customGenerator:options.dayHeaderContent,classNameGenerator:options.dayHeaderClass,innerClassNameGenerator:options.dayHeaderInnerClass,didMount:options.dayHeaderDidMount,willUnmount:options.dayHeaderWillUnmount,align:options.dayHeaderAlign,sticky:options._dayHeaderSticky,dayHeaderFormat,datesRepDistinctDays}}var dowDates=[];for(let dow=0;dow<7;dow++)dowDates.push(addDays3(new Date(2592e5),dow));function buildDateDataConfigs(dateMarkers,datesRepDistinctDays,dateProfile,todayRange,dayHeaderFormat,context,colSpan=1,keyPrefix="",extraRenderProps={},extraAttrs={},className="",isMajorMod){let{dateEnv,viewApi,options}=context;return datesRepDistinctDays?dateMarkers.map((dateMarker,i)=>{let dateMeta=getDateMeta(dateMarker,dateEnv,dateProfile,todayRange),isMajor=isMajorMod!=null&&!(i%isMajorMod),hasNavLink=options.navLinks&&!dateMeta.isDisabled&&dateMarkers.length>1,renderProps={...dateMeta,...extraRenderProps,isMajor,isSticky:!1,inPopover:!1,hasNavLink,view:viewApi},fullDateStr=buildDateStr(context,dateMarker);return{key:keyPrefix+dateMarker.toUTCString(),dateMarker,renderProps,attrs:{"aria-label":fullDateStr,...dateMeta.isToday?{"aria-current":"date"}:{},"data-date":formatDayString(dateMarker),...extraAttrs},innerAttrs:hasNavLink?buildNavLinkAttrs(context,dateMarker,void 0,fullDateStr):{"aria-hidden":!0},colSpan,hasNavLink,className}}):dateMarkers.map((dateMarker,i)=>{let dow=dateMarker.getUTCDay(),normDate=addDays3(firstSunday,dow),dateMeta={date:dateEnv.toDate(dateMarker),dow,isDisabled:!1,isFuture:!1,isPast:!1,isToday:!1,isOther:!1},isMajor=isMajorMod!=null&&!(i%isMajorMod),renderProps={...dateMeta,date:dowDates[dow],isMajor,isSticky:!1,inPopover:!1,hasNavLink:!1,view:viewApi,...extraRenderProps},fullWeekDayStr=joinDateTimeFormatParts(dateEnv.formatToParts(normDate,WEEKDAY_ONLY_FORMAT));return{key:keyPrefix+String(dow),dateMarker,renderProps,attrs:{"aria-label":fullWeekDayStr,...extraAttrs},innerAttrs:{"aria-hidden":!0},colSpan,className}})}var RefMap=class{constructor(masterCallback,ignoreDeletes=!1){this.masterCallback=masterCallback,this.ignoreDeletes=ignoreDeletes,this.rev="",this.current=new Map,this.callbacks=new Map,this.handleValue=(val,key)=>{let{current,callbacks}=this;val===null?this.ignoreDeletes||(current.delete(key),callbacks.delete(key)):current.set(key,val),this.rev=guid(),this.masterCallback&&this.masterCallback(val,key)}}createRef(key){let refCallback=this.callbacks.get(key);return refCallback||(refCallback=val=>{this.handleValue(val,key)},this.callbacks.set(key,refCallback)),refCallback}},Ruler=class extends BaseComponent{constructor(){super(...arguments),this.elRef=(0,import_react6.createRef)()}render(){return(0,import_jsx_runtime4.jsx)("div",{ref:this.elRef})}componentDidMount(){this._isUnmounting=!1;let{props}=this,el=this.elRef.current;this.disconnectWidth=watchWidth(el,width=>{this._isUnmounting||setRef(props.widthRef,width)})}componentWillUnmount(){this._isUnmounting=!0,this.disconnectWidth();let{props}=this;props.widthRef&&setRef(props.widthRef,null)}};function getEventPartKey(seg){return getEventKey(seg)+":"+seg.start+(seg.standinFor?":standin":seg.isSlice?":slice":"")}function splitSegsByRow(segs,rowCount){let byRow=[];for(let row=0;row<rowCount;row++)byRow[row]=[];for(let seg of segs)byRow[seg.row].push(seg);return byRow}function splitInteractionByRow(ui,rowCount){let byRow=[];if(ui){for(let row=0;row<rowCount;row++)byRow[row]={affectedInstances:ui.affectedInstances,isEvent:ui.isEvent,segs:[]};for(let seg of ui.segs)byRow[seg.row].segs.push(seg)}else for(let row=0;row<rowCount;row++)byRow[row]=null;return byRow}function sliceSegForCol(seg,col){return{...seg,start:col,end:col+1,isStart:seg.isStart&&seg.start===col,isEnd:seg.isEnd&&seg.end-1===col,standinFor:seg}}var BgEvent=class extends BaseComponent{constructor(){super(...arguments),this.buildPublicEvent=memoize2((context,eventDef,eventInstance)=>new EventImpl(context,eventDef,eventInstance)),this.handleEl=el=>{this.el=el,el&&setElEventRange(el,this.props.eventRange)}}render(){let{props,context}=this,{eventRange}=props,{options}=context,eventUi=eventRange.ui,eventApi=this.buildPublicEvent(context,eventRange.def,eventRange.instance),subcontentRenderProps={event:eventApi,isNarrow:props.isNarrow||!1,isShort:props.isShort||!1},renderProps={event:eventApi,view:context.viewApi,timeText:"",color:eventUi.color||options.backgroundEventColor,contrastColor:eventUi.contrastColor,isDraggable:!1,isStartResizable:!1,isEndResizable:!1,isMirror:!1,isStart:props.isStart,isEnd:props.isEnd,isFirst:!1,isLast:!1,isPast:props.isPast,isFuture:props.isFuture,isToday:props.isToday,isSelected:!1,isDragging:!1,isResizing:!1,isInteractive:!1,level:0,isNarrow:props.isNarrow||!1,isShort:props.isShort||!1,timeClass:"",titleClass:generateClassName(options.backgroundEventTitleClass,subcontentRenderProps),options:{eventOverlap:!!options.eventOverlap}},outerClassName=joinClassNames(eventUi.className,classNames.fill,classNames.internalEvent,classNames.internalBgEvent,props.isVertical?classNames.flexCol:classNames.flexRow),innerClassName=joinClassNames(generateClassName(options.backgroundEventInnerClass,renderProps),classNames.liquid);return(0,import_jsx_runtime4.jsx)(ContentContainer,{tag:"div",className:outerClassName,style:{"--fc-event-color":renderProps.color,"--fc-event-contrast-color":renderProps.contrastColor},defaultGenerator:renderInnerContent2,elRef:this.handleEl,renderProps,generatorName:"backgroundEventContent",customGenerator:options.backgroundEventContent,classNameGenerator:options.backgroundEventClass,didMount:options.backgroundEventDidMount,willUnmount:options.backgroundEventWillUnmount,children:InnerContent=>(0,import_jsx_runtime4.jsx)(InnerContent,{tag:"div",className:innerClassName})})}componentDidUpdate(prevProps){this.el&&this.props.eventRange!==prevProps.eventRange&&setElEventRange(this.el,this.props.eventRange)}};function renderInnerContent2(props){let{title}=props.event;return title&&(0,import_jsx_runtime4.jsx)("div",{className:props.titleClass,children:props.event.title})}function renderFill(fillType,options){return(0,import_jsx_runtime4.jsx)("div",{className:joinClassNames(fillType==="non-business"?options.nonBusinessHoursClass:fillType==="highlight"?options.highlightClass:void 0,classNames.fill)})}var SPACE_FROM_VIEWPORT=10,ROW_BORDER_WIDTH=1,MorePopover=class extends DateComponent{constructor(){super(...arguments),this.getDateMeta=memoize2(getDateMeta),this.closeRef=(0,import_react6.createRef)(),this.focusStartRef=(0,import_react6.createRef)(),this.focusEndRef=(0,import_react6.createRef)(),this.handleRootEl=rootEl=>{this.rootEl=rootEl,rootEl?this.context.registerInteractiveComponent(this,{el:rootEl,useEventCenter:!1}):this.context.unregisterInteractiveComponent(this)},this.handleDocumentMouseDown=ev=>{let target=getEventTargetViaRoot(ev);this.rootEl.contains(target)||this.handleClose()},this.handleDocumentKeyDown=ev=>{ev.key==="Escape"&&this.handleClose()},this.handleClose=()=>{let{onClose}=this.props;onClose&&onClose()}}render(){let{props,context}=this,{options,dateEnv,viewApi}=context,{startDate,todayRange,dateProfile}=props,dateMeta=this.getDateMeta(startDate,dateEnv,dateProfile,todayRange),textParts=dateEnv.formatToParts(startDate,options.popoverFormat),text=joinDateTimeFormatParts(textParts),dayHeaderRenderProps={...dateMeta,isMajor:!1,isNarrow:!1,isSticky:!1,inPopover:!0,level:0,hasNavLink:!1,text,textParts,get weekdayText(){return findWeekdayText(textParts)},get dayNumberText(){return findDayNumberText(textParts)},view:viewApi},dayCellRenderProps={...dateMeta,isMajor:!1,isNarrow:!1,inPopover:!0,hasNavLink:!1,get weekdayText(){return findWeekdayText(textParts)},get dayNumberText(){return findDayNumberText(textParts)},get monthText(){return findMonthText(textParts)},view:viewApi,text:"",textParts:[],options:{businessHours:!!options.businessHours}},fullDateStr=formatDayString(startDate),{dayHeaderAlign}=options,align=typeof dayHeaderAlign=="function"?dayHeaderAlign({level:0,inPopover:!0,isNarrow:!1}):dayHeaderAlign,isRtl=computeElIsRtl(props.alignEl);return(0,import_react_dom4.createPortal)((0,import_jsx_runtime4.jsxs)("div",{"data-date":fullDateStr,id:props.id,role:"dialog","aria-labelledby":props.titleId,className:joinClassNames(options.popoverClass,classNames.flexCol,classNames.popoverZ,classNames.abs,classNames.borderBoxRoot,classNames.internalPopover),style:{top:0,left:0},dir:isRtl?"rtl":void 0,"data-color-scheme":options.colorScheme||void 0,ref:this.handleRootEl,children:[(0,import_jsx_runtime4.jsx)("div",{tabIndex:0,style:{outline:"none"},ref:this.focusStartRef}),(0,import_jsx_runtime4.jsxs)("div",{className:joinClassNames(generateClassName(options.dayHeaderClass,dayHeaderRenderProps),classNames.flexCol,classNames.borderOnlyB,align==="center"?classNames.alignCenter:align==="end"?classNames.alignEnd:classNames.alignStart),children:[(0,import_jsx_runtime4.jsx)("div",{children:(0,import_jsx_runtime4.jsx)(ContentContainer,{tag:"div",attrs:{id:props.titleId},generatorName:"dayHeaderContent",renderProps:dayHeaderRenderProps,customGenerator:options.dayHeaderContent,defaultGenerator:renderText2,classNameGenerator:options.dayHeaderInnerClass,didMount:options.dayHeaderDidMount,willUnmount:options.dayHeaderWillUnmount})}),(0,import_jsx_runtime4.jsx)(ContentContainer,{tag:"button",attrs:{"aria-label":options.closeHint,...createAriaClickAttrs(this.handleClose)},elRef:this.closeRef,className:joinClassNames(options.popoverCloseClass,classNames.flexRow,classNames.cursorPointer),renderProps:{},customGenerator:options.popoverCloseContent,generatorName:"popoverCloseContent"})]}),(0,import_jsx_runtime4.jsx)("div",{className:joinClassNames(generateClassName(options.dayCellClass,dayCellRenderProps),classNames.flexCol,classNames.borderNone),children:(0,import_jsx_runtime4.jsx)("div",{className:generateClassName(options.dayCellInnerClass,dayCellRenderProps),children:props.children})}),(0,import_jsx_runtime4.jsx)("div",{tabIndex:0,style:{outline:"none"},ref:this.focusEndRef})]}),getAppendableRoot(props.alignEl))}queryHit(isRtl,positionLeft,positionTop,elWidth,elHeight){let{rootEl,props}=this;return positionLeft>=0&&positionLeft<elWidth&&positionTop>=0&&positionTop<elHeight?{dateProfile:props.dateProfile,dateSpan:{allDay:!props.forceTimed,range:{start:props.startDate,end:props.endDate},...props.dateSpanProps},getDayEl:()=>rootEl,rect:{left:0,top:0,right:elWidth,bottom:elHeight},layer:1}:null}componentDidMount(){document.addEventListener("mousedown",this.handleDocumentMouseDown),document.addEventListener("keydown",this.handleDocumentKeyDown),this.focusStartRef.current.addEventListener("focus",this.handleClose),this.focusEndRef.current.addEventListener("focus",this.handleClose),this.closeRef.current.focus({preventScroll:!0}),this.updateSize()}componentWillUnmount(){document.removeEventListener("mousedown",this.handleDocumentMouseDown),document.removeEventListener("keydown",this.handleDocumentKeyDown),this.focusStartRef.current.removeEventListener("focus",this.handleClose),this.focusEndRef.current.removeEventListener("focus",this.handleClose)}updateSize(){let{alignEl,alignParentTop}=this.props,{rootEl:popoverEl}=this,isRtl=computeElIsRtl(alignEl),alignmentRect=computeClippedClientRect(alignEl);if(alignmentRect){let popoverDims=popoverEl.getBoundingClientRect(),popoverVPTop=alignParentTop?alignEl.closest(alignParentTop).getBoundingClientRect().top-ROW_BORDER_WIDTH:alignmentRect.top,popoverVPLeft=isRtl?alignmentRect.right-popoverDims.width:alignmentRect.left;popoverVPTop=Math.max(popoverVPTop,SPACE_FROM_VIEWPORT),popoverVPLeft=Math.min(popoverVPLeft,document.documentElement.clientWidth-SPACE_FROM_VIEWPORT-popoverDims.width),popoverVPLeft=Math.max(popoverVPLeft,SPACE_FROM_VIEWPORT);let{offsetParent}=popoverEl,top,left;if(!offsetParent||offsetParent===document.body)top=popoverVPTop+window.scrollY,left=popoverVPLeft+window.scrollX;else{let offsetParentRect=offsetParent.getBoundingClientRect();top=popoverVPTop-offsetParentRect.top+offsetParent.scrollTop,left=popoverVPLeft-offsetParentRect.left+offsetParent.scrollLeft}applyStyle(popoverEl,{top,left})}}};function renderText2(renderProps){return renderProps.text}function doCoordRangesIntersect(r0,r1){return r0.end>r1.start&&r0.start<r1.end}function intersectCoordRanges(r0,r1){let start=Math.max(r0.start,r1.start),end=Math.min(r0.end,r1.end);if(start<end)return{start,end,isStart:r0.isStart&&start===r0.start,isEnd:r0.isEnd&&end===r0.end}}function joinCoordRanges(r0,r1){return{start:Math.min(r0.start,r1.start),end:Math.max(r0.end,r1.end)}}function getCoordRangeEnd(r2){return r2.end}function computeEarliestStart(segs){return segs.reduce(pickEarliestStart).eventRange.range.start}function computeLatestEnd(segs){return segs.reduce(pickLatestEnd).eventRange.range.end}function pickEarliestStart(r0,r1){return r0.eventRange.range.start<r1.eventRange.range.start?r0:r1}function pickLatestEnd(r0,r1){return r0.eventRange.range.end>r1.eventRange.range.end?r0:r1}var MoreLinkContainer=class extends BaseComponent{constructor(){super(...arguments),this.state={isPopoverOpen:!1},this.handleLinkEl=linkEl=>{this.linkEl=linkEl,this.props.elRef&&setRef(this.props.elRef,linkEl)},this.handleClick=ev=>{let{props,context}=this,{dateEnv,options}=context,{moreLinkClick}=options,date=computeRange(props).start;function buildPublicSeg(seg){let{def,instance,range}=seg.eventRange;return{event:new EventImpl(context,def,instance),start:dateEnv.toDate(range.start),end:dateEnv.toDate(range.end),isStart:seg.isStart,isEnd:seg.isEnd}}typeof moreLinkClick=="function"&&(moreLinkClick=moreLinkClick({date:dateEnv.toDate(date),allDay:!!props.allDayDate,allSegs:props.segs.map(buildPublicSeg),hiddenSegs:props.hiddenSegs.map(buildPublicSeg),jsEvent:ev,view:context.viewApi})),!moreLinkClick||moreLinkClick==="popover"?this.setState({isPopoverOpen:!0}):typeof moreLinkClick=="string"&&context.calendarApi.zoomTo(date,moreLinkClick)},this.handlePopoverClose=()=>{this.linkEl&&this.linkEl.focus(),this.setState({isPopoverOpen:!1})}}render(){let{props,state}=this;return(0,import_jsx_runtime4.jsx)(ViewContextType.Consumer,{children:context=>{let{viewApi,options,calendarApi,baseId}=context,{moreLinkText}=options,moreCnt=props.hiddenSegs.length,range=computeRange(props),popoverId=baseId+"popover-"+range.start.toISOString(),numericText=`+${moreCnt}`,longText=typeof moreLinkText=="function"?moreLinkText.call(calendarApi,moreCnt):`${numericText} ${moreLinkText}`,hint=formatWithOrdinals(options.moreLinkHint,[moreCnt],longText),renderProps={num:moreCnt,numericText,longText,text:props.isMicro||props.display==="column"?numericText:longText,isNarrow:props.isNarrow,view:viewApi};return(0,import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment,{children:[!!moreCnt&&(0,import_jsx_runtime4.jsx)(ContentContainer,{tag:"div",elRef:this.handleLinkEl,className:joinClassNames(generateClassName(props.display==="row"?options.rowMoreLinkClass:options.columnMoreLinkClass,renderProps),props.className,props.display==="row"?classNames.flexRow:classNames.flexCol,classNames.internalMoreLink,classNames.cursorPointer),style:props.style,attrs:{...props.attrs,...createAriaClickAttrs(this.handleClick),title:hint,role:"button","aria-haspopup":"dialog","aria-expanded":state.isPopoverOpen,"aria-controls":state.isPopoverOpen?popoverId:void 0},renderProps,generatorName:"moreLinkContent",customGenerator:options.moreLinkContent,defaultGenerator:renderMoreLinkText,classNameGenerator:options.moreLinkClass,didMount:options.moreLinkDidMount,willUnmount:options.moreLinkWillUnmount,children:InnerContent=>(0,import_jsx_runtime4.jsx)(InnerContent,{tag:"div",className:joinClassNames(generateClassName(options.moreLinkInnerClass,renderProps),generateClassName(props.display==="row"?options.rowMoreLinkInnerClass:options.columnMoreLinkInnerClass,renderProps),props.display==="row"?classNames.stickyS:classNames.stickyT)})}),state.isPopoverOpen&&(0,import_jsx_runtime4.jsx)(MorePopover,{id:popoverId,titleId:popoverId+"-title",startDate:range.start,endDate:range.end,dateProfile:props.dateProfile,todayRange:props.todayRange,dateSpanProps:props.dateSpanProps,alignEl:props.alignElRef?props.alignElRef.current:this.linkEl,alignParentTop:props.alignParentTop,forceTimed:props.forceTimed,onClose:this.handlePopoverClose,children:props.popoverContent()})]})}})}};function renderMoreLinkText(props){return props.text}function computeRange(props){return props.allDayDate?{start:props.allDayDate,end:addDays3(props.allDayDate,1)}:{start:computeEarliestStart(props.hiddenSegs),end:computeLatestEnd(props.hiddenSegs)}}var DEFAULT_TABLE_EVENT_TIME_FORMAT=createFormatter({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"narrow"});function hasListItemDisplay(seg){let{display}=seg.eventRange.ui;return display==="list-item"||display==="auto"&&!seg.eventRange.def.allDay&&seg.end-seg.start===1&&seg.isStart&&seg.isEnd}var DayGridMoreLink=class extends BaseComponent{render(){let{props}=this;return(0,import_jsx_runtime4.jsx)(MoreLinkContainer,{display:"row",className:props.className,isNarrow:props.isNarrow,isMicro:props.isMicro,dateProfile:props.dateProfile,todayRange:props.todayRange,allDayDate:props.allDayDate,segs:props.segs,hiddenSegs:props.hiddenSegs,alignElRef:props.alignElRef,alignParentTop:props.alignParentTop,dateSpanProps:props.dateSpanProps,popoverContent:()=>(0,import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment,{children:props.segs.map(seg=>{let{eventRange}=seg,{instanceId}=eventRange.instance,isDragging=!!(props.eventDrag&&props.eventDrag.affectedInstances[instanceId]),isResizing=!!(props.eventResize&&props.eventResize.affectedInstances[instanceId]);return(0,import_jsx_runtime4.jsx)("div",{style:{visibility:isDragging||isResizing?"hidden":void 0},children:(0,import_jsx_runtime4.jsx)(StandardEvent,{display:hasListItemDisplay(seg)?"list-item":"row",eventRange,isStart:seg.isStart,isEnd:seg.isEnd,isDragging,isResizing,isMirror:!1,isSelected:instanceId===props.eventSelection,defaultTimeFormat:DEFAULT_TABLE_EVENT_TIME_FORMAT,defaultDisplayEventEnd:!1,...getEventRangeMeta(eventRange,props.todayRange)})},instanceId)})})})}},DayGridCell=class extends DateComponent{constructor(){super(...arguments),this.getDateMeta=memoize2(getDateMeta),this.refineRenderProps=memoizeObjArg(refineRenderProps2),this.rootElRef=(0,import_react6.createRef)(),this.handleBodyEl=bodyEl=>{this.disconnectBodyHeight&&(this.disconnectBodyHeight(),this.disconnectBodyHeight=void 0,setRef(this.props.headerHeightRef,null),setRef(this.props.mainHeightRef,null)),bodyEl&&(this.disconnectBodyHeight=watchSize(bodyEl,(_bodyWidth,bodyHeight)=>{if(this._isUnmounting)return;let{props}=this,mainRect=bodyEl.getBoundingClientRect(),rootRect=this.rootElRef.current.getBoundingClientRect(),headerHeight=mainRect.top-rootRect.top;isDimsEqual(this.headerHeight,headerHeight)||(this.headerHeight=headerHeight,setRef(props.headerHeightRef,headerHeight)),props.fgLiquidHeight&&setRef(props.mainHeightRef,bodyHeight)}))}}render(){let{props,context}=this,{options,dateEnv}=context,isMonthStart=props.showDayNumber&&shouldDisplayMonthStart(props.date,props.dateProfile.currentRange,dateEnv),dateMeta=this.getDateMeta(props.date,dateEnv,props.dateProfile,props.todayRange),baseClassName=joinClassNames(props.borderStart?classNames.borderOnlyS:classNames.borderNone,props.width!=null?"":classNames.liquid,classNames.flexCol,classNames.noMargin,classNames.noPadding),hasNavLink=options.navLinks,renderProps=this.refineRenderProps({date:props.date,isMajor:props.isMajor,isNarrow:props.isNarrow,dateMeta,hasLabel:props.showDayNumber,hasMonthLabel:isMonthStart,hasNavLink,renderProps:props.renderProps,viewApi:context.viewApi,dateEnv:context.dateEnv,monthStartFormat:options.monthStartFormat,dayCellFormat:options.dayCellFormat,businessHours:!!options.businessHours});if(dateMeta.isDisabled)return(0,import_jsx_runtime4.jsx)("div",{role:"gridcell","aria-disabled":!0,className:joinClassNames(generateClassName(options.dayCellClass,renderProps),props.className,baseClassName),style:{width:props.width}});let fullDateStr=buildDateStr(context,props.date);return(0,import_jsx_runtime4.jsx)(ContentContainer,{tag:"div",elRef:this.rootElRef,className:joinClassNames(props.className,baseClassName),attrs:{...props.attrs,role:"gridcell","aria-label":fullDateStr,...renderProps.isToday?{"aria-current":"date"}:{},"data-date":formatDayString(props.date)},style:{width:props.width},renderProps,generatorName:"dayCellTopContent",customGenerator:options.dayCellTopContent,defaultGenerator:renderTopInner,classNameGenerator:options.dayCellClass,didMount:options.dayCellDidMount,willUnmount:options.dayCellWillUnmount,children:InnerContent=>(0,import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment,{children:[(0,import_jsx_runtime4.jsx)("div",{className:joinClassNames(classNames.rel,generateClassName(options.dayCellTopClass,renderProps)),children:props.showDayNumber&&(0,import_jsx_runtime4.jsx)(InnerContent,{tag:"div",attrs:hasNavLink?buildNavLinkAttrs(context,props.date,void 0,fullDateStr):{"aria-hidden":!0},className:generateClassName(options.dayCellTopInnerClass,renderProps)})}),(0,import_jsx_runtime4.jsxs)("div",{className:joinClassNames(classNames.flexCol,props.fgLiquidHeight?classNames.liquid:classNames.grow),ref:this.handleBodyEl,children:[(0,import_jsx_runtime4.jsx)("div",{className:generateClassName(options.dayCellInnerClass,renderProps),style:{minHeight:props.fgHeight},children:props.fg}),(0,import_jsx_runtime4.jsx)(DayGridMoreLink,{className:classNames.rel,allDayDate:props.date,segs:props.segs,hiddenSegs:props.hiddenSegs,alignElRef:this.rootElRef,alignParentTop:props.showDayNumber?"[role=row]":`.${classNames.internalView}`,dateSpanProps:props.dateSpanProps,dateProfile:props.dateProfile,eventSelection:props.eventSelection,eventDrag:props.eventDrag,eventResize:props.eventResize,todayRange:props.todayRange,isNarrow:props.isNarrow,isMicro:props.isMicro})]}),(0,import_jsx_runtime4.jsx)("div",{className:joinClassNames(classNames.rel,generateClassName(options.dayCellBottomClass,renderProps))})]})})}componentDidMount(){this._isUnmounting=!1}componentWillUnmount(){this._isUnmounting=!0}};function renderTopInner(props){return props.text||(0,import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment,{children:"\xA0"})}function shouldDisplayMonthStart(date,currentRange,dateEnv){let{start:currentStart,end:currentEnd}=currentRange,currentEndIncl=addMs(currentEnd,-1),currentFirstYear=dateEnv.getYear(currentStart),currentFirstMonth=dateEnv.getMonth(currentStart),currentLastYear=dateEnv.getYear(currentEndIncl),currentLastMonth=dateEnv.getMonth(currentEndIncl);return!(currentFirstYear===currentLastYear&¤tFirstMonth===currentLastMonth)&&(date.valueOf()===currentStart.valueOf()||dateEnv.getDay(date)===1&&date.valueOf()<currentEnd.valueOf())}function refineRenderProps2(raw){let{date,dateEnv,hasLabel,hasMonthLabel,hasNavLink,businessHours}=raw,textParts=[],text="";return hasLabel&&(textParts=dateEnv.formatToParts(date,hasMonthLabel?raw.monthStartFormat:raw.dayCellFormat),text=joinDateTimeFormatParts(textParts)),{...raw.dateMeta,...raw.renderProps,text,textParts,isMajor:raw.isMajor,isNarrow:raw.isNarrow,inPopover:!1,hasNavLink,get weekdayText(){return findWeekdayText(textParts)},get dayNumberText(){return findDayNumberText(textParts)},get monthText(){return findMonthText(textParts)},options:{businessHours},view:raw.viewApi}}var SegHierarchy=class{constructor(segs,getSegThickness=seg=>1,strictOrder=!1,maxCoord,maxDepth,hiddenConsumes=!1,allowSlicing=!1){this.getSegThickness=getSegThickness,this.strictOrder=strictOrder,this.maxCoord=maxCoord,this.maxDepth=maxDepth,this.hiddenConsumes=hiddenConsumes,this.allowSlicing=allowSlicing,this.placementsByLevel=[],this.levelCoords=[],this.hiddenSegs=[];for(let seg of segs)this.insertSeg(seg,this.getSegThickness(seg))}insertSeg(seg,segThickness,isSlice){if(segThickness!=null){let insertion=this.findInsertion(seg,segThickness);if(this.isInsertionValid(insertion,segThickness))this.insertSegAt(seg,insertion,segThickness,isSlice);else{let{touchingPlacement}=insertion;if(touchingPlacement){if(this.hiddenConsumes&&!touchingPlacement.isZombie&&(touchingPlacement.isZombie=!0,this.hiddenSegs.push(touchingPlacement),this.allowSlicing)){let newSeg=Object.assign({},touchingPlacement);Object.assign(touchingPlacement,intersectCoordRanges(touchingPlacement,seg)),touchingPlacement.isSlice=!0,this.splitSeg(newSeg,touchingPlacement.thickness,touchingPlacement)}this.allowSlicing?(this.hiddenSegs.push({...seg,...intersectCoordRanges(seg,touchingPlacement)}),this.splitSeg(seg,segThickness,touchingPlacement)):this.hiddenSegs.push(seg)}else this.hiddenSegs.push(seg)}}}isInsertionValid(insertion,thickness){return(this.maxCoord==null||insertion.levelCoord+thickness<=this.maxCoord)&&(this.maxDepth==null||insertion.depth<this.maxDepth)}splitSeg(seg,segThickness,barrier){seg.start<barrier.start&&this.insertSeg({...seg,end:barrier.start,isEnd:!1},segThickness,!0),seg.end>barrier.end&&this.insertSeg({...seg,start:barrier.end,isStart:!1},segThickness,!0)}insertSegAt(seg,insertion,segThickness,isSlice){let placement={...seg,thickness:segThickness,depth:insertion.depth,isSlice:isSlice||seg.isSlice||!1,isZombie:!1};insertion.lateralIndex===-1?(insertAt(this.placementsByLevel,insertion.levelIndex,[placement]),insertAt(this.levelCoords,insertion.levelIndex,insertion.levelCoord)):insertAt(this.placementsByLevel[insertion.levelIndex],insertion.lateralIndex,placement)}findInsertion(seg,segThickness){let{placementsByLevel,levelCoords}=this,levelCnt=placementsByLevel.length,candidateCoord=0,touchingPlacement,touchingLevelIndex,depth=0;for(let currentLevelIndex=0;currentLevelIndex<levelCnt;currentLevelIndex+=1){let currentLevelCoord=levelCoords[currentLevelIndex];if(!this.strictOrder&¤tLevelCoord>=candidateCoord+segThickness)break;let currentLevelSegs=placementsByLevel[currentLevelIndex],currentSeg,[searchIndex,isExact]=binarySearch(currentLevelSegs,seg.start,getCoordRangeEnd),lateralIndex=searchIndex+isExact;for(;(currentSeg=currentLevelSegs[lateralIndex])&¤tSeg.start<seg.end;){let currentEntryBottom=currentLevelCoord+currentSeg.thickness;currentEntryBottom>candidateCoord&&(candidateCoord=currentEntryBottom,touchingPlacement=currentSeg,touchingLevelIndex=currentLevelIndex),currentEntryBottom===candidateCoord&&(depth=Math.max(depth,currentSeg.depth+1)),lateralIndex+=1}}let destLevelIndex=0;if(touchingPlacement)for(destLevelIndex=touchingLevelIndex+1;destLevelIndex<levelCnt&&levelCoords[destLevelIndex]<candidateCoord;)destLevelIndex+=1;let destLateralIndex=-1;return destLevelIndex<levelCnt&&levelCoords[destLevelIndex]===candidateCoord&&([destLateralIndex]=binarySearch(placementsByLevel[destLevelIndex],seg.end,getCoordRangeEnd)),{touchingPlacement,levelCoord:candidateCoord,levelIndex:destLevelIndex,lateralIndex:destLateralIndex,depth}}traverseSegs(handler){let{placementsByLevel,levelCoords}=this;for(let i=0;i<placementsByLevel.length;i++){let placements=placementsByLevel[i],levelCoord=levelCoords[i];for(let placement of placements)placement.isZombie||handler(placement,levelCoord)}}};function groupIntersectingSegs(segs){let mergedGroups=[];for(let seg of segs){let filteredGroups=[],hungryGroup={segs:[seg],start:seg.start,end:seg.end};for(let mergedGroup of mergedGroups)doCoordRangesIntersect(mergedGroup,hungryGroup)?hungryGroup={...joinCoordRanges(mergedGroup,hungryGroup),segs:mergedGroup.segs.concat(hungryGroup.segs)}:filteredGroups.push(mergedGroup);filteredGroups.push(hungryGroup),mergedGroups=filteredGroups}return mergedGroups.map(mergedGroup=>({key:buildIsoString(computeEarliestStart(mergedGroup.segs)),...mergedGroup}))}function insertAt(arr,index2,item){arr.splice(index2,0,item)}function binarySearch(a,searchVal,getItemVal){let startIndex=0,endIndex=a.length;if(!endIndex||searchVal<getItemVal(a[startIndex]))return[0,0];if(searchVal>getItemVal(a[endIndex-1]))return[endIndex,0];for(;startIndex<endIndex;){let middleIndex=Math.floor(startIndex+(endIndex-startIndex)/2),middleVal=getItemVal(a[middleIndex]);if(searchVal<middleVal)endIndex=middleIndex;else if(searchVal>middleVal)startIndex=middleIndex+1;else return[middleIndex,1]}return[startIndex,0]}function computeFgSegVerticals(segs,segHeightMap,cells,maxHeight,strictOrder,allowSlicing=!0,dayMaxEvents,dayMaxEventRows){let maxCoord,maxDepth,hiddenConsumes;dayMaxEvents===!0||dayMaxEventRows===!0?(maxCoord=maxHeight,hiddenConsumes=!0):typeof dayMaxEvents=="number"?(maxDepth=dayMaxEvents,hiddenConsumes=!1):typeof dayMaxEventRows=="number"&&(maxDepth=dayMaxEventRows,hiddenConsumes=!0);let visibleSegMap=new Map,hiddenSegMap=new Map,segTops=new Map,isSlicedMap=new Map,hierarchy=new SegHierarchy(segs,seg=>segHeightMap.get(getEventPartKey(seg)),strictOrder,maxCoord,maxDepth,hiddenConsumes,allowSlicing);hierarchy.traverseSegs((seg,segTop)=>{addToSegMap(visibleSegMap,seg),segTops.set(getEventPartKey(seg),segTop),seg.isSlice&&isSlicedMap.set(seg.eventRange,!0)});for(let hiddenSeg of hierarchy.hiddenSegs)addToSegMap(hiddenSegMap,hiddenSeg);if(isSlicedMap.size){segTops.clear(),hierarchy=new SegHierarchy(compileSegMap(segs,visibleSegMap),seg=>segHeightMap.get(getEventPartKey(seg)),strictOrder,maxCoord,maxDepth,hiddenConsumes),hierarchy.traverseSegs((seg,segTop)=>{segTops.set(getEventPartKey(seg),segTop)});for(let hiddenSeg of hierarchy.hiddenSegs)addToSegMap(hiddenSegMap,hiddenSeg)}let segsByCol=[],hiddenSegsByCol=[],renderableSegsByCol=[],heightsByCol=[];for(let col=0;col<cells.length;col++)segsByCol.push([]),hiddenSegsByCol.push([]),renderableSegsByCol.push([]),heightsByCol.push(0);for(let seg of segs){let{eventRange}=seg,visibleSegs=visibleSegMap.get(eventRange)||[],hiddenSegs=hiddenSegMap.get(eventRange)||[],isSliced=isSlicedMap.get(eventRange)||!1;if(renderableSegsByCol[seg.start].push(seg),isSliced)for(let visibleSeg of visibleSegs)renderableSegsByCol[visibleSeg.start].push(visibleSeg);for(let visibleSeg of visibleSegs){for(let col=visibleSeg.start;col<visibleSeg.end;col++){let slice=sliceSegForCol(visibleSeg,col);segsByCol[col].push(slice)}let segKey=getEventPartKey(visibleSeg),segTop=segTops.get(segKey);if(segTop!=null){let segHeight=segHeightMap.get(segKey);for(let col=visibleSeg.start;col<visibleSeg.end;col++)heightsByCol[col]=Math.max(heightsByCol[col],segTop+segHeight)}}for(let hiddenSeg of hiddenSegs)for(let col=hiddenSeg.start;col<hiddenSeg.end;col++){let slice=sliceSegForCol(hiddenSeg,col);segsByCol[col].push(slice),hiddenSegsByCol[col].push(slice)}}return[segsByCol,hiddenSegsByCol,renderableSegsByCol,segTops,heightsByCol]}function addToSegMap(map,seg){let list=map.get(seg.eventRange);list||map.set(seg.eventRange,list=[]),list.push(seg)}function compileSegMap(segs,segMap){let res=[];for(let seg of segs)res.push(...segMap.get(seg.eventRange)||[]);return res}var DaySeriesModel=class{constructor(range,dateProfileGenerator){let date=range.start,{end}=range,indices=[],dates=[],dayIndex=-1;for(;date<end;)dateProfileGenerator.isHiddenDay(date)?indices.push(dayIndex+.5):(dayIndex+=1,indices.push(dayIndex),dates.push(date)),date=addDays3(date,1);this.dates=dates,this.indices=indices,this.cnt=dates.length}sliceRange(range){let firstIndex=this.getDateDayIndex(range.start),lastIndex=this.getDateDayIndex(addDays3(range.end,-1)),clippedFirstIndex=Math.max(0,firstIndex),clippedLastIndex=Math.min(this.cnt-1,lastIndex);return clippedFirstIndex=Math.ceil(clippedFirstIndex),clippedLastIndex=Math.floor(clippedLastIndex),clippedFirstIndex<=clippedLastIndex?{start:clippedFirstIndex,end:clippedLastIndex+1,isStart:firstIndex===clippedFirstIndex,isEnd:lastIndex===clippedLastIndex}:null}getDateDayIndex(date){let{indices}=this,dayOffset=Math.floor(diffDays4(this.dates[0],date));return dayOffset<0?indices[0]-1:dayOffset>=indices.length?indices[indices.length-1]+1:indices[dayOffset]}},DayTableModel=class{constructor(daySeries,breakOnWeeks,dateEnv,majorUnit=""){this.dateEnv=dateEnv,this.majorUnit=majorUnit;let{dates}=daySeries,daysPerRow,firstDay,rowCount;if(breakOnWeeks){for(firstDay=dates[0].getUTCDay(),daysPerRow=1;daysPerRow<dates.length&&dates[daysPerRow].getUTCDay()!==firstDay;daysPerRow+=1);rowCount=Math.ceil(dates.length/daysPerRow)}else rowCount=1,daysPerRow=dates.length;this.rowCount=rowCount,this.colCount=daysPerRow,this.daySeries=daySeries,this.cellRows=this.buildCells(),this.headerDates=this.buildHeaderDates()}buildCells(){let rows=[];for(let row=0;row<this.rowCount;row+=1){let cells=[];for(let col=0;col<this.colCount;col+=1)cells.push(this.buildCell(row,col));rows.push(cells)}return rows}buildCell(row,col){let date=this.daySeries.dates[row*this.colCount+col];return{key:date.toISOString(),date,isMajor:this.cellIsMajor(date)}}cellIsMajor(dateMarker){return this.majorUnit?isMajorUnit(dateMarker,this.majorUnit,this.dateEnv):!1}buildHeaderDates(){let dates=[];for(let col=0;col<this.colCount;col+=1)dates.push(this.cellRows[0][col].date);return dates}sliceRange(range){let{colCount}=this,seriesSeg=this.daySeries.sliceRange(range),segs=[];if(seriesSeg){let{start,end}=seriesSeg,index2=start;for(;index2<end;){let row=Math.floor(index2/colCount),nextIndex=Math.min((row+1)*colCount,end);segs.push({row,start:index2%colCount,end:(nextIndex-1)%colCount+1,isStart:seriesSeg.isStart&&index2===start,isEnd:seriesSeg.isEnd&&nextIndex===end}),index2=nextIndex}}return segs}};function buildDayTableModel(dateProfile,dateProfileGenerator,dateEnv){let daySeries=new DaySeriesModel(dateProfile.renderRange,dateProfileGenerator),breakOnWeeks=/year|month|week/.test(dateProfile.currentRangeUnit),majorUnit=!breakOnWeeks&&computeMajorUnit(dateProfile,dateEnv);return new DayTableModel(daySeries,breakOnWeeks,dateEnv,majorUnit!=="day"?majorUnit:void 0)}function computeColWidth(colCount,colMinWidth,viewportWidth){return viewportWidth==null?[void 0,void 0]:viewportWidth/colCount<colMinWidth?[colMinWidth*colCount,colMinWidth]:[viewportWidth,void 0]}function computeTopFromDate(date,cellRows,rowHeightMap){let top=0;for(let cells of cellRows){let key=cells[0].key,start=cells[0].date,end=cells[cells.length-1].date;if(date>=start&&date<=end)return top;let rowHeight=rowHeightMap.get(key);if(rowHeight==null)return;top+=rowHeight}return top}function computeHorizontalsFromSeg(seg,colWidth,colCount){let fromStart,fromEnd;if(colWidth!=null)fromStart=seg.start*colWidth,fromEnd=(colCount-seg.end)*colWidth;else{let colWidthFrac=1/colCount;fromStart=fracToCssDim(seg.start*colWidthFrac),fromEnd=fracToCssDim(1-seg.end*colWidthFrac)}return{insetInlineStart:fromStart,insetInlineEnd:fromEnd}}function computeColFromPosition(positionLeft,elWidth,colWidth,colCount,isRtl){let realColWidth=colWidth??elWidth/colCount,colFromLeft=Math.floor(positionLeft/realColWidth),col=isRtl?colCount-colFromLeft-1:colFromLeft,left=colFromLeft*realColWidth,right=left+realColWidth;return{col,left,right}}function computeRowFromPosition(positionTop,cellRows,rowHeightMap){let row=0,top=0,bottom=0;for(let cells of cellRows){let key=cells[0].key;if(top=bottom,bottom=top+rowHeightMap.get(key),positionTop<bottom)break;row++}return{row,top,bottom}}function getRowEl(rootEl,row){return rootEl.querySelectorAll("[role=row]")[row]}function getCellEl(rowEl,col){return rowEl.querySelectorAll("[role=gridcell]")[col]}var dayMicroWidth=60,dayHeaderMicroFormat=createFormatter({weekday:"narrow"});function createDayHeaderFormatter(explicitFormat,datesRepDistinctDays,dateCnt){return explicitFormat||computeFallbackHeaderFormat(datesRepDistinctDays,dateCnt)}function computeFallbackHeaderFormat(datesRepDistinctDays,dayCnt){return datesRepDistinctDays?dayCnt>1?createFormatter({weekday:"short",weekdayJustify:"start",day:"numeric",omitCommas:!0,omitTrailing:!0}):createFormatter({weekday:"long",weekdayJustify:"start",day:"numeric",omitCommas:!0,omitTrailing:!0}):createFormatter({weekday:"short"})}var DayGridEventHarness=class extends import_react6.Component{constructor(){super(...arguments),this.rootElRef=(0,import_react6.createRef)()}render(){let{props}=this;return(0,import_jsx_runtime4.jsx)("div",{className:joinClassNames(props.className,classNames.abs),style:props.style,ref:this.rootElRef,children:props.children})}componentDidMount(){this._isUnmounting=!1;let rootEl=this.rootElRef.current;this.disconnectHeight=watchHeight(rootEl,height=>{this._isUnmounting||setRef(this.props.heightRef,height)})}componentWillUnmount(){this._isUnmounting=!0,this.disconnectHeight(),setRef(this.props.heightRef,null)}},DEFAULT_WEEK_NUM_FORMAT=createFormatter({week:"narrow"}),DayGridRow=class extends BaseComponent{constructor(){super(...arguments),this.headerHeightRefMap=new RefMap(()=>{afterSize(this.handleSegPositioning)}),this.mainHeightRefMap=new RefMap(()=>{(this.props.dayMaxEvents===!0||this.props.dayMaxEventRows===!0)&&afterSize(this.handleSegPositioning)}),this.segHeightRefMap=new RefMap(()=>{afterSize(this.handleSegPositioning)}),this.buildWeekNumberRenderProps=memoize2(buildWeekNumberRenderProps),this.handleRootEl=rootEl=>{this.rootEl=rootEl,setRef(this.props.rootElRef,rootEl)},this.handleSegPositioning=()=>{this._isUnmounting||this.forceUpdate()}}render(){let{props,context,headerHeightRefMap,mainHeightRefMap}=this,{cells}=props,{options}=context,weekDateMarker=props.cells[0].date,fgLiquidHeight=props.dayMaxEvents===!0||props.dayMaxEventRows===!0,fgEventSegs=sortEventSegs(props.fgEventSegs,options.eventOrder),[maxMainTop,minMainHeight]=this.computeFgDims(),[segsByCol,hiddenSegsByCol,renderableSegsByCol,segTops,simpleHeightsByCol]=computeFgSegVerticals(fgEventSegs,this.segHeightRefMap.current,cells,fgLiquidHeight?minMainHeight:void 0,options.eventOrderStrict,options.eventSlicing,props.dayMaxEvents,props.dayMaxEventRows),heightsByCol=[];if(maxMainTop!=null){let col=0;for(let cell of cells){let cellHeaderHeight=headerHeightRefMap.current.get(cell.key);if(cellHeaderHeight!=null){let extraFgHeight=maxMainTop-cellHeaderHeight;heightsByCol.push(simpleHeightsByCol[col]+extraFgHeight)}else heightsByCol.push(void 0);col++}}let highlightSegs=this.getHighlightSegs(),mirrorSegs=this.getMirrorSegs(),hasNavLink=options.navLinks,fullWeekStr=buildDateStr(context,weekDateMarker,"week"),weekNumberRenderProps=this.buildWeekNumberRenderProps(weekDateMarker,context,props.cellIsNarrow,hasNavLink);return(0,import_jsx_runtime4.jsxs)("div",{role:props.role,"aria-label":props.role==="row"?fullWeekStr:void 0,className:joinClassNames(options.dayRowClass,props.className,classNames.flexRow,classNames.rel,classNames.isolate,props.forPrint&&props.basis!==void 0&&classNames.printSiblingRow),style:{flexBasis:props.basis},ref:this.handleRootEl,children:[props.showWeekNumbers&&!props.cellIsMicro&&(0,import_jsx_runtime4.jsx)(ContentContainer,{tag:"div",attrs:{...hasNavLink?buildNavLinkAttrs(context,weekDateMarker,"week",fullWeekStr,!1):{},role:void 0,"aria-hidden":!0},className:classNames.z1,renderProps:weekNumberRenderProps,generatorName:"inlineWeekNumberContent",customGenerator:options.inlineWeekNumberContent,defaultGenerator:renderText,classNameGenerator:options.inlineWeekNumberClass,didMount:options.inlineWeekNumberDidMount,willUnmount:options.inlineWeekNumberWillUnmount}),this.renderFillSegs(props.businessHourSegs,"non-business"),this.renderFillSegs(props.bgEventSegs,"bg-event"),this.renderFillSegs(highlightSegs,"highlight"),props.cells.map((cell,col)=>{let normalFgNodes=this.renderFgSegs(maxMainTop,renderableSegsByCol[col],segTops,props.todayRange,!1);return(0,import_jsx_runtime4.jsx)(DayGridCell,{dateProfile:props.dateProfile,todayRange:props.todayRange,date:cell.date,isMajor:cell.isMajor,showDayNumber:props.showDayNumbers,isNarrow:props.cellIsNarrow,isMicro:props.cellIsMicro,borderStart:!!col,segs:segsByCol[col],hiddenSegs:hiddenSegsByCol[col],fgLiquidHeight,fg:(0,import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment,{children:normalFgNodes}),eventDrag:props.eventDrag,eventResize:props.eventResize,eventSelection:props.eventSelection,renderProps:cell.renderProps,dateSpanProps:cell.dateSpanProps,attrs:cell.attrs,className:cell.className,fgHeight:heightsByCol[col],width:props.colWidth,headerHeightRef:headerHeightRefMap.createRef(cell.key),mainHeightRef:mainHeightRefMap.createRef(cell.key)},cell.key)}),this.renderFgSegs(maxMainTop,mirrorSegs,segTops,props.todayRange,!0)]})}renderFgSegs(headerHeight,segs,segTops,todayRange,isMirror){let{props,segHeightRefMap}=this,{colWidth,eventSelection,cellIsMicro}=props,colCount=props.cells.length,defaultDisplayEventEnd=props.cells.length===1,nodes=[];for(let seg of segs){let key=getEventPartKey(seg),{standinFor,eventRange}=seg,{instanceId}=eventRange.instance;if(standinFor)continue;let{insetInlineStart,insetInlineEnd}=computeHorizontalsFromSeg(seg,colWidth,colCount),localTop=segTops.get(standinFor?getEventPartKey(standinFor):key)??(isMirror?0:void 0),top=headerHeight!=null&&localTop!=null?headerHeight+localTop:void 0,isDragging=!!(props.eventDrag&&props.eventDrag.affectedInstances[instanceId]),isResizing=!!(props.eventResize&&props.eventResize.affectedInstances[instanceId]),isInvisible=!isMirror&&(isDragging||isResizing||standinFor||top==null),isListItem=hasListItemDisplay(seg),isSelected=instanceId===eventSelection;nodes.push((0,import_jsx_runtime4.jsx)(DayGridEventHarness,{className:seg.start?classNames.fakeBorderS:"",style:{visibility:isInvisible?"hidden":void 0,top,insetInlineStart,insetInlineEnd,zIndex:isSelected?1e3:0},heightRef:!standinFor&&!isMirror?segHeightRefMap.createRef(key):null,children:(0,import_jsx_runtime4.jsx)(StandardEvent,{display:isListItem?"list-item":"row",eventRange,isStart:seg.isStart,isEnd:seg.isEnd,isDragging,isResizing,isMirror,isSelected,isNarrow:props.cellIsNarrow,defaultTimeFormat:DEFAULT_TABLE_EVENT_TIME_FORMAT,defaultDisplayEventEnd,disableResizing:isListItem,forcedTimeText:cellIsMicro?"":void 0,...getEventRangeMeta(eventRange,todayRange)})},key))}return nodes}renderFillSegs(segs,fillType){let{props,context}=this,{todayRange,colWidth}=props,colCount=props.cells.length,nodes=[];for(let seg of segs){let key=seg.start+":"+seg.end,{insetInlineStart,insetInlineEnd}=computeHorizontalsFromSeg(seg,colWidth,colCount),isVisible=!seg.standinFor;nodes.push((0,import_jsx_runtime4.jsx)("div",{className:classNames.fillY,style:{visibility:isVisible?"":"hidden",insetInlineStart,insetInlineEnd},children:fillType==="bg-event"?(0,import_jsx_runtime4.jsx)(BgEvent,{eventRange:seg.eventRange,isStart:seg.isStart,isEnd:seg.isEnd,isNarrow:props.cellIsNarrow,isVertical:!1,...getEventRangeMeta(seg.eventRange,todayRange)}):renderFill(fillType,context.options)},key))}return(0,import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment,{children:nodes})}componentDidMount(){this._isUnmounting=!1;let{rootEl}=this;this.disconnectHeight=watchHeight(rootEl,contentHeight=>{setRef(this.props.heightRef,contentHeight)})}componentWillUnmount(){this._isUnmounting=!0,this.disconnectHeight(),setRef(this.props.heightRef,null)}computeFgDims(){let{cells}=this.props,headerHeightMap=this.headerHeightRefMap.current,mainHeightMap=this.mainHeightRefMap.current,maxMainTop,minMainBottom;for(let cell of cells){let mainTop=headerHeightMap.get(cell.key),mainHeight=mainHeightMap.get(cell.key);if(mainTop!=null&&((maxMainTop===void 0||mainTop>maxMainTop)&&(maxMainTop=mainTop),mainHeight!=null)){let mainBottom=mainTop+mainHeight;(minMainBottom===void 0||mainBottom<minMainBottom)&&(minMainBottom=mainBottom)}}return[maxMainTop,minMainBottom!=null&&maxMainTop!=null?minMainBottom-maxMainTop:void 0]}getMirrorSegs(){let{props}=this;return props.eventResize&&props.eventResize.segs.length?props.eventResize.segs:[]}getHighlightSegs(){let{props}=this;return props.eventDrag&&props.eventDrag.segs.length?props.eventDrag.segs:props.eventResize&&props.eventResize.segs.length?props.eventResize.segs:props.dateSelectionSegs}};function buildWeekNumberRenderProps(weekDateMarker,context,isNarrow,hasNavLink){let{dateEnv,options}=context,weekNum=dateEnv.computeWeekNumber(weekDateMarker),weekNumTextParts=dateEnv.formatToParts(weekDateMarker,options.weekNumberFormat||DEFAULT_WEEK_NUM_FORMAT),weekNumText=joinDateTimeFormatParts(weekNumTextParts),weekDateZoned=dateEnv.toDate(weekDateMarker);return{num:weekNum,text:weekNumText,textParts:weekNumTextParts,date:weekDateZoned,isNarrow,hasNavLink}}var DayGridRows=class extends DateComponent{constructor(){super(...arguments),this.splitBusinessHourSegs=memoize2(splitSegsByRow),this.splitBgEventSegs=memoize2(splitAllDaySegsByRow),this.splitFgEventSegs=memoize2(splitSegsByRow),this.splitDateSelectionSegs=memoize2(splitSegsByRow),this.splitEventDrag=memoize2(splitInteractionByRow),this.splitEventResize=memoize2(splitInteractionByRow),this.rowHeightRefMap=new RefMap((height,key)=>{let{rowHeightRefMap}=this.props;rowHeightRefMap&&rowHeightRefMap.handleValue(height,key)}),this.handleRootEl=rootEl=>{this.rootEl=rootEl,rootEl?this.context.registerInteractiveComponent(this,{el:rootEl,isHitComboAllowed:this.props.isHitComboAllowed}):this.context.unregisterInteractiveComponent(this)}}render(){let{props,context,rowHeightRefMap}=this,{options}=context,{cellRows}=props,rowCount=cellRows.length,firstCellKey=cellRows[0]?.[0]?.key||"",fgEventSegsByRow=this.splitFgEventSegs(props.fgEventSegs,rowCount),bgEventSegsByRow=this.splitBgEventSegs(props.bgEventSegs,rowCount),businessHourSegsByRow=this.splitBusinessHourSegs(props.businessHourSegs,rowCount),dateSelectionSegsByRow=this.splitDateSelectionSegs(props.dateSelectionSegs,rowCount),eventDragByRow=this.splitEventDrag(props.eventDrag,rowCount),eventResizeByRow=this.splitEventResize(props.eventResize,rowCount),isHeightAuto=getIsHeightAuto(options),rowHeightsRedistribute=!props.forPrint&&!isHeightAuto,rowBasis=computeRowBasis(props.visibleWidth,rowCount,isHeightAuto,options);return(0,import_jsx_runtime4.jsx)("div",{role:"rowgroup",className:joinClassNames(props.className,!props.forPrint&&classNames.flexCol),style:{width:props.width},ref:this.handleRootEl,children:cellRows.map((cells,row)=>(0,import_jsx_runtime4.jsx)(DayGridRow,{role:"row",dateProfile:props.dateProfile,todayRange:props.todayRange,cells,cellIsNarrow:props.cellIsNarrow,cellIsMicro:props.cellIsMicro,showDayNumbers:rowCount>1,showWeekNumbers:rowCount>1&&options.weekNumbers,forPrint:props.forPrint,className:joinClassNames(rowHeightsRedistribute&&classNames.grow,rowCount>1&&classNames.breakInsideAvoid,row<rowCount-1?classNames.borderOnlyB:classNames.borderNone),fgEventSegs:fgEventSegsByRow[row],bgEventSegs:bgEventSegsByRow[row],businessHourSegs:businessHourSegsByRow[row],dateSelectionSegs:dateSelectionSegsByRow[row],eventSelection:props.eventSelection,eventDrag:eventDragByRow[row],eventResize:eventResizeByRow[row],dayMaxEvents:props.dayMaxEvents,dayMaxEventRows:props.dayMaxEventRows,colWidth:props.colWidth,basis:rowBasis,heightRef:rowHeightRefMap.createRef(cells[0].key)},firstCellKey+":"+cells[0].key))})}queryHit(isRtl,positionLeft,positionTop,elWidth){let{props}=this,colCount=props.cellRows[0].length,{col,left,right}=computeColFromPosition(positionLeft,elWidth,props.colWidth,colCount,isRtl),{row,top,bottom}=computeRowFromPosition(positionTop,props.cellRows,this.rowHeightRefMap.current),cell=props.cellRows[row][col],cellStartDate=cell.date,cellEndDate=addDays3(cellStartDate,1);return{dateProfile:props.dateProfile,dateSpan:{range:{start:cellStartDate,end:cellEndDate},allDay:!0,...cell.dateSpanProps},getDayEl:()=>getCellEl(getRowEl(this.rootEl,row),col),rect:{left,right,top,bottom},layer:0}}};function isSegAllDay(seg){return seg.eventRange.def.allDay}function splitAllDaySegsByRow(segs,rowCnt){return splitSegsByRow(segs.filter(isSegAllDay),rowCnt)}function computeRowBasis(visibleWidth,rowCount,isHeightAuto,options){if(visibleWidth!=null){let rowBasis=visibleWidth/options.aspectRatio/6;return rowCount>6||isHeightAuto?rowBasis:0}return 0}var DayGridHeaderCell=class extends BaseComponent{constructor(){super(...arguments),this.state={},this.buildDayHeaderText=memoize2(buildDayHeaderText),this.handleInnerEl=innerEl=>{this.disconnectSize&&(this.disconnectSize(),this.disconnectSize=void 0),innerEl?this.disconnectSize=watchSize(innerEl,(width,height)=>{this._isUnmounting||(setRef(this.props.innerHeightRef,height),this.setState({innerWidth:width}))}):setRef(this.props.innerHeightRef,null)}}render(){let{props,state,context}=this,{renderConfig,dataConfig}=props,totalColWidth=props.colWidth!=null?props.colWidth*(dataConfig.colSpan||1):void 0,isDisabled=dataConfig.renderProps.isDisabled,finalRenderProps=renderConfig.dayHeaderFormat?this.buildDayHeaderRenderProps(dataConfig.renderProps,props.cellIsNarrow,props.rowLevel,props.cellIsMicro,dataConfig.dateMarker,renderConfig.dayHeaderFormat,!!renderConfig.datesRepDistinctDays,context.dateEnv):{...dataConfig.renderProps,isNarrow:props.cellIsNarrow,level:props.rowLevel},alignInput=renderConfig.align,align=typeof alignInput=="function"?alignInput({level:props.rowLevel,inPopover:dataConfig.renderProps.inPopover,isNarrow:props.cellIsNarrow}):alignInput,stickyInput=renderConfig.sticky,isSticky=props.rowLevel>0&&stickyInput!==!1&&(align!=="center"||totalColWidth!=null&&props.viewportWidth!=null&&totalColWidth>props.viewportWidth*.75),edgeCoord;return isSticky&&(align==="center"?state.innerWidth!=null&&(edgeCoord=`calc(50% - ${state.innerWidth/2}px)`):edgeCoord=typeof stickyInput=="number"||typeof stickyInput=="string"?stickyInput:0),(0,import_jsx_runtime4.jsx)(ContentContainer,{tag:"div",attrs:{role:"columnheader","aria-colspan":dataConfig.colSpan,...dataConfig.attrs},className:joinClassNames(dataConfig.className,classNames.noMargin,classNames.noPadding,classNames.flexCol,props.borderStart?classNames.borderOnlyS:classNames.borderNone,align==="center"?classNames.alignCenter:align==="end"?classNames.alignEnd:classNames.alignStart,props.colWidth==null&&classNames.liquid,!isSticky&&classNames.crop),style:{width:totalColWidth},renderProps:finalRenderProps,generatorName:renderConfig.generatorName,customGenerator:renderConfig.customGenerator,defaultGenerator:renderText,classNameGenerator:isDisabled?void 0:renderConfig.classNameGenerator,didMount:renderConfig.didMount,willUnmount:renderConfig.willUnmount,children:InnerContainer=>(0,import_jsx_runtime4.jsx)("div",{ref:this.handleInnerEl,className:joinClassNames(classNames.flexCol,classNames.noShrink,classNames.whiteSpaceNoWrap,isSticky&&classNames.sticky),style:{left:edgeCoord,right:edgeCoord},children:(0,import_jsx_runtime4.jsx)(InnerContainer,{tag:"div",attrs:dataConfig.innerAttrs,className:generateClassName(renderConfig.innerClassNameGenerator,finalRenderProps)})})})}componentDidMount(){this._isUnmounting=!1}componentWillUnmount(){this._isUnmounting=!0}buildDayHeaderRenderProps(renderProps,cellIsNarrow,rowLevel,cellIsMicro,dateMarker,dayHeaderFormat,datesRepDistinctDays,dateEnv){let baseText=this.buildDayHeaderText(datesRepDistinctDays?dateMarker:renderProps.date,dayHeaderFormat,datesRepDistinctDays,dateEnv),textData=cellIsMicro?this.buildDayHeaderText(dateMarker,dayHeaderMicroFormat,!1,dateEnv):baseText;return{...renderProps,isNarrow:cellIsNarrow,level:rowLevel,text:textData.text,textParts:textData.textParts,weekdayText:cellIsMicro?textData.text:baseText.weekdayText,dayNumberText:baseText.dayNumberText}}};function buildDayHeaderText(date,formatter,includeDayNumber,dateEnv){let textParts=dateEnv.formatToParts(date,formatter);return{text:joinDateTimeFormatParts(textParts),textParts,weekdayText:findWeekdayText(textParts),dayNumberText:includeDayNumber?findDayNumberText(textParts):""}}var DayGridHeaderRow=class extends BaseComponent{constructor(){super(...arguments),this.innerHeightRefMap=new RefMap(()=>{afterSize(this.handleInnerHeights)}),this.handleInnerHeights=()=>{if(this._isUnmounting)return;let innerHeightMap=this.innerHeightRefMap.current,max=0;for(let innerHeight of innerHeightMap.values())max=Math.max(max,innerHeight);this.currentInnerHeight!==max&&(this.currentInnerHeight=max,setRef(this.props.innerHeightRef,max))}}render(){let{props,context}=this,{options}=context;return(0,import_jsx_runtime4.jsx)("div",{role:props.role,"aria-rowindex":props.rowIndex!=null?1+props.rowIndex:void 0,className:joinClassNames(options.dayHeaderRowClass,props.className,classNames.flexRow,classNames.contentBox,props.borderBottom?classNames.borderOnlyB:classNames.borderNone),style:{height:props.height},children:props.dataConfigs.map((dataConfig,cellI)=>(0,import_jsx_runtime4.jsx)(DayGridHeaderCell,{renderConfig:props.renderConfig,dataConfig,borderStart:!!cellI,colWidth:props.colWidth,viewportWidth:props.viewportWidth,innerHeightRef:this.innerHeightRefMap.createRef(dataConfig.key),cellIsNarrow:props.cellIsNarrow,cellIsMicro:props.cellIsMicro,rowLevel:props.rowLevel},dataConfig.key))})}componentDidMount(){this._isUnmounting=!1}componentWillUnmount(){this._isUnmounting=!0,this.currentInnerHeight=void 0,setRef(this.props.innerHeightRef,null)}};var import_jsx_runtime5=require("react/jsx-runtime");var import_react7=require("react");var DayGridHeader=class extends BaseComponent{render(){let{props}=this,{headerTiers}=props;return(0,import_jsx_runtime5.jsx)("div",{role:"rowgroup",className:joinClassNames(props.className,classNames.flexCol,props.width==null&&classNames.liquid),style:{width:props.width},children:headerTiers.map((rowConfig,i)=>(0,import_react7.createElement)(DayGridHeaderRow,{...rowConfig,key:i,role:"row",borderBottom:i<headerTiers.length-1,colWidth:props.colWidth,viewportWidth:props.viewportWidth,cellIsNarrow:props.cellIsNarrow,cellIsMicro:props.cellIsMicro,rowLevel:headerTiers.length-i-1}))})}},DayGridLayoutNormal=class extends BaseComponent{constructor(){super(...arguments),this.state={},this.handleScroller=scroller=>{setRef(this.props.scrollerRef,scroller)},this.handleTotalWidth=totalWidth=>{this._isUnmounting||this.setState({totalWidth})},this.handleClientWidth=clientWidth=>{this._isUnmounting||this.setState({clientWidth})}}render(){let{props,state,context}=this,{options}=context,{borderlessX,borderlessTop,borderlessBottom}=computeViewBorderless(options),{totalWidth,clientWidth}=state,endScrollbarWidth=totalWidth!=null&&clientWidth!=null?totalWidth-clientWidth:void 0;endScrollbarWidth<3&&(endScrollbarWidth=0);let verticalScrollbars=!props.forPrint&&!getIsHeightAuto(options),tableHeaderSticky=!props.forPrint&&getTableHeaderSticky(options),colCount=props.cellRows[0].length,cellWidth=clientWidth!=null?clientWidth/colCount:void 0,cellIsMicro=cellWidth!=null&&cellWidth<=dayMicroWidth,cellIsNarrow=cellIsMicro||cellWidth!=null&&cellWidth<=options.dayNarrowWidth;return(0,import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment,{children:[options.dayHeaders&&(0,import_jsx_runtime5.jsxs)("div",{className:joinClassNames(generateClassName(options.tableHeaderClass,{isSticky:tableHeaderSticky,borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),classNames.printHeader,tableHeaderSticky&&classNames.tableHeaderSticky),children:[(0,import_jsx_runtime5.jsxs)("div",{className:classNames.flexRow,children:[(0,import_jsx_runtime5.jsx)(DayGridHeader,{headerTiers:props.headerTiers,cellIsNarrow,cellIsMicro}),!!endScrollbarWidth&&(0,import_jsx_runtime5.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!0}),classNames.borderOnlyS),style:{minWidth:endScrollbarWidth}})]}),(0,import_jsx_runtime5.jsx)("div",{className:generateClassName(options.dayHeaderDividerClass,{isSticky:tableHeaderSticky,multiMonthColumns:0,options:{allDaySlot:!!options.allDaySlot}})})]}),(0,import_jsx_runtime5.jsx)(Scroller,{vertical:verticalScrollbars,className:joinClassNames(generateClassName(options.tableBodyClass,{borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),!props.forPrint&&classNames.flexCol,verticalScrollbars&&classNames.liquid),ref:this.handleScroller,clientWidthRef:this.handleClientWidth,children:(0,import_jsx_runtime5.jsx)(DayGridRows,{dateProfile:props.dateProfile,todayRange:props.todayRange,cellRows:props.cellRows,forPrint:props.forPrint,isHitComboAllowed:props.isHitComboAllowed,className:classNames.grow,dayMaxEvents:props.forPrint?void 0:options.dayMaxEvents,dayMaxEventRows:options.dayMaxEventRows,fgEventSegs:props.fgEventSegs,bgEventSegs:props.bgEventSegs,businessHourSegs:props.businessHourSegs,dateSelectionSegs:props.dateSelectionSegs,eventDrag:props.eventDrag,eventResize:props.eventResize,eventSelection:props.eventSelection,visibleWidth:totalWidth,cellIsNarrow,cellIsMicro,rowHeightRefMap:props.rowHeightRefMap})}),(0,import_jsx_runtime5.jsx)(Ruler,{widthRef:this.handleTotalWidth})]})}componentDidMount(){this._isUnmounting=!1}componentWillUnmount(){this._isUnmounting=!0}},FooterScrollbar=class extends BaseComponent{constructor(){super(...arguments),this.rootElRef=(0,import_react7.createRef)()}render(){let{props}=this;return(0,import_jsx_runtime5.jsx)("div",{ref:this.rootElRef,className:joinClassNames(classNames.footerScrollbar,props.isSticky&&classNames.footerScrollbarSticky),children:(0,import_jsx_runtime5.jsx)(Scroller,{horizontal:!0,ref:props.scrollerRef,children:(0,import_jsx_runtime5.jsx)("div",{style:{minWidth:props.canvasWidth}})})})}componentDidMount(){this._isUnmounting=!1,this.disconnectHeight=watchHeight(this.rootElRef.current,height=>{this._isUnmounting||setRef(this.props.scrollbarWidthRef,height)})}componentWillUnmount(){this._isUnmounting=!0,this.disconnectHeight(),setRef(this.props.scrollbarWidthRef,null)}},DayGridLayoutPannable=class extends BaseComponent{constructor(){super(...arguments),this.state={},this.headerScrollerRef=(0,import_react7.createRef)(),this.bodyScrollerRef=(0,import_react7.createRef)(),this.footerScrollerRef=(0,import_react7.createRef)(),this.handleTotalWidth=totalWidth=>{this._isUnmounting||this.setState({totalWidth})},this.handleClientWidth=clientWidth=>{this._isUnmounting||this.setState({clientWidth})}}render(){let{props,state,context}=this,{options}=context,{borderlessX,borderlessTop,borderlessBottom}=computeViewBorderless(options),{totalWidth,clientWidth}=state,endScrollbarWidth=totalWidth!=null&&clientWidth!=null?totalWidth-clientWidth:void 0,verticalScrollbars=!props.forPrint&&!getIsHeightAuto(options),tableHeaderSticky=!props.forPrint&&getTableHeaderSticky(options),footerScrollbarSticky=!props.forPrint&&getFooterScrollbarSticky(options),colCount=props.cellRows[0].length,[canvasWidth,colWidth]=computeColWidth(colCount,props.dayMinWidth,clientWidth),cellIsMicro=colWidth!=null&&colWidth<=dayMicroWidth,cellIsNarrow=cellIsMicro||colWidth!=null&&colWidth<=options.dayNarrowWidth;return(0,import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment,{children:[options.dayHeaders&&(0,import_jsx_runtime5.jsxs)("div",{className:joinClassNames(generateClassName(options.tableHeaderClass,{isSticky:tableHeaderSticky,borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),classNames.printHeader,tableHeaderSticky&&classNames.tableHeaderSticky),children:[(0,import_jsx_runtime5.jsxs)(Scroller,{horizontal:!0,hideScrollbars:!0,className:classNames.flexRow,ref:this.headerScrollerRef,children:[(0,import_jsx_runtime5.jsx)(DayGridHeader,{headerTiers:props.headerTiers,colWidth,viewportWidth:clientWidth,width:canvasWidth,cellIsNarrow,cellIsMicro}),!!endScrollbarWidth&&(0,import_jsx_runtime5.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!0}),classNames.borderOnlyS),style:{minWidth:endScrollbarWidth}})]}),(0,import_jsx_runtime5.jsx)("div",{className:generateClassName(options.dayHeaderDividerClass,{isSticky:tableHeaderSticky,multiMonthColumns:0,options:{allDaySlot:!!options.allDaySlot}})})]}),(0,import_jsx_runtime5.jsx)(Scroller,{vertical:verticalScrollbars,horizontal:!0,hideScrollbars:footerScrollbarSticky||props.forPrint,className:joinClassNames(generateClassName(options.tableBodyClass,{borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),!props.forPrint&&classNames.flexCol,verticalScrollbars&&classNames.liquid),ref:this.bodyScrollerRef,clientWidthRef:this.handleClientWidth,children:(0,import_jsx_runtime5.jsx)(DayGridRows,{dateProfile:props.dateProfile,todayRange:props.todayRange,cellRows:props.cellRows,forPrint:props.forPrint,isHitComboAllowed:props.isHitComboAllowed,className:classNames.grow,dayMaxEvents:props.forPrint?void 0:options.dayMaxEvents,dayMaxEventRows:options.dayMaxEventRows,fgEventSegs:props.fgEventSegs,bgEventSegs:props.bgEventSegs,businessHourSegs:props.businessHourSegs,dateSelectionSegs:props.dateSelectionSegs,eventDrag:props.eventDrag,eventResize:props.eventResize,eventSelection:props.eventSelection,colWidth,width:canvasWidth,visibleWidth:totalWidth,cellIsNarrow,cellIsMicro,rowHeightRefMap:props.rowHeightRefMap})}),!!footerScrollbarSticky&&(0,import_jsx_runtime5.jsx)(FooterScrollbar,{isSticky:!0,canvasWidth,scrollerRef:this.footerScrollerRef}),(0,import_jsx_runtime5.jsx)(Ruler,{widthRef:this.handleTotalWidth})]})}componentDidMount(){this._isUnmounting=!1;let ScrollerSyncer=getScrollerSyncerClass(this.context.pluginHooks);this.syncedScroller=new ScrollerSyncer(!0),setRef(this.props.scrollerRef,this.syncedScroller),this.updateSyncedScroller()}componentDidUpdate(){this.updateSyncedScroller()}componentWillUnmount(){this._isUnmounting=!0,this.syncedScroller.destroy()}updateSyncedScroller(){this.syncedScroller.handleChildren([this.headerScrollerRef.current,this.bodyScrollerRef.current,this.footerScrollerRef.current])}},DayGridLayout=class extends BaseComponent{constructor(){super(...arguments),this.scrollerRef=(0,import_react7.createRef)(),this.rowHeightRefMap=new RefMap(()=>{afterSize(this.updateScrollY)}),this.scrollDate=null,this.updateScrollY=()=>{if(this._isUnmounting)return;let rowHeightMap=this.rowHeightRefMap.current,scroller=this.scrollerRef.current;if(scroller&&this.scrollDate){let scrollTop=computeTopFromDate(this.scrollDate,this.props.cellRows,rowHeightMap);scrollTop!=null&&(scrollTop&&scrollTop++,scroller.scrollTo({y:scrollTop}))}},this.handleScrollEnd=isDevice=>{isDevice&&(this.scrollDate=null)}}render(){let{props,context}=this,{options}=context,{borderlessX,borderlessTop,borderlessBottom}=computeViewBorderless(options),businessHourSegs=props.forPrint?[]:props.businessHourSegs,dateSelectionSegs=props.forPrint?[]:props.dateSelectionSegs,eventDrag=props.forPrint?null:props.eventDrag,eventResize=props.forPrint?null:props.eventResize,commonLayoutProps={...props,businessHourSegs,dateSelectionSegs,eventDrag,eventResize,scrollerRef:this.scrollerRef,rowHeightRefMap:this.rowHeightRefMap};return(0,import_jsx_runtime5.jsx)(ViewContainer,{viewSpec:context.viewSpec,attrs:{role:"grid","aria-rowcount":props.headerTiers.length+props.cellRows.length,"aria-colcount":props.cellRows[0].length,"aria-labelledby":props.labelId,"aria-label":props.labelStr},className:joinClassNames(props.className,classNames.printRoot,generateClassName(options.tableClass,{borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0})),children:options.dayMinWidth?(0,import_jsx_runtime5.jsx)(DayGridLayoutPannable,{...commonLayoutProps,dayMinWidth:options.dayMinWidth}):(0,import_jsx_runtime5.jsx)(DayGridLayoutNormal,{...commonLayoutProps})})}componentDidMount(){this._isUnmounting=!1,this.resetScroll(),this.scrollerRef.current.addScrollEndListener(this.handleScrollEnd)}componentDidUpdate(prevProps){prevProps.dateProfile!==this.props.dateProfile&&this.context.options.scrollTimeReset&&this.resetScroll()}componentWillUnmount(){this._isUnmounting=!0,this.scrollerRef.current.removeScrollEndListener(this.handleScrollEnd)}resetScroll(){this.scrollDate=this.props.dateProfile.currentDate,this.updateScrollY(),this.scrollerRef.current.scrollTo({x:0})}};var TableDateProfileGenerator=class extends DateProfileGenerator{buildRenderRange(currentRange,currentRangeUnit,isRangeAllDay){let renderRange=super.buildRenderRange(currentRange,currentRangeUnit,isRangeAllDay),{props}=this;return buildDayTableRenderRange({currentRange:renderRange,snapToWeek:/^(year|month)$/.test(currentRangeUnit),fixedWeekCount:props.fixedWeekCount,dateEnv:props.dateEnv})}};function buildDayTableRenderRange(props){let{dateEnv,currentRange}=props,{start,end}=currentRange,endOfWeek4;if(props.snapToWeek&&(start=dateEnv.startOfWeek(start),endOfWeek4=dateEnv.startOfWeek(end),endOfWeek4.valueOf()!==end.valueOf()&&(end=addWeeks3(endOfWeek4,1))),props.fixedWeekCount){let lastMonthRenderStart=dateEnv.startOfWeek(dateEnv.startOfMonth(addDays3(currentRange.end,-1))),rowCount=Math.ceil(diffWeeks4(lastMonthRenderStart,end));end=addWeeks3(end,6-rowCount)}return{start,end}}var DayGridView=class extends BaseComponent{constructor(){super(...arguments),this.buildDayTableModel=memoize2(buildDayTableModel),this.buildDateRowConfigs=memoize2(buildDateRowConfigs),this.createDayHeaderFormatter=memoize2(createDayHeaderFormatter),this.slicer=new DayTableSlicer}render(){let{props,context}=this,{dateProfile}=props,{options,dateEnv}=context,dayTableModel=this.buildDayTableModel(dateProfile,context.dateProfileGenerator,dateEnv),datesRepDistinctDays=dayTableModel.rowCount===1,dayHeaderFormat=this.createDayHeaderFormatter(context.options.dayHeaderFormat,datesRepDistinctDays,dayTableModel.colCount),slicedProps=this.slicer.sliceProps(props,dateProfile,options.nextDayThreshold,context,dayTableModel);return(0,import_jsx_runtime6.jsx)(NowTimer,{unit:"day",children:(nowDate,todayRange)=>{let headerTiers=this.buildDateRowConfigs(dayTableModel.headerDates,datesRepDistinctDays,dateProfile,todayRange,dayHeaderFormat,context);return(0,import_jsx_runtime6.jsx)(DayGridLayout,{labelId:props.labelId,labelStr:props.labelStr,dateProfile,todayRange,cellRows:dayTableModel.cellRows,forPrint:props.forPrint,className:props.className,headerTiers,fgEventSegs:slicedProps.fgEventSegs,bgEventSegs:slicedProps.bgEventSegs,businessHourSegs:slicedProps.businessHourSegs,dateSelectionSegs:slicedProps.dateSelectionSegs,eventDrag:slicedProps.eventDrag,eventResize:slicedProps.eventResize,eventSelection:slicedProps.eventSelection})}})}},dayGridPlugin={name:"daygrid",initialView:"dayGridMonth",views:{dayGrid:{component:DayGridView,dateProfileGeneratorClass:TableDateProfileGenerator},dayGridDay:{type:"dayGrid",duration:{days:1}},dayGridWeek:{type:"dayGrid",duration:{weeks:1}},dayGridMonth:{type:"dayGrid",duration:{months:1},fixedWeekCount:!0},dayGridYear:{type:"dayGrid",duration:{years:1}}}};var ElementDragging=class{constructor(el,selector){this.emitter=new Emitter}destroy(){}setMirrorIsVisible(bool){}setMirrorNeedsRevert(bool){}setAutoScrollEnabled(bool){}},config={};function isInteractionValid(interaction,dateProfile,context){let{instances}=interaction.mutatedEvents;for(let instanceId in instances)if(!rangeContainsRange(dateProfile.validRange,instances[instanceId].range))return!1;return isNewPropsValid({eventDrag:interaction},context)}function isDateSelectionValid(dateSelection,dateProfile,context){return rangeContainsRange(dateProfile.validRange,dateSelection.range)?isNewPropsValid({dateSelection},context):!1}function isNewPropsValid(newProps,context){let calendarState=context.getCurrentData(),props={businessHours:calendarState.businessHours,dateSelection:"",eventStore:calendarState.eventStore,eventUiBases:calendarState.eventUiBases,eventSelection:"",eventDrag:null,eventResize:null,...newProps};return(context.pluginHooks.isPropsValid||isPropsValid)(props,context)}function isPropsValid(state,context,dateSpanMeta={},filterConfig){return!(state.eventDrag&&!isInteractionPropsValid(state,context,dateSpanMeta,filterConfig)||state.dateSelection&&!isDateSelectionPropsValid(state,context,dateSpanMeta,filterConfig))}function isInteractionPropsValid(state,context,dateSpanMeta,filterConfig){let currentState=context.getCurrentData(),interaction=state.eventDrag,subjectEventStore=interaction.mutatedEvents,subjectDefs=subjectEventStore.defs,subjectInstances=subjectEventStore.instances,subjectConfigs=compileEventUis(subjectDefs,interaction.isEvent?state.eventUiBases:{"":currentState.selectionConfig});filterConfig&&(subjectConfigs=mapHash(subjectConfigs,filterConfig));let otherEventStore=excludeInstances(state.eventStore,interaction.affectedEvents.instances),otherDefs=otherEventStore.defs,otherInstances=otherEventStore.instances,otherConfigs=compileEventUis(otherDefs,state.eventUiBases);for(let subjectInstanceId in subjectInstances){let subjectInstance=subjectInstances[subjectInstanceId],subjectRange=subjectInstance.range,subjectConfig=subjectConfigs[subjectInstance.defId],subjectDef=subjectDefs[subjectInstance.defId];if(!allConstraintsPass(subjectConfig.constraints,subjectRange,otherEventStore,state.businessHours,context))return!1;let{eventOverlap}=context.options,eventOverlapFunc=typeof eventOverlap=="function"?eventOverlap:null;for(let otherInstanceId in otherInstances){let otherInstance=otherInstances[otherInstanceId];if(rangesIntersect(subjectRange,otherInstance.range)&&(otherConfigs[otherInstance.defId].overlap===!1&&interaction.isEvent||subjectConfig.overlap===!1||eventOverlapFunc&&!eventOverlapFunc(new EventImpl(context,otherDefs[otherInstance.defId],otherInstance),new EventImpl(context,subjectDef,subjectInstance))))return!1}let calendarEventStore=currentState.eventStore;for(let subjectAllow of subjectConfig.allows){let subjectDateSpan={...dateSpanMeta,range:subjectInstance.range,allDay:subjectDef.allDay},origDef=calendarEventStore.defs[subjectDef.defId],origInstance=calendarEventStore.instances[subjectInstanceId],eventApi;if(origDef?eventApi=new EventImpl(context,origDef,origInstance):eventApi=new EventImpl(context,subjectDef),!subjectAllow(buildDateSpanApiWithContext(subjectDateSpan,context),eventApi))return!1}}return!0}function isDateSelectionPropsValid(state,context,dateSpanMeta,filterConfig){let relevantEventStore=state.eventStore,relevantDefs=relevantEventStore.defs,relevantInstances=relevantEventStore.instances,selection=state.dateSelection,selectionRange=selection.range,{selectionConfig}=context.getCurrentData();if(filterConfig&&(selectionConfig=filterConfig(selectionConfig)),!allConstraintsPass(selectionConfig.constraints,selectionRange,relevantEventStore,state.businessHours,context))return!1;let{selectOverlap}=context.options,selectOverlapFunc=typeof selectOverlap=="function"?selectOverlap:null;for(let relevantInstanceId in relevantInstances){let relevantInstance=relevantInstances[relevantInstanceId];if(rangesIntersect(selectionRange,relevantInstance.range)&&(selectionConfig.overlap===!1||selectOverlapFunc&&!selectOverlapFunc(new EventImpl(context,relevantDefs[relevantInstance.defId],relevantInstance),null)))return!1}for(let selectionAllow of selectionConfig.allows){let fullDateSpan={...dateSpanMeta,...selection};if(!selectionAllow(buildDateSpanApiWithContext(fullDateSpan,context),null))return!1}return!0}function allConstraintsPass(constraints,subjectRange,otherEventStore,businessHoursUnexpanded,context){for(let constraint of constraints)if(!anyRangesContainRange(constraintToRanges(constraint,subjectRange,otherEventStore,businessHoursUnexpanded,context),subjectRange))return!1;return!0}function constraintToRanges(constraint,subjectRange,otherEventStore,businessHoursUnexpanded,context){return constraint==="businessHours"?eventStoreToRanges(expandRecurring(businessHoursUnexpanded,subjectRange,context)):typeof constraint=="string"?eventStoreToRanges(filterEventStoreDefs(otherEventStore,eventDef=>eventDef.groupId===constraint)):typeof constraint=="object"&&constraint?eventStoreToRanges(expandRecurring(constraint,subjectRange,context)):[]}function eventStoreToRanges(eventStore){let{instances}=eventStore,ranges=[];for(let instanceId in instances)ranges.push(instances[instanceId].range);return ranges}function anyRangesContainRange(outerRanges,innerRange){for(let outerRange of outerRanges)if(rangeContainsRange(outerRange,innerRange))return!0;return!1}config.touchMouseIgnoreWait=500;var ignoreMouseDepth=0,listenerCnt=0,isWindowTouchMoveCancelled=!1,PointerDragging=class{constructor(containerEl){this.subjectEl=null,this.selector="",this.handleSelector="",this.shouldIgnoreMove=!1,this.shouldWatchScroll=!0,this.isDragging=!1,this.isTouchDragging=!1,this.wasTouchScroll=!1,this.handleMouseDown=ev=>{if(!this.shouldIgnoreMouse()&&isPrimaryMouseButton(ev)&&this.tryStart(ev)){let pev=this.createEventFromMouse(ev,!0);this.emitter.trigger("pointerdown",pev),this.initScrollWatch(pev),this.shouldIgnoreMove||document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp)}},this.handleMouseMove=ev=>{let pev=this.createEventFromMouse(ev);this.recordCoords(pev),this.emitter.trigger("pointermove",pev)},this.handleMouseUp=ev=>{document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp),this.emitter.trigger("pointerup",this.createEventFromMouse(ev)),this.cleanup()},this.handleTouchStart=ev=>{if(this.tryStart(ev)){this.isTouchDragging=!0;let pev=this.createEventFromTouch(ev,!0);this.emitter.trigger("pointerdown",pev),this.initScrollWatch(pev);let targetEl=ev.target;this.shouldIgnoreMove||targetEl.addEventListener("touchmove",this.handleTouchMove),targetEl.addEventListener("touchend",this.handleTouchEnd),targetEl.addEventListener("touchcancel",this.handleTouchEnd),window.addEventListener("scroll",this.handleTouchScroll,!0)}},this.handleTouchMove=ev=>{if(this.isDragging){let pev=this.createEventFromTouch(ev);this.recordCoords(pev),this.emitter.trigger("pointermove",pev)}},this.handleTouchEnd=ev=>{if(this.isDragging){let targetEl=ev.target;targetEl.removeEventListener("touchmove",this.handleTouchMove),targetEl.removeEventListener("touchend",this.handleTouchEnd),targetEl.removeEventListener("touchcancel",this.handleTouchEnd),window.removeEventListener("scroll",this.handleTouchScroll,!0),this.emitter.trigger("pointerup",this.createEventFromTouch(ev)),this.cleanup(),this.isTouchDragging=!1,startIgnoringMouse()}},this.handleTouchScroll=()=>{this.wasTouchScroll=!0},this.handleScroll=ev=>{if(!this.shouldIgnoreMove){let pageX=window.scrollX-this.prevScrollX+this.prevPageX,pageY=window.scrollY-this.prevScrollY+this.prevPageY;this.emitter.trigger("pointermove",{origEvent:ev,isTouch:this.isTouchDragging,subjectEl:this.subjectEl,pageX,pageY,deltaX:pageX-this.origPageX,deltaY:pageY-this.origPageY})}},this.containerEl=containerEl,this.emitter=new Emitter,containerEl.addEventListener("mousedown",this.handleMouseDown),containerEl.addEventListener("touchstart",this.handleTouchStart,{passive:!0}),listenerCreated()}destroy(){this.containerEl.removeEventListener("mousedown",this.handleMouseDown),this.containerEl.removeEventListener("touchstart",this.handleTouchStart,{passive:!0}),listenerDestroyed()}cancel(){this.isDragging&&this.cleanup()}tryStart(ev){let subjectEl=this.querySubjectEl(ev),downEl=ev.target;return subjectEl&&(!this.handleSelector||downEl.closest(this.handleSelector))?(this.subjectEl=subjectEl,this.isDragging=!0,this.wasTouchScroll=!1,!0):!1}cleanup(){isWindowTouchMoveCancelled=!1,this.isDragging=!1,this.subjectEl=null,this.destroyScrollWatch()}querySubjectEl(ev){return this.selector?ev.target.closest(this.selector):this.containerEl}shouldIgnoreMouse(){return ignoreMouseDepth||this.isTouchDragging}cancelTouchScroll(){this.isDragging&&(isWindowTouchMoveCancelled=!0)}initScrollWatch(ev){this.shouldWatchScroll&&(this.recordCoords(ev),window.addEventListener("scroll",this.handleScroll,!0))}recordCoords(ev){this.shouldWatchScroll&&(this.prevPageX=ev.pageX,this.prevPageY=ev.pageY,this.prevScrollX=window.scrollX,this.prevScrollY=window.scrollY)}destroyScrollWatch(){this.shouldWatchScroll&&window.removeEventListener("scroll",this.handleScroll,!0)}createEventFromMouse(ev,isFirst){let deltaX=0,deltaY=0;return isFirst?(this.origPageX=ev.pageX,this.origPageY=ev.pageY):(deltaX=ev.pageX-this.origPageX,deltaY=ev.pageY-this.origPageY),{origEvent:ev,isTouch:!1,subjectEl:this.subjectEl,pageX:ev.pageX,pageY:ev.pageY,deltaX,deltaY}}createEventFromTouch(ev,isFirst){let touches=ev.touches,pageX,pageY,deltaX=0,deltaY=0;return touches&&touches.length?(pageX=touches[0].pageX,pageY=touches[0].pageY):(pageX=ev.pageX,pageY=ev.pageY),isFirst?(this.origPageX=pageX,this.origPageY=pageY):(deltaX=pageX-this.origPageX,deltaY=pageY-this.origPageY),{origEvent:ev,isTouch:!0,subjectEl:this.subjectEl,pageX,pageY,deltaX,deltaY}}};function isPrimaryMouseButton(ev){return ev.button===0&&!ev.ctrlKey}function startIgnoringMouse(){ignoreMouseDepth+=1,setTimeout(()=>{ignoreMouseDepth-=1},config.touchMouseIgnoreWait)}function listenerCreated(){listenerCnt+=1,listenerCnt===1&&window.addEventListener("touchmove",onWindowTouchMove,{passive:!1})}function listenerDestroyed(){listenerCnt-=1,listenerCnt||window.removeEventListener("touchmove",onWindowTouchMove,{passive:!1})}function onWindowTouchMove(ev){isWindowTouchMoveCancelled&&ev.preventDefault()}var ElementMirror=class{constructor(){this.isVisible=!1,this.sourceEl=null,this.mirrorEl=null,this.sourceElRect=null,this.parentNode=document.body,this.zIndex=9999,this.revertDuration=0,this.colorScheme=""}start(sourceEl,pageX,pageY){this.sourceEl=sourceEl,this.sourceElRect=this.sourceEl.getBoundingClientRect(),this.origScreenX=pageX-window.scrollX,this.origScreenY=pageY-window.scrollY,this.deltaX=0,this.deltaY=0,this.updateElPosition()}handleMove(pageX,pageY){this.deltaX=pageX-window.scrollX-this.origScreenX,this.deltaY=pageY-window.scrollY-this.origScreenY,this.updateElPosition()}setIsVisible(bool){bool?this.isVisible||(this.mirrorEl&&this.mirrorEl.style.setProperty("display","","important"),this.isVisible=bool,this.updateElPosition()):this.isVisible&&(this.mirrorEl&&this.mirrorEl.style.setProperty("display","none","important"),this.isVisible=bool)}stop(needsRevertAnimation,callback){let done=()=>{this.cleanup(),callback()};needsRevertAnimation&&this.mirrorEl&&this.isVisible&&this.revertDuration&&(this.deltaX||this.deltaY)?this.doRevertAnimation(done,this.revertDuration):setTimeout(done,0)}doRevertAnimation(callback,revertDuration){let mirrorEl=this.mirrorEl,finalSourceElRect=this.sourceEl.getBoundingClientRect();mirrorEl.style.transition="top "+revertDuration+"ms,left "+revertDuration+"ms",applyStyle(mirrorEl,{left:finalSourceElRect.left,top:finalSourceElRect.top}),whenTransitionDone(mirrorEl,()=>{mirrorEl.style.transition="",callback()})}cleanup(){this.mirrorEl&&(this.mirrorEl.remove(),this.mirrorEl=null),this.sourceEl=null}updateElPosition(){this.sourceEl&&this.isVisible&&applyStyle(this.getMirrorEl(),{left:this.sourceElRect.left+this.deltaX,top:this.sourceElRect.top+this.deltaY})}getMirrorEl(){let sourceElRect=this.sourceElRect,mirrorEl=this.mirrorEl;return mirrorEl||(mirrorEl=this.mirrorEl=this.sourceEl.cloneNode(!0),mirrorEl.style.userSelect="none",mirrorEl.style.webkitUserSelect="none",mirrorEl.style.pointerEvents="none",this.colorScheme&&mirrorEl.setAttribute("data-color-scheme",this.colorScheme),mirrorEl.classList.add(classNames.borderBoxRoot),applyStyle(mirrorEl,{position:"fixed",zIndex:this.zIndex,visibility:"",width:sourceElRect.right-sourceElRect.left,height:sourceElRect.bottom-sourceElRect.top,right:"auto",bottom:"auto",margin:0}),this.parentNode.appendChild(mirrorEl)),mirrorEl}},ScrollController=class{getMaxScrollTop(){return this.getScrollHeight()-this.getClientHeight()}getMaxScrollLeft(){return this.getScrollWidth()-this.getClientWidth()}canScrollVertically(){return this.getMaxScrollTop()>0}canScrollHorizontally(){return this.getMaxScrollLeft()>0}canScrollUp(){return this.getScrollTop()>0}canScrollDown(){return this.getScrollTop()<this.getMaxScrollTop()}canScrollLeft(){return this.getScrollLeft()>0}canScrollRight(){return this.getScrollLeft()<this.getMaxScrollLeft()}},ElementScrollController=class extends ScrollController{constructor(el){super(),this.el=el}getScrollTop(){return this.el.scrollTop}getScrollLeft(){return this.el.scrollLeft}setScrollTop(top){this.el.scrollTop=top}setScrollLeft(left){this.el.scrollLeft=left}getScrollWidth(){return this.el.scrollWidth}getScrollHeight(){return this.el.scrollHeight}getClientHeight(){return this.el.clientHeight}getClientWidth(){return this.el.clientWidth}},WindowScrollController=class extends ScrollController{getScrollTop(){return window.scrollY}getScrollLeft(){return window.scrollX}setScrollTop(n){window.scroll(window.scrollX,n)}setScrollLeft(n){window.scroll(n,window.scrollY)}getScrollWidth(){return document.documentElement.scrollWidth}getScrollHeight(){return document.documentElement.scrollHeight}getClientHeight(){return document.documentElement.clientHeight}getClientWidth(){return document.documentElement.clientWidth}},ScrollGeomCache=class extends ScrollController{constructor(scrollController,doesListening){super(),this.handleScroll=()=>{this.scrollTop=this.scrollController.getScrollTop(),this.scrollLeft=this.scrollController.getScrollLeft(),this.handleScrollChange()},this.scrollController=scrollController,this.doesListening=doesListening,this.scrollTop=this.origScrollTop=scrollController.getScrollTop(),this.scrollLeft=this.origScrollLeft=scrollController.getScrollLeft(),this.scrollWidth=scrollController.getScrollWidth(),this.scrollHeight=scrollController.getScrollHeight(),this.clientWidth=scrollController.getClientWidth(),this.clientHeight=scrollController.getClientHeight(),this.clientRect=this.computeClientRect(),this.doesListening&&this.getEventTarget().addEventListener("scroll",this.handleScroll)}destroy(){this.doesListening&&this.getEventTarget().removeEventListener("scroll",this.handleScroll)}getScrollTop(){return this.scrollTop}getScrollLeft(){return this.scrollLeft}setScrollTop(top){this.scrollController.setScrollTop(top),this.doesListening||(this.scrollTop=Math.max(Math.min(top,this.getMaxScrollTop()),0),this.handleScrollChange())}setScrollLeft(top){this.scrollController.setScrollLeft(top),this.doesListening||(this.scrollLeft=Math.max(Math.min(top,this.getMaxScrollLeft()),0),this.handleScrollChange())}getClientWidth(){return this.clientWidth}getClientHeight(){return this.clientHeight}getScrollWidth(){return this.scrollWidth}getScrollHeight(){return this.scrollHeight}handleScrollChange(){}},ElementScrollGeomCache=class extends ScrollGeomCache{constructor(el,doesListening){super(new ElementScrollController(el),doesListening)}getEventTarget(){return this.scrollController.el}computeClientRect(){return computeInnerRect(this.scrollController.el)}},WindowScrollGeomCache=class extends ScrollGeomCache{constructor(doesListening){super(new WindowScrollController,doesListening)}getEventTarget(){return window}computeClientRect(){return{left:this.scrollLeft,right:this.scrollLeft+this.clientWidth,top:this.scrollTop,bottom:this.scrollTop+this.clientHeight}}handleScrollChange(){this.clientRect=this.computeClientRect()}},getTime=typeof performance=="function"?performance.now:Date.now,AutoScroller=class{constructor(){this.isEnabled=!0,this.scrollQuery=[window,`.${classNames.internalScroller}`],this.edgeThreshold=50,this.maxVelocity=300,this.pointerScreenX=null,this.pointerScreenY=null,this.isAnimating=!1,this.scrollCaches=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.animate=()=>{if(this.isAnimating){let edge=this.computeBestEdge(this.pointerScreenX+window.scrollX,this.pointerScreenY+window.scrollY);if(edge){let now=getTime();this.handleSide(edge,(now-this.msSinceRequest)/1e3),this.requestAnimation(now)}else this.isAnimating=!1}}}start(pageX,pageY,scrollStartEl){this.isEnabled&&(this.scrollCaches=this.buildCaches(scrollStartEl),this.pointerScreenX=null,this.pointerScreenY=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.handleMove(pageX,pageY))}handleMove(pageX,pageY){if(this.isEnabled){let pointerScreenX=pageX-window.scrollX,pointerScreenY=pageY-window.scrollY,yDelta=this.pointerScreenY===null?0:pointerScreenY-this.pointerScreenY,xDelta=this.pointerScreenX===null?0:pointerScreenX-this.pointerScreenX;yDelta<0?this.everMovedUp=!0:yDelta>0&&(this.everMovedDown=!0),xDelta<0?this.everMovedLeft=!0:xDelta>0&&(this.everMovedRight=!0),this.pointerScreenX=pointerScreenX,this.pointerScreenY=pointerScreenY,this.isAnimating||(this.isAnimating=!0,this.requestAnimation(getTime()))}}stop(){if(this.isEnabled){this.isAnimating=!1;for(let scrollCache of this.scrollCaches)scrollCache.destroy();this.scrollCaches=null}}requestAnimation(now){this.msSinceRequest=now,requestAnimationFrame(this.animate)}handleSide(edge,seconds){let{scrollCache}=edge,{edgeThreshold}=this,invDistance=edgeThreshold-edge.distance,velocity=invDistance*invDistance/(edgeThreshold*edgeThreshold)*this.maxVelocity*seconds,sign=1;switch(edge.name){case"left":sign=-1;case"right":scrollCache.setScrollLeft(scrollCache.getScrollLeft()+velocity*sign);break;case"top":sign=-1;case"bottom":scrollCache.setScrollTop(scrollCache.getScrollTop()+velocity*sign);break}}computeBestEdge(left,top){let{edgeThreshold}=this,bestSide=null,scrollCaches=this.scrollCaches||[];for(let scrollCache of scrollCaches){let rect=scrollCache.clientRect,leftDist=left-rect.left,rightDist=rect.right-left,topDist=top-rect.top,bottomDist=rect.bottom-top;leftDist>=0&&rightDist>=0&&topDist>=0&&bottomDist>=0&&(topDist<=edgeThreshold&&this.everMovedUp&&scrollCache.canScrollUp()&&(!bestSide||bestSide.distance>topDist)&&(bestSide={scrollCache,name:"top",distance:topDist}),bottomDist<=edgeThreshold&&this.everMovedDown&&scrollCache.canScrollDown()&&(!bestSide||bestSide.distance>bottomDist)&&(bestSide={scrollCache,name:"bottom",distance:bottomDist}),leftDist<=edgeThreshold&&this.everMovedLeft&&scrollCache.canScrollLeft()&&(!bestSide||bestSide.distance>leftDist)&&(bestSide={scrollCache,name:"left",distance:leftDist}),rightDist<=edgeThreshold&&this.everMovedRight&&scrollCache.canScrollRight()&&(!bestSide||bestSide.distance>rightDist)&&(bestSide={scrollCache,name:"right",distance:rightDist}))}return bestSide}buildCaches(scrollStartEl){return this.queryScrollEls(scrollStartEl).map(el=>el===window?new WindowScrollGeomCache(!1):new ElementScrollGeomCache(el,!1))}queryScrollEls(scrollStartEl){let els=[];for(let query of this.scrollQuery)typeof query=="object"?els.push(query):els.push(...Array.prototype.slice.call(scrollStartEl.getRootNode().querySelectorAll(query)));return els}},FeaturefulElementDragging=class extends ElementDragging{constructor(containerEl,selector){super(containerEl),this.containerEl=containerEl,this.delay=null,this.minDistance=0,this.touchScrollAllowed=!0,this.mirrorNeedsRevert=!1,this.isInteracting=!1,this.isDragging=!1,this.isDelayEnded=!1,this.isDistanceSurpassed=!1,this.delayTimeoutId=null,this.onPointerDown=ev=>{this.isDragging||(this.isInteracting=!0,this.isDelayEnded=!1,this.isDistanceSurpassed=!1,this.emitter.trigger("pointerdown",ev),this.isInteracting&&(preventSelection(document.body),preventContextMenu(document.body),ev.isTouch||ev.origEvent.preventDefault(),this.mirror.setIsVisible(!1),this.mirror.start(ev.subjectEl,ev.pageX,ev.pageY),this.startDelay(ev),this.minDistance||this.handleDistanceSurpassed(ev)))},this.onPointerMove=ev=>{if(this.isInteracting){if(this.emitter.trigger("pointermove",ev),!this.isDistanceSurpassed){let minDistance=this.minDistance,distanceSq,{deltaX,deltaY}=ev;distanceSq=deltaX*deltaX+deltaY*deltaY,distanceSq>=minDistance*minDistance&&this.handleDistanceSurpassed(ev)}this.isDragging&&(ev.origEvent.type!=="scroll"&&(this.mirror.handleMove(ev.pageX,ev.pageY),this.autoScroller.handleMove(ev.pageX,ev.pageY)),this.emitter.trigger("dragmove",ev))}},this.onPointerUp=ev=>{this.isInteracting&&(this.isInteracting=!1,allowSelection(document.body),allowContextMenu(document.body),this.emitter.trigger("pointerup",ev),this.isDragging&&(this.autoScroller.stop(),this.tryStopDrag(ev)),this.delayTimeoutId&&(clearTimeout(this.delayTimeoutId),this.delayTimeoutId=null))};let pointer=this.pointer=new PointerDragging(containerEl);pointer.emitter.on("pointerdown",this.onPointerDown),pointer.emitter.on("pointermove",this.onPointerMove),pointer.emitter.on("pointerup",this.onPointerUp),selector&&(pointer.selector=selector),this.mirror=new ElementMirror,this.autoScroller=new AutoScroller}destroy(){this.pointer.destroy(),this.onPointerUp({})}startDelay(ev){typeof this.delay=="number"?this.delayTimeoutId=setTimeout(()=>{this.delayTimeoutId=null,this.handleDelayEnd(ev)},this.delay):this.handleDelayEnd(ev)}handleDelayEnd(ev){this.isDelayEnded=!0,this.tryStartDrag(ev)}handleDistanceSurpassed(ev){this.isDistanceSurpassed=!0,this.tryStartDrag(ev)}tryStartDrag(ev){this.isDelayEnded&&this.isDistanceSurpassed&&(!this.pointer.wasTouchScroll||this.touchScrollAllowed)&&(this.isDragging=!0,this.mirrorNeedsRevert=!1,this.autoScroller.start(ev.pageX,ev.pageY,this.containerEl),this.emitter.trigger("dragstart",ev),this.touchScrollAllowed===!1&&this.pointer.cancelTouchScroll())}tryStopDrag(ev){this.mirror.stop(this.mirrorNeedsRevert,this.stopDrag.bind(this,ev))}stopDrag(ev){this.isDragging=!1,this.emitter.trigger("dragend",ev)}cancel(){this.isInteracting&&(this.isInteracting=!1,this.pointer.cancel())}setMirrorIsVisible(bool){this.mirror.setIsVisible(bool)}setMirrorNeedsRevert(bool){this.mirrorNeedsRevert=bool}setAutoScrollEnabled(bool){this.autoScroller.isEnabled=bool}},OffsetTracker=class{constructor(el){this.el=el,this.origRect=computeRect(el),this.isRtl=computeElIsRtl(el),this.scrollCaches=getClippingParents(el).map(scrollEl=>new ElementScrollGeomCache(scrollEl,!0))}destroy(){for(let scrollCache of this.scrollCaches)scrollCache.destroy()}computeLeft(){let left=this.origRect.left;for(let scrollCache of this.scrollCaches)left+=scrollCache.origScrollLeft-scrollCache.getScrollLeft();return left}computeTop(){let top=this.origRect.top;for(let scrollCache of this.scrollCaches)top+=scrollCache.origScrollTop-scrollCache.getScrollTop();return top}isWithinClipping(pageX,pageY){let point={left:pageX,top:pageY};for(let scrollCache of this.scrollCaches)if(!isIgnoredClipping(scrollCache.getEventTarget())&&!pointInsideRect(point,scrollCache.clientRect))return!1;return!0}};function isIgnoredClipping(node){let tagName=node.tagName;return tagName==="HTML"||tagName==="BODY"}var HitDragging=class{constructor(dragging,droppableStore){this.useSubjectCenter=!1,this.requireInitial=!0,this.disablePointCheck=!1,this.initialHit=null,this.movingHit=null,this.finalHit=null,this.handlePointerDown=ev=>{let{dragging:dragging2}=this;this.initialHit=null,this.movingHit=null,this.finalHit=null,this.prepareHits(),this.processFirstCoord(ev),this.initialHit||!this.requireInitial?this.emitter.trigger("pointerdown",ev):dragging2.cancel()},this.handleDragStart=ev=>{this.emitter.trigger("dragstart",ev),this.handleMove(ev,!0)},this.handleDragMove=ev=>{this.emitter.trigger("dragmove",ev),this.handleMove(ev)},this.handlePointerUp=ev=>{this.releaseHits(),this.emitter.trigger("pointerup",ev)},this.handleDragEnd=ev=>{this.movingHit&&this.emitter.trigger("hitupdate",null,!0,ev),this.finalHit=this.movingHit,this.movingHit=null,this.emitter.trigger("dragend",ev)},this.droppableStore=droppableStore,dragging.emitter.on("pointerdown",this.handlePointerDown),dragging.emitter.on("dragstart",this.handleDragStart),dragging.emitter.on("dragmove",this.handleDragMove),dragging.emitter.on("pointerup",this.handlePointerUp),dragging.emitter.on("dragend",this.handleDragEnd),this.dragging=dragging,this.emitter=new Emitter}processFirstCoord(ev){let origPoint={left:ev.pageX,top:ev.pageY},adjustedPoint=origPoint,subjectEl=ev.subjectEl,subjectRect;subjectEl instanceof HTMLElement&&(subjectRect=computeRect(subjectEl),adjustedPoint=constrainPoint(adjustedPoint,subjectRect));let initialHit=this.initialHit=this.queryHitForOffset(adjustedPoint.left,adjustedPoint.top);if(initialHit){if(this.useSubjectCenter&&subjectRect){let slicedSubjectRect=intersectRects(subjectRect,initialHit.rect);slicedSubjectRect&&(adjustedPoint=getRectCenter(slicedSubjectRect))}this.coordAdjust=diffPoints(adjustedPoint,origPoint)}else this.coordAdjust={left:0,top:0}}handleMove(ev,forceHandle){let hit=this.queryHitForOffset(ev.pageX+this.coordAdjust.left,ev.pageY+this.coordAdjust.top);(forceHandle||!isHitsEqual(this.movingHit,hit))&&(this.movingHit=hit,this.emitter.trigger("hitupdate",hit,!1,ev))}prepareHits(){this.offsetTrackers=mapHash(this.droppableStore,interactionSettings=>(interactionSettings.component.prepareHits(),new OffsetTracker(interactionSettings.el)))}releaseHits(){let{offsetTrackers}=this;for(let id in offsetTrackers)offsetTrackers[id].destroy();this.offsetTrackers={}}queryHitForOffset(offsetLeft,offsetTop){let{droppableStore,offsetTrackers}=this,bestHit=null;for(let id in droppableStore){let component=droppableStore[id].component,offsetTracker=offsetTrackers[id];if(offsetTracker&&offsetTracker.isWithinClipping(offsetLeft,offsetTop)){let originLeft=offsetTracker.computeLeft(),originTop=offsetTracker.computeTop(),positionLeft=offsetLeft-originLeft,positionTop=offsetTop-originTop,{origRect}=offsetTracker,width=origRect.right-origRect.left,height=origRect.bottom-origRect.top;if(positionLeft>=0&&positionLeft<width&&positionTop>=0&&positionTop<height){let hit=component.queryHit(offsetTracker.isRtl,positionLeft,positionTop,width,height);hit&&rangeContainsRange(hit.dateProfile.activeRange,hit.dateSpan.range)&&(this.disablePointCheck||offsetTracker.el.contains(offsetTracker.el.getRootNode().elementFromPoint(positionLeft+originLeft-window.scrollX,positionTop+originTop-window.scrollY)))&&(!bestHit||hit.layer>bestHit.layer)&&(hit.componentId=id,hit.context=component.context,hit.rect.left+=originLeft,hit.rect.right+=originLeft,hit.rect.top+=originTop,hit.rect.bottom+=originTop,bestHit=hit)}}}return bestHit}};function isHitsEqual(hit0,hit1){return!hit0&&!hit1?!0:!!hit0!=!!hit1?!1:isDateSpansEqual(hit0.dateSpan,hit1.dateSpan)}function buildDatePointApiWithContext(dateSpan,context){let props={};for(let transform of context.pluginHooks.datePointTransforms)Object.assign(props,transform(dateSpan,context));return Object.assign(props,buildDatePointApi(dateSpan,context.dateEnv)),props}function buildDatePointApi(span,dateEnv){return{date:dateEnv.toDate(span.range.start),dateStr:dateEnv.formatIso(span.range.start,{omitTime:span.allDay}),allDay:span.allDay}}var DateClicking=class extends Interaction{constructor(settings){super(settings),this.handlePointerDown=pev=>{let{dragging}=this,downEl=pev.origEvent.target;this.component.context.emitter.hasHandlers("dateClick")&&this.component.isValidDateDownEl(downEl)||dragging.cancel()},this.handleDragEnd=ev=>{let{component}=this,{pointer}=this.dragging;if(!pointer.wasTouchScroll){let{initialHit,finalHit}=this.hitDragging;if(initialHit&&finalHit&&isHitsEqual(initialHit,finalHit)){let{context}=component,data={...buildDatePointApiWithContext(initialHit.dateSpan,context),dayEl:initialHit.getDayEl(),jsEvent:ev.origEvent,view:context.viewApi||context.calendarApi.view};context.emitter.trigger("dateClick",data)}}},this.dragging=new FeaturefulElementDragging(settings.el),this.dragging.autoScroller.isEnabled=!1;let hitDragging=this.hitDragging=new HitDragging(this.dragging,interactionSettingsToStore(settings));hitDragging.emitter.on("pointerdown",this.handlePointerDown),hitDragging.emitter.on("dragend",this.handleDragEnd)}destroy(){this.dragging.destroy()}},DateSelecting=class extends Interaction{constructor(settings){super(settings),this.dragSelection=null,this.handlePointerDown=ev=>{let{component:component2,dragging:dragging2}=this,{options:options2}=component2.context;options2.selectable&&component2.isValidDateDownEl(ev.origEvent.target)?dragging2.delay=ev.isTouch?getComponentTouchDelay$1(component2):null:dragging2.cancel()},this.handleDragStart=ev=>{this.component.context.calendarApi.unselect(ev)},this.handleHitUpdate=(hit,isFinal)=>{let{context}=this.component,dragSelection=null,isInvalid=!1;if(hit){let initialHit=this.hitDragging.initialHit;hit.componentId===initialHit.componentId&&this.isHitComboAllowed&&!this.isHitComboAllowed(initialHit,hit)||(dragSelection=joinHitsIntoSelection(initialHit,hit,context.pluginHooks.dateSelectionTransformers)),(!dragSelection||!isDateSelectionValid(dragSelection,hit.dateProfile,context))&&(isInvalid=!0,dragSelection=null)}dragSelection?context.dispatch({type:"SELECT_DATES",selection:dragSelection}):isFinal||context.dispatch({type:"UNSELECT_DATES"}),isInvalid?disableCursor():enableCursor(),isFinal||(this.dragSelection=dragSelection)},this.handlePointerUp=pev=>{this.dragSelection?(triggerDateSelect(this.dragSelection,pev,this.component.context),this.dragSelection=null):this.component.context.emitter.trigger("_noDateSelect")};let{component}=settings,{options}=component.context,dragging=this.dragging=new FeaturefulElementDragging(settings.el);dragging.touchScrollAllowed=!1,dragging.minDistance=options.selectMinDistance||0,dragging.autoScroller.isEnabled=options.dragScroll;let hitDragging=this.hitDragging=new HitDragging(this.dragging,interactionSettingsToStore(settings));hitDragging.emitter.on("pointerdown",this.handlePointerDown),hitDragging.emitter.on("dragstart",this.handleDragStart),hitDragging.emitter.on("hitupdate",this.handleHitUpdate),hitDragging.emitter.on("pointerup",this.handlePointerUp)}destroy(){this.dragging.destroy()}};function getComponentTouchDelay$1(component){let{options}=component.context,delay=options.selectLongPressDelay;return delay==null&&(delay=options.longPressDelay),delay}function joinHitsIntoSelection(hit0,hit1,dateSelectionTransformers){let dateSpan0=hit0.dateSpan,dateSpan1=hit1.dateSpan,ms=[dateSpan0.range.start,dateSpan0.range.end,dateSpan1.range.start,dateSpan1.range.end];ms.sort(compareNumbers2);let props={};for(let transformer of dateSelectionTransformers){let res=transformer(hit0,hit1);if(res===!1)return null;res&&Object.assign(props,res)}return props.range={start:ms[0],end:ms[3]},props.allDay=dateSpan0.allDay,props}var EventDragging=class _EventDragging extends Interaction{constructor(settings){super(settings),this.subjectEl=null,this.isDragging=!1,this.eventRange=null,this.relevantEvents=null,this.receivingContext=null,this.validMutation=null,this.mutatedRelevantEvents=null,this.handlePointerDown=ev=>{let origTarget=ev.origEvent.target,{component:component2,dragging:dragging2}=this,{mirror}=dragging2,{options:options2}=component2.context,initialContext=component2.context;this.subjectEl=ev.subjectEl;let eventInstanceId=(this.eventRange=getElEventRange(ev.subjectEl)).instance.instanceId;this.relevantEvents=getRelevantEvents(initialContext.getCurrentData().eventStore,eventInstanceId),dragging2.minDistance=ev.isTouch?0:options2.eventDragMinDistance,dragging2.delay=ev.isTouch&&eventInstanceId!==component2.props.eventSelection?getComponentTouchDelay(component2):null,mirror.parentNode=getAppendableRoot(origTarget),mirror.revertDuration=options2.dragRevertDuration,mirror.colorScheme=options2.colorScheme||"",component2.isValidSegDownEl(origTarget)&&!origTarget.closest(`.${classNames.internalEventResizer}`)?this.isDragging=ev.subjectEl.classList.contains(classNames.internalEventDraggable):dragging2.cancel()},this.handleDragStart=ev=>{let initialContext=this.component.context,eventRange=this.eventRange,eventInstanceId=eventRange.instance.instanceId;ev.isTouch?eventInstanceId!==this.component.props.eventSelection&&initialContext.dispatch({type:"SELECT_EVENT",eventInstanceId}):initialContext.dispatch({type:"UNSELECT_EVENT"}),this.isDragging&&(initialContext.calendarApi.unselect(ev),initialContext.emitter.trigger("eventDragStart",{el:this.subjectEl,event:new EventImpl(initialContext,eventRange.def,eventRange.instance),jsEvent:ev.origEvent,view:initialContext.viewApi}))},this.handleHitUpdate=(hit,isFinal)=>{if(!this.isDragging)return;let relevantEvents=this.relevantEvents,initialHit=this.hitDragging.initialHit,initialContext=this.component.context,receivingContext=null,mutation=null,mutatedRelevantEvents=null,isInvalid=!1,interaction={affectedEvents:relevantEvents,mutatedEvents:createEmptyEventStore(),isEvent:!0};if(hit){receivingContext=hit.context;let receivingOptions=receivingContext.options;initialContext===receivingContext||receivingOptions.editable&&receivingOptions.droppable?(mutation=computeEventMutation(initialHit,hit,this.eventRange.instance.range.start,receivingContext.getCurrentData().pluginHooks.eventDragMutationMassagers),mutation&&(mutatedRelevantEvents=applyMutationToEventStore(relevantEvents,receivingContext.getCurrentData().eventUiBases,mutation,receivingContext),interaction.mutatedEvents=mutatedRelevantEvents,isInteractionValid(interaction,hit.dateProfile,receivingContext)||(isInvalid=!0,mutation=null,mutatedRelevantEvents=null,interaction.mutatedEvents=createEmptyEventStore()))):receivingContext=null}this.displayDrag(receivingContext,interaction),isInvalid?disableCursor():enableCursor(),isFinal||(initialContext===receivingContext&&isHitsEqual(initialHit,hit)&&(mutation=null),this.dragging.setMirrorNeedsRevert(!mutation),this.dragging.setMirrorIsVisible(!hit||!this.subjectEl.getRootNode().querySelector(`.${classNames.internalEventMirror}`)),this.receivingContext=receivingContext,this.validMutation=mutation,this.mutatedRelevantEvents=mutatedRelevantEvents)},this.handlePointerUp=()=>{this.isDragging||this.cleanup()},this.handleDragEnd=ev=>{if(this.isDragging){let initialContext=this.component.context,initialView=initialContext.viewApi,{receivingContext,validMutation}=this,eventDef=this.eventRange.def,eventInstance=this.eventRange.instance,eventApi=new EventImpl(initialContext,eventDef,eventInstance),relevantEvents=this.relevantEvents,mutatedRelevantEvents=this.mutatedRelevantEvents,{finalHit}=this.hitDragging;if(this.clearDrag(),initialContext.emitter.trigger("eventDragStop",{el:this.subjectEl,event:eventApi,jsEvent:ev.origEvent,view:initialView}),validMutation){if(receivingContext===initialContext){let updatedEventApi=new EventImpl(initialContext,mutatedRelevantEvents.defs[eventDef.defId],eventInstance?mutatedRelevantEvents.instances[eventInstance.instanceId]:null);initialContext.dispatch({type:"MERGE_EVENTS",eventStore:mutatedRelevantEvents});let eventChangeData={oldEvent:eventApi,event:updatedEventApi,relatedEvents:buildEventApis(mutatedRelevantEvents,initialContext,eventInstance),revert(){initialContext.dispatch({type:"MERGE_EVENTS",eventStore:relevantEvents})}},transformed={};for(let transformer of initialContext.getCurrentData().pluginHooks.eventDropTransformers)Object.assign(transformed,transformer(validMutation,initialContext));initialContext.emitter.trigger("eventDrop",{...eventChangeData,...transformed,el:ev.subjectEl,delta:validMutation.datesDelta,jsEvent:ev.origEvent,view:initialView}),initialContext.emitter.trigger("eventChange",eventChangeData)}else if(receivingContext){let eventRemoveData={event:eventApi,relatedEvents:buildEventApis(relevantEvents,initialContext,eventInstance),revert(){initialContext.dispatch({type:"MERGE_EVENTS",eventStore:relevantEvents})}};initialContext.emitter.trigger("eventLeave",{...eventRemoveData,draggedEl:ev.subjectEl,view:initialView}),initialContext.dispatch({type:"REMOVE_EVENTS",eventStore:relevantEvents}),initialContext.emitter.trigger("eventRemove",eventRemoveData);let addedEventDef=mutatedRelevantEvents.defs[eventDef.defId],addedEventInstance=mutatedRelevantEvents.instances[eventInstance.instanceId],addedEventApi=new EventImpl(receivingContext,addedEventDef,addedEventInstance);receivingContext.dispatch({type:"MERGE_EVENTS",eventStore:mutatedRelevantEvents});let eventAddData={event:addedEventApi,relatedEvents:buildEventApis(mutatedRelevantEvents,receivingContext,addedEventInstance),revert(){receivingContext.dispatch({type:"REMOVE_EVENTS",eventStore:mutatedRelevantEvents})}};receivingContext.emitter.trigger("eventAdd",eventAddData),ev.isTouch&&receivingContext.dispatch({type:"SELECT_EVENT",eventInstanceId:eventInstance.instanceId}),receivingContext.emitter.trigger("drop",{...buildDatePointApiWithContext(finalHit.dateSpan,receivingContext),draggedEl:ev.subjectEl,jsEvent:ev.origEvent,view:finalHit.context.viewApi}),receivingContext.emitter.trigger("eventReceive",{...eventAddData,draggedEl:ev.subjectEl,view:finalHit.context.viewApi})}}else initialContext.emitter.trigger("_noEventDrop")}this.cleanup()};let{component}=this,{options}=component.context,dragging=this.dragging=new FeaturefulElementDragging(settings.el);dragging.pointer.selector=_EventDragging.SELECTOR,dragging.touchScrollAllowed=!1,dragging.autoScroller.isEnabled=options.dragScroll;let hitDragging=this.hitDragging=new HitDragging(this.dragging,interactionSettingsStore);hitDragging.useSubjectCenter=settings.useEventCenter,hitDragging.emitter.on("pointerdown",this.handlePointerDown),hitDragging.emitter.on("dragstart",this.handleDragStart),hitDragging.emitter.on("hitupdate",this.handleHitUpdate),hitDragging.emitter.on("pointerup",this.handlePointerUp),hitDragging.emitter.on("dragend",this.handleDragEnd)}destroy(){this.dragging.destroy()}displayDrag(nextContext,state){let initialContext=this.component.context,prevContext=this.receivingContext;prevContext&&prevContext!==nextContext&&(prevContext===initialContext?prevContext.dispatch({type:"SET_EVENT_DRAG",state:{affectedEvents:state.affectedEvents,mutatedEvents:createEmptyEventStore(),isEvent:!0}}):prevContext.dispatch({type:"UNSET_EVENT_DRAG"})),nextContext&&nextContext.dispatch({type:"SET_EVENT_DRAG",state})}clearDrag(){let initialCalendar=this.component.context,{receivingContext}=this;receivingContext&&receivingContext.dispatch({type:"UNSET_EVENT_DRAG"}),initialCalendar!==receivingContext&&initialCalendar.dispatch({type:"UNSET_EVENT_DRAG"})}cleanup(){this.isDragging=!1,this.eventRange=null,this.relevantEvents=null,this.receivingContext=null,this.validMutation=null,this.mutatedRelevantEvents=null}};EventDragging.SELECTOR=`.${classNames.internalEventDraggable}, .${classNames.internalEventResizable}`;function computeEventMutation(hit0,hit1,eventInstanceStart,massagers){let dateSpan0=hit0.dateSpan,dateSpan1=hit1.dateSpan,date0=dateSpan0.range.start,date1=dateSpan1.range.start,standardProps={};dateSpan0.allDay!==dateSpan1.allDay&&(standardProps.allDay=dateSpan1.allDay,standardProps.hasEnd=hit1.context.options.allDayMaintainDuration,dateSpan1.allDay?date0=startOfDay4(eventInstanceStart):date0=eventInstanceStart);let delta=diffDates(date0,date1,hit0.context.dateEnv,hit0.componentId===hit1.componentId?hit0.largeUnit:null);delta.milliseconds&&(standardProps.allDay=!1);let mutation={datesDelta:delta,standardProps};for(let massager of massagers)massager(mutation,hit0,hit1);return mutation}function getComponentTouchDelay(component){let{options}=component.context,delay=options.eventLongPressDelay;return delay==null&&(delay=options.longPressDelay),delay}var EventResizing=class extends Interaction{constructor(settings){super(settings),this.draggingSegEl=null,this.draggingEventRange=null,this.eventRange=null,this.relevantEvents=null,this.validMutation=null,this.mutatedRelevantEvents=null,this.handlePointerDown=ev=>{let{component:component2}=this,segEl=this.querySegEl(ev),eventRange=this.eventRange=getElEventRange(segEl);this.dragging.minDistance=component2.context.options.eventDragMinDistance,this.component.isValidSegDownEl(ev.origEvent.target)&&!(ev.isTouch&&this.component.props.eventSelection!==eventRange.instance.instanceId)||this.dragging.cancel()},this.handleDragStart=ev=>{let{context}=this.component,eventRange=this.eventRange;this.relevantEvents=getRelevantEvents(context.getCurrentData().eventStore,this.eventRange.instance.instanceId);let segEl=this.querySegEl(ev);this.draggingSegEl=segEl,this.draggingEventRange=getElEventRange(segEl),context.calendarApi.unselect(),context.emitter.trigger("eventResizeStart",{el:segEl,event:new EventImpl(context,eventRange.def,eventRange.instance),jsEvent:ev.origEvent,view:context.viewApi})},this.handleHitUpdate=(hit,isFinal,ev)=>{let{context}=this.component,relevantEvents=this.relevantEvents,initialHit=this.hitDragging.initialHit,eventInstance=this.eventRange.instance,mutation=null,mutatedRelevantEvents=null,isInvalid=!1,interaction={affectedEvents:relevantEvents,mutatedEvents:createEmptyEventStore(),isEvent:!0};hit&&(hit.componentId===initialHit.componentId&&this.isHitComboAllowed&&!this.isHitComboAllowed(initialHit,hit)||(mutation=computeMutation(initialHit,hit,ev.subjectEl.classList.contains(classNames.internalEventResizerStart),eventInstance.range))),mutation&&(mutatedRelevantEvents=applyMutationToEventStore(relevantEvents,context.getCurrentData().eventUiBases,mutation,context),interaction.mutatedEvents=mutatedRelevantEvents,isInteractionValid(interaction,hit.dateProfile,context)||(isInvalid=!0,mutation=null,mutatedRelevantEvents=null,interaction.mutatedEvents=null)),mutatedRelevantEvents?context.dispatch({type:"SET_EVENT_RESIZE",state:interaction}):context.dispatch({type:"UNSET_EVENT_RESIZE"}),isInvalid?disableCursor():enableCursor(),isFinal||(mutation&&isHitsEqual(initialHit,hit)&&(mutation=null),this.validMutation=mutation,this.mutatedRelevantEvents=mutatedRelevantEvents)},this.handleDragEnd=ev=>{let{context}=this.component,eventDef=this.eventRange.def,eventInstance=this.eventRange.instance,eventApi=new EventImpl(context,eventDef,eventInstance),relevantEvents=this.relevantEvents,mutatedRelevantEvents=this.mutatedRelevantEvents;if(context.emitter.trigger("eventResizeStop",{el:this.draggingSegEl,event:eventApi,jsEvent:ev.origEvent,view:context.viewApi}),this.validMutation){let updatedEventApi=new EventImpl(context,mutatedRelevantEvents.defs[eventDef.defId],eventInstance?mutatedRelevantEvents.instances[eventInstance.instanceId]:null);context.dispatch({type:"MERGE_EVENTS",eventStore:mutatedRelevantEvents});let eventChangeData={oldEvent:eventApi,event:updatedEventApi,relatedEvents:buildEventApis(mutatedRelevantEvents,context,eventInstance),revert(){context.dispatch({type:"MERGE_EVENTS",eventStore:relevantEvents})}};context.emitter.trigger("eventResize",{...eventChangeData,el:this.draggingSegEl,startDelta:this.validMutation.startDelta||createDuration(0),endDelta:this.validMutation.endDelta||createDuration(0),jsEvent:ev.origEvent,view:context.viewApi}),context.emitter.trigger("eventChange",eventChangeData)}else context.emitter.trigger("_noEventResize");this.draggingEventRange=null,this.relevantEvents=null,this.validMutation=null};let{component}=settings,dragging=this.dragging=new FeaturefulElementDragging(settings.el);dragging.pointer.selector=`.${classNames.internalEventResizer}`,dragging.touchScrollAllowed=!1,dragging.autoScroller.isEnabled=component.context.options.dragScroll;let hitDragging=this.hitDragging=new HitDragging(this.dragging,interactionSettingsToStore(settings));hitDragging.emitter.on("pointerdown",this.handlePointerDown),hitDragging.emitter.on("dragstart",this.handleDragStart),hitDragging.emitter.on("hitupdate",this.handleHitUpdate),hitDragging.emitter.on("dragend",this.handleDragEnd)}destroy(){this.dragging.destroy()}querySegEl(ev){return ev.subjectEl.closest(`.${classNames.internalEvent}`)}};function computeMutation(hit0,hit1,isFromStart,instanceRange){let dateEnv=hit0.context.dateEnv,date0=hit0.dateSpan.range.start,date1=hit1.dateSpan.range.start,delta=diffDates(date0,date1,dateEnv,hit0.largeUnit);if(isFromStart){if(dateEnv.add(instanceRange.start,delta)<instanceRange.end)return{startDelta:delta}}else if(dateEnv.add(instanceRange.end,delta)>instanceRange.start)return{endDelta:delta};return null}var UnselectAuto=class{constructor(context){this.context=context,this.isRecentPointerDateSelect=!1,this.matchesCancel=!1,this.matchesEvent=!1,this.onSelect=selectInfo=>{selectInfo.jsEvent&&(this.isRecentPointerDateSelect=!0)},this.onDocumentPointerDown=pev=>{let unselectCancel=this.context.options.unselectCancel,downEl=getEventTargetViaRoot(pev.origEvent);this.matchesCancel=!!downEl.closest(unselectCancel),this.matchesEvent=!!downEl.closest(EventDragging.SELECTOR)},this.onDocumentPointerUp=pev=>{let{context:context2}=this,{documentPointer:documentPointer2}=this,calendarState=context2.getCurrentData();if(!documentPointer2.wasTouchScroll){if(calendarState.dateSelection&&!this.isRecentPointerDateSelect){let unselectAuto=context2.options.unselectAuto;unselectAuto&&(!unselectAuto||!this.matchesCancel)&&context2.calendarApi.unselect(pev)}calendarState.eventSelection&&!this.matchesEvent&&context2.dispatch({type:"UNSELECT_EVENT"})}this.isRecentPointerDateSelect=!1};let documentPointer=this.documentPointer=new PointerDragging(document);documentPointer.shouldIgnoreMove=!0,documentPointer.shouldWatchScroll=!1,documentPointer.emitter.on("pointerdown",this.onDocumentPointerDown),documentPointer.emitter.on("pointerup",this.onDocumentPointerUp),context.emitter.on("select",this.onSelect)}destroy(){this.context.emitter.off("select",this.onSelect),this.documentPointer.destroy()}},interactionPlugin={name:"interaction",componentInteractions:[DateClicking,DateSelecting,EventDragging,EventResizing],calendarInteractions:[UnselectAuto],elementDraggingImpl:FeaturefulElementDragging};config.dataAttrPrefix="";var import_jsx_runtime7=require("react/jsx-runtime");var xxsTextClass="fc-classic-vQz",outlineWidthClass="fc-classic-0Bj",outlineWidthFocusClass="fc-classic-uqo",outlineOffsetClass="fc-classic-3Xj",outlineInsetClass="fc-classic-fFh",primaryOutlineColorClass="fc-classic-zIi",strongSolidPressableClass="fc-classic-BaR",mutedHoverClass="fc-classic-4yP",mutedHoverPressableClass=`${mutedHoverClass} fc-classic-tCP fc-classic-8gz`,faintHoverClass="fc-classic-Ubk",faintHoverPressableClass=`${faintHoverClass} fc-classic-OIx fc-classic-28F`,buttonIconClass="fc-classic-XUJ",blockPointerResizerClass="fc-classic-1EY fc-classic-pps fc-classic-vs6",rowPointerResizerClass=`${blockPointerResizerClass} fc-classic-AWB fc-classic-hza`,columnPointerResizerClass=`${blockPointerResizerClass} fc-classic-MaV fc-classic-uuA`,blockTouchResizerClass="fc-classic-1EY fc-classic-3wQ fc-classic-wsy fc-classic-lNM fc-classic-Jk3 fc-classic-AAA",rowTouchResizerClass=`${blockTouchResizerClass} fc-classic-ERR fc-classic-Dq8`,columnTouchResizerClass=`${blockTouchResizerClass} fc-classic-1V6 fc-classic-F99`,getDayClass=info=>joinClassNames("fc-classic-wsy",info.isMajor?"fc-classic-C0k":"fc-classic-C1x",info.isDisabled?"fc-classic-iYS":info.isToday&&"fc-classic-hbn"),getSlotClass=info=>joinClassNames("fc-classic-wsy fc-classic-C1x",info.isMinor&&"fc-classic-TN2"),dayRowCommonClasses={listItemEventClass:info=>joinClassNames("fc-classic-Ika fc-classic-7A6 fc-classic-Fvv",info.isNarrow?"fc-classic-148":"fc-classic-cKZ",info.isSelected?joinClassNames("fc-classic-k3f",info.isDragging&&"fc-classic-qNs"):info.isInteractive?mutedHoverPressableClass:mutedHoverClass),listItemEventBeforeClass:info=>joinClassNames("fc-classic-Mjo",info.isNarrow?"fc-classic-148":"fc-classic-rVY"),listItemEventInnerClass:info=>joinClassNames("fc-classic-dl1 fc-classic-1sP fc-classic-XpK fc-classic-z5u fc-classic-aTF",info.isNarrow?xxsTextClass:"fc-classic-a3B"),listItemEventTimeClass:"fc-classic-F1o fc-classic-TZ4 fc-classic-pKG fc-classic-1Zl",listItemEventTitleClass:"fc-classic-F1o fc-classic-DIS fc-classic-TZ4 fc-classic-pKG fc-classic-OLq",rowEventClass:info=>joinClassNames(info.isStart&&joinClassNames("fc-classic-kmj",info.isNarrow?"fc-classic-qvL":"fc-classic-Jzj"),info.isEnd&&joinClassNames("fc-classic-Skl",info.isNarrow?"fc-classic-9hC":"fc-classic-3e1")),rowEventInnerClass:"fc-classic-z5u fc-classic-aTF",rowEventTimeClass:"fc-classic-F1o",rowEventTitleClass:"fc-classic-F1o",rowMoreLinkClass:info=>joinClassNames("fc-classic-Ika fc-classic-wsy fc-classic-Fvv",info.isNarrow?"fc-classic-148 fc-classic-0Pr":"fc-classic-sI7 fc-classic-cKZ fc-classic-d0j",mutedHoverPressableClass),rowMoreLinkInnerClass:info=>joinClassNames("fc-classic-7A6",info.isNarrow?xxsTextClass:"fc-classic-a3B")},expanderIconClass="fc-classic-vnf fc-classic-mAY",continuationArrowClass="fc-classic-rVY fc-classic-XM3 fc-classic-rif fc-classic-lMo",index={name:"theme-classic",optionDefaults:{className:"fc-classic-yth fc-classic-n5m",viewClass:info=>{let hasBorderTop=info.options.headerToolbar||!info.borderlessTop,hasBorderBottom=info.options.footerToolbar||!info.borderlessBottom,hasBorderX=!info.borderlessX;return joinClassNames("fc-classic-Jk3 fc-classic-GAX fc-classic-C1x",hasBorderTop&&"fc-classic-ku3",hasBorderBottom&&"fc-classic-zi1",hasBorderX&&"fc-classic-1Wx")},toolbarClass:info=>joinClassNames("fc-classic-dl1 fc-classic-1sP fc-classic-dNl fc-classic-XpK fc-classic-N2M fc-classic-wwb",info.borderlessX&&"fc-classic-Apf"),toolbarSectionClass:"fc-classic-yi0 fc-classic-dl1 fc-classic-1sP fc-classic-XpK fc-classic-wwb",toolbarTitleClass:"fc-classic-AVD fc-classic-DIS",buttonGroupClass:"fc-classic-dl1 fc-classic-1sP fc-classic-XpK",buttonClass:info=>joinClassNames("fc-classic-dl6 fc-classic-1Wx fc-classic-dl1 fc-classic-1sP fc-classic-XpK fc-classic-sOR fc-classic-lYz fc-classic-vwH fc-classic-9yp fc-classic-RnT fc-classic-cfp fc-classic-Z9U",info.isIconOnly?"fc-classic-Eaq":"fc-classic-Apf",info.buttonGroup?"fc-classic-uk6 fc-classic-Tuc":"fc-classic-Ig4",info.isSelected?"fc-classic-rQI fc-classic-Adi":"fc-classic-vXO fc-classic-bqK fc-classic-aIH fc-classic-nQ5 fc-classic-JWq fc-classic-9Rj fc-classic-5ky",info.isDisabled&&"fc-classic-Q3Z fc-classic-3Lc"),buttons:{prev:{iconContent:()=>chevronLeft(`${buttonIconClass} fc-classic-asP`)},next:{iconContent:()=>chevronLeft(`${buttonIconClass} fc-classic-jmT fc-classic-jY6`)},prevYear:{iconContent:()=>chevronsLeft(`${buttonIconClass} fc-classic-asP`)},nextYear:{iconContent:()=>chevronsLeft(`${buttonIconClass} fc-classic-jmT fc-classic-jY6`)}},eventColor:"var(--fc-classic-event)",eventContrastColor:"var(--fc-classic-event-contrast)",eventClass:info=>joinClassNames(info.isDragging&&"fc-classic-n5m",info.event.url&&"fc-classic-JiE",info.isSelected?joinClassNames(outlineWidthClass,info.isDragging?"fc-classic-1kP":"fc-classic-tkw"):outlineWidthFocusClass,primaryOutlineColorClass),backgroundEventColor:"var(--fc-classic-background-event)",backgroundEventClass:"fc-classic-hsC fc-classic-jsy fc-classic-DO7",backgroundEventTitleClass:info=>joinClassNames("fc-classic-MGT fc-classic-L1Y",info.isNarrow?`fc-classic-KUX ${xxsTextClass}`:"fc-classic-XJa fc-classic-a3B"),listItemEventClass:"fc-classic-XpK",listItemEventBeforeClass:"fc-classic-lNM fc-classic-AAA",listItemEventInnerClass:"fc-classic-GAX",blockEventClass:info=>joinClassNames("fc-classic-bCs fc-classic-eYX fc-classic-d0j fc-classic-DO7 fc-classic-YjJ fc-classic-vwH",info.isDragging&&!info.isSelected&&"fc-classic-iTG",outlineOffsetClass),blockEventInnerClass:"fc-classic-i9F fc-classic-cfp",blockEventTimeClass:"fc-classic-TZ4 fc-classic-pKG fc-classic-1Zl",blockEventTitleClass:"fc-classic-TZ4 fc-classic-pKG fc-classic-OLq",rowEventClass:info=>joinClassNames("fc-classic-Ika fc-classic-JIC",info.isStart&&"fc-classic-3J4",info.isEnd&&"fc-classic-USt"),rowEventBeforeClass:info=>joinClassNames(info.isStartResizable&&joinClassNames(info.isSelected?rowTouchResizerClass:rowPointerResizerClass,"fc-classic-11a")),rowEventAfterClass:info=>joinClassNames(info.isEndResizable&&joinClassNames(info.isSelected?rowTouchResizerClass:rowPointerResizerClass,"fc-classic-bEw")),rowEventInnerClass:info=>joinClassNames("fc-classic-dl1 fc-classic-1sP fc-classic-XpK",info.isNarrow?xxsTextClass:"fc-classic-a3B"),rowEventTimeClass:"fc-classic-DIS",columnEventClass:info=>joinClassNames("fc-classic-1Wx fc-classic-A3h fc-classic-yKG",info.isStart&&"fc-classic-ku3 fc-classic-Z7Q",info.isEnd&&"fc-classic-Ika fc-classic-zi1 fc-classic-2qh"),columnEventBeforeClass:info=>joinClassNames(info.isStartResizable&&joinClassNames(info.isSelected?columnTouchResizerClass:columnPointerResizerClass,"fc-classic-YDC")),columnEventAfterClass:info=>joinClassNames(info.isEndResizable&&joinClassNames(info.isSelected?columnTouchResizerClass:columnPointerResizerClass,"fc-classic-fJL")),columnEventInnerClass:info=>joinClassNames("fc-classic-dl1",info.isShort?"fc-classic-KUX fc-classic-1sP fc-classic-XpK fc-classic-NWN":"fc-classic-oQ2 fc-classic-sgX"),columnEventTimeClass:info=>joinClassNames(!info.isShort&&"fc-classic-166",xxsTextClass),columnEventTitleClass:info=>joinClassNames(!info.isShort&&"fc-classic-2rx",info.isShort||info.isNarrow?xxsTextClass:"fc-classic-a3B"),moreLinkClass:`${outlineWidthFocusClass} ${primaryOutlineColorClass}`,moreLinkInnerClass:"fc-classic-TZ4 fc-classic-pKG",columnMoreLinkClass:`fc-classic-Ika fc-classic-Fvv fc-classic-wsy fc-classic-d0j fc-classic-4MR ${strongSolidPressableClass} fc-classic-vwH fc-classic-A3h fc-classic-yKG ${outlineOffsetClass}`,columnMoreLinkInnerClass:info=>joinClassNames("fc-classic-KUX",info.isNarrow?xxsTextClass:"fc-classic-a3B"),dayHeaderAlign:info=>info.inPopover?"start":"center",dayHeaderClass:info=>joinClassNames("fc-classic-E9P",info.isDisabled&&"fc-classic-iYS",info.inPopover?"fc-classic-zi1 fc-classic-C1x fc-classic-k3f":joinClassNames("fc-classic-wsy",info.isMajor?"fc-classic-C0k":"fc-classic-C1x")),dayHeaderInnerClass:info=>joinClassNames("fc-classic-rVY fc-classic-cJ3 fc-classic-dl1 fc-classic-sgX",info.isNarrow?xxsTextClass:"fc-classic-9yp"),dayHeaderDividerClass:"fc-classic-zi1 fc-classic-C1x",dayCellClass:getDayClass,dayCellTopClass:info=>joinClassNames(info.isNarrow?"fc-classic-toR":"fc-classic-84e","fc-classic-dl1 fc-classic-1sP fc-classic-LMv"),dayCellTopInnerClass:info=>joinClassNames("fc-classic-rVY fc-classic-TZ4",info.isNarrow?`fc-classic-cJ3 ${xxsTextClass}`:"fc-classic-V9v fc-classic-9yp",info.isOther&&"fc-classic-taq",info.monthText&&"fc-classic-DIS"),dayCellInnerClass:info=>joinClassNames(info.inPopover&&"fc-classic-3N5"),popoverClass:"fc-classic-Jk3 fc-classic-GAX fc-classic-wsy fc-classic-C1x fc-classic-tkw fc-classic-aNc fc-classic-n5m",popoverCloseClass:`fc-classic-bCs fc-classic-1EY fc-classic-2ik fc-classic-2w8 ${outlineWidthFocusClass} ${primaryOutlineColorClass} fc-classic-Z9U`,popoverCloseContent:()=>x("fc-classic-XUJ fc-classic-9yp fc-classic-mAY"),dayLaneClass:getDayClass,dayLaneInnerClass:info=>info.isStack?"fc-classic-gMS":info.isNarrow?"fc-classic-148":"fc-classic-Jzj fc-classic-B3G",slotLaneClass:getSlotClass,listDayHeaderClass:"fc-classic-zi1 fc-classic-C1x fc-classic-SDU fc-classic-nHS fc-classic-dl1 fc-classic-1sP fc-classic-XpK fc-classic-N2M",listDayHeaderInnerClass:"fc-classic-Apf fc-classic-dl6 fc-classic-9yp fc-classic-DIS",singleMonthClass:info=>joinClassNames(info.multiMonthColumns>1&&"fc-classic-jD5",info.multiMonthColumns===1&&!info.isLast&&"fc-classic-zi1 fc-classic-C1x"),singleMonthHeaderClass:info=>joinClassNames(info.multiMonthColumns>1?"fc-classic-cM0":"fc-classic-dl6 fc-classic-zi1 fc-classic-C1x fc-classic-Jk3","fc-classic-XpK"),singleMonthHeaderInnerClass:"fc-classic-1Po fc-classic-DIS",tableHeaderClass:"fc-classic-Jk3",fillerClass:"fc-classic-wsy fc-classic-C1x fc-classic-lMo",dayHeaderRowClass:"fc-classic-wsy fc-classic-C1x",dayRowClass:"fc-classic-wsy fc-classic-C1x",slotHeaderRowClass:"fc-classic-wsy fc-classic-C1x",slotHeaderClass:getSlotClass,navLinkClass:`fc-classic-Eu0 ${outlineWidthFocusClass} ${outlineInsetClass} ${primaryOutlineColorClass}`,inlineWeekNumberClass:info=>joinClassNames("fc-classic-1EY fc-classic-n9G fc-classic-rbS fc-classic-C2g fc-classic-KUX fc-classic-HXA fc-classic-m9h fc-classic-k3f",info.isNarrow?xxsTextClass:"fc-classic-9yp"),nonBusinessHoursClass:"fc-classic-iYS",highlightClass:"fc-classic-hLU",resourceDayHeaderAlign:"center",resourceDayHeaderClass:info=>joinClassNames("fc-classic-wsy",info.isMajor?"fc-classic-C0k":"fc-classic-C1x"),resourceDayHeaderInnerClass:info=>joinClassNames("fc-classic-rVY fc-classic-cJ3 fc-classic-dl1 fc-classic-sgX",info.isNarrow?xxsTextClass:"fc-classic-9yp"),resourceColumnHeaderClass:"fc-classic-wsy fc-classic-C1x fc-classic-E9P",resourceColumnHeaderInnerClass:"fc-classic-bvX fc-classic-9yp",resourceColumnResizerClass:"fc-classic-1EY fc-classic-AWB fc-classic-4Tv fc-classic-dnf",resourceGroupHeaderClass:"fc-classic-wsy fc-classic-C1x fc-classic-k3f",resourceGroupHeaderInnerClass:"fc-classic-bvX fc-classic-9yp",resourceCellClass:"fc-classic-wsy fc-classic-C1x",resourceCellInnerClass:"fc-classic-bvX fc-classic-9yp",resourceIndentClass:"fc-classic-Mde fc-classic-kp0 fc-classic-E9P",resourceExpanderClass:`fc-classic-bCs ${outlineWidthFocusClass} ${primaryOutlineColorClass}`,resourceExpanderContent:info=>info.isExpanded?minusSquare(expanderIconClass):plusSquare(expanderIconClass),resourceHeaderRowClass:"fc-classic-wsy fc-classic-C1x",resourceRowClass:"fc-classic-wsy fc-classic-C1x",resourceColumnDividerClass:"fc-classic-1Wx fc-classic-C1x fc-classic-a7i fc-classic-k3f",resourceGroupLaneClass:"fc-classic-wsy fc-classic-C1x fc-classic-k3f",resourceLaneClass:"fc-classic-wsy fc-classic-C1x",resourceLaneBottomClass:info=>info.options.eventOverlap&&"fc-classic-zrJ",timelineBottomClass:"fc-classic-zrJ"},views:{dayGrid:{...dayRowCommonClasses,dayCellBottomClass:"fc-classic-toR"},multiMonth:{...dayRowCommonClasses,dayCellBottomClass:"fc-classic-toR",tableClass:info=>joinClassNames(info.multiMonthColumns>1&&"fc-classic-C1x fc-classic-wsy")},timeGrid:{...dayRowCommonClasses,dayCellBottomClass:"fc-classic-mhE",weekNumberHeaderClass:"fc-classic-XpK fc-classic-LMv",weekNumberHeaderInnerClass:info=>joinClassNames("fc-classic-rVY fc-classic-cJ3",info.isNarrow?xxsTextClass:"fc-classic-9yp"),allDayHeaderClass:"fc-classic-XpK fc-classic-LMv",allDayHeaderInnerClass:info=>joinClassNames("fc-classic-rVY fc-classic-2tF fc-classic-2HE",info.isNarrow?xxsTextClass:"fc-classic-9yp"),allDayDividerClass:"fc-classic-JIC fc-classic-C1x fc-classic-8ub fc-classic-k3f",slotHeaderClass:"fc-classic-LMv",slotHeaderInnerClass:info=>joinClassNames("fc-classic-rVY fc-classic-cJ3",info.isNarrow?xxsTextClass:"fc-classic-9yp"),slotHeaderDividerClass:"fc-classic-USt fc-classic-C1x",nowIndicatorHeaderClass:"fc-classic-rbS fc-classic-a10 fc-classic-XM3 fc-classic-rif fc-classic-jIH fc-classic-0qY",nowIndicatorLineClass:"fc-classic-ku3 fc-classic-sYT"},list:{listDayClass:info=>joinClassNames(!info.isLast&&"fc-classic-zi1 fc-classic-C1x"),listItemEventClass:info=>joinClassNames("fc-classic-bCs fc-classic-Apf fc-classic-dl6 fc-classic-wwb fc-classic-ku3 fc-classic-C1x",info.isInteractive?joinClassNames(faintHoverPressableClass,outlineInsetClass):faintHoverClass),listItemEventBeforeClass:"fc-classic-GOm",listItemEventInnerClass:"fc-classic-eF2",listItemEventTimeClass:"fc-classic-88I fc-classic-yi0 fc-classic-roZ fc-classic-kMV fc-classic-TZ4 fc-classic-pKG fc-classic-IPx fc-classic-9yp",listItemEventTitleClass:info=>joinClassNames("fc-classic-1El fc-classic-2KU fc-classic-TZ4 fc-classic-pKG fc-classic-9yp",info.event.url&&"fc-classic-Ogp"),noEventsClass:"fc-classic-k3f fc-classic-dl1 fc-classic-sgX fc-classic-XpK fc-classic-E9P",noEventsInnerClass:"fc-classic-OUe fc-classic-jGI fc-classic-P9h"},timeline:{rowEventClass:info=>joinClassNames(info.isEnd&&"fc-classic-9hC","fc-classic-XpK"),rowEventBeforeClass:info=>!info.isStart&&`${continuationArrowClass} fc-classic-Bda fc-classic-5JV`,rowEventAfterClass:info=>!info.isEnd&&`${continuationArrowClass} fc-classic-hhi fc-classic-LaM`,rowEventInnerClass:info=>info.options.eventOverlap?"fc-classic-2rx":"fc-classic-End",rowEventTimeClass:"fc-classic-oQ2",rowEventTitleClass:"fc-classic-oQ2",rowMoreLinkClass:`fc-classic-9hC fc-classic-Ika fc-classic-wsy fc-classic-d0j fc-classic-4MR ${strongSolidPressableClass} fc-classic-vwH`,rowMoreLinkInnerClass:"fc-classic-KUX fc-classic-a3B",slotHeaderAlign:info=>info.isTime?"start":"center",slotHeaderClass:info=>joinClassNames("fc-classic-E9P",!info.level&&"fc-classic-pKG"),slotHeaderInnerClass:info=>joinClassNames("fc-classic-fn8 fc-classic-V9v fc-classic-9yp",info.hasNavLink&&"fc-classic-Eu0"),slotHeaderDividerClass:"fc-classic-zi1 fc-classic-C1x",nowIndicatorHeaderClass:"fc-classic-n9G fc-classic-J04 fc-classic-ybF fc-classic-Pqk fc-classic-bLA fc-classic-sYT",nowIndicatorLineClass:"fc-classic-3J4 fc-classic-sYT"}}};function chevronLeft(className){return(0,import_jsx_runtime7.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,import_jsx_runtime7.jsx)("polyline",{points:"15 18 9 12 15 6"})})}function chevronsLeft(className){return(0,import_jsx_runtime7.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",className,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,import_jsx_runtime7.jsx)("polyline",{points:"11 17 6 12 11 7"}),(0,import_jsx_runtime7.jsx)("polyline",{points:"18 17 13 12 18 7"})]})}function x(className){return(0,import_jsx_runtime7.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",className,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,import_jsx_runtime7.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,import_jsx_runtime7.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}function plusSquare(className){return(0,import_jsx_runtime7.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",className,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,import_jsx_runtime7.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),(0,import_jsx_runtime7.jsx)("line",{x1:"12",y1:"8",x2:"12",y2:"16"}),(0,import_jsx_runtime7.jsx)("line",{x1:"8",y1:"12",x2:"16",y2:"12"})]})}function minusSquare(className){return(0,import_jsx_runtime7.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",className,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,import_jsx_runtime7.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),(0,import_jsx_runtime7.jsx)("line",{x1:"8",y1:"12",x2:"16",y2:"12"})]})}var import_jsx_runtime9=require("react/jsx-runtime");var import_jsx_runtime8=require("react/jsx-runtime");var import_react8=require("react");var EMPTY_EVENT_STORE=createEmptyEventStore(),Splitter=class{constructor(){this.getKeysForEventDefs=memoize2(this._getKeysForEventDefs),this.splitDateSelection=memoize2(this._splitDateSpan),this.splitEventStore=memoize2(this._splitEventStore),this.splitIndividualUi=memoize2(this._splitIndividualUi),this.splitEventDrag=memoize2(this._splitInteraction),this.splitEventResize=memoize2(this._splitInteraction),this.eventUiBuilders={}}splitProps(props){let keyInfos=this.getKeyInfo(props),defKeys=this.getKeysForEventDefs(props.eventStore),dateSelections=this.splitDateSelection(props.dateSelection),individualUi=this.splitIndividualUi(props.eventUiBases,defKeys),eventStores=this.splitEventStore(props.eventStore,defKeys),eventDrags=this.splitEventDrag(props.eventDrag),eventResizes=this.splitEventResize(props.eventResize),splitProps={};this.eventUiBuilders=mapHash(keyInfos,(info,key)=>this.eventUiBuilders[key]||memoize2(buildEventUiForKey));for(let key in keyInfos){let keyInfo=keyInfos[key],eventStore=eventStores[key]||EMPTY_EVENT_STORE,buildEventUi=this.eventUiBuilders[key];splitProps[key]={businessHours:keyInfo.businessHours||props.businessHours,dateSelection:dateSelections[key]||null,eventStore,eventUiBases:buildEventUi(props.eventUiBases[""],keyInfo.ui,individualUi[key]),eventDrag:eventDrags[key]||null,eventResize:eventResizes[key]||null,eventSelection:eventStore.instances[props.eventSelection]?props.eventSelection:""}}return splitProps}_splitDateSpan(dateSpan){let dateSpans={};if(dateSpan){let keys=this.getKeysForDateSpan(dateSpan);for(let key of keys)dateSpans[key]=dateSpan}return dateSpans}_getKeysForEventDefs(eventStore){return mapHash(eventStore.defs,eventDef=>this.getKeysForEventDef(eventDef))}_splitEventStore(eventStore,defKeys){let{defs,instances}=eventStore,splitStores={};for(let defId in defs)for(let key of defKeys[defId])splitStores[key]||(splitStores[key]=createEmptyEventStore()),splitStores[key].defs[defId]=defs[defId];for(let instanceId in instances){let instance=instances[instanceId];for(let key of defKeys[instance.defId])splitStores[key]&&(splitStores[key].instances[instanceId]=instance)}return splitStores}_splitIndividualUi(eventUiBases,defKeys){let splitHashes={};for(let defId in eventUiBases)if(defId)for(let key of defKeys[defId])splitHashes[key]||(splitHashes[key]={}),splitHashes[key][defId]=eventUiBases[defId];return splitHashes}_splitInteraction(interaction){let splitStates={};if(interaction){let affectedStores=this._splitEventStore(interaction.affectedEvents,this._getKeysForEventDefs(interaction.affectedEvents)),mutatedKeysByDefId=this._getKeysForEventDefs(interaction.mutatedEvents),mutatedStores=this._splitEventStore(interaction.mutatedEvents,mutatedKeysByDefId),populate=key=>{splitStates[key]||(splitStates[key]={affectedEvents:affectedStores[key]||EMPTY_EVENT_STORE,mutatedEvents:mutatedStores[key]||EMPTY_EVENT_STORE,isEvent:interaction.isEvent})};for(let key in affectedStores)populate(key);for(let key in mutatedStores)populate(key)}return splitStates}};function buildEventUiForKey(allUi,eventUiForKey,individualUi){let baseParts=[];allUi&&baseParts.push(allUi),eventUiForKey&&baseParts.push(eventUiForKey);let stuff={"":combineEventUis(baseParts)};return individualUi&&Object.assign(stuff,individualUi),stuff}var AllDaySplitter=class extends Splitter{getKeyInfo(){return{allDay:{},timed:{}}}getKeysForDateSpan(dateSpan){return dateSpan.allDay?["allDay"]:["timed"]}getKeysForEventDef(eventDef){return eventDef.allDay?hasBgRendering(eventDef)?["timed","allDay"]:["allDay"]:["timed"]}},DayTimeColsSlicer=class extends Slicer{sliceRange(range,dayRanges){let segs=[];for(let col=0;col<dayRanges.length;col+=1){let segRange=intersectRanges(range,dayRanges[col]);segRange&&segs.push({startDate:segRange.start,endDate:segRange.end,isStart:segRange.start.valueOf()===range.start.valueOf(),isEnd:segRange.end.valueOf()===range.end.valueOf(),col})}return segs}};function organizeSegsByCol(segs,colCount){let segsByCol=[],i;for(i=0;i<colCount;i+=1)segsByCol.push([]);if(segs)for(i=0;i<segs.length;i+=1)segsByCol[segs[i].col].push(segs[i]);return segsByCol}function splitInteractionByCol(ui,colCount){let byRow=[];if(ui){for(let i=0;i<colCount;i+=1)byRow[i]={affectedInstances:ui.affectedInstances,isEvent:ui.isEvent,segs:[]};for(let seg of ui.segs)byRow[seg.col].segs.push(seg)}else for(let i=0;i<colCount;i+=1)byRow[i]=null;return byRow}var STOCK_SUB_DURATIONS=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];function buildSlatMetas(slotMinTime,slotMaxTime,explicitLabelInterval,slotDuration,dateEnv){let dayStart=new Date(0),slatTime=slotMinTime,slatIterator=createDuration(0),labelInterval=explicitLabelInterval||computeLabelInterval(slotDuration),metas=[],i=0;for(;asRoughMs(slatTime)<asRoughMs(slotMaxTime);){let date=dateEnv.add(dayStart,slatTime),isLabeled=wholeDivideDurations(slatIterator,labelInterval)!==null;metas.push({date,time:slatTime,key:date.toISOString(),isoTimeStr:formatIsoTimeString(date),isLabeled,isFirst:i===0}),slatTime=addDurations(slatTime,slotDuration),slatIterator=addDurations(slatIterator,slotDuration),i+=1}return metas}function computeLabelInterval(slotDuration){let i,labelInterval,slotsPerLabel;for(i=STOCK_SUB_DURATIONS.length-1;i>=0;i-=1)if(labelInterval=createDuration(STOCK_SUB_DURATIONS[i]),slotsPerLabel=wholeDivideDurations(labelInterval,slotDuration),slotsPerLabel!==null&&slotsPerLabel>1)return labelInterval;return slotDuration}var TimeGridAllDayHeader=class extends BaseComponent{constructor(){super(...arguments),this.innerElRef=(0,import_react8.createRef)()}render(){let{props}=this,{options,viewApi}=this.context,renderProps={text:options.allDayText,view:viewApi,isNarrow:props.isNarrow};return(0,import_jsx_runtime8.jsx)(ContentContainer,{tag:"div",attrs:{role:"rowheader"},className:joinClassNames(classNames.flexRow,classNames.noMargin,classNames.noPadding,classNames.contentBox),style:{width:props.width},renderProps,generatorName:"allDayHeaderContent",customGenerator:options.allDayHeaderContent,defaultGenerator:renderAllDayInner,classNameGenerator:options.allDayHeaderClass,didMount:options.allDayHeaderDidMount,willUnmount:options.allDayHeaderWillUnmount,children:InnerContent=>(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(classNames.flexRow,classNames.noShrink,classNames.whiteSpacePre),ref:this.innerElRef,children:(0,import_jsx_runtime8.jsx)(InnerContent,{tag:"div",className:generateClassName(options.allDayHeaderInnerClass,renderProps)})})})}componentDidMount(){this._isUnmounting=!1;let{props}=this,innerEl=this.innerElRef.current;this.disconnectInnerWidth=watchWidth(innerEl,width=>{this._isUnmounting||setRef(props.innerWidthRef,width)})}componentWillUnmount(){this._isUnmounting=!0,this.disconnectInnerWidth(),setRef(this.props.innerWidthRef,null)}};function renderAllDayInner(renderProps){return renderProps.text}var TimeGridAllDayLane=class extends DateComponent{constructor(){super(...arguments),this.heightRef=(0,import_react8.createRef)(),this.handleRootEl=rootEl=>{this.rootEl=rootEl,rootEl?this.context.registerInteractiveComponent(this,{el:rootEl}):this.context.unregisterInteractiveComponent(this)}}render(){return(0,import_jsx_runtime8.jsx)(DayGridRow,{...this.props,rootElRef:this.handleRootEl,heightRef:this.heightRef})}queryHit(isRtl,positionLeft,positionTop,elWidth){let{props,heightRef}=this,colCount=props.cells.length,{col,left,right}=computeColFromPosition(positionLeft,elWidth,props.colWidth,colCount,isRtl),cell=props.cells[col],cellStartDate=cell.date,cellEndDate=addDays3(cellStartDate,1);return{dateProfile:props.dateProfile,dateSpan:{range:{start:cellStartDate,end:cellEndDate},allDay:!0,...cell.dateSpanProps},getDayEl:()=>getCellEl(this.rootEl,col),rect:{left,right,top:0,bottom:heightRef.current},layer:0}}};function buildTimeColsModel(dateProfile,dateProfileGenerator,dateEnv){let daySeries=new DaySeriesModel(dateProfile.renderRange,dateProfileGenerator);return new DayTableModel(daySeries,!1,dateEnv)}function buildDayRanges(dayTableModel,dateProfile,dateEnv){let ranges=[];for(let date of dayTableModel.headerDates)ranges.push({start:dateEnv.add(date,dateProfile.slotMinTime),end:dateEnv.add(date,dateProfile.slotMaxTime)});return ranges}function computeSlatHeight(expandRows,slatCnt,explicitSlatMinHeight=0,slatInnerHeight,scrollerHeight){if(!slatInnerHeight||!scrollerHeight)return[void 0,!1];let slatMinHeight=Math.max(slatInnerHeight+1,explicitSlatMinHeight),slatLiquidHeight=scrollerHeight/slatCnt,slatLiquid,slatHeight;return expandRows&&slatLiquidHeight>=slatMinHeight?(slatLiquid=!0,slatHeight=slatLiquidHeight):(slatLiquid=!1,slatHeight=slatMinHeight),[slatHeight,slatLiquid]}function computeDateTopFrac(date,dateProfile,startOfDayDate){return startOfDayDate||(startOfDayDate=startOfDay4(date)),computeTimeTopFrac(createDuration(date.valueOf()-startOfDayDate.valueOf()),dateProfile)}function computeTimeTopFrac(time,dateProfile){let startMs=asRoughMs(dateProfile.slotMinTime),endMs=asRoughMs(dateProfile.slotMaxTime),frac=(time.milliseconds-startMs)/(endMs-startMs);return frac=Math.max(0,frac),frac=Math.min(1,frac),frac}function computeFgSegVerticals2(segs,dateProfile,colDate,slatCnt,slatHeight,eventMinHeight,eventShortHeight){let res=[];if(slatHeight!=null){let totalHeight=slatHeight*slatCnt;for(let seg of segs){let startFrac=computeDateTopFrac(seg.startDate,dateProfile,colDate),endFrac=computeDateTopFrac(seg.endDate,dateProfile,colDate),startCoord=startFrac*totalHeight,endCoord=endFrac*totalHeight,height=endCoord-startCoord;eventMinHeight!=null&&height<eventMinHeight&&(height=eventMinHeight,endCoord=startCoord+height),res.push({start:startCoord,end:endCoord,size:height,isShort:height<=eventShortHeight})}}return res}function buildWebPositioning(segs,segVerticals,strictOrder,maxDepth){let segRanges=[];for(let i=0;i<segs.length;i++){let segVertical=segVerticals[i];segVertical&&segRanges.push({...segs[i],start:segVertical.start,end:segVertical.end})}let hierarchy=new SegHierarchy(segRanges,void 0,strictOrder,void 0,maxDepth),web=buildWeb(hierarchy);web=stretchWeb(web,1);let segRects=webToRects(web),hiddenGroups=groupIntersectingSegs(hierarchy.hiddenSegs);return[segRects,hiddenGroups]}function buildWeb(hierarchy){let{placementsByLevel}=hierarchy,buildNode=cacheable((level,lateral)=>level+":"+lateral,(level,lateral)=>{let siblingRange=findNextLevelSegs(hierarchy,level,lateral),[nextLevelNodes,maxPressure]=buildNodes(siblingRange,buildNode),segPlacement=placementsByLevel[level][lateral];return[{...segPlacement,nextLevelNodes},segPlacement.thickness+maxPressure]}),[topLevelNodes]=buildNodes(placementsByLevel.length?{level:0,lateralStart:0,lateralEnd:placementsByLevel[0].length}:null,buildNode);return topLevelNodes}function buildNodes(siblingRange,buildNode){if(!siblingRange)return[[],0];let{level,lateralStart,lateralEnd}=siblingRange,lateral=lateralStart,pairs=[];for(;lateral<lateralEnd;)pairs.push(buildNode(level,lateral)),lateral+=1;return pairs.sort(cmpDescPressures),[pairs.map(extractNode),pairs[0][1]]}function cmpDescPressures(a,b){return b[1]-a[1]}function extractNode(a){return a[0]}function findNextLevelSegs(hierarchy,subjectLevel,subjectLateral){let{levelCoords,placementsByLevel}=hierarchy,subjectPlacement=placementsByLevel[subjectLevel][subjectLateral],afterSubject=levelCoords[subjectLevel]+subjectPlacement.thickness,levelCnt=levelCoords.length,level=subjectLevel;for(;level<levelCnt&&levelCoords[level]<afterSubject;level+=1);for(;level<levelCnt;level+=1){let placements=placementsByLevel[level],placement,searchIndex=binarySearch(placements,subjectPlacement.start,getCoordRangeEnd),lateralStart=searchIndex[0]+searchIndex[1],lateralEnd=lateralStart;for(;(placement=placements[lateralEnd])&&placement.start<subjectPlacement.end;)lateralEnd+=1;if(lateralStart<lateralEnd)return{level,lateralStart,lateralEnd}}return null}function stretchWeb(topLevelNodes,totalThickness){let stretchNode=cacheable((node,startCoord,prevThickness)=>getEventKey(node),(node,startCoord,prevThickness)=>{let{nextLevelNodes,thickness}=node,allThickness=thickness+prevThickness,thicknessFraction=thickness/allThickness,endCoord,newChildren=[];if(!nextLevelNodes.length)endCoord=totalThickness;else for(let childNode of nextLevelNodes)if(endCoord===void 0){let res=stretchNode(childNode,startCoord,allThickness);endCoord=res[0],newChildren.push(res[1])}else{let res=stretchNode(childNode,endCoord,0);newChildren.push(res[1])}let newThickness=(endCoord-startCoord)*thicknessFraction;return[endCoord-newThickness,{...node,thickness:newThickness,nextLevelNodes:newChildren}]});return topLevelNodes.map(node=>stretchNode(node,0,0)[1])}function webToRects(topLevelNodes){let rectMap=new Map,processNode=cacheable((node,levelCoord,stackDepth)=>getEventKey(node),(node,levelCoord,stackDepth)=>{let rect={...node,levelCoord,stackDepth,stackForward:0};return rectMap.set(rect.eventRange.instance.instanceId,rect),rect.stackForward=processNodes(node.nextLevelNodes,levelCoord+node.thickness,stackDepth+1)});function processNodes(nodes,levelCoord,stackDepth){let stackForward=0;for(let node of nodes)stackForward=Math.max(processNode(node,levelCoord,stackDepth)+1,stackForward);return stackForward}return processNodes(topLevelNodes,0,0),rectMap}function cacheable(keyFunc,workFunc){let cache={};return(...args)=>{let key=keyFunc(...args);return key in cache?cache[key]:cache[key]=workFunc(...args)}}var DEFAULT_TIME_FORMAT=createFormatter({hour:"numeric",minute:"2-digit",meridiem:!1}),TimeGridEvent=class extends BaseComponent{render(){let{props}=this;return(0,import_jsx_runtime8.jsx)(StandardEvent,{...props,display:"column",level:props.level,isNarrow:props.isNarrow,isShort:props.isShort,className:props.isLiquid?classNames.liquid:"",disableLiquid:!props.isLiquid,defaultTimeFormat:DEFAULT_TIME_FORMAT})}},TimeGridMoreLink=class extends BaseComponent{render(){let{props}=this;return(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(classNames.abs,classNames.flexCol),style:{top:props.top,height:props.height,insetInlineEnd:0,zIndex:9999},children:(0,import_jsx_runtime8.jsx)(MoreLinkContainer,{className:classNames.liquid,display:"column",allDayDate:null,segs:props.hiddenSegs,hiddenSegs:props.hiddenSegs,dateSpanProps:props.dateSpanProps,dateProfile:props.dateProfile,todayRange:props.todayRange,popoverContent:()=>renderPlainFgSegs(props.hiddenSegs,props,!1),forceTimed:!0,isNarrow:props.isNarrow,isMicro:props.isMicro})})}},NowIndicatorDot=props=>(0,import_jsx_runtime8.jsx)(ViewContextType.Consumer,{children:context=>{let{options}=context;return(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(props.className,options.nowIndicatorDotClass),style:props.style})}}),NowIndicatorLineContainer=props=>(0,import_jsx_runtime8.jsx)(ViewContextType.Consumer,{children:context=>{let{options}=context,renderProps={date:context.dateEnv.toDate(props.date),view:context.viewApi};return(0,import_jsx_runtime8.jsx)(ContentContainer,{elRef:props.elRef,tag:props.tag||"div",attrs:props.attrs,className:props.className,style:props.style,renderProps,generatorName:"nowIndicatorLineContent",customGenerator:options.nowIndicatorLineContent,classNameGenerator:options.nowIndicatorLineClass,didMount:options.nowIndicatorLineDidMount,willUnmount:options.nowIndicatorLineWillUnmount,children:props.children})}});function TimeGridNowIndicatorLine(props){let top=props.totalHeight!=null?props.totalHeight*computeDateTopFrac(props.nowDate,props.dateProfile,props.dayDate):void 0;return(0,import_jsx_runtime8.jsxs)("div",{className:classNames.fill,style:{zIndex:2,pointerEvents:"none"},children:[(0,import_jsx_runtime8.jsx)(NowIndicatorLineContainer,{className:joinClassNames(classNames.fillX,classNames.noMarginX,classNames.borderlessX),style:{top},date:props.nowDate}),(props.showDot??!0)&&(0,import_jsx_runtime8.jsx)(NowIndicatorDot,{className:joinClassNames(classNames.abs,classNames.start0),style:{top}})]})}var isBrowserPrintQuirky=typeof navigator<"u"&&navigator.userAgent.toLowerCase().includes("firefox"),TimeGridCol=class extends BaseComponent{constructor(){super(...arguments),this.sortEventSegs=memoize2(sortEventSegs),this.getDateMeta=memoize2(getDateMeta)}render(){let{props,context}=this,{options,dateEnv}=context,isSelectMirror=options.selectMirror,mirrorSegs=props.eventDrag&&props.eventDrag.segs||props.eventResize&&props.eventResize.segs||isSelectMirror&&props.dateSelectionSegs||[],dateMeta=this.getDateMeta(props.date,dateEnv,props.dateProfile,props.todayRange),baseClassName=joinClassNames(props.borderStart?classNames.borderOnlyS:classNames.borderNone,props.width==null&&classNames.liquid,classNames.rel),baseStyle={width:props.width,zIndex:1},isStack=this.getIsStack(),renderProps={...dateMeta,...props.renderProps,isStack,isNarrow:props.isNarrow,isMajor:props.isMajor,view:context.viewApi};if(dateMeta.isDisabled)return(0,import_jsx_runtime8.jsx)("div",{role:"gridcell","aria-disabled":!0,className:joinClassNames(generateClassName(options.dayLaneClass,renderProps),baseClassName),style:baseStyle});let innerClassName=joinClassNames(generateClassName(options.dayLaneInnerClass,renderProps),!isStack&&classNames.fill),sortedFgSegs=this.sortEventSegs(props.fgEventSegs,options.eventOrder);return(0,import_jsx_runtime8.jsx)(ContentContainer,{tag:"div",attrs:{...props.attrs,role:"gridcell",...dateMeta.isToday?{"aria-current":"date"}:{},"data-date":formatDayString(props.date)},className:baseClassName,style:baseStyle,renderProps,generatorName:void 0,classNameGenerator:options.dayLaneClass,didMount:options.dayLaneDidMount,willUnmount:options.dayLaneWillUnmount,children:()=>(0,import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment,{children:[this.renderFillSegs(props.businessHourSegs,"non-business"),this.renderFillSegs(props.bgEventSegs,"bg-event"),this.renderFillSegs(props.dateSelectionSegs,"highlight"),(0,import_jsx_runtime8.jsx)("div",{className:innerClassName,style:{zIndex:1},children:this.renderFgSegs(sortedFgSegs,!1)}),!!mirrorSegs.length&&(0,import_jsx_runtime8.jsx)("div",{className:innerClassName,style:{zIndex:1},children:this.renderFgSegs(mirrorSegs,!0)}),this.renderNowIndicator(props.nowIndicatorSegs)]})})}renderFgSegs(sortedFgSegs,isMirror){let{props}=this;return this.getIsStack()?renderPlainFgSegs(sortedFgSegs,props,isMirror):this.renderPositionedFgSegs(sortedFgSegs,isMirror)}renderPositionedFgSegs(segs,isMirror){let{props,context}=this,{date,dateProfile,eventSelection,todayRange,nowDate}=props,{eventMaxStack,eventShortHeight,eventOrderStrict,eventMinHeight}=context.options,segVerticals=computeFgSegVerticals2(segs,dateProfile,date,props.slatCnt,props.slatHeight,eventMinHeight,eventShortHeight),[segRects,hiddenGroups]=buildWebPositioning(segs,segVerticals,eventOrderStrict,eventMaxStack);return(0,import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment,{children:[segs.map((seg,index2)=>{let{eventRange}=seg,{instanceId}=eventRange.instance,segVertical=segVerticals[index2]||{},segRect=segRects.get(instanceId),hStyle=!isMirror&&segRect?this.computeSegHStyle(segRect):{left:0,right:0,zIndex:0},isSelected=instanceId===eventSelection;isSelected&&(hStyle.zIndex+=1e3);let isDragging=!!(props.eventDrag&&props.eventDrag.affectedInstances[instanceId]),isResizing=!!(props.eventResize&&props.eventResize.affectedInstances[instanceId]),isInvisible=!isMirror&&(isDragging||isResizing||!segRect);return(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(classNames.abs,classNames.flexCol),style:{visibility:isInvisible?"hidden":void 0,top:segVertical.start,height:segVertical.size,...hStyle},children:(0,import_jsx_runtime8.jsx)(TimeGridEvent,{eventRange,slicedStart:seg.startDate,slicedEnd:seg.endDate,isStart:seg.isStart,isEnd:seg.isEnd,isDragging,isResizing,isMirror,isSelected,level:segRect?segRect.stackDepth:0,isNarrow:props.isNarrow,isShort:segVertical.isShort||!1,isLiquid:!0,...getEventRangeMeta(eventRange,todayRange,nowDate)})},instanceId)}),this.renderHiddenGroups(hiddenGroups)]})}renderHiddenGroups(hiddenGroups){let{dateSpanProps,dateProfile,todayRange,nowDate,eventSelection,eventDrag,eventResize,isNarrow,isMicro}=this.props;return(0,import_jsx_runtime8.jsx)(import_jsx_runtime8.Fragment,{children:hiddenGroups.map(hiddenGroup=>(0,import_jsx_runtime8.jsx)(TimeGridMoreLink,{hiddenSegs:hiddenGroup.segs,top:hiddenGroup.start,height:hiddenGroup.end-hiddenGroup.start,isNarrow,isMicro,dateSpanProps,dateProfile,todayRange,nowDate,eventSelection,eventDrag,eventResize},hiddenGroup.key))})}renderFillSegs(segs,fillType){let{props,context}=this,segVerticals=computeFgSegVerticals2(segs,props.dateProfile,props.date,props.slatCnt,props.slatHeight,context.options.eventMinHeight,context.options.eventShortHeight);return(0,import_jsx_runtime8.jsx)(import_jsx_runtime8.Fragment,{children:segs.map((seg,index2)=>{let{eventRange}=seg,segVertical=segVerticals[index2]||{};return(0,import_jsx_runtime8.jsx)("div",{className:classNames.fillX,style:{top:segVertical.start,height:segVertical.size,marginInlineStart:-1},children:fillType==="bg-event"?(0,import_jsx_runtime8.jsx)(BgEvent,{eventRange,isStart:seg.isStart,isEnd:seg.isEnd,isNarrow:props.isNarrow,isShort:segVertical.isShort||!1,isVertical:!0,...getEventRangeMeta(eventRange,props.todayRange,props.nowDate)}):renderFill(fillType,context.options)},buildEventRangeKey(eventRange))})})}renderNowIndicator(segs){let{props}=this;if(!(props.forPrint||this.getIsStack()))return segs.map((seg,i)=>(0,import_jsx_runtime8.jsx)(TimeGridNowIndicatorLine,{nowDate:seg.startDate,dayDate:props.date,dateProfile:props.dateProfile,totalHeight:props.slatHeight!=null?props.slatHeight*props.slatCnt:void 0,showDot:seg.showDot??!0},i))}computeSegHStyle(segRect){let{options}=this.context,shouldOverlap=options.slotEventOverlap,nearCoord=segRect.levelCoord,farCoord=segRect.levelCoord+segRect.thickness;shouldOverlap&&(farCoord=Math.min(1,nearCoord+(farCoord-nearCoord)*2));let props={zIndex:segRect.stackDepth+1,insetInlineStart:fracToCssDim(nearCoord),insetInlineEnd:fracToCssDim(1-farCoord),marginInlineEnd:void 0};return shouldOverlap&&segRect.stackForward&&(props.marginInlineEnd=20),props}getIsStack(){let{eventPrintLayout}=this.context.options;return this.props.forPrint&&(eventPrintLayout==="stack"||eventPrintLayout!=="grid"&&isBrowserPrintQuirky)}};function renderPlainFgSegs(sortedFgSegs,{todayRange,nowDate,eventSelection,eventDrag,eventResize},isMirror){return(0,import_jsx_runtime8.jsx)(import_jsx_runtime8.Fragment,{children:sortedFgSegs.map(seg=>{let{eventRange}=seg,{instanceId}=eventRange.instance,isDragging=!!(eventDrag&&eventDrag.affectedInstances[instanceId]),isResizing=!!(eventResize&&eventResize.affectedInstances[instanceId]),isInvisible=isDragging||isResizing;return(0,import_jsx_runtime8.jsx)("div",{className:classNames.breakInsideAvoid,style:{visibility:isInvisible?"hidden":void 0},children:(0,import_jsx_runtime8.jsx)(TimeGridEvent,{eventRange,slicedStart:seg.startDate,slicedEnd:seg.endDate,isStart:seg.isStart,isEnd:seg.isEnd,isDragging,isResizing,isMirror,isSelected:instanceId===eventSelection,level:0,isShort:!1,isNarrow:!1,disableResizing:!0,...getEventRangeMeta(eventRange,todayRange,nowDate)})},instanceId)})})}var TimeGridCols=class extends DateComponent{constructor(){super(...arguments),this.processSlotOptions=memoize2(processSlotOptions),this.handleRootEl=el=>{this.rootEl=el,el?this.context.registerInteractiveComponent(this,{el,isHitComboAllowed:this.props.isHitComboAllowed}):this.context.unregisterInteractiveComponent(this)}}render(){let{props}=this;return(0,import_jsx_runtime8.jsx)("div",{role:props.role,className:joinClassNames(props.className,classNames.flexRow),ref:this.handleRootEl,children:props.cells.map((cell,col)=>(0,import_jsx_runtime8.jsx)(TimeGridCol,{dateProfile:props.dateProfile,nowDate:props.nowDate,todayRange:props.todayRange,date:cell.date,isMajor:cell.isMajor,slatCnt:props.slatCnt,renderProps:cell.renderProps,attrs:cell.attrs,dateSpanProps:cell.dateSpanProps,forPrint:props.forPrint,borderStart:!!col,isNarrow:props.cellIsNarrow,isMicro:props.cellIsMicro,fgEventSegs:props.fgEventSegsByCol[col],bgEventSegs:props.bgEventSegsByCol[col],businessHourSegs:props.businessHourSegsByCol[col],nowIndicatorSegs:props.nowIndicatorSegsByCol[col],dateSelectionSegs:props.dateSelectionSegsByCol[col],eventDrag:props.eventDragByCol[col],eventResize:props.eventResizeByCol[col],eventSelection:props.eventSelection,width:props.colWidth,slatHeight:props.slatHeight},cell.key))})}queryHit(isRtl,positionLeft,positionTop,elWidth){let{dateProfile,cells,colWidth,slatHeight}=this.props,{dateEnv,options}=this.context,{snapDuration,snapsPerSlot}=this.processSlotOptions(options.slotDuration,options.snapDuration),colCount=cells.length,{col,left,right}=computeColFromPosition(positionLeft,elWidth,colWidth,colCount,isRtl),cell=cells[col],slatIndex=Math.floor(positionTop/slatHeight),slatTop=slatIndex*slatHeight,partial=(positionTop-slatTop)/slatHeight,localSnapIndex=Math.floor(partial*snapsPerSlot),snapIndex=slatIndex*snapsPerSlot+localSnapIndex,time=addDurations(dateProfile.slotMinTime,multiplyDuration(snapDuration,snapIndex)),start=dateEnv.add(cell.date,time),end=dateEnv.add(start,snapDuration);return{dateProfile,dateSpan:{range:{start,end},allDay:!1,...cell.dateSpanProps},getDayEl:()=>getCellEl(this.rootEl,col),rect:{left,right,top:slatTop,bottom:slatTop+slatHeight},layer:0}}};TimeGridCols.addPropsEquality({style:isPropsEqualShallow});function processSlotOptions(slotDuration,snapDurationOverride){let snapDuration=snapDurationOverride||slotDuration,snapsPerSlot=wholeDivideDurations(slotDuration,snapDuration);return snapsPerSlot===null&&(snapDuration=slotDuration,snapsPerSlot=1),{snapDuration,snapsPerSlot}}var NowIndicatorHeaderContainer=props=>(0,import_jsx_runtime8.jsx)(ViewContextType.Consumer,{children:context=>{let{options}=context,renderProps={date:context.dateEnv.toDate(props.date),view:context.viewApi};return(0,import_jsx_runtime8.jsx)(ContentContainer,{elRef:props.elRef,tag:props.tag||"div",attrs:props.attrs,className:props.className,style:props.style,renderProps,generatorName:"nowIndicatorHeaderContent",customGenerator:options.nowIndicatorHeaderContent,classNameGenerator:options.nowIndicatorHeaderClass,didMount:options.nowIndicatorHeaderDidMount,willUnmount:options.nowIndicatorHeaderWillUnmount,children:props.children})}});function TimeGridNowIndicatorArrow(props){return(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(classNames.fill,classNames.crop),style:{zIndex:2,pointerEvents:"none"},children:(0,import_jsx_runtime8.jsx)(NowIndicatorHeaderContainer,{className:classNames.abs,style:{top:props.totalHeight!=null?props.totalHeight*computeDateTopFrac(props.nowDate,props.dateProfile):void 0},date:props.nowDate})})}var DEFAULT_SLAT_LABEL_FORMAT=createFormatter({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"short"}),TimeGridSlatHeader=class extends BaseComponent{constructor(){super(...arguments),this.createRenderProps=memoize2(createRenderProps),this.innerElRef=(0,import_react8.createRef)()}render(){let{props,context}=this,{options}=context,headerFormat=options.slotHeaderFormat==null?DEFAULT_SLAT_LABEL_FORMAT:Array.isArray(options.slotHeaderFormat)?createFormatter(options.slotHeaderFormat[0]):createFormatter(options.slotHeaderFormat),renderProps=this.createRenderProps(props.date,props.time,!props.isLabeled,props.isNarrow,props.isFirst,headerFormat,context),className=joinClassNames(props.liquidHeight&&classNames.liquid,classNames.flexRow,classNames.alignStart,classNames.noMargin,classNames.noPadding,props.borderTop?classNames.borderOnlyT:classNames.borderNone);return props.isLabeled?(0,import_jsx_runtime8.jsx)(ContentContainer,{tag:"div",attrs:{"data-time":props.isoTimeStr},style:{height:props.height},className,renderProps,generatorName:"slotHeaderContent",customGenerator:options.slotHeaderContent,defaultGenerator:renderInnerContent3,classNameGenerator:options.slotHeaderClass,didMount:options.slotHeaderDidMount,willUnmount:options.slotHeaderWillUnmount,children:InnerContent=>(0,import_jsx_runtime8.jsx)("div",{ref:this.innerElRef,className:joinClassNames(classNames.noShrink,classNames.whiteSpaceNoWrap,classNames.flexRow),children:(0,import_jsx_runtime8.jsx)(InnerContent,{tag:"div",className:generateClassName(options.slotHeaderInnerClass,renderProps)})})}):(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(generateClassName(options.slotHeaderClass,renderProps),className),style:{height:props.height}})}componentDidMount(){this._isUnmounting=!1;let{props}=this,innerEl=this.innerElRef.current;innerEl&&(this.disconnectInnerSize=watchSize(innerEl,(width,height)=>{this._isUnmounting||(setRef(props.innerWidthRef,width),setRef(props.innerHeightRef,height))}))}componentWillUnmount(){let{props}=this;this._isUnmounting=!0,this.disconnectInnerSize&&(this.disconnectInnerSize(),setRef(props.innerWidthRef,null),setRef(props.innerHeightRef,null))}};function createRenderProps(date,time,isMinor,isNarrow,isFirst,headerFormat,context){return{...getDateMeta(date,context.dateEnv),level:0,text:joinDateTimeFormatParts(context.dateEnv.formatToParts(date,headerFormat)),time,isMajor:!1,isMinor,isTime:!0,isNarrow,hasNavLink:!1,isFirst,view:context.viewApi}}function renderInnerContent3(props){return props.text}var TimeGridSlatLane=class extends BaseComponent{constructor(){super(...arguments),this.getDateMeta=memoize2(getDateMeta)}render(){let{props,context}=this,{options}=context,renderProps={...this.getDateMeta(props.date,context.dateEnv),time:props.time,isMajor:!1,isMinor:!props.isLabeled,view:context.viewApi};return(0,import_jsx_runtime8.jsx)(ContentContainer,{tag:"div",attrs:{"data-time":props.isoTimeStr},className:joinClassNames(classNames.noMargin,classNames.noPadding,classNames.liquid,props.borderTop?classNames.borderOnlyT:classNames.borderNone),renderProps,generatorName:void 0,classNameGenerator:options.slotLaneClass,didMount:options.slotLaneDidMount,willUnmount:options.slotLaneWillUnmount})}},DEFAULT_WEEK_NUM_FORMAT2=createFormatter({week:"short"}),TimeGridWeekNumber=class extends BaseComponent{constructor(){super(...arguments),this.innerElRef=(0,import_react8.createRef)()}render(){let{props,context}=this,{options,dateEnv}=context,range=props.dateProfile.renderRange,hasNavLink=diffDays4(range.start,range.end)===1&&options.navLinks,weekDateMarker=range.start,fullDateStr=buildDateStr(context,weekDateMarker,"week"),weekNum=dateEnv.computeWeekNumber(weekDateMarker),weekTextParts=dateEnv.formatToParts(weekDateMarker,options.weekNumberFormat||DEFAULT_WEEK_NUM_FORMAT2),weekText=joinDateTimeFormatParts(weekTextParts),weekDateZoned=dateEnv.toDate(weekDateMarker),weekNumberRenderProps={num:weekNum,text:weekText,textParts:weekTextParts,date:weekDateZoned,isNarrow:props.isNarrow,hasNavLink,options:{dayMinWidth:options.dayMinWidth}};return(0,import_jsx_runtime8.jsx)(ContentContainer,{tag:"div",attrs:{role:"gridcell","aria-label":fullDateStr},className:joinClassNames(classNames.flexRow,classNames.noMargin,classNames.noPadding,props.isLiquid?classNames.liquid:classNames.contentBox),style:{width:props.width},renderProps:weekNumberRenderProps,generatorName:"weekNumberHeaderContent",customGenerator:options.weekNumberHeaderContent,defaultGenerator:renderText,classNameGenerator:options.weekNumberHeaderClass,didMount:options.weekNumberHeaderDidMount,willUnmount:options.weekNumberHeaderWillUnmount,children:InnerContent=>(0,import_jsx_runtime8.jsx)("div",{ref:this.innerElRef,className:joinClassNames(classNames.flexRow,classNames.noShrink,classNames.whiteSpaceNoWrap),children:(0,import_jsx_runtime8.jsx)(InnerContent,{tag:"div",attrs:hasNavLink?buildNavLinkAttrs(context,range.start,"week",fullDateStr):{"aria-label":fullDateStr},className:generateClassName(options.weekNumberHeaderInnerClass,weekNumberRenderProps)})})})}componentDidMount(){this._isUnmounting=!1;let{props}=this,innerEl=this.innerElRef.current;this.disconnectInnerSize=watchSize(innerEl,(width,height)=>{this._isUnmounting||(setRef(props.innerWidthRef,width),setRef(props.innerHeightRef,height))})}componentWillUnmount(){let{props}=this;this._isUnmounting=!0,this.disconnectInnerSize(),setRef(props.innerWidthRef,null),setRef(props.innerHeightRef,null)}};function TimeGridAxisEmpty(props){return(0,import_jsx_runtime8.jsx)("div",{role:"gridcell",className:props.isLiquid?classNames.liquid:classNames.contentBox,style:{width:props.width}})}var TimeGridLayoutPannable=class extends BaseComponent{constructor(){super(...arguments),this.state={headerTierHeights:[]},this.headerLabelInnerWidthRefMap=new RefMap(()=>{afterSize(this.handleAxisWidths)}),this.headerLabelInnerHeightRefMap=new RefMap(()=>{afterSize(this.handleHeaderHeights)}),this.headerMainInnerHeightRefMap=new RefMap(()=>{afterSize(this.handleHeaderHeights)}),this.handleAllDayLabelInnerWidth=width=>{this.allDayLabelInnerWidth=width,afterSize(this.handleAxisWidths)},this.slatLabelInnerWidthRefMap=new RefMap(()=>{afterSize(this.handleAxisWidths)}),this.slatLabelInnerHeightRefMap=new RefMap(()=>{afterSize(this.handleSlatInnerHeights)}),this.headerScrollerRef=(0,import_react8.createRef)(),this.allDayScrollerRef=(0,import_react8.createRef)(),this.mainScrollerRef=(0,import_react8.createRef)(),this.footScrollerRef=(0,import_react8.createRef)(),this.axisScrollerRef=(0,import_react8.createRef)(),this.handleTotalWidth=totalWidth=>{this._isUnmounting||this.setState({totalWidth})},this.handleBodyHeight=bodyHeight=>{this._isUnmounting||this.setState({bodyHeight})},this.handleClientWidth=clientWidth=>{this._isUnmounting||this.setState({clientWidth})},this.handleClientHeight=clientHeight=>{this._isUnmounting||this.setState({clientHeight})},this.handleStickyBottomScrollbarWidth=sticykBottomScrollbarWidth=>{this._isUnmounting||this.setState({sticykBottomScrollbarWidth})},this.handleHeaderHeights=()=>{if(this._isUnmounting)return;let headerLabelInnerHeightMap=this.headerLabelInnerHeightRefMap.current,headerMainInnerHeightMap=this.headerMainInnerHeightRefMap.current,heights=[];for(let[tierNum,mainHeight]of headerMainInnerHeightMap.entries())heights[tierNum]=Math.max(headerLabelInnerHeightMap.get(tierNum)||0,mainHeight);this.setState({headerTierHeights:heights})},this.handleSlatInnerHeights=()=>{if(this._isUnmounting)return;let slatLabelInnerHeightMap=this.slatLabelInnerHeightRefMap.current,max=0;for(let slatLabelInnerHeight of slatLabelInnerHeightMap.values())max=Math.max(max,slatLabelInnerHeight);this.state.slatInnerHeight!==max&&this.setState({slatInnerHeight:max})},this.handleAxisWidths=()=>{if(this._isUnmounting)return;let headerLabelInnerWidthMap=this.headerLabelInnerWidthRefMap.current,slatLabelInnerWidthMap=this.slatLabelInnerWidthRefMap.current,max=this.allDayLabelInnerWidth||0;for(let headerLabelInnerWidth of headerLabelInnerWidthMap.values())max=Math.max(max,headerLabelInnerWidth);for(let slatLableInnerWidth of slatLabelInnerWidthMap.values())max=Math.max(max,slatLableInnerWidth);this.state.axisWidth!==max&&this.setState({axisWidth:max})}}render(){let{props,state,context,headerLabelInnerWidthRefMap,headerLabelInnerHeightRefMap,headerMainInnerHeightRefMap,slatLabelInnerWidthRefMap,slatLabelInnerHeightRefMap}=this,{nowDate,headerTiers,forPrint}=props,nowTimeMs=nowDate.valueOf()-startOfDay4(nowDate).valueOf(),{axisWidth,totalWidth,clientWidth,clientHeight,bodyHeight,sticykBottomScrollbarWidth}=state,{options}=context,{borderlessX,borderlessTop,borderlessBottom}=computeViewBorderless(options),endScrollbarWidth=totalWidth!=null&&clientWidth!=null&&axisWidth!=null?totalWidth-clientWidth-(axisWidth+1):void 0,verticalScrolling=!forPrint&&!getIsHeightAuto(options),tableHeaderSticky=!forPrint&&getTableHeaderSticky(options),footerScrollbarSticky=!forPrint&&getFooterScrollbarSticky(options),{eventPrintLayout}=options,printStackEnabled=eventPrintLayout==="stack"||eventPrintLayout!=="grid"&&isBrowserPrintQuirky,absPrint=forPrint&&!printStackEnabled,simplePrint=forPrint&&printStackEnabled,colCount=props.cells.length,[canvasWidth,colWidth]=computeColWidth(colCount,props.dayMinWidth,clientWidth),cellIsMicro=colWidth!=null&&colWidth<=dayMicroWidth,cellIsNarrow=cellIsMicro||colWidth!=null&&colWidth<=options.dayNarrowWidth,slatCnt=props.slatMetas.length,[slatHeight,slatLiquidHeight]=computeSlatHeight(verticalScrolling&&options.expandRows,slatCnt,options.slotMinHeight,state.slatInnerHeight,clientHeight);this.slatHeight=slatHeight;let totalSlatHeight=(slatHeight||0)*slatCnt,forcedBodyHeight=absPrint?totalSlatHeight:void 0,rowsNotExpanding=verticalScrolling&&!options.expandRows&&clientHeight!=null&&clientHeight>totalSlatHeight,firstBodyRowIndex=options.dayHeaders?headerTiers.length+1:1,bottomScrollbarWidth=footerScrollbarSticky?sticykBottomScrollbarWidth:bodyHeight!=null&&clientHeight!=null?bodyHeight-clientHeight:void 0;return(0,import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment,{children:[options.dayHeaders&&(0,import_jsx_runtime8.jsxs)("div",{className:joinClassNames(generateClassName(options.tableHeaderClass,{isSticky:tableHeaderSticky,borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),classNames.flexCol,tableHeaderSticky&&classNames.tableHeaderSticky),style:{zIndex:1},children:[(0,import_jsx_runtime8.jsxs)("div",{className:classNames.flexRow,children:[(0,import_jsx_runtime8.jsx)("div",{role:"rowgroup",className:classNames.contentBox,style:{width:axisWidth},children:headerTiers.map((rowConfig,tierNum)=>(0,import_jsx_runtime8.jsx)("div",{role:"row","aria-rowindex":tierNum+1,className:joinClassNames(options.dayHeaderRowClass,classNames.flexRow,classNames.contentBox,tierNum<props.headerTiers.length-1?classNames.borderOnlyB:classNames.borderNone),style:{height:state.headerTierHeights[tierNum]},children:options.weekNumbers&&rowConfig.isDateRow?(0,import_jsx_runtime8.jsx)(TimeGridWeekNumber,{dateProfile:props.dateProfile,innerWidthRef:headerLabelInnerWidthRefMap.createRef(tierNum),innerHeightRef:headerLabelInnerHeightRefMap.createRef(tierNum),width:void 0,isLiquid:!0,isNarrow:cellIsNarrow}):(0,import_jsx_runtime8.jsx)(TimeGridAxisEmpty,{width:void 0,isLiquid:!0})},tierNum))}),(0,import_jsx_runtime8.jsx)("div",{className:generateClassName(options.slotHeaderDividerClass,{inTableHeader:!0,options:{dayMinWidth:options.dayMinWidth}})}),(0,import_jsx_runtime8.jsxs)(Scroller,{horizontal:!0,hideScrollbars:!0,className:joinClassNames(classNames.flexRow,classNames.liquid),ref:this.headerScrollerRef,children:[(0,import_jsx_runtime8.jsx)("div",{role:"rowgroup",className:canvasWidth==null?classNames.liquid:"",style:{width:canvasWidth},children:props.headerTiers.map((rowConfig,tierNum)=>(0,import_react8.createElement)(DayGridHeaderRow,{...rowConfig,key:tierNum,role:"row",rowIndex:tierNum,borderBottom:tierNum<props.headerTiers.length-1,height:state.headerTierHeights[tierNum],colWidth,viewportWidth:clientWidth,innerHeightRef:headerMainInnerHeightRefMap.createRef(tierNum),cellIsNarrow,cellIsMicro,rowLevel:props.headerTiers.length-tierNum-1}))}),!!endScrollbarWidth&&(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!0}),classNames.borderOnlyS),style:{minWidth:endScrollbarWidth}})]})]}),(0,import_jsx_runtime8.jsx)("div",{className:generateClassName(options.dayHeaderDividerClass,{isSticky:tableHeaderSticky,multiMonthColumns:0,options:{allDaySlot:!!options.allDaySlot}})})]}),(0,import_jsx_runtime8.jsxs)("div",{role:"rowgroup",className:joinClassNames(generateClassName(options.tableBodyClass,{borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),classNames.flexCol,verticalScrolling&&classNames.liquid,classNames.isolate),style:{zIndex:0},children:[options.allDaySlot&&(0,import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment,{children:[(0,import_jsx_runtime8.jsxs)("div",{role:"row","aria-rowindex":firstBodyRowIndex,className:classNames.flexRow,style:{zIndex:1},children:[(0,import_jsx_runtime8.jsx)(TimeGridAllDayHeader,{width:axisWidth,innerWidthRef:this.handleAllDayLabelInnerWidth,isNarrow:cellIsNarrow}),(0,import_jsx_runtime8.jsx)("div",{className:generateClassName(options.slotHeaderDividerClass,{inTableHeader:!1,options:{dayMinWidth:options.dayMinWidth}})}),(0,import_jsx_runtime8.jsxs)(Scroller,{horizontal:!0,hideScrollbars:!0,className:joinClassNames(classNames.flexRow,classNames.liquidX),ref:this.allDayScrollerRef,children:[(0,import_jsx_runtime8.jsx)("div",{className:classNames.flexRow,style:{width:canvasWidth},children:(0,import_jsx_runtime8.jsx)(TimeGridAllDayLane,{dateProfile:props.dateProfile,todayRange:props.todayRange,cells:props.cells,showDayNumbers:!1,forPrint,isHitComboAllowed:props.isHitComboAllowed,className:joinClassNames(classNames.borderNone,classNames.liquidX),cellIsNarrow,cellIsMicro,fgEventSegs:props.fgEventSegs,bgEventSegs:props.bgEventSegs,businessHourSegs:props.businessHourSegs,dateSelectionSegs:props.dateSelectionSegs,eventSelection:props.eventSelection,eventDrag:props.eventDrag,eventResize:props.eventResize,dayMaxEvents:props.dayMaxEvents,dayMaxEventRows:props.dayMaxEventRows,colWidth})}),!!endScrollbarWidth&&(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!1}),classNames.borderOnlyS),style:{minWidth:endScrollbarWidth}})]})]}),(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(options.allDayDividerClass),style:{zIndex:2}})]}),(0,import_jsx_runtime8.jsxs)("div",{role:"row","aria-rowindex":firstBodyRowIndex+(options.allDaySlot?1:0),className:joinClassNames(classNames.flexRow,classNames.rel,verticalScrolling&&classNames.liquid),style:{zIndex:0},children:[(0,import_jsx_runtime8.jsx)(Scroller,{vertical:verticalScrolling,hideScrollbars:!0,className:joinClassNames(classNames.flexCol,classNames.contentBox),style:{width:axisWidth},ref:this.axisScrollerRef,clientHeightRef:this.handleBodyHeight,children:!simplePrint&&(0,import_jsx_runtime8.jsx)(import_jsx_runtime8.Fragment,{children:(0,import_jsx_runtime8.jsxs)("div",{role:"rowheader","aria-label":options.timedText,className:joinClassNames(classNames.flexCol,classNames.grow,classNames.rel),style:{height:forcedBodyHeight},children:[(0,import_jsx_runtime8.jsx)("div",{"aria-hidden":!0,className:joinClassNames(classNames.flexCol,verticalScrolling&&options.expandRows&&classNames.grow,absPrint&&classNames.fillX),children:props.slatMetas.map((slatMeta,slatI)=>(0,import_react8.createElement)(TimeGridSlatHeader,{...slatMeta,key:slatMeta.key,innerWidthRef:slatLabelInnerWidthRefMap.createRef(slatMeta.key),innerHeightRef:slatLabelInnerHeightRefMap.createRef(slatMeta.key),borderTop:!!slatI,isNarrow:cellIsNarrow,height:slatLiquidHeight?void 0:slatHeight,liquidHeight:slatLiquidHeight}))}),!forPrint&&options.nowIndicator&&rangeContainsMarker(props.dateProfile.currentRange,nowDate)&&nowTimeMs>=props.dateProfile.slotMinTime.milliseconds&&nowTimeMs<props.dateProfile.slotMaxTime.milliseconds&&(0,import_jsx_runtime8.jsx)(TimeGridNowIndicatorArrow,{nowDate,dateProfile:props.dateProfile,totalHeight:slatHeight!=null?slatHeight*slatCnt:void 0}),!!(rowsNotExpanding||bottomScrollbarWidth)&&(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!1}),classNames.borderOnlyT,rowsNotExpanding&&classNames.liquid),style:{minHeight:bottomScrollbarWidth}})]})})}),(0,import_jsx_runtime8.jsx)("div",{className:generateClassName(options.slotHeaderDividerClass,{inTableHeader:!1,options:{dayMinWidth:options.dayMinWidth}})}),(0,import_jsx_runtime8.jsxs)("div",{className:joinClassNames(classNames.flexCol,classNames.liquid),children:[(0,import_jsx_runtime8.jsx)(Scroller,{vertical:verticalScrolling,horizontal:!0,hideScrollbars:footerScrollbarSticky||forPrint,className:joinClassNames(classNames.flexCol,classNames.rel,verticalScrolling&&classNames.liquid),ref:this.mainScrollerRef,clientWidthRef:this.handleClientWidth,clientHeightRef:this.handleClientHeight,children:(0,import_jsx_runtime8.jsxs)("div",{className:joinClassNames(classNames.flexCol,classNames.grow,classNames.rel),style:{width:canvasWidth,height:forcedBodyHeight},children:[(0,import_jsx_runtime8.jsx)(TimeGridCols,{dateProfile:props.dateProfile,nowDate:props.nowDate,todayRange:props.todayRange,cells:props.cells,slatCnt,forPrint,isHitComboAllowed:props.isHitComboAllowed,className:simplePrint?"":classNames.fill,fgEventSegsByCol:props.fgEventSegsByCol,bgEventSegsByCol:props.bgEventSegsByCol,businessHourSegsByCol:props.businessHourSegsByCol,nowIndicatorSegsByCol:props.nowIndicatorSegsByCol,dateSelectionSegsByCol:props.dateSelectionSegsByCol,eventDragByCol:props.eventDragByCol,eventResizeByCol:props.eventResizeByCol,eventSelection:props.eventSelection,colWidth,slatHeight,cellIsNarrow,cellIsMicro}),!simplePrint&&(0,import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment,{children:[(0,import_jsx_runtime8.jsx)("div",{"aria-hidden":!0,className:joinClassNames(classNames.flexCol,verticalScrolling&&options.expandRows&&classNames.grow,absPrint?classNames.fillX:classNames.rel),children:props.slatMetas.map((slatMeta,slatI)=>(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(classNames.flexRow,slatLiquidHeight&&classNames.liquid),style:{height:slatLiquidHeight?"":slatHeight},children:(0,import_react8.createElement)(TimeGridSlatLane,{...slatMeta,key:slatMeta.key,borderTop:!!slatI})},slatMeta.key))}),rowsNotExpanding&&(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!1}),classNames.borderOnlyT,classNames.liquid)})]})]})}),!!footerScrollbarSticky&&(0,import_jsx_runtime8.jsx)(FooterScrollbar,{isSticky:!0,canvasWidth,scrollerRef:this.footScrollerRef,scrollbarWidthRef:this.handleStickyBottomScrollbarWidth})]})]})]}),(0,import_jsx_runtime8.jsx)(Ruler,{widthRef:this.handleTotalWidth})]})}componentDidMount(){this._isUnmounting=!1,this.initScrollers(),this.updateSlatHeight()}componentDidUpdate(){this.updateScrollers(),this.updateSlatHeight()}componentWillUnmount(){this._isUnmounting=!0,this.destroyScrollers(),this.prevSlatHeight=void 0,setRef(this.props.slatHeightRef,null)}updateSlatHeight(){this.prevSlatHeight!==this.slatHeight&&setRef(this.props.slatHeightRef,this.prevSlatHeight=this.slatHeight)}initScrollers(){let ScrollerSyncer=getScrollerSyncerClass(this.context.pluginHooks);this.dayScroller=new ScrollerSyncer(!0),this.timeScroller=new ScrollerSyncer,setRef(this.props.dayScrollerRef,this.dayScroller),setRef(this.props.timeScrollerRef,this.timeScroller),this.updateScrollers()}updateScrollers(){this.dayScroller.handleChildren([this.headerScrollerRef.current,this.allDayScrollerRef.current,this.mainScrollerRef.current,this.footScrollerRef.current]),this.timeScroller.handleChildren([this.axisScrollerRef.current,this.mainScrollerRef.current])}destroyScrollers(){setRef(this.props.dayScrollerRef,null),setRef(this.props.timeScrollerRef,null)}};TimeGridLayoutPannable.addPropsEquality({headerTierHeights:isArraysEqual});var TimeGridLayoutNormal=class extends BaseComponent{constructor(){super(...arguments),this.state={},this.headerLabelInnerWidthRefMap=new RefMap(()=>{afterSize(this.handleAxisInnerWidths)}),this.handleAllDayLabelInnerWidth=width=>{this.allDayLabelInnerWidth=width,afterSize(this.handleAxisInnerWidths)},this.handleWeekNumberInnerWidth=width=>{this.weekNumberInnerWidth=width,afterSize(this.handleAxisInnerWidths)},this.slatLabelInnerWidthRefMap=new RefMap(()=>{afterSize(this.handleAxisInnerWidths)}),this.slatLabelInnerHeightRefMap=new RefMap(()=>{afterSize(this.handleSlatInnerHeights)}),this.handleTotalWidth=totalWidth=>{this._isUnmounting||requestAnimationFrame(()=>{this._isUnmounting||this.setState({totalWidth})})},this.handleClientWidth=clientWidth=>{this._isUnmounting||this.setState({clientWidth})},this.handleClientHeight=clientHeight=>{this._isUnmounting||this.setState({clientHeight})},this.handleAxisInnerWidths=()=>{if(this._isUnmounting)return;let headerLabelInnerWidthMap=this.headerLabelInnerWidthRefMap.current,slatLabelInnerWidthMap=this.slatLabelInnerWidthRefMap.current,max=Math.max(this.weekNumberInnerWidth||0,this.allDayLabelInnerWidth||0);for(let headerLabelInnerWidth of headerLabelInnerWidthMap.values())max=Math.max(max,headerLabelInnerWidth);for(let slatLabelInnerWidth of slatLabelInnerWidthMap.values())max=Math.max(max,slatLabelInnerWidth);this.state.axisWidth!==max&&this.setState({axisWidth:max})},this.handleSlatInnerHeights=()=>{if(this._isUnmounting)return;let slatLabelInnerHeightMap=this.slatLabelInnerHeightRefMap.current,max=0;for(let slatLabelInnerHeight of slatLabelInnerHeightMap.values())max=Math.max(max,slatLabelInnerHeight);this.state.slatInnerHeight!==max&&this.setState({slatInnerHeight:max})}}render(){let{props,state,context,slatLabelInnerWidthRefMap,slatLabelInnerHeightRefMap,headerLabelInnerWidthRefMap}=this,{nowDate,forPrint}=props,nowTimeMs=nowDate.valueOf()-startOfDay4(nowDate).valueOf(),{axisWidth,clientWidth,totalWidth}=state,{options}=context,{borderlessX,borderlessTop,borderlessBottom}=computeViewBorderless(options),endScrollbarWidth=totalWidth!=null&&clientWidth!=null&&!forPrint?totalWidth-clientWidth:void 0,verticalScrolling=!forPrint&&!getIsHeightAuto(options),tableHeaderSticky=!forPrint&&getTableHeaderSticky(options),slatCnt=props.slatMetas.length,[slatHeight,slatLiquidHeight]=computeSlatHeight(verticalScrolling&&options.expandRows,slatCnt,options.slotMinHeight,state.slatInnerHeight,state.clientHeight);this.slatHeight=slatHeight;let totalSlatHeight=(slatHeight||0)*slatCnt,rowsNotExpanding=verticalScrolling&&!options.expandRows&&state.clientHeight!=null&&state.clientHeight>totalSlatHeight,{eventPrintLayout}=options,printStackEnabled=eventPrintLayout==="stack"||eventPrintLayout!=="grid"&&isBrowserPrintQuirky,absPrint=forPrint&&!printStackEnabled,simplePrint=forPrint&&printStackEnabled,forcedBodyHeight=absPrint?totalSlatHeight:void 0,colCount=props.cells.length,colWidth=clientWidth!=null?clientWidth/colCount:void 0,cellIsMicro=colWidth!=null&&colWidth<=dayMicroWidth,cellIsNarrow=cellIsMicro||colWidth!=null&&colWidth<=options.dayNarrowWidth;return(0,import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment,{children:[options.dayHeaders&&(0,import_jsx_runtime8.jsxs)("div",{role:"rowgroup",className:joinClassNames(generateClassName(options.tableHeaderClass,{isSticky:tableHeaderSticky,borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),classNames.flexCol,tableHeaderSticky&&classNames.tableHeaderSticky),style:{zIndex:1},children:[props.headerTiers.map((rowConfig,tierNum)=>(0,import_jsx_runtime8.jsxs)("div",{role:"row",className:classNames.flexRow,children:[(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(options.dayHeaderRowClass,classNames.flexRow,tierNum<props.headerTiers.length-1?classNames.borderOnlyB:classNames.borderNone),children:options.weekNumbers&&rowConfig.isDateRow?(0,import_jsx_runtime8.jsx)(TimeGridWeekNumber,{dateProfile:props.dateProfile,innerWidthRef:this.handleWeekNumberInnerWidth,innerHeightRef:headerLabelInnerWidthRefMap.createRef(tierNum),width:axisWidth,isLiquid:!1,isNarrow:cellIsNarrow}):(0,import_jsx_runtime8.jsx)(TimeGridAxisEmpty,{width:axisWidth,isLiquid:!1})}),(0,import_jsx_runtime8.jsx)("div",{className:generateClassName(options.slotHeaderDividerClass,{inTableHeader:!0,options:{dayMinWidth:options.dayMinWidth}})}),(0,import_jsx_runtime8.jsx)(DayGridHeaderRow,{...rowConfig,className:classNames.liquid,borderBottom:tierNum<props.headerTiers.length-1,viewportWidth:clientWidth,cellIsNarrow,cellIsMicro,rowLevel:props.headerTiers.length-tierNum-1}),!!endScrollbarWidth&&(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!0}),classNames.borderOnlyS),style:{minWidth:endScrollbarWidth}})]},tierNum)),(0,import_jsx_runtime8.jsx)("div",{className:generateClassName(options.dayHeaderDividerClass,{isSticky:tableHeaderSticky,multiMonthColumns:0,options:{allDaySlot:!!options.allDaySlot}})})]}),(0,import_jsx_runtime8.jsxs)("div",{role:"rowgroup",className:joinClassNames(generateClassName(options.tableBodyClass,{borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),classNames.flexCol,verticalScrolling&&classNames.liquid,classNames.isolate),style:{zIndex:0},children:[options.allDaySlot&&(0,import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment,{children:[(0,import_jsx_runtime8.jsxs)("div",{role:"row",className:classNames.flexRow,style:{zIndex:1},children:[(0,import_jsx_runtime8.jsx)(TimeGridAllDayHeader,{width:axisWidth,innerWidthRef:this.handleAllDayLabelInnerWidth,isNarrow:cellIsNarrow}),(0,import_jsx_runtime8.jsx)("div",{className:generateClassName(options.slotHeaderDividerClass,{inTableHeader:!1,options:{dayMinWidth:options.dayMinWidth}})}),(0,import_jsx_runtime8.jsx)(TimeGridAllDayLane,{dateProfile:props.dateProfile,todayRange:props.todayRange,cells:props.cells,showDayNumbers:!1,forPrint,isHitComboAllowed:props.isHitComboAllowed,className:joinClassNames(classNames.liquidX,classNames.borderNone),cellIsNarrow,cellIsMicro,fgEventSegs:props.fgEventSegs,bgEventSegs:props.bgEventSegs,businessHourSegs:props.businessHourSegs,dateSelectionSegs:props.dateSelectionSegs,eventDrag:props.eventDrag,eventResize:props.eventResize,eventSelection:props.eventSelection,dayMaxEvents:props.dayMaxEvents,dayMaxEventRows:props.dayMaxEventRows}),!!endScrollbarWidth&&(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!1}),classNames.borderOnlyS),style:{minWidth:endScrollbarWidth}})]}),(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(options.allDayDividerClass),style:{zIndex:2}})]}),(0,import_jsx_runtime8.jsx)(Scroller,{vertical:verticalScrolling,className:joinClassNames(classNames.flexCol,classNames.rel,verticalScrolling&&classNames.liquid),style:{zIndex:0},ref:props.timeScrollerRef,clientWidthRef:this.handleClientWidth,clientHeightRef:this.handleClientHeight,children:(0,import_jsx_runtime8.jsxs)("div",{className:joinClassNames(classNames.flexCol,classNames.grow,classNames.rel),style:{height:forcedBodyHeight},children:[(0,import_jsx_runtime8.jsxs)("div",{role:"row",className:joinClassNames(classNames.flexRow,!simplePrint&&classNames.fill),children:[(0,import_jsx_runtime8.jsx)("div",{role:"rowheader","aria-label":options.timedText,className:classNames.contentBox,style:{width:axisWidth}}),(0,import_jsx_runtime8.jsx)("div",{className:generateClassName(options.slotHeaderDividerClass,{inTableHeader:!1,options:{dayMinWidth:options.dayMinWidth}})}),(0,import_jsx_runtime8.jsx)(TimeGridCols,{dateProfile:props.dateProfile,nowDate:props.nowDate,todayRange:props.todayRange,cells:props.cells,slatCnt,forPrint,isHitComboAllowed:props.isHitComboAllowed,className:classNames.liquid,fgEventSegsByCol:props.fgEventSegsByCol,bgEventSegsByCol:props.bgEventSegsByCol,businessHourSegsByCol:props.businessHourSegsByCol,nowIndicatorSegsByCol:props.nowIndicatorSegsByCol,dateSelectionSegsByCol:props.dateSelectionSegsByCol,eventDragByCol:props.eventDragByCol,eventResizeByCol:props.eventResizeByCol,eventSelection:props.eventSelection,slatHeight,cellIsNarrow,cellIsMicro})]}),!simplePrint&&(0,import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment,{children:[(0,import_jsx_runtime8.jsx)("div",{"aria-hidden":!0,className:joinClassNames(classNames.flexCol,verticalScrolling&&options.expandRows&&classNames.grow,absPrint?classNames.fillX:classNames.rel),children:props.slatMetas.map((slatMeta,slatI)=>(0,import_jsx_runtime8.jsxs)("div",{className:joinClassNames(slatLiquidHeight&&classNames.liquid,classNames.flexRow),style:{height:slatLiquidHeight?void 0:slatHeight},children:[(0,import_jsx_runtime8.jsx)("div",{className:classNames.flexCol,style:{width:axisWidth},children:(0,import_react8.createElement)(TimeGridSlatHeader,{...slatMeta,key:slatMeta.key,innerWidthRef:slatLabelInnerWidthRefMap.createRef(slatMeta.key),innerHeightRef:slatLabelInnerHeightRefMap.createRef(slatMeta.key),borderTop:!!slatI,isNarrow:cellIsNarrow})}),(0,import_jsx_runtime8.jsx)("div",{className:generateClassName(options.slotHeaderDividerClass,{inTableHeader:!1,options:{dayMinWidth:options.dayMinWidth}}),style:{visibility:"hidden"}}),(0,import_react8.createElement)(TimeGridSlatLane,{...slatMeta,key:slatMeta.key,borderTop:!!slatI})]},slatMeta.key))}),rowsNotExpanding&&(0,import_jsx_runtime8.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!1}),classNames.borderOnlyT,classNames.liquid)}),!forPrint&&options.nowIndicator&&rangeContainsMarker(props.dateProfile.currentRange,nowDate)&&nowTimeMs>=props.dateProfile.slotMinTime.milliseconds&&nowTimeMs<props.dateProfile.slotMaxTime.milliseconds&&(0,import_jsx_runtime8.jsx)(TimeGridNowIndicatorArrow,{nowDate,dateProfile:props.dateProfile,totalHeight:slatHeight!=null?slatHeight*slatCnt:void 0})]})]})})]}),(0,import_jsx_runtime8.jsx)(Ruler,{widthRef:this.handleTotalWidth})]})}componentDidMount(){this._isUnmounting=!1,this.updateSlatHeight()}componentDidUpdate(){this.updateSlatHeight()}componentWillUnmount(){this._isUnmounting=!0,this.prevSlatHeight=void 0,setRef(this.props.slatHeightRef,null)}updateSlatHeight(){this.prevSlatHeight!==this.slatHeight&&setRef(this.props.slatHeightRef,this.prevSlatHeight=this.slatHeight)}};function buildEmptySegCols(segsByCol){return segsByCol.map(()=>[])}function buildEmptyInteractionCols(interactionsByCol){return interactionsByCol.map(()=>null)}var TimeGridLayout=class extends BaseComponent{constructor(){super(...arguments),this.buildSlatMetas=memoize2(buildSlatMetas),this.dayScrollerRef=(0,import_react8.createRef)(),this.timeScrollerRef=(0,import_react8.createRef)(),this.scrollState={},this.handleSlatHeight=slatHeight=>{this._isUnmounting||(this.slatHeight=slatHeight,slatHeight!=null&&afterSize(this.applyTimeScroll))},this.handleTimeScrollRequest=scrollTime=>{this.scrollState.time=scrollTime,this.scrollState.y=void 0,this.applyTimeScroll()},this.handleTimeScrollEnd=isDevice=>{if(isDevice){let y=this.timeScrollerRef.current.y;this.props.forPrint||(this.scrollState.y=y,this.scrollState.time=void 0)}},this.applyTimeScroll=()=>{let timeScroller=this.timeScrollerRef.current,{slatHeight,scrollState}=this,{y,time}=scrollState;y==null&&time&&slatHeight!=null&&timeScroller&&(y=computeTimeTopFrac(time,this.props.dateProfile)*(slatHeight*this.currentSlatCnt),y&&y++,scrollState.y=y),y!=null&&timeScroller.scrollTo({y})}}render(){let{props,context}=this,{dateProfile}=props,{options,dateEnv}=context,{dayMinWidth}=options,{borderlessX,borderlessTop,borderlessBottom}=computeViewBorderless(options),slatMetas=this.buildSlatMetas(dateProfile.slotMinTime,dateProfile.slotMaxTime,options.slotHeaderInterval,options.slotDuration,dateEnv);this.currentSlatCnt=slatMetas.length;let businessHourSegs=props.forPrint?[]:props.businessHourSegs,dateSelectionSegs=props.forPrint?[]:props.dateSelectionSegs,eventDrag=props.forPrint?null:props.eventDrag,eventResize=props.forPrint?null:props.eventResize,businessHourSegsByCol=props.forPrint?buildEmptySegCols(props.businessHourSegsByCol):props.businessHourSegsByCol,dateSelectionSegsByCol=props.forPrint?buildEmptySegCols(props.dateSelectionSegsByCol):props.dateSelectionSegsByCol,eventDragByCol=props.forPrint?buildEmptyInteractionCols(props.eventDragByCol):props.eventDragByCol,eventResizeByCol=props.forPrint?buildEmptyInteractionCols(props.eventResizeByCol):props.eventResizeByCol,commonLayoutProps={dateProfile,nowDate:props.nowDate,todayRange:props.todayRange,cells:props.cells,slatMetas,forPrint:props.forPrint,isHitComboAllowed:props.isHitComboAllowed,headerTiers:props.headerTiers,fgEventSegs:props.fgEventSegs,bgEventSegs:props.bgEventSegs,businessHourSegs,dateSelectionSegs,eventDrag,eventResize,...getAllDayMaxEventProps(options),fgEventSegsByCol:props.fgEventSegsByCol,bgEventSegsByCol:props.bgEventSegsByCol,businessHourSegsByCol,nowIndicatorSegsByCol:props.nowIndicatorSegsByCol,dateSelectionSegsByCol,eventDragByCol,eventResizeByCol,eventSelection:props.eventSelection,timeScrollerRef:this.timeScrollerRef,timeScrollState:this.scrollState,slatHeightRef:this.handleSlatHeight,borderlessX,borderlessBottom};return(0,import_jsx_runtime8.jsx)(ViewContainer,{attrs:{role:"grid","aria-colcount":props.cells.length,"aria-labelledby":props.labelId,"aria-label":props.labelStr},className:joinClassNames(props.className,generateClassName(options.tableClass,{borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),!props.forPrint&&classNames.flexCol,classNames.isolate),viewSpec:context.viewSpec,children:dayMinWidth?(0,import_jsx_runtime8.jsx)(TimeGridLayoutPannable,{...commonLayoutProps,dayMinWidth,dayScrollerRef:this.dayScrollerRef}):(0,import_jsx_runtime8.jsx)(TimeGridLayoutNormal,{...commonLayoutProps})})}componentDidMount(){this._isUnmounting=!1,this.resetScroll(),this.context.emitter.on("_timeScrollRequest",this.handleTimeScrollRequest);let timeScroller=this.timeScrollerRef.current;timeScroller&&timeScroller.addScrollEndListener(this.handleTimeScrollEnd)}componentDidUpdate(prevProps){prevProps.dateProfile!==this.props.dateProfile&&this.context.options.scrollTimeReset?this.resetScroll():prevProps.forPrint&&!this.props.forPrint&&this.applyTimeScroll()}componentWillUnmount(){this._isUnmounting=!0,this.context.emitter.off("_timeScrollRequest",this.handleTimeScrollRequest);let timeScroller=this.timeScrollerRef.current;timeScroller&&timeScroller.removeScrollEndListener(this.handleTimeScrollEnd)}resetScroll(){this.handleTimeScrollRequest(this.context.options.scrollTime);let dayScroller=this.dayScrollerRef.current;dayScroller&&dayScroller.scrollTo({x:0})}},AUTO_ALL_DAY_MAX_EVENT_ROWS=5;function getAllDayMaxEventProps(options){let{dayMaxEvents,dayMaxEventRows}=options;return(dayMaxEvents===!0||dayMaxEventRows===!0)&&(dayMaxEvents=void 0,dayMaxEventRows=AUTO_ALL_DAY_MAX_EVENT_ROWS),{dayMaxEvents,dayMaxEventRows}}var TimeGridView=class extends DateComponent{constructor(){super(...arguments),this.createDayHeaderFormatter=memoize2(createDayHeaderFormatter),this.buildTimeColsModel=memoize2(buildTimeColsModel),this.buildDayRanges=memoize2(buildDayRanges),this.buildDateRowConfigs=memoize2(buildDateRowConfigs),this.splitFgEventSegs=memoize2(organizeSegsByCol),this.splitBgEventSegs=memoize2(organizeSegsByCol),this.splitBusinessHourSegs=memoize2(organizeSegsByCol),this.splitNowIndicatorSegs=memoize2(organizeSegsByCol),this.splitDateSelectionSegs=memoize2(organizeSegsByCol),this.splitEventDrag=memoize2(splitInteractionByCol),this.splitEventResize=memoize2(splitInteractionByCol),this.allDaySplitter=new AllDaySplitter,this.dayTableSlicer=new DayTableSlicer,this.dayTimeColsSlicer=new DayTimeColsSlicer}render(){let{props,context}=this,{dateProfile}=props,{options,dateProfileGenerator}=context,dayTableModel=this.buildTimeColsModel(dateProfile,dateProfileGenerator,context.dateEnv),dayRanges=this.buildDayRanges(dayTableModel,dateProfile,context.dateEnv),splitProps=this.allDaySplitter.splitProps(props),allDayProps=this.dayTableSlicer.sliceProps(splitProps.allDay,dateProfile,options.nextDayThreshold,context,dayTableModel),timedProps=this.dayTimeColsSlicer.sliceProps(splitProps.timed,dateProfile,null,context,dayRanges),dayHeaderFormat=this.createDayHeaderFormatter(context.options.dayHeaderFormat,!0,dayTableModel.colCount);return(0,import_jsx_runtime9.jsx)(NowTimer,{unit:options.nowIndicator?"minute":"day",children:(nowDate,todayRange)=>{let colCount=dayTableModel.cellRows[0].length,nowIndicatorSeg=!props.forPrint&&options.nowIndicator&&this.dayTimeColsSlicer.sliceNowDate(nowDate,dateProfile,options.nextDayThreshold,context,dayRanges),fgEventSegsByCol=this.splitFgEventSegs(timedProps.fgEventSegs,colCount),bgEventSegsByCol=this.splitBgEventSegs(timedProps.bgEventSegs,colCount),businessHourSegsByCol=this.splitBusinessHourSegs(timedProps.businessHourSegs,colCount),nowIndicatorSegsByCol=this.splitNowIndicatorSegs(nowIndicatorSeg,colCount),dateSelectionSegsByCol=this.splitDateSelectionSegs(timedProps.dateSelectionSegs,colCount),eventDragByCol=this.splitEventDrag(timedProps.eventDrag,colCount),eventResizeByCol=this.splitEventResize(timedProps.eventResize,colCount),headerTiers=this.buildDateRowConfigs(dayTableModel.headerDates,!0,props.dateProfile,todayRange,dayHeaderFormat,context);return(0,import_jsx_runtime9.jsx)(TimeGridLayout,{labelId:props.labelId,labelStr:props.labelStr,dateProfile,nowDate,todayRange,cells:dayTableModel.cellRows[0],forPrint:props.forPrint,className:props.className,headerTiers,fgEventSegs:allDayProps.fgEventSegs,bgEventSegs:allDayProps.bgEventSegs,businessHourSegs:allDayProps.businessHourSegs,dateSelectionSegs:allDayProps.dateSelectionSegs,eventDrag:allDayProps.eventDrag,eventResize:allDayProps.eventResize,fgEventSegsByCol,bgEventSegsByCol,businessHourSegsByCol,nowIndicatorSegsByCol,dateSelectionSegsByCol,eventDragByCol,eventResizeByCol,eventSelection:props.eventSelection})}})}},timeGridPlugin={name:"timegrid",initialView:"timeGridWeek",deps:[dayGridPlugin],views:{timeGrid:{component:TimeGridView,usesMinMaxTime:!0,allDaySlot:!0,slotDuration:"00:30:00",slotEventOverlap:!0},timeGridDay:{type:"timeGrid",duration:{days:1}},timeGridWeek:{type:"timeGrid",duration:{weeks:1}}}};var import_core=require("@mantine/core"),import_hooks=require("@mantine/hooks"),import_core2=require("@medplum/core");var import_react9=require("react");var defaultAttributes={outline:{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"},filled:{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"currentColor",stroke:"none"}};var createReactComponent=(type,iconName,iconNamePascal,iconNode)=>{let Component5=(0,import_react9.forwardRef)(({color="currentColor",size=24,stroke=2,title,className,children,...rest},ref)=>(0,import_react9.createElement)("svg",{ref,...defaultAttributes[type],width:size,height:size,className:["tabler-icon",`tabler-icon-${iconName}`,className].join(" "),...type==="filled"?{fill:color}:{strokeWidth:stroke,stroke:color},...rest},[title&&(0,import_react9.createElement)("title",{key:"svg-title"},title),...iconNode.map(([tag,attrs])=>(0,import_react9.createElement)(tag,attrs)),...Array.isArray(children)?children:[children]]));return Component5.displayName=`${iconNamePascal}`,Component5};var __iconNode=[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]],IconCheck=createReactComponent("outline","check","Check",__iconNode);var __iconNode2=[["path",{d:"M15 6l-6 6l6 6",key:"svg-0"}]],IconChevronLeft=createReactComponent("outline","chevron-left","ChevronLeft",__iconNode2);var __iconNode3=[["path",{d:"M9 6l6 6l-6 6",key:"svg-0"}]],IconChevronRight=createReactComponent("outline","chevron-right","ChevronRight",__iconNode3);var __iconNode4=[["path",{d:"M5 12l14 0",key:"svg-0"}]],IconMinus=createReactComponent("outline","minus","Minus",__iconNode4);var __iconNode5=[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]],IconPlus=createReactComponent("outline","plus","Plus",__iconNode5);function r(e){var t,f,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f)}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}var clsx_default=clsx;var import_react11=require("react");var Calendar_default={wrapper:"Calendar_wrapper",calendar:"Calendar_calendar",listItemEventBefore:"Calendar_listItemEventBefore",interactiveEvent:"Calendar_interactiveEvent",eventTitle:"Calendar_eventTitle",eventTime:"Calendar_eventTime",eventInner:"Calendar_eventInner",shortEvent:"Calendar_shortEvent",backgroundEventInner:"Calendar_backgroundEventInner",backgroundEvent:"Calendar_backgroundEvent",appointment:"Calendar_appointment",slot:"Calendar_slot",event:"Calendar_event",pending:"Calendar_pending",free:"Calendar_free"};var import_jsx_runtime10=require("react/jsx-runtime");function appointmentsToEvents(appointments){return appointments.filter(appointment=>appointment.status!=="cancelled"&&appointment.start&&appointment.end).map(appointment=>{let patientParticipant=appointment.participant.find(p=>p.actor?.reference?.startsWith("Patient/")),status=["booked","arrived","fulfilled","pending"].includes(appointment.status)?"":` (${appointment.status})`,name=patientParticipant?.actor?.display??"No Patient";return{id:appointment.id,title:`${name} ${status}`,start:appointment.start,end:appointment.end,extendedProps:{type:"appointment",appointment},interactive:!0,className:clsx_default(Calendar_default.appointment,Calendar_default[appointment.status])}})}function slotsToEvents(slots){return slots.map(slot=>({id:slot.id,start:slot.start,end:slot.end,title:slot.status==="free"?"Available":"Blocked",extendedProps:{type:"slot",slot},interactive:!1,className:clsx_default(Calendar_default.slot,Calendar_default[slot.status]),display:"background"}))}function Calendar2(props){let colorScheme=(0,import_core.useComputedColorScheme)(),controller=useCalendarController(),{onSelectAppointment,onSelectSlot,onDoubleClickAppointment}=props,handleSelectEventRaw=(0,import_react11.useCallback)(event=>{let ext=event.extendedProps;ext.type==="appointment"?onSelectAppointment?.(ext.appointment):ext.type==="slot"?onSelectSlot?.(ext.slot):(0,import_core2.assertNever)(ext)},[onSelectAppointment,onSelectSlot]),handleSelectEventDebounced=(0,import_hooks.useDebouncedCallback)(handleSelectEventRaw,100),handleSelectEvent=onDoubleClickAppointment?handleSelectEventDebounced:handleSelectEventRaw,eventDataRef=(0,import_react11.useRef)(new WeakMap),onDoubleClickRef=(0,import_react11.useRef)(onDoubleClickAppointment);(0,import_react11.useEffect)(()=>{onDoubleClickRef.current=onDoubleClickAppointment},[onDoubleClickAppointment]);let handleDblClick=(0,import_react11.useCallback)(e=>{let ext=eventDataRef.current.get(e.currentTarget);ext?.type==="appointment"&&onDoubleClickRef.current?.(ext.appointment)},[]),events=(0,import_react11.useMemo)(()=>{let appointments=props.appointments??[],slots=props.slots??[],appointmentIndex=appointments.reduce((acc,appointment)=>((appointment.slot??import_core2.EMPTY).forEach(slotRef=>{let key=(0,import_core2.getReferenceString)(slotRef);key&&(acc[key]=appointment)}),acc),{}),filteredSlots=slots.filter(slot=>{if(slot.status==="entered-in-error")return!1;let key=(0,import_core2.getReferenceString)(slot);if(key&&appointmentIndex[key]){let appointment=appointmentIndex[key];if(slot.start===appointment.start&&slot.end===appointment.end)return!1}return!0});return[...appointmentsToEvents(appointments),...slotsToEvents(filteredSlots)]},[props.appointments,props.slots]);return(0,import_jsx_runtime10.jsxs)("div",{"data-testid":"calendar",className:clsx_default(Calendar_default.wrapper,props.className),children:[(0,import_jsx_runtime10.jsxs)(import_core.Group,{justify:"space-between",pb:"sm",children:[(0,import_jsx_runtime10.jsxs)(import_core.Group,{gap:"md",children:[(0,import_jsx_runtime10.jsxs)(import_core.Button.Group,{children:[(0,import_jsx_runtime10.jsx)(import_core.Button,{variant:"default",size:"xs","aria-label":"Previous",onClick:()=>controller.prev(),children:(0,import_jsx_runtime10.jsx)(IconChevronLeft,{size:12})}),(0,import_jsx_runtime10.jsx)(import_core.Button,{variant:"default",size:"xs",onClick:()=>controller.today(),children:"Today"}),(0,import_jsx_runtime10.jsx)(import_core.Button,{variant:"default",size:"xs","aria-label":"Next",onClick:()=>controller.next(),children:(0,import_jsx_runtime10.jsx)(IconChevronRight,{size:12})})]}),(0,import_jsx_runtime10.jsx)(import_core.Title,{order:4,children:controller.view?.title})]}),(0,import_jsx_runtime10.jsx)(import_core.SegmentedControl,{size:"xs",value:controller.view?.type,onChange:newView=>controller.changeView(newView),data:[{label:"Month",value:"dayGridMonth"},{label:"Week",value:"timeGridWeek"},{label:"Day",value:"timeGridDay"}]})]}),(0,import_jsx_runtime10.jsx)(Calendar,{className:clsx_default(Calendar_default.calendar,controller.view?.type),height:"100%",plugins:[timeGridPlugin,dayGridPlugin,index,interactionPlugin],controller,initialView:"timeGridWeek",headerToolbar:!1,events,datesSet:info=>props.onRangeChange?.({start:info.start,end:info.end}),eventClick:eventInfo=>handleSelectEvent(eventInfo.event),selectable:!0,select:eventInfo=>props.onSelectInterval?.({start:eventInfo.start,end:eventInfo.end}),slotMinHeight:38,eventClass:evt=>clsx_default(Calendar_default.event,{[Calendar_default.interactiveEvent]:evt.isInteractive,[Calendar_default.shortEvent]:evt.isShort}),eventTimeClass:Calendar_default.eventTime,eventTitleClass:Calendar_default.eventTitle,eventInnerClass:Calendar_default.eventInner,backgroundEventClass:Calendar_default.backgroundEvent,backgroundEventInnerClass:Calendar_default.backgroundEventInner,colorScheme,nowIndicator:!0,displayEventEnd:!1,eventTimeFormat:{timeStyle:"short"},listItemEventBeforeClass:Calendar_default.listItemEventBefore,views:{timeGridWeek:{allDaySlot:!1},timeGridDay:{allDaySlot:!1}},eventDidMount:info=>{onDoubleClickAppointment&&(eventDataRef.current.set(info.el,info.event.extendedProps),info.el.addEventListener("dblclick",handleDblClick))}})]})}var import_core6=require("@mantine/core"),import_core7=require("@medplum/core");var import_react13=require("react");var import_core3=require("@medplum/core");function getSingleValue(availableTime,url){let matches=(0,import_core3.getExtensions)(availableTime,url);if(matches.length>1)throw new import_core3.OperationOutcomeError((0,import_core3.validationError)(`availableTime must set at most one ${url}, found ${matches.length}`));return matches[0]}function toAvailableTime(availableTime){let daysOfWeek=(0,import_core3.getExtensions)(availableTime,"daysOfWeek").map(subextension=>subextension.valueCode).filter(import_core3.isDayOfWeek),allDay=getSingleValue(availableTime,"allDay"),start=getSingleValue(availableTime,"availableStartTime"),end=getSingleValue(availableTime,"availableEndTime");return allDay?.valueBoolean?{daysOfWeek,allDay:!0}:{daysOfWeek,availableStartTime:start?.valueTime,availableEndTime:end?.valueTime}}function getScheduleAvailability(schedule,service){let availability=(0,import_core3.getScheduleParameters)(schedule,service,"availability");if(availability.length)return availability.flatMap(extension=>(0,import_core3.getExtensions)(extension,"availableTime")).map(toAvailableTime)}function getEffectiveAvailability(service,schedule){if(service)return(schedule&&getScheduleAvailability(schedule,service))??service.availableTime}function buildAvailableTimeExtension(entry){let days=(entry.daysOfWeek??[]).map(day=>({url:"daysOfWeek",valueCode:day}));if(entry.allDay)return{url:"availableTime",extension:[...days,{url:"allDay",valueBoolean:!0}]};if(!entry.availableStartTime||!entry.availableEndTime)throw new import_core3.OperationOutcomeError((0,import_core3.validationError)("availableTime must set allDay, or both availableStartTime and availableEndTime",void 0,"required"));return{url:"availableTime",extension:[...days,{url:"availableStartTime",valueTime:entry.availableStartTime},{url:"availableEndTime",valueTime:entry.availableEndTime}]}}function buildAvailabilityExtension(availableTime){if(!availableTime.length)throw new import_core3.OperationOutcomeError((0,import_core3.validationError)("availability must have at least one availableTime; to follow the service default, clear it instead",void 0,"required"));return{url:"availability",extension:availableTime.map(buildAvailableTimeExtension)}}function setScheduleAvailability(schedule,service,availableTime){return(0,import_core3.setScheduleParameter)(schedule,service,buildAvailabilityExtension(availableTime))}var ScheduleAvailabilityEditor_default={week:"ScheduleAvailabilityEditor_week",dayCell:"ScheduleAvailabilityEditor_dayCell",rangeStart:"ScheduleAvailabilityEditor_rangeStart",rangeSeparator:"ScheduleAvailabilityEditor_rangeSeparator",rangeEnd:"ScheduleAvailabilityEditor_rangeEnd",addAction:"ScheduleAvailabilityEditor_addAction",removeAction:"ScheduleAvailabilityEditor_removeAction",unavailable:"ScheduleAvailabilityEditor_unavailable",overrideToggle:"ScheduleAvailabilityEditor_overrideToggle"};var import_core4=require("@medplum/core"),MINUTES_PER_DAY=1440,TIME_STEP_MINUTES=15,DEFAULT_RANGE={start:540,end:1020},DAY_LABELS={mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday",sun:"Sunday"},DAY_DISPLAY_ORDER=["sun","mon","tue","wed","thu","fri","sat"];function blankWeeklyAvailability(){let weekly={};for(let day of import_core4.DAYS_OF_WEEK)weekly[day]={available:!1,ranges:[{...DEFAULT_RANGE}]};return weekly}function nextDayOfWeek(day){return import_core4.DAYS_OF_WEEK[(import_core4.DAYS_OF_WEEK.indexOf(day)+1)%import_core4.DAYS_OF_WEEK.length]}function parseTimeOfDay(time){let match=/^(\d{1,2}):(\d{2})(?::(\d{2}(?:\.\d+)?))?$/.exec(time??"");if(!match)return;let hours=Number(match[1]),minutes=Number(match[2]);if(!(hours>23||minutes>59))return hours*60+minutes+Math.round(Number(match[3]??0)/60)}function formatTimeOfDay(minutes){let total=minutes%MINUTES_PER_DAY,hh=Math.floor(total/60).toString().padStart(2,"0"),mm=(total%60).toString().padStart(2,"0");return`${hh}:${mm}:00`}function normalizeRanges(ranges){let sorted=[...ranges].filter(range=>range.end>range.start).sort((a,b)=>a.start-b.start),merged=[];for(let range of sorted){let previous=merged[merged.length-1];previous&&range.start<=previous.end?merged[merged.length-1]={start:previous.start,end:Math.max(previous.end,range.end)}:merged.push(range)}return merged}function toWeeklyAvailability(availableTime){let weekly=blankWeeklyAvailability(),collected={};for(let day of import_core4.DAYS_OF_WEEK)collected[day]=[];for(let entry of availableTime??[]){let days=(entry.daysOfWeek??[]).filter(import_core4.isDayOfWeek);if(entry.allDay===!0){for(let day of days)collected[day].push({start:0,end:MINUTES_PER_DAY});continue}let start=parseTimeOfDay(entry.availableStartTime),end=parseTimeOfDay(entry.availableEndTime);if(!(start===void 0||end===void 0))for(let day of days)end>start?collected[day].push({start,end}):(collected[day].push({start,end:MINUTES_PER_DAY}),end>0&&collected[nextDayOfWeek(day)].push({start:0,end}))}for(let day of import_core4.DAYS_OF_WEEK){let ranges=normalizeRanges(collected[day]);ranges.length>0&&(weekly[day]={available:!0,ranges})}return weekly}function fromWeeklyAvailability(weekly){let availableTime=[];for(let day of import_core4.DAYS_OF_WEEK)if(weekly[day].available)for(let range of weekly[day].ranges)range.start===0&&range.end===MINUTES_PER_DAY?availableTime.push({daysOfWeek:[day],allDay:!0}):availableTime.push({daysOfWeek:[day],availableStartTime:formatTimeOfDay(range.start),availableEndTime:formatTimeOfDay(range.end)});return availableTime}function hasAnyAvailableDay(weekly){return import_core4.DAYS_OF_WEEK.some(day=>weekly[day].available&&weekly[day].ranges.length>0)}function formatMinutesOfDay(minutes){if(minutes===MINUTES_PER_DAY)return"12:00 AM";let hours=Math.floor(minutes/60),meridiem=hours<12?"AM":"PM";return`${hours%12===0?12:hours%12}:${(minutes%60).toString().padStart(2,"0")} ${meridiem}`}function ceilToTimeStep(minutes){return Math.ceil(minutes/TIME_STEP_MINUTES)*TIME_STEP_MINUTES}function timeOptions(min,max,include=[]){let options=new Set;for(let minutes=ceilToTimeStep(min);minutes<=max;minutes+=TIME_STEP_MINUTES)options.add(minutes);for(let time of include)time>=min&&time<=max&&options.add(time);return[...options].sort((a,b)=>a-b)}function nearestOption(options,value){let nearest;for(let option of options)(nearest===void 0||Math.abs(option-value)<Math.abs(nearest-value))&&(nearest=option);return nearest}function readMeridiem(query){let lower=query.toLowerCase();if(lower.includes("a"))return"am";if(lower.includes("p"))return"pm"}function rankMinutes(minutes){return minutes.length===2?0:minutes.length===0?1:2}function parseTimeQuery(query){let digits=query.replace(/[^0-9]/g,"");if(!digits)return[];let meridiem=readMeridiem(query);return[1,2].filter(hourDigits=>{let hour=Number(digits.slice(0,hourDigits)),minutes=digits.slice(hourDigits);return hourDigits<=digits.length&&hour>=1&&hour<=12&&minutes.length<=2&&(hourDigits===1||hour>=10||digits.startsWith("0"))}).map(hourDigits=>{let minutes=digits.slice(hourDigits);return{hour:Number(digits.slice(0,hourDigits)),minutes,meridiem,rank:rankMinutes(minutes)}}).sort((a,b)=>a.rank-b.rank)}function isTimeQuery(query){return parseTimeQuery(query).length>0}function matchesTimeQuery(minutes,query){let total=minutes===MINUTES_PER_DAY?0:minutes,hours=Math.floor(total/60);return(hours%12===0?12:hours%12)!==query.hour||query.meridiem&&query.meridiem!==(hours<12?"am":"pm")?!1:(total%60).toString().padStart(2,"0").startsWith(query.minutes)}function leadWithNearestHour(options,current){let byHour=new Map;options.forEach((option,index2)=>{let hour=Math.floor(option/60),distance=Math.abs(option-current),seen=byHour.get(hour);byHour.set(hour,seen?{index:seen.index,distance:Math.min(seen.distance,distance)}:{index:index2,distance})});let rotateAt=0,nearest=1/0;return byHour.forEach(entry=>{entry.distance<nearest&&(nearest=entry.distance,rotateAt=entry.index)}),rotateAt===0?options:[...options.slice(rotateAt),...options.slice(0,rotateAt)]}function typedTimes(query){return parseTimeQuery(query).filter(parsed=>parsed.minutes.length===2&&Number(parsed.minutes)<60).flatMap(parsed=>{let hour=parsed.hour%12,minutes=Number(parsed.minutes);return(parsed.meridiem?[parsed.meridiem]:["am","pm"]).map(meridiem=>(meridiem==="am"?hour:hour+12)*60+minutes)})}function filterTimeOptions(options,query,current){let queries=parseTimeQuery(query);if(queries.length===0)return options;let seen=new Set,matches=[];for(let parsed of queries){let matched=options.filter(option=>!seen.has(option)&&matchesTimeQuery(option,parsed));matched.forEach(option=>seen.add(option)),matches.push(...leadWithNearestHour(matched,current))}return matches}function canAddRange(ranges){return ranges.length>0&&ranges[ranges.length-1].end<=MINUTES_PER_DAY-TIME_STEP_MINUTES}function nextRange(ranges){let lastEnd=ranges[ranges.length-1].end,start=Math.max(ceilToTimeStep(lastEnd),Math.min(ceilToTimeStep(lastEnd+60),MINUTES_PER_DAY-TIME_STEP_MINUTES));return{start,end:Math.min(start+60,MINUTES_PER_DAY)}}var import_core5=require("@mantine/core");var import_react12=require("react");var import_jsx_runtime11=require("react/jsx-runtime"),FLASH_DURATION_MS=700,INPUT_STYLES={input:{transition:"border-color 450ms"}},FLASH_STYLES={input:{...INPUT_STYLES.input,borderColor:"var(--mantine-primary-color-filled)"}},TimeSelect=(0,import_react12.forwardRef)(function(props,ref){let{value,min,max,label,onChange,disabled,testId,className}=props,[query,setQuery]=(0,import_react12.useState)(""),[typing,setTyping]=(0,import_react12.useState)(!1),inputRef=(0,import_react12.useRef)(null),activeOptionRef=(0,import_react12.useRef)(null),submitting=(0,import_react12.useRef)(!1),combobox=(0,import_core5.useCombobox)({onDropdownClose:()=>combobox.resetSelectedOption()}),[flashId,setFlashId]=(0,import_react12.useState)(),flashing=flashId!==void 0;(0,import_react12.useImperativeHandle)(ref,()=>({flash:()=>setFlashId(previous=>(previous??0)+1)}),[]),(0,import_react12.useEffect)(()=>{if(flashId===void 0)return;let timer=setTimeout(()=>setFlashId(void 0),FLASH_DURATION_MS);return()=>clearTimeout(timer)},[flashId]);let{dropdownOpened,selectActiveOption}=combobox;(0,import_react12.useEffect)(()=>{if(!dropdownOpened)return;let frame=requestAnimationFrame(()=>{selectActiveOption(),activeOptionRef.current?.scrollIntoView({block:"center"})});return()=>cancelAnimationFrame(frame)},[dropdownOpened,selectActiveOption]);let display=formatMinutesOfDay(value),typed=typing?query:"",options=filterTimeOptions(timeOptions(min,max,[value,...typedTimes(typed)]),typed,value),scrollTo=options.includes(value)?value:nearestOption(options,value);function handleSubmit(selected){onChange(selected),setQuery(""),setTyping(!1),combobox.closeDropdown(),submitting.current=!0,inputRef.current?.blur(),submitting.current=!1}function handleBlur(){if(!submitting.current&&typing&&isTimeQuery(query)){let highlighted=options[combobox.getSelectedOptionIndex()]??options[0];highlighted!==void 0&&onChange(highlighted)}setTyping(!1),setQuery(""),combobox.closeDropdown()}return(0,import_jsx_runtime11.jsxs)(import_core5.Combobox,{store:combobox,keepMounted:!1,onOptionSubmit:selected=>handleSubmit(Number(selected)),children:[(0,import_jsx_runtime11.jsx)(import_core5.Combobox.Target,{children:(0,import_jsx_runtime11.jsx)(import_core5.InputBase,{ref:inputRef,component:"input",type:"text",className,w:132,value:typing?query:display,placeholder:display,disabled,"aria-label":label,"data-testid":testId,"data-flashing":flashing||void 0,styles:flashing?FLASH_STYLES:INPUT_STYLES,rightSection:(0,import_jsx_runtime11.jsx)(import_core5.Combobox.Chevron,{}),rightSectionPointerEvents:"none",onChange:e=>{setTyping(!0),setQuery(e.currentTarget.value),combobox.openDropdown(),combobox.selectFirstOption()},onFocus:()=>{setTyping(!0),setQuery(""),combobox.openDropdown()},onBlur:handleBlur,onClick:()=>combobox.openDropdown()})}),(0,import_jsx_runtime11.jsx)(import_core5.Combobox.Dropdown,{children:(0,import_jsx_runtime11.jsx)(import_core5.Combobox.Options,{mah:220,style:{overflowY:"auto"},children:options.length===0?(0,import_jsx_runtime11.jsx)(import_core5.Combobox.Empty,{children:"No matching time"}):options.map(option=>(0,import_jsx_runtime11.jsx)(import_core5.Combobox.Option,{value:option.toString(),active:option===value,ref:option===scrollTo?activeOptionRef:void 0,children:(0,import_jsx_runtime11.jsxs)(import_core5.Group,{justify:"space-between",gap:"xs",wrap:"nowrap",children:[(0,import_jsx_runtime11.jsx)(import_core5.Text,{span:!0,inherit:!0,children:formatMinutesOfDay(option)}),option===value&&(0,import_jsx_runtime11.jsx)(IconCheck,{size:14,stroke:1.8})]})},option))})})]})});var import_jsx_runtime12=require("react/jsx-runtime"),AVAILABLE_READ_ONLY_SWITCH_STYLES={track:{backgroundColor:"var(--mantine-color-green-6)",borderColor:"transparent"}};function DayRow(props){let{day,value,readOnly,onChange,onAnnounce}=props,{available,ranges}=value,label=DAY_LABELS[day],endInputs=(0,import_react13.useRef)([]);function boundsAfter(index2){return index2===ranges.length-1?MINUTES_PER_DAY:ranges[index2+1].start}function setStart(index2,start){let range=ranges[index2],end=start>=range.end?Math.min(start+60,boundsAfter(index2)):range.end;end!==range.end&&(endInputs.current[index2]?.flash(),onAnnounce(`${label} block ${index2+1} end time changed to ${formatMinutesOfDay(end)}.`)),onChange({...value,ranges:ranges.with(index2,{start,end})})}function setEnd(index2,end){onChange({...value,ranges:ranges.with(index2,{...ranges[index2],end})})}let switchStyles=readOnly&&available?AVAILABLE_READ_ONLY_SWITCH_STYLES:void 0,canAdd=canAddRange(ranges);return(0,import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment,{children:[(0,import_jsx_runtime12.jsxs)(import_core6.Group,{gap:"sm",wrap:"nowrap",className:ScheduleAvailabilityEditor_default.dayCell,children:[(0,import_jsx_runtime12.jsx)(import_core6.Switch,{checked:available,onChange:e=>{let checked=e.currentTarget.checked;onChange({available:checked,ranges:checked&&ranges.length===0?[{...DEFAULT_RANGE}]:ranges})},color:"green.6",withThumbIndicator:!1,disabled:readOnly,styles:switchStyles,"aria-label":`Available on ${label}`,"data-testid":`schedule-availability-switch-${day}`}),(0,import_jsx_runtime12.jsx)(import_core6.Text,{fw:500,children:label})]}),available?ranges.map((range,index2)=>{let last=index2===ranges.length-1;return(0,import_jsx_runtime12.jsxs)(import_react13.Fragment,{children:[(0,import_jsx_runtime12.jsx)(TimeSelect,{className:ScheduleAvailabilityEditor_default.rangeStart,value:range.start,min:index2===0?0:ranges[index2-1].end,max:boundsAfter(index2)-1,onChange:start=>setStart(index2,start),disabled:readOnly,label:`${label} block ${index2+1} start time`,testId:`schedule-availability-start-${day}-${index2}`}),(0,import_jsx_runtime12.jsx)(import_core6.Text,{c:"dimmed",className:ScheduleAvailabilityEditor_default.rangeSeparator,children:"to"}),(0,import_jsx_runtime12.jsx)(TimeSelect,{ref:handle=>{endInputs.current[index2]=handle},className:ScheduleAvailabilityEditor_default.rangeEnd,value:range.end,min:range.start+1,max:boundsAfter(index2),onChange:end=>setEnd(index2,end),disabled:readOnly,label:`${label} block ${index2+1} end time`,testId:`schedule-availability-end-${day}-${index2}`}),last&&(0,import_jsx_runtime12.jsx)(import_core6.ActionIcon,{className:ScheduleAvailabilityEditor_default.addAction,variant:"subtle",color:"gray",radius:"xl",onClick:()=>onChange({...value,ranges:[...ranges,nextRange(ranges)]}),disabled:readOnly||!canAdd,"aria-label":`Add another block of hours on ${label}`,"data-testid":`schedule-availability-add-${day}`,children:(0,import_jsx_runtime12.jsx)(IconPlus,{size:16,stroke:1.8})}),ranges.length>1&&(0,import_jsx_runtime12.jsx)(import_core6.ActionIcon,{className:ScheduleAvailabilityEditor_default.removeAction,variant:"subtle",color:"gray",radius:"xl",onClick:()=>onChange({...value,ranges:ranges.toSpliced(index2,1)}),disabled:readOnly,"aria-label":`Remove ${label} block ${index2+1}`,"data-testid":`schedule-availability-remove-${day}-${index2}`,children:(0,import_jsx_runtime12.jsx)(IconMinus,{size:16,stroke:1.8})})]},index2)}):(0,import_jsx_runtime12.jsx)(import_core6.Text,{c:"dimmed",className:ScheduleAvailabilityEditor_default.unavailable,children:"Unavailable"})]})}function ScheduleAvailabilityEditor(props){let{schedule,service,timezone,onCancel}=props,editingDefault=schedule===void 0,[overriding,setOverriding]=(0,import_react13.useState)(()=>schedule?(0,import_core7.getScheduleParameters)(schedule,service,"availability").length>0:!0),[weekly,setWeekly]=(0,import_react13.useState)(()=>toWeeklyAvailability(getEffectiveAvailability(service,schedule))),[saving,setSaving]=(0,import_react13.useState)(!1),[announcement,setAnnouncement]=(0,import_react13.useState)({message:"",id:0}),reasonId=(0,import_react13.useId)(),serviceName=service.name??"this visit service type",emptyWeek=(editingDefault||overriding)&&!hasAnyAvailableDay(weekly),emptyWeekReason=editingDefault?`Default availability must include at least one available day. Clearing every day would leave ${serviceName} bookable around the clock rather than never; to stop scheduling it, deactivate the visit service type.`:`Custom availability must include at least one available day. To stop scheduling ${serviceName} on this calendar, turn it off in schedule settings.`;function toggleOverriding(next){setOverriding(next),next||setWeekly(toWeeklyAvailability(service.availableTime))}async function handleSave(){if(!emptyWeek){setSaving(!0);try{if(props.schedule){let updated=overriding?setScheduleAvailability(props.schedule,service,fromWeeklyAvailability(weekly)):(0,import_core7.clearScheduleParameter)(props.schedule,service,"availability");await props.onSave(updated)}else await props.onSave({...service,availableTime:fromWeeklyAvailability(weekly)})}catch(err){console.error(err)}finally{setSaving(!1)}}}let saveButton=(0,import_jsx_runtime12.jsx)(import_core6.Tooltip,{label:emptyWeekReason,disabled:!emptyWeek,multiline:!0,w:300,withArrow:!0,position:"top",events:{hover:!0,focus:!0,touch:!0},children:(0,import_jsx_runtime12.jsx)(import_core6.Button,{onClick:handleSave,loading:saving,fullWidth:!onCancel,"data-disabled":emptyWeek||void 0,"aria-disabled":emptyWeek||void 0,"aria-describedby":emptyWeek?reasonId:void 0,children:"Save Settings"})});return(0,import_jsx_runtime12.jsxs)(import_core6.Stack,{gap:"lg",children:[(0,import_jsx_runtime12.jsx)(import_core6.Text,{c:"dimmed",children:editingDefault?`Set the default weekly working hours for ${serviceName}. Every calendar without hours of its own follows these.`:`Customize the weekly working hours on this calendar, in place of the default availability for ${serviceName}.`}),(0,import_jsx_runtime12.jsxs)(import_core6.Paper,{withBorder:!0,radius:"md",p:"xl",children:[!editingDefault&&(0,import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment,{children:[(0,import_jsx_runtime12.jsxs)(import_core6.Group,{gap:"sm",wrap:"nowrap",className:ScheduleAvailabilityEditor_default.overrideToggle,children:[(0,import_jsx_runtime12.jsx)(import_core6.Switch,{checked:overriding,onChange:e=>toggleOverriding(e.currentTarget.checked),color:"green.6",withThumbIndicator:!1,"aria-label":`Enable custom availability for ${serviceName}`,"data-testid":"schedule-availability-enable"}),(0,import_jsx_runtime12.jsxs)(import_core6.Text,{fw:500,children:["Enable custom availability for ",serviceName]})]}),(0,import_jsx_runtime12.jsx)(import_core6.Divider,{my:"lg"})]}),(0,import_jsx_runtime12.jsx)(import_core6.Box,{className:ScheduleAvailabilityEditor_default.week,opacity:overriding?1:.8,children:DAY_DISPLAY_ORDER.map(day=>(0,import_jsx_runtime12.jsx)(DayRow,{day,value:weekly[day],readOnly:!overriding,onChange:value=>setWeekly(prev=>({...prev,[day]:value})),onAnnounce:message=>setAnnouncement(previous=>({message,id:previous.id+1}))},day))}),(0,import_jsx_runtime12.jsx)(import_core6.VisuallyHidden,{role:"status","aria-live":"polite","data-testid":"schedule-availability-announcement",children:(0,import_jsx_runtime12.jsx)(import_react13.Fragment,{children:announcement.message},announcement.id)}),(0,import_jsx_runtime12.jsxs)(import_core6.Stack,{gap:"sm",mt:"xl",children:[!editingDefault&&(0,import_jsx_runtime12.jsx)(import_core6.Group,{justify:"flex-start",children:(0,import_jsx_runtime12.jsxs)(import_core6.Anchor,{component:"button",type:"button",onClick:()=>setWeekly(toWeeklyAvailability(service.availableTime)),disabled:!overriding,c:overriding?void 0:"dimmed",underline:overriding?"hover":"never","data-testid":"schedule-availability-reset",children:["Reset to default availability of ",serviceName]})}),timezone&&(0,import_jsx_runtime12.jsxs)(import_core6.Text,{c:"dimmed","data-testid":"schedule-availability-timezone",children:["All times are in local ",timezone," time zone."]})]})]}),emptyWeek&&(0,import_jsx_runtime12.jsx)(import_core6.VisuallyHidden,{id:reasonId,"data-testid":"schedule-availability-empty-week",children:emptyWeekReason}),onCancel?(0,import_jsx_runtime12.jsxs)(import_core6.Group,{grow:!0,children:[(0,import_jsx_runtime12.jsx)(import_core6.Button,{variant:"default",onClick:onCancel,children:"Cancel"}),saveButton]}):saveButton]})}
|
|
1
|
+
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var index_exports={};__export(index_exports,{AppointmentDayTimes:()=>AppointmentDayTimes,AppointmentSlotGroupCard:()=>AppointmentSlotGroupCard,Calendar:()=>Calendar2,MAX_FIND_WINDOW_DAYS:()=>MAX_FIND_WINDOW_DAYS,ROLE_LABELS:()=>ROLE_LABELS,SCHEDULING_ACTOR_TYPES:()=>SCHEDULING_ACTOR_TYPES,SCHEDULING_ROLES:()=>SCHEDULING_ROLES,ScheduleAvailabilityEditor:()=>ScheduleAvailabilityEditor,addDays:()=>addDays,endOfDay:()=>endOfDay,endOfMonth:()=>endOfMonth,enumerateDateRange:()=>enumerateDateRange,filterByTimeOfDay:()=>filterByTimeOfDay,formatDateRange:()=>formatDateRange,formatDayHeading:()=>formatDayHeading,formatZonedTime:()=>formatZonedTime,getActorGroupKey:()=>getActorGroupKey,getActorRoleLabel:()=>getActorRoleLabel,getActorsKey:()=>getActorsKey,getAppointmentKey:()=>getAppointmentKey,getDurationMinutes:()=>getDurationMinutes,getEffectiveAvailability:()=>getEffectiveAvailability,getNativeInputType:()=>getNativeInputType,getSchedulingRole:()=>getSchedulingRole,groupAppointmentsByDay:()=>groupAppointmentsByDay,isSameDay:()=>isSameDay,isSchedulingActorType:()=>isSchedulingActorType,parseDayKey:()=>parseDayKey,parseZonedTime:()=>parseZonedTime,setScheduleAvailability:()=>setScheduleAvailability});module.exports=__toCommonJS(index_exports);var import_core4=require("@mantine/core");var import_core=require("@medplum/core"),MAX_FIND_WINDOW_DAYS=31;function getZonedParts(date,timezone){let parts=new Intl.DateTimeFormat("en-US",{timeZone:timezone,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hourCycle:"h23"}).formatToParts(date),read=type=>Number(parts.find(p=>p.type===type)?.value);return{year:read("year"),month:read("month"),day:read("day"),hour:read("hour"),minute:read("minute")}}function formatZonedTime(date,timezone){return new Intl.DateTimeFormat(void 0,{timeZone:timezone,hour:"numeric",minute:"2-digit"}).format(date)}function formatDayHeading(date){return new Intl.DateTimeFormat(void 0,{weekday:"long",month:"long",day:"numeric"}).format(date)}function getTimezoneOffsetMs(instant,timezone){let{year,month,day,hour,minute}=getZonedParts(instant,timezone);return Date.UTC(year,month-1,day,hour,minute)-Math.floor(instant.getTime()/6e4)*6e4}function parseZonedTime(day,time,timezone){let match=/^(\d{1,2}):(\d{2})$/.exec(time.trim());if(!match)return;let hour=Number(match[1]),minute=Number(match[2]);if(hour>23||minute>59)return;if(!timezone)return new Date(day.getFullYear(),day.getMonth(),day.getDate(),hour,minute);let wallClock=Date.UTC(day.getFullYear(),day.getMonth(),day.getDate(),hour,minute),guess=getTimezoneOffsetMs(new Date(wallClock),timezone),offset3=getTimezoneOffsetMs(new Date(wallClock-guess),timezone);return new Date(wallClock-offset3)}function filterByTimeOfDay(appointments,timeOfDay,timezone){return timeOfDay==="any"?[...appointments]:appointments.filter(appointment=>{if(!appointment.start)return!1;let{hour}=getZonedParts(new Date(appointment.start),timezone);return timeOfDay==="morning"?hour<12:hour>=12})}function groupAppointmentsByDay(appointments,timezone){let days=new Map;for(let appointment of appointments){if(!appointment.start)continue;let{year,month,day}=getZonedParts(new Date(appointment.start),timezone),dayKey=`${year}-${pad(month)}-${pad(day)}`,groups=days.get(dayKey);groups||(groups=new Map,days.set(dayKey,groups));let groupKey=getActorGroupKey(appointment),group=groups.get(groupKey);group?group.push(appointment):groups.set(groupKey,[appointment])}return[...days.entries()].sort(([left],[right])=>left.localeCompare(right)).map(([dayKey,groups])=>({key:dayKey,date:parseDayKey(dayKey),groups:[...groups.entries()].map(([groupKey,groupAppointments])=>toSlotGroup(groupKey,groupAppointments)).sort((left,right)=>left.key.localeCompare(right.key))}))}function toSlotGroup(key,appointments){let sorted=[...appointments].sort((left,right)=>(left.start??"").localeCompare(right.start??""));return{key,actors:sorted[0]?.participant?.map(participant=>participant.actor).filter(import_core.isDefined)??[],durationMinutes:getDurationMinutes(sorted[0]),appointments:sorted}}function getActorGroupKey(appointment){return getActorsKey((appointment.participant??[]).map(participant=>participant.actor).filter(import_core.isDefined))}function getActorsKey(actors){return actors.map(actor=>(0,import_core.getReferenceString)(actor)).filter(import_core.isDefined).sort((left,right)=>left.localeCompare(right)).join("+")}function getDurationMinutes(appointment){if(!appointment?.start||!appointment.end)return 0;let start=new Date(appointment.start).getTime(),end=new Date(appointment.end).getTime();return Math.round((end-start)/6e4)}function getAppointmentKey(appointment){return`${appointment.start}/${appointment.end}/${getActorGroupKey(appointment)}`}function parseDayKey(key){let[year,month,day]=key.split("-").map(Number);return new Date(year,month-1,day)}function pad(value){return value.toString().padStart(2,"0")}function getNativeInputType(type){return process.env.NODE_ENV==="test"?"text":type}function endOfDay(date){let result=new Date(date);return result.setHours(23,59,59,999),result}function isSameDay(left,right){return!!right&&left.getFullYear()===right.getFullYear()&&left.getMonth()===right.getMonth()&&left.getDate()===right.getDate()}function addDays(date,days){let result=new Date(date);return result.setDate(result.getDate()+days),result}function endOfMonth(date){return endOfDay(new Date(date.getFullYear(),date.getMonth()+1,0))}function enumerateDateRange(range,limit=MAX_FIND_WINDOW_DAYS){if(!range.start||!range.end)return range.start?[range.start]:[];let days=[];for(let day=range.start;day<=range.end&&days.length<limit;day=addDays(day,1))days.push(day);return days}function formatDateRange(range){let{start,end}=range;if(start&&end)return isSameDay(start,end)?formatDayHeading(start):`${formatDayHeading(start)} \u2013 ${formatDayHeading(end)}`;if(start)return`From ${formatDayHeading(start)}`;if(end)return`Through ${formatDayHeading(end)}`}var import_core2=require("@mantine/core"),import_core3=require("@medplum/core"),import_react=require("@medplum/react");var AppointmentFinder_default={timeGrid:"AppointmentFinder_timeGrid"};var SCHEDULING_ACTOR_TYPES=["Practitioner","PractitionerRole","Location","Device"],SCHEDULING_ROLES=["provider","room","device"],ROLE_LABELS={provider:"Provider",room:"Room",device:"Device"},ROLE_BY_ACTOR_TYPE={Practitioner:"provider",PractitionerRole:"provider",Location:"room",Device:"device"};function isSchedulingActorType(value){return SCHEDULING_ACTOR_TYPES.includes(value)}function getSchedulingRole(actorType){return ROLE_BY_ACTOR_TYPE[actorType]}function getActorRoleLabel(actor){let actorType=actor.reference?.split("/")[0];return isSchedulingActorType(actorType)?ROLE_LABELS[getSchedulingRole(actorType)]:void 0}var import_jsx_runtime=require("react/jsx-runtime");function AppointmentSlotGroupCard(props){let{group,onSelectAppointment,timezone,selected,disabled}=props;return(0,import_jsx_runtime.jsxs)(import_core2.Paper,{withBorder:!0,p:"md","data-testid":`slot-group-${group.key}`,children:[(0,import_jsx_runtime.jsxs)(import_core2.Group,{justify:"space-between",align:"flex-start",wrap:"nowrap",mb:"sm",children:[(0,import_jsx_runtime.jsx)(import_core2.Group,{gap:"lg",align:"flex-start",wrap:"wrap",children:group.actors.map(actor=>(0,import_jsx_runtime.jsxs)(import_core2.Stack,{gap:2,children:[getActorRoleLabel(actor)&&(0,import_jsx_runtime.jsx)(import_core2.Text,{size:"xs",c:"dimmed",tt:"uppercase",children:getActorRoleLabel(actor)}),(0,import_jsx_runtime.jsx)(import_core2.Text,{size:"sm",fw:500,children:(0,import_jsx_runtime.jsx)(import_react.ReferenceDisplay,{value:actor,link:!1})})]},(0,import_core3.getReferenceString)(actor)??actor.display))}),group.durationMinutes>0&&(0,import_jsx_runtime.jsxs)(import_core2.Text,{size:"xs",c:"dimmed",style:{whiteSpace:"nowrap"},children:[group.durationMinutes," min visit"]})]}),(0,import_jsx_runtime.jsx)(import_core2.Group,{gap:"xs",className:AppointmentFinder_default.timeGrid,children:group.appointments.map(appointment=>(0,import_jsx_runtime.jsx)(import_core2.Button,{variant:selected===appointment?"filled":"outline",size:"sm",disabled,onClick:()=>onSelectAppointment(appointment),children:appointment.start?formatZonedTime(new Date(appointment.start),timezone):""},appointment.start))})]})}var import_jsx_runtime2=require("react/jsx-runtime");function AppointmentDayTimes(props){let{date,groups,onSelectAppointment,timezone,selected}=props;return(0,import_jsx_runtime2.jsxs)(import_core4.Stack,{gap:"xs",children:[(0,import_jsx_runtime2.jsx)(import_core4.Title,{order:4,children:formatDayHeading(date)}),groups.length===0&&(0,import_jsx_runtime2.jsx)(import_core4.Text,{c:"dimmed",children:"No times are offered on this day."}),groups.map(group=>(0,import_jsx_runtime2.jsx)(AppointmentSlotGroupCard,{group,timezone,selected,onSelectAppointment},group.key))]})}var NativeTemporal=globalThis.Temporal;var expectedPositive=(entityName,num)=>`Non-positive ${entityName}: ${num}`,expectedFinite=(entityName,num)=>`Non-finite ${entityName}: ${num}`,forbiddenBigIntToNumber=entityName=>`Cannot convert bigint to ${entityName}`,invalidObject="Invalid object",numberOutOfRange=(entityName,val,min,max)=>invalidEntity(entityName,val)+`; must be between ${min}-${max}`,invalidEntity=(fieldName,val)=>`Invalid ${fieldName}: ${val}`;var nanoInMicro=1e3,nanoInMilli=1e6,nanoInSec=1e9,nanoInMinute=6e10,nanoInHour=36e11;function normalizeOptions(options){return options===void 0?Object.create(null):requireObjectLike(options)}function toFiniteNumber(arg,entityName="number"){if(typeof arg=="bigint")throw new TypeError(forbiddenBigIntToNumber(entityName));if(arg=Number(arg),!Number.isFinite(arg))throw new RangeError(expectedFinite(entityName,arg));return arg}function toIntegerWithTrunc(arg,entityName){return Math.trunc(toFiniteNumber(arg,entityName))||0}function toPositiveIntegerWithTruncation(arg,entityName){return requireNumberIsPositive(toIntegerWithTrunc(arg,entityName),entityName)}function requireNumberIsPositive(num,entityName="number"){if(num<=0)throw new RangeError(expectedPositive(entityName,num));return num}function constrainToRange(num,min,max){return Math.min(Math.max(num,min),max)}function isObjectLike(arg){return arg!==null&&(typeof arg=="object"||typeof arg=="function")}function requireObjectLike(arg){if(!isObjectLike(arg))throw new TypeError(invalidObject);return arg}function createDiffFunc(unit){return(date0,date1,options)=>{let normOptions=normalizeDiffOptions(options);if(normOptions.roundingMode)return date0.until(date1,{...normOptions,largestUnit:unit,smallestUnit:unit})[unit];let duration=date0.until(date1,{...normOptions,largestUnit:unit});if(isTimeUnit(unit))return duration.total(unit);let relativeTo=!("day"in date0)&&"toPlainDate"in date0?date0.toPlainDate({day:1}):date0;return duration.total({unit,relativeTo})}}function isTimeUnit(unit){return unit==="hours"||unit==="minutes"||unit==="seconds"||unit==="milliseconds"||unit==="microseconds"||unit==="nanoseconds"}var diffYears=createDiffFunc("years"),diffMonths=createDiffFunc("months"),diffWeeks=createDiffFunc("weeks"),diffDays=createDiffFunc("days"),diffHours=createDiffFunc("hours"),diffMinutes=createDiffFunc("minutes"),diffSeconds=createDiffFunc("seconds"),diffMilliseconds=createDiffFunc("milliseconds"),diffMicroseconds=createDiffFunc("microseconds"),diffNanoseconds=createDiffFunc("nanoseconds");function normalizeDiffOptions(options){return typeof options=="string"?{roundingMode:options}:options||{}}var invalidEntity2=invalidEntity;var missingField=fieldName=>`Missing ${fieldName}`;var invalidChoice=(fieldName,val,choiceMap)=>invalidEntity(fieldName,val)+"; must be "+Object.keys(choiceMap).join(),forbiddenValueOf="Cannot use valueOf",invalidCallingContext="Invalid calling context";var exoticCalendarRequired=(calendarId,remedy)=>`Unknown calendar ${calendarId}; might need ${remedy}`,invalidTimeZone=calendarId=>invalidEntity("TimeZone",calendarId),outOfBoundsDate="Out-of-bounds date";var failedParse=s=>`Cannot parse: ${s}`,invalidSubstring=substring=>`Invalid substring: ${substring}`;var constrainToRange2=constrainToRange;function throwRangeError(message){throw new RangeError(message)}function throwTypeError(message){throw new TypeError(message)}function clampProp(props,propName,min,max,overflow){return clampEntity(propName,((props2,propName2)=>{let propVal=props2[propName2];return propVal===void 0&&throwTypeError(missingField(propName2)),propVal})(props,propName),min,max,overflow)}function clampEntity(entityName,num,min,max,overflow,choices){let clamped=constrainToRange2(num,min,max);return overflow&&num!==clamped&&throwRangeError(((entityName2,val,min2,max2,choices2)=>choices2?numberOutOfRange(entityName2,choices2[val],choices2[min2],choices2[max2]):numberOutOfRange(entityName2,val,min2,max2))(entityName,num,min,max,choices)),clamped}function memoize(generator,MapClass=Map){let map=new MapClass;return(key,...otherArgs)=>{if(map.has(key))return map.get(key);let val=generator(key,...otherArgs);return map.set(key,val),val}}var createNameDescriptors=name=>createPropDescriptors({name},1),createPropDescriptors=(propVals,readonly)=>mapProps(value=>({value,configurable:1,writable:!readonly}),propVals),createStringTagDescriptors=value=>({[Symbol.toStringTag]:{value,configurable:1}});function mapProps(transformer,props){let res={};for(let propName in props)res[propName]=transformer(props[propName],propName);return res}function zipPropsConst(propNames,propVal){let res={};for(let propName of propNames)res[propName]=propVal;return res}function createPropGetters(propNames){let getters={};for(let propName of propNames)getters[propName]=slots=>slots[propName];return getters}function pluckProps(propNames,props,dest=Object.create(null)){for(let propName of propNames)dest[propName]=props[propName];return dest}function bindArgs(f,...boundArgs){return(...dynamicArgs)=>f(...boundArgs,...dynamicArgs)}function noop(){}function capitalize(s){return s[0].toUpperCase()+s.substring(1)}function createRegExp(meat){return new RegExp(`^${meat}$`,"i")}function parseSubsecNano(fracStr){return parseInt(fracStr.padEnd(9,"0"))}function parseSign(s){return s&&s!=="+"?-1:1}function parseInt0(s){return s===void 0?0:parseInt(s)}function padNumber(digits,num){return String(num).padStart(digits,"0")}var padNumber2=bindArgs(padNumber,2);function compareNumbers(a,b){return Math.sign(a-b)}function divFloorBigInt(num,denom){let whole=num/denom;return num%denom<0n?whole-1n:whole}function divModFloorBigInt(num,divisor){let quotient=divFloorBigInt(num,divisor);return[quotient,num-quotient*divisor]}function divModFloor(num,divisor){return[Math.floor(num/divisor),modFloor(num,divisor)]}function modFloor(num,divisor){return(num%divisor+divisor)%divisor}function divTrunc(num,divisor){return Math.trunc(num/divisor)||0}function hasHalf(num){return Math.abs(num%1)===.5}function normalizeEraName(era){let normalized=era.normalize("NFD").toLowerCase().replace(/[^a-z0-9]/g,"");return normalized==="bc"||normalized==="b"?"bce":normalized==="ad"||normalized==="a"?"ce":normalized}var isoCalendarImpl=void 0;function getCalendarSlotId(calendar){return calendar===isoCalendarImpl?"iso8601":calendar===0?"gregory":calendar.id}function formatMonthCode(monthCodeNumber,isLeapMonth){return"M"+padNumber2(monthCodeNumber)+(isLeapMonth?"L":"")}var unitNameMap={nanosecond:0,microsecond:1,millisecond:2,second:3,minute:4,hour:5,day:6,week:7,month:8,year:9},unitNamesAsc=Object.keys(unitNameMap);var nanoInMicro2=nanoInMicro,nanoInMilli2=nanoInMilli,nanoInSec2=nanoInSec,nanoInMinute2=nanoInMinute,nanoInHour2=nanoInHour,nanoInUtcDay=864e11;var bigNanoInMilli=BigInt(nanoInMilli2),bigNanoInSec=BigInt(nanoInSec2);var bigNanoInUtcDay=BigInt(nanoInUtcDay);var timeFieldNamesAsc=unitNamesAsc.slice(0,6),timeGetters=createPropGetters(timeFieldNamesAsc);var calendarDateFieldNamesAsc=["day","month","year"];function validateTimeFields(timeFields){return constrainTimeFields(timeFields,1),timeFields}var maxValues={hour:23,minute:59,second:59};function constrainTimeFields(timeFields,overflow){let constrainedFields={};for(let fieldName of timeFieldNamesAsc)constrainedFields[fieldName]=clampEntity(fieldName,timeFields[fieldName],0,maxValues[fieldName]||999,overflow);return constrainedFields}function timeFieldsToNano(timeFields){return timeFieldsToSec(timeFields)*nanoInSec2+timeFieldsToSubsecNano(timeFields)}function timeFieldsToSec(timeFields){return 3600*timeFields.hour+60*timeFields.minute+timeFields.second}function timeFieldsToSubsecNano(timeFields){return timeFields.millisecond*nanoInMilli2+timeFields.microsecond*nanoInMicro2+timeFields.nanosecond}function nanoToTimeFields(timeNano){let[timeMilli,nanoAfterMilli]=divModFloor(timeNano,nanoInMilli2),[microsecond,nanosecond]=divModFloor(nanoAfterMilli,nanoInMicro2);return milliToTimeFields(timeMilli,microsecond,nanosecond)}function milliToTimeFields(timeMilli,microsecond=0,nanosecond=0){let[hour,milliAfterHour]=divModFloor(timeMilli,36e5),[minute,milliAfterMinute]=divModFloor(milliAfterHour,6e4),[second,millisecond]=divModFloor(milliAfterMinute,1e3);return{hour,minute,second,millisecond,microsecond,nanosecond}}function epochNanoToSecMod(epochNano){let[epochSec,nano]=divModFloorBigInt(epochNano,bigNanoInSec);return[Number(epochSec),Number(nano)]}function isoDateTimeToEpochNano(isoDateTime){return isoDateToEpochNano(isoDateTime)+BigInt(timeFieldsToNano(isoDateTime))}function isoDateToEpochNano(isoDate){return BigInt(isoDateToEpochDays(isoDate))*bigNanoInUtcDay}function isoDateToEpochDays(isoDate){return isoArgsToEpochDays(isoDate.year,isoDate.month,isoDate.day)}function isoArgsToEpochDays(isoYear,isoMonth=1,isoDay=1){let monthIndex=isoMonth-1;return isoYear+=Math.floor(monthIndex/12),isoMonth=modFloor(monthIndex,12),Date.UTC(isoYear%400-400,isoMonth,0)/864e5+146097*(divTrunc(isoYear,400)+1)+isoDay}function epochNanoToIsoDateTime(epochNano){let[epochDays,nanoAfterDay]=divModFloorBigInt(epochNano,bigNanoInUtcDay);return{...epochDaysToIsoDate(Number(epochDays)),...nanoToTimeFields(Number(nanoAfterDay))}}function epochDaysToIsoDate(epochDays){let legacyDate=new Date(864e5*modFloor(epochDays,146097));return{year:legacyDate.getUTCFullYear()+400*Math.floor(epochDays/146097),month:legacyDate.getUTCMonth()+1,day:legacyDate.getUTCDate()}}function computeIsoMonthCodeParts(month){return[month,0]}function computeIsoFieldsFromParts(year,month,day){return{year,month,day}}function computeIsoDaysInMonth(year,month){switch(month){case 2:return computeIsoInLeapYear(year)?29:28;case 4:case 6:case 9:case 11:return 30}return 31}function computeIsoDaysInYear(year){return computeIsoInLeapYear(year)?366:365}function computeIsoInLeapYear(year){return year%4==0&&(year%100!=0||year%400==0)}function computeIsoDayOfWeek(isoDateFields){return modFloor(isoArgsToEpochDays(isoDateFields.year,isoDateFields.month,isoDateFields.day)+4,7)||7}function computeIsoDayOfYear(isoDateFields){return isoArgsToEpochDays(isoDateFields.year,isoDateFields.month,isoDateFields.day)-isoArgsToEpochDays(isoDateFields.year)+1}function computeIsoWeekFields(isoDateFields){let yearOfWeek3=isoDateFields.year,weekOfYear4=Math.floor((computeIsoDayOfYear(isoDateFields)-computeIsoDayOfWeek(isoDateFields)+10)/7),weeksInYear=computeIsoWeeksInYear(yearOfWeek3);return weekOfYear4<1?weekOfYear4=weeksInYear=computeIsoWeeksInYear(--yearOfWeek3):weekOfYear4>weeksInYear&&(weekOfYear4=1,weeksInYear=computeIsoWeeksInYear(++yearOfWeek3)),{weekOfYear:weekOfYear4,yearOfWeek:yearOfWeek3,Be:weeksInYear}}function computeIsoWeeksInYear(year){let y0DayOfWeek=computeIsoDayOfWeek({year,month:1,day:1});return y0DayOfWeek===4||y0DayOfWeek===3&&computeIsoInLeapYear(year)?53:52}function computeGregoryEraFields({year}){return year<1?{era:"bce",eraYear:1-year}:{era:"ce",eraYear:year}}function validateIsoDateTimeFields(isoDateTime){return validateIsoDateFields(isoDateTime),validateTimeFields(isoDateTime)}function validateIsoDateFields(isoInternals){return constrainIsoDateFields(isoInternals,1),isoInternals}function constrainIsoDateFields(isoDate,overflow){let{year}=isoDate,month=clampProp(isoDate,"month",1,12,overflow);return{year,month,day:clampProp(isoDate,"day",1,computeIsoDaysInMonth(year,month),overflow)}}function computeCalendarDateFields(calendar,isoDate){return calendar?calendar.ae(isoDate):isoDate}function computeCalendarMonthCodeParts(calendar,year,month){return calendar?calendar.L(year,month):computeIsoMonthCodeParts(month)}function computeCalendarEraFields(calendar,isoDate){return calendar===0?computeGregoryEraFields(isoDate):calendar&&calendar.h?.(isoDate)||{}}function computeCalendarIsoFieldsFromParts(calendar,year,month,day){return calendar?calendar.de(year,month,day):computeIsoFieldsFromParts(year,month,day)}function computeCalendarMonthsInYearForYear(calendar,year){return calendar?calendar.j(year):12}function computeCalendarDaysInMonthForYearMonth(calendar,year,month){return calendar?calendar.o(year,month):computeIsoDaysInMonth(year,month)}function computeCalendarMonthCode(calendar,isoDate){let{year,month}=computeCalendarDateFields(calendar,isoDate),[monthCodeNumber,isLeapMonth]=computeCalendarMonthCodeParts(calendar,year,month);return formatMonthCode(monthCodeNumber,isLeapMonth)}function computeCalendarInLeapYear(calendar,isoDate){let{year}=computeCalendarDateFields(calendar,isoDate);return calendar?calendar.q(year):computeIsoInLeapYear(year)}function computeCalendarMonthsInYear(calendar,isoDate){let{year}=computeCalendarDateFields(calendar,isoDate);return computeCalendarMonthsInYearForYear(calendar,year)}function computeCalendarDaysInMonth(calendar,isoDate){let{year,month}=computeCalendarDateFields(calendar,isoDate);return computeCalendarDaysInMonthForYearMonth(calendar,year,month)}function computeCalendarDaysInYear(calendar,isoDate){let{year}=computeCalendarDateFields(calendar,isoDate);return calendar?calendar.i(year):computeIsoDaysInYear(year)}function computeCalendarDayOfYear(calendar,isoDate){if(!calendar)return computeIsoDayOfYear(isoDate);let{year}=computeCalendarDateFields(calendar,isoDate),yearStartIsoDate=computeCalendarIsoFieldsFromParts(calendar,year,1,1);return isoDateToEpochDays(isoDate)-isoDateToEpochDays(yearStartIsoDate)+1}function computeCalendarWeekOfYear(calendar,isoDate){return calendar===isoCalendarImpl?computeIsoWeekFields(isoDate).weekOfYear:void 0}function computeCalendarYearOfWeek(calendar,isoDate){return calendar===isoCalendarImpl?computeIsoWeekFields(isoDate).yearOfWeek:void 0}var requireString=bindArgs(requireType,"string");function requireType(typeName,arg,entityName=typeName){return typeof arg!==typeName&&throwTypeError(invalidEntity2(entityName,arg)),arg}function requireNumberIsInteger(num,entityName="number"){return Number.isInteger(num)||throwRangeError(((entityName2,num2)=>`Non-integer ${entityName2}: ${num2}`)(entityName,num)),num||0}function toString(arg){return typeof arg=="symbol"&&throwTypeError("Cannot convert Symbol to string"),String(arg)}function toStringViaPrimitive(arg,entityName){return isObjectLike(arg)?String(arg):requireString(arg,entityName)}function toStrictInteger(arg,entityName){return requireNumberIsInteger(toFiniteNumber(arg,entityName),entityName)}var epochDisambigMap={compatible:0,reject:1,earlier:2,later:3};var roundingModeFuncs=[Math.floor,num=>hasHalf(num)?Math.floor(num):Math.round(num),Math.ceil,num=>hasHalf(num)?Math.ceil(num):Math.round(num),Math.trunc,num=>hasHalf(num)?Math.trunc(num)||0:Math.round(num),num=>num<0?Math.floor(num):Math.ceil(num),num=>Math.sign(num)*Math.round(Math.abs(num))||0,num=>hasHalf(num)?(num=Math.trunc(num)||0)+num%2:Math.round(num)];function coerceChoiceOption(optionName,enumNameMap,options,defaultChoice=0){let enumArg=options[optionName];if(enumArg===void 0)return defaultChoice;let enumStr=toString(enumArg),enumNum=enumNameMap[enumStr];return enumNum===void 0&&throwRangeError(invalidChoice(optionName,enumStr,enumNameMap)),enumNum}var coerceEpochDisambig=bindArgs(coerceChoiceOption,"disambiguation",epochDisambigMap);function combineDateAndTime(isoDate,time){return pluckProps(calendarDateFieldNamesAsc,isoDate,pluckProps(timeFieldNamesAsc,time))}var epochNanoMax=BigInt(1e8)*bigNanoInUtcDay,epochNanoMin=BigInt(-1e8)*bigNanoInUtcDay,plainDateEpochNanoMin=epochNanoMin-bigNanoInUtcDay;function checkIsoDateInBounds(isoDate,allowPlainDateLowerEdge=1){return checkIsoDateEpochNanoInBounds(isoDateToEpochNano(isoDate),allowPlainDateLowerEdge),isoDate}function checkIsoDateTimeInBounds(isoDateTime){let epochNano=isoDateToEpochNano(isoDateTime);return checkIsoDateEpochNanoInBounds(epochNano),epochNano!==plainDateEpochNanoMin||timeFieldsToNano(isoDateTime)||throwRangeError(outOfBoundsDate),isoDateTime}function checkIsoDateEpochNanoInBounds(epochNano,allowPlainDateLowerEdge=1){(epochNano<(allowPlainDateLowerEdge?plainDateEpochNanoMin:epochNanoMin)||epochNano>epochNanoMax)&&throwRangeError(outOfBoundsDate)}function checkEpochNanoInBounds(epochNano){return(epochNano<epochNanoMin||epochNano>epochNanoMax)&&throwRangeError(outOfBoundsDate),epochNano}function isoDateTimeAndOffsetToEpochNano(isoDateTime,offsetNano){return checkEpochNanoInBounds(isoDateToEpochNano(isoDateTime)+BigInt(timeFieldsToNano(isoDateTime)-offsetNano))}function createEpochNanoSlots(epochNano){return{epochNanoseconds:epochNano}}function createZonedEpochNanoSlots(epochNano,timeZone,calendar){return{calendar,timeZone,epochNanoseconds:epochNano}}function createDateTimeSlots(isoDateTime,calendar){return pluckProps(timeFieldNamesAsc,isoDateTime,createDateSlots(isoDateTime,calendar))}function createDateSlots(isoDate,calendar){return pluckProps(calendarDateFieldNamesAsc,isoDate,{calendar})}function getEpochMilli(slots){return epochNano=slots.epochNanoseconds,Number(divFloorBigInt(epochNano,bigNanoInMilli));var epochNano}function getEpochNano(slots){return slots.epochNanoseconds}function roundToMinute(offsetNano){return roundNumberToInc(offsetNano,nanoInMinute2,7)}function roundNumberToInc(num,roundingInc,roundingMode){return roundWithMode(num/roundingInc,roundingMode)*roundingInc}function roundWithMode(num,roundingMode){return roundingModeFuncs[roundingMode](num)}var zonedEpochSlotsToIso=memoize(_zonedEpochSlotsToIso,WeakMap);function _zonedEpochSlotsToIso(slots){let{epochNanoseconds,timeZone}=slots,offsetNanoseconds4=timeZone.B(epochNanoseconds);return{...epochNanoToIsoDateTime(epochNanoseconds+BigInt(offsetNanoseconds4)),offsetNanoseconds:offsetNanoseconds4}}function getMatchingInstantFor(timeZone,isoDateTime,offsetNano,offsetDisambig=0,epochDisambig=0,epochFuzzy,hasZ){if(offsetNano!==void 0&&offsetDisambig===1&&(offsetDisambig===1||hasZ))return isoDateTimeAndOffsetToEpochNano(isoDateTime,offsetNano);offsetDisambig!==2&&offsetDisambig!==0||checkIsoDateInBounds(isoDateTime,0);let possibleEpochNanos=timeZone.N(isoDateTime);if(offsetNano!==void 0&&offsetDisambig!==3){let matchingEpochNano=((possibleEpochNanos2,isoDateTime2,offsetNano2,fuzzy)=>{let zonedEpochNano=isoDateTimeToEpochNano(isoDateTime2);fuzzy&&(offsetNano2=roundToMinute(offsetNano2));for(let possibleEpochNano of possibleEpochNanos2){let possibleOffsetNano=Number(zonedEpochNano-possibleEpochNano);if(fuzzy&&(possibleOffsetNano=roundToMinute(possibleOffsetNano)),possibleOffsetNano===offsetNano2)return possibleEpochNano}})(possibleEpochNanos,isoDateTime,offsetNano,epochFuzzy);if(matchingEpochNano!==void 0)return matchingEpochNano;offsetDisambig===0&&throwRangeError("Invalid TimeZone offset")}return hasZ?isoDateTimeToEpochNano(isoDateTime):getSingleInstantFor(timeZone,isoDateTime,epochDisambig,possibleEpochNanos)}function getSingleInstantFor(timeZone,isoDateTime,disambig=0,possibleEpochNanos=timeZone.N(isoDateTime)){if(possibleEpochNanos.length===1)return possibleEpochNanos[0];if(disambig===1&&throwRangeError("Ambiguous offset"),possibleEpochNanos.length)return possibleEpochNanos[disambig===3?1:0];let zonedEpochNano=isoDateTimeToEpochNano(isoDateTime),gapNano=((timeZone2,zonedEpochNano2)=>{let startOffsetNano=timeZone2.B(zonedEpochNano2-bigNanoInUtcDay);return(gapNano2=>(gapNano2>nanoInUtcDay&&throwRangeError("Out-of-bounds TimeZone gap"),gapNano2))(timeZone2.B(zonedEpochNano2+bigNanoInUtcDay)-startOffsetNano)})(timeZone,zonedEpochNano),shiftedIsoDateTime=epochNanoToIsoDateTime(zonedEpochNano+BigInt(gapNano*(disambig===2?-1:1)));return(possibleEpochNanos=timeZone.N(shiftedIsoDateTime))[disambig===2?0:possibleEpochNanos.length-1]}var maxDurationSeconds=2**53;var offsetRegExp=createRegExp("([+-])(\\d{2})(?::?(\\d{2})(?::?(\\d{2})(?:[.,](\\d{1,9}))?)?)?");function parseOffsetNano(s){let offsetNano=parseOffsetNanoMaybe(s);return offsetNano===void 0&&throwRangeError(failedParse(s)),offsetNano}function parseOffsetNanoMaybe(s,onlyHourMinute){let parts=offsetRegExp.exec(s);if(parts&&(s2=>(s3=>{s3[0]!=="T"&&s3[0]!=="t"||(s3=s3.slice(1));let fractionIndex=s3.search(/[.,]/),main=fractionIndex<0?s3:s3.slice(0,fractionIndex),parts2=main.split(":");return parts2.length===1?/^(?:\d{2}|\d{4}|\d{6})$/i.test(main):(parts2.length===2||parts2.length===3)&&parts2.every(part=>part.length===2&&/^\d{2}$/i.test(part))})(s2.slice(1)))(parts[0]))return((parts2,onlyHourMinute2)=>{let firstSubMinutePart=parts2[4]||parts2[5];return onlyHourMinute2&&firstSubMinutePart&&throwRangeError(invalidSubstring(firstSubMinutePart)),offsetNano=(parseInt0(parts2[2])*nanoInHour2+parseInt0(parts2[3])*nanoInMinute2+parseInt0(parts2[4])*nanoInSec2+parseSubsecNano(parts2[5]||""))*parseSign(parts2[1]),Math.abs(offsetNano)>=nanoInUtcDay&&throwRangeError("Out-of-bounds offset"),offsetNano;var offsetNano})(parts,onlyHourMinute)}var dateFieldRefiners={era:toStringViaPrimitive,month:toPositiveIntegerWithTruncation,monthCode(monthCode,entityName){if(typeof monthCode=="string")return monthCode;if(monthCode&&typeof monthCode=="object"){let monthCodeToString=monthCode.toString;if(typeof monthCodeToString=="function")return requireString(monthCodeToString.call(monthCode),entityName)}return requireString(monthCode,entityName)},day:toPositiveIntegerWithTruncation},timeFieldRefiners=zipPropsConst(timeFieldNamesAsc,toIntegerWithTrunc);var dateTimeFieldRefiners=Object.assign({},dateFieldRefiners,timeFieldRefiners),zonedDateTimeFieldRefiners={offset(offsetString){return parseOffsetNano(toStringViaPrimitive(offsetString))},...dateTimeFieldRefiners};var RawDateTimeFormat=Intl.DateTimeFormat;function formatEpochMilliToPartsRecord(intlFormat,epochMilli){epochMilli<-864e13&&throwRangeError(outOfBoundsDate);let parts=intlFormat.formatToParts(epochMilli),hash={};for(let part of parts)hash[part.type]=part.value;return hash}var timeZonePeriodDaysByName={El_Aaiun:17,Tucuman:12,Tirane:11,Riga:10,Simferopol:9,Vienna:9,Tunis:8,Boa_Vista:6,Fortaleza:6,Maceio:6,Noronha:6,Recife:6,Gaza:6,Hebron:6,DeNoronha:6},minPossibleTransitionSec=-388152e4;function formatInstantIsoAuto(instantSlots){return formatIsoDateTimeFields(epochNanoToIsoDateTime(instantSlots.epochNanoseconds),void 0)+"Z"}function formatZonedDateTimeIsoAuto(zonedDateTimeSlots){let calendar=zonedDateTimeSlots.calendar,timeZone=zonedDateTimeSlots.timeZone,offsetNano=timeZone.B(zonedDateTimeSlots.epochNanoseconds);return formatIsoDateTimeFields(epochNanoToIsoDateTime(zonedDateTimeSlots.epochNanoseconds+BigInt(offsetNano)),void 0)+formatOffsetNano(roundToMinute(offsetNano))+formatTimeZone(timeZone.id,0)+(calendar===isoCalendarImpl?"":formatCalendarId(getCalendarSlotId(calendar),0))}function formatDateTimeIsoAuto(isoDateTimeSlots){let calendar=isoDateTimeSlots.calendar;return formatIsoDateTimeFields(isoDateTimeSlots,void 0)+(calendar===isoCalendarImpl?"":formatCalendarId(getCalendarSlotId(calendar),0))}function formatIsoDateTimeFields(isoDateTime,subsecDigits){return formatIsoDateFields(isoDateTime)+"T"+formatTimeFields(isoDateTime,subsecDigits)}function formatIsoDateFields(isoDateFields){return formatIsoYearMonthFields(isoDateFields)+"-"+padNumber2(isoDateFields.day)}function formatIsoYearMonthFields(isoDateFields){let{year}=isoDateFields;return(year<0||year>9999?getSignStr(year)+padNumber(6,Math.abs(year)):padNumber(4,year))+"-"+padNumber2(isoDateFields.month)}function formatTimeFields(timeFields,subsecDigits){let parts=[padNumber2(timeFields.hour),padNumber2(timeFields.minute)];return subsecDigits!==-1&&parts.push(padNumber2(timeFields.second)+((millisecond,microsecond,nanosecond,subsecDigits2)=>formatSubsecNano(millisecond*nanoInMilli2+microsecond*nanoInMicro2+nanosecond,subsecDigits2))(timeFields.millisecond,timeFields.microsecond,timeFields.nanosecond,subsecDigits)),parts.join(":")}function formatOffsetNano(offsetNano,offsetDisplay=0){if(offsetDisplay===1)return"";let[hour,nanoRemainder0]=divModFloor(Math.abs(offsetNano),nanoInHour2),[minute,nanoRemainder1]=divModFloor(nanoRemainder0,nanoInMinute2),[second,nanoRemainder2]=divModFloor(nanoRemainder1,nanoInSec2);return getSignStr(offsetNano)+padNumber2(hour)+":"+padNumber2(minute)+(second||nanoRemainder2?":"+padNumber2(second)+formatSubsecNano(nanoRemainder2):"")}function formatTimeZone(timeZoneId,timeZoneDisplay){return timeZoneDisplay!==1?"["+(timeZoneDisplay===2?"!":"")+timeZoneId+"]":""}function formatCalendarId(calendarId,isCritical){return"["+(isCritical?"!":"")+"u-ca="+calendarId+"]"}var trailingZerosRE=/0+$/;function formatSubsecNano(totalNano,subsecDigits){let s=padNumber(9,totalNano);return s=subsecDigits===void 0?s.replace(trailingZerosRE,""):s.slice(0,subsecDigits),s?"."+s:""}function getSignStr(num){return num<0?"-":"+"}var icuRegExp=/^(AC|AE|AG|AR|AS|BE|BS|CA|CN|CS|CT|EA|EC|IE|IS|JS|MI|NE|NS|PL|PN|PR|PS|SS|VS)T$/,badCharactersRegExp=/[^\w\/:+-]+/;function refineTimeZoneId(rawId){return resolveTimeZoneId(requireString(rawId))}function resolveTimeZoneId(rawId){return resolveTimeZoneRecord(rawId).id}function resolveTimeZoneRecord(rawId){let upperRawId=rawId.toUpperCase(),offsetRecord=(upperRawId2=>{let offsetNano=parseOffsetNanoMaybe(upperRawId2,1);if(offsetNano!==void 0)return{id:formatOffsetNano(offsetNano),X:offsetNano,m:offsetNano}})(upperRawId);if(offsetRecord)return{kind:"fixed",...offsetRecord};let normId=upperRawId==="UTC"?"UTC":(rawId2=>(badCharactersRegExp.test(rawId2)&&throwRangeError(invalidTimeZone(rawId2)),icuRegExp.test(rawId2)&&throwRangeError("Forbidden ICU TimeZone"),rawId2.toLowerCase().split("/").map((part,partI)=>(part.length<=3||/\d/.test(part))&&!/etc|yap/.test(part)?part.toUpperCase():part.replace(/baja|dumont|[a-z]+/g,(a,i)=>a.length<=2&&!partI||a==="in"||a==="chat"?a.toUpperCase():a.length>2||!i?capitalize(a).replace(/island|noronha|murdo|rivadavia|urville/,capitalize):a)).join("/")))(rawId);return queryNamedTimeZoneRecord(normId)}var queryNamedTimeZoneRecord=memoize(normId=>{if(normId==="UTC")return{kind:"utc",id:normId,m:normId};let upperNormId=normId.toUpperCase(),format=queryTimeZoneIntlFormat(upperNormId);return{kind:"named",id:normId,format,m:format.resolvedOptions().timeZone}}),queryTimeZoneIntlFormat=memoize(upperNormId=>new RawDateTimeFormat("en-u-hc-h23",{calendar:"iso8601",timeZone:upperNormId,era:"short",year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric"}));function queryTimeZone(rawTimeZoneId){let record=resolveTimeZoneRecord(rawTimeZoneId);return queryTimeZoneRecord(record.id,record)}var queryTimeZoneRecord=memoize((normTimeZoneId,record)=>record.kind==="named"?new IntlTimeZone(normTimeZoneId,record.m,record.format):new FixedTimeZone(normTimeZoneId,record.m,record.kind==="fixed"?record.X:0)),FixedTimeZone=class{constructor(id,compareKey,offsetNano){this.id=id,this.m=compareKey,this.X=offsetNano}B(){return this.X}N(isoDateTime){return[isoDateTimeAndOffsetToEpochNano(isoDateTime,this.X)]}O(){}},IntlTimeZone=class{constructor(id,compareKey,format){this.id=id,this.m=compareKey,this.ke=((computeOffsetSec,periodDays)=>{let getSample=memoize(computeOffsetSec),getSplit=memoize(createSplitTuple),periodSec=86400*periodDays;function getOffsetSec(epochSec){let[startEpochSec,endEpochSec]=computePeriod(epochSec,periodSec),clampedStartEpochSec=clampIntlSampleEpochSec(startEpochSec),clampedEndEpochSec=clampIntlSampleEpochSec(endEpochSec),startOffsetSec=getSample(clampedStartEpochSec),endOffsetSec=getSample(clampedEndEpochSec);return startOffsetSec===endOffsetSec?startOffsetSec:pinch(getSplit(clampedStartEpochSec,clampedEndEpochSec),startOffsetSec,endOffsetSec,epochSec)}function pinch(split,startOffsetSec,endOffsetSec,forEpochSec){let offsetSec,splitDurSec;for(;(forEpochSec===void 0||(offsetSec=forEpochSec<split[0]?startOffsetSec:forEpochSec>=split[1]?endOffsetSec:void 0)===void 0)&&(splitDurSec=split[1]-split[0]);){let middleEpochSec=split[0]+Math.floor(splitDurSec/2);computeOffsetSec(middleEpochSec)===endOffsetSec?split[1]=middleEpochSec:split[0]=middleEpochSec+1}return offsetSec}return{xe(zonedEpochSec){let wideOffsetSec0=getOffsetSec(zonedEpochSec-86400),wideOffsetSec1=getOffsetSec(zonedEpochSec+86400),wideUtcEpochSec0=zonedEpochSec-wideOffsetSec0,wideUtcEpochSec1=zonedEpochSec-wideOffsetSec1;if(wideOffsetSec0===wideOffsetSec1)return[wideUtcEpochSec0];let narrowOffsetSec0=getOffsetSec(wideUtcEpochSec0);return narrowOffsetSec0===getOffsetSec(wideUtcEpochSec1)?[zonedEpochSec-narrowOffsetSec0]:wideOffsetSec0>wideOffsetSec1?[wideUtcEpochSec0,wideUtcEpochSec1]:[]},we:getOffsetSec,O:function getTransition(epochSec,direction){if(direction>0&&epochSec>=864e10)return;if(direction<0){if(epochSec<=minPossibleTransitionSec)return;let lookaheadEpochSec=getCurrentEpochSec()+94867200;if(epochSec>lookaheadEpochSec)return getTransition(lookaheadEpochSec,-1)}let searchEpochSec=direction>0?Math.max(epochSec,minPossibleTransitionSec):epochSec,[startEpochSec,endEpochSec]=computePeriod(searchEpochSec,periodSec),inc=periodSec*direction,searchLimit=direction>0?Math.max(epochSec,getCurrentEpochSec())+94867200:minPossibleTransitionSec,inBounds=()=>direction<0?endEpochSec>searchLimit:startEpochSec<searchLimit;for(;inBounds();){let clampedStartEpochSec=clampIntlSampleEpochSec(startEpochSec),clampedEndEpochSec=clampIntlSampleEpochSec(endEpochSec),startOffsetSec=getSample(clampedStartEpochSec),endOffsetSec=getSample(clampedEndEpochSec);if(startOffsetSec!==endOffsetSec){let split=getSplit(clampedStartEpochSec,clampedEndEpochSec);pinch(split,startOffsetSec,endOffsetSec);let transitionEpochSec=split[0];if((compareNumbers(transitionEpochSec,epochSec)||1)===direction)return transitionEpochSec}startEpochSec+=inc,endEpochSec+=inc}}}})((format2=>epochSec=>{let intlParts=formatEpochMilliToPartsRecord(format2,1e3*epochSec);return 86400*isoArgsToEpochDays((intlParts2=>{let relatedYear=intlParts2.relatedYear;if(relatedYear!==void 0)return parseInt(relatedYear);let year=parseInt(intlParts2.year);return intlParts2.era!==void 0&&normalizeEraName(intlParts2.era)==="bce"?1-year:year})(intlParts),parseInt(intlParts.month),parseInt(intlParts.day))+3600*parseInt(intlParts.hour)+60*parseInt(intlParts.minute)+parseInt(intlParts.second)-epochSec})(format),(timeZoneId=>{let timeZoneName=timeZoneId.split("/").pop();return timeZonePeriodDaysByName[timeZoneName]||60})(id))}B(epochNano){return this.ke.we((epochNano2=>epochNanoToSecMod(epochNano2)[0])(epochNano))*nanoInSec2}N(isoDateTime){let zonedEpochSec=86400*isoDateToEpochDays(isoDateTime)+timeFieldsToSec(isoDateTime),subsecNano=timeFieldsToSubsecNano(isoDateTime);return this.ke.xe(zonedEpochSec).map(epochSec=>checkEpochNanoInBounds(BigInt(epochSec)*bigNanoInSec+BigInt(subsecNano)))}O(epochNano,direction){let[epochSec,subsecNano]=epochNanoToSecMod(epochNano),resEpochSec=this.ke.O(epochSec+(direction>0||subsecNano?1:0),direction);if(resEpochSec!==void 0)return BigInt(resEpochSec)*bigNanoInSec}};function getCurrentEpochSec(){return Math.floor(Date.now()/1e3)}function createSplitTuple(startEpochSec,endEpochSec){return[startEpochSec,endEpochSec]}function computePeriod(epochSec,periodSec){let startEpochSec=Math.floor(epochSec/periodSec)*periodSec;return[startEpochSec,startEpochSec+periodSec]}function clampIntlSampleEpochSec(epochSec){return constrainToRange2(epochSec,-1e10,864e10)}function timeRegExpStr(separatorIndex){return`(\\d{2})(?:(:?)(\\d{2})(?:\\${separatorIndex}(\\d{2})(?:[.,](\\d{1,9}))?)?)?`}var dateTimeRegExpStr="(?:(?:([+-])(\\d{6}))|(\\d{4}))(-?)(\\d{2})\\4(\\d{2})(?:[T ]"+timeRegExpStr(8)+"(Z|([+-])"+timeRegExpStr(15)+")?)?";var dateTimeRegExp=createRegExp(dateTimeRegExpStr+"((?:\\[(!?)([^\\]]*)\\]){0,9})"),timeRegExp=createRegExp("T?"+timeRegExpStr(2)+`(([+-])${timeRegExpStr(9)})?((?:\\[(!?)([^\\]]*)\\]){0,9})`);function instantToZonedDateTime(instantSlots,timeZone,calendar){return createZonedEpochNanoSlots(instantSlots.epochNanoseconds,timeZone,calendar)}function plainDateTimeToZonedDateTime(plainDateTimeSlots,timeZone,options){let epochNano=getSingleInstantFor(timeZone,plainDateTimeSlots,(options2=>coerceEpochDisambig(normalizeOptions(options2)))(options));return createZonedEpochNanoSlots(checkEpochNanoInBounds(epochNano),timeZone,plainDateTimeSlots.calendar)}function epochMilliToInstant(epochMilli){return createEpochNanoSlots(checkEpochNanoInBounds(BigInt(toStrictInteger(epochMilli))*bigNanoInMilli))}function createOptionsTransformer(shapeFieldNames,invalidShapeFieldNames,ignoredFieldNames,defaultShapeFields,dateStyleReplacementFields){let shapeFieldNameSet=new Set(shapeFieldNames),invalidShapeFieldNameSet=new Set(invalidShapeFieldNames),ignoredFieldNameSet=new Set(ignoredFieldNames);return(options,allowPartialOverlap)=>{let dateStyle,timeStyle,granularShapeFields={},modifierFields={},otherFields={},hasInvalidGranularShapeFields=0,hasInvalidStyleFields=0;for(let name of Object.keys(options)){let value=options[name];value===void 0||ignoredFieldNameSet.has(name)||(shapeFieldNameSet.has(name)?name==="dateStyle"?dateStyle=value:name==="timeStyle"?timeStyle=value:granularShapeFields[name]=value:name==="era"?modifierFields[name]=value:invalidShapeFieldNameSet.has(name)?name==="dateStyle"||name==="timeStyle"?hasInvalidStyleFields=1:hasInvalidGranularShapeFields=1:otherFields[name]=value)}let hasDateStyle=dateStyle!==void 0,hasTimeStyle=timeStyle!==void 0,hasAnyStyle=hasDateStyle||hasTimeStyle,hasGranularShapeFields=Object.keys(granularShapeFields).length>0,hasInvalids=hasInvalidGranularShapeFields||hasInvalidStyleFields,hasShapeFields=hasGranularShapeFields||hasDateStyle||hasTimeStyle,hasModifierFields=Object.keys(modifierFields).length>0;(!allowPartialOverlap&&hasInvalids||allowPartialOverlap&&hasInvalids&&!hasShapeFields||hasAnyStyle&&(hasGranularShapeFields||hasModifierFields||hasInvalidGranularShapeFields))&&throwTypeError("Invalid formatting options");let transformedOptions={};return hasAnyStyle||hasShapeFields||Object.assign(transformedOptions,defaultShapeFields),Object.assign(transformedOptions,granularShapeFields,modifierFields,otherFields),hasDateStyle&&(dateStyleReplacementFields?Object.assign(transformedOptions,dateStyleReplacementFields[dateStyle]):transformedOptions.dateStyle=dateStyle),hasTimeStyle&&(transformedOptions.timeStyle=timeStyle),transformedOptions}}var dateDefaultShapeFields={year:"numeric",month:"numeric",day:"numeric"},timeDefaultShapeFields={hour:"numeric",minute:"numeric",second:"numeric"},dateTimeDefaultShapeFields=Object.assign({},dateDefaultShapeFields,timeDefaultShapeFields),dateShapeFieldNames=["weekday","year","month","day","dateStyle"],timeShapeFieldNames=["dayPeriod","hour","minute","second","fractionalSecondDigits","timeStyle"],dateTimeShapeFieldNames=dateShapeFieldNames.concat(timeShapeFieldNames);var transformZonedOptions=createOptionsTransformer(dateTimeShapeFieldNames,[],[],{...dateTimeDefaultShapeFields,timeZoneName:"short"});var PlainYearMonthBranding="PlainYearMonth",PlainMonthDayBranding="PlainMonthDay",PlainDateBranding="PlainDate",PlainDateTimeBranding="PlainDateTime",PlainTimeBranding="PlainTime",ZonedDateTimeBranding="ZonedDateTime",InstantBranding="Instant",DurationBranding="Duration",CalendarBranding="Calendar";function defineTemporalClass(branding,cls,getSlots,...getterMaps){return Object.defineProperties(cls,createNameDescriptors(branding)),Object.defineProperties(cls.prototype,createStringTagDescriptors("Temporal."+branding)),Object.defineProperties(cls.prototype,mapProps(getter=>({get(){return getter(getSlots(this))},configurable:1}),Object.assign({},...getterMaps))),cls}var attachDebugString=noop.name==="noop"?instance=>{Object.defineProperty(instance,"_str_",{value:instance.toJSON()})}:noop;function invalidRecordType(){throwTypeError(invalidCallingContext)}function forbiddenValueOf2(){throwTypeError(forbiddenValueOf)}var dateFieldGetters$1={era(slots){return computeCalendarEraFields(slots.calendar,slots).era},eraYear(slots){return computeCalendarEraFields(slots.calendar,slots).eraYear},year(slots){return computeCalendarDateFields(slots.calendar,slots).year},month(slots){return computeCalendarDateFields(slots.calendar,slots).month},monthCode(slots){return computeCalendarMonthCode(slots.calendar,slots)},day(slots){return computeCalendarDateFields(slots.calendar,slots).day}};var yearMonthDerivedGetters={daysInMonth(slots){return computeCalendarDaysInMonth(slots.calendar,slots)},daysInYear(slots){return computeCalendarDaysInYear(slots.calendar,slots)},monthsInYear(slots){return computeCalendarMonthsInYear(slots.calendar,slots)},inLeapYear(slots){return computeCalendarInLeapYear(slots.calendar,slots)}},dateDerivedGetters={dayOfWeek(slots){return computeIsoDayOfWeek(slots)},dayOfYear(slots){return computeCalendarDayOfYear(slots.calendar,slots)},weekOfYear(slots){return computeCalendarWeekOfYear(slots.calendar,slots)},yearOfWeek(slots){return computeCalendarYearOfWeek(slots.calendar,slots)},daysInWeek(){return 7},daysInMonth(slots){return computeCalendarDaysInMonth(slots.calendar,slots)},daysInYear(slots){return computeCalendarDaysInYear(slots.calendar,slots)},monthsInYear(slots){return computeCalendarMonthsInYear(slots.calendar,slots)},inLeapYear(slots){return computeCalendarInLeapYear(slots.calendar,slots)}};function createNativeGetters(shimGetters){return createPropGetters(Object.keys(shimGetters))}var timeGetters2=createNativeGetters(timeGetters);var dateFieldGetters=createNativeGetters(dateFieldGetters$1);createNativeGetters(yearMonthDerivedGetters),createNativeGetters(dateDerivedGetters);var PlainYearMonthRecordBranding=`${PlainYearMonthBranding}Record`,PlainMonthDayRecordBranding=`${PlainMonthDayBranding}Record`,PlainDateRecordBranding=`${PlainDateBranding}Record`,PlainDateTimeRecordBranding=`${PlainDateTimeBranding}Record`,PlainTimeRecordBranding=`${PlainTimeBranding}Record`,ZonedDateTimeRecordBranding=`${ZonedDateTimeBranding}Record`,InstantRecordBranding=`${InstantBranding}Record`,DurationRecordBranding=`${DurationBranding}Record`,CalendarRecordBranding=`${CalendarBranding}Record`,calendarMap=new WeakMap,instantMap=new WeakMap,zonedDateTimeMap=new WeakMap,plainDateTimeMap=new WeakMap;function getCalendarSlots(record){return getCalendarSlotsIfPresent(record)||invalidRecordType()}function getCalendarSlotsIfPresent(record){return calendarMap.get(record)}function getInstantSlots(record){return getInstantSlotsIfPresent(record)||invalidRecordType()}function getInstantSlotsIfPresent(record){return instantMap.get(record)}function setInstantSlots(instance,slots){instantMap.set(instance,slots)}function getZonedDateTimeSlots(record){return getZonedDateTimeSlotsIfPresent(record)||invalidRecordType()}function getZonedDateTimeSlotsIfPresent(record){return zonedDateTimeMap.get(record)}function setZonedDateTimeSlots(instance,slots){zonedDateTimeMap.set(instance,slots)}function getPlainDateTimeSlots(record){return getPlainDateTimeSlotsIfPresent(record)||invalidRecordType()}function getPlainDateTimeSlotsIfPresent(record){return plainDateTimeMap.get(record)}function setPlainDateTimeSlots(instance,slots){plainDateTimeMap.set(instance,slots)}function getCalendarRecordId(record){return getCalendarSlots(record).id}function getCalendarRecordImplCreator(record){let getImpl=getCalendarSlots(record).ue;return getImpl||throwRangeError(exoticCalendarRequired(getCalendarRecordId(record),"getExotic or getAny")),getImpl}function refineNativeCalendarArgMaybe(calendarRecord){if(calendarRecord!==void 0)return getValidatedCalendarId(calendarRecord)}function getValidatedCalendarId(record){return getCalendarRecordImplCreator(record),getCalendarRecordId(record)}var getNativePlainDateTime=getPlainDateTimeSlots,NativePlainDateTimeRecord=defineTemporalClass(PlainDateTimeRecordBranding,class{get calendarId(){return getNativePlainDateTime(this).calendarId}toJSON(){return getNativePlainDateTime(this).toJSON()}valueOf(){return getNativePlainDateTime(this).valueOf()}},getNativePlainDateTime,dateFieldGetters,timeGetters2);function createNativePlainDateTimeRecord(native){let instance=Object.create(NativePlainDateTimeRecord.prototype);return setPlainDateTimeSlots(instance,native),attachDebugString(instance),instance}function create$5(isoYear,isoMonth,isoDay,hour,minute,second,millisecond,microsecond,nanosecond,calendar){return createNativePlainDateTimeRecord(new NativeTemporal.PlainDateTime(isoYear,isoMonth,isoDay,hour,minute,second,millisecond,microsecond,nanosecond,refineNativeCalendarArgMaybe(calendar)))}function toZonedDateTime$1(record,timeZoneId,options){return createNativeZonedDateTimeRecord(getNativePlainDateTime(record).toZonedDateTime(timeZoneId,options))}var getNativeZonedDateTime=getZonedDateTimeSlots,NativeZonedDateTimeRecord=defineTemporalClass(ZonedDateTimeRecordBranding,class{get calendarId(){return getNativeZonedDateTime(this).calendarId}get timeZoneId(){return getNativeZonedDateTime(this).timeZoneId}get epochMilliseconds(){return getNativeZonedDateTime(this).epochMilliseconds}get epochNanoseconds(){return getNativeZonedDateTime(this).epochNanoseconds}toJSON(){return getNativeZonedDateTime(this).toJSON()}valueOf(){return getNativeZonedDateTime(this).valueOf()}},getNativeZonedDateTime,dateFieldGetters,timeGetters2);function createNativeZonedDateTimeRecord(native){let instance=Object.create(NativeZonedDateTimeRecord.prototype);return setZonedDateTimeSlots(instance,native),attachDebugString(instance),instance}function offsetNanoseconds(record){return getNativeZonedDateTime(record).offsetNanoseconds}var getNativeInstant=getInstantSlots,NativeInstantRecord=defineTemporalClass(InstantRecordBranding,class{get epochMilliseconds(){return getNativeInstant(this).epochMilliseconds}get epochNanoseconds(){return getNativeInstant(this).epochNanoseconds}toJSON(){return getNativeInstant(this).toJSON()}valueOf(){return getNativeInstant(this).valueOf()}});function createNativeInstantRecord(native){let instance=Object.create(NativeInstantRecord.prototype);return setInstantSlots(instance,native),attachDebugString(instance),instance}function fromEpochMilliseconds(epochMilliseconds){return createNativeInstantRecord(NativeTemporal.Instant.fromEpochMilliseconds(epochMilliseconds))}function toZonedDateTimeISO(record,timeZoneId){return createNativeZonedDateTimeRecord(getNativeInstant(record).toZonedDateTimeISO(timeZoneId))}function refineShimCalendarArgMaybe(calendarRecord){return calendarRecord===void 0?isoCalendarImpl:getCalendarRecordImpl(calendarRecord)}function getCalendarRecordImpl(record){return getCalendarRecordImplCreator(record)()}var getShimPlainDateTimeSlots=getPlainDateTimeSlots,ShimPlainDateTimeRecord=defineTemporalClass(PlainDateTimeRecordBranding,class{get calendarId(){return getCalendarSlotId(getShimPlainDateTimeSlots(this).calendar)}toJSON(){return formatDateTimeIsoAuto(getShimPlainDateTimeSlots(this))}valueOf(){return forbiddenValueOf2()}},getShimPlainDateTimeSlots,dateFieldGetters$1,timeGetters);function createShimPlainDateTimeRecord(slots){let instance=Object.create(ShimPlainDateTimeRecord.prototype);return setPlainDateTimeSlots(instance,slots),attachDebugString(instance),instance}function create$52(isoYear,isoMonth,isoDay,hour=0,minute=0,second=0,millisecond=0,microsecond=0,nanosecond=0,calendar){let fields=checkIsoDateTimeInBounds(validateIsoDateTimeFields(mapProps(toIntegerWithTrunc,{year:isoYear,month:isoMonth,day:isoDay,hour,minute,second,millisecond,microsecond,nanosecond}))),calendarImpl=refineShimCalendarArgMaybe(calendar);return createShimPlainDateTimeRecord(createDateTimeSlots(fields,calendarImpl))}function toZonedDateTime$12(record,timeZoneId,options){return createShimZonedDateTimeRecord(plainDateTimeToZonedDateTime(getShimPlainDateTimeSlots(record),queryTimeZone(refineTimeZoneId(timeZoneId)),options))}var getShimZonedDateTimeSlots=getZonedDateTimeSlots,ShimZonedDateTimeRecord=defineTemporalClass(ZonedDateTimeRecordBranding,class{get calendarId(){return getCalendarSlotId(getShimZonedDateTimeSlots(this).calendar)}get timeZoneId(){return getShimZonedDateTimeSlots(this).timeZone.id}get epochMilliseconds(){return getEpochMilli(getShimZonedDateTimeSlots(this))}get epochNanoseconds(){return getEpochNano(getShimZonedDateTimeSlots(this))}toJSON(){return formatZonedDateTimeIsoAuto(getShimZonedDateTimeSlots(this))}valueOf(){return forbiddenValueOf2()}},getShimZonedDateTimeIsoSlots,dateFieldGetters$1,timeGetters);function createShimZonedDateTimeRecord(slots){let instance=Object.create(ShimZonedDateTimeRecord.prototype);return setZonedDateTimeSlots(instance,slots),attachDebugString(instance),instance}function getShimZonedDateTimeIsoSlots(record){let slots=getShimZonedDateTimeSlots(record);return{...zonedEpochSlotsToIso(slots),calendar:slots.calendar}}function offsetNanoseconds2(record){return zonedEpochSlotsToIso(getShimZonedDateTimeSlots(record)).offsetNanoseconds}var endOfHour2=alignedZonedTime(slots=>({hour:slots.hour,minute:0,second:0,millisecond:0,microsecond:0,nanosecond:0}),nanoInHour2-1),endOfMinute2=alignedZonedTime(slots=>({hour:slots.hour,minute:slots.minute,second:0,millisecond:0,microsecond:0,nanosecond:0}),nanoInMinute2-1),endOfSecond2=alignedZonedTime(slots=>({hour:slots.hour,minute:slots.minute,second:slots.second,millisecond:0,microsecond:0,nanosecond:0}),nanoInSec2-1),endOfMillisecond2=alignedZonedTime(slots=>({hour:slots.hour,minute:slots.minute,second:slots.second,millisecond:slots.millisecond,microsecond:0,nanosecond:0}),nanoInMilli2-1),endOfMicrosecond2=alignedZonedTime(slots=>({hour:slots.hour,minute:slots.minute,second:slots.second,millisecond:slots.millisecond,microsecond:slots.microsecond,nanosecond:0}),nanoInMicro2-1);function alignedZonedTime(computeAlignment,nanoDelta=0){return record=>{let slots=getShimZonedDateTimeSlots(record),{timeZone}=slots,isoDateTime=zonedEpochSlotsToIso(slots),alignedIsoDateTime=combineDateAndTime(isoDateTime,computeAlignment(isoDateTime)),epochNanoseconds=getMatchingInstantFor(timeZone,alignedIsoDateTime,isoDateTime.offsetNanoseconds,2,0,1)+BigInt(nanoDelta);return createShimZonedDateTimeRecord({...slots,epochNanoseconds:checkEpochNanoInBounds(epochNanoseconds)})}}var getShimInstantSlots=getInstantSlots,ShimInstantRecord=defineTemporalClass(InstantRecordBranding,class{get epochMilliseconds(){return getEpochMilli(getShimInstantSlots(this))}get epochNanoseconds(){return getEpochNano(getShimInstantSlots(this))}toJSON(){return formatInstantIsoAuto(getShimInstantSlots(this))}valueOf(){return forbiddenValueOf2()}});function createShimInstantRecord(slots){let instance=Object.create(ShimInstantRecord.prototype);return setInstantSlots(instance,slots),attachDebugString(instance),instance}function fromEpochMilliseconds2(epochMilliseconds){return createShimInstantRecord(epochMilliToInstant(epochMilliseconds))}function toZonedDateTimeISO2(record,timeZoneId){return createShimZonedDateTimeRecord(instantToZonedDateTime(getShimInstantSlots(record),queryTimeZone(refineTimeZoneId(timeZoneId))))}var offsetNanoseconds3=NativeTemporal?offsetNanoseconds:offsetNanoseconds2;var create=NativeTemporal?create$5:create$52;var toZonedDateTime=NativeTemporal?toZonedDateTime$1:toZonedDateTime$12;var fromEpochMilliseconds3=NativeTemporal?fromEpochMilliseconds:fromEpochMilliseconds2;var toZonedDateTimeISO3=NativeTemporal?toZonedDateTimeISO:toZonedDateTimeISO2;function addWeeks3(m,n){let a=dateToUtcArray(m);return a[2]+=n*7,arrayToUtcDate(a)}function addDays4(m,n){let a=dateToUtcArray(m);return a[2]+=n,arrayToUtcDate(a)}function addMs(m,n){let a=dateToUtcArray(m);return a[6]+=n,arrayToUtcDate(a)}function diffWeeks4(m0,m1){return diffDays4(m0,m1)/7}function diffDays4(m0,m1){return(m1.valueOf()-m0.valueOf())/(1e3*60*60*24)}function diffHours4(m0,m1){return(m1.valueOf()-m0.valueOf())/(1e3*60*60)}function diffMinutes4(m0,m1){return(m1.valueOf()-m0.valueOf())/(1e3*60)}function diffSeconds4(m0,m1){return(m1.valueOf()-m0.valueOf())/1e3}function diffDayAndTime(m0,m1){let m0day=startOfDay4(m0),m1day=startOfDay4(m1);return{years:0,months:0,days:Math.round(diffDays4(m0day,m1day)),milliseconds:m1.valueOf()-m1day.valueOf()-(m0.valueOf()-m0day.valueOf())}}function diffWholeWeeks(m0,m1){let d=diffWholeDays(m0,m1);return d!==null&&d%7===0?d/7:null}function diffWholeDays(m0,m1){return timeAsMs(m0)===timeAsMs(m1)?Math.round(diffDays4(m0,m1)):null}function startOfDay4(m){return arrayToUtcDate([m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate()])}function startOfHour4(m){return arrayToUtcDate([m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate(),m.getUTCHours()])}function startOfMinute4(m){return arrayToUtcDate([m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate(),m.getUTCHours(),m.getUTCMinutes()])}function startOfSecond4(m){return arrayToUtcDate([m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate(),m.getUTCHours(),m.getUTCMinutes(),m.getUTCSeconds()])}function weekOfYear3(marker,dow,doy){let y=marker.getUTCFullYear(),w=weekOfGivenYear(marker,y,dow,doy);if(w<1)return weekOfGivenYear(marker,y-1,dow,doy);let nextW=weekOfGivenYear(marker,y+1,dow,doy);return nextW>=1?Math.min(w,nextW):w}function weekOfGivenYear(marker,year,dow,doy){let firstWeekStart=arrayToUtcDate([year,0,1+firstWeekOffset(year,dow,doy)]),dayStart=startOfDay4(marker),days=Math.round(diffDays4(firstWeekStart,dayStart));return Math.floor(days/7)+1}function firstWeekOffset(year,dow,doy){let fwd=7+dow-doy;return-((7+arrayToUtcDate([year,0,fwd]).getUTCDay()-dow)%7)+fwd-1}function dateToLocalArray(date){return[date.getFullYear(),date.getMonth(),date.getDate(),date.getHours(),date.getMinutes(),date.getSeconds(),date.getMilliseconds()]}function arrayToLocalDate(a){return new Date(a[0],a[1]||0,a[2]==null?1:a[2],a[3]||0,a[4]||0,a[5]||0)}function dateToUtcArray(date){return[date.getUTCFullYear(),date.getUTCMonth(),date.getUTCDate(),date.getUTCHours(),date.getUTCMinutes(),date.getUTCSeconds(),date.getUTCMilliseconds()]}function arrayToUtcDate(a){return a.length===1&&(a=a.concat([0])),new Date(Date.UTC(...a))}function isValidDate(m){return!isNaN(m.valueOf())}function timeAsMs(m){return m.getUTCHours()*1e3*60*60+m.getUTCMinutes()*1e3*60+m.getUTCSeconds()*1e3+m.getUTCMilliseconds()}var calendarSystemClassMap={};function registerCalendarSystem(name,theClass){calendarSystemClassMap[name]=theClass}function createCalendarSystem(name){return new calendarSystemClassMap[name]}var GregorianCalendarSystem=class{getMarkerYear(d){return d.getUTCFullYear()}getMarkerMonth(d){return d.getUTCMonth()}getMarkerDay(d){return d.getUTCDate()}arrayToMarker(arr){return arrayToUtcDate(arr)}markerToArray(marker){return dateToUtcArray(marker)}};registerCalendarSystem("gregory",GregorianCalendarSystem);function parseRange(input,dateEnv){let start=null,end=null;return input.start&&(start=dateEnv.createMarker(input.start)),input.end&&(end=dateEnv.createMarker(input.end)),!start&&!end||start&&end&&end<start?null:{start,end}}function invertRanges(ranges,constraintRange){let invertedRanges=[],{start}=constraintRange,i,dateRange;for(ranges.sort(compareRanges),i=0;i<ranges.length;i+=1)dateRange=ranges[i],dateRange.start>start&&invertedRanges.push({start,end:dateRange.start}),dateRange.end>start&&(start=dateRange.end);return start<constraintRange.end&&invertedRanges.push({start,end:constraintRange.end}),invertedRanges}function compareRanges(range0,range1){return range0.start.valueOf()-range1.start.valueOf()}function intersectRanges(range0,range1){let{start,end}=range0,newRange=null;return range1.start!==null&&(start===null?start=range1.start:start=new Date(Math.max(start.valueOf(),range1.start.valueOf()))),range1.end!=null&&(end===null?end=range1.end:end=new Date(Math.min(end.valueOf(),range1.end.valueOf()))),(start===null||end===null||start<end)&&(newRange={start,end}),newRange}function rangesEqual(range0,range1){return(range0.start===null?null:range0.start.valueOf())===(range1.start===null?null:range1.start.valueOf())&&(range0.end===null?null:range0.end.valueOf())===(range1.end===null?null:range1.end.valueOf())}function rangesIntersect(range0,range1){return(range0.end===null||range1.start===null||range0.end>range1.start)&&(range0.start===null||range1.end===null||range0.start<range1.end)}function rangeContainsRange(outerRange,innerRange){return(outerRange.start===null||innerRange.start!==null&&innerRange.start>=outerRange.start)&&(outerRange.end===null||innerRange.end!==null&&innerRange.end<=outerRange.end)}function rangeContainsMarker(range,date){return(range.start===null||date>=range.start)&&(range.end===null||date<range.end)}function constrainMarkerToRange(date,range){return range.start!=null&&date<range.start?range.start:range.end!=null&&date>=range.end?new Date(range.end.valueOf()-1):date}function expandZonedMarker(dateInfo,calendarSystem){let a=calendarSystem.markerToArray(dateInfo.marker);return{marker:dateInfo.marker,timeZoneOffset:dateInfo.timeZoneOffset,array:a,year:a[0],month:a[1],day:a[2],hour:a[3],minute:a[4],second:a[5],millisecond:a[6]}}function createVerboseFormattingArg(start,end,context){let startInfo=expandZonedMarker(start,context.calendarSystem),endInfo=end?expandZonedMarker(end,context.calendarSystem):null;return{date:startInfo,start:startInfo,end:endInfo,timeZone:context.timeZone,localeCodes:context.locale.codes}}function isInt(n){return n%1===0}function padStart(val,len){let s=String(val);return"000".substr(0,len-s.length)+s}var INTERNAL_UNITS=["years","months","days","milliseconds"],PARSE_RE=/^(-?)(?:(\d+)\.)?(\d+):(\d\d)(?::(\d\d)(?:\.(\d\d\d))?)?/;function createDuration(input,unit){return typeof input=="string"?parseString(input):typeof input=="object"&&input?parseObject(input):typeof input=="number"?parseObject({[unit||"milliseconds"]:input}):null}function parseString(s){let m=PARSE_RE.exec(s);if(m){let sign=m[1]?-1:1;return{years:0,months:0,days:sign*(m[2]?parseInt(m[2],10):0),milliseconds:sign*((m[3]?parseInt(m[3],10):0)*60*60*1e3+(m[4]?parseInt(m[4],10):0)*60*1e3+(m[5]?parseInt(m[5],10):0)*1e3+(m[6]?parseInt(m[6],10):0))}}return null}function parseObject(obj){let duration={years:obj.years||obj.year||0,months:obj.months||obj.month||0,days:obj.days||obj.day||0,milliseconds:(obj.hours||obj.hour||0)*60*60*1e3+(obj.minutes||obj.minute||0)*60*1e3+(obj.seconds||obj.second||0)*1e3+(obj.milliseconds||obj.millisecond||obj.ms||0)},weeks=obj.weeks||obj.week;return weeks&&(duration.days+=weeks*7,duration.specifiedWeeks=!0),duration}function durationsEqual(d0,d1){return d0.years===d1.years&&d0.months===d1.months&&d0.days===d1.days&&d0.milliseconds===d1.milliseconds}function addDurations(d0,d1){return{years:d0.years+d1.years,months:d0.months+d1.months,days:d0.days+d1.days,milliseconds:d0.milliseconds+d1.milliseconds}}function subtractDurations(d1,d0){return{years:d1.years-d0.years,months:d1.months-d0.months,days:d1.days-d0.days,milliseconds:d1.milliseconds-d0.milliseconds}}function multiplyDuration(d,n){return{years:d.years*n,months:d.months*n,days:d.days*n,milliseconds:d.milliseconds*n}}function asRoughYears(dur){return asRoughDays(dur)/365}function asRoughMonths(dur){return asRoughDays(dur)/30}function asRoughDays(dur){return asRoughMs(dur)/864e5}function asRoughMs(dur){return dur.years*(365*864e5)+dur.months*(30*864e5)+dur.days*864e5+dur.milliseconds}function wholeDivideDurations(numerator,denominator){let res=null;for(let i=0;i<INTERNAL_UNITS.length;i+=1){let unit=INTERNAL_UNITS[i];if(denominator[unit]){let localRes=numerator[unit]/denominator[unit];if(!isInt(localRes)||res!==null&&res!==localRes)return null;res=localRes}else if(numerator[unit])return null}return res}function greatestDurationDenominator(dur){let ms=dur.milliseconds;if(ms){if(ms%1e3!==0)return{unit:"millisecond",value:ms};if(ms%(1e3*60)!==0)return{unit:"second",value:ms/1e3};if(ms%(1e3*60*60)!==0)return{unit:"minute",value:ms/(1e3*60)};if(ms)return{unit:"hour",value:ms/(1e3*60*60)}}return dur.days?dur.specifiedWeeks&&dur.days%7===0?{unit:"week",value:dur.days/7}:{unit:"day",value:dur.days}:dur.months?{unit:"month",value:dur.months}:dur.years?{unit:"year",value:dur.years}:{unit:"millisecond",value:0}}function buildIsoString(marker,timeZoneOffset,stripZeroTime=!1){let s=marker.toISOString();return s=s.replace(".000",""),stripZeroTime&&(s=s.replace("T00:00:00Z","")),s.length>10&&(timeZoneOffset==null?s=s.replace("Z",""):timeZoneOffset!==0&&(s=s.replace("Z",formatTimeZoneOffset(timeZoneOffset,!0)))),s}function formatDayString(marker){return marker.toISOString().replace(/T.*$/,"")}function formatIsoTimeString(marker){return padStart(marker.getUTCHours(),2)+":"+padStart(marker.getUTCMinutes(),2)+":"+padStart(marker.getUTCSeconds(),2)}function formatTimeZoneOffset(minutes,doIso=!1){let sign=minutes<0?"-":"+",abs=Math.abs(minutes),hours=Math.floor(abs/60),mins=Math.round(abs%60);return doIso?`${sign+padStart(hours,2)}:${padStart(mins,2)}`:`GMT${sign}${hours}${mins?`:${padStart(mins,2)}`:""}`}function joinDateTimeFormatParts(parts){let s="";for(let part of parts)s+=part.value;return s}var ISO_RE=/^\s*(\d{4})(-?(\d{2})(-?(\d{2})([T ](\d{2}):?(\d{2})(:?(\d{2})(\.(\d+))?)?(Z|(([-+])(\d{2})(:?(\d{2}))?))?)?)?)?$/;function parse(str){let m=ISO_RE.exec(str);if(m){let marker=new Date(Date.UTC(Number(m[1]),m[3]?Number(m[3])-1:0,Number(m[5]||1),Number(m[7]||0),Number(m[8]||0),Number(m[10]||0),m[12]?+`0.${m[12]}`*1e3:0));if(isValidDate(marker)){let timeZoneOffset=null;return m[13]&&(timeZoneOffset=(m[15]==="-"?-1:1)*(Number(m[16]||0)*60+Number(m[18]||0))),{marker,isTimeUnspecified:!m[6],timeZoneOffset}}}return null}var DateEnv=class{constructor(settings){this.timeZone=settings.timeZone,this.calendarSystem=createCalendarSystem(settings.calendarSystem),this.locale=settings.locale,this.weekDow=settings.locale.week.dow,this.weekDoy=settings.locale.week.doy,settings.weekNumberCalculation==="ISO"&&(this.weekDow=1,this.weekDoy=4),typeof settings.firstDay=="number"&&(this.weekDow=settings.firstDay),typeof settings.weekNumberCalculation=="function"&&(this.weekNumberFunc=settings.weekNumberCalculation),this.weekTextLong=settings.weekTextLong,this.weekTextShort=settings.weekTextShort??settings.weekTextLong,this.cmdFormatter=settings.cmdFormatter}createMarker(input){let meta=this.createMarkerMeta(input);return meta===null?null:meta.marker}createNowMarker(){return this.timestampToMarker(new Date().valueOf())}createMarkerMeta(input){if(typeof input=="string")return this.parse(input);let marker=null;return typeof input=="number"?marker=this.timestampToMarker(input):input instanceof Date?(input=input.valueOf(),isNaN(input)||(marker=this.timestampToMarker(input))):Array.isArray(input)&&(marker=arrayToUtcDate(input)),marker===null||!isValidDate(marker)?null:{marker,isTimeUnspecified:!1}}parse(s){let parts=parse(s);if(parts===null)return null;let{marker}=parts;return parts.timeZoneOffset!==null&&(marker=this.timestampToMarker(marker.valueOf()-parts.timeZoneOffset*60*1e3)),{marker,isTimeUnspecified:parts.isTimeUnspecified}}getYear(marker){return this.calendarSystem.getMarkerYear(marker)}getMonth(marker){return this.calendarSystem.getMarkerMonth(marker)}getDay(marker){return this.calendarSystem.getMarkerDay(marker)}add(marker,dur){let a=this.calendarSystem.markerToArray(marker);return a[0]+=dur.years,a[1]+=dur.months,a[2]+=dur.days,a[6]+=dur.milliseconds,this.calendarSystem.arrayToMarker(a)}subtract(marker,dur){let a=this.calendarSystem.markerToArray(marker);return a[0]-=dur.years,a[1]-=dur.months,a[2]-=dur.days,a[6]-=dur.milliseconds,this.calendarSystem.arrayToMarker(a)}addYears(marker,n){let a=this.calendarSystem.markerToArray(marker);return a[0]+=n,this.calendarSystem.arrayToMarker(a)}addMonths(marker,n){let a=this.calendarSystem.markerToArray(marker);return a[1]+=n,this.calendarSystem.arrayToMarker(a)}diffWholeYears(m0,m1){let{calendarSystem}=this;return timeAsMs(m0)===timeAsMs(m1)&&calendarSystem.getMarkerDay(m0)===calendarSystem.getMarkerDay(m1)&&calendarSystem.getMarkerMonth(m0)===calendarSystem.getMarkerMonth(m1)?calendarSystem.getMarkerYear(m1)-calendarSystem.getMarkerYear(m0):null}diffWholeMonths(m0,m1){let{calendarSystem}=this;return timeAsMs(m0)===timeAsMs(m1)&&calendarSystem.getMarkerDay(m0)===calendarSystem.getMarkerDay(m1)?calendarSystem.getMarkerMonth(m1)-calendarSystem.getMarkerMonth(m0)+(calendarSystem.getMarkerYear(m1)-calendarSystem.getMarkerYear(m0))*12:null}greatestWholeUnit(m0,m1){let n=this.diffWholeYears(m0,m1);return n!==null?{unit:"year",value:n}:(n=this.diffWholeMonths(m0,m1),n!==null?{unit:"month",value:n}:(n=diffWholeWeeks(m0,m1),n!==null?{unit:"week",value:n}:(n=diffWholeDays(m0,m1),n!==null?{unit:"day",value:n}:(n=diffHours4(m0,m1),isInt(n)?{unit:"hour",value:n}:(n=diffMinutes4(m0,m1),isInt(n)?{unit:"minute",value:n}:(n=diffSeconds4(m0,m1),isInt(n)?{unit:"second",value:n}:{unit:"millisecond",value:m1.valueOf()-m0.valueOf()}))))))}countDurationsBetween(m0,m1,d){let diff3;return d.years&&(diff3=this.diffWholeYears(m0,m1),diff3!==null)?diff3/asRoughYears(d):d.months&&(diff3=this.diffWholeMonths(m0,m1),diff3!==null)?diff3/asRoughMonths(d):d.days&&(diff3=diffWholeDays(m0,m1),diff3!==null)?diff3/asRoughDays(d):(m1.valueOf()-m0.valueOf())/asRoughMs(d)}startOf(m,unit){return unit==="year"?this.startOfYear(m):unit==="month"?this.startOfMonth(m):unit==="week"?this.startOfWeek(m):unit==="day"?startOfDay4(m):unit==="hour"?startOfHour4(m):unit==="minute"?startOfMinute4(m):unit==="second"?startOfSecond4(m):null}startOfYear(m){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m)])}startOfMonth(m){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m),this.calendarSystem.getMarkerMonth(m)])}startOfWeek(m){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m),this.calendarSystem.getMarkerMonth(m),m.getUTCDate()-(m.getUTCDay()-this.weekDow+7)%7])}computeWeekNumber(marker){return this.weekNumberFunc?this.weekNumberFunc(this.toDate(marker)):weekOfYear3(marker,this.weekDow,this.weekDoy)}formatToParts(marker,formatter){return formatter.formatToParts({marker,timeZoneOffset:this.offsetForMarker(marker)},this)}formatRangeToParts(start,end,formatter,dateOptions={}){return dateOptions.isEndExclusive&&(end=addMs(end,-1)),formatter.formatRangeToParts({marker:start,timeZoneOffset:this.offsetForMarker(start)},{marker:end,timeZoneOffset:this.offsetForMarker(end)},this)}formatIso(marker,extraOptions={}){let timeZoneOffset=null;return extraOptions.omitTimeZoneOffset||(timeZoneOffset=this.offsetForMarker(marker)),buildIsoString(marker,timeZoneOffset,extraOptions.omitTime)}timestampToMarker(ms){if(this.timeZone==="local")return arrayToUtcDate(dateToLocalArray(new Date(ms)));if(this.timeZone==="UTC")return new Date(ms);let zdt=toZonedDateTimeISO3(fromEpochMilliseconds3(ms),this.timeZone);return new Date(Date.UTC(zdt.year,zdt.month-1,zdt.day,zdt.hour,zdt.minute,zdt.second,zdt.millisecond))}offsetForMarker(m){return this.timeZone==="local"?-arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset():this.timeZone==="UTC"?0:offsetNanoseconds3(toZonedDateTime(create(m.getUTCFullYear(),m.getUTCMonth()+1,m.getUTCDate(),m.getUTCHours(),m.getUTCMinutes(),m.getUTCSeconds(),m.getUTCMilliseconds()),this.timeZone))/(1e9*60)}toDate(m){return this.timeZone==="local"?arrayToLocalDate(dateToUtcArray(m)):this.timeZone==="UTC"?new Date(m.valueOf()):new Date(toZonedDateTime(create(m.getUTCFullYear(),m.getUTCMonth()+1,m.getUTCDate(),m.getUTCHours(),m.getUTCMinutes(),m.getUTCSeconds(),m.getUTCMilliseconds()),this.timeZone).epochMilliseconds)}},EXTENDED_SETTINGS=new Set(["week","meridiem","omitZeroMinute","omitCommas","forceCommas","omitTrailing","weekdayJustify"]),MERIDIEM_RE=/([ap])\.?m\.?/i,COMMA_RE=/,/g,LTR_RE=/\u200e/g,TRAILING_RE=/[\s.,]+$/,WHITESPACE_ONLY_RE=/^\s+$/,NativeDateFormatter=class{constructor(options){let standardOptions={},extendedOptions={};for(let name in options)EXTENDED_SETTINGS.has(name)?extendedOptions[name]=options[name]:standardOptions[name]=options[name];standardOptions.timeZoneName==="long"&&(standardOptions.timeZoneName="short"),this.timeZoneOnly=Object.keys(standardOptions).length===1&&standardOptions.timeZoneName==="short",this.weekOnly=!!(!Object.keys(standardOptions).length&&extendedOptions.week),this.timeZoneOnly||(standardOptions.timeZoneName&&(standardOptions.hour||(standardOptions.hour="2-digit"),standardOptions.minute||(standardOptions.minute="2-digit")),extendedOptions.omitZeroMinute&&(standardOptions.second||standardOptions.fractionalSecondDigits)&&delete extendedOptions.omitZeroMinute,standardOptions.timeZone="UTC"),this.standardOptions=standardOptions,this.extendedOptions=extendedOptions}formatToParts(date,context){let{standardOptions,extendedOptions}=this;if(this.timeZoneOnly)return[{type:"timeZoneName",value:formatTimeZoneOffset(date.timeZoneOffset)}];if(this.weekOnly)return formatWeekNumberParts(context.computeWeekNumber(date.marker),context.weekTextLong,context.weekTextShort,context.locale,extendedOptions.week);let{normalFormat,zeroFormat}=this.getFormats(context),parts=(zeroFormat&&!date.marker.getUTCMinutes()?zeroFormat:normalFormat).formatToParts(date.marker);return postProcessParts(parts,date,standardOptions,extendedOptions)}formatRangeToParts(start,end,context){let{standardOptions,extendedOptions}=this;if(this.timeZoneOnly||this.weekOnly)return this.formatToParts(start,context).map(part=>({source:part.type==="literal"?"shared":"startRange",...part}));let{normalFormat,zeroFormat}=this.getFormats(context),parts=(zeroFormat&&!start.marker.getUTCMinutes()&&!end.marker.getUTCMinutes()?zeroFormat:normalFormat).formatRangeToParts(start.marker,end.marker);return postProcessRangeParts(parts,start,end,standardOptions,extendedOptions)}getFormats(context){if(this.cachedContext!==context){let{standardOptions,extendedOptions}=this,{codes}=context.locale,normalFormat=new Intl.DateTimeFormat(codes,standardOptions),zeroFormat;if(extendedOptions.omitZeroMinute){let zeroProps={...standardOptions};delete zeroProps.minute,zeroFormat=new Intl.DateTimeFormat(codes,zeroProps)}this.cachedContext=context,this.cachedFormats={normalFormat,zeroFormat}}return this.cachedFormats}};function processPartsLoop(parts,extendedOptions,getTzValue){let anyTzInjected=!1,priorLiteral;for(let part of parts){let isLiteral=part.type==="literal";if(isLiteral||part.type==="dayPeriod"){let s=part.value;if(s=s.replace(LTR_RE,""),extendedOptions.omitCommas&&(s=s.replace(COMMA_RE,"")),!isLiteral){let{meridiem}=extendedOptions;meridiem===!1?s=s.replace(MERIDIEM_RE,""):meridiem==="narrow"?s=s.replace(MERIDIEM_RE,(_m0,m1)=>m1.toLocaleLowerCase()):meridiem==="short"?s=s.replace(MERIDIEM_RE,(_m0,m1)=>`${m1.toLocaleLowerCase()}m`):meridiem==="lowercase"&&(s=s.replace(MERIDIEM_RE,m0=>m0.toLocaleLowerCase())),priorLiteral&&(priorLiteral.value=priorLiteral.value.trimEnd())}part.value=s}else if(part.type==="timeZoneName"){let tzValue=getTzValue(part);tzValue!=null&&(part.value=tzValue,anyTzInjected=!0)}priorLiteral=isLiteral?part:void 0}return{lastLiteral:priorLiteral,anyTzInjected}}function postProcessParts(parts,date,standardOptions,extendedOptions){let injectableTz=standardOptions.timeZoneName==="short"?date.timeZoneOffset==null?"UTC":formatTimeZoneOffset(date.timeZoneOffset):void 0,{lastLiteral,anyTzInjected}=processPartsLoop(parts,extendedOptions,()=>injectableTz);if(injectableTz&&!anyTzInjected&&(lastLiteral?lastLiteral.value+=" ":parts.push({type:"literal",value:" "}),parts.push({type:"timeZoneName",value:injectableTz})),extendedOptions.weekdayJustify&&parts.length===3&&WHITESPACE_ONLY_RE.test(parts[1].value)&&parts[extendedOptions.weekdayJustify==="start"?2:0].type==="weekday"&&parts.reverse(),extendedOptions.forceCommas)for(let part of parts)part.type==="literal"&&WHITESPACE_ONLY_RE.test(part.value)&&(part.value=`,${part.value}`);return extendedOptions.omitTrailing&&stripTrailingLiteral(parts),parts.filter(part=>part.value)}function postProcessRangeParts(parts,start,end,standardOptions,extendedOptions){let injectTz=standardOptions.timeZoneName==="short";if(processPartsLoop(parts,extendedOptions,part=>{if(!injectTz)return;let offset3=part.source==="endRange"?end.timeZoneOffset:start.timeZoneOffset;return offset3==null?"UTC":formatTimeZoneOffset(offset3)}),extendedOptions.forceCommas)for(let part of parts)part.type==="literal"&&WHITESPACE_ONLY_RE.test(part.value)&&(part.value=`,${part.value}`);return extendedOptions.omitTrailing&&stripTrailingLiteral(parts),parts.filter(part=>part.value)}function stripTrailingLiteral(parts){let lastPart=parts[parts.length-1];lastPart?.type==="literal"&&(lastPart.value=lastPart.value.replace(TRAILING_RE,""),lastPart.value||parts.pop())}function formatWeekNumberParts(num,weekTextLong,weekTextShort,locale,display){let parts=[];return display==="long"?parts.push({type:"literal",value:weekTextLong}):(display==="short"||display==="narrow")&&parts.push({type:"literal",value:weekTextShort}),(display==="long"||display==="short")&&parts.push({type:"literal",value:" "}),parts.push({type:"week",value:locale.simpleNumberFormat.format(num)}),locale.options.direction==="rtl"&&parts.reverse(),parts}var CmdDateFormatter=class{constructor(cmdStr){this.cmdStr=cmdStr}formatToParts(date,context){let res=context.cmdFormatter(this.cmdStr,createVerboseFormattingArg(date,null,context));return Array.isArray(res)?res:[{type:"literal",value:res}]}formatRangeToParts(start,end,context){let res=context.cmdFormatter(this.cmdStr,createVerboseFormattingArg(start,end,context));return Array.isArray(res)?res.map(part=>({source:"shared",...part})):[{source:"shared",type:"literal",value:res}]}},FuncDateFormatter=class{constructor(func){this.func=func}formatToParts(date,context){return[{type:"literal",value:this.func(createVerboseFormattingArg(date,null,context))}]}formatRangeToParts(start,end,context){return[{source:"shared",type:"literal",value:this.func(createVerboseFormattingArg(start,end,context))}]}};var classNames={popoverZ:"fc-nH",isolate:"fc-7s",borderBoxRoot:"fc-wa",notAllowed:"fc-4m",noScrollbars:"fc-eM",noShrink:"fc-Qo",calendarScreenRoot:"fc-fi",safeTiles:"fc-fl",calendarPrintRoot:"fc-Jf",cursorPointer:"fc-DP",cursorResizeT:"fc-An",cursorResizeB:"fc-lZ",cursorResizeS:"fc-9V",cursorResizeE:"fc-70",cursorColResizer:"fc-gQ",hit:"fc-mN",hitX:"fc-2d",hitY:"fc-B0",hitXSkinny:"fc-Z1",selectNone:"fc-1Y",invisible:"fc-a9",borderNone:"fc-Tu",borderOnlyT:"fc-hU",borderOnlyB:"fc-3e",borderOnlyS:"fc-PB",borderOnlyE:"fc-II",borderlessX:"fc-MQ",borderlessY:"fc-Vo",fakeBorderS:"fc-2l",flexRow:"fc-Ao",flexCol:"fc-HH",grow:"fc-GV",liquid:"fc-g2",minHeight0:"fc-Ot",liquidX:"fc-hp",printRoot:"fc-uD",printHeader:"fc-jM",noPadding:"fc-OJ",noMargin:"fc-oE",noMarginY:"fc-V3",noMarginX:"fc-SS",whiteSpaceNoWrap:"fc-y2",whiteSpacePre:"fc-CN",overflowAnchorNone:"fc-gZ",crop:"fc-FA",cropNowrap:"fc-7T",rel:"fc-cc",abs:"fc-H0",start0:"fc-6t",fill:"fc-ct",fillTop:"fc-iv",fillX:"fc-Uu",fillY:"fc-7k",fillStart:"fc-Yw",sticky:"fc-Ip",stickyT:"fc-CS",stickyS:"fc-tT",tableHeaderSticky:"fc-hy",contentBox:"fc-Np",offscreen:"fc-aP",alignCenter:"fc-6H",alignStart:"fc-K8",alignEnd:"fc-E3",footerScrollbarSticky:"fc-Px",footerScrollbar:"fc-J4",breakInsideAvoid:"fc-Yi",printSiblingRow:"fc-fx",z0:"fc-BS",z1:"fc-iu",focusZ2:"fc-Bk",internalTimelineSlot:"fc-Nm",internalEvent:"fc-Ft",internalEventMirror:"fc-lc",internalEventDraggable:"fc-uL",internalEventSelected:"fc-Bv",internalEventResizable:"fc-Qk",internalEventResizer:"fc-9X",internalEventResizerStart:"fc-Sj",internalEventResizerEnd:"fc-DL",internalBgEvent:"fc-oP",internalMoreLink:"fc-R2",internalNavLink:"fc-SW",internalPopover:"fc-Cs",internalView:"fc-LQ",internalScroller:"fc-dT"};function joinClassNames(...args){return args.filter(Boolean).join(" ")}function fracToCssDim(frac){return frac*100+"%"}function createFormatter(input){return typeof input=="object"&&input?new NativeDateFormatter(input):typeof input=="string"?new CmdDateFormatter(input):typeof input=="function"?new FuncDateFormatter(input):null}function warn(...args){console.warn("FullCalendar:",...args)}var warnedClassNameOptions={};function refineClassName(input,optionName){return!input||typeof input=="string"?input:(warnInvalidClassName(optionName),"")}function refineClassNameGenerator(input,optionName){return typeof input=="function"?renderProps=>refineClassName(input(renderProps),optionName):refineClassName(input,optionName)}function warnInvalidClassName(optionName){warnedClassNameOptions[optionName]||(warn(`Invalid option \`${optionName}\`: expected a className string or a falsy value.`),warnedClassNameOptions[optionName]=!0)}function preventDefault(ev){ev.preventDefault()}function buildDelegationHandler(selector,handler){return ev=>{let matchedChild=ev.target.closest(selector);matchedChild&&handler.call(matchedChild,ev,matchedChild)}}function listenBySelector(container,eventType,selector,handler){let attachedHandler=buildDelegationHandler(selector,handler);return container.addEventListener(eventType,attachedHandler),()=>{container.removeEventListener(eventType,attachedHandler)}}function listenToHoverBySelector(container,selector,onMouseEnter,onMouseLeave){let currentMatchedChild;return listenBySelector(container,"mouseover",selector,(mouseOverEv,matchedChild)=>{if(matchedChild!==currentMatchedChild){currentMatchedChild=matchedChild,onMouseEnter(mouseOverEv,matchedChild);let realOnMouseLeave=mouseLeaveEv=>{currentMatchedChild=null,onMouseLeave(mouseLeaveEv,matchedChild),matchedChild.removeEventListener("mouseleave",realOnMouseLeave)};matchedChild.addEventListener("mouseleave",realOnMouseLeave)}})}var transitionEventNames=["webkitTransitionEnd","otransitionend","oTransitionEnd","msTransitionEnd","transitionend"];function whenTransitionDone(el,callback){let realCallback=ev=>{callback(ev),transitionEventNames.forEach(eventName=>{el.removeEventListener(eventName,realCallback)})};transitionEventNames.forEach(eventName=>{el.addEventListener(eventName,realCallback)})}function createAriaClickAttrs(handler){return{onClick:handler,...createAriaKeyboardAttrs(handler)}}function createAriaKeyboardAttrs(handler){return{tabIndex:0,onKeyDown(ev){(ev.key==="Enter"||ev.key===" ")&&(handler(ev),ev.preventDefault())}}}var guidNumber=0;function guid(){return guidNumber+=1,String(guidNumber)}function disableCursor(){document.body.classList.add(classNames.notAllowed)}function enableCursor(){document.body.classList.remove(classNames.notAllowed)}function preventSelection(el){el.style.userSelect="none",el.style.webkitUserSelect="none",el.addEventListener("selectstart",preventDefault)}function allowSelection(el){el.style.userSelect="",el.style.webkitUserSelect="",el.removeEventListener("selectstart",preventDefault)}function preventContextMenu(el){el.addEventListener("contextmenu",preventDefault)}function allowContextMenu(el){el.removeEventListener("contextmenu",preventDefault)}function parseFieldSpecs(input){let specs=[],tokens=[],i,token;for(typeof input=="string"?tokens=input.split(/\s*,\s*/):typeof input=="function"?tokens=[input]:Array.isArray(input)&&(tokens=input),i=0;i<tokens.length;i+=1)token=tokens[i],typeof token=="string"?specs.push(token.charAt(0)==="-"?{field:token.substring(1),order:-1}:{field:token,order:1}):typeof token=="function"&&specs.push({func:token});return specs}function compareByFieldSpecs(obj0,obj1,fieldSpecs){let i,cmp;for(i=0;i<fieldSpecs.length;i+=1)if(cmp=compareByFieldSpec(obj0,obj1,fieldSpecs[i]),cmp)return cmp;return 0}function compareByFieldSpec(obj0,obj1,fieldSpec){return fieldSpec.func?fieldSpec.func(obj0,obj1):flexibleCompare(obj0[fieldSpec.field],obj1[fieldSpec.field])*(fieldSpec.order||1)}function flexibleCompare(a,b){return!a&&!b?0:b==null?-1:a==null?1:typeof a=="string"||typeof b=="string"?String(a).localeCompare(String(b)):a-b}function formatWithOrdinals(formatter,args,fallbackText){return typeof formatter=="function"?formatter(...args):typeof formatter=="string"?args.reduce((str,arg,index2)=>str.replace("$"+index2,arg||""),formatter):fallbackText}function compareNumbers2(a,b){return a-b}function valuesIdentical(a,b){return a===b}function computeViewBorderless(options){let borderless=options.borderless;return{borderlessX:!!(options.borderlessX??borderless),borderlessTop:!!(options.borderlessTop??borderless),borderlessBottom:!!(options.borderlessBottom??borderless)}}var{hasOwnProperty}=Object.prototype;function filterHash(hash,func){let filtered={};for(let key in hash)func(hash[key],key)&&(filtered[key]=hash[key]);return filtered}function mapHash(hash,func){let newHash={};for(let key in hash)newHash[key]=func(hash[key],key);return newHash}function hashValuesToArray(obj){let a=[];for(let key in obj)a.push(obj[key]);return a}function arrayToHash(a){let hash={};for(let item of a)hash[item]=!0;return hash}function isMaybePropsEqualDepth1(props0,props1){return typeof props0=="object"&&props0&&typeof props1=="object"&&props1?isPropsEqualWithFunc(props0,props1,isPropsEqualShallow):props0===props1}function isPropsEqualWithFunc(props0,props1,valuesEqual){if(props0===props1)return!0;for(let key in props0)if(hasOwnProperty.call(props0,key)&&!(key in props1))return!1;for(let key in props1)if(hasOwnProperty.call(props1,key)&&(!(key in props0)||!valuesEqual(props0[key],props1[key],key)))return!1;return!0}function isMaybePropsEqualShallow(props0,props1){return typeof props0=="object"&&typeof props1=="object"&&props0&&props1?isPropsEqualShallow(props0,props1):props0===props1}function isPropsEqualShallow(props0,props1){return isPropsEqualWithFunc(props0,props1,valuesIdentical)}function isPropsEqualWithMap(props0,props1,equalityFuncMap){return isPropsEqualWithFunc(props0,props1,(val0,val1,key)=>{let equalityFunc=equalityFuncMap[key];return equalityFunc?equalityFunc(val0,val1):val0===val1})}function getUnequalProps(props0,props1){let keys=[];for(let key in props0)hasOwnProperty.call(props0,key)&&(key in props1||keys.push(key));for(let key in props1)hasOwnProperty.call(props1,key)&&props0[key]!==props1[key]&&keys.push(key);return keys}function mergeMaybePropsDepth1(props0,props1){return props0?mergePropsWithFunc(props0,props1,mergePropsShallow):props1}function mergePropsWithFunc(props0,props1,mergeValues){let dest={};for(let key in props0)hasOwnProperty.call(props0,key)&&(key in props1||(dest[key]=props0[key]));for(let key in props1)hasOwnProperty.call(props1,key)&&(key in props0?dest[key]=mergeValues(props0[key],props1[key]):dest[key]=props1[key]);return dest}function mergePropsShallow(props0,props1){return Object.assign({},props0,props1)}function isMaybeArraysEqual(array0,array1){return Array.isArray(array0)&&Array.isArray(array1)?isArraysEqual(array0,array1):array0===array1}function isArraysEqual(array0,array1,itemsEqual=valuesIdentical){if(array0===array1)return!0;let len=array0.length,i;if(len!==array1.length)return!1;for(i=0;i<len;i+=1)if(!itemsEqual(array0[i],array1[i]))return!1;return!0}var BASE_OPTION_REFINERS={navLinkDayClick:identity,navLinkWeekClick:identity,duration:createDuration,buttons:identity,toolbarElements:identity,prevText:String,nextText:String,prevYearText:String,nextYearText:String,todayText:String,yearText:String,monthText:String,weekTextLong:String,weekTextShort:String,dayText:String,listText:identity,todayHint:identity,prevHint:identity,nextHint:identity,buttonDisplay:identity,buttonGroupClass:refineClassNameGenerator,buttonClass:refineClassNameGenerator,defaultAllDayEventDuration:createDuration,defaultTimedEventDuration:createDuration,nextDayThreshold:createDuration,scrollTime:createDuration,scrollTimeReset:Boolean,slotMinTime:createDuration,slotMaxTime:createDuration,popoverFormat:createFormatter,slotDuration:createDuration,snapDuration:createDuration,headerToolbar:identity,footerToolbar:identity,forceEventDuration:Boolean,dayLaneClass:refineClassNameGenerator,dayLaneInnerClass:refineClassNameGenerator,dayLaneDidMount:identity,dayLaneWillUnmount:identity,initialView:String,aspectRatio:Number,weekends:Boolean,weekNumberCalculation:identity,weekNumbers:Boolean,weekNumberHeaderClass:refineClassNameGenerator,weekNumberHeaderInnerClass:refineClassNameGenerator,weekNumberHeaderContent:identity,weekNumberHeaderDidMount:identity,weekNumberHeaderWillUnmount:identity,inlineWeekNumberClass:refineClassNameGenerator,inlineWeekNumberContent:identity,inlineWeekNumberDidMount:identity,inlineWeekNumberWillUnmount:identity,editable:Boolean,controller:identity,nowIndicator:Boolean,nowIndicatorSnap:identity,nowIndicatorHeaderClass:refineClassNameGenerator,nowIndicatorHeaderContent:identity,nowIndicatorHeaderDidMount:identity,nowIndicatorHeaderWillUnmount:identity,nowIndicatorDotClass:refineClassName,nowIndicatorLineClass:refineClassNameGenerator,nowIndicatorLineContent:identity,nowIndicatorLineDidMount:identity,nowIndicatorLineWillUnmount:identity,showNonCurrentDates:Boolean,lazyFetching:Boolean,startParam:String,endParam:String,timeZoneParam:String,timeZone:String,locales:identity,locale:identity,dragRevertDuration:Number,dragScroll:Boolean,allDayMaintainDuration:Boolean,unselectAuto:Boolean,dropAccept:identity,eventOrder:parseFieldSpecs,eventOrderStrict:Boolean,eventSlicing:Boolean,eventPrintLayout:String,longPressDelay:Number,eventDragMinDistance:Number,expandRows:Boolean,height:identity,contentHeight:identity,direction:String,colorScheme:String,weekNumberFormat:createFormatter,eventResizableFromStart:Boolean,displayEventTime:Boolean,displayEventEnd:Boolean,progressiveEventRendering:Boolean,businessHours:identity,initialDate:identity,now:identity,eventDataTransform:identity,tableHeaderSticky:identity,footerScrollbarSticky:identity,defaultAllDay:Boolean,eventSourceFailure:identity,eventSourceSuccess:identity,eventDisplay:String,eventStartEditable:Boolean,eventDurationEditable:Boolean,eventOverlap:identity,eventConstraint:identity,eventAllow:identity,eventColor:String,eventContrastColor:String,eventDidMount:identity,eventWillUnmount:identity,eventContent:identity,eventClass:refineClassNameGenerator,eventInnerClass:refineClassNameGenerator,eventTimeClass:refineClassNameGenerator,eventTitleClass:refineClassNameGenerator,eventBeforeClass:refineClassNameGenerator,eventAfterClass:refineClassNameGenerator,listItemEventClass:refineClassNameGenerator,listItemEventInnerClass:refineClassNameGenerator,listItemEventTimeClass:refineClassNameGenerator,listItemEventTitleClass:refineClassNameGenerator,listItemEventBeforeClass:refineClassNameGenerator,listItemEventAfterClass:refineClassNameGenerator,blockEventClass:refineClassNameGenerator,blockEventInnerClass:refineClassNameGenerator,blockEventTimeClass:refineClassNameGenerator,blockEventTitleClass:refineClassNameGenerator,blockEventBeforeClass:refineClassNameGenerator,blockEventAfterClass:refineClassNameGenerator,rowEventClass:refineClassNameGenerator,rowEventInnerClass:refineClassNameGenerator,rowEventTimeClass:refineClassNameGenerator,rowEventTitleClass:refineClassNameGenerator,rowEventTitleSticky:Boolean,rowEventBeforeClass:refineClassNameGenerator,rowEventBeforeContent:identity,rowEventAfterClass:refineClassNameGenerator,rowEventAfterContent:identity,columnEventClass:refineClassNameGenerator,columnEventInnerClass:refineClassNameGenerator,columnEventTimeClass:refineClassNameGenerator,columnEventTitleClass:refineClassNameGenerator,columnEventTitleSticky:Boolean,columnEventBeforeClass:refineClassNameGenerator,columnEventAfterClass:refineClassNameGenerator,backgroundEventClass:refineClassNameGenerator,backgroundEventDidMount:identity,backgroundEventWillUnmount:identity,backgroundEventContent:identity,backgroundEventInnerClass:refineClassNameGenerator,backgroundEventTitleClass:refineClassNameGenerator,backgroundEventColor:String,selectConstraint:identity,selectOverlap:identity,selectAllow:identity,droppable:Boolean,unselectCancel:String,slotHeaderFormat:identity,slotLaneClass:refineClassNameGenerator,slotLaneDidMount:identity,slotLaneWillUnmount:identity,slotHeaderClass:refineClassNameGenerator,slotHeaderInnerClass:refineClassNameGenerator,slotHeaderContent:identity,slotHeaderDidMount:identity,slotHeaderWillUnmount:identity,slotHeaderAlign:identity,slotHeaderSticky:identity,slotHeaderRowClass:refineClassName,slotHeaderDividerClass:refineClassNameGenerator,dayMaxEvents:identity,dayMaxEventRows:identity,dayMinWidth:Number,slotHeaderInterval:createDuration,dayHeaderClass:refineClassNameGenerator,dayHeaderInnerClass:refineClassNameGenerator,dayHeaderContent:identity,dayHeaderDidMount:identity,dayHeaderWillUnmount:identity,dayHeaderAlign:identity,_dayHeaderSticky:identity,dayHeaderRowClass:refineClassName,dayHeaderDividerClass:refineClassNameGenerator,dayRowClass:refineClassName,dayCellDidMount:identity,dayCellWillUnmount:identity,dayCellClass:refineClassNameGenerator,dayCellInnerClass:refineClassNameGenerator,dayCellTopContent:identity,dayCellTopClass:refineClassNameGenerator,dayCellTopInnerClass:refineClassNameGenerator,dayCellBottomClass:refineClassNameGenerator,allDaySlot:Boolean,allDayText:String,allDayHeaderClass:refineClassNameGenerator,allDayHeaderInnerClass:refineClassNameGenerator,allDayHeaderContent:identity,allDayHeaderDidMount:identity,allDayHeaderWillUnmount:identity,timedText:String,slotMinWidth:Number,slotMinHeight:Number,navLinks:Boolean,eventTimeFormat:createFormatter,rerenderDelay:Number,moreLinkText:identity,moreLinkHint:identity,selectMinDistance:Number,selectable:Boolean,selectLongPressDelay:Number,eventLongPressDelay:Number,selectMirror:Boolean,eventMaxStack:Number,eventMinHeight:Number,eventMinWidth:Number,eventShortHeight:Number,slotEventOverlap:Boolean,firstDay:Number,dayCount:Number,dateAlignment:String,dateIncrement:createDuration,hiddenDays:identity,fixedWeekCount:Boolean,validRange:identity,visibleRange:identity,titleFormat:identity,eventInteractive:Boolean,noEventsText:String,viewHint:identity,viewChangeHint:String,navLinkHint:identity,closeHint:String,eventsHint:String,headingLevel:Number,moreLinkClick:identity,moreLinkContent:identity,moreLinkDidMount:identity,moreLinkWillUnmount:identity,moreLinkClass:refineClassNameGenerator,moreLinkInnerClass:refineClassNameGenerator,rowMoreLinkClass:refineClassNameGenerator,rowMoreLinkInnerClass:refineClassNameGenerator,columnMoreLinkClass:refineClassNameGenerator,columnMoreLinkInnerClass:refineClassNameGenerator,navLinkClass:refineClassName,monthStartFormat:createFormatter,dayCellFormat:createFormatter,handleCustomRendering:identity,customRenderingMetaMap:identity,popoverClass:refineClassName,popoverCloseClass:refineClassName,popoverCloseContent:identity,dayNarrowWidth:Number,borderless:Boolean,borderlessX:Boolean,borderlessTop:Boolean,borderlessBottom:Boolean,fillerClass:refineClassNameGenerator,headerToolbarClass:refineClassNameGenerator,footerToolbarClass:refineClassNameGenerator,toolbarClass:refineClassNameGenerator,toolbarSectionClass:refineClassNameGenerator,toolbarTitleClass:refineClassName,tableClass:refineClassNameGenerator,tableHeaderClass:refineClassNameGenerator,tableBodyClass:refineClassNameGenerator,nonBusinessHoursClass:refineClassName,highlightClass:refineClassName,dayHeaders:Boolean,dayHeaderFormat:createFormatter,allDayDividerClass:refineClassName,listDaysClass:refineClassName,listDayClass:refineClassNameGenerator,listDayFormat:createFalsableFormatter,listDayAltFormat:createFalsableFormatter,listDayHeaderDidMount:identity,listDayHeaderWillUnmount:identity,listDayHeaderClass:refineClassNameGenerator,listDayHeaderInnerClass:refineClassNameGenerator,listDayHeaderContent:identity,listDayBodyClass:refineClassNameGenerator,noEventsClass:refineClassNameGenerator,noEventsInnerClass:refineClassNameGenerator,noEventsContent:identity,noEventsDidMount:identity,noEventsWillUnmount:identity,multiMonthMaxColumns:Number,singleMonthMinWidth:Number,singleMonthTitleFormat:createFormatter,singleMonthDidMount:identity,singleMonthWillUnmount:identity,singleMonthClass:refineClassNameGenerator,singleMonthHeaderClass:refineClassNameGenerator,singleMonthHeaderInnerClass:refineClassNameGenerator},BASE_OPTION_DEFAULTS={buttonDisplay:"auto",eventDisplay:"auto",defaultTimedEventDuration:"01:00:00",defaultAllDayEventDuration:{day:1},forceEventDuration:!1,nextDayThreshold:"00:00:00",initialView:"",aspectRatio:1.35,weekends:!0,weekNumbers:!1,weekNumberCalculation:"local",editable:!1,nowIndicator:!1,scrollTime:"06:00:00",scrollTimeReset:!0,slotMinTime:"00:00:00",slotMaxTime:"24:00:00",showNonCurrentDates:!0,lazyFetching:!0,startParam:"start",endParam:"end",timeZoneParam:"timeZone",timeZone:"local",locales:[],locale:"",dragRevertDuration:500,dragScroll:!0,allDayMaintainDuration:!1,unselectAuto:!0,dropAccept:"*",eventOrder:"start,-duration,allDay,title",eventPrintLayout:"auto",popoverFormat:{month:"long",day:"numeric",year:"numeric"},longPressDelay:1e3,eventDragMinDistance:5,expandRows:!1,navLinks:!1,selectable:!1,eventMinHeight:15,eventMinWidth:30,eventShortHeight:30,monthStartFormat:{month:"long",day:"numeric"},dayCellFormat:{day:"numeric",omitTrailing:!0},headingLevel:2,outerBorder:!0,dayNarrowWidth:80,eventOverlap:!0,slotHeaderAlign:"start",slotHeaderSticky:!0,dayHeaderAlign:"start",_dayHeaderSticky:!0,rowEventTitleSticky:!0,columnEventTitleSticky:!0,nowIndicatorSnap:"auto",dayHeaders:!0},CALENDAR_LISTENER_REFINERS={datesSet:identity,eventsSet:identity,eventAdd:identity,eventChange:identity,eventRemove:identity,eventClick:identity,eventMouseEnter:identity,eventMouseLeave:identity,select:identity,unselect:identity,loading:identity,_unmount:identity,_beforeprint:identity,_afterprint:identity,_noDateSelect:identity,_noEventDrop:identity,_noEventResize:identity,_timeScrollRequest:identity,dateClick:identity,eventDragStart:identity,eventDragStop:identity,eventDrop:identity,eventResizeStart:identity,eventResizeStop:identity,eventResize:identity,drop:identity,eventReceive:identity,eventLeave:identity},CALENDAR_ONLY_OPTION_REFINERS={class:refineClassNameGenerator,className:refineClassNameGenerator,viewClass:refineClassNameGenerator,viewDidMount:identity,viewWillUnmount:identity,views:identity,plugins:identity,initialEvents:identity,events:identity,eventSources:identity},VIEW_ONLY_OPTION_REFINERS={type:String,component:identity,class:refineClassNameGenerator,className:refineClassNameGenerator,content:identity,didMount:identity,willUnmount:identity,buttonTextKey:String,dateProfileGeneratorClass:identity,usesMinMaxTime:Boolean,disallowAmbigTitle:Boolean},COMPLEX_OPTION_COMPARATORS={dateIncrement:isMaybePropsEqualShallow,headerToolbar:isMaybePropsEqualShallow,footerToolbar:isMaybePropsEqualShallow,buttons:isMaybePropsEqualDepth1,plugins:isMaybeArraysEqual,events:isMaybeArraysEqual,eventSources:isMaybeArraysEqual,resources:isMaybeArraysEqual};function refineProps(input,refiners){let refined={},extra={};for(let propName in refiners)propName in input&&(refined[propName]=refiners[propName](input[propName],propName));for(let propName in input)propName in refiners||(extra[propName]=input[propName]);return{refined,extra}}function identity(raw){return raw}function createFalsableFormatter(input){return input===!1?null:createFormatter(input)}function computeAlignedDayRange(timedRange){let dayCnt=Math.floor(diffDays4(timedRange.start,timedRange.end))||1,start=startOfDay4(timedRange.start),end=addDays4(start,dayCnt);return{start,end}}function computeVisibleDayRange(timedRange,nextDayThreshold=createDuration(0)){let startDay=null,endDay=null;if(timedRange.end){endDay=startOfDay4(timedRange.end);let endTimeMS=timedRange.end.valueOf()-endDay.valueOf();endTimeMS&&endTimeMS>=asRoughMs(nextDayThreshold)&&(endDay=addDays4(endDay,1))}return timedRange.start&&(startDay=startOfDay4(timedRange.start),endDay&&endDay<=startDay&&(endDay=addDays4(startDay,1))),{start:startDay,end:endDay}}function diffDates(date0,date1,dateEnv,largeUnit){return largeUnit==="year"?createDuration(dateEnv.diffWholeYears(date0,date1),"year"):largeUnit==="month"?createDuration(dateEnv.diffWholeMonths(date0,date1),"month"):diffDayAndTime(date0,date1)}function createEventInstance(defId,range){return{instanceId:guid(),defId,range}}function parseRecurring(refined,defaultAllDay,dateEnv,recurringTypes){for(let i=0;i<recurringTypes.length;i+=1){let parsed=recurringTypes[i].parse(refined,dateEnv);if(parsed){let{allDay}=refined;return allDay==null&&(allDay=defaultAllDay,allDay==null&&(allDay=parsed.allDayGuess,allDay==null&&(allDay=!1))),{allDay,duration:parsed.duration,typeData:parsed.typeData,typeId:i}}}return null}function expandRecurring(eventStore,framingRange,context){let{dateEnv,pluginHooks,options}=context,{defs,instances}=eventStore;instances=filterHash(instances,instance=>!defs[instance.defId].recurringDef);for(let defId in defs){let def=defs[defId];if(def.recurringDef){let{duration}=def.recurringDef;duration||(duration=def.allDay?options.defaultAllDayEventDuration:options.defaultTimedEventDuration);let starts=expandRecurringRanges(def,duration,framingRange,dateEnv,pluginHooks.recurringTypes);for(let start of starts){let instance=createEventInstance(defId,{start,end:dateEnv.add(start,duration)});instances[instance.instanceId]=instance}}}return{defs,instances}}function expandRecurringRanges(eventDef,duration,framingRange,dateEnv,recurringTypes){let markers=recurringTypes[eventDef.recurringDef.typeId].expand(eventDef.recurringDef.typeData,{start:dateEnv.subtract(framingRange.start,duration),end:framingRange.end},dateEnv);return eventDef.allDay&&(markers=markers.map(startOfDay4)),markers}function parseEvents(rawEvents,eventSource,context,allowOpenRange,defIdMap,instanceIdMap){let eventStore=createEmptyEventStore(),eventRefiners=buildEventRefiners(context);for(let rawEvent of rawEvents){let tuple=parseEvent(rawEvent,eventSource,context,allowOpenRange,eventRefiners,defIdMap,instanceIdMap);tuple&&eventTupleToStore(tuple,eventStore)}return eventStore}function eventTupleToStore(tuple,eventStore=createEmptyEventStore()){return eventStore.defs[tuple.def.defId]=tuple.def,tuple.instance&&(eventStore.instances[tuple.instance.instanceId]=tuple.instance),eventStore}function getRelevantEvents(eventStore,instanceId){let instance=eventStore.instances[instanceId];if(instance){let def=eventStore.defs[instance.defId],newStore=filterEventStoreDefs(eventStore,lookDef=>isEventDefsGrouped(def,lookDef));return newStore.defs[def.defId]=def,newStore.instances[instance.instanceId]=instance,newStore}return createEmptyEventStore()}function isEventDefsGrouped(def0,def1){return!!(def0.groupId&&def0.groupId===def1.groupId)}function createEmptyEventStore(){return{defs:{},instances:{}}}function mergeEventStores(store0,store1){return{defs:{...store0.defs,...store1.defs},instances:{...store0.instances,...store1.instances}}}function filterEventStoreDefs(eventStore,filterFunc){let defs=filterHash(eventStore.defs,filterFunc),instances=filterHash(eventStore.instances,instance=>defs[instance.defId]);return{defs,instances}}function excludeSubEventStore(master,sub){let{defs,instances}=master,filteredDefs={},filteredInstances={};for(let defId in defs)sub.defs[defId]||(filteredDefs[defId]=defs[defId]);for(let instanceId in instances)!sub.instances[instanceId]&&filteredDefs[instances[instanceId].defId]&&(filteredInstances[instanceId]=instances[instanceId]);return{defs:filteredDefs,instances:filteredInstances}}function normalizeConstraint(input,context){return Array.isArray(input)?parseEvents(input,null,context,!0):typeof input=="object"&&input?parseEvents([input],null,context,!0):input!=null?String(input):null}var EVENT_UI_REFINERS={display:String,editable:Boolean,startEditable:Boolean,durationEditable:Boolean,constraint:identity,overlap:identity,allow:identity,class:refineClassName,className:refineClassName,color:String,contrastColor:String},EMPTY_EVENT_UI={display:null,startEditable:null,durationEditable:null,constraints:[],overlap:null,allows:[],color:"",contrastColor:"",className:""};function createEventUi(refined,context){let constraint=normalizeConstraint(refined.constraint,context);return{display:refined.display||null,startEditable:refined.startEditable!=null?refined.startEditable:refined.editable,durationEditable:refined.durationEditable!=null?refined.durationEditable:refined.editable,constraints:constraint!=null?[constraint]:[],overlap:refined.overlap!=null?refined.overlap:null,allows:refined.allow!=null?[refined.allow]:[],color:refined.color||"",contrastColor:refined.contrastColor||"",className:(refined.class??refined.className)||""}}function combineEventUis(uis){return uis.reduce(combineTwoEventUis,EMPTY_EVENT_UI)}function combineTwoEventUis(item0,item1){return{display:item1.display!=null?item1.display:item0.display,startEditable:item1.startEditable!=null?item1.startEditable:item0.startEditable,durationEditable:item1.durationEditable!=null?item1.durationEditable:item0.durationEditable,constraints:item0.constraints.concat(item1.constraints),overlap:typeof item1.overlap=="boolean"?item1.overlap:item0.overlap,allows:item0.allows.concat(item1.allows),color:item1.color||item0.color,contrastColor:item1.contrastColor||item0.contrastColor,className:joinClassNames(item0.className,item1.className)}}var EVENT_NON_DATE_REFINERS={id:String,groupId:String,title:String,url:String,interactive:Boolean},EVENT_DATE_REFINERS={start:identity,end:identity,date:identity,allDay:Boolean},EVENT_REFINERS={...EVENT_NON_DATE_REFINERS,...EVENT_DATE_REFINERS,extendedProps:identity};function parseEvent(raw,eventSource,context,allowOpenRange,refiners=buildEventRefiners(context),defIdMap,instanceIdMap){let{refined,extra}=refineEventDef(raw,context,refiners),defaultAllDay=computeIsDefaultAllDay(eventSource,context),recurringRes=parseRecurring(refined,defaultAllDay,context.dateEnv,context.pluginHooks.recurringTypes);if(recurringRes){let def=parseEventDef(refined,extra,eventSource?eventSource.sourceId:"",recurringRes.allDay,!!recurringRes.duration,context,defIdMap);return def.recurringDef={typeId:recurringRes.typeId,typeData:recurringRes.typeData,duration:recurringRes.duration},{def,instance:null}}let singleRes=parseSingle(refined,defaultAllDay,context,allowOpenRange);if(singleRes){let def=parseEventDef(refined,extra,eventSource?eventSource.sourceId:"",singleRes.allDay,singleRes.hasEnd,context,defIdMap),instance=createEventInstance(def.defId,singleRes.range);return instanceIdMap&&def.publicId&&instanceIdMap[def.publicId]&&(instance.instanceId=instanceIdMap[def.publicId]),{def,instance}}return null}function refineEventDef(raw,context,refiners=buildEventRefiners(context)){return refineProps(raw,refiners)}function buildEventRefiners(context){return{...EVENT_UI_REFINERS,...EVENT_REFINERS,...context.pluginHooks.eventRefiners}}function parseEventDef(refined,extra,sourceId,allDay,hasEnd,context,defIdMap){let def={title:refined.title||"",groupId:refined.groupId||"",publicId:refined.id||"",url:refined.url||"",recurringDef:null,defId:(defIdMap&&refined.id?defIdMap[refined.id]:"")||guid(),sourceId,allDay,hasEnd,interactive:refined.interactive,ui:createEventUi(refined,context),extendedProps:{...refined.extendedProps||{},...extra}};for(let memberAdder of context.pluginHooks.eventDefMemberAdders)Object.assign(def,memberAdder(refined));return Object.freeze(def.ui.className),Object.freeze(def.extendedProps),def}function parseSingle(refined,defaultAllDay,context,allowOpenRange){let{allDay}=refined,startMeta,startMarker=null,hasEnd=!1,endMeta,endMarker=null,startInput=refined.start!=null?refined.start:refined.date;if(startMeta=context.dateEnv.createMarkerMeta(startInput),startMeta)startMarker=startMeta.marker;else if(!allowOpenRange)return null;return refined.end!=null&&(endMeta=context.dateEnv.createMarkerMeta(refined.end)),allDay==null&&(defaultAllDay!=null?allDay=defaultAllDay:allDay=(!startMeta||startMeta.isTimeUnspecified)&&(!endMeta||endMeta.isTimeUnspecified)),allDay&&startMarker&&(startMarker=startOfDay4(startMarker)),endMeta&&(endMarker=endMeta.marker,allDay&&(endMarker=startOfDay4(endMarker)),startMarker&&endMarker<=startMarker&&(endMarker=null)),endMarker?hasEnd=!0:allowOpenRange||(hasEnd=context.options.forceEventDuration||!1,endMarker=context.dateEnv.add(startMarker,allDay?context.options.defaultAllDayEventDuration:context.options.defaultTimedEventDuration)),{allDay,hasEnd,range:{start:startMarker,end:endMarker}}}function computeIsDefaultAllDay(eventSource,context){let res=null;return eventSource&&(res=eventSource.defaultAllDay),res==null&&(res=context.options.defaultAllDay),res}var STANDARD_PROPS={start:identity,end:identity,allDay:Boolean};function parseDateSpan(raw,dateEnv,defaultDuration){let span=parseOpenDateSpan(raw,dateEnv),{range}=span;if(!range.start)return null;if(!range.end){if(defaultDuration==null)return null;range.end=dateEnv.add(range.start,defaultDuration)}return span}function parseOpenDateSpan(raw,dateEnv){let{refined:standardProps,extra}=refineProps(raw,STANDARD_PROPS),startMeta=standardProps.start?dateEnv.createMarkerMeta(standardProps.start):null,endMeta=standardProps.end?dateEnv.createMarkerMeta(standardProps.end):null,{allDay}=standardProps;return allDay==null&&(allDay=startMeta&&startMeta.isTimeUnspecified&&(!endMeta||endMeta.isTimeUnspecified)),{range:{start:startMeta?startMeta.marker:null,end:endMeta?endMeta.marker:null},allDay,...extra}}function isDateSpansEqual(span0,span1){return rangesEqual(span0.range,span1.range)&&span0.allDay===span1.allDay&&isSpanPropsEqual(span0,span1)}function isSpanPropsEqual(span0,span1){for(let propName in span1)if(propName!=="range"&&propName!=="allDay"&&span0[propName]!==span1[propName])return!1;for(let propName in span0)if(!(propName in span1))return!1;return!0}function buildDateSpanApi(span,dateEnv){return{...buildRangeApi(span.range,dateEnv,span.allDay),allDay:span.allDay}}function buildRangeApiWithTimeZone(range,dateEnv,omitTime){return{...buildRangeApi(range,dateEnv,omitTime),timeZone:dateEnv.timeZone}}function buildRangeApi(range,dateEnv,omitTime){return{start:dateEnv.toDate(range.start),end:dateEnv.toDate(range.end),startStr:dateEnv.formatIso(range.start,{omitTime}),endStr:dateEnv.formatIso(range.end,{omitTime})}}function fabricateEventRange(dateSpan,eventUiBases,context){let res=refineEventDef({editable:!1},context),def=parseEventDef(res.refined,res.extra,"",dateSpan.allDay,!0,context);return{def,ui:compileEventUi(def,eventUiBases),instance:createEventInstance(def.defId,dateSpan.range),range:dateSpan.range,isStart:!0,isEnd:!0}}function triggerDateSelect(selection,pev,context){context.emitter.trigger("select",{...buildDateSpanApiWithContext(selection,context),jsEvent:pev?pev.origEvent:null,view:context.viewApi||context.calendarApi.view})}function triggerDateUnselect(pev,context){context.emitter.trigger("unselect",{jsEvent:pev?pev.origEvent:null,view:context.viewApi||context.calendarApi.view})}function buildDateSpanApiWithContext(dateSpan,context){let props={};for(let transform of context.pluginHooks.dateSpanTransforms)Object.assign(props,transform(dateSpan,context));return Object.assign(props,buildDateSpanApi(dateSpan,context.dateEnv)),props}function getDefaultEventEnd(allDay,marker,context){let{dateEnv,options}=context,end=marker;return allDay?(end=startOfDay4(end),end=dateEnv.add(end,options.defaultAllDayEventDuration)):end=dateEnv.add(end,options.defaultTimedEventDuration),end}function applyMutationToEventStore(eventStore,eventConfigBase,mutation,context){let eventConfigs=compileEventUis(eventStore.defs,eventConfigBase),dest=createEmptyEventStore();for(let defId in eventStore.defs){let def=eventStore.defs[defId];dest.defs[defId]=applyMutationToEventDef(def,eventConfigs[defId],mutation,context)}for(let instanceId in eventStore.instances){let instance=eventStore.instances[instanceId],def=dest.defs[instance.defId];dest.instances[instanceId]=applyMutationToEventInstance(instance,def,eventConfigs[instance.defId],mutation,context)}return dest}function applyMutationToEventDef(eventDef,eventConfig,mutation,context){let standardProps=mutation.standardProps||{};standardProps.hasEnd==null&&eventConfig.durationEditable&&(mutation.startDelta||mutation.endDelta)&&(standardProps.hasEnd=!0);let copy={...eventDef,...standardProps,ui:{...eventDef.ui,...standardProps.ui}};mutation.extendedProps&&(copy.extendedProps={...copy.extendedProps,...mutation.extendedProps});for(let applier of context.pluginHooks.eventDefMutationAppliers)applier(copy,mutation,context);return!copy.hasEnd&&context.options.forceEventDuration&&(copy.hasEnd=!0),copy}function applyMutationToEventInstance(eventInstance,eventDef,eventConfig,mutation,context){let{dateEnv}=context,forceAllDay=mutation.standardProps&&mutation.standardProps.allDay===!0,clearEnd=mutation.standardProps&&mutation.standardProps.hasEnd===!1,copy={...eventInstance};return forceAllDay&&(copy.range=computeAlignedDayRange(copy.range)),mutation.datesDelta&&eventConfig.startEditable&&(copy.range={start:dateEnv.add(copy.range.start,mutation.datesDelta),end:dateEnv.add(copy.range.end,mutation.datesDelta)}),mutation.startDelta&&eventConfig.durationEditable&&(copy.range={start:dateEnv.add(copy.range.start,mutation.startDelta),end:copy.range.end}),mutation.endDelta&&eventConfig.durationEditable&&(copy.range={start:copy.range.start,end:dateEnv.add(copy.range.end,mutation.endDelta)}),clearEnd&&(copy.range={start:copy.range.start,end:getDefaultEventEnd(eventDef.allDay,copy.range.start,context)}),eventDef.allDay&&(copy.range={start:startOfDay4(copy.range.start),end:startOfDay4(copy.range.end)}),copy.range.end<copy.range.start&&(copy.range.end=getDefaultEventEnd(eventDef.allDay,copy.range.start,context)),copy}var EventSourceImpl=class{constructor(context,internalEventSource){this.context=context,this.internalEventSource=internalEventSource}remove(){this.context.dispatch({type:"REMOVE_EVENT_SOURCE",sourceId:this.internalEventSource.sourceId})}refetch(){this.context.dispatch({type:"FETCH_EVENT_SOURCES",sourceIds:[this.internalEventSource.sourceId],isRefetch:!0})}get id(){return this.internalEventSource.publicId}get url(){return this.internalEventSource.meta.url}get format(){return this.internalEventSource.meta.format}},EventImpl=class _EventImpl{constructor(context,def,instance){this._context=context,this._def=def,this._instance=instance||null}setProp(name,val){if(name in EVENT_DATE_REFINERS)warn(`Cannot set date-related event property \`${name}\`. Use a method instead.`);else if(name==="id")val=EVENT_NON_DATE_REFINERS[name](val),this.mutate({standardProps:{publicId:val}});else if(name in EVENT_NON_DATE_REFINERS)val=EVENT_NON_DATE_REFINERS[name](val),this.mutate({standardProps:{[name]:val}});else if(name in EVENT_UI_REFINERS){let ui=EVENT_UI_REFINERS[name](val);name==="editable"?ui={startEditable:val,durationEditable:val}:ui={[name]:val},this.mutate({standardProps:{ui}})}else warn(`Cannot set event property \`${name}\`. Use setExtendedProp instead.`)}setExtendedProp(name,val){this.mutate({extendedProps:{[name]:val}})}setStart(startInput,options={}){let{dateEnv}=this._context,start=dateEnv.createMarker(startInput);if(start&&this._instance){let instanceRange=this._instance.range,startDelta=diffDates(instanceRange.start,start,dateEnv,options.granularity);options.maintainDuration?this.mutate({datesDelta:startDelta}):this.mutate({startDelta})}}setEnd(endInput,options={}){let{dateEnv}=this._context,end;if(!(endInput!=null&&(end=dateEnv.createMarker(endInput),!end))&&this._instance)if(end){let endDelta=diffDates(this._instance.range.end,end,dateEnv,options.granularity);this.mutate({endDelta})}else this.mutate({standardProps:{hasEnd:!1}})}setDates(startInput,endInput,options={}){let{dateEnv}=this._context,standardProps={allDay:options.allDay},start=dateEnv.createMarker(startInput),end;if(start&&!(endInput!=null&&(end=dateEnv.createMarker(endInput),!end))&&this._instance){let instanceRange=this._instance.range;options.allDay===!0&&(instanceRange=computeAlignedDayRange(instanceRange));let startDelta=diffDates(instanceRange.start,start,dateEnv,options.granularity);if(end){let endDelta=diffDates(instanceRange.end,end,dateEnv,options.granularity);durationsEqual(startDelta,endDelta)?this.mutate({datesDelta:startDelta,standardProps}):this.mutate({startDelta,endDelta,standardProps})}else standardProps.hasEnd=!1,this.mutate({datesDelta:startDelta,standardProps})}}moveStart(deltaInput){let delta=createDuration(deltaInput);delta&&this.mutate({startDelta:delta})}moveEnd(deltaInput){let delta=createDuration(deltaInput);delta&&this.mutate({endDelta:delta})}moveDates(deltaInput){let delta=createDuration(deltaInput);delta&&this.mutate({datesDelta:delta})}setAllDay(allDay,options={}){let standardProps={allDay},{maintainDuration}=options;maintainDuration==null&&(maintainDuration=this._context.options.allDayMaintainDuration),this._def.allDay!==allDay&&(standardProps.hasEnd=maintainDuration),this.mutate({standardProps})}formatRange(formatInput){let{dateEnv}=this._context,instance=this._instance,formatter=createFormatter(formatInput);return this._def.hasEnd?joinDateTimeFormatParts(dateEnv.formatRangeToParts(instance.range.start,instance.range.end,formatter)):joinDateTimeFormatParts(dateEnv.formatToParts(instance.range.start,formatter))}mutate(mutation){let instance=this._instance;if(instance){let def=this._def,context=this._context,{eventStore}=context.getCurrentData(),relevantEvents=getRelevantEvents(eventStore,instance.instanceId);relevantEvents=applyMutationToEventStore(relevantEvents,{"":{display:"",startEditable:!0,durationEditable:!0,constraints:[],overlap:null,allows:[],color:"",contrastColor:"",className:""}},mutation,context);let oldEvent=new _EventImpl(context,def,instance);this._def=relevantEvents.defs[def.defId],this._instance=relevantEvents.instances[instance.instanceId],context.dispatch({type:"MERGE_EVENTS",eventStore:relevantEvents}),context.emitter.trigger("eventChange",{oldEvent,event:this,relatedEvents:buildEventApis(relevantEvents,context,instance),revert(){context.dispatch({type:"RESET_EVENTS",eventStore})}})}}remove(){let context=this._context,asStore=eventApiToStore(this);context.dispatch({type:"REMOVE_EVENTS",eventStore:asStore}),context.emitter.trigger("eventRemove",{event:this,relatedEvents:[],revert(){context.dispatch({type:"MERGE_EVENTS",eventStore:asStore})}})}get source(){let{sourceId}=this._def;return sourceId?new EventSourceImpl(this._context,this._context.getCurrentData().eventSources[sourceId]):null}get start(){return this._instance?this._context.dateEnv.toDate(this._instance.range.start):null}get end(){return this._instance&&this._def.hasEnd?this._context.dateEnv.toDate(this._instance.range.end):null}get startStr(){let instance=this._instance;return instance?this._context.dateEnv.formatIso(instance.range.start,{omitTime:this._def.allDay}):""}get endStr(){let instance=this._instance;return instance&&this._def.hasEnd?this._context.dateEnv.formatIso(instance.range.end,{omitTime:this._def.allDay}):""}get id(){return this._def.publicId}get groupId(){return this._def.groupId}get allDay(){return this._def.allDay}get title(){return this._def.title}get url(){return this._def.url}get display(){return this._def.ui.display||"auto"}get startEditable(){return this._def.ui.startEditable}get durationEditable(){return this._def.ui.durationEditable}get constraint(){return this._def.ui.constraints[0]||null}get overlap(){return this._def.ui.overlap}get allow(){return this._def.ui.allows[0]||null}get color(){return this._def.ui.color}get contrastColor(){return this._def.ui.contrastColor}get className(){return this._def.ui.className}get extendedProps(){return this._def.extendedProps}toPlainObject(settings={}){let def=this._def,{ui}=def,{startStr,endStr}=this,res={allDay:def.allDay};return def.title&&(res.title=def.title),startStr&&(res.start=startStr),endStr&&(res.end=endStr),def.publicId&&(res.id=def.publicId),def.groupId&&(res.groupId=def.groupId),def.url&&(res.url=def.url),ui.display&&ui.display!=="auto"&&(res.display=ui.display),ui.color&&(res.color=ui.color),ui.contrastColor&&(res.contrastColor=ui.contrastColor),ui.className&&(res.className=ui.className),Object.keys(def.extendedProps).length&&(settings.collapseExtendedProps?Object.assign(res,def.extendedProps):res.extendedProps=def.extendedProps),res}toJSON(){return this.toPlainObject()}};function eventApiToStore(eventApi){let def=eventApi._def,instance=eventApi._instance;return{defs:{[def.defId]:def},instances:instance?{[instance.instanceId]:instance}:{}}}function buildEventApis(eventStore,context,excludeInstance){let{defs,instances}=eventStore,eventApis=[],excludeInstanceId=excludeInstance?excludeInstance.instanceId:"";for(let id in instances){let instance=instances[id],def=defs[instance.defId];instance.instanceId!==excludeInstanceId&&eventApis.push(new EventImpl(context,def,instance))}return eventApis}function getEventKey(seg){return seg.eventRange.instance.instanceId}function sliceEventStore(eventStore,eventUiBases,framingRange,nextDayThreshold){let inverseBgByGroupId={},inverseBgByDefId={},defByGroupId={},bgRanges=[],fgRanges=[],eventUis=compileEventUis(eventStore.defs,eventUiBases);for(let defId in eventStore.defs){let def=eventStore.defs[defId];eventUis[def.defId].display==="inverse-background"&&(def.groupId?(inverseBgByGroupId[def.groupId]=[],defByGroupId[def.groupId]||(defByGroupId[def.groupId]=def)):inverseBgByDefId[defId]=[])}for(let instanceId in eventStore.instances){let instance=eventStore.instances[instanceId],def=eventStore.defs[instance.defId],ui=eventUis[def.defId],origRange=instance.range,normalRange=!def.allDay&&nextDayThreshold?computeVisibleDayRange(origRange,nextDayThreshold):origRange,slicedRange=intersectRanges(normalRange,framingRange);slicedRange&&(ui.display==="inverse-background"?def.groupId?inverseBgByGroupId[def.groupId].push(slicedRange):inverseBgByDefId[instance.defId].push(slicedRange):ui.display!=="none"&&(ui.display==="background"?bgRanges:fgRanges).push({def,ui,instance,range:slicedRange,isStart:normalRange.start&&normalRange.start.valueOf()===slicedRange.start.valueOf(),isEnd:normalRange.end&&normalRange.end.valueOf()===slicedRange.end.valueOf()}))}for(let groupId in inverseBgByGroupId){let ranges=inverseBgByGroupId[groupId],invertedRanges=invertRanges(ranges,framingRange);for(let invertedRange of invertedRanges){let def=defByGroupId[groupId],ui=eventUis[def.defId];bgRanges.push({def,ui,instance:null,range:invertedRange,isStart:!1,isEnd:!1})}}for(let defId in inverseBgByDefId){let ranges=inverseBgByDefId[defId],invertedRanges=invertRanges(ranges,framingRange);for(let invertedRange of invertedRanges)bgRanges.push({def:eventStore.defs[defId],ui:eventUis[defId],instance:null,range:invertedRange,isStart:!1,isEnd:!1})}return{bg:bgRanges,fg:fgRanges}}function hasBgRendering(def){return def.ui.display==="background"||def.ui.display==="inverse-background"}function setElEventRange(el,eventRange){el.fcEventRange=eventRange}function getElEventRange(el){return el.fcEventRange||el.parentNode.fcEventRange||null}function compileEventUis(eventDefs,eventUiBases){return mapHash(eventDefs,eventDef=>compileEventUi(eventDef,eventUiBases))}function compileEventUi(eventDef,eventUiBases){let uis=[],fallbackBase=eventUiBases[""],defBase=eventUiBases[eventDef.defId];return fallbackBase&&uis.push(fallbackBase),defBase&&uis.push(defBase),uis.push(eventDef.ui),combineEventUis(uis)}function sortEventSegs(segs,eventOrderSpecs){let objs=segs.map(buildSegCompareObj);return objs.sort((obj0,obj1)=>compareByFieldSpecs(obj0,obj1,eventOrderSpecs)),objs.map(c=>c._seg)}function buildSegCompareObj(seg){let{eventRange}=seg,eventDef=eventRange.def,range=eventRange.instance?eventRange.instance.range:eventRange.range,start=range.start?range.start.valueOf():0,end=range.end?range.end.valueOf():0;return{...eventDef.extendedProps,...eventDef,id:eventDef.publicId,start,end,duration:end-start,allDay:Number(eventDef.allDay),_seg:seg}}function computeEventRangeDraggable(eventRange,context){let{pluginHooks}=context,transformers=pluginHooks.isDraggableTransformers,{def,ui}=eventRange,val=ui.startEditable;for(let transformer of transformers)val=transformer(val,def,ui,context);return val}function buildEventRangeTimeText(timeFormat,eventRange,slicedStart,slicedEnd,isStart,isEnd,context,defaultDisplayEventTime=!0,defaultDisplayEventEnd=!0){let{dateEnv,options}=context,{def}=eventRange,{displayEventTime,displayEventEnd}=options;displayEventTime==null&&(displayEventTime=defaultDisplayEventTime!==!1),displayEventEnd==null&&(displayEventEnd=defaultDisplayEventEnd!==!1);let startDate=!isStart&&slicedStart&&startOfDay4(slicedStart).valueOf()!==startOfDay4(eventRange.instance.range.start).valueOf()?slicedStart:eventRange.instance.range.start,endDate=!isEnd&&slicedEnd&&startOfDay4(addMs(slicedEnd,-1)).valueOf()!==startOfDay4(addMs(eventRange.instance.range.end,-1)).valueOf()?slicedEnd:eventRange.instance.range.end;if(displayEventTime&&!def.allDay){if(displayEventEnd&&(isStart||isEnd)&&def.hasEnd){let rangeParts=dateEnv.formatRangeToParts(startDate,endDate,timeFormat),multiDaySeparator=detectMultiDayTimes(rangeParts);return multiDaySeparator!=null?joinDateTimeFormatParts(dateEnv.formatToParts(startDate,timeFormat))+multiDaySeparator+joinDateTimeFormatParts(dateEnv.formatToParts(endDate,timeFormat)):joinDateTimeFormatParts(rangeParts)}if(isStart)return joinDateTimeFormatParts(dateEnv.formatToParts(startDate,timeFormat))}return""}var dateUnits=new Set(["year","month","day"]);function detectMultiDayTimes(parts){let sharedPart,hasDatePart=!1;for(let part of parts)part.source==="shared"&&(sharedPart=part),dateUnits.has(part.type)&&(hasDatePart=!0);return hasDatePart?sharedPart.value:void 0}function getEventRangeMeta(eventRange,todayRange,nowDate){let segRange=eventRange.range;return{isPast:segRange.end<=(nowDate||todayRange.start),isFuture:segRange.start>=(nowDate||todayRange.end),isToday:todayRange&&rangeContainsMarker(todayRange,segRange.start)}}function buildEventRangeKey(eventRange){return eventRange.instance?eventRange.instance.instanceId:`${eventRange.def.defId}:${eventRange.range.start.toISOString()}`}function getEventTagAndAttrs(eventRange,context){let{def,instance}=eventRange,{url}=def;if(url)return["a",{href:url},!0];let{emitter,options}=context,{eventInteractive}=options;eventInteractive==null&&(eventInteractive=def.interactive,eventInteractive==null&&(eventInteractive=!!emitter.hasHandlers("eventClick")));let attrs;return eventInteractive&&(attrs=createAriaKeyboardAttrs(ev=>{emitter.trigger("eventClick",{el:ev.target,event:new EventImpl(context,def,instance),jsEvent:ev,view:context.viewApi})}),attrs={role:"button",...attrs}),["div",attrs,eventInteractive]}var classNamesRe=/(^c|C)lass(Name)?$/,contentRe=/Content$/,lifecycleRe=/(DidMount|WillUnmount)$/,handlerRe=/^on[A-Z]/,customMergeFuncs={buttons:mergeMaybePropsDepth1};function mergeViewOptionsMap(...hashes){let merged={};for(let hash of hashes)for(let viewName in hash){let viewOptions=hash[viewName];merged[viewName]?merged[viewName]=mergeCalendarOptions(merged[viewName],viewOptions):merged[viewName]=viewOptions}return merged}function mergeCalendarOptions(...optionSets){let dest={};for(let options of optionSets)for(let name in options)if(name in dest){let mergeFunc=customMergeFuncs[name]||(classNamesRe.test(name)?joinFuncishClassNames:contentRe.test(name)?mergeContentInjectors:lifecycleRe.test(name)?mergeLifecycleCallbacks:void 0);dest[name]=mergeFunc?mergeFunc(dest[name],options[name],name):options[name]}else dest[name]=options[name];return dest}function joinFuncishClassNames(input0,input1,optionName){let isFunc0=typeof input0=="function",isFunc1=typeof input1=="function";if(isFunc0||isFunc1){let combinedFunc=info=>joinClassNames(refineClassName(isFunc0?input0(info):input0,optionName),refineClassName(isFunc1?input1(info):input1,optionName));return combinedFunc.parts=[input0,input1],combinedFunc}return joinClassNames(refineClassName(input0,optionName),refineClassName(input1,optionName))}function mergeContentInjectors(contentGenerator0,contentGenerator1){if(typeof contentGenerator1=="function"){let combinedFunc=renderProps=>{let res=contentGenerator1(renderProps);return res===!0?typeof contentGenerator0=="function"?contentGenerator0(renderProps):contentGenerator0:res};return combinedFunc.parts=[contentGenerator0,contentGenerator1],combinedFunc}return contentGenerator1??contentGenerator0}function mergeLifecycleCallbacks(fn0,fn1){if(fn0&&fn1){let combinedFunc=(...args)=>{fn0(...args),fn1(...args)};return combinedFunc.parts=[fn0,fn1],combinedFunc}return fn0||fn1}function isNonHandlerPropsEqual(obj0,obj1){let keys=getUnequalProps(obj0,obj1);for(let key of keys)if(!handlerRe.test(key))return!1;return!0}function isMergedPropsEqual(val0,val1){let parts0=val0&&val0.parts,parts1=val1&&val1.parts;if(parts0&&parts1){let count0=parts0.length,count1=parts1.length;if(count0!==count1)return!1;for(let i=0;i<count0;i++)if(!(parts0[i]===parts1[i]||isMergedPropsEqual(parts0[i],parts1[i])))return!1;return!0}return!1}var globalLocales=[],MINIMAL_RAW_EN_LOCALE={code:"en",week:{dow:0,doy:4},direction:"ltr",todayText:"Today",prevText:"Prev",nextText:"Next",prevYearText:"Prev year",nextYearText:"Next year",yearText:"Year",monthText:"Month",weekTextLong:"Week",dayText:"Day",listText:"List",closeHint:"Close",eventsHint:"Events",allDayText:"All-day",timedText:"Timed",moreLinkText:"more",noEventsText:"No events to display"},RAW_EN_LOCALE={...MINIMAL_RAW_EN_LOCALE,weekTextShort:"W",todayHint:(unitText,unit)=>unit==="day"?"Today":`This ${unitText}`,prevHint:"Previous $0",nextHint:"Next $0",viewHint:"$0 view",viewChangeHint:"Change view",navLinkHint:"Go to $0",moreLinkHint(eventCnt){return`Show ${eventCnt} more event${eventCnt===1?"":"s"}`}};function organizeRawLocales(explicitRawLocales){let defaultCode=explicitRawLocales.length>0?explicitRawLocales[0].code:"en",allRawLocales=globalLocales.concat(explicitRawLocales),rawLocaleMap={en:RAW_EN_LOCALE};for(let rawLocale of allRawLocales)rawLocaleMap[rawLocale.code]=rawLocale;return{map:rawLocaleMap,defaultCode}}function buildLocale(inputSingular,available){return typeof inputSingular=="object"&&!Array.isArray(inputSingular)?parseLocale(inputSingular.code,[inputSingular.code],inputSingular):queryLocale(inputSingular,available)}function queryLocale(codeArg,available){let codes=[].concat(codeArg||[]),raw=queryRawLocale(codes,available)||RAW_EN_LOCALE;return parseLocale(codeArg,codes,raw)}function queryRawLocale(codes,available){for(let i=0;i<codes.length;i+=1){let parts=codes[i].toLocaleLowerCase().split("-");for(let j=parts.length;j>0;j-=1){let simpleId=parts.slice(0,j).join("-");if(available[simpleId])return available[simpleId]}}return null}function parseLocale(codeArg,codes,raw){let merged=mergeCalendarOptions(MINIMAL_RAW_EN_LOCALE,raw);delete merged.code;let{week}=merged;return delete merged.week,{codeArg,codes,week,simpleNumberFormat:new Intl.NumberFormat(codeArg),options:merged}}var JsonRequestError=class extends Error{constructor(message,response){super(message),this.response=response}};function requestJson(method,url,params){method=method.toUpperCase();let fetchOptions={method};return method==="GET"?url+=(url.indexOf("?")===-1?"?":"&")+new URLSearchParams(params):(fetchOptions.body=new URLSearchParams(params),fetchOptions.headers={"Content-Type":"application/x-www-form-urlencoded"}),fetch(url,fetchOptions).then(fetchRes=>{if(fetchRes.ok)return fetchRes.json().then(parsedResponse=>[parsedResponse,fetchRes],()=>{throw new JsonRequestError("Failure parsing JSON",fetchRes)});throw new JsonRequestError("Request failed",fetchRes)})}function handleDateProfile(dateProfile,context){context.emitter.trigger("datesSet",{...buildRangeApiWithTimeZone(dateProfile.activeRange,context.dateEnv),view:context.viewApi})}function handleEventStore(eventStore,context){let{emitter}=context;emitter.hasHandlers("eventsSet")&&emitter.trigger("eventsSet",buildEventApis(eventStore,context))}var eventSourceDef$2={ignoreRange:!0,parseMeta(refined){return Array.isArray(refined.events)?refined.events:null},fetch(arg,successCallback){successCallback({rawEvents:arg.eventSource.meta})}},arrayEventSourcePlugin={name:"array-event-source",eventSourceDefs:[eventSourceDef$2]};function unpromisify(func,normalizedSuccessCallback,normalizedFailureCallback){let isResolved=!1,wrappedSuccess=function(res2){isResolved||(isResolved=!0,normalizedSuccessCallback(res2))},wrappedFailure=function(error){isResolved||(isResolved=!0,normalizedFailureCallback(error))},res=func(wrappedSuccess,wrappedFailure);res&&typeof res.then=="function"&&res.then(wrappedSuccess,wrappedFailure)}var eventSourceDef$1={parseMeta(refined){return typeof refined.events=="function"?refined.events:null},fetch(arg,successCallback,errorCallback){let{dateEnv}=arg.context,func=arg.eventSource.meta;unpromisify(func.bind(null,buildRangeApiWithTimeZone(arg.range,dateEnv)),rawEvents=>successCallback({rawEvents}),errorCallback)}},funcEventSourcePlugin={name:"func-event-source",eventSourceDefs:[eventSourceDef$1]},JSON_FEED_EVENT_SOURCE_REFINERS={method:String,extraParams:identity,startParam:String,endParam:String,timeZoneParam:String},eventSourceDef={parseMeta(refined){return refined.url&&(refined.format==="json"||!refined.format)?{url:refined.url,format:"json",method:(refined.method||"GET").toUpperCase(),extraParams:refined.extraParams,startParam:refined.startParam,endParam:refined.endParam,timeZoneParam:refined.timeZoneParam}:null},fetch(arg,successCallback,errorCallback){let{meta}=arg.eventSource,requestParams=buildRequestParams(meta,arg.range,arg.context);requestJson(meta.method,meta.url,requestParams).then(([rawEvents,response])=>{successCallback({rawEvents,response})},errorCallback)}},jsonFeedEventSourcePlugin={name:"json-event-source",eventSourceRefiners:JSON_FEED_EVENT_SOURCE_REFINERS,eventSourceDefs:[eventSourceDef]};function buildRequestParams(meta,range,context){let{dateEnv,options}=context,startParam,endParam,timeZoneParam,customRequestParams,params={};return startParam=meta.startParam,startParam==null&&(startParam=options.startParam),endParam=meta.endParam,endParam==null&&(endParam=options.endParam),timeZoneParam=meta.timeZoneParam,timeZoneParam==null&&(timeZoneParam=options.timeZoneParam),typeof meta.extraParams=="function"?customRequestParams=meta.extraParams():customRequestParams=meta.extraParams||{},Object.assign(params,customRequestParams),params[startParam]=dateEnv.formatIso(range.start),params[endParam]=dateEnv.formatIso(range.end),dateEnv.timeZone!=="local"&&(params[timeZoneParam]=dateEnv.timeZone),params}var changeHandlerPlugin={name:"change-handler",optionChangeHandlers:{controller(controller,context){controller._setApi(context.calendarApi)},events(events,context){handleEventSources([events],context)},eventSources:handleEventSources}};function handleEventSources(inputs,context){let unfoundSources=hashValuesToArray(context.getCurrentData().eventSources);if(unfoundSources.length===1&&inputs.length===1&&Array.isArray(unfoundSources[0]._raw)&&Array.isArray(inputs[0])){context.dispatch({type:"RESET_RAW_EVENTS",sourceId:unfoundSources[0].sourceId,rawEvents:inputs[0]});return}let newInputs=[];for(let input of inputs){let inputFound=!1;for(let i=0;i<unfoundSources.length;i+=1)if(unfoundSources[i]._raw===input){unfoundSources.splice(i,1),inputFound=!0;break}inputFound||newInputs.push(input)}for(let unfoundSource of unfoundSources)context.dispatch({type:"REMOVE_EVENT_SOURCE",sourceId:unfoundSource.sourceId});for(let newInput of newInputs)context.calendarApi.addEventSource(newInput)}var EVENT_SOURCE_REFINERS={id:String,defaultAllDay:Boolean,url:String,format:String,events:identity,eventDataTransform:identity,success:identity,failure:identity};function parseEventSource(raw,context,refiners=buildEventSourceRefiners(context)){let rawObj;if(typeof raw=="string"?rawObj={url:raw}:typeof raw=="function"||Array.isArray(raw)?rawObj={events:raw}:typeof raw=="object"&&raw&&(rawObj=raw),rawObj){let{refined,extra}=refineProps(rawObj,refiners),metaRes=buildEventSourceMeta(refined,context);if(metaRes)return{_raw:raw,isFetching:!1,latestFetchId:"",fetchRange:null,defaultAllDay:refined.defaultAllDay,eventDataTransform:refined.eventDataTransform,success:refined.success,failure:refined.failure,publicId:refined.id||"",sourceId:guid(),sourceDefId:metaRes.sourceDefId,meta:metaRes.meta,ui:createEventUi(refined,context),extendedProps:extra}}return null}function buildEventSourceRefiners(context){return{...EVENT_UI_REFINERS,...EVENT_SOURCE_REFINERS,...context.pluginHooks.eventSourceRefiners}}function buildEventSourceMeta(raw,context){let defs=context.pluginHooks.eventSourceDefs;for(let i=defs.length-1;i>=0;i-=1){let meta=defs[i].parseMeta(raw);if(meta)return{sourceDefId:i,meta}}return null}function initEventSources(calendarOptions,dateProfile,context){let activeRange=dateProfile?dateProfile.activeRange:null;return addSources({},parseInitialSources(calendarOptions,context),activeRange,context)}function reduceEventSources(eventSources,action,dateProfile,context){let activeRange=dateProfile?dateProfile.activeRange:null;switch(action.type){case"ADD_EVENT_SOURCES":return addSources(eventSources,action.sources,activeRange,context);case"REMOVE_EVENT_SOURCE":return removeSource(eventSources,action.sourceId);case"PREV":case"NEXT":case"CHANGE_DATE":case"CHANGE_VIEW_TYPE":return dateProfile?fetchDirtySources(eventSources,activeRange,context):eventSources;case"FETCH_EVENT_SOURCES":return fetchSourcesByIds(eventSources,action.sourceIds?arrayToHash(action.sourceIds):excludeStaticSources(eventSources,context),activeRange,action.isRefetch||!1,context);case"RECEIVE_EVENTS":case"RECEIVE_EVENT_ERROR":return receiveResponse(eventSources,action.sourceId,action.fetchId,action.fetchRange);case"REMOVE_ALL_EVENT_SOURCES":return{};default:return eventSources}}function reduceEventSourcesNewTimeZone(eventSources,dateProfile,context){let activeRange=dateProfile?dateProfile.activeRange:null;return fetchSourcesByIds(eventSources,excludeStaticSources(eventSources,context),activeRange,!0,context)}function computeEventSourcesLoading(eventSources){for(let sourceId in eventSources)if(eventSources[sourceId].isFetching)return!0;return!1}function addSources(eventSourceHash,sources,fetchRange,context){let hash={};for(let source of sources)hash[source.sourceId]=source;return fetchRange&&(hash=fetchDirtySources(hash,fetchRange,context)),{...eventSourceHash,...hash}}function removeSource(eventSourceHash,sourceId){return filterHash(eventSourceHash,eventSource=>eventSource.sourceId!==sourceId)}function fetchDirtySources(sourceHash,fetchRange,context){return fetchSourcesByIds(sourceHash,filterHash(sourceHash,eventSource=>isSourceDirty(eventSource,fetchRange,context)),fetchRange,!1,context)}function isSourceDirty(eventSource,fetchRange,context){return doesSourceNeedRange(eventSource,context)?!context.options.lazyFetching||!eventSource.fetchRange||eventSource.isFetching||fetchRange.start<eventSource.fetchRange.start||fetchRange.end>eventSource.fetchRange.end:!eventSource.latestFetchId}function fetchSourcesByIds(prevSources,sourceIdHash,fetchRange,isRefetch,context){let nextSources={};for(let sourceId in prevSources){let source=prevSources[sourceId];sourceIdHash[sourceId]?nextSources[sourceId]=fetchSource(source,fetchRange,isRefetch,context):nextSources[sourceId]=source}return nextSources}function fetchSource(eventSource,fetchRange,isRefetch,context){let{options,calendarApi}=context,sourceDef=context.pluginHooks.eventSourceDefs[eventSource.sourceDefId],fetchId=guid();return sourceDef.fetch({eventSource,range:fetchRange,isRefetch,context},res=>{let{rawEvents}=res;options.eventSourceSuccess&&(rawEvents=options.eventSourceSuccess.call(calendarApi,rawEvents,res.response)||rawEvents),eventSource.success&&(rawEvents=eventSource.success.call(calendarApi,rawEvents,res.response)||rawEvents),context.dispatch({type:"RECEIVE_EVENTS",sourceId:eventSource.sourceId,fetchId,fetchRange,rawEvents})},error=>{let errorHandled=!1;options.eventSourceFailure&&(options.eventSourceFailure.call(calendarApi,error),errorHandled=!0),eventSource.failure&&(eventSource.failure(error),errorHandled=!0),errorHandled||warn(`Unhandled event source error: ${error.message}`,error),context.dispatch({type:"RECEIVE_EVENT_ERROR",sourceId:eventSource.sourceId,fetchId,fetchRange,error})}),{...eventSource,isFetching:!0,latestFetchId:fetchId}}function receiveResponse(sourceHash,sourceId,fetchId,fetchRange){let eventSource=sourceHash[sourceId];return eventSource&&fetchId===eventSource.latestFetchId?{...sourceHash,[sourceId]:{...eventSource,isFetching:!1,fetchRange}}:sourceHash}function excludeStaticSources(eventSources,context){return filterHash(eventSources,eventSource=>doesSourceNeedRange(eventSource,context))}function parseInitialSources(rawOptions,context){let refiners=buildEventSourceRefiners(context),rawSources=[].concat(rawOptions.eventSources||[]),sources=[];rawOptions.initialEvents&&rawSources.unshift(rawOptions.initialEvents),rawOptions.events&&rawSources.unshift(rawOptions.events);for(let rawSource of rawSources){let source=parseEventSource(rawSource,context,refiners);source&&sources.push(source)}return sources}function doesSourceNeedRange(eventSource,context){return!context.pluginHooks.eventSourceDefs[eventSource.sourceDefId].ignoreRange}var SIMPLE_RECURRING_REFINERS={daysOfWeek:identity,startTime:createDuration,endTime:createDuration,duration:createDuration,startRecur:identity,endRecur:identity},recurring={parse(refined,dateEnv){if(refined.daysOfWeek||refined.startTime||refined.endTime||refined.startRecur||refined.endRecur){let recurringData={daysOfWeek:refined.daysOfWeek||null,startTime:refined.startTime||null,endTime:refined.endTime||null,startRecur:refined.startRecur?dateEnv.createMarker(refined.startRecur):null,endRecur:refined.endRecur?dateEnv.createMarker(refined.endRecur):null,dateEnv},duration;return refined.duration&&(duration=refined.duration),!duration&&refined.startTime&&refined.endTime&&(duration=subtractDurations(refined.endTime,refined.startTime)),{allDayGuess:!refined.startTime&&!refined.endTime,duration,typeData:recurringData}}return null},expand(typeData,framingRange,dateEnv){let clippedFramingRange=intersectRanges(framingRange,{start:typeData.startRecur,end:typeData.endRecur});return clippedFramingRange?expandRanges(typeData.daysOfWeek,typeData.startTime,typeData.dateEnv,dateEnv,clippedFramingRange):[]}},simpleRecurringEventsPlugin={name:"simple-recurring-event",recurringTypes:[recurring],eventRefiners:SIMPLE_RECURRING_REFINERS};function expandRanges(daysOfWeek,startTime,eventDateEnv,calendarDateEnv,framingRange){let dowHash=daysOfWeek?arrayToHash(daysOfWeek):null,dayMarker=startOfDay4(framingRange.start),endMarker=framingRange.end,instanceStarts=[];for(startTime&&(startTime.milliseconds<0?endMarker=addDays4(endMarker,1):startTime.milliseconds>=1e3*60*60*24&&(dayMarker=addDays4(dayMarker,-1)));dayMarker<endMarker;){let instanceStart;(!dowHash||dowHash[dayMarker.getUTCDay()])&&(startTime?instanceStart=calendarDateEnv.add(dayMarker,startTime):instanceStart=dayMarker,instanceStarts.push(calendarDateEnv.createMarker(eventDateEnv.toDate(instanceStart)))),dayMarker=addDays4(dayMarker,1)}return instanceStarts}var globalPlugins=[arrayEventSourcePlugin,funcEventSourcePlugin,jsonFeedEventSourcePlugin,simpleRecurringEventsPlugin,changeHandlerPlugin,{name:"misc",isLoadingFuncs:[state=>computeEventSourcesLoading(state.eventSources)],propSetHandlers:{dateProfile:handleDateProfile,eventStore:handleEventStore}}];var blankButtonState={text:"",hint:"",isDisabled:!1},CalendarController=class{constructor(handleDateChange){this.handleDateChange=handleDateChange}today(){this.calendarApi?.today()}prev(){this.calendarApi?.prev()}next(){this.calendarApi?.next()}prevYear(){this.calendarApi?.prevYear()}nextYear(){this.calendarApi?.nextYear()}gotoDate(zonedDateInput){this.calendarApi?.gotoDate(zonedDateInput)}incrementDate(duration){this.calendarApi?.incrementDate(duration)}changeView(viewType){this.calendarApi?.changeView(viewType)}get view(){return this.calendarApi?.view}getDate(){return this.calendarApi?.getDate()}getButtonState(){let{calendarApi}=this;return calendarApi&&calendarApi.getButtonState()||{today:blankButtonState,prev:blankButtonState,next:blankButtonState,prevYear:blankButtonState,nextYear:blankButtonState}}_setApi(calendarApi){this.calendarApi!==calendarApi&&(this.calendarApi&&(this.calendarApi.off("datesSet",this.handleDateChange),this.calendarApi=void 0),calendarApi&&(this.calendarApi=calendarApi,calendarApi.on("datesSet",this.handleDateChange)))}};var import_react5=require("react");var import_jsx_runtime4=require("react/jsx-runtime"),import_react4=__toESM(require("react"),1),import_react_dom2=require("react-dom");var import_react2=require("react");function memoize2(workerFunc,resEquality,teardownFunc){let currentArgs,currentRes;return function(...newArgs){if(!currentArgs)currentRes=workerFunc.apply(this,newArgs);else if(!isArraysEqual(currentArgs,newArgs)){teardownFunc&&teardownFunc(currentRes);let res=workerFunc.apply(this,newArgs);(!resEquality||!resEquality(res,currentRes))&&(currentRes=res)}return currentArgs=newArgs,currentRes}}function memoizeObjArg(workerFunc,resEquality,teardownFunc){let currentArg,currentRes;return newArg=>{if(!currentArg)currentRes=workerFunc.call(this,newArg);else if(!isPropsEqualShallow(currentArg,newArg)){teardownFunc&&teardownFunc(currentRes);let res=workerFunc.call(this,newArg);(!resEquality||!resEquality(res,currentRes))&&(currentRes=res)}return currentArg=newArg,currentRes}}var ViewContextType=(0,import_react2.createContext)({});function buildViewContext(viewSpec,viewApi,viewOptions,dateProfileGenerator,dateEnv,nowManager,pluginHooks,dispatch,getCurrentData,emitter,calendarApi,baseId,registerInteractiveComponent,unregisterInteractiveComponent){return{dateEnv,nowManager,options:viewOptions,pluginHooks,emitter,dispatch,getCurrentData,calendarApi,viewSpec,viewApi,dateProfileGenerator,baseId,registerInteractiveComponent,unregisterInteractiveComponent}}var PureComponent=class extends import_react2.Component{shouldComponentUpdate(nextProps,nextState){return!isPropsEqualWithMap(this.props,nextProps,this.propEquality)||!isPropsEqualWithMap(this.state,nextState,this.stateEquality)}};PureComponent.addPropsEquality=addPropsEquality;PureComponent.addStateEquality=addStateEquality;PureComponent.contextType=ViewContextType;PureComponent.prototype.propEquality={};PureComponent.prototype.stateEquality={};var BaseComponent=class extends PureComponent{};BaseComponent.contextType=ViewContextType;function addPropsEquality(propEquality){let hash=Object.create(this.prototype.propEquality);Object.assign(hash,propEquality),this.prototype.propEquality=hash}function addStateEquality(stateEquality){let hash=Object.create(this.prototype.stateEquality);Object.assign(hash,stateEquality),this.prototype.stateEquality=hash}function setRef(ref,current){typeof ref=="function"?ref(current):ref&&(ref.current=current)}var ContentInjector=class extends BaseComponent{constructor(){super(...arguments),this.id=guid(),this.queuedDomNodes=[],this.currentDomNodes=[],this.handleEl=el=>{this.el=el,this.props.elRef&&setRef(this.props.elRef,el)}}render(){let{props,context}=this,{options}=context,{customGenerator,defaultGenerator,renderProps}=props,attrs=buildElAttrs(props,"",this.handleEl),useDefault=!1,innerContent,queuedDomNodes=[],currentGeneratorMeta;if(customGenerator!=null){let customGeneratorRes=typeof customGenerator=="function"?customGenerator(renderProps):customGenerator;if(customGeneratorRes===!0)useDefault=!0;else{let isObject=customGeneratorRes&&typeof customGeneratorRes=="object";isObject&&"html"in customGeneratorRes?attrs.dangerouslySetInnerHTML={__html:customGeneratorRes.html}:isObject&&"domNodes"in customGeneratorRes?queuedDomNodes=Array.prototype.slice.call(customGeneratorRes.domNodes):(isObject?(0,import_react2.isValidElement)(customGeneratorRes):typeof customGeneratorRes!="function")?innerContent=customGeneratorRes:currentGeneratorMeta=customGeneratorRes}}else useDefault=!hasCustomRenderingHandler(props.generatorName,options);return useDefault&&defaultGenerator&&(innerContent=defaultGenerator(renderProps)),this.queuedDomNodes=queuedDomNodes,this.currentGeneratorMeta=currentGeneratorMeta,(0,import_react2.createElement)(props.tag,attrs,innerContent)}componentDidMount(){this.applyQueueudDomNodes(),this.triggerCustomRendering(!0)}componentDidUpdate(){this.applyQueueudDomNodes(),this.triggerCustomRendering(!0)}componentWillUnmount(){this.triggerCustomRendering(!1)}triggerCustomRendering(isActive){let{props,context}=this,{handleCustomRendering,customRenderingMetaMap}=context.options;if(handleCustomRendering){let generatorMeta=this.currentGeneratorMeta??customRenderingMetaMap?.[props.generatorName];generatorMeta&&handleCustomRendering({id:this.id,isActive,containerEl:this.el,generatorMeta,renderProps:props.renderProps})}}applyQueueudDomNodes(){let{queuedDomNodes,currentDomNodes}=this,{el}=this;if(!isArraysEqual(queuedDomNodes,currentDomNodes)){for(let domNode of currentDomNodes)domNode.remove();for(let newNode of queuedDomNodes)el.appendChild(newNode);this.currentDomNodes=queuedDomNodes}}};ContentInjector.addPropsEquality({renderProps:isPropsEqualShallow,attrs:isNonHandlerPropsEqual,style:isPropsEqualShallow});function hasCustomRenderingHandler(generatorName,options){return!!(options.handleCustomRendering&&generatorName&&options.customRenderingMetaMap?.[generatorName])}function buildElAttrs(props,className,elRef){let attrs={...props.attrs,ref:elRef};return(props.className||className)&&(attrs.className=joinClassNames(className,props.className,attrs.className)),props.style&&(attrs.style=props.style),attrs}var RenderId=(0,import_react2.createContext)(0),ContentContainer=class extends import_react2.Component{constructor(){super(...arguments),this.InnerContent=InnerContentInjector.bind(void 0,this),this.handleEl=el=>{this.el=el,this.props.elRef&&(setRef(this.props.elRef,el),el&&this.didMountMisfire&&this.componentDidMount())}}render(){let{props}=this,generatedClassName=generateClassName(props.classNameGenerator,props.renderProps);if(props.children){let attrs=buildElAttrs(props,generatedClassName,this.handleEl),children=props.children(this.InnerContent,props.renderProps,attrs);return props.tag?(0,import_react2.createElement)(props.tag,attrs,children):children}else return(0,import_react2.createElement)(ContentInjector,{...props,elRef:this.handleEl,tag:props.tag||"div",className:joinClassNames(props.className,generatedClassName),renderId:this.context})}componentDidMount(){this.el?this.props.didMount?.({...this.props.renderProps,el:this.el}):this.didMountMisfire=!0}componentWillUnmount(){this.props.willUnmount?.({...this.props.renderProps,el:this.el})}};ContentContainer.contextType=RenderId;function InnerContentInjector(containerComponent,props){let parentProps=containerComponent.props;return(0,import_react2.createElement)(ContentInjector,{renderProps:parentProps.renderProps,generatorName:parentProps.generatorName,customGenerator:parentProps.customGenerator,defaultGenerator:parentProps.defaultGenerator,renderId:containerComponent.context,...props})}function generateClassName(classNameGenerator,renderProps){return(typeof classNameGenerator=="function"?classNameGenerator(renderProps):classNameGenerator)||""}function renderText(renderProps){return renderProps.text}function getIsHeightAuto(options){return options.height==="auto"||options.contentHeight==="auto"}function getTableHeaderSticky(options){let{tableHeaderSticky}=options;return(tableHeaderSticky==null||tableHeaderSticky==="auto")&&(tableHeaderSticky=getIsHeightAuto(options)),tableHeaderSticky}function getFooterScrollbarSticky(options){let isHeightAuto=getIsHeightAuto(options),{footerScrollbarSticky}=options;return(footerScrollbarSticky==null||footerScrollbarSticky==="auto")&&(footerScrollbarSticky=isHeightAuto),!!footerScrollbarSticky&&isHeightAuto}function getScrollerSyncerClass(pluginHooks){let ScrollerSyncer=pluginHooks.scrollerSyncerClass;if(!ScrollerSyncer)throw new RangeError("Must import @fullcalendar/scrollgrid");return ScrollerSyncer}var NowTimerRunner=class{constructor(handleChange){this.handleChange=handleChange,this.isMounted=!1,this.handleRefresh=()=>{let timing=this.computeTiming();timing.nowDate.valueOf()!==this.nowDate.valueOf()&&(this.nowDate=timing.nowDate,this.todayRange=timing.todayRange,this.handleChange()),this.clearTimeout(),this.setTimeout(timing.waitMs)},this.handleVisibilityChange=()=>{document.hidden||this.handleRefresh()}}update(input){if(this.isMounted)(input.unit!==this.unit||input.unitValue!==this.unitValue||input.nowIndicatorSnap!==this.nowIndicatorSnap||input.nowManager!==this.nowManager||input.dateEnv!==this.dateEnv)&&(this.unit=input.unit,this.unitValue=input.unitValue,this.nowIndicatorSnap=input.nowIndicatorSnap,this.nowManager=input.nowManager,this.dateEnv=input.dateEnv,this.clearTimeout(),this.setTimeout());else{this.isMounted=!0,this.unit=input.unit,this.unitValue=input.unitValue,this.nowIndicatorSnap=input.nowIndicatorSnap,this.nowManager=input.nowManager,this.dateEnv=input.dateEnv;let timing=this.computeTiming();this.nowDate=timing.nowDate,this.todayRange=timing.todayRange,this.setTimeout(),this.nowManager.addResetListener(this.handleRefresh),typeof document<"u"&&document.addEventListener("visibilitychange",this.handleVisibilityChange)}return{nowDate:this.nowDate,todayRange:this.todayRange}}destroy(){this.isMounted&&(this.isMounted=!1,this.clearTimeout(),this.nowManager.removeResetListener(this.handleRefresh),typeof document<"u"&&document.removeEventListener("visibilitychange",this.handleVisibilityChange))}computeTiming(){let unroundedNow=this.nowManager.getDateMarker(),{unit,unitValue,nowIndicatorSnap,dateEnv}=this;nowIndicatorSnap==="auto"&&(nowIndicatorSnap=/year|month|week|day/.test(unit)||(unitValue||1)===1);let nowDate,waitMs;return nowIndicatorSnap?(nowDate=dateEnv.startOf(unroundedNow,unit),waitMs=dateEnv.add(nowDate,createDuration(1,unit)).valueOf()-unroundedNow.valueOf()):(nowDate=unroundedNow,waitMs=1e3*60),waitMs=Math.min(1e3*60*60*24,waitMs),{nowDate,todayRange:buildDayRange(nowDate),waitMs}}setTimeout(waitMs=this.computeTiming().waitMs){this.timeoutId=setTimeout(()=>{let timing=this.computeTiming();this.nowDate=timing.nowDate,this.todayRange=timing.todayRange,this.handleChange(),this.setTimeout(timing.waitMs)},waitMs)}clearTimeout(){this.timeoutId&&clearTimeout(this.timeoutId)}};function buildDayRange(date){let start=startOfDay4(date),end=addDays4(start,1);return{start,end}}var import_jsx_runtime3=require("react/jsx-runtime");var DateProfileGenerator=class{constructor(props){this.props=props,this.initHiddenDays()}buildPrev(currentDateProfile,currentDate,nowDate,forceToValid){let{dateEnv}=this.props,prevDate=dateEnv.subtract(dateEnv.startOf(currentDate,currentDateProfile.currentRangeUnit),currentDateProfile.dateIncrement);return this.build(prevDate,nowDate,-1,forceToValid)}buildNext(currentDateProfile,currentDate,nowDate,forceToValid){let{dateEnv}=this.props,nextDate=dateEnv.add(dateEnv.startOf(currentDate,currentDateProfile.currentRangeUnit),currentDateProfile.dateIncrement);return this.build(nextDate,nowDate,1,forceToValid)}build(currentDate,nowDate,direction,forceToValid=!0){let{props}=this,validRange,currentInfo,isRangeAllDay,renderRange,activeRange,isValid;return validRange=this.buildValidRange(nowDate),validRange=this.trimHiddenDays(validRange),forceToValid&&(currentDate=constrainMarkerToRange(currentDate,validRange)),currentInfo=this.buildCurrentRangeInfo(currentDate,direction),isRangeAllDay=/^(year|month|week|day)$/.test(currentInfo.unit),renderRange=this.buildRenderRange(this.trimHiddenDays(currentInfo.range),currentInfo.unit,isRangeAllDay),renderRange=this.trimHiddenDays(renderRange),activeRange=renderRange,props.showNonCurrentDates||(activeRange=intersectRanges(activeRange,currentInfo.range)),activeRange=this.adjustActiveRange(activeRange),activeRange=intersectRanges(activeRange,validRange),isValid=rangesIntersect(currentInfo.range,validRange),rangeContainsMarker(renderRange,currentDate)||(currentDate=renderRange.start),{currentDate,validRange,currentRange:currentInfo.range,currentRangeUnit:currentInfo.unit,isRangeAllDay,activeRange,renderRange,slotMinTime:props.slotMinTime,slotMaxTime:props.slotMaxTime,isValid,dateIncrement:this.buildDateIncrement(currentInfo.duration)}}buildValidRange(nowDate){let input=this.props.validRangeInput,simpleInput=typeof input=="function"?input.call(this.props.calendarApi,this.props.dateEnv.toDate(nowDate)):input;return this.refineRange(simpleInput)||{start:null,end:null}}buildCurrentRangeInfo(date,direction){let{props}=this,duration=null,unit=null,range=null,dayCount;return props.duration?(duration=props.duration,unit=props.durationUnit,range=this.buildRangeFromDuration(date,direction,duration,unit)):(dayCount=this.props.dayCount)?(unit="day",range=this.buildRangeFromDayCount(date,direction,dayCount)):(range=this.buildCustomVisibleRange(date))?unit=props.dateEnv.greatestWholeUnit(range.start,range.end).unit:(duration=this.getFallbackDuration(),unit=greatestDurationDenominator(duration).unit,range=this.buildRangeFromDuration(date,direction,duration,unit)),{duration,unit,range}}getFallbackDuration(){return createDuration({day:1})}adjustActiveRange(range){let{dateEnv,usesMinMaxTime,slotMinTime,slotMaxTime}=this.props,{start,end}=range;return usesMinMaxTime&&(asRoughDays(slotMinTime)<0&&(start=startOfDay4(start),start=dateEnv.add(start,slotMinTime)),asRoughDays(slotMaxTime)>1&&(end=startOfDay4(end),end=addDays4(end,-1),end=dateEnv.add(end,slotMaxTime))),{start,end}}buildRangeFromDuration(date,direction,duration,unit){let{dateEnv,dateAlignment}=this.props,start,end,res;if(!dateAlignment){let{dateIncrement}=this.props;dateIncrement&&asRoughMs(dateIncrement)<asRoughMs(duration)?dateAlignment=greatestDurationDenominator(dateIncrement).unit:dateAlignment=unit}asRoughDays(duration)<=1&&this.isHiddenDay(start)&&(start=this.skipHiddenDays(start,direction),start=startOfDay4(start));function computeRes(){start=dateEnv.startOf(date,dateAlignment),end=dateEnv.add(start,duration),res={start,end}}return computeRes(),this.trimHiddenDays(res)||(date=this.skipHiddenDays(date,direction),computeRes()),res}buildRangeFromDayCount(date,direction,dayCount){let{dateEnv,dateAlignment}=this.props,runningCount=0,start=date,end;dateAlignment&&(start=dateEnv.startOf(start,dateAlignment)),start=startOfDay4(start),start=this.skipHiddenDays(start,direction),end=start;do end=addDays4(end,1),this.isHiddenDay(end)||(runningCount+=1);while(runningCount<dayCount);return{start,end}}buildCustomVisibleRange(date){let{props}=this,input=props.visibleRangeInput,simpleInput=typeof input=="function"?input.call(props.calendarApi,props.dateEnv.toDate(date)):input,range=this.refineRange(simpleInput);return range&&(range.start==null||range.end==null)?null:range}buildRenderRange(currentRange,currentRangeUnit,isRangeAllDay){return currentRange}buildDateIncrement(fallback){let{dateIncrement}=this.props,customAlignment;return dateIncrement||((customAlignment=this.props.dateAlignment)?createDuration(1,customAlignment):fallback||createDuration({days:1}))}refineRange(rangeInput){if(rangeInput){let range=parseRange(rangeInput,this.props.dateEnv);return range&&(range=computeVisibleDayRange(range)),range}return null}initHiddenDays(){let hiddenDays=this.props.hiddenDays||[],isHiddenDayHash=[],dayCnt=0,i;for(this.props.weekends===!1&&hiddenDays.push(0,6),i=0;i<7;i+=1)(isHiddenDayHash[i]=hiddenDays.indexOf(i)!==-1)||(dayCnt+=1);if(!dayCnt)throw new Error("invalid hiddenDays");this.isHiddenDayHash=isHiddenDayHash}trimHiddenDays(range){let{start,end}=range;return start&&(start=this.skipHiddenDays(start)),end&&(end=this.skipHiddenDays(end,-1,!0)),start==null||end==null||start<end?{start,end}:null}isHiddenDay(day){return day instanceof Date&&(day=day.getUTCDay()),this.isHiddenDayHash[day]}skipHiddenDays(date,inc=1,isExclusive=!1){for(;this.isHiddenDayHash[(date.getUTCDay()+(isExclusive?inc:0)+7)%7];)date=addDays4(date,inc);return date}};function computeMajorUnit(dateProfile,dateEnv){let{currentRange}=dateProfile;if(dateProfile.currentRangeUnit==="year")return dateEnv.diffWholeYears(currentRange.start,currentRange.end)>1?"year":"month";if(dateProfile.currentRangeUnit==="month"){if(dateEnv.diffWholeMonths(currentRange.start,currentRange.end)>1)return"month"}else if(dateProfile.currentRangeUnit==="week"){if(diffWholeWeeks(currentRange.start,currentRange.end)>1)return"week"}else if(dateProfile.currentRangeUnit==="day"&&diffWholeDays(currentRange.start,currentRange.end)>1)return"day"}function isMajorUnit(dateMarker,majorUnit,dateEnv){if(dateMarker.valueOf()===startOfDay4(dateMarker).valueOf()){if(majorUnit==="year")return!dateEnv.getMonth(dateMarker)&&dateEnv.getDay(dateMarker)===1;if(majorUnit==="month")return dateEnv.getDay(dateMarker)===1;if(majorUnit==="week")return dateMarker.getUTCDay()===dateEnv.weekDow;if(majorUnit==="day")return!0}return!1}function reduceEventStore(eventStore,action,eventSources,dateProfile,context){switch(action.type){case"RECEIVE_EVENTS":return receiveRawEvents(eventStore,eventSources[action.sourceId],action.fetchId,action.fetchRange,action.rawEvents,context);case"RESET_RAW_EVENTS":return resetRawEvents(eventStore,eventSources[action.sourceId],action.rawEvents,dateProfile.activeRange,context);case"ADD_EVENTS":return addEvent(eventStore,action.eventStore,dateProfile?dateProfile.activeRange:null,context);case"RESET_EVENTS":return action.eventStore;case"MERGE_EVENTS":return mergeEventStores(eventStore,action.eventStore);case"PREV":case"NEXT":case"CHANGE_DATE":case"CHANGE_VIEW_TYPE":return dateProfile?expandRecurring(eventStore,dateProfile.activeRange,context):eventStore;case"REMOVE_EVENTS":return excludeSubEventStore(eventStore,action.eventStore);case"REMOVE_EVENT_SOURCE":return excludeEventsBySourceId(eventStore,action.sourceId);case"REMOVE_ALL_EVENT_SOURCES":return filterEventStoreDefs(eventStore,eventDef=>!eventDef.sourceId);case"REMOVE_ALL_EVENTS":return createEmptyEventStore();default:return eventStore}}function receiveRawEvents(eventStore,eventSource,fetchId,fetchRange,rawEvents,context){if(eventSource&&fetchId===eventSource.latestFetchId){let subset=parseEvents(transformRawEvents(rawEvents,eventSource,context),eventSource,context);return fetchRange&&(subset=expandRecurring(subset,fetchRange,context)),mergeEventStores(excludeEventsBySourceId(eventStore,eventSource.sourceId),subset)}return eventStore}function resetRawEvents(existingEventStore,eventSource,rawEvents,activeRange,context){let{defIdMap,instanceIdMap}=buildPublicIdMaps(existingEventStore),newEventStore=parseEvents(transformRawEvents(rawEvents,eventSource,context),eventSource,context,!1,defIdMap,instanceIdMap);return expandRecurring(newEventStore,activeRange,context)}function transformRawEvents(rawEvents,eventSource,context){let calEachTransform=context.options.eventDataTransform,sourceEachTransform=eventSource?eventSource.eventDataTransform:null;return sourceEachTransform&&(rawEvents=transformEachRawEvent(rawEvents,sourceEachTransform)),calEachTransform&&(rawEvents=transformEachRawEvent(rawEvents,calEachTransform)),rawEvents}function transformEachRawEvent(rawEvents,func){let refinedEvents;if(!func)refinedEvents=rawEvents;else{refinedEvents=[];for(let rawEvent of rawEvents){let refinedEvent=func(rawEvent);refinedEvent?refinedEvents.push(refinedEvent):refinedEvent==null&&refinedEvents.push(rawEvent)}}return refinedEvents}function addEvent(eventStore,subset,expandRange,context){return expandRange&&(subset=expandRecurring(subset,expandRange,context)),mergeEventStores(eventStore,subset)}function rezoneEventStoreDates(eventStore,oldDateEnv,newDateEnv){let{defs}=eventStore,instances=mapHash(eventStore.instances,instance=>defs[instance.defId].allDay?instance:{...instance,range:{start:newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start)),end:newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end))}});return{defs,instances}}function excludeEventsBySourceId(eventStore,sourceId){return filterEventStoreDefs(eventStore,eventDef=>eventDef.sourceId!==sourceId)}function excludeInstances(eventStore,removals){return{defs:eventStore.defs,instances:filterHash(eventStore.instances,instance=>!removals[instance.instanceId])}}function buildPublicIdMaps(eventStore){let{defs,instances}=eventStore,defIdMap={},instanceIdMap={};for(let defId in defs){let def=defs[defId],{publicId}=def;publicId&&(defIdMap[publicId]=defId)}for(let instanceId in instances){let instance=instances[instanceId],def=defs[instance.defId],{publicId}=def;publicId&&(instanceIdMap[publicId]=instanceId)}return{defIdMap,instanceIdMap}}var Interaction=class{constructor(settings){this.component=settings.component,this.isHitComboAllowed=settings.isHitComboAllowed||null}destroy(){}};function parseInteractionSettings(component,input){return{component,el:input.el,useEventCenter:input.useEventCenter!=null?input.useEventCenter:!0,isHitComboAllowed:input.isHitComboAllowed||null}}function interactionSettingsToStore(settings){return{[settings.component.uid]:settings}}var interactionSettingsStore={};var Emitter=class{constructor(){this.handlers={},this.thisContext=null}setThisContext(thisContext){this.thisContext=thisContext}setOptions(options){this.options=options}on(type,handler){addToHash(this.handlers,type,handler)}off(type,handler){removeFromHash(this.handlers,type,handler)}trigger(type,...args){let attachedHandlers=this.handlers[type]||[],optionHandler=this.options&&this.options[type],handlers=[].concat(optionHandler||[],attachedHandlers);for(let handler of handlers)handler.apply(this.thisContext,args)}hasHandlers(type){return!!(this.handlers[type]&&this.handlers[type].length||this.options&&this.options[type])}};function addToHash(hash,type,handler){(hash[type]||(hash[type]=[])).push(handler)}function removeFromHash(hash,type,handler){handler?hash[type]&&(hash[type]=hash[type].filter(func=>func!==handler)):delete hash[type]}var import_react3=require("react"),import_react_dom=require("react-dom");function refinePluginDef(input){return{name:input.name,premiumReleaseDate:input.premiumReleaseDate?new Date(input.premiumReleaseDate):void 0,reducers:input.reducers||[],isLoadingFuncs:input.isLoadingFuncs||[],contextInit:[].concat(input.contextInit||[]),eventRefiners:input.eventRefiners||{},eventDefMemberAdders:input.eventDefMemberAdders||[],eventSourceRefiners:input.eventSourceRefiners||{},isDraggableTransformers:input.isDraggableTransformers||[],eventDragMutationMassagers:input.eventDragMutationMassagers||[],eventDefMutationAppliers:input.eventDefMutationAppliers||[],dateSelectionTransformers:input.dateSelectionTransformers||[],datePointTransforms:input.datePointTransforms||[],dateSpanTransforms:input.dateSpanTransforms||[],views:input.views||{},viewPropsTransformers:input.viewPropsTransformers||[],isPropsValid:input.isPropsValid||null,externalDefTransforms:input.externalDefTransforms||[],viewContainerAppends:input.viewContainerAppends||[],eventDropTransformers:input.eventDropTransformers||[],componentInteractions:input.componentInteractions||[],calendarInteractions:input.calendarInteractions||[],eventSourceDefs:input.eventSourceDefs||[],cmdFormatter:input.cmdFormatter,recurringTypes:input.recurringTypes||[],initialView:input.initialView||"",elementDraggingImpl:input.elementDraggingImpl,optionChangeHandlers:input.optionChangeHandlers||{},scrollerSyncerClass:input.scrollerSyncerClass||null,listenerRefiners:input.listenerRefiners||{},optionRefiners:input.optionRefiners||{},optionDefaults:input.optionDefaults?[input.optionDefaults]:[],propSetHandlers:input.propSetHandlers||{}}}function buildPluginHooks(pluginDefs,globalDefs){let pluginsByName={},hooks={premiumReleaseDate:void 0,reducers:[],isLoadingFuncs:[],contextInit:[],eventRefiners:{},eventDefMemberAdders:[],eventSourceRefiners:{},isDraggableTransformers:[],eventDragMutationMassagers:[],eventDefMutationAppliers:[],dateSelectionTransformers:[],datePointTransforms:[],dateSpanTransforms:[],views:{},viewPropsTransformers:[],isPropsValid:null,externalDefTransforms:[],viewContainerAppends:[],eventDropTransformers:[],componentInteractions:[],calendarInteractions:[],eventSourceDefs:[],cmdFormatter:null,recurringTypes:[],initialView:"",elementDraggingImpl:null,optionChangeHandlers:{},scrollerSyncerClass:null,listenerRefiners:{},optionRefiners:{},optionDefaults:[],propSetHandlers:{}};function addDefs(defs){for(let unrefinedDef of defs){let{name}=unrefinedDef;if(!name)throw new Error("Plugin must specify a name");if(!pluginsByName[name]){let def=pluginsByName[name]=refinePluginDef(unrefinedDef);hooks=combineHooks(hooks,def),addDefs(unrefinedDef.deps||[])}}}return pluginDefs&&addDefs(pluginDefs),addDefs(globalDefs),hooks}function buildBuildPluginHooks(){let currentOverrideDefs=[],currentGlobalDefs=[],currentHooks;return(overrideDefs,globalDefs)=>((!currentHooks||!isArraysEqual(overrideDefs,currentOverrideDefs)||!isArraysEqual(globalDefs,currentGlobalDefs))&&(currentHooks=buildPluginHooks(overrideDefs,globalDefs)),currentOverrideDefs=overrideDefs,currentGlobalDefs=globalDefs,currentHooks)}function combineHooks(hooks0,hooks1){return{premiumReleaseDate:compareOptionalDates(hooks0.premiumReleaseDate,hooks1.premiumReleaseDate),reducers:hooks0.reducers.concat(hooks1.reducers),isLoadingFuncs:hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),contextInit:hooks0.contextInit.concat(hooks1.contextInit),eventRefiners:{...hooks0.eventRefiners,...hooks1.eventRefiners},eventDefMemberAdders:hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),eventSourceRefiners:{...hooks0.eventSourceRefiners,...hooks1.eventSourceRefiners},isDraggableTransformers:hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),eventDragMutationMassagers:hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),eventDefMutationAppliers:hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),dateSelectionTransformers:hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),datePointTransforms:hooks0.datePointTransforms.concat(hooks1.datePointTransforms),dateSpanTransforms:hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),views:mergeViewOptionsMap(hooks0.views,hooks1.views),viewPropsTransformers:hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),isPropsValid:hooks1.isPropsValid||hooks0.isPropsValid,externalDefTransforms:hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),viewContainerAppends:hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),eventDropTransformers:hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),calendarInteractions:hooks0.calendarInteractions.concat(hooks1.calendarInteractions),componentInteractions:hooks0.componentInteractions.concat(hooks1.componentInteractions),eventSourceDefs:hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),cmdFormatter:hooks1.cmdFormatter||hooks0.cmdFormatter,recurringTypes:hooks0.recurringTypes.concat(hooks1.recurringTypes),initialView:hooks0.initialView||hooks1.initialView,elementDraggingImpl:hooks0.elementDraggingImpl||hooks1.elementDraggingImpl,optionChangeHandlers:{...hooks0.optionChangeHandlers,...hooks1.optionChangeHandlers},scrollerSyncerClass:hooks0.scrollerSyncerClass||hooks1.scrollerSyncerClass,listenerRefiners:{...hooks0.listenerRefiners,...hooks1.listenerRefiners},optionRefiners:{...hooks0.optionRefiners,...hooks1.optionRefiners},optionDefaults:hooks0.optionDefaults.concat(hooks1.optionDefaults),propSetHandlers:{...hooks0.propSetHandlers,...hooks1.propSetHandlers}}}function compareOptionalDates(date0,date1){return date0===void 0?date1:date1===void 0?date0:new Date(Math.max(date0.valueOf(),date1.valueOf()))}function compileViewDefs(defaultConfigs,overrideConfigs){let hash={},viewType;for(viewType in defaultConfigs)ensureViewDef(viewType,hash,defaultConfigs,overrideConfigs);for(viewType in overrideConfigs)ensureViewDef(viewType,hash,defaultConfigs,overrideConfigs);return hash}function ensureViewDef(viewType,hash,defaultConfigs,overrideConfigs){if(hash[viewType])return hash[viewType];let viewDef=buildViewDef(viewType,hash,defaultConfigs,overrideConfigs);return viewDef&&(hash[viewType]=viewDef),viewDef}function buildViewDef(viewType,hash,defaultConfigs,overrideConfigs){let defaultConfig=defaultConfigs[viewType],overrideConfig=overrideConfigs[viewType],queryProp=name=>defaultConfig&&defaultConfig[name]!==null?defaultConfig[name]:overrideConfig&&overrideConfig[name]!==null?overrideConfig[name]:null,theComponent=queryProp("component"),superType=queryProp("superType"),superDef=null;if(superType){if(superType===viewType)throw new Error("Can't have a custom view type that references itself");superDef=ensureViewDef(superType,hash,defaultConfigs,overrideConfigs)}return!theComponent&&superDef&&(theComponent=superDef.component),theComponent?{type:viewType,component:theComponent,defaults:mergeCalendarOptions(superDef?superDef.defaults:{},defaultConfig?defaultConfig.rawOptions:{}),overrides:mergeCalendarOptions(superDef?superDef.overrides:{},overrideConfig?overrideConfig.rawOptions:{})}:null}function parseViewConfigs(inputs){return mapHash(inputs,parseViewConfig)}function parseViewConfig(input){let rawOptions=typeof input=="function"?{component:input}:input,{component}=rawOptions;return rawOptions.content?component=createViewHookComponent(rawOptions.content):component&&!(component.prototype instanceof BaseComponent)&&(component=createViewHookComponent(component)),{superType:rawOptions.type,component,rawOptions}}function createViewHookComponent(contentGenerator){return viewProps=>(0,import_jsx_runtime3.jsx)(ViewContextType.Consumer,{children:context=>{let{options,viewSpec}=context,renderProps={...viewProps,nextDayThreshold:options.nextDayThreshold,...computeViewBorderless(options),options:{headerToolbar:options.headerToolbar,footerToolbar:options.footerToolbar},isHeightAuto:getIsHeightAuto(options),view:context.viewApi};return(0,import_jsx_runtime3.jsx)(ContentContainer,{tag:"div",className:joinClassNames(generateClassName(options.viewClass,renderProps),generateClassName(viewSpec.optionDefaults.class,renderProps),generateClassName(viewSpec.optionDefaults.className,renderProps),generateClassName(viewSpec.optionOverrides.class,renderProps),generateClassName(viewSpec.optionOverrides.className,renderProps)),renderProps,generatorName:void 0,customGenerator:contentGenerator,didMount:options.didMount||options.viewDidMount,willUnmount:options.willUnmount||options.viewWillUnmount})}})}function buildViewSpecs(defaultInputs,optionOverrides,dynamicOptionOverrides){let defaultConfigs=parseViewConfigs(defaultInputs),overrideConfigs=parseViewConfigs(optionOverrides.views),viewDefs=compileViewDefs(defaultConfigs,overrideConfigs);return mapHash(viewDefs,viewDef=>buildViewSpec(viewDef,overrideConfigs,optionOverrides,dynamicOptionOverrides))}function buildViewSpec(viewDef,overrideConfigs,optionOverrides,dynamicOptionOverrides){let durationInput=viewDef.overrides.duration||viewDef.defaults.duration||dynamicOptionOverrides.duration||optionOverrides.duration,duration=null,durationUnit="",singleUnit="",singleUnitOverrides={};if(durationInput&&(duration=createDurationCached(durationInput),duration)){let denom=greatestDurationDenominator(duration);durationUnit=denom.unit,denom.value===1&&(singleUnit=durationUnit,singleUnitOverrides=overrideConfigs[durationUnit]?overrideConfigs[durationUnit].rawOptions:{})}return{type:viewDef.type,component:viewDef.component,duration,durationUnit,singleUnit,optionDefaults:viewDef.defaults,optionOverrides:{...singleUnitOverrides,...viewDef.overrides}}}var durationInputMap={};function createDurationCached(durationInput){let json=JSON.stringify(durationInput),res=durationInputMap[json];return res===void 0&&(res=createDuration(durationInput),durationInputMap[json]=res),res}function reduceViewType(viewType,action){return action.type==="CHANGE_VIEW_TYPE"&&(viewType=action.viewType),viewType}function reduceCurrentDate(currentDate,action){return action.type==="CHANGE_DATE"?action.dateMarker:currentDate}function getInitialDate(options,dateEnv,nowManager){let initialDateInput=options.initialDate;return initialDateInput!=null?dateEnv.createMarker(initialDateInput):nowManager.getDateMarker()}function reduceDynamicOptionOverrides(dynamicOptionOverrides,action){return action.type==="SET_OPTION"?{...dynamicOptionOverrides,[action.optionName]:action.rawOptionValue}:dynamicOptionOverrides}function reduceDateProfile(currentDateProfile,action,currentDate,nowDate,dateProfileGenerator){let dp;switch(action.type){case"CHANGE_VIEW_TYPE":return dateProfileGenerator.build(action.dateMarker||currentDate,nowDate);case"CHANGE_DATE":return dateProfileGenerator.build(action.dateMarker,nowDate);case"PREV":if(dp=dateProfileGenerator.buildPrev(currentDateProfile,currentDate,nowDate),dp.isValid)return dp;break;case"NEXT":if(dp=dateProfileGenerator.buildNext(currentDateProfile,currentDate,nowDate),dp.isValid)return dp;break}return currentDateProfile}function reduceDateSelection(currentSelection,action){switch(action.type){case"UNSELECT_DATES":return null;case"SELECT_DATES":return action.selection;default:return currentSelection}}function reduceSelectedEvent(currentInstanceId,action){switch(action.type){case"UNSELECT_EVENT":return"";case"SELECT_EVENT":return action.eventInstanceId;default:return currentInstanceId}}function reduceEventDrag(currentDrag,action){let newDrag;switch(action.type){case"UNSET_EVENT_DRAG":return null;case"SET_EVENT_DRAG":return newDrag=action.state,{affectedEvents:newDrag.affectedEvents,mutatedEvents:newDrag.mutatedEvents,isEvent:newDrag.isEvent};default:return currentDrag}}function reduceEventResize(currentResize,action){let newResize;switch(action.type){case"UNSET_EVENT_RESIZE":return null;case"SET_EVENT_RESIZE":return newResize=action.state,{affectedEvents:newResize.affectedEvents,mutatedEvents:newResize.mutatedEvents,isEvent:newResize.isEvent};default:return currentResize}}function parseToolbars(calendarOptions,viewSpecs,calendarApi){let header=calendarOptions.headerToolbar?parseToolbar(calendarOptions.headerToolbar,calendarOptions,viewSpecs,calendarApi):null,footer=calendarOptions.footerToolbar?parseToolbar(calendarOptions.footerToolbar,calendarOptions,viewSpecs,calendarApi):null;return{header,footer}}function parseToolbar(sectionStrHash,calendarOptions,viewSpecs,calendarApi){let isRtl=calendarOptions.direction==="rtl",viewsWithButtons=[],hasTitle=!1;function processSectionStr(sectionStr){let sectionRes=parseSection(sectionStr,calendarOptions,viewSpecs,calendarApi);return viewsWithButtons.push(...sectionRes.viewsWithButtons),hasTitle=hasTitle||sectionRes.hasTitle,sectionRes.widgets}return{sectionWidgets:{start:processSectionStr(sectionStrHash[isRtl?"right":"left"]||sectionStrHash.start||""),center:processSectionStr(sectionStrHash.center||""),end:processSectionStr(sectionStrHash[isRtl?"left":"right"]||sectionStrHash.end||"")},viewsWithButtons,hasTitle}}function parseSection(sectionStr,calendarOptions,viewSpecs,calendarApi){let calendarButtons=calendarOptions.buttons||{},customElements=calendarOptions.toolbarElements||{},sectionSubstrs=sectionStr?sectionStr.split(" "):[],viewsWithButtons=[],hasTitle=!1;return{widgets:sectionSubstrs.map(buttonGroupStr=>buttonGroupStr.split(",").map(name=>{if(name==="title")return hasTitle=!0,{name};if(customElements[name])return{name,customElement:customElements[name]};let viewSpec,buttonInput=calendarButtons[name]||{},buttonText,buttonHint,buttonClick;if(viewSpec=viewSpecs[name]){viewsWithButtons.push(name);let buttonTextKey=viewSpec.optionDefaults.buttonTextKey;buttonText=buttonInput.text||(buttonTextKey?calendarOptions[buttonTextKey]:"")||(viewSpec.singleUnit?calendarOptions[viewSpec.singleUnit+"TextLong"]||calendarOptions[viewSpec.singleUnit+"Text"]:"")||name,buttonHint=formatWithOrdinals(buttonInput.hint||calendarOptions.viewHint,[buttonText,name],buttonText),buttonClick=ev=>{buttonInput?.click?.(ev),ev.defaultPrevented||calendarApi.changeView(name)}}else buttonText=buttonInput.text||calendarOptions[name+"TextLong"]||calendarOptions[name+"Text"]||name,name==="prevYear"?buttonHint=formatWithOrdinals(buttonInput.hint||calendarOptions.prevHint,[calendarOptions.yearText,"year"],buttonText):name==="nextYear"?buttonHint=formatWithOrdinals(buttonInput.hint||calendarOptions.nextHint,[calendarOptions.yearText,"year"],buttonText):buttonHint=currentUnit=>formatWithOrdinals(buttonInput.hint||calendarOptions[name+"Hint"],[calendarOptions[currentUnit+"TextLong"]||calendarOptions[currentUnit+"Text"],currentUnit],buttonText),buttonClick=ev=>{buttonInput?.click?.(ev),ev.defaultPrevented||calendarApi[name]?.()};return{name,isView:!!viewSpec,buttonText,buttonHint,buttonDisplay:buttonInput.display,buttonIconClass:buttonInput.iconClass,buttonIconContent:buttonInput.iconContent,buttonClick,buttonIsPrimary:buttonInput.isPrimary||!1,buttonClass:buttonInput.class??buttonInput.className,buttonDidMount:buttonInput.didMount,buttonWillUnmount:buttonInput.willUnmount}})),viewsWithButtons,hasTitle}}var ViewImpl=class{constructor(type,getCurrentData,dateEnv){this.type=type,this.getCurrentData=getCurrentData,this.dateEnv=dateEnv}get calendar(){return this.getCurrentData().calendarApi}get title(){return this.getCurrentData().viewTitle}get activeStart(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start)}get activeEnd(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end)}get currentStart(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start)}get currentEnd(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end)}getOption(name){return this.getCurrentData().options[name]}},DEF_DEFAULTS={startTime:"09:00",endTime:"17:00",daysOfWeek:[1,2,3,4,5],display:"inverse-background",className:"",groupId:"_businessHours"};function parseBusinessHours(input,context){return parseEvents(refineInputs(input),null,context)}function refineInputs(input){let rawDefs;return input===!0?rawDefs=[{}]:Array.isArray(input)?rawDefs=input.filter(rawDef=>rawDef.daysOfWeek):typeof input=="object"&&input?rawDefs=[input]:rawDefs=[],rawDefs=rawDefs.map(rawDef=>({...DEF_DEFAULTS,...rawDef})),rawDefs}function buildTitle(dateProfile,viewOptions,dateEnv){let range;/^(year|month)$/.test(dateProfile.currentRangeUnit)?range=dateProfile.currentRange:range=dateProfile.activeRange;let parts,options={isEndExclusive:dateProfile.isRangeAllDay};return viewOptions.titleFormat?parts=dateEnv.formatRangeToParts(range.start,range.end,createFormatter(viewOptions.titleFormat),options):(parts=dateEnv.formatRangeToParts(range.start,range.end,createFormatter(buildTitleFormat(dateProfile,viewOptions.disallowAmbigTitle,"long")),options),hasTwoMonths(parts)&&(parts=dateEnv.formatRangeToParts(range.start,range.end,createFormatter(buildTitleFormat(dateProfile,viewOptions.disallowAmbigTitle,"short")),options))),joinDateTimeFormatParts(parts)}function buildTitleFormat(dateProfile,disallowAmbigTitle,monthFormat){let{currentRangeUnit}=dateProfile;if(currentRangeUnit==="year")return{year:"numeric"};if(currentRangeUnit==="month")return{year:"numeric",month:monthFormat};if(!disallowAmbigTitle){let days=diffWholeDays(dateProfile.currentRange.start,dateProfile.currentRange.end);if(days!==null&&days>1)return{year:"numeric",month:monthFormat}}return{year:"numeric",month:"long",day:"numeric"}}function hasTwoMonths(parts){let hasStartMonth=!1,hasEndMonth=!1;for(let part of parts)part.type==="month"&&(part.source==="startRange"&&(hasStartMonth=!0),part.source==="endRange"&&(hasEndMonth=!0));return hasStartMonth&&hasEndMonth}var CalendarNowManager=class{constructor(){this.resetListeners=new Set}handleInput(dateEnv,nowInput){let oldDateEnv=this.dateEnv;if(dateEnv!==oldDateEnv&&(typeof nowInput=="function"?this.nowFn=nowInput:oldDateEnv||(this.nowAnchorDate=dateEnv.toDate(nowInput?dateEnv.createMarker(nowInput):dateEnv.createNowMarker()),this.nowAnchorQueried=Date.now()),this.dateEnv=dateEnv,oldDateEnv))for(let resetListener of this.resetListeners.values())resetListener()}getDateMarker(){return this.nowAnchorDate?this.dateEnv.timestampToMarker(this.nowAnchorDate.valueOf()+(Date.now()-this.nowAnchorQueried)):this.dateEnv.createMarker(this.nowFn())}addResetListener(handler){this.resetListeners.add(handler)}removeResetListener(handler){this.resetListeners.delete(handler)}},CalendarDataManager=class{constructor(config2){this.computeCurrentViewData=memoize2(this._computeCurrentViewData),this.organizeRawLocales=memoize2(organizeRawLocales),this.buildLocale=memoize2(buildLocale),this.buildPluginHooks=buildBuildPluginHooks(),this.buildDateEnv=memoize2(buildDateEnv),this.parseToolbars=memoize2(parseToolbars),this.buildViewSpecs=memoize2(buildViewSpecs),this.buildDateProfileGenerator=memoizeObjArg(buildDateProfileGenerator),this.buildViewApi=memoize2(buildViewApi),this.buildViewUiProps=memoizeObjArg(buildViewUiProps),this.buildEventUiBySource=memoize2(buildEventUiBySource,isPropsEqualShallow),this.buildEventUiBases=memoize2(buildEventUiBases),this.parseContextBusinessHours=memoizeObjArg(parseContextBusinessHours),this.buildToolbarProps=memoize2(buildToolbarProps),this.buildTitle=memoize2(buildTitle),this.nowManager=new CalendarNowManager,this.isDrainingActionQueue=!1,this.actionQueue=[],this.optionOverrides={},this.emitter=new Emitter,this.currentCalendarOptionsRefiners={},this.currentCalendarOptionsInput={},this.currentCalendarOptionsRefined={},this.currentViewOptionsInput={},this.currentViewOptionsRefined={},this.optionsForRefining=[],this.optionsForHandling=[],this.getCurrentData=()=>this.data,this.handleNowChange=()=>{this.dispatch({type:"UPDATE_NOW"})},this.dispatch=action=>{this.actionQueue.push(action),this.isDrainingActionQueue||this.drainActionQueue()},this.config=config2,this.nowManager=new CalendarNowManager,this.nowTimer=new NowTimerRunner(this.handleNowChange)}destroy(){this.nowTimer.destroy()}update(optionOverrides){return this.optionOverrides=optionOverrides,this.actionQueue.push({type:"IDLE"}),this.drainActionQueue(),this.data}resetOptions(optionOverrides,changedOptionNames){changedOptionNames===void 0?this.optionOverrides=optionOverrides:(this.optionOverrides={...this.optionOverrides,...optionOverrides},this.optionsForRefining.push(...changedOptionNames)),this.dispatch({type:"RESET_OPTIONS"})}drainActionQueue(){let calendarContext,{state,data}=this,isInit=!state,{actionQueue}=this,actionsComplete=[];for(this.isDrainingActionQueue=!0;actionQueue.length;){let action=actionQueue.shift();({state,data,calendarContext}=this.reduce(state,data,action)),this.state=state,this.data=data,action.type!=="IDLE"&&actionsComplete.push(action)}if(this.isDrainingActionQueue=!1,isInit){let controllerOption=calendarContext.options.controller;controllerOption&&controllerOption._setApi(this.config.calendarApi)}if(!isInit&&actionsComplete.length){let{onDataChange}=this.config;onDataChange&&onDataChange(this.data,actionsComplete)}}reduce(prevState,prevData,action){let{config:config2}=this,isInit=!prevState,dynamicOptionOverrides=isInit?{}:reduceDynamicOptionOverrides(prevState.dynamicOptionOverrides,action),optionsData=this.computeOptionsData(this.optionOverrides,dynamicOptionOverrides,config2.calendarApi),currentViewType=isInit?optionsData.calendarOptions.initialView||optionsData.pluginHooks.initialView:reduceViewType(prevState.currentViewType,action),currentViewData=this.computeCurrentViewData(currentViewType,optionsData,this.optionOverrides,dynamicOptionOverrides);config2.calendarApi.currentDataManager=this,this.emitter.setThisContext(config2.calendarApi),this.emitter.setOptions(currentViewData.options);let calendarContext={nowManager:this.nowManager,dateEnv:optionsData.dateEnv,options:optionsData.calendarOptions,pluginHooks:optionsData.pluginHooks,calendarApi:config2.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},{nowDate}=this.nowTimer.update({unit:"day",unitValue:1,nowIndicatorSnap:"auto",nowManager:this.nowManager,dateEnv:optionsData.dateEnv}),currentDate=isInit?getInitialDate(optionsData.calendarOptions,optionsData.dateEnv,this.nowManager):reduceCurrentDate(prevState.currentDate,action),dateProfile;isInit?dateProfile=currentViewData.dateProfileGenerator.build(currentDate,nowDate):(dateProfile=prevState.dateProfile,prevData&&prevData.dateProfileGenerator!==currentViewData.dateProfileGenerator&&(dateProfile=currentViewData.dateProfileGenerator.build(currentDate,nowDate)),dateProfile=reduceDateProfile(dateProfile,action,currentDate,nowDate,currentViewData.dateProfileGenerator)),(action&&(action.type==="PREV"||action.type==="NEXT")||!rangeContainsMarker(dateProfile.activeRange,currentDate))&&(currentDate=dateProfile.currentRange.start);let eventSources=isInit?initEventSources(optionsData.calendarOptions,dateProfile,calendarContext):reduceEventSources(prevState.eventSources,action,dateProfile,calendarContext),eventStore=isInit?createEmptyEventStore():reduceEventStore(prevState.eventStore,action,eventSources,dateProfile,calendarContext),isEventsLoading=computeEventSourcesLoading(eventSources),renderableEventStore=isInit?createEmptyEventStore():isEventsLoading&&!currentViewData.options.progressiveEventRendering&&prevState.renderableEventStore||eventStore,{eventUiSingleBase,selectionConfig}=this.buildViewUiProps(calendarContext),eventUiBySource=this.buildEventUiBySource(eventSources),eventUiBases=isInit?{}:this.buildEventUiBases(renderableEventStore.defs,eventUiSingleBase,eventUiBySource),newState={dynamicOptionOverrides,currentViewType,currentDate,dateProfile,eventSources,eventStore,renderableEventStore,selectionConfig,eventUiBases,businessHours:this.parseContextBusinessHours(calendarContext),dateSelection:isInit?null:reduceDateSelection(prevState.dateSelection,action),eventSelection:isInit?"":reduceSelectedEvent(prevState.eventSelection,action),eventDrag:isInit?null:reduceEventDrag(prevState.eventDrag,action),eventResize:isInit?null:reduceEventResize(prevState.eventResize,action),nowDate},contextAndState={...calendarContext,...newState};for(let reducer of optionsData.pluginHooks.reducers)Object.assign(newState,reducer(prevState,action,contextAndState));let wasLoading=prevState?computeIsLoading(prevState,calendarContext):!1,isLoading=computeIsLoading(newState,calendarContext);!wasLoading&&isLoading?this.emitter.trigger("loading",!0):wasLoading&&!isLoading&&this.emitter.trigger("loading",!1);let viewTitle=this.buildTitle(dateProfile,currentViewData.options,optionsData.dateEnv),toolbarProps=this.buildToolbarProps(currentViewData.viewSpec,dateProfile,currentViewData.dateProfileGenerator,currentDate,nowDate,viewTitle),newData={viewTitle,nowManager:this.nowManager,calendarApi:config2.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData,toolbarProps,...optionsData,...currentViewData,...newState},changeHandlers=optionsData.pluginHooks.optionChangeHandlers,prevCalendarOptions=prevData&&prevData.calendarOptions,newCalendarOptions=optionsData.calendarOptions;if(prevCalendarOptions&&prevCalendarOptions!==newCalendarOptions){prevCalendarOptions.timeZone!==newCalendarOptions.timeZone&&(newState.eventSources=newData.eventSources=reduceEventSourcesNewTimeZone(newData.eventSources,dateProfile,newData),newState.eventStore=newData.eventStore=rezoneEventStoreDates(newData.eventStore,prevData.dateEnv,newData.dateEnv),newState.renderableEventStore=newData.renderableEventStore=rezoneEventStoreDates(newData.renderableEventStore,prevData.dateEnv,newData.dateEnv));for(let optionName in changeHandlers)(this.optionsForHandling.indexOf(optionName)!==-1||prevCalendarOptions[optionName]!==newCalendarOptions[optionName])&&changeHandlers[optionName](newCalendarOptions[optionName],newData)}return this.optionsForHandling=[],{state:newState,data:newData,calendarContext}}computeOptionsData(optionOverrides,dynamicOptionOverrides,calendarApi){if(!this.optionsForRefining.length&&optionOverrides===this.stableOptionOverrides&&dynamicOptionOverrides===this.stableDynamicOptionOverrides)return this.stableCalendarOptionsData;let{refinedOptions,pluginHooks,localeDefaults,availableLocaleData}=this.processRawCalendarOptions(optionOverrides,dynamicOptionOverrides),dateEnv=this.buildDateEnv(refinedOptions.timeZone,refinedOptions.locale,refinedOptions.weekNumberCalculation,refinedOptions.firstDay,refinedOptions.weekTextLong,refinedOptions.weekTextShort,pluginHooks,availableLocaleData),viewSpecs=this.buildViewSpecs(pluginHooks.views,this.stableOptionOverrides,this.stableDynamicOptionOverrides),toolbarConfig=this.parseToolbars(refinedOptions,viewSpecs,calendarApi);return this.stableCalendarOptionsData={calendarOptions:refinedOptions,pluginHooks,dateEnv,viewSpecs,toolbarConfig,localeDefaults,availableRawLocales:availableLocaleData.map}}processRawCalendarOptions(optionOverrides,dynamicOptionOverrides){let{locales,locale}=mergeCalendarOptions(BASE_OPTION_DEFAULTS,optionOverrides,dynamicOptionOverrides),availableLocaleData=this.organizeRawLocales(locales),availableRawLocales=availableLocaleData.map,localeDefaults=this.buildLocale(locale||availableLocaleData.defaultCode,availableRawLocales).options,pluginHooks=this.buildPluginHooks(optionOverrides.plugins||[],globalPlugins),refiners=this.currentCalendarOptionsRefiners={...BASE_OPTION_REFINERS,...CALENDAR_LISTENER_REFINERS,...CALENDAR_ONLY_OPTION_REFINERS,...pluginHooks.listenerRefiners,...pluginHooks.optionRefiners},raw=mergeCalendarOptions(BASE_OPTION_DEFAULTS,...pluginHooks.optionDefaults,localeDefaults,filterKnownOptions(mergeCalendarOptions(optionOverrides,dynamicOptionOverrides),refiners)),refined={},currentRaw=this.currentCalendarOptionsInput,currentRefined=this.currentCalendarOptionsRefined,anyChanges=!1;for(let optionName in raw)this.optionsForRefining.indexOf(optionName)===-1&&(raw[optionName]===currentRaw[optionName]||COMPLEX_OPTION_COMPARATORS[optionName]&&optionName in currentRaw&&COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName],raw[optionName])||isMergedPropsEqual(currentRaw[optionName],raw[optionName]))?refined[optionName]=currentRefined[optionName]:refiners[optionName]&&(refined[optionName]=refiners[optionName](raw[optionName],optionName),anyChanges=!0);return anyChanges&&(this.currentCalendarOptionsInput=raw,this.currentCalendarOptionsRefined=refined,this.stableOptionOverrides=optionOverrides,this.stableDynamicOptionOverrides=dynamicOptionOverrides),this.optionsForHandling.push(...this.optionsForRefining),this.optionsForRefining=[],{rawOptions:this.currentCalendarOptionsInput,refinedOptions:this.currentCalendarOptionsRefined,pluginHooks,availableLocaleData,localeDefaults}}_computeCurrentViewData(viewType,optionsData,optionOverrides,dynamicOptionOverrides){let viewSpec=optionsData.viewSpecs[viewType];if(!viewSpec)throw new Error(`viewType "${viewType}" is not available. Please make sure you've loaded all neccessary plugins`);let{refinedOptions}=this.processRawViewOptions(viewSpec,optionsData.pluginHooks,optionsData.localeDefaults,optionOverrides,dynamicOptionOverrides);this.nowManager.handleInput(optionsData.dateEnv,refinedOptions.now);let dateProfileGenerator=this.buildDateProfileGenerator({dateProfileGeneratorClass:viewSpec.optionDefaults.dateProfileGeneratorClass,duration:viewSpec.duration,durationUnit:viewSpec.durationUnit,usesMinMaxTime:viewSpec.optionDefaults.usesMinMaxTime,dateEnv:optionsData.dateEnv,calendarApi:this.config.calendarApi,slotMinTime:refinedOptions.slotMinTime,slotMaxTime:refinedOptions.slotMaxTime,showNonCurrentDates:refinedOptions.showNonCurrentDates,dayCount:refinedOptions.dayCount,dateAlignment:refinedOptions.dateAlignment,dateIncrement:refinedOptions.dateIncrement,hiddenDays:refinedOptions.hiddenDays,weekends:refinedOptions.weekends,validRangeInput:refinedOptions.validRange,visibleRangeInput:refinedOptions.visibleRange,fixedWeekCount:refinedOptions.fixedWeekCount}),viewApi=this.buildViewApi(viewType,this.getCurrentData,optionsData.dateEnv);return{viewSpec,options:refinedOptions,dateProfileGenerator,viewApi}}processRawViewOptions(viewSpec,pluginHooks,localeDefaults,optionOverrides,dynamicOptionOverrides){let refiners={...BASE_OPTION_REFINERS,...CALENDAR_LISTENER_REFINERS,...CALENDAR_ONLY_OPTION_REFINERS,...VIEW_ONLY_OPTION_REFINERS,...pluginHooks.listenerRefiners,...pluginHooks.optionRefiners},raw=mergeCalendarOptions(BASE_OPTION_DEFAULTS,...pluginHooks.optionDefaults,viewSpec.optionDefaults,localeDefaults,filterKnownOptions(mergeCalendarOptions(optionOverrides,viewSpec.optionOverrides,dynamicOptionOverrides),refiners)),refined={},currentRaw=this.currentViewOptionsInput,currentRefined=this.currentViewOptionsRefined,anyChanges=!1;for(let optionName in raw)raw[optionName]===currentRaw[optionName]||COMPLEX_OPTION_COMPARATORS[optionName]&&COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName],currentRaw[optionName])||isMergedPropsEqual(currentRaw[optionName],raw[optionName])?refined[optionName]=currentRefined[optionName]:(raw[optionName]===this.currentCalendarOptionsInput[optionName]||COMPLEX_OPTION_COMPARATORS[optionName]&&COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName],this.currentCalendarOptionsInput[optionName])?optionName in this.currentCalendarOptionsRefined&&(refined[optionName]=this.currentCalendarOptionsRefined[optionName]):refiners[optionName]&&(refined[optionName]=refiners[optionName](raw[optionName],optionName)),anyChanges=!0);return anyChanges&&(this.currentViewOptionsInput=raw,this.currentViewOptionsRefined=refined),{rawOptions:this.currentViewOptionsInput,refinedOptions:this.currentViewOptionsRefined}}};function buildDateEnv(timeZone,explicitLocale,weekNumberCalculation,firstDay,weekTextLong,weekTextShort,pluginHooks,availableLocaleData){let locale=buildLocale(explicitLocale||availableLocaleData.defaultCode,availableLocaleData.map);return new DateEnv({calendarSystem:"gregory",timeZone,locale,weekNumberCalculation,firstDay,weekTextLong,weekTextShort,cmdFormatter:pluginHooks.cmdFormatter})}function buildDateProfileGenerator(props){let DateProfileGeneratorClass=props.dateProfileGeneratorClass||DateProfileGenerator;return new DateProfileGeneratorClass(props)}function buildViewApi(type,getCurrentData,dateEnv){return new ViewImpl(type,getCurrentData,dateEnv)}function buildEventUiBySource(eventSources){return mapHash(eventSources,eventSource=>eventSource.ui)}function buildEventUiBases(eventDefs,eventUiSingleBase,eventUiBySource){let eventUiBases={"":eventUiSingleBase};for(let defId in eventDefs){let def=eventDefs[defId];def.sourceId&&eventUiBySource[def.sourceId]&&(eventUiBases[defId]=eventUiBySource[def.sourceId])}return eventUiBases}function buildViewUiProps(calendarContext){let{options}=calendarContext;return{eventUiSingleBase:createEventUi({display:options.eventDisplay,editable:options.editable,startEditable:options.eventStartEditable,durationEditable:options.eventDurationEditable,constraint:options.eventConstraint,overlap:typeof options.eventOverlap=="boolean"?options.eventOverlap:void 0,allow:options.eventAllow},calendarContext),selectionConfig:createEventUi({constraint:options.selectConstraint,overlap:typeof options.selectOverlap=="boolean"?options.selectOverlap:void 0,allow:options.selectAllow},calendarContext)}}function computeIsLoading(state,context){for(let isLoadingFunc of context.pluginHooks.isLoadingFuncs)if(isLoadingFunc(state))return!0;return!1}function parseContextBusinessHours(calendarContext){return parseBusinessHours(calendarContext.options.businessHours,calendarContext)}var warnedUnknownOptions={};function filterKnownOptions(options,optionRefiners){let knownOptions={};for(let optionName in options)optionRefiners[optionName]?knownOptions[optionName]=options[optionName]:warnedUnknownOptions[optionName]||(warn(`Unknown option \`${optionName}\`.`),warnedUnknownOptions[optionName]=!0);return knownOptions}function buildToolbarProps(viewSpec,dateProfile,dateProfileGenerator,currentDate,nowDate,title){let todayInfo=dateProfileGenerator.build(nowDate,nowDate,void 0,!1),prevInfo=dateProfileGenerator.buildPrev(dateProfile,currentDate,nowDate,!1),nextInfo=dateProfileGenerator.buildNext(dateProfile,currentDate,nowDate,!1);return{title,selectedButton:viewSpec.type,navUnit:viewSpec.singleUnit,isTodayEnabled:todayInfo.isValid&&!rangeContainsMarker(dateProfile.currentRange,nowDate),isPrevEnabled:prevInfo.isValid,isNextEnabled:nextInfo.isValid}}var CalendarApiImpl=class{getCurrentData(){return this.currentDataManager.getCurrentData()}dispatch(action){this.currentDataManager.dispatch(action)}get view(){return this.getCurrentData().viewApi}batchRendering(callback){callback()}setOption(name,val){this.dispatch({type:"SET_OPTION",optionName:name,rawOptionValue:val})}getOption(name){return this.currentDataManager.currentCalendarOptionsInput[name]}getAvailableLocaleCodes(){return Object.keys(this.getCurrentData().availableRawLocales)}on(handlerName,handler){let{currentDataManager}=this;currentDataManager.currentCalendarOptionsRefiners[handlerName]?currentDataManager.emitter.on(handlerName,handler):warn(`Unknown listener \`${handlerName}\`.`)}off(handlerName,handler){this.currentDataManager.emitter.off(handlerName,handler)}trigger(handlerName,...args){this.currentDataManager.emitter.trigger(handlerName,...args)}changeView(viewType,dateOrRange){this.batchRendering(()=>{if(this.unselect(),dateOrRange)if(dateOrRange.start&&dateOrRange.end)this.dispatch({type:"CHANGE_VIEW_TYPE",viewType}),this.dispatch({type:"SET_OPTION",optionName:"visibleRange",rawOptionValue:dateOrRange});else{let{dateEnv}=this.getCurrentData();this.dispatch({type:"CHANGE_VIEW_TYPE",viewType,dateMarker:dateEnv.createMarker(dateOrRange)})}else this.dispatch({type:"CHANGE_VIEW_TYPE",viewType})})}zoomTo(dateMarker,viewType){let state=this.getCurrentData(),spec;viewType=viewType||"day",spec=state.viewSpecs[viewType]||this.getUnitViewSpec(viewType),this.unselect(),spec?this.dispatch({type:"CHANGE_VIEW_TYPE",viewType:spec.type,dateMarker}):this.dispatch({type:"CHANGE_DATE",dateMarker})}getUnitViewSpec(unit){let{viewSpecs,toolbarConfig}=this.getCurrentData(),viewTypes=[].concat(toolbarConfig.header?toolbarConfig.header.viewsWithButtons:[],toolbarConfig.footer?toolbarConfig.footer.viewsWithButtons:[]),i,spec;for(let viewType in viewSpecs)viewTypes.push(viewType);for(i=0;i<viewTypes.length;i+=1)if(spec=viewSpecs[viewTypes[i]],spec&&spec.singleUnit===unit)return spec;return null}prev(){this.unselect(),this.dispatch({type:"PREV"})}next(){this.unselect(),this.dispatch({type:"NEXT"})}prevYear(){let state=this.getCurrentData();this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:state.dateEnv.addYears(state.currentDate,-1)})}nextYear(){let state=this.getCurrentData();this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:state.dateEnv.addYears(state.currentDate,1)})}today(){let state=this.getCurrentData();this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:state.nowManager.getDateMarker()})}gotoDate(zonedDateInput){let state=this.getCurrentData();this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:state.dateEnv.createMarker(zonedDateInput)})}incrementDate(deltaInput){let state=this.getCurrentData(),delta=createDuration(deltaInput);delta&&(this.unselect(),this.dispatch({type:"CHANGE_DATE",dateMarker:state.dateEnv.add(state.currentDate,delta)}))}getDate(){let state=this.getCurrentData();return state.dateEnv.toDate(state.currentDate)}formatDate(d,formatter){let{dateEnv}=this.getCurrentData();return joinDateTimeFormatParts(dateEnv.formatToParts(dateEnv.createMarker(d),createFormatter(formatter)))}formatRange(d0,d1,settings){let{dateEnv}=this.getCurrentData();return joinDateTimeFormatParts(dateEnv.formatRangeToParts(dateEnv.createMarker(d0),dateEnv.createMarker(d1),createFormatter(settings),settings))}formatIso(d,omitTime){let{dateEnv}=this.getCurrentData();return dateEnv.formatIso(dateEnv.createMarker(d),{omitTime})}select(dateOrObj,endDate){let selectionInput;endDate==null?dateOrObj.start!=null?selectionInput=dateOrObj:selectionInput={start:dateOrObj,end:null}:selectionInput={start:dateOrObj,end:endDate};let state=this.getCurrentData(),selection=parseDateSpan(selectionInput,state.dateEnv,createDuration({days:1}));selection&&(this.dispatch({type:"SELECT_DATES",selection}),triggerDateSelect(selection,null,state))}unselect(pev){let state=this.getCurrentData();state.dateSelection&&(this.dispatch({type:"UNSELECT_DATES"}),triggerDateUnselect(pev,state))}addEvent(eventInput,sourceInput){if(eventInput instanceof EventImpl){let def=eventInput._def,instance=eventInput._instance;return this.getCurrentData().eventStore.defs[def.defId]||(this.dispatch({type:"ADD_EVENTS",eventStore:eventTupleToStore({def,instance})}),this.triggerEventAdd(eventInput)),eventInput}let state=this.getCurrentData(),eventSource;if(sourceInput instanceof EventSourceImpl)eventSource=sourceInput.internalEventSource;else if(typeof sourceInput=="boolean")sourceInput&&([eventSource]=hashValuesToArray(state.eventSources));else if(sourceInput!=null){let sourceApi=this.getEventSourceById(sourceInput);if(!sourceApi)return warn(`Unknown event source ID \`${sourceInput}\`.`),null;eventSource=sourceApi.internalEventSource}let tuple=parseEvent(eventInput,eventSource,state,!1);if(tuple){let newEventApi=new EventImpl(state,tuple.def,tuple.def.recurringDef?null:tuple.instance);return this.dispatch({type:"ADD_EVENTS",eventStore:eventTupleToStore(tuple)}),this.triggerEventAdd(newEventApi),newEventApi}return null}triggerEventAdd(eventApi){let{emitter}=this.getCurrentData();emitter.trigger("eventAdd",{event:eventApi,relatedEvents:[],revert:()=>{this.dispatch({type:"REMOVE_EVENTS",eventStore:eventApiToStore(eventApi)})}})}getEventById(id){let state=this.getCurrentData(),{defs,instances}=state.eventStore;id=String(id);for(let defId in defs){let def=defs[defId];if(def.publicId===id){if(def.recurringDef)return new EventImpl(state,def,null);for(let instanceId in instances){let instance=instances[instanceId];if(instance.defId===def.defId)return new EventImpl(state,def,instance)}}}return null}getEvents(){let currentData=this.getCurrentData();return buildEventApis(currentData.eventStore,currentData)}removeAllEvents(){this.dispatch({type:"REMOVE_ALL_EVENTS"})}getEventSources(){let state=this.getCurrentData(),sourceHash=state.eventSources,sourceApis=[];for(let internalId in sourceHash)sourceApis.push(new EventSourceImpl(state,sourceHash[internalId]));return sourceApis}getEventSourceById(id){let state=this.getCurrentData(),sourceHash=state.eventSources;id=String(id);for(let sourceId in sourceHash)if(sourceHash[sourceId].publicId===id)return new EventSourceImpl(state,sourceHash[sourceId]);return null}addEventSource(sourceInput){let state=this.getCurrentData();if(sourceInput instanceof EventSourceImpl)return state.eventSources[sourceInput.internalEventSource.sourceId]||this.dispatch({type:"ADD_EVENT_SOURCES",sources:[sourceInput.internalEventSource]}),sourceInput;let eventSource=parseEventSource(sourceInput,state);return eventSource?(this.dispatch({type:"ADD_EVENT_SOURCES",sources:[eventSource]}),new EventSourceImpl(state,eventSource)):null}removeAllEventSources(){this.dispatch({type:"REMOVE_ALL_EVENT_SOURCES"})}refetchEvents(){this.dispatch({type:"FETCH_EVENT_SOURCES",isRefetch:!0})}scrollToTime(timeInput){let time=createDuration(timeInput);time&&this.trigger("_timeScrollRequest",time)}getButtonState(){let currentData=this.getCurrentData(),{toolbarProps}=currentData,options=currentData.calendarOptions,buttonConfigs=options.buttons||{},viewSpecs=currentData.viewSpecs,currentUnit=currentData.viewSpec.singleUnit,currentHintOrdinal=[currentUnit?getSingleUnitText(currentUnit,options):"",currentUnit],buttonState={today:{text:options.todayText,hint:formatWithOrdinals(options.todayHint,currentHintOrdinal,options.todayText),isDisabled:!toolbarProps.isTodayEnabled},prev:{text:options.prevText,hint:formatWithOrdinals(options.prevHint,currentHintOrdinal,options.prevText),isDisabled:!toolbarProps.isPrevEnabled},next:{text:options.nextText,hint:formatWithOrdinals(options.nextHint,currentHintOrdinal,options.nextText),isDisabled:!toolbarProps.isNextEnabled},prevYear:{text:options.prevYearText,hint:formatWithOrdinals(options.prevHint,[options.yearText,"year"],options.prevYearText),isDisabled:!1},nextYear:{text:options.prevYearText,hint:formatWithOrdinals(options.nextHint,[options.yearText,"year"],options.nextYearText),isDisabled:!1}};for(let viewSpecName in viewSpecs){let viewSpec=viewSpecs[viewSpecName],{singleUnit}=viewSpec,buttonTextKey=viewSpec.optionDefaults.buttonTextKey,buttonText=buttonConfigs[viewSpecName]?.text||(buttonTextKey?options[buttonTextKey]:"")||(singleUnit?getSingleUnitText(singleUnit,options):"")||viewSpecName,buttonHint=formatWithOrdinals(options.viewHint,[buttonText,viewSpecName],buttonText);buttonState[viewSpecName]={text:buttonText,hint:buttonHint}}return buttonState}};function getSingleUnitText(singleUnit,options){return options[singleUnit+"TextLong"]||options[singleUnit+"Text"]}var CalendarMediaRoot=class extends import_react3.Component{constructor(){super(...arguments),this.state={forPrint:!1},this.handleBeforePrint=()=>{(0,import_react_dom.flushSync)(()=>{this.setState({forPrint:!0})})},this.handleAfterPrint=()=>{(0,import_react_dom.flushSync)(()=>{this.setState({forPrint:!1})})}}render(){return this.props?.children(this.state.forPrint)}componentDidMount(){let{props}=this,{emitter}=props;emitter.on("_beforeprint",this.handleBeforePrint),emitter.on("_afterprint",this.handleAfterPrint)}componentWillUnmount(){let{props}=this,{emitter}=props;emitter.off("_beforeprint",this.handleBeforePrint),emitter.off("_afterprint",this.handleAfterPrint)}};function computeRootClassName(options,forPrint){let borderlessX=options.borderlessX??options.borderless,borderlessTop=options.borderlessTop??options.borderless,borderlessBottom=options.borderlessBottom??options.borderless,calendarDisplayData={borderlessX:!!borderlessX,borderlessTop:!!borderlessTop,borderlessBottom:!!borderlessBottom};return joinClassNames(generateClassName(options.class,calendarDisplayData),generateClassName(options.className,calendarDisplayData),classNames.borderBoxRoot,classNames.isolate,classNames.flexCol,forPrint?classNames.calendarPrintRoot:classNames.calendarScreenRoot)}var ButtonIcon=class extends BaseComponent{render(){let{contentGenerator,className}=this.props;if(contentGenerator)return(0,import_jsx_runtime3.jsx)(ContentContainer,{tag:"span",style:{display:"contents"},attrs:{"aria-hidden":!0},renderProps:{},generatorName:void 0,customGenerator:contentGenerator});if(className!==void 0)return(0,import_jsx_runtime3.jsx)("span",{"aria-hidden":!0,className})}},ToolbarSection=class extends BaseComponent{render(){let{props}=this,{options}=this.context,children=props.widgetGroups.map(widgetGroup=>this.renderWidgetGroup(widgetGroup));return(0,import_react3.createElement)("div",{className:generateClassName(options.toolbarSectionClass,{name:props.name})},...children)}renderWidgetGroup(widgetGroup){let{props,context}=this,{options}=context,children=[],isOnlyButtons=!0,isOnlyView=!0;for(let widget of widgetGroup){let{name,isView}=widget;name==="title"?isOnlyButtons=!1:isView||(isOnlyView=!1)}for(let widget of widgetGroup){let{name,customElement,buttonHint}=widget;if(name==="title")children.push((0,import_jsx_runtime3.jsx)("div",{role:"heading","aria-level":options.headingLevel,id:props.titleId,className:joinClassNames(options.toolbarTitleClass),children:props.title}));else if(customElement)children.push((0,import_jsx_runtime3.jsx)(ContentContainer,{tag:"span",style:{display:"contents"},renderProps:{},generatorName:void 0,customGenerator:customElement}));else{let isSelected=name===props.selectedButton,isDisabled=!props.isTodayEnabled&&name==="today"||!props.isPrevEnabled&&name==="prev"||!props.isNextEnabled&&name==="next",buttonDisplay=widget.buttonDisplay??options.buttonDisplay;buttonDisplay==="auto"&&(buttonDisplay=widget.buttonIconContent||widget.buttonIconClass?"icon":"text");let iconNode;buttonDisplay!=="text"&&(iconNode=(0,import_jsx_runtime3.jsx)(ButtonIcon,{className:widget.buttonIconClass,contentGenerator:widget.buttonIconContent}));let inGroup=widgetGroup.length>1&&isOnlyButtons,buttonGroup=inGroup?{hasSelection:isOnlyView}:null,renderProps={name,text:widget.buttonText,isPrimary:widget.buttonIsPrimary,isSelected,isDisabled,isIconOnly:buttonDisplay==="icon",buttonGroup};children.push((0,import_jsx_runtime3.jsx)(ContentContainer,{tag:"button",attrs:{type:"button",disabled:isDisabled,...isOnlyButtons&&isOnlyView?{role:"tab","aria-selected":isSelected}:{"aria-pressed":isSelected},"aria-label":typeof buttonHint=="function"?buttonHint(props.navUnit):buttonHint,onClick:widget.buttonClick},className:joinClassNames(generateClassName(options.buttonClass,renderProps),!isDisabled&&classNames.cursorPointer,inGroup&&joinClassNames(isSelected?classNames.z1:classNames.z0,classNames.focusZ2)),renderProps,generatorName:void 0,classNameGenerator:widget.buttonClass,didMount:widget.buttonDidMount,willUnmount:widget.buttonWillUnmount,children:()=>buttonDisplay==="text"?widget.buttonText:buttonDisplay==="icon"?iconNode:buttonDisplay==="icon-text"?(0,import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment,{children:[iconNode,widget.buttonText]}):(0,import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment,{children:[widget.buttonText,iconNode]})}))}}return children.length>1?(0,import_react3.createElement)("div",{role:isOnlyButtons&&isOnlyView?"tablist":void 0,"aria-label":isOnlyButtons&&isOnlyView?options.viewChangeHint:void 0,className:joinClassNames(generateClassName(options.buttonGroupClass,{hasSelection:isOnlyView}),classNames.isolate)},...children):children[0]}},Toolbar=class extends BaseComponent{render(){let{props}=this,options=this.context.options,{sectionWidgets}=props.model,{borderlessX,borderlessTop,borderlessBottom}=computeViewBorderless(options),toolbarClassOption=props.isHeader?options.headerToolbarClass:options.footerToolbarClass;return(0,import_jsx_runtime3.jsxs)("div",{className:joinClassNames(generateClassName(toolbarClassOption,{borderlessX,borderlessTop,borderlessBottom}),generateClassName(options.toolbarClass,{borderlessX,borderlessTop,borderlessBottom})),children:[this.renderSection("start",sectionWidgets.start),this.renderSection("center",sectionWidgets.center),this.renderSection("end",sectionWidgets.end)]})}renderSection(name,widgetGroups){let{props}=this;return(0,import_jsx_runtime3.jsx)(ToolbarSection,{name,widgetGroups,title:props.title,titleId:props.titleId,navUnit:props.navUnit,selectedButton:props.selectedButton,isTodayEnabled:props.isTodayEnabled,isPrevEnabled:props.isPrevEnabled,isNextEnabled:props.isNextEnabled},name)}},EventClicking=class extends Interaction{constructor(settings){super(settings),this.handleSegClick=(ev,segEl)=>{let{component}=this,{context}=component,eventRange=getElEventRange(segEl);eventRange&&component.isValidSegDownEl(ev.target)&&context.emitter.trigger("eventClick",{el:segEl,event:new EventImpl(component.context,eventRange.def,eventRange.instance),jsEvent:ev,view:context.viewApi})},this.destroy=listenBySelector(settings.el,"click",`.${classNames.internalEvent}`,this.handleSegClick)}},EventHovering=class extends Interaction{constructor(settings){super(settings),this.handleEventElRemove=el=>{el===this.currentSegEl&&this.handleSegLeave(null,this.currentSegEl)},this.handleSegEnter=(ev,segEl)=>{getElEventRange(segEl)&&(this.currentSegEl=segEl,this.triggerEvent("eventMouseEnter",ev,segEl))},this.handleSegLeave=(ev,segEl)=>{this.currentSegEl&&(this.currentSegEl=null,this.triggerEvent("eventMouseLeave",ev,segEl))},this.removeHoverListeners=listenToHoverBySelector(settings.el,`.${classNames.internalEvent}`,this.handleSegEnter,this.handleSegLeave)}destroy(){this.removeHoverListeners()}triggerEvent(publicEvName,ev,segEl){let{component}=this,{context}=component,eventRange=getElEventRange(segEl);(!ev||component.isValidSegDownEl(ev.target))&&context.emitter.trigger(publicEvName,{el:segEl,event:new EventImpl(context,eventRange.def,eventRange.instance),jsEvent:ev,view:context.viewApi})}},CalendarInner=class extends PureComponent{constructor(){super(...arguments),this.buildViewContext=memoize2(buildViewContext),this.buildViewPropTransformers=memoize2(buildViewPropTransformers),this.interactionsStore={},this.calendarInteractions=[],this.registerInteractiveComponent=(component,settingsInput)=>{let settings=parseInteractionSettings(component,settingsInput),interactionClasses=[EventClicking,EventHovering];settingsInput.disableHits||(interactionClasses=interactionClasses.concat(this.props.pluginHooks.componentInteractions));let interactions=interactionClasses.map(TheInteractionClass=>new TheInteractionClass(settings));this.interactionsStore[component.uid]=interactions,interactionSettingsStore[component.uid]=settings},this.unregisterInteractiveComponent=component=>{let listeners=this.interactionsStore[component.uid];if(listeners){for(let listener of listeners)listener.destroy();delete this.interactionsStore[component.uid]}delete interactionSettingsStore[component.uid]}}get viewTitleId(){return this.props.baseId+"title"}render(){let{props}=this,{toolbarConfig,options}=props,viewHeight,viewHeightLiquid=!1,viewAspectRatio;props.forPrint||getIsHeightAuto(options)||(options.height!=null?viewHeightLiquid=!0:options.contentHeight!=null?viewHeight=options.contentHeight:viewAspectRatio=Math.max(options.aspectRatio,.5));let viewContext=this.buildViewContext(props.viewSpec,props.viewApi,props.options,props.dateProfileGenerator,props.dateEnv,props.nowManager,props.pluginHooks,props.dispatch,props.getCurrentData,props.emitter,props.calendarApi,props.baseId,this.registerInteractiveComponent,this.unregisterInteractiveComponent);return(0,import_jsx_runtime3.jsxs)(ViewContextType.Provider,{value:viewContext,children:[toolbarConfig.header&&(0,import_jsx_runtime3.jsx)(Toolbar,{model:toolbarConfig.header,isHeader:!0,titleId:this.viewTitleId,...props.toolbarProps}),(0,import_jsx_runtime3.jsxs)("div",{className:joinClassNames(classNames.flexCol,classNames.rel,classNames.overflowAnchorNone,classNames.minHeight0,viewHeightLiquid&&classNames.liquid),style:{height:viewHeight,aspectRatio:viewAspectRatio!=null?String(viewAspectRatio):void 0},children:[this.renderView(joinClassNames((viewHeightLiquid||viewHeight)&&classNames.liquid,viewAspectRatio!=null&&classNames.fill,classNames.internalView)),this.buildAppendContent()]}),toolbarConfig.footer&&(0,import_jsx_runtime3.jsx)(Toolbar,{model:toolbarConfig.footer,isHeader:!1,...props.toolbarProps})]})}renderView(className){let{props}=this,{pluginHooks,viewSpec,toolbarConfig,toolbarProps}=props,viewProps={className,dateProfile:props.dateProfile,businessHours:props.businessHours,eventStore:props.renderableEventStore,eventUiBases:props.eventUiBases,dateSelection:props.dateSelection,eventSelection:props.eventSelection,eventDrag:props.eventDrag,eventResize:props.eventResize,forPrint:props.forPrint,labelId:toolbarConfig.header&&toolbarConfig.header.hasTitle?this.viewTitleId:void 0,labelStr:toolbarConfig.header&&toolbarConfig.header.hasTitle?void 0:toolbarProps.title},transformers=this.buildViewPropTransformers(pluginHooks.viewPropsTransformers),contentProps={...props,toolbarProps,forPrint:props.forPrint};for(let transformer of transformers)Object.assign(viewProps,transformer.transform(viewProps,contentProps));let ViewComponent=viewSpec.component;return(0,import_jsx_runtime3.jsx)(ViewComponent,{...viewProps})}buildAppendContent(){let{props}=this;return(0,import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment,{children:props.pluginHooks.viewContainerAppends.map((buildAppendContent,i)=>(0,import_jsx_runtime3.jsx)(import_react3.Fragment,{children:buildAppendContent(props)},i))})}componentDidMount(){let{props}=this;this.calendarInteractions=props.pluginHooks.calendarInteractions.map(CalendarInteractionClass=>new CalendarInteractionClass(props));let{propSetHandlers}=props.pluginHooks;for(let propName in propSetHandlers)propSetHandlers[propName](props[propName],props);for(let callback of props.pluginHooks.contextInit)callback(props)}componentDidUpdate(prevProps){let{props}=this,{propSetHandlers}=props.pluginHooks;for(let propName in propSetHandlers)props[propName]!==prevProps[propName]&&propSetHandlers[propName](props[propName],props)}componentWillUnmount(){let{props}=this;for(let interaction of this.calendarInteractions)interaction.destroy();this.calendarInteractions=[],props.emitter.trigger("_unmount")}};function buildViewPropTransformers(theClasses){return theClasses.map(TheClass=>new TheClass)}var Calendar=(0,import_react4.forwardRef)((props,ref)=>{let baseId=useStableId(props.id),[_revision,setRevision]=(0,import_react4.useState)("");function handleDataChange(_data,actions){(needsSyncRender(actions)?import_react_dom2.flushSync:runNormal)(()=>{setRevision(guid())})}let[calendarApi]=(0,import_react4.useState)(()=>new CalendarApiImpl),[calendarDataManager]=(0,import_react4.useState)(()=>new CalendarDataManager({calendarApi,onDataChange:handleDataChange}));(0,import_react4.useEffect)(()=>()=>{calendarDataManager.destroy()},[]),(0,import_react4.useImperativeHandle)(ref,()=>({getApi:()=>calendarApi}),[]);let data=calendarDataManager.update(props);return(0,import_jsx_runtime4.jsx)(CalendarMediaRoot,{emitter:data.emitter,children:forPrint=>{let options=data.calendarOptions,isRtl=options.direction==="rtl",className=computeRootClassName(options,forPrint);return(0,import_jsx_runtime4.jsx)("div",{dir:isRtl?"rtl":void 0,className,style:{height:options.height},"data-color-scheme":options.colorScheme||void 0,children:(0,import_jsx_runtime4.jsx)(CalendarInner,{...data,baseId,forPrint})})}})});function needsSyncRender(actions){for(let action of actions)if(action.type==="SET_EVENT_DRAG"||action.type==="UNSET_EVENT_DRAG"||action.type==="SET_EVENT_RESIZE"||action.type==="UNSET_EVENT_RESIZE"||action.type==="MERGE_EVENTS")return!0;return!1}function runNormal(f){f()}var warnedStableId=!1;function useStableId(fallbackId){if(import_react4.default.useId)return import_react4.default.useId();let[uid]=(0,import_react4.useState)(()=>guid());return fallbackId?fallbackId+":":(warnedStableId||(warnedStableId=!0,warn("Missing `id` prop. Provide one for better SSR support in React 17.")),`fc:${uid}:`)}function useCalendarController(){let handleDateChange=(0,import_react5.useCallback)(()=>{setControllerWrap({controller:controllerWrap.controller})},[]),[controllerWrap,setControllerWrap]=(0,import_react5.useState)(()=>({controller:new CalendarController(handleDateChange)}));return controllerWrap.controller}var import_jsx_runtime8=require("react/jsx-runtime");var import_react6=require("react");var import_jsx_runtime5=require("react/jsx-runtime");function getAppendableRoot(el){let root=el.getRootNode();return root instanceof Document?root.body||root.documentElement:root}function computeElIsRtl(el){return getComputedStyle(el).direction==="rtl"}var PIXEL_PROP_RE=/(top|left|right|bottom|width|height)$/i;function applyStyle(el,props){for(let propName in props)applyStyleProp(el,propName,props[propName])}function applyStyleProp(el,name,val){val==null?el.style[name]="":typeof val=="number"&&PIXEL_PROP_RE.test(name)?el.style[name]=`${val}px`:el.style[name]=val}function getEventTargetViaRoot(ev){return ev.composedPath?.()[0]??ev.target}var import_react_dom3=require("react-dom");var NowTimer=class extends import_react6.Component{constructor(props,context){super(props,context),this.handleChange=()=>{this.forceUpdate()},this.runner=new NowTimerRunner(this.handleChange)}render(){let{props,context}=this,{nowDate,todayRange}=this.runner.update({nowManager:context.nowManager,unit:props.unit,unitValue:props.unitValue,nowIndicatorSnap:context.options.nowIndicatorSnap,dateEnv:context.dateEnv});return props.children(nowDate,todayRange)}componentWillUnmount(){this.runner.destroy()}};NowTimer.contextType=ViewContextType;var FULL_DATE_FORMAT=createFormatter({year:"numeric",month:"long",day:"numeric"}),WEEK_FORMAT=createFormatter({week:"long"}),WEEKDAY_ONLY_FORMAT=createFormatter({weekday:"long"});function findWeekdayText(parts){for(let part of parts)if(part.type==="weekday")return part.value;return""}function findDayNumberText(parts){for(let part of parts)if(part.type==="day")return part.value;return""}function findMonthText(parts){for(let part of parts)if(part.type==="month")return part.value;return""}function buildDateStr(context,dateMarker,viewType="day"){return joinDateTimeFormatParts(context.dateEnv.formatToParts(dateMarker,viewType==="week"?WEEK_FORMAT:FULL_DATE_FORMAT))}function buildNavLinkAttrs(context,dateMarker,viewType="day",dateStr=buildDateStr(context,dateMarker,viewType),isTabbable=!0){let{dateEnv,options,calendarApi}=context,zonedDate=dateEnv.toDate(dateMarker),handleInteraction=ev=>{let customAction=viewType==="day"?options.navLinkDayClick:viewType==="week"?options.navLinkWeekClick:null;typeof customAction=="function"?customAction.call(calendarApi,dateEnv.toDate(dateMarker),ev):(typeof customAction=="string"&&(viewType=customAction),calendarApi.zoomTo(dateMarker,viewType))};return{role:"link","aria-label":formatWithOrdinals(options.navLinkHint,[dateStr,zonedDate],dateStr),className:joinClassNames(options.navLinkClass,classNames.cursorPointer,classNames.internalNavLink),...isTabbable?createAriaClickAttrs(handleInteraction):{onClick:handleInteraction}}}function getDateMeta(dateMarker,dateEnv,dateProfile,todayRange,nowDate){let isDisabled=!!(dateProfile&&(!dateProfile.activeRange||!rangeContainsMarker(dateProfile.activeRange,dateMarker)));return{date:dateEnv.toDate(dateMarker),dow:dateMarker.getUTCDay(),isDisabled,isOther:!isDisabled&&!!(dateProfile&&!rangeContainsMarker(dateProfile.currentRange,dateMarker)),isToday:!isDisabled&&!!(todayRange&&rangeContainsMarker(todayRange,dateMarker)),isPast:!isDisabled&&!!(nowDate?dateMarker<nowDate:todayRange&&dateMarker<todayRange.start),isFuture:!isDisabled&&!!(nowDate?dateMarker>nowDate:todayRange&&dateMarker>=todayRange.end)}}function isDimsEqual(v0,v1){return v0!=null&&(v0===v1||Math.abs(v0-v1)<.01)}var nativeBorderBoxEnabled=!0,configMap=new Map,afterSizeCallbacks=new Set,isHandling=!1,isStalling=!1;function afterSize(callback){afterSizeCallbacks.add(callback),!isHandling&&!isStalling&&(isStalling=!0,requestAnimationFrame(()=>{isStalling=!1,flushAfterSize()}))}function flushAfterSize(){for(let flushedCallback of afterSizeCallbacks.values())flushedCallback(),afterSizeCallbacks.delete(flushedCallback)}var globalResizeObserver=typeof ResizeObserver<"u"&&new ResizeObserver(entries=>{isHandling=!0;for(let entry of entries){let el=entry.target,config2=configMap.get(el),width,height;if(entry.borderBoxSize&&nativeBorderBoxEnabled){let borderBoxSize=entry.borderBoxSize[0]||entry.borderBoxSize;width=borderBoxSize.inlineSize,height=borderBoxSize.blockSize}else({width,height}=el.getBoundingClientRect());let shouldFire=!1;isDimsEqual(config2.width,width)||(config2.width=width,shouldFire=config2.watchWidth),isDimsEqual(config2.height,height)||(config2.height=height,shouldFire||(shouldFire=config2.watchHeight)),shouldFire&&config2.callback(width,height)}(0,import_react_dom3.flushSync)(()=>{flushAfterSize(),isHandling=!1})});function watchSize(el,callback,watchWidth2=!0,watchHeight2=!0){return configMap.set(el,{callback,watchWidth:watchWidth2,watchHeight:watchHeight2}),globalResizeObserver&&globalResizeObserver.observe(el,{box:"border-box"}),()=>{configMap.delete(el),globalResizeObserver&&globalResizeObserver.unobserve(el)}}function watchWidth(el,callback){return watchSize(el,callback,!0)}function watchHeight(el,callback){return watchSize(el,(_width,height)=>callback(height),!1,!0)}var ViewContainer=class extends BaseComponent{constructor(){super(...arguments),this.refineRenderProps=memoizeObjArg(refineRenderProps)}render(){let{props,context}=this,{options,viewSpec}=context,renderProps=this.refineRenderProps({...computeViewBorderless(options),options:{headerToolbar:options.headerToolbar,footerToolbar:options.footerToolbar},isHeightAuto:getIsHeightAuto(options),viewApi:context.viewApi});return(0,import_jsx_runtime5.jsx)(ContentContainer,{elRef:props.elRef,tag:props.tag||"div",attrs:props.attrs,style:props.style,className:joinClassNames(props.className,generateClassName(options.viewClass,renderProps),generateClassName(viewSpec.optionDefaults.class,renderProps),generateClassName(viewSpec.optionDefaults.className,renderProps),generateClassName(viewSpec.optionOverrides.class,renderProps),generateClassName(viewSpec.optionOverrides.className,renderProps)),renderProps,generatorName:void 0,didMount:options.didMount||options.viewDidMount,willUnmount:options.willUnmount||options.viewWillUnmount,children:()=>props.children})}};function refineRenderProps(raw){return{view:raw.viewApi,borderlessX:raw.borderlessX,borderlessTop:raw.borderlessTop,borderlessBottom:raw.borderlessBottom,options:raw.options,isHeightAuto:raw.isHeightAuto}}var DateComponent=class extends BaseComponent{constructor(){super(...arguments),this.uid=guid()}prepareHits(){}queryHit(isRtl,positionLeft,positionTop,elWidth,elHeight){return null}isValidSegDownEl(el){return!this.props.eventDrag&&!this.props.eventResize&&!el.closest(`.${classNames.internalEventMirror}`)}isValidDateDownEl(el){return!el.closest(`.${classNames.internalEvent}:not(.${classNames.internalBgEvent})`)&&!el.closest(`.${classNames.internalMoreLink}`)&&!el.closest(`.${classNames.internalNavLink}`)&&!el.closest(`.${classNames.internalPopover}`)}},DelayedRunner=class{constructor(drainedOption){this.drainedOption=drainedOption,this.isRunning=!1,this.isDirty=!1,this.pauseDepths={},this.timeoutId=0}request(delay){this.isDirty=!0,this.isPaused()||(this.clearTimeout(),delay==null?this.tryDrain():this.timeoutId=setTimeout(this.tryDrain.bind(this),delay))}pause(scope=""){let{pauseDepths}=this;pauseDepths[scope]=(pauseDepths[scope]||0)+1,this.clearTimeout()}resume(scope="",force){let{pauseDepths}=this;scope in pauseDepths&&(force?delete pauseDepths[scope]:(pauseDepths[scope]-=1,pauseDepths[scope]<=0&&delete pauseDepths[scope]),this.tryDrain())}isPaused(){return Object.keys(this.pauseDepths).length}tryDrain(){if(!this.isRunning&&!this.isPaused()){for(this.isRunning=!0;this.isDirty;)this.isDirty=!1,this.drained();this.isRunning=!1}}clear(){this.clearTimeout(),this.isDirty=!1,this.pauseDepths={}}clearTimeout(){this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=0)}drained(){this.drainedOption&&this.drainedOption()}},ScrollListener=class{constructor(el){this.el=el,this.emitter=new Emitter,this.isScroll=!1,this.isScrollRecent=!1,this.isWheelRecent=!1,this.isMouseDown=!1,this.isTouchDown=!1,this.isMouse=!1,this.isTouch=!1,this.isWheel=!1,this.handleScroll=()=>{this.isScrollRecent=!0,this.isMouseDown&&(this.isMouse=!0),this.isTouchDown&&(this.isTouch=!0),this.isWheelRecent&&(this.isWheel=!0),this.startScroll(),this.emitter.trigger("scroll",this.getIsDevice()),this.scrollWaiter.request(500)},this.handleScrollWait=()=>{this.isScrollRecent=!1,this.isTouchDown||this.endScroll()},this.handleWheel=()=>{this.isWheelRecent=!0,this.wheelWaiter.request(500)},this.handleWheelWait=()=>{this.isWheelRecent=!1},this.handleMouseDown=()=>{this.isMouseDown=!0},this.handleMouseUp=()=>{this.isMouseDown=!1},this.handleTouchStart=()=>{this.isTouchDown=!0},this.handleTouchEnd=()=>{this.isTouchDown=!1,this.isScrollRecent||this.endScroll()},this.wheelWaiter=new DelayedRunner(this.handleWheelWait),this.scrollWaiter=new DelayedRunner(this.handleScrollWait),el.addEventListener("scroll",this.handleScroll,{passive:!0}),el.addEventListener("wheel",this.handleWheel,{passive:!0}),el.addEventListener("mousedown",this.handleMouseDown),el.addEventListener("mouseup",this.handleMouseUp),el.addEventListener("touchstart",this.handleTouchStart,{passive:!0}),el.addEventListener("touchend",this.handleTouchEnd)}destroy(){let{el}=this;el.removeEventListener("scroll",this.handleScroll,{passive:!0}),el.removeEventListener("wheel",this.handleWheel,{passive:!0}),el.removeEventListener("mousedown",this.handleMouseDown),el.removeEventListener("mouseup",this.handleMouseUp),el.removeEventListener("touchstart",this.handleTouchStart,{passive:!0}),el.removeEventListener("touchend",this.handleTouchEnd)}startScroll(){this.isScroll||(this.isScroll=!0,this.emitter.trigger("scrollStart",this.getIsDevice()))}endScroll(){this.isScroll&&(this.scrollWaiter.clear(),this.wheelWaiter.clear(),this.isScroll=!1,this.isWheelRecent=!1,this.emitter.trigger("scrollEnd",this.getIsDevice()),this.isMouse=!1,this.isTouch=!1,this.isWheel=!1)}getIsDevice(){return this.isWheel||this.isMouse||this.isTouch}},Scroller=class extends DateComponent{constructor(){super(...arguments),this.handleEl=el=>{this.el&&(this.el=null,this._isUnmounting=!0,this.listener.destroy()),el&&(this.el=el,this._isUnmounting=!1,this.listener=new ScrollListener(el))},this.handleHRuler=el=>{this.disconnectHRuler&&(this.disconnectHRuler(),this.disconnectHRuler=void 0,this.clientWidth!==void 0&&(this.clientWidth=void 0,setRef(this.props.clientWidthRef,null))),el&&(this.disconnectHRuler=watchWidth(el,clientWidth=>{this._isUnmounting||clientWidth!==this.clientWidth&&(this.clientWidth=clientWidth,setRef(this.props.clientWidthRef,clientWidth))}))},this.handleVRuler=el=>{this.disconnectVRuler&&(this.disconnectVRuler(),this.disconnectVRuler=void 0,this.clientHeight!==void 0&&(this.clientHeight=void 0,setRef(this.props.clientHeightRef,null))),el&&(this.disconnectVRuler=watchHeight(el,clientHeight=>{if(this._isUnmounting)return;clientHeight!==this.clientHeight&&(this.clientHeight=clientHeight,setRef(this.props.clientHeightRef,clientHeight));let bottomScrollbarWidth=Math.round(this.el.getBoundingClientRect().height-clientHeight);bottomScrollbarWidth!==this.bottomScrollbarWidth&&(this.bottomScrollbarWidth=bottomScrollbarWidth,setRef(this.props.bottomScrollbarWidthRef,bottomScrollbarWidth))}))}}render(){let{props}=this,fallbackOverflow=props.horizontal||props.vertical?"hidden":"";return(0,import_jsx_runtime5.jsxs)("div",{ref:this.handleEl,className:joinClassNames(props.className,classNames.noPadding,classNames.rel,props.hideScrollbars&&classNames.noScrollbars,classNames.internalScroller),style:{...props.style,overflowX:props.horizontal?"auto":fallbackOverflow,overflowY:props.vertical?"auto":fallbackOverflow},children:[props.children,!!props.clientWidthRef&&(0,import_jsx_runtime5.jsx)("div",{ref:this.handleHRuler,className:classNames.fillTop}),!!(props.clientHeightRef||props.bottomScrollbarWidthRef)&&(0,import_jsx_runtime5.jsx)("div",{ref:this.handleVRuler,className:classNames.fillStart})]})}endScroll(){this.listener.endScroll()}get x(){let{el}=this;return el?getNormalizedScrollX(el):0}get y(){let{el}=this;return el?el.scrollTop:0}scrollTo({x:x2,y}){let{el}=this;el&&(y!=null&&(el.scrollTop=y),x2!=null&&setNormalizedScrollX(el,x2))}addScrollStartListener(handler){this.listener.emitter.on("scrollStart",handler)}removeScrollStartListener(handler){this.listener.emitter.off("scrollStart",handler)}addScrollEndListener(handler){this.listener.emitter.on("scrollEnd",handler)}removeScrollEndListener(handler){this.listener.emitter.off("scrollEnd",handler)}};function getNormalizedScrollX(el){let{scrollLeft}=el;return computeElIsRtl(el)?getNormalizedRtlScrollX(scrollLeft,el):scrollLeft}function setNormalizedScrollX(el,x2){let isRtl=computeElIsRtl(el);el.scrollLeft=isRtl?getNormalizedRtlScrollLeft(x2,el):x2}function getNormalizedRtlScrollX(scrollLeft,el){switch(getRtlScrollerSystem()){case"positive":return el.scrollWidth-el.clientWidth-scrollLeft;case"negative":return-scrollLeft}return scrollLeft}function getNormalizedRtlScrollLeft(x2,el){switch(getRtlScrollerSystem()){case"positive":return el.scrollWidth-el.clientWidth-x2;case"negative":return-x2}return x2}var _rtlScrollerSystem;function getRtlScrollerSystem(){return _rtlScrollerSystem||(_rtlScrollerSystem=detectRtlScrollerSystem())}function detectRtlScrollerSystem(){let el=document.createElement("div");el.style.position="absolute",el.style.top="-1000px",el.style.width="100px",el.style.height="100px",el.style.overflow="scroll",el.style.direction="rtl";let innerEl=document.createElement("div");innerEl.style.width="200px",innerEl.style.height="200px",el.appendChild(innerEl),document.body.appendChild(el);let system;return el.scrollLeft>0?system="positive":(el.scrollLeft=50,el.scrollLeft>0?system="reverse":system="negative"),el.remove(),system}var StandardEvent=class extends BaseComponent{constructor(){super(...arguments),this.buildPublicEvent=memoize2((context,eventDef,eventInstance)=>new EventImpl(context,eventDef,eventInstance)),this.handleEl=el=>{this.el=el,setRef(this.props.elRef,el),el&&setElEventRange(el,this.props.eventRange)}}render(){let{props,context}=this,{options}=context,{eventRange}=props,eventUi=eventRange.ui,timeFormat=options.eventTimeFormat||props.defaultTimeFormat,timeText=props.forcedTimeText??buildEventRangeTimeText(timeFormat,eventRange,props.slicedStart,props.slicedEnd,props.isStart,props.isEnd,context,props.defaultDisplayEventTime,props.defaultDisplayEventEnd),[tag,attrs,isInteractive]=getEventTagAndAttrs(eventRange,context),eventApi=this.buildPublicEvent(context,eventRange.def,eventRange.instance),isDraggable=!props.disableDragging&&computeEventRangeDraggable(eventRange,context),isBlock=/row|column/.test(props.display),subcontentRenderProps={event:eventApi,isNarrow:props.isNarrow||!1,isShort:props.isShort||!1,timeText},renderProps={event:eventApi,view:context.viewApi,timeText,color:eventUi.color||options.eventColor,contrastColor:eventUi.contrastColor||options.eventContrastColor,isDraggable,isStartResizable:!props.disableResizing&&props.isStart&&eventUi.durationEditable&&options.eventResizableFromStart,isEndResizable:!props.disableResizing&&props.isEnd&&eventUi.durationEditable,isMirror:props.isMirror,isStart:!!props.isStart,isEnd:!!props.isEnd,isFirst:!!props.isFirst,isLast:!!props.isLast,isPast:!!props.isPast,isFuture:!!props.isFuture,isToday:!!props.isToday,isSelected:!!props.isSelected,isDragging:!!props.isDragging,isResizing:!!props.isResizing,isInteractive,isNarrow:props.isNarrow||!1,isShort:props.isShort||!1,level:props.level||0,timeClass:joinClassNames(generateClassName(options.eventTimeClass,subcontentRenderProps),isBlock&&generateClassName(options.blockEventTimeClass,subcontentRenderProps),props.display==="row"&&generateClassName(options.rowEventTimeClass,subcontentRenderProps),props.display==="column"&&generateClassName(options.columnEventTimeClass,subcontentRenderProps),props.display==="list-item"&&generateClassName(options.listItemEventTimeClass,subcontentRenderProps)),titleClass:joinClassNames(generateClassName(options.eventTitleClass,subcontentRenderProps),isBlock&&generateClassName(options.blockEventTitleClass,subcontentRenderProps),props.display==="row"&&generateClassName(options.rowEventTitleClass,subcontentRenderProps),props.display==="column"&&generateClassName(options.columnEventTitleClass,subcontentRenderProps),props.display==="list-item"&&generateClassName(options.listItemEventTitleClass,subcontentRenderProps),props.display==="row"&&options.rowEventTitleSticky&&classNames.stickyS,props.display==="column"&&options.columnEventTitleSticky&&classNames.stickyT),options:{eventOverlap:!!options.eventOverlap}},outerClassName=joinClassNames(isBlock&&generateClassName(options.blockEventClass,renderProps),props.display==="row"&&generateClassName(options.rowEventClass,renderProps),props.display==="column"&&generateClassName(options.columnEventClass,renderProps),props.display==="list-item"&&generateClassName(options.listItemEventClass,renderProps),eventUi.className,props.className,props.display==="column"?classNames.flexCol:classNames.flexRow,(eventRange.def.url||isDraggable)&&classNames.cursorPointer,classNames.internalEvent,props.isMirror&&classNames.internalEventMirror,isDraggable&&classNames.internalEventDraggable,renderProps.isSelected&&classNames.internalEventSelected,(renderProps.isStartResizable||renderProps.isEndResizable)&&classNames.internalEventResizable),beforeClassName=joinClassNames(generateClassName(options.eventBeforeClass,renderProps),isBlock&&generateClassName(options.blockEventBeforeClass,renderProps),props.display==="row"&&generateClassName(options.rowEventBeforeClass,renderProps),props.display==="column"&&generateClassName(options.columnEventBeforeClass,renderProps),props.display==="list-item"&&generateClassName(options.listItemEventBeforeClass,renderProps)),afterClassName=joinClassNames(generateClassName(options.eventAfterClass,renderProps),isBlock&&generateClassName(options.blockEventAfterClass,renderProps),props.display==="row"&&generateClassName(options.rowEventAfterClass,renderProps),props.display==="column"&&generateClassName(options.columnEventAfterClass,renderProps),props.display==="list-item"&&generateClassName(options.listItemEventAfterClass,renderProps)),innerClassName=joinClassNames(generateClassName(options.eventInnerClass,renderProps),isBlock&&generateClassName(options.blockEventInnerClass,renderProps),props.display==="row"&&generateClassName(options.rowEventInnerClass,renderProps),props.display==="column"&&generateClassName(options.columnEventInnerClass,renderProps),props.display==="list-item"&&generateClassName(options.listItemEventInnerClass,renderProps),!props.disableLiquid&&classNames.liquid),beforeContent=props.display==="row"&&options.rowEventBeforeContent,afterContent=props.display==="row"&&options.rowEventAfterContent;return(0,import_jsx_runtime5.jsx)(ContentContainer,{tag,attrs:{...props.attrs,...attrs,dir:props.isDragging&&options.direction==="rtl"?"rtl":void 0},className:outerClassName,style:{"--fc-event-color":renderProps.color,"--fc-event-contrast-color":renderProps.contrastColor},elRef:this.handleEl,renderProps,generatorName:"eventContent",customGenerator:options.eventContent,defaultGenerator:renderInnerContent,classNameGenerator:options.eventClass,didMount:options.eventDidMount,willUnmount:options.eventWillUnmount,children:InnerContent=>(0,import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment,{children:[!!(renderProps.isSelected&&isBlock)&&(0,import_jsx_runtime5.jsx)("div",{className:props.display==="column"?classNames.hitX:classNames.hitY}),(beforeClassName||beforeContent)&&(0,import_jsx_runtime5.jsxs)("div",{className:joinClassNames(beforeClassName,!props.disableZindexes&&classNames.z1,renderProps.isStartResizable&&joinClassNames(props.display==="column"?classNames.cursorResizeT:classNames.cursorResizeS,classNames.internalEventResizer,classNames.internalEventResizerStart)),children:[beforeContent&&(0,import_jsx_runtime5.jsx)(ContentContainer,{tag:"div",style:{display:"contents"},attrs:{"aria-hidden":!0},renderProps,generatorName:void 0,customGenerator:beforeContent}),!!(renderProps.isStartResizable&&renderProps.isSelected)&&(0,import_jsx_runtime5.jsx)("div",{className:classNames.hit})]}),(0,import_jsx_runtime5.jsx)(InnerContent,{tag:"div",className:joinClassNames(innerClassName,!props.disableZindexes&&classNames.z0)}),(afterClassName||afterContent)&&(0,import_jsx_runtime5.jsxs)("div",{className:joinClassNames(afterClassName,!props.disableZindexes&&classNames.z1,renderProps.isEndResizable&&joinClassNames(props.display==="column"?classNames.cursorResizeB:classNames.cursorResizeE,classNames.internalEventResizer,classNames.internalEventResizerEnd)),children:[afterContent&&(0,import_jsx_runtime5.jsx)(ContentContainer,{tag:"div",style:{display:"contents"},attrs:{"aria-hidden":!0},renderProps,generatorName:void 0,customGenerator:afterContent}),!!(renderProps.isEndResizable&&renderProps.isSelected)&&(0,import_jsx_runtime5.jsx)("div",{className:classNames.hit})]})]})})}componentDidUpdate(prevProps){this.el&&this.props.eventRange!==prevProps.eventRange&&setElEventRange(this.el,this.props.eventRange)}};StandardEvent.addPropsEquality({seg:isPropsEqualShallow});function renderInnerContent(innerProps){return(0,import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment,{children:[innerProps.timeText&&(0,import_jsx_runtime5.jsx)("div",{className:innerProps.timeClass,children:innerProps.timeText}),(0,import_jsx_runtime5.jsx)("div",{className:innerProps.titleClass,children:innerProps.event.title||(0,import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment,{children:"\xA0"})})]})}var import_jsx_runtime6=require("react/jsx-runtime"),import_react7=require("react");var import_react_dom4=require("react-dom");function pointInsideRect(point,rect){return point.left>=rect.left&&point.left<rect.right&&point.top>=rect.top&&point.top<rect.bottom}function intersectRects(rect1,rect2){let res={left:Math.max(rect1.left,rect2.left),right:Math.min(rect1.right,rect2.right),top:Math.max(rect1.top,rect2.top),bottom:Math.min(rect1.bottom,rect2.bottom)};return res.left<res.right&&res.top<res.bottom?res:!1}function constrainPoint(point,rect){return{left:Math.min(Math.max(point.left,rect.left),rect.right),top:Math.min(Math.max(point.top,rect.top),rect.bottom)}}function getRectCenter(rect){return{left:(rect.left+rect.right)/2,top:(rect.top+rect.bottom)/2}}function diffPoints(point1,point2){return{left:point1.left-point2.left,top:point1.top-point2.top}}function computeEdges(el,getPadding=!1){let computedStyle=window.getComputedStyle(el),borderLeft=parseInt(computedStyle.borderLeftWidth,10)||0,borderRight=parseInt(computedStyle.borderRightWidth,10)||0,borderTop=parseInt(computedStyle.borderTopWidth,10)||0,borderBottom=parseInt(computedStyle.borderBottomWidth,10)||0,badScrollbarWidths=computeScrollbarWidthsForEl(el),scrollbarLeftRight=badScrollbarWidths.y-borderLeft-borderRight,scrollbarBottom=badScrollbarWidths.x-borderTop-borderBottom,res={borderLeft,borderRight,borderTop,borderBottom,scrollbarBottom,scrollbarLeft:0,scrollbarRight:0};return computedStyle.direction==="rtl"?res.scrollbarLeft=scrollbarLeftRight:res.scrollbarRight=scrollbarLeftRight,getPadding&&(res.paddingLeft=parseInt(computedStyle.paddingLeft,10)||0,res.paddingRight=parseInt(computedStyle.paddingRight,10)||0,res.paddingTop=parseInt(computedStyle.paddingTop,10)||0,res.paddingBottom=parseInt(computedStyle.paddingBottom,10)||0),res}function computeInnerRect(el,goWithinPadding=!1,doFromWindowViewport){let outerRect=doFromWindowViewport?el.getBoundingClientRect():computeRect(el),edges=computeEdges(el,goWithinPadding),res={left:outerRect.left+edges.borderLeft+edges.scrollbarLeft,right:outerRect.right-edges.borderRight-edges.scrollbarRight,top:outerRect.top+edges.borderTop,bottom:outerRect.bottom-edges.borderBottom-edges.scrollbarBottom};return goWithinPadding&&(res.left+=edges.paddingLeft,res.right-=edges.paddingRight,res.top+=edges.paddingTop,res.bottom-=edges.paddingBottom),res}function computeRect(el){let rect=el.getBoundingClientRect();return{left:rect.left+window.scrollX,top:rect.top+window.scrollY,right:rect.right+window.scrollX,bottom:rect.bottom+window.scrollY}}function computeClippedClientRect(el){let clippingParents=getClippingParents(el),rect=el.getBoundingClientRect();for(let clippingParent of clippingParents){let intersection=intersectRects(rect,clippingParent.getBoundingClientRect());if(intersection)rect=intersection;else return null}return rect}function getClippingParents(el){let parents=[];for(;el instanceof HTMLElement;){let computedStyle=window.getComputedStyle(el);if(computedStyle.position==="fixed")break;/(auto|scroll)/.test(computedStyle.overflow+computedStyle.overflowY+computedStyle.overflowX)&&parents.push(el),el=el.parentNode}return parents}function computeScrollbarWidthsForEl(el){return{x:el.offsetHeight-el.clientHeight,y:el.offsetWidth-el.clientWidth}}var Slicer=class{constructor(){this.sliceBusinessHours=memoize2(this._sliceBusinessHours),this.sliceDateSelection=memoize2(this._sliceDateSpan),this.sliceEventStore=memoize2(this._sliceEventStore),this.sliceEventDrag=memoize2(this._sliceInteraction),this.sliceEventResize=memoize2(this._sliceInteraction),this.forceDayIfListItem=!1}sliceProps(props,dateProfile,nextDayThreshold,context,...extraArgs){let{eventUiBases}=props,eventSegs=this.sliceEventStore(props.eventStore,eventUiBases,dateProfile,nextDayThreshold,...extraArgs);return{dateSelectionSegs:this.sliceDateSelection(props.dateSelection,dateProfile,nextDayThreshold,eventUiBases,context,...extraArgs),businessHourSegs:this.sliceBusinessHours(props.businessHours,dateProfile,nextDayThreshold,context,...extraArgs),fgEventSegs:eventSegs.fg,bgEventSegs:eventSegs.bg,eventDrag:this.sliceEventDrag(props.eventDrag,eventUiBases,dateProfile,nextDayThreshold,...extraArgs),eventResize:this.sliceEventResize(props.eventResize,eventUiBases,dateProfile,nextDayThreshold,...extraArgs),eventSelection:props.eventSelection}}sliceNowDate(date,dateProfile,nextDayThreshold,context,...extraArgs){return this._sliceDateSpan({range:{start:date,end:addMs(date,1)},allDay:!1},dateProfile,nextDayThreshold,{},context,...extraArgs)}_sliceBusinessHours(businessHours,dateProfile,nextDayThreshold,context,...extraArgs){return businessHours?this._sliceEventStore(expandRecurring(businessHours,computeActiveRange(dateProfile,!!nextDayThreshold),context),{},dateProfile,nextDayThreshold,...extraArgs).bg:[]}_sliceEventStore(eventStore,eventUiBases,dateProfile,nextDayThreshold,...extraArgs){if(eventStore){let rangeRes=sliceEventStore(eventStore,eventUiBases,computeActiveRange(dateProfile,!!nextDayThreshold),nextDayThreshold);return{bg:this.sliceEventRanges(rangeRes.bg,extraArgs),fg:this.sliceEventRanges(rangeRes.fg,extraArgs)}}return{bg:[],fg:[]}}_sliceInteraction(interaction,eventUiBases,dateProfile,nextDayThreshold,...extraArgs){if(!interaction)return null;let rangeRes=sliceEventStore(interaction.mutatedEvents,eventUiBases,computeActiveRange(dateProfile,!!nextDayThreshold),nextDayThreshold);return{segs:this.sliceEventRanges(rangeRes.fg,extraArgs),affectedInstances:interaction.affectedEvents.instances,isEvent:interaction.isEvent}}_sliceDateSpan(dateSpan,dateProfile,nextDayThreshold,eventUiBases,context,...extraArgs){if(!dateSpan)return[];let activeRange=computeActiveRange(dateProfile,!!nextDayThreshold),activeDateSpanRange=intersectRanges(dateSpan.range,activeRange);if(activeDateSpanRange){dateSpan={...dateSpan,range:activeDateSpanRange};let eventRange=fabricateEventRange(dateSpan,eventUiBases,context),segs=this.sliceRange(dateSpan.range,...extraArgs);for(let seg of segs)seg.eventRange=eventRange;return segs}return[]}sliceEventRanges(eventRanges,extraArgs){let segs=[];for(let eventRange of eventRanges)segs.push(...this.sliceEventRange(eventRange,extraArgs));return segs}sliceEventRange(eventRange,extraArgs){let dateRange=eventRange.range;this.forceDayIfListItem&&eventRange.ui.display==="list-item"&&(dateRange={start:dateRange.start,end:addDays4(dateRange.start,1)});let segs=this.sliceRange(dateRange,...extraArgs);for(let seg of segs)seg.eventRange=eventRange,seg.isStart=eventRange.isStart&&seg.isStart,seg.isEnd=eventRange.isEnd&&seg.isEnd;return segs}};function computeActiveRange(dateProfile,isComponentAllDay){let range=dateProfile.activeRange;return isComponentAllDay?range:{start:addMs(range.start,dateProfile.slotMinTime.milliseconds),end:addMs(range.end,dateProfile.slotMaxTime.milliseconds-864e5)}}var DayTableSlicer=class extends Slicer{constructor(){super(...arguments),this.forceDayIfListItem=!0}sliceRange(dateRange,dayTableModel){return dayTableModel.sliceRange(dateRange)}},firstSunday=new Date(2592e5);function buildDateRowConfigs(dates,datesRepDistinctDays,dateProfile,todayRange,dayHeaderFormat,context){let rowConfig=buildDateRowConfig(dates,datesRepDistinctDays,dateProfile,todayRange,dayHeaderFormat,context),majorUnit=computeMajorUnit(dateProfile,context.dateEnv);if(datesRepDistinctDays&&majorUnit!=="day")for(let dataConfig of rowConfig.dataConfigs)isMajorUnit(dataConfig.dateMarker,majorUnit,context.dateEnv)&&(dataConfig.renderProps.isMajor=!0);return[rowConfig]}function buildDateRowConfig(dateMarkers,datesRepDistinctDays,dateProfile,todayRange,dayHeaderFormat,context,colSpan,isMajorMod){return{isDateRow:!0,renderConfig:buildDateRenderConfig(dayHeaderFormat,datesRepDistinctDays,context),dataConfigs:buildDateDataConfigs(dateMarkers,datesRepDistinctDays,dateProfile,todayRange,dayHeaderFormat,context,colSpan,void 0,void 0,void 0,void 0,isMajorMod)}}function buildDateRenderConfig(dayHeaderFormat,datesRepDistinctDays,context){let{options}=context;return{generatorName:"dayHeaderContent",customGenerator:options.dayHeaderContent,classNameGenerator:options.dayHeaderClass,innerClassNameGenerator:options.dayHeaderInnerClass,didMount:options.dayHeaderDidMount,willUnmount:options.dayHeaderWillUnmount,align:options.dayHeaderAlign,sticky:options._dayHeaderSticky,dayHeaderFormat,datesRepDistinctDays}}var dowDates=[];for(let dow=0;dow<7;dow++)dowDates.push(addDays4(new Date(2592e5),dow));function buildDateDataConfigs(dateMarkers,datesRepDistinctDays,dateProfile,todayRange,dayHeaderFormat,context,colSpan=1,keyPrefix="",extraRenderProps={},extraAttrs={},className="",isMajorMod){let{dateEnv,viewApi,options}=context;return datesRepDistinctDays?dateMarkers.map((dateMarker,i)=>{let dateMeta=getDateMeta(dateMarker,dateEnv,dateProfile,todayRange),isMajor=isMajorMod!=null&&!(i%isMajorMod),hasNavLink=options.navLinks&&!dateMeta.isDisabled&&dateMarkers.length>1,renderProps={...dateMeta,...extraRenderProps,isMajor,isSticky:!1,inPopover:!1,hasNavLink,view:viewApi},fullDateStr=buildDateStr(context,dateMarker);return{key:keyPrefix+dateMarker.toUTCString(),dateMarker,renderProps,attrs:{"aria-label":fullDateStr,...dateMeta.isToday?{"aria-current":"date"}:{},"data-date":formatDayString(dateMarker),...extraAttrs},innerAttrs:hasNavLink?buildNavLinkAttrs(context,dateMarker,void 0,fullDateStr):{"aria-hidden":!0},colSpan,hasNavLink,className}}):dateMarkers.map((dateMarker,i)=>{let dow=dateMarker.getUTCDay(),normDate=addDays4(firstSunday,dow),dateMeta={date:dateEnv.toDate(dateMarker),dow,isDisabled:!1,isFuture:!1,isPast:!1,isToday:!1,isOther:!1},isMajor=isMajorMod!=null&&!(i%isMajorMod),renderProps={...dateMeta,date:dowDates[dow],isMajor,isSticky:!1,inPopover:!1,hasNavLink:!1,view:viewApi,...extraRenderProps},fullWeekDayStr=joinDateTimeFormatParts(dateEnv.formatToParts(normDate,WEEKDAY_ONLY_FORMAT));return{key:keyPrefix+String(dow),dateMarker,renderProps,attrs:{"aria-label":fullWeekDayStr,...extraAttrs},innerAttrs:{"aria-hidden":!0},colSpan,className}})}var RefMap=class{constructor(masterCallback,ignoreDeletes=!1){this.masterCallback=masterCallback,this.ignoreDeletes=ignoreDeletes,this.rev="",this.current=new Map,this.callbacks=new Map,this.handleValue=(val,key)=>{let{current,callbacks}=this;val===null?this.ignoreDeletes||(current.delete(key),callbacks.delete(key)):current.set(key,val),this.rev=guid(),this.masterCallback&&this.masterCallback(val,key)}}createRef(key){let refCallback=this.callbacks.get(key);return refCallback||(refCallback=val=>{this.handleValue(val,key)},this.callbacks.set(key,refCallback)),refCallback}},Ruler=class extends BaseComponent{constructor(){super(...arguments),this.elRef=(0,import_react7.createRef)()}render(){return(0,import_jsx_runtime6.jsx)("div",{ref:this.elRef})}componentDidMount(){this._isUnmounting=!1;let{props}=this,el=this.elRef.current;this.disconnectWidth=watchWidth(el,width=>{this._isUnmounting||setRef(props.widthRef,width)})}componentWillUnmount(){this._isUnmounting=!0,this.disconnectWidth();let{props}=this;props.widthRef&&setRef(props.widthRef,null)}};function getEventPartKey(seg){return getEventKey(seg)+":"+seg.start+(seg.standinFor?":standin":seg.isSlice?":slice":"")}function splitSegsByRow(segs,rowCount){let byRow=[];for(let row=0;row<rowCount;row++)byRow[row]=[];for(let seg of segs)byRow[seg.row].push(seg);return byRow}function splitInteractionByRow(ui,rowCount){let byRow=[];if(ui){for(let row=0;row<rowCount;row++)byRow[row]={affectedInstances:ui.affectedInstances,isEvent:ui.isEvent,segs:[]};for(let seg of ui.segs)byRow[seg.row].segs.push(seg)}else for(let row=0;row<rowCount;row++)byRow[row]=null;return byRow}function sliceSegForCol(seg,col){return{...seg,start:col,end:col+1,isStart:seg.isStart&&seg.start===col,isEnd:seg.isEnd&&seg.end-1===col,standinFor:seg}}var BgEvent=class extends BaseComponent{constructor(){super(...arguments),this.buildPublicEvent=memoize2((context,eventDef,eventInstance)=>new EventImpl(context,eventDef,eventInstance)),this.handleEl=el=>{this.el=el,el&&setElEventRange(el,this.props.eventRange)}}render(){let{props,context}=this,{eventRange}=props,{options}=context,eventUi=eventRange.ui,eventApi=this.buildPublicEvent(context,eventRange.def,eventRange.instance),subcontentRenderProps={event:eventApi,isNarrow:props.isNarrow||!1,isShort:props.isShort||!1},renderProps={event:eventApi,view:context.viewApi,timeText:"",color:eventUi.color||options.backgroundEventColor,contrastColor:eventUi.contrastColor,isDraggable:!1,isStartResizable:!1,isEndResizable:!1,isMirror:!1,isStart:props.isStart,isEnd:props.isEnd,isFirst:!1,isLast:!1,isPast:props.isPast,isFuture:props.isFuture,isToday:props.isToday,isSelected:!1,isDragging:!1,isResizing:!1,isInteractive:!1,level:0,isNarrow:props.isNarrow||!1,isShort:props.isShort||!1,timeClass:"",titleClass:generateClassName(options.backgroundEventTitleClass,subcontentRenderProps),options:{eventOverlap:!!options.eventOverlap}},outerClassName=joinClassNames(eventUi.className,classNames.fill,classNames.internalEvent,classNames.internalBgEvent,props.isVertical?classNames.flexCol:classNames.flexRow),innerClassName=joinClassNames(generateClassName(options.backgroundEventInnerClass,renderProps),classNames.liquid);return(0,import_jsx_runtime6.jsx)(ContentContainer,{tag:"div",className:outerClassName,style:{"--fc-event-color":renderProps.color,"--fc-event-contrast-color":renderProps.contrastColor},defaultGenerator:renderInnerContent2,elRef:this.handleEl,renderProps,generatorName:"backgroundEventContent",customGenerator:options.backgroundEventContent,classNameGenerator:options.backgroundEventClass,didMount:options.backgroundEventDidMount,willUnmount:options.backgroundEventWillUnmount,children:InnerContent=>(0,import_jsx_runtime6.jsx)(InnerContent,{tag:"div",className:innerClassName})})}componentDidUpdate(prevProps){this.el&&this.props.eventRange!==prevProps.eventRange&&setElEventRange(this.el,this.props.eventRange)}};function renderInnerContent2(props){let{title}=props.event;return title&&(0,import_jsx_runtime6.jsx)("div",{className:props.titleClass,children:props.event.title})}function renderFill(fillType,options){return(0,import_jsx_runtime6.jsx)("div",{className:joinClassNames(fillType==="non-business"?options.nonBusinessHoursClass:fillType==="highlight"?options.highlightClass:void 0,classNames.fill)})}var SPACE_FROM_VIEWPORT=10,ROW_BORDER_WIDTH=1,MorePopover=class extends DateComponent{constructor(){super(...arguments),this.getDateMeta=memoize2(getDateMeta),this.closeRef=(0,import_react7.createRef)(),this.focusStartRef=(0,import_react7.createRef)(),this.focusEndRef=(0,import_react7.createRef)(),this.handleRootEl=rootEl=>{this.rootEl=rootEl,rootEl?this.context.registerInteractiveComponent(this,{el:rootEl,useEventCenter:!1}):this.context.unregisterInteractiveComponent(this)},this.handleDocumentMouseDown=ev=>{let target=getEventTargetViaRoot(ev);this.rootEl.contains(target)||this.handleClose()},this.handleDocumentKeyDown=ev=>{ev.key==="Escape"&&this.handleClose()},this.handleClose=()=>{let{onClose}=this.props;onClose&&onClose()}}render(){let{props,context}=this,{options,dateEnv,viewApi}=context,{startDate,todayRange,dateProfile}=props,dateMeta=this.getDateMeta(startDate,dateEnv,dateProfile,todayRange),textParts=dateEnv.formatToParts(startDate,options.popoverFormat),text=joinDateTimeFormatParts(textParts),dayHeaderRenderProps={...dateMeta,isMajor:!1,isNarrow:!1,isSticky:!1,inPopover:!0,level:0,hasNavLink:!1,text,textParts,get weekdayText(){return findWeekdayText(textParts)},get dayNumberText(){return findDayNumberText(textParts)},view:viewApi},dayCellRenderProps={...dateMeta,isMajor:!1,isNarrow:!1,inPopover:!0,hasNavLink:!1,get weekdayText(){return findWeekdayText(textParts)},get dayNumberText(){return findDayNumberText(textParts)},get monthText(){return findMonthText(textParts)},view:viewApi,text:"",textParts:[],options:{businessHours:!!options.businessHours}},fullDateStr=formatDayString(startDate),{dayHeaderAlign}=options,align=typeof dayHeaderAlign=="function"?dayHeaderAlign({level:0,inPopover:!0,isNarrow:!1}):dayHeaderAlign,isRtl=computeElIsRtl(props.alignEl);return(0,import_react_dom4.createPortal)((0,import_jsx_runtime6.jsxs)("div",{"data-date":fullDateStr,id:props.id,role:"dialog","aria-labelledby":props.titleId,className:joinClassNames(options.popoverClass,classNames.flexCol,classNames.popoverZ,classNames.abs,classNames.borderBoxRoot,classNames.internalPopover),style:{top:0,left:0},dir:isRtl?"rtl":void 0,"data-color-scheme":options.colorScheme||void 0,ref:this.handleRootEl,children:[(0,import_jsx_runtime6.jsx)("div",{tabIndex:0,style:{outline:"none"},ref:this.focusStartRef}),(0,import_jsx_runtime6.jsxs)("div",{className:joinClassNames(generateClassName(options.dayHeaderClass,dayHeaderRenderProps),classNames.flexCol,classNames.borderOnlyB,align==="center"?classNames.alignCenter:align==="end"?classNames.alignEnd:classNames.alignStart),children:[(0,import_jsx_runtime6.jsx)("div",{children:(0,import_jsx_runtime6.jsx)(ContentContainer,{tag:"div",attrs:{id:props.titleId},generatorName:"dayHeaderContent",renderProps:dayHeaderRenderProps,customGenerator:options.dayHeaderContent,defaultGenerator:renderText2,classNameGenerator:options.dayHeaderInnerClass,didMount:options.dayHeaderDidMount,willUnmount:options.dayHeaderWillUnmount})}),(0,import_jsx_runtime6.jsx)(ContentContainer,{tag:"button",attrs:{"aria-label":options.closeHint,...createAriaClickAttrs(this.handleClose)},elRef:this.closeRef,className:joinClassNames(options.popoverCloseClass,classNames.flexRow,classNames.cursorPointer),renderProps:{},customGenerator:options.popoverCloseContent,generatorName:"popoverCloseContent"})]}),(0,import_jsx_runtime6.jsx)("div",{className:joinClassNames(generateClassName(options.dayCellClass,dayCellRenderProps),classNames.flexCol,classNames.borderNone),children:(0,import_jsx_runtime6.jsx)("div",{className:generateClassName(options.dayCellInnerClass,dayCellRenderProps),children:props.children})}),(0,import_jsx_runtime6.jsx)("div",{tabIndex:0,style:{outline:"none"},ref:this.focusEndRef})]}),getAppendableRoot(props.alignEl))}queryHit(isRtl,positionLeft,positionTop,elWidth,elHeight){let{rootEl,props}=this;return positionLeft>=0&&positionLeft<elWidth&&positionTop>=0&&positionTop<elHeight?{dateProfile:props.dateProfile,dateSpan:{allDay:!props.forceTimed,range:{start:props.startDate,end:props.endDate},...props.dateSpanProps},getDayEl:()=>rootEl,rect:{left:0,top:0,right:elWidth,bottom:elHeight},layer:1}:null}componentDidMount(){document.addEventListener("mousedown",this.handleDocumentMouseDown),document.addEventListener("keydown",this.handleDocumentKeyDown),this.focusStartRef.current.addEventListener("focus",this.handleClose),this.focusEndRef.current.addEventListener("focus",this.handleClose),this.closeRef.current.focus({preventScroll:!0}),this.updateSize()}componentWillUnmount(){document.removeEventListener("mousedown",this.handleDocumentMouseDown),document.removeEventListener("keydown",this.handleDocumentKeyDown),this.focusStartRef.current.removeEventListener("focus",this.handleClose),this.focusEndRef.current.removeEventListener("focus",this.handleClose)}updateSize(){let{alignEl,alignParentTop}=this.props,{rootEl:popoverEl}=this,isRtl=computeElIsRtl(alignEl),alignmentRect=computeClippedClientRect(alignEl);if(alignmentRect){let popoverDims=popoverEl.getBoundingClientRect(),popoverVPTop=alignParentTop?alignEl.closest(alignParentTop).getBoundingClientRect().top-ROW_BORDER_WIDTH:alignmentRect.top,popoverVPLeft=isRtl?alignmentRect.right-popoverDims.width:alignmentRect.left;popoverVPTop=Math.max(popoverVPTop,SPACE_FROM_VIEWPORT),popoverVPLeft=Math.min(popoverVPLeft,document.documentElement.clientWidth-SPACE_FROM_VIEWPORT-popoverDims.width),popoverVPLeft=Math.max(popoverVPLeft,SPACE_FROM_VIEWPORT);let{offsetParent}=popoverEl,top,left;if(!offsetParent||offsetParent===document.body)top=popoverVPTop+window.scrollY,left=popoverVPLeft+window.scrollX;else{let offsetParentRect=offsetParent.getBoundingClientRect();top=popoverVPTop-offsetParentRect.top+offsetParent.scrollTop,left=popoverVPLeft-offsetParentRect.left+offsetParent.scrollLeft}applyStyle(popoverEl,{top,left})}}};function renderText2(renderProps){return renderProps.text}function doCoordRangesIntersect(r0,r1){return r0.end>r1.start&&r0.start<r1.end}function intersectCoordRanges(r0,r1){let start=Math.max(r0.start,r1.start),end=Math.min(r0.end,r1.end);if(start<end)return{start,end,isStart:r0.isStart&&start===r0.start,isEnd:r0.isEnd&&end===r0.end}}function joinCoordRanges(r0,r1){return{start:Math.min(r0.start,r1.start),end:Math.max(r0.end,r1.end)}}function getCoordRangeEnd(r2){return r2.end}function computeEarliestStart(segs){return segs.reduce(pickEarliestStart).eventRange.range.start}function computeLatestEnd(segs){return segs.reduce(pickLatestEnd).eventRange.range.end}function pickEarliestStart(r0,r1){return r0.eventRange.range.start<r1.eventRange.range.start?r0:r1}function pickLatestEnd(r0,r1){return r0.eventRange.range.end>r1.eventRange.range.end?r0:r1}var MoreLinkContainer=class extends BaseComponent{constructor(){super(...arguments),this.state={isPopoverOpen:!1},this.handleLinkEl=linkEl=>{this.linkEl=linkEl,this.props.elRef&&setRef(this.props.elRef,linkEl)},this.handleClick=ev=>{let{props,context}=this,{dateEnv,options}=context,{moreLinkClick}=options,date=computeRange(props).start;function buildPublicSeg(seg){let{def,instance,range}=seg.eventRange;return{event:new EventImpl(context,def,instance),start:dateEnv.toDate(range.start),end:dateEnv.toDate(range.end),isStart:seg.isStart,isEnd:seg.isEnd}}typeof moreLinkClick=="function"&&(moreLinkClick=moreLinkClick({date:dateEnv.toDate(date),allDay:!!props.allDayDate,allSegs:props.segs.map(buildPublicSeg),hiddenSegs:props.hiddenSegs.map(buildPublicSeg),jsEvent:ev,view:context.viewApi})),!moreLinkClick||moreLinkClick==="popover"?this.setState({isPopoverOpen:!0}):typeof moreLinkClick=="string"&&context.calendarApi.zoomTo(date,moreLinkClick)},this.handlePopoverClose=()=>{this.linkEl&&this.linkEl.focus(),this.setState({isPopoverOpen:!1})}}render(){let{props,state}=this;return(0,import_jsx_runtime6.jsx)(ViewContextType.Consumer,{children:context=>{let{viewApi,options,calendarApi,baseId}=context,{moreLinkText}=options,moreCnt=props.hiddenSegs.length,range=computeRange(props),popoverId=baseId+"popover-"+range.start.toISOString(),numericText=`+${moreCnt}`,longText=typeof moreLinkText=="function"?moreLinkText.call(calendarApi,moreCnt):`${numericText} ${moreLinkText}`,hint=formatWithOrdinals(options.moreLinkHint,[moreCnt],longText),renderProps={num:moreCnt,numericText,longText,text:props.isMicro||props.display==="column"?numericText:longText,isNarrow:props.isNarrow,view:viewApi};return(0,import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment,{children:[!!moreCnt&&(0,import_jsx_runtime6.jsx)(ContentContainer,{tag:"div",elRef:this.handleLinkEl,className:joinClassNames(generateClassName(props.display==="row"?options.rowMoreLinkClass:options.columnMoreLinkClass,renderProps),props.className,props.display==="row"?classNames.flexRow:classNames.flexCol,classNames.internalMoreLink,classNames.cursorPointer),style:props.style,attrs:{...props.attrs,...createAriaClickAttrs(this.handleClick),title:hint,role:"button","aria-haspopup":"dialog","aria-expanded":state.isPopoverOpen,"aria-controls":state.isPopoverOpen?popoverId:void 0},renderProps,generatorName:"moreLinkContent",customGenerator:options.moreLinkContent,defaultGenerator:renderMoreLinkText,classNameGenerator:options.moreLinkClass,didMount:options.moreLinkDidMount,willUnmount:options.moreLinkWillUnmount,children:InnerContent=>(0,import_jsx_runtime6.jsx)(InnerContent,{tag:"div",className:joinClassNames(generateClassName(options.moreLinkInnerClass,renderProps),generateClassName(props.display==="row"?options.rowMoreLinkInnerClass:options.columnMoreLinkInnerClass,renderProps),props.display==="row"?classNames.stickyS:classNames.stickyT)})}),state.isPopoverOpen&&(0,import_jsx_runtime6.jsx)(MorePopover,{id:popoverId,titleId:popoverId+"-title",startDate:range.start,endDate:range.end,dateProfile:props.dateProfile,todayRange:props.todayRange,dateSpanProps:props.dateSpanProps,alignEl:props.alignElRef?props.alignElRef.current:this.linkEl,alignParentTop:props.alignParentTop,forceTimed:props.forceTimed,onClose:this.handlePopoverClose,children:props.popoverContent()})]})}})}};function renderMoreLinkText(props){return props.text}function computeRange(props){return props.allDayDate?{start:props.allDayDate,end:addDays4(props.allDayDate,1)}:{start:computeEarliestStart(props.hiddenSegs),end:computeLatestEnd(props.hiddenSegs)}}var DEFAULT_TABLE_EVENT_TIME_FORMAT=createFormatter({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"narrow"});function hasListItemDisplay(seg){let{display}=seg.eventRange.ui;return display==="list-item"||display==="auto"&&!seg.eventRange.def.allDay&&seg.end-seg.start===1&&seg.isStart&&seg.isEnd}var DayGridMoreLink=class extends BaseComponent{render(){let{props}=this;return(0,import_jsx_runtime6.jsx)(MoreLinkContainer,{display:"row",className:props.className,isNarrow:props.isNarrow,isMicro:props.isMicro,dateProfile:props.dateProfile,todayRange:props.todayRange,allDayDate:props.allDayDate,segs:props.segs,hiddenSegs:props.hiddenSegs,alignElRef:props.alignElRef,alignParentTop:props.alignParentTop,dateSpanProps:props.dateSpanProps,popoverContent:()=>(0,import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment,{children:props.segs.map(seg=>{let{eventRange}=seg,{instanceId}=eventRange.instance,isDragging=!!(props.eventDrag&&props.eventDrag.affectedInstances[instanceId]),isResizing=!!(props.eventResize&&props.eventResize.affectedInstances[instanceId]);return(0,import_jsx_runtime6.jsx)("div",{style:{visibility:isDragging||isResizing?"hidden":void 0},children:(0,import_jsx_runtime6.jsx)(StandardEvent,{display:hasListItemDisplay(seg)?"list-item":"row",eventRange,isStart:seg.isStart,isEnd:seg.isEnd,isDragging,isResizing,isMirror:!1,isSelected:instanceId===props.eventSelection,defaultTimeFormat:DEFAULT_TABLE_EVENT_TIME_FORMAT,defaultDisplayEventEnd:!1,...getEventRangeMeta(eventRange,props.todayRange)})},instanceId)})})})}},DayGridCell=class extends DateComponent{constructor(){super(...arguments),this.getDateMeta=memoize2(getDateMeta),this.refineRenderProps=memoizeObjArg(refineRenderProps2),this.rootElRef=(0,import_react7.createRef)(),this.handleBodyEl=bodyEl=>{this.disconnectBodyHeight&&(this.disconnectBodyHeight(),this.disconnectBodyHeight=void 0,setRef(this.props.headerHeightRef,null),setRef(this.props.mainHeightRef,null)),bodyEl&&(this.disconnectBodyHeight=watchSize(bodyEl,(_bodyWidth,bodyHeight)=>{if(this._isUnmounting)return;let{props}=this,mainRect=bodyEl.getBoundingClientRect(),rootRect=this.rootElRef.current.getBoundingClientRect(),headerHeight=mainRect.top-rootRect.top;isDimsEqual(this.headerHeight,headerHeight)||(this.headerHeight=headerHeight,setRef(props.headerHeightRef,headerHeight)),props.fgLiquidHeight&&setRef(props.mainHeightRef,bodyHeight)}))}}render(){let{props,context}=this,{options,dateEnv}=context,isMonthStart=props.showDayNumber&&shouldDisplayMonthStart(props.date,props.dateProfile.currentRange,dateEnv),dateMeta=this.getDateMeta(props.date,dateEnv,props.dateProfile,props.todayRange),baseClassName=joinClassNames(props.borderStart?classNames.borderOnlyS:classNames.borderNone,props.width!=null?"":classNames.liquid,classNames.flexCol,classNames.noMargin,classNames.noPadding),hasNavLink=options.navLinks,renderProps=this.refineRenderProps({date:props.date,isMajor:props.isMajor,isNarrow:props.isNarrow,dateMeta,hasLabel:props.showDayNumber,hasMonthLabel:isMonthStart,hasNavLink,renderProps:props.renderProps,viewApi:context.viewApi,dateEnv:context.dateEnv,monthStartFormat:options.monthStartFormat,dayCellFormat:options.dayCellFormat,businessHours:!!options.businessHours});if(dateMeta.isDisabled)return(0,import_jsx_runtime6.jsx)("div",{role:"gridcell","aria-disabled":!0,className:joinClassNames(generateClassName(options.dayCellClass,renderProps),props.className,baseClassName),style:{width:props.width}});let fullDateStr=buildDateStr(context,props.date);return(0,import_jsx_runtime6.jsx)(ContentContainer,{tag:"div",elRef:this.rootElRef,className:joinClassNames(props.className,baseClassName),attrs:{...props.attrs,role:"gridcell","aria-label":fullDateStr,...renderProps.isToday?{"aria-current":"date"}:{},"data-date":formatDayString(props.date)},style:{width:props.width},renderProps,generatorName:"dayCellTopContent",customGenerator:options.dayCellTopContent,defaultGenerator:renderTopInner,classNameGenerator:options.dayCellClass,didMount:options.dayCellDidMount,willUnmount:options.dayCellWillUnmount,children:InnerContent=>(0,import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment,{children:[(0,import_jsx_runtime6.jsx)("div",{className:joinClassNames(classNames.rel,generateClassName(options.dayCellTopClass,renderProps)),children:props.showDayNumber&&(0,import_jsx_runtime6.jsx)(InnerContent,{tag:"div",attrs:hasNavLink?buildNavLinkAttrs(context,props.date,void 0,fullDateStr):{"aria-hidden":!0},className:generateClassName(options.dayCellTopInnerClass,renderProps)})}),(0,import_jsx_runtime6.jsxs)("div",{className:joinClassNames(classNames.flexCol,props.fgLiquidHeight?classNames.liquid:classNames.grow),ref:this.handleBodyEl,children:[(0,import_jsx_runtime6.jsx)("div",{className:generateClassName(options.dayCellInnerClass,renderProps),style:{minHeight:props.fgHeight},children:props.fg}),(0,import_jsx_runtime6.jsx)(DayGridMoreLink,{className:classNames.rel,allDayDate:props.date,segs:props.segs,hiddenSegs:props.hiddenSegs,alignElRef:this.rootElRef,alignParentTop:props.showDayNumber?"[role=row]":`.${classNames.internalView}`,dateSpanProps:props.dateSpanProps,dateProfile:props.dateProfile,eventSelection:props.eventSelection,eventDrag:props.eventDrag,eventResize:props.eventResize,todayRange:props.todayRange,isNarrow:props.isNarrow,isMicro:props.isMicro})]}),(0,import_jsx_runtime6.jsx)("div",{className:joinClassNames(classNames.rel,generateClassName(options.dayCellBottomClass,renderProps))})]})})}componentDidMount(){this._isUnmounting=!1}componentWillUnmount(){this._isUnmounting=!0}};function renderTopInner(props){return props.text||(0,import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment,{children:"\xA0"})}function shouldDisplayMonthStart(date,currentRange,dateEnv){let{start:currentStart,end:currentEnd}=currentRange,currentEndIncl=addMs(currentEnd,-1),currentFirstYear=dateEnv.getYear(currentStart),currentFirstMonth=dateEnv.getMonth(currentStart),currentLastYear=dateEnv.getYear(currentEndIncl),currentLastMonth=dateEnv.getMonth(currentEndIncl);return!(currentFirstYear===currentLastYear&¤tFirstMonth===currentLastMonth)&&(date.valueOf()===currentStart.valueOf()||dateEnv.getDay(date)===1&&date.valueOf()<currentEnd.valueOf())}function refineRenderProps2(raw){let{date,dateEnv,hasLabel,hasMonthLabel,hasNavLink,businessHours}=raw,textParts=[],text="";return hasLabel&&(textParts=dateEnv.formatToParts(date,hasMonthLabel?raw.monthStartFormat:raw.dayCellFormat),text=joinDateTimeFormatParts(textParts)),{...raw.dateMeta,...raw.renderProps,text,textParts,isMajor:raw.isMajor,isNarrow:raw.isNarrow,inPopover:!1,hasNavLink,get weekdayText(){return findWeekdayText(textParts)},get dayNumberText(){return findDayNumberText(textParts)},get monthText(){return findMonthText(textParts)},options:{businessHours},view:raw.viewApi}}var SegHierarchy=class{constructor(segs,getSegThickness=seg=>1,strictOrder=!1,maxCoord,maxDepth,hiddenConsumes=!1,allowSlicing=!1){this.getSegThickness=getSegThickness,this.strictOrder=strictOrder,this.maxCoord=maxCoord,this.maxDepth=maxDepth,this.hiddenConsumes=hiddenConsumes,this.allowSlicing=allowSlicing,this.placementsByLevel=[],this.levelCoords=[],this.hiddenSegs=[];for(let seg of segs)this.insertSeg(seg,this.getSegThickness(seg))}insertSeg(seg,segThickness,isSlice){if(segThickness!=null){let insertion=this.findInsertion(seg,segThickness);if(this.isInsertionValid(insertion,segThickness))this.insertSegAt(seg,insertion,segThickness,isSlice);else{let{touchingPlacement}=insertion;if(touchingPlacement){if(this.hiddenConsumes&&!touchingPlacement.isZombie&&(touchingPlacement.isZombie=!0,this.hiddenSegs.push(touchingPlacement),this.allowSlicing)){let newSeg=Object.assign({},touchingPlacement);Object.assign(touchingPlacement,intersectCoordRanges(touchingPlacement,seg)),touchingPlacement.isSlice=!0,this.splitSeg(newSeg,touchingPlacement.thickness,touchingPlacement)}this.allowSlicing?(this.hiddenSegs.push({...seg,...intersectCoordRanges(seg,touchingPlacement)}),this.splitSeg(seg,segThickness,touchingPlacement)):this.hiddenSegs.push(seg)}else this.hiddenSegs.push(seg)}}}isInsertionValid(insertion,thickness){return(this.maxCoord==null||insertion.levelCoord+thickness<=this.maxCoord)&&(this.maxDepth==null||insertion.depth<this.maxDepth)}splitSeg(seg,segThickness,barrier){seg.start<barrier.start&&this.insertSeg({...seg,end:barrier.start,isEnd:!1},segThickness,!0),seg.end>barrier.end&&this.insertSeg({...seg,start:barrier.end,isStart:!1},segThickness,!0)}insertSegAt(seg,insertion,segThickness,isSlice){let placement={...seg,thickness:segThickness,depth:insertion.depth,isSlice:isSlice||seg.isSlice||!1,isZombie:!1};insertion.lateralIndex===-1?(insertAt(this.placementsByLevel,insertion.levelIndex,[placement]),insertAt(this.levelCoords,insertion.levelIndex,insertion.levelCoord)):insertAt(this.placementsByLevel[insertion.levelIndex],insertion.lateralIndex,placement)}findInsertion(seg,segThickness){let{placementsByLevel,levelCoords}=this,levelCnt=placementsByLevel.length,candidateCoord=0,touchingPlacement,touchingLevelIndex,depth=0;for(let currentLevelIndex=0;currentLevelIndex<levelCnt;currentLevelIndex+=1){let currentLevelCoord=levelCoords[currentLevelIndex];if(!this.strictOrder&¤tLevelCoord>=candidateCoord+segThickness)break;let currentLevelSegs=placementsByLevel[currentLevelIndex],currentSeg,[searchIndex,isExact]=binarySearch(currentLevelSegs,seg.start,getCoordRangeEnd),lateralIndex=searchIndex+isExact;for(;(currentSeg=currentLevelSegs[lateralIndex])&¤tSeg.start<seg.end;){let currentEntryBottom=currentLevelCoord+currentSeg.thickness;currentEntryBottom>candidateCoord&&(candidateCoord=currentEntryBottom,touchingPlacement=currentSeg,touchingLevelIndex=currentLevelIndex),currentEntryBottom===candidateCoord&&(depth=Math.max(depth,currentSeg.depth+1)),lateralIndex+=1}}let destLevelIndex=0;if(touchingPlacement)for(destLevelIndex=touchingLevelIndex+1;destLevelIndex<levelCnt&&levelCoords[destLevelIndex]<candidateCoord;)destLevelIndex+=1;let destLateralIndex=-1;return destLevelIndex<levelCnt&&levelCoords[destLevelIndex]===candidateCoord&&([destLateralIndex]=binarySearch(placementsByLevel[destLevelIndex],seg.end,getCoordRangeEnd)),{touchingPlacement,levelCoord:candidateCoord,levelIndex:destLevelIndex,lateralIndex:destLateralIndex,depth}}traverseSegs(handler){let{placementsByLevel,levelCoords}=this;for(let i=0;i<placementsByLevel.length;i++){let placements=placementsByLevel[i],levelCoord=levelCoords[i];for(let placement of placements)placement.isZombie||handler(placement,levelCoord)}}};function groupIntersectingSegs(segs){let mergedGroups=[];for(let seg of segs){let filteredGroups=[],hungryGroup={segs:[seg],start:seg.start,end:seg.end};for(let mergedGroup of mergedGroups)doCoordRangesIntersect(mergedGroup,hungryGroup)?hungryGroup={...joinCoordRanges(mergedGroup,hungryGroup),segs:mergedGroup.segs.concat(hungryGroup.segs)}:filteredGroups.push(mergedGroup);filteredGroups.push(hungryGroup),mergedGroups=filteredGroups}return mergedGroups.map(mergedGroup=>({key:buildIsoString(computeEarliestStart(mergedGroup.segs)),...mergedGroup}))}function insertAt(arr,index2,item){arr.splice(index2,0,item)}function binarySearch(a,searchVal,getItemVal){let startIndex=0,endIndex=a.length;if(!endIndex||searchVal<getItemVal(a[startIndex]))return[0,0];if(searchVal>getItemVal(a[endIndex-1]))return[endIndex,0];for(;startIndex<endIndex;){let middleIndex=Math.floor(startIndex+(endIndex-startIndex)/2),middleVal=getItemVal(a[middleIndex]);if(searchVal<middleVal)endIndex=middleIndex;else if(searchVal>middleVal)startIndex=middleIndex+1;else return[middleIndex,1]}return[startIndex,0]}function computeFgSegVerticals(segs,segHeightMap,cells,maxHeight,strictOrder,allowSlicing=!0,dayMaxEvents,dayMaxEventRows){let maxCoord,maxDepth,hiddenConsumes;dayMaxEvents===!0||dayMaxEventRows===!0?(maxCoord=maxHeight,hiddenConsumes=!0):typeof dayMaxEvents=="number"?(maxDepth=dayMaxEvents,hiddenConsumes=!1):typeof dayMaxEventRows=="number"&&(maxDepth=dayMaxEventRows,hiddenConsumes=!0);let visibleSegMap=new Map,hiddenSegMap=new Map,segTops=new Map,isSlicedMap=new Map,hierarchy=new SegHierarchy(segs,seg=>segHeightMap.get(getEventPartKey(seg)),strictOrder,maxCoord,maxDepth,hiddenConsumes,allowSlicing);hierarchy.traverseSegs((seg,segTop)=>{addToSegMap(visibleSegMap,seg),segTops.set(getEventPartKey(seg),segTop),seg.isSlice&&isSlicedMap.set(seg.eventRange,!0)});for(let hiddenSeg of hierarchy.hiddenSegs)addToSegMap(hiddenSegMap,hiddenSeg);if(isSlicedMap.size){segTops.clear(),hierarchy=new SegHierarchy(compileSegMap(segs,visibleSegMap),seg=>segHeightMap.get(getEventPartKey(seg)),strictOrder,maxCoord,maxDepth,hiddenConsumes),hierarchy.traverseSegs((seg,segTop)=>{segTops.set(getEventPartKey(seg),segTop)});for(let hiddenSeg of hierarchy.hiddenSegs)addToSegMap(hiddenSegMap,hiddenSeg)}let segsByCol=[],hiddenSegsByCol=[],renderableSegsByCol=[],heightsByCol=[];for(let col=0;col<cells.length;col++)segsByCol.push([]),hiddenSegsByCol.push([]),renderableSegsByCol.push([]),heightsByCol.push(0);for(let seg of segs){let{eventRange}=seg,visibleSegs=visibleSegMap.get(eventRange)||[],hiddenSegs=hiddenSegMap.get(eventRange)||[],isSliced=isSlicedMap.get(eventRange)||!1;if(renderableSegsByCol[seg.start].push(seg),isSliced)for(let visibleSeg of visibleSegs)renderableSegsByCol[visibleSeg.start].push(visibleSeg);for(let visibleSeg of visibleSegs){for(let col=visibleSeg.start;col<visibleSeg.end;col++){let slice=sliceSegForCol(visibleSeg,col);segsByCol[col].push(slice)}let segKey=getEventPartKey(visibleSeg),segTop=segTops.get(segKey);if(segTop!=null){let segHeight=segHeightMap.get(segKey);for(let col=visibleSeg.start;col<visibleSeg.end;col++)heightsByCol[col]=Math.max(heightsByCol[col],segTop+segHeight)}}for(let hiddenSeg of hiddenSegs)for(let col=hiddenSeg.start;col<hiddenSeg.end;col++){let slice=sliceSegForCol(hiddenSeg,col);segsByCol[col].push(slice),hiddenSegsByCol[col].push(slice)}}return[segsByCol,hiddenSegsByCol,renderableSegsByCol,segTops,heightsByCol]}function addToSegMap(map,seg){let list=map.get(seg.eventRange);list||map.set(seg.eventRange,list=[]),list.push(seg)}function compileSegMap(segs,segMap){let res=[];for(let seg of segs)res.push(...segMap.get(seg.eventRange)||[]);return res}var DaySeriesModel=class{constructor(range,dateProfileGenerator){let date=range.start,{end}=range,indices=[],dates=[],dayIndex=-1;for(;date<end;)dateProfileGenerator.isHiddenDay(date)?indices.push(dayIndex+.5):(dayIndex+=1,indices.push(dayIndex),dates.push(date)),date=addDays4(date,1);this.dates=dates,this.indices=indices,this.cnt=dates.length}sliceRange(range){let firstIndex=this.getDateDayIndex(range.start),lastIndex=this.getDateDayIndex(addDays4(range.end,-1)),clippedFirstIndex=Math.max(0,firstIndex),clippedLastIndex=Math.min(this.cnt-1,lastIndex);return clippedFirstIndex=Math.ceil(clippedFirstIndex),clippedLastIndex=Math.floor(clippedLastIndex),clippedFirstIndex<=clippedLastIndex?{start:clippedFirstIndex,end:clippedLastIndex+1,isStart:firstIndex===clippedFirstIndex,isEnd:lastIndex===clippedLastIndex}:null}getDateDayIndex(date){let{indices}=this,dayOffset=Math.floor(diffDays4(this.dates[0],date));return dayOffset<0?indices[0]-1:dayOffset>=indices.length?indices[indices.length-1]+1:indices[dayOffset]}},DayTableModel=class{constructor(daySeries,breakOnWeeks,dateEnv,majorUnit=""){this.dateEnv=dateEnv,this.majorUnit=majorUnit;let{dates}=daySeries,daysPerRow,firstDay,rowCount;if(breakOnWeeks){for(firstDay=dates[0].getUTCDay(),daysPerRow=1;daysPerRow<dates.length&&dates[daysPerRow].getUTCDay()!==firstDay;daysPerRow+=1);rowCount=Math.ceil(dates.length/daysPerRow)}else rowCount=1,daysPerRow=dates.length;this.rowCount=rowCount,this.colCount=daysPerRow,this.daySeries=daySeries,this.cellRows=this.buildCells(),this.headerDates=this.buildHeaderDates()}buildCells(){let rows=[];for(let row=0;row<this.rowCount;row+=1){let cells=[];for(let col=0;col<this.colCount;col+=1)cells.push(this.buildCell(row,col));rows.push(cells)}return rows}buildCell(row,col){let date=this.daySeries.dates[row*this.colCount+col];return{key:date.toISOString(),date,isMajor:this.cellIsMajor(date)}}cellIsMajor(dateMarker){return this.majorUnit?isMajorUnit(dateMarker,this.majorUnit,this.dateEnv):!1}buildHeaderDates(){let dates=[];for(let col=0;col<this.colCount;col+=1)dates.push(this.cellRows[0][col].date);return dates}sliceRange(range){let{colCount}=this,seriesSeg=this.daySeries.sliceRange(range),segs=[];if(seriesSeg){let{start,end}=seriesSeg,index2=start;for(;index2<end;){let row=Math.floor(index2/colCount),nextIndex=Math.min((row+1)*colCount,end);segs.push({row,start:index2%colCount,end:(nextIndex-1)%colCount+1,isStart:seriesSeg.isStart&&index2===start,isEnd:seriesSeg.isEnd&&nextIndex===end}),index2=nextIndex}}return segs}};function buildDayTableModel(dateProfile,dateProfileGenerator,dateEnv){let daySeries=new DaySeriesModel(dateProfile.renderRange,dateProfileGenerator),breakOnWeeks=/year|month|week/.test(dateProfile.currentRangeUnit),majorUnit=!breakOnWeeks&&computeMajorUnit(dateProfile,dateEnv);return new DayTableModel(daySeries,breakOnWeeks,dateEnv,majorUnit!=="day"?majorUnit:void 0)}function computeColWidth(colCount,colMinWidth,viewportWidth){return viewportWidth==null?[void 0,void 0]:viewportWidth/colCount<colMinWidth?[colMinWidth*colCount,colMinWidth]:[viewportWidth,void 0]}function computeTopFromDate(date,cellRows,rowHeightMap){let top=0;for(let cells of cellRows){let key=cells[0].key,start=cells[0].date,end=cells[cells.length-1].date;if(date>=start&&date<=end)return top;let rowHeight=rowHeightMap.get(key);if(rowHeight==null)return;top+=rowHeight}return top}function computeHorizontalsFromSeg(seg,colWidth,colCount){let fromStart,fromEnd;if(colWidth!=null)fromStart=seg.start*colWidth,fromEnd=(colCount-seg.end)*colWidth;else{let colWidthFrac=1/colCount;fromStart=fracToCssDim(seg.start*colWidthFrac),fromEnd=fracToCssDim(1-seg.end*colWidthFrac)}return{insetInlineStart:fromStart,insetInlineEnd:fromEnd}}function computeColFromPosition(positionLeft,elWidth,colWidth,colCount,isRtl){let realColWidth=colWidth??elWidth/colCount,colFromLeft=Math.floor(positionLeft/realColWidth),col=isRtl?colCount-colFromLeft-1:colFromLeft,left=colFromLeft*realColWidth,right=left+realColWidth;return{col,left,right}}function computeRowFromPosition(positionTop,cellRows,rowHeightMap){let row=0,top=0,bottom=0;for(let cells of cellRows){let key=cells[0].key;if(top=bottom,bottom=top+rowHeightMap.get(key),positionTop<bottom)break;row++}return{row,top,bottom}}function getRowEl(rootEl,row){return rootEl.querySelectorAll("[role=row]")[row]}function getCellEl(rowEl,col){return rowEl.querySelectorAll("[role=gridcell]")[col]}var dayMicroWidth=60,dayHeaderMicroFormat=createFormatter({weekday:"narrow"});function createDayHeaderFormatter(explicitFormat,datesRepDistinctDays,dateCnt){return explicitFormat||computeFallbackHeaderFormat(datesRepDistinctDays,dateCnt)}function computeFallbackHeaderFormat(datesRepDistinctDays,dayCnt){return datesRepDistinctDays?dayCnt>1?createFormatter({weekday:"short",weekdayJustify:"start",day:"numeric",omitCommas:!0,omitTrailing:!0}):createFormatter({weekday:"long",weekdayJustify:"start",day:"numeric",omitCommas:!0,omitTrailing:!0}):createFormatter({weekday:"short"})}var DayGridEventHarness=class extends import_react7.Component{constructor(){super(...arguments),this.rootElRef=(0,import_react7.createRef)()}render(){let{props}=this;return(0,import_jsx_runtime6.jsx)("div",{className:joinClassNames(props.className,classNames.abs),style:props.style,ref:this.rootElRef,children:props.children})}componentDidMount(){this._isUnmounting=!1;let rootEl=this.rootElRef.current;this.disconnectHeight=watchHeight(rootEl,height=>{this._isUnmounting||setRef(this.props.heightRef,height)})}componentWillUnmount(){this._isUnmounting=!0,this.disconnectHeight(),setRef(this.props.heightRef,null)}},DEFAULT_WEEK_NUM_FORMAT=createFormatter({week:"narrow"}),DayGridRow=class extends BaseComponent{constructor(){super(...arguments),this.headerHeightRefMap=new RefMap(()=>{afterSize(this.handleSegPositioning)}),this.mainHeightRefMap=new RefMap(()=>{(this.props.dayMaxEvents===!0||this.props.dayMaxEventRows===!0)&&afterSize(this.handleSegPositioning)}),this.segHeightRefMap=new RefMap(()=>{afterSize(this.handleSegPositioning)}),this.buildWeekNumberRenderProps=memoize2(buildWeekNumberRenderProps),this.handleRootEl=rootEl=>{this.rootEl=rootEl,setRef(this.props.rootElRef,rootEl)},this.handleSegPositioning=()=>{this._isUnmounting||this.forceUpdate()}}render(){let{props,context,headerHeightRefMap,mainHeightRefMap}=this,{cells}=props,{options}=context,weekDateMarker=props.cells[0].date,fgLiquidHeight=props.dayMaxEvents===!0||props.dayMaxEventRows===!0,fgEventSegs=sortEventSegs(props.fgEventSegs,options.eventOrder),[maxMainTop,minMainHeight]=this.computeFgDims(),[segsByCol,hiddenSegsByCol,renderableSegsByCol,segTops,simpleHeightsByCol]=computeFgSegVerticals(fgEventSegs,this.segHeightRefMap.current,cells,fgLiquidHeight?minMainHeight:void 0,options.eventOrderStrict,options.eventSlicing,props.dayMaxEvents,props.dayMaxEventRows),heightsByCol=[];if(maxMainTop!=null){let col=0;for(let cell of cells){let cellHeaderHeight=headerHeightRefMap.current.get(cell.key);if(cellHeaderHeight!=null){let extraFgHeight=maxMainTop-cellHeaderHeight;heightsByCol.push(simpleHeightsByCol[col]+extraFgHeight)}else heightsByCol.push(void 0);col++}}let highlightSegs=this.getHighlightSegs(),mirrorSegs=this.getMirrorSegs(),hasNavLink=options.navLinks,fullWeekStr=buildDateStr(context,weekDateMarker,"week"),weekNumberRenderProps=this.buildWeekNumberRenderProps(weekDateMarker,context,props.cellIsNarrow,hasNavLink);return(0,import_jsx_runtime6.jsxs)("div",{role:props.role,"aria-label":props.role==="row"?fullWeekStr:void 0,className:joinClassNames(options.dayRowClass,props.className,classNames.flexRow,classNames.rel,classNames.isolate,props.forPrint&&props.basis!==void 0&&classNames.printSiblingRow),style:{flexBasis:props.basis},ref:this.handleRootEl,children:[props.showWeekNumbers&&!props.cellIsMicro&&(0,import_jsx_runtime6.jsx)(ContentContainer,{tag:"div",attrs:{...hasNavLink?buildNavLinkAttrs(context,weekDateMarker,"week",fullWeekStr,!1):{},role:void 0,"aria-hidden":!0},className:classNames.z1,renderProps:weekNumberRenderProps,generatorName:"inlineWeekNumberContent",customGenerator:options.inlineWeekNumberContent,defaultGenerator:renderText,classNameGenerator:options.inlineWeekNumberClass,didMount:options.inlineWeekNumberDidMount,willUnmount:options.inlineWeekNumberWillUnmount}),this.renderFillSegs(props.businessHourSegs,"non-business"),this.renderFillSegs(props.bgEventSegs,"bg-event"),this.renderFillSegs(highlightSegs,"highlight"),props.cells.map((cell,col)=>{let normalFgNodes=this.renderFgSegs(maxMainTop,renderableSegsByCol[col],segTops,props.todayRange,!1);return(0,import_jsx_runtime6.jsx)(DayGridCell,{dateProfile:props.dateProfile,todayRange:props.todayRange,date:cell.date,isMajor:cell.isMajor,showDayNumber:props.showDayNumbers,isNarrow:props.cellIsNarrow,isMicro:props.cellIsMicro,borderStart:!!col,segs:segsByCol[col],hiddenSegs:hiddenSegsByCol[col],fgLiquidHeight,fg:(0,import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment,{children:normalFgNodes}),eventDrag:props.eventDrag,eventResize:props.eventResize,eventSelection:props.eventSelection,renderProps:cell.renderProps,dateSpanProps:cell.dateSpanProps,attrs:cell.attrs,className:cell.className,fgHeight:heightsByCol[col],width:props.colWidth,headerHeightRef:headerHeightRefMap.createRef(cell.key),mainHeightRef:mainHeightRefMap.createRef(cell.key)},cell.key)}),this.renderFgSegs(maxMainTop,mirrorSegs,segTops,props.todayRange,!0)]})}renderFgSegs(headerHeight,segs,segTops,todayRange,isMirror){let{props,segHeightRefMap}=this,{colWidth,eventSelection,cellIsMicro}=props,colCount=props.cells.length,defaultDisplayEventEnd=props.cells.length===1,nodes=[];for(let seg of segs){let key=getEventPartKey(seg),{standinFor,eventRange}=seg,{instanceId}=eventRange.instance;if(standinFor)continue;let{insetInlineStart,insetInlineEnd}=computeHorizontalsFromSeg(seg,colWidth,colCount),localTop=segTops.get(standinFor?getEventPartKey(standinFor):key)??(isMirror?0:void 0),top=headerHeight!=null&&localTop!=null?headerHeight+localTop:void 0,isDragging=!!(props.eventDrag&&props.eventDrag.affectedInstances[instanceId]),isResizing=!!(props.eventResize&&props.eventResize.affectedInstances[instanceId]),isInvisible=!isMirror&&(isDragging||isResizing||standinFor||top==null),isListItem=hasListItemDisplay(seg),isSelected=instanceId===eventSelection;nodes.push((0,import_jsx_runtime6.jsx)(DayGridEventHarness,{className:seg.start?classNames.fakeBorderS:"",style:{visibility:isInvisible?"hidden":void 0,top,insetInlineStart,insetInlineEnd,zIndex:isSelected?1e3:0},heightRef:!standinFor&&!isMirror?segHeightRefMap.createRef(key):null,children:(0,import_jsx_runtime6.jsx)(StandardEvent,{display:isListItem?"list-item":"row",eventRange,isStart:seg.isStart,isEnd:seg.isEnd,isDragging,isResizing,isMirror,isSelected,isNarrow:props.cellIsNarrow,defaultTimeFormat:DEFAULT_TABLE_EVENT_TIME_FORMAT,defaultDisplayEventEnd,disableResizing:isListItem,forcedTimeText:cellIsMicro?"":void 0,...getEventRangeMeta(eventRange,todayRange)})},key))}return nodes}renderFillSegs(segs,fillType){let{props,context}=this,{todayRange,colWidth}=props,colCount=props.cells.length,nodes=[];for(let seg of segs){let key=seg.start+":"+seg.end,{insetInlineStart,insetInlineEnd}=computeHorizontalsFromSeg(seg,colWidth,colCount),isVisible=!seg.standinFor;nodes.push((0,import_jsx_runtime6.jsx)("div",{className:classNames.fillY,style:{visibility:isVisible?"":"hidden",insetInlineStart,insetInlineEnd},children:fillType==="bg-event"?(0,import_jsx_runtime6.jsx)(BgEvent,{eventRange:seg.eventRange,isStart:seg.isStart,isEnd:seg.isEnd,isNarrow:props.cellIsNarrow,isVertical:!1,...getEventRangeMeta(seg.eventRange,todayRange)}):renderFill(fillType,context.options)},key))}return(0,import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment,{children:nodes})}componentDidMount(){this._isUnmounting=!1;let{rootEl}=this;this.disconnectHeight=watchHeight(rootEl,contentHeight=>{setRef(this.props.heightRef,contentHeight)})}componentWillUnmount(){this._isUnmounting=!0,this.disconnectHeight(),setRef(this.props.heightRef,null)}computeFgDims(){let{cells}=this.props,headerHeightMap=this.headerHeightRefMap.current,mainHeightMap=this.mainHeightRefMap.current,maxMainTop,minMainBottom;for(let cell of cells){let mainTop=headerHeightMap.get(cell.key),mainHeight=mainHeightMap.get(cell.key);if(mainTop!=null&&((maxMainTop===void 0||mainTop>maxMainTop)&&(maxMainTop=mainTop),mainHeight!=null)){let mainBottom=mainTop+mainHeight;(minMainBottom===void 0||mainBottom<minMainBottom)&&(minMainBottom=mainBottom)}}return[maxMainTop,minMainBottom!=null&&maxMainTop!=null?minMainBottom-maxMainTop:void 0]}getMirrorSegs(){let{props}=this;return props.eventResize&&props.eventResize.segs.length?props.eventResize.segs:[]}getHighlightSegs(){let{props}=this;return props.eventDrag&&props.eventDrag.segs.length?props.eventDrag.segs:props.eventResize&&props.eventResize.segs.length?props.eventResize.segs:props.dateSelectionSegs}};function buildWeekNumberRenderProps(weekDateMarker,context,isNarrow,hasNavLink){let{dateEnv,options}=context,weekNum=dateEnv.computeWeekNumber(weekDateMarker),weekNumTextParts=dateEnv.formatToParts(weekDateMarker,options.weekNumberFormat||DEFAULT_WEEK_NUM_FORMAT),weekNumText=joinDateTimeFormatParts(weekNumTextParts),weekDateZoned=dateEnv.toDate(weekDateMarker);return{num:weekNum,text:weekNumText,textParts:weekNumTextParts,date:weekDateZoned,isNarrow,hasNavLink}}var DayGridRows=class extends DateComponent{constructor(){super(...arguments),this.splitBusinessHourSegs=memoize2(splitSegsByRow),this.splitBgEventSegs=memoize2(splitAllDaySegsByRow),this.splitFgEventSegs=memoize2(splitSegsByRow),this.splitDateSelectionSegs=memoize2(splitSegsByRow),this.splitEventDrag=memoize2(splitInteractionByRow),this.splitEventResize=memoize2(splitInteractionByRow),this.rowHeightRefMap=new RefMap((height,key)=>{let{rowHeightRefMap}=this.props;rowHeightRefMap&&rowHeightRefMap.handleValue(height,key)}),this.handleRootEl=rootEl=>{this.rootEl=rootEl,rootEl?this.context.registerInteractiveComponent(this,{el:rootEl,isHitComboAllowed:this.props.isHitComboAllowed}):this.context.unregisterInteractiveComponent(this)}}render(){let{props,context,rowHeightRefMap}=this,{options}=context,{cellRows}=props,rowCount=cellRows.length,firstCellKey=cellRows[0]?.[0]?.key||"",fgEventSegsByRow=this.splitFgEventSegs(props.fgEventSegs,rowCount),bgEventSegsByRow=this.splitBgEventSegs(props.bgEventSegs,rowCount),businessHourSegsByRow=this.splitBusinessHourSegs(props.businessHourSegs,rowCount),dateSelectionSegsByRow=this.splitDateSelectionSegs(props.dateSelectionSegs,rowCount),eventDragByRow=this.splitEventDrag(props.eventDrag,rowCount),eventResizeByRow=this.splitEventResize(props.eventResize,rowCount),isHeightAuto=getIsHeightAuto(options),rowHeightsRedistribute=!props.forPrint&&!isHeightAuto,rowBasis=computeRowBasis(props.visibleWidth,rowCount,isHeightAuto,options);return(0,import_jsx_runtime6.jsx)("div",{role:"rowgroup",className:joinClassNames(props.className,!props.forPrint&&classNames.flexCol),style:{width:props.width},ref:this.handleRootEl,children:cellRows.map((cells,row)=>(0,import_jsx_runtime6.jsx)(DayGridRow,{role:"row",dateProfile:props.dateProfile,todayRange:props.todayRange,cells,cellIsNarrow:props.cellIsNarrow,cellIsMicro:props.cellIsMicro,showDayNumbers:rowCount>1,showWeekNumbers:rowCount>1&&options.weekNumbers,forPrint:props.forPrint,className:joinClassNames(rowHeightsRedistribute&&classNames.grow,rowCount>1&&classNames.breakInsideAvoid,row<rowCount-1?classNames.borderOnlyB:classNames.borderNone),fgEventSegs:fgEventSegsByRow[row],bgEventSegs:bgEventSegsByRow[row],businessHourSegs:businessHourSegsByRow[row],dateSelectionSegs:dateSelectionSegsByRow[row],eventSelection:props.eventSelection,eventDrag:eventDragByRow[row],eventResize:eventResizeByRow[row],dayMaxEvents:props.dayMaxEvents,dayMaxEventRows:props.dayMaxEventRows,colWidth:props.colWidth,basis:rowBasis,heightRef:rowHeightRefMap.createRef(cells[0].key)},firstCellKey+":"+cells[0].key))})}queryHit(isRtl,positionLeft,positionTop,elWidth){let{props}=this,colCount=props.cellRows[0].length,{col,left,right}=computeColFromPosition(positionLeft,elWidth,props.colWidth,colCount,isRtl),{row,top,bottom}=computeRowFromPosition(positionTop,props.cellRows,this.rowHeightRefMap.current),cell=props.cellRows[row][col],cellStartDate=cell.date,cellEndDate=addDays4(cellStartDate,1);return{dateProfile:props.dateProfile,dateSpan:{range:{start:cellStartDate,end:cellEndDate},allDay:!0,...cell.dateSpanProps},getDayEl:()=>getCellEl(getRowEl(this.rootEl,row),col),rect:{left,right,top,bottom},layer:0}}};function isSegAllDay(seg){return seg.eventRange.def.allDay}function splitAllDaySegsByRow(segs,rowCnt){return splitSegsByRow(segs.filter(isSegAllDay),rowCnt)}function computeRowBasis(visibleWidth,rowCount,isHeightAuto,options){if(visibleWidth!=null){let rowBasis=visibleWidth/options.aspectRatio/6;return rowCount>6||isHeightAuto?rowBasis:0}return 0}var DayGridHeaderCell=class extends BaseComponent{constructor(){super(...arguments),this.state={},this.buildDayHeaderText=memoize2(buildDayHeaderText),this.handleInnerEl=innerEl=>{this.disconnectSize&&(this.disconnectSize(),this.disconnectSize=void 0),innerEl?this.disconnectSize=watchSize(innerEl,(width,height)=>{this._isUnmounting||(setRef(this.props.innerHeightRef,height),this.setState({innerWidth:width}))}):setRef(this.props.innerHeightRef,null)}}render(){let{props,state,context}=this,{renderConfig,dataConfig}=props,totalColWidth=props.colWidth!=null?props.colWidth*(dataConfig.colSpan||1):void 0,isDisabled=dataConfig.renderProps.isDisabled,finalRenderProps=renderConfig.dayHeaderFormat?this.buildDayHeaderRenderProps(dataConfig.renderProps,props.cellIsNarrow,props.rowLevel,props.cellIsMicro,dataConfig.dateMarker,renderConfig.dayHeaderFormat,!!renderConfig.datesRepDistinctDays,context.dateEnv):{...dataConfig.renderProps,isNarrow:props.cellIsNarrow,level:props.rowLevel},alignInput=renderConfig.align,align=typeof alignInput=="function"?alignInput({level:props.rowLevel,inPopover:dataConfig.renderProps.inPopover,isNarrow:props.cellIsNarrow}):alignInput,stickyInput=renderConfig.sticky,isSticky=props.rowLevel>0&&stickyInput!==!1&&(align!=="center"||totalColWidth!=null&&props.viewportWidth!=null&&totalColWidth>props.viewportWidth*.75),edgeCoord;return isSticky&&(align==="center"?state.innerWidth!=null&&(edgeCoord=`calc(50% - ${state.innerWidth/2}px)`):edgeCoord=typeof stickyInput=="number"||typeof stickyInput=="string"?stickyInput:0),(0,import_jsx_runtime6.jsx)(ContentContainer,{tag:"div",attrs:{role:"columnheader","aria-colspan":dataConfig.colSpan,...dataConfig.attrs},className:joinClassNames(dataConfig.className,classNames.noMargin,classNames.noPadding,classNames.flexCol,props.borderStart?classNames.borderOnlyS:classNames.borderNone,align==="center"?classNames.alignCenter:align==="end"?classNames.alignEnd:classNames.alignStart,props.colWidth==null&&classNames.liquid,!isSticky&&classNames.crop),style:{width:totalColWidth},renderProps:finalRenderProps,generatorName:renderConfig.generatorName,customGenerator:renderConfig.customGenerator,defaultGenerator:renderText,classNameGenerator:isDisabled?void 0:renderConfig.classNameGenerator,didMount:renderConfig.didMount,willUnmount:renderConfig.willUnmount,children:InnerContainer=>(0,import_jsx_runtime6.jsx)("div",{ref:this.handleInnerEl,className:joinClassNames(classNames.flexCol,classNames.noShrink,classNames.whiteSpaceNoWrap,isSticky&&classNames.sticky),style:{left:edgeCoord,right:edgeCoord},children:(0,import_jsx_runtime6.jsx)(InnerContainer,{tag:"div",attrs:dataConfig.innerAttrs,className:generateClassName(renderConfig.innerClassNameGenerator,finalRenderProps)})})})}componentDidMount(){this._isUnmounting=!1}componentWillUnmount(){this._isUnmounting=!0}buildDayHeaderRenderProps(renderProps,cellIsNarrow,rowLevel,cellIsMicro,dateMarker,dayHeaderFormat,datesRepDistinctDays,dateEnv){let baseText=this.buildDayHeaderText(datesRepDistinctDays?dateMarker:renderProps.date,dayHeaderFormat,datesRepDistinctDays,dateEnv),textData=cellIsMicro?this.buildDayHeaderText(dateMarker,dayHeaderMicroFormat,!1,dateEnv):baseText;return{...renderProps,isNarrow:cellIsNarrow,level:rowLevel,text:textData.text,textParts:textData.textParts,weekdayText:cellIsMicro?textData.text:baseText.weekdayText,dayNumberText:baseText.dayNumberText}}};function buildDayHeaderText(date,formatter,includeDayNumber,dateEnv){let textParts=dateEnv.formatToParts(date,formatter);return{text:joinDateTimeFormatParts(textParts),textParts,weekdayText:findWeekdayText(textParts),dayNumberText:includeDayNumber?findDayNumberText(textParts):""}}var DayGridHeaderRow=class extends BaseComponent{constructor(){super(...arguments),this.innerHeightRefMap=new RefMap(()=>{afterSize(this.handleInnerHeights)}),this.handleInnerHeights=()=>{if(this._isUnmounting)return;let innerHeightMap=this.innerHeightRefMap.current,max=0;for(let innerHeight of innerHeightMap.values())max=Math.max(max,innerHeight);this.currentInnerHeight!==max&&(this.currentInnerHeight=max,setRef(this.props.innerHeightRef,max))}}render(){let{props,context}=this,{options}=context;return(0,import_jsx_runtime6.jsx)("div",{role:props.role,"aria-rowindex":props.rowIndex!=null?1+props.rowIndex:void 0,className:joinClassNames(options.dayHeaderRowClass,props.className,classNames.flexRow,classNames.contentBox,props.borderBottom?classNames.borderOnlyB:classNames.borderNone),style:{height:props.height},children:props.dataConfigs.map((dataConfig,cellI)=>(0,import_jsx_runtime6.jsx)(DayGridHeaderCell,{renderConfig:props.renderConfig,dataConfig,borderStart:!!cellI,colWidth:props.colWidth,viewportWidth:props.viewportWidth,innerHeightRef:this.innerHeightRefMap.createRef(dataConfig.key),cellIsNarrow:props.cellIsNarrow,cellIsMicro:props.cellIsMicro,rowLevel:props.rowLevel},dataConfig.key))})}componentDidMount(){this._isUnmounting=!1}componentWillUnmount(){this._isUnmounting=!0,this.currentInnerHeight=void 0,setRef(this.props.innerHeightRef,null)}};var import_jsx_runtime7=require("react/jsx-runtime");var import_react8=require("react");var DayGridHeader=class extends BaseComponent{render(){let{props}=this,{headerTiers}=props;return(0,import_jsx_runtime7.jsx)("div",{role:"rowgroup",className:joinClassNames(props.className,classNames.flexCol,props.width==null&&classNames.liquid),style:{width:props.width},children:headerTiers.map((rowConfig,i)=>(0,import_react8.createElement)(DayGridHeaderRow,{...rowConfig,key:i,role:"row",borderBottom:i<headerTiers.length-1,colWidth:props.colWidth,viewportWidth:props.viewportWidth,cellIsNarrow:props.cellIsNarrow,cellIsMicro:props.cellIsMicro,rowLevel:headerTiers.length-i-1}))})}},DayGridLayoutNormal=class extends BaseComponent{constructor(){super(...arguments),this.state={},this.handleScroller=scroller=>{setRef(this.props.scrollerRef,scroller)},this.handleTotalWidth=totalWidth=>{this._isUnmounting||this.setState({totalWidth})},this.handleClientWidth=clientWidth=>{this._isUnmounting||this.setState({clientWidth})}}render(){let{props,state,context}=this,{options}=context,{borderlessX,borderlessTop,borderlessBottom}=computeViewBorderless(options),{totalWidth,clientWidth}=state,endScrollbarWidth=totalWidth!=null&&clientWidth!=null?totalWidth-clientWidth:void 0;endScrollbarWidth<3&&(endScrollbarWidth=0);let verticalScrollbars=!props.forPrint&&!getIsHeightAuto(options),tableHeaderSticky=!props.forPrint&&getTableHeaderSticky(options),colCount=props.cellRows[0].length,cellWidth=clientWidth!=null?clientWidth/colCount:void 0,cellIsMicro=cellWidth!=null&&cellWidth<=dayMicroWidth,cellIsNarrow=cellIsMicro||cellWidth!=null&&cellWidth<=options.dayNarrowWidth;return(0,import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment,{children:[options.dayHeaders&&(0,import_jsx_runtime7.jsxs)("div",{className:joinClassNames(generateClassName(options.tableHeaderClass,{isSticky:tableHeaderSticky,borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),classNames.printHeader,tableHeaderSticky&&classNames.tableHeaderSticky),children:[(0,import_jsx_runtime7.jsxs)("div",{className:classNames.flexRow,children:[(0,import_jsx_runtime7.jsx)(DayGridHeader,{headerTiers:props.headerTiers,cellIsNarrow,cellIsMicro}),!!endScrollbarWidth&&(0,import_jsx_runtime7.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!0}),classNames.borderOnlyS),style:{minWidth:endScrollbarWidth}})]}),(0,import_jsx_runtime7.jsx)("div",{className:generateClassName(options.dayHeaderDividerClass,{isSticky:tableHeaderSticky,multiMonthColumns:0,options:{allDaySlot:!!options.allDaySlot}})})]}),(0,import_jsx_runtime7.jsx)(Scroller,{vertical:verticalScrollbars,className:joinClassNames(generateClassName(options.tableBodyClass,{borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),!props.forPrint&&classNames.flexCol,verticalScrollbars&&classNames.liquid),ref:this.handleScroller,clientWidthRef:this.handleClientWidth,children:(0,import_jsx_runtime7.jsx)(DayGridRows,{dateProfile:props.dateProfile,todayRange:props.todayRange,cellRows:props.cellRows,forPrint:props.forPrint,isHitComboAllowed:props.isHitComboAllowed,className:classNames.grow,dayMaxEvents:props.forPrint?void 0:options.dayMaxEvents,dayMaxEventRows:options.dayMaxEventRows,fgEventSegs:props.fgEventSegs,bgEventSegs:props.bgEventSegs,businessHourSegs:props.businessHourSegs,dateSelectionSegs:props.dateSelectionSegs,eventDrag:props.eventDrag,eventResize:props.eventResize,eventSelection:props.eventSelection,visibleWidth:totalWidth,cellIsNarrow,cellIsMicro,rowHeightRefMap:props.rowHeightRefMap})}),(0,import_jsx_runtime7.jsx)(Ruler,{widthRef:this.handleTotalWidth})]})}componentDidMount(){this._isUnmounting=!1}componentWillUnmount(){this._isUnmounting=!0}},FooterScrollbar=class extends BaseComponent{constructor(){super(...arguments),this.rootElRef=(0,import_react8.createRef)()}render(){let{props}=this;return(0,import_jsx_runtime7.jsx)("div",{ref:this.rootElRef,className:joinClassNames(classNames.footerScrollbar,props.isSticky&&classNames.footerScrollbarSticky),children:(0,import_jsx_runtime7.jsx)(Scroller,{horizontal:!0,ref:props.scrollerRef,children:(0,import_jsx_runtime7.jsx)("div",{style:{minWidth:props.canvasWidth}})})})}componentDidMount(){this._isUnmounting=!1,this.disconnectHeight=watchHeight(this.rootElRef.current,height=>{this._isUnmounting||setRef(this.props.scrollbarWidthRef,height)})}componentWillUnmount(){this._isUnmounting=!0,this.disconnectHeight(),setRef(this.props.scrollbarWidthRef,null)}},DayGridLayoutPannable=class extends BaseComponent{constructor(){super(...arguments),this.state={},this.headerScrollerRef=(0,import_react8.createRef)(),this.bodyScrollerRef=(0,import_react8.createRef)(),this.footerScrollerRef=(0,import_react8.createRef)(),this.handleTotalWidth=totalWidth=>{this._isUnmounting||this.setState({totalWidth})},this.handleClientWidth=clientWidth=>{this._isUnmounting||this.setState({clientWidth})}}render(){let{props,state,context}=this,{options}=context,{borderlessX,borderlessTop,borderlessBottom}=computeViewBorderless(options),{totalWidth,clientWidth}=state,endScrollbarWidth=totalWidth!=null&&clientWidth!=null?totalWidth-clientWidth:void 0,verticalScrollbars=!props.forPrint&&!getIsHeightAuto(options),tableHeaderSticky=!props.forPrint&&getTableHeaderSticky(options),footerScrollbarSticky=!props.forPrint&&getFooterScrollbarSticky(options),colCount=props.cellRows[0].length,[canvasWidth,colWidth]=computeColWidth(colCount,props.dayMinWidth,clientWidth),cellIsMicro=colWidth!=null&&colWidth<=dayMicroWidth,cellIsNarrow=cellIsMicro||colWidth!=null&&colWidth<=options.dayNarrowWidth;return(0,import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment,{children:[options.dayHeaders&&(0,import_jsx_runtime7.jsxs)("div",{className:joinClassNames(generateClassName(options.tableHeaderClass,{isSticky:tableHeaderSticky,borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),classNames.printHeader,tableHeaderSticky&&classNames.tableHeaderSticky),children:[(0,import_jsx_runtime7.jsxs)(Scroller,{horizontal:!0,hideScrollbars:!0,className:classNames.flexRow,ref:this.headerScrollerRef,children:[(0,import_jsx_runtime7.jsx)(DayGridHeader,{headerTiers:props.headerTiers,colWidth,viewportWidth:clientWidth,width:canvasWidth,cellIsNarrow,cellIsMicro}),!!endScrollbarWidth&&(0,import_jsx_runtime7.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!0}),classNames.borderOnlyS),style:{minWidth:endScrollbarWidth}})]}),(0,import_jsx_runtime7.jsx)("div",{className:generateClassName(options.dayHeaderDividerClass,{isSticky:tableHeaderSticky,multiMonthColumns:0,options:{allDaySlot:!!options.allDaySlot}})})]}),(0,import_jsx_runtime7.jsx)(Scroller,{vertical:verticalScrollbars,horizontal:!0,hideScrollbars:footerScrollbarSticky||props.forPrint,className:joinClassNames(generateClassName(options.tableBodyClass,{borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),!props.forPrint&&classNames.flexCol,verticalScrollbars&&classNames.liquid),ref:this.bodyScrollerRef,clientWidthRef:this.handleClientWidth,children:(0,import_jsx_runtime7.jsx)(DayGridRows,{dateProfile:props.dateProfile,todayRange:props.todayRange,cellRows:props.cellRows,forPrint:props.forPrint,isHitComboAllowed:props.isHitComboAllowed,className:classNames.grow,dayMaxEvents:props.forPrint?void 0:options.dayMaxEvents,dayMaxEventRows:options.dayMaxEventRows,fgEventSegs:props.fgEventSegs,bgEventSegs:props.bgEventSegs,businessHourSegs:props.businessHourSegs,dateSelectionSegs:props.dateSelectionSegs,eventDrag:props.eventDrag,eventResize:props.eventResize,eventSelection:props.eventSelection,colWidth,width:canvasWidth,visibleWidth:totalWidth,cellIsNarrow,cellIsMicro,rowHeightRefMap:props.rowHeightRefMap})}),!!footerScrollbarSticky&&(0,import_jsx_runtime7.jsx)(FooterScrollbar,{isSticky:!0,canvasWidth,scrollerRef:this.footerScrollerRef}),(0,import_jsx_runtime7.jsx)(Ruler,{widthRef:this.handleTotalWidth})]})}componentDidMount(){this._isUnmounting=!1;let ScrollerSyncer=getScrollerSyncerClass(this.context.pluginHooks);this.syncedScroller=new ScrollerSyncer(!0),setRef(this.props.scrollerRef,this.syncedScroller),this.updateSyncedScroller()}componentDidUpdate(){this.updateSyncedScroller()}componentWillUnmount(){this._isUnmounting=!0,this.syncedScroller.destroy()}updateSyncedScroller(){this.syncedScroller.handleChildren([this.headerScrollerRef.current,this.bodyScrollerRef.current,this.footerScrollerRef.current])}},DayGridLayout=class extends BaseComponent{constructor(){super(...arguments),this.scrollerRef=(0,import_react8.createRef)(),this.rowHeightRefMap=new RefMap(()=>{afterSize(this.updateScrollY)}),this.scrollDate=null,this.updateScrollY=()=>{if(this._isUnmounting)return;let rowHeightMap=this.rowHeightRefMap.current,scroller=this.scrollerRef.current;if(scroller&&this.scrollDate){let scrollTop=computeTopFromDate(this.scrollDate,this.props.cellRows,rowHeightMap);scrollTop!=null&&(scrollTop&&scrollTop++,scroller.scrollTo({y:scrollTop}))}},this.handleScrollEnd=isDevice=>{isDevice&&(this.scrollDate=null)}}render(){let{props,context}=this,{options}=context,{borderlessX,borderlessTop,borderlessBottom}=computeViewBorderless(options),businessHourSegs=props.forPrint?[]:props.businessHourSegs,dateSelectionSegs=props.forPrint?[]:props.dateSelectionSegs,eventDrag=props.forPrint?null:props.eventDrag,eventResize=props.forPrint?null:props.eventResize,commonLayoutProps={...props,businessHourSegs,dateSelectionSegs,eventDrag,eventResize,scrollerRef:this.scrollerRef,rowHeightRefMap:this.rowHeightRefMap};return(0,import_jsx_runtime7.jsx)(ViewContainer,{viewSpec:context.viewSpec,attrs:{role:"grid","aria-rowcount":props.headerTiers.length+props.cellRows.length,"aria-colcount":props.cellRows[0].length,"aria-labelledby":props.labelId,"aria-label":props.labelStr},className:joinClassNames(props.className,classNames.printRoot,generateClassName(options.tableClass,{borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0})),children:options.dayMinWidth?(0,import_jsx_runtime7.jsx)(DayGridLayoutPannable,{...commonLayoutProps,dayMinWidth:options.dayMinWidth}):(0,import_jsx_runtime7.jsx)(DayGridLayoutNormal,{...commonLayoutProps})})}componentDidMount(){this._isUnmounting=!1,this.resetScroll(),this.scrollerRef.current.addScrollEndListener(this.handleScrollEnd)}componentDidUpdate(prevProps){prevProps.dateProfile!==this.props.dateProfile&&this.context.options.scrollTimeReset&&this.resetScroll()}componentWillUnmount(){this._isUnmounting=!0,this.scrollerRef.current.removeScrollEndListener(this.handleScrollEnd)}resetScroll(){this.scrollDate=this.props.dateProfile.currentDate,this.updateScrollY(),this.scrollerRef.current.scrollTo({x:0})}};var TableDateProfileGenerator=class extends DateProfileGenerator{buildRenderRange(currentRange,currentRangeUnit,isRangeAllDay){let renderRange=super.buildRenderRange(currentRange,currentRangeUnit,isRangeAllDay),{props}=this;return buildDayTableRenderRange({currentRange:renderRange,snapToWeek:/^(year|month)$/.test(currentRangeUnit),fixedWeekCount:props.fixedWeekCount,dateEnv:props.dateEnv})}};function buildDayTableRenderRange(props){let{dateEnv,currentRange}=props,{start,end}=currentRange,endOfWeek4;if(props.snapToWeek&&(start=dateEnv.startOfWeek(start),endOfWeek4=dateEnv.startOfWeek(end),endOfWeek4.valueOf()!==end.valueOf()&&(end=addWeeks3(endOfWeek4,1))),props.fixedWeekCount){let lastMonthRenderStart=dateEnv.startOfWeek(dateEnv.startOfMonth(addDays4(currentRange.end,-1))),rowCount=Math.ceil(diffWeeks4(lastMonthRenderStart,end));end=addWeeks3(end,6-rowCount)}return{start,end}}var DayGridView=class extends BaseComponent{constructor(){super(...arguments),this.buildDayTableModel=memoize2(buildDayTableModel),this.buildDateRowConfigs=memoize2(buildDateRowConfigs),this.createDayHeaderFormatter=memoize2(createDayHeaderFormatter),this.slicer=new DayTableSlicer}render(){let{props,context}=this,{dateProfile}=props,{options,dateEnv}=context,dayTableModel=this.buildDayTableModel(dateProfile,context.dateProfileGenerator,dateEnv),datesRepDistinctDays=dayTableModel.rowCount===1,dayHeaderFormat=this.createDayHeaderFormatter(context.options.dayHeaderFormat,datesRepDistinctDays,dayTableModel.colCount),slicedProps=this.slicer.sliceProps(props,dateProfile,options.nextDayThreshold,context,dayTableModel);return(0,import_jsx_runtime8.jsx)(NowTimer,{unit:"day",children:(nowDate,todayRange)=>{let headerTiers=this.buildDateRowConfigs(dayTableModel.headerDates,datesRepDistinctDays,dateProfile,todayRange,dayHeaderFormat,context);return(0,import_jsx_runtime8.jsx)(DayGridLayout,{labelId:props.labelId,labelStr:props.labelStr,dateProfile,todayRange,cellRows:dayTableModel.cellRows,forPrint:props.forPrint,className:props.className,headerTiers,fgEventSegs:slicedProps.fgEventSegs,bgEventSegs:slicedProps.bgEventSegs,businessHourSegs:slicedProps.businessHourSegs,dateSelectionSegs:slicedProps.dateSelectionSegs,eventDrag:slicedProps.eventDrag,eventResize:slicedProps.eventResize,eventSelection:slicedProps.eventSelection})}})}},dayGridPlugin={name:"daygrid",initialView:"dayGridMonth",views:{dayGrid:{component:DayGridView,dateProfileGeneratorClass:TableDateProfileGenerator},dayGridDay:{type:"dayGrid",duration:{days:1}},dayGridWeek:{type:"dayGrid",duration:{weeks:1}},dayGridMonth:{type:"dayGrid",duration:{months:1},fixedWeekCount:!0},dayGridYear:{type:"dayGrid",duration:{years:1}}}};var ElementDragging=class{constructor(el,selector){this.emitter=new Emitter}destroy(){}setMirrorIsVisible(bool){}setMirrorNeedsRevert(bool){}setAutoScrollEnabled(bool){}},config={};function isInteractionValid(interaction,dateProfile,context){let{instances}=interaction.mutatedEvents;for(let instanceId in instances)if(!rangeContainsRange(dateProfile.validRange,instances[instanceId].range))return!1;return isNewPropsValid({eventDrag:interaction},context)}function isDateSelectionValid(dateSelection,dateProfile,context){return rangeContainsRange(dateProfile.validRange,dateSelection.range)?isNewPropsValid({dateSelection},context):!1}function isNewPropsValid(newProps,context){let calendarState=context.getCurrentData(),props={businessHours:calendarState.businessHours,dateSelection:"",eventStore:calendarState.eventStore,eventUiBases:calendarState.eventUiBases,eventSelection:"",eventDrag:null,eventResize:null,...newProps};return(context.pluginHooks.isPropsValid||isPropsValid)(props,context)}function isPropsValid(state,context,dateSpanMeta={},filterConfig){return!(state.eventDrag&&!isInteractionPropsValid(state,context,dateSpanMeta,filterConfig)||state.dateSelection&&!isDateSelectionPropsValid(state,context,dateSpanMeta,filterConfig))}function isInteractionPropsValid(state,context,dateSpanMeta,filterConfig){let currentState=context.getCurrentData(),interaction=state.eventDrag,subjectEventStore=interaction.mutatedEvents,subjectDefs=subjectEventStore.defs,subjectInstances=subjectEventStore.instances,subjectConfigs=compileEventUis(subjectDefs,interaction.isEvent?state.eventUiBases:{"":currentState.selectionConfig});filterConfig&&(subjectConfigs=mapHash(subjectConfigs,filterConfig));let otherEventStore=excludeInstances(state.eventStore,interaction.affectedEvents.instances),otherDefs=otherEventStore.defs,otherInstances=otherEventStore.instances,otherConfigs=compileEventUis(otherDefs,state.eventUiBases);for(let subjectInstanceId in subjectInstances){let subjectInstance=subjectInstances[subjectInstanceId],subjectRange=subjectInstance.range,subjectConfig=subjectConfigs[subjectInstance.defId],subjectDef=subjectDefs[subjectInstance.defId];if(!allConstraintsPass(subjectConfig.constraints,subjectRange,otherEventStore,state.businessHours,context))return!1;let{eventOverlap}=context.options,eventOverlapFunc=typeof eventOverlap=="function"?eventOverlap:null;for(let otherInstanceId in otherInstances){let otherInstance=otherInstances[otherInstanceId];if(rangesIntersect(subjectRange,otherInstance.range)&&(otherConfigs[otherInstance.defId].overlap===!1&&interaction.isEvent||subjectConfig.overlap===!1||eventOverlapFunc&&!eventOverlapFunc(new EventImpl(context,otherDefs[otherInstance.defId],otherInstance),new EventImpl(context,subjectDef,subjectInstance))))return!1}let calendarEventStore=currentState.eventStore;for(let subjectAllow of subjectConfig.allows){let subjectDateSpan={...dateSpanMeta,range:subjectInstance.range,allDay:subjectDef.allDay},origDef=calendarEventStore.defs[subjectDef.defId],origInstance=calendarEventStore.instances[subjectInstanceId],eventApi;if(origDef?eventApi=new EventImpl(context,origDef,origInstance):eventApi=new EventImpl(context,subjectDef),!subjectAllow(buildDateSpanApiWithContext(subjectDateSpan,context),eventApi))return!1}}return!0}function isDateSelectionPropsValid(state,context,dateSpanMeta,filterConfig){let relevantEventStore=state.eventStore,relevantDefs=relevantEventStore.defs,relevantInstances=relevantEventStore.instances,selection=state.dateSelection,selectionRange=selection.range,{selectionConfig}=context.getCurrentData();if(filterConfig&&(selectionConfig=filterConfig(selectionConfig)),!allConstraintsPass(selectionConfig.constraints,selectionRange,relevantEventStore,state.businessHours,context))return!1;let{selectOverlap}=context.options,selectOverlapFunc=typeof selectOverlap=="function"?selectOverlap:null;for(let relevantInstanceId in relevantInstances){let relevantInstance=relevantInstances[relevantInstanceId];if(rangesIntersect(selectionRange,relevantInstance.range)&&(selectionConfig.overlap===!1||selectOverlapFunc&&!selectOverlapFunc(new EventImpl(context,relevantDefs[relevantInstance.defId],relevantInstance),null)))return!1}for(let selectionAllow of selectionConfig.allows){let fullDateSpan={...dateSpanMeta,...selection};if(!selectionAllow(buildDateSpanApiWithContext(fullDateSpan,context),null))return!1}return!0}function allConstraintsPass(constraints,subjectRange,otherEventStore,businessHoursUnexpanded,context){for(let constraint of constraints)if(!anyRangesContainRange(constraintToRanges(constraint,subjectRange,otherEventStore,businessHoursUnexpanded,context),subjectRange))return!1;return!0}function constraintToRanges(constraint,subjectRange,otherEventStore,businessHoursUnexpanded,context){return constraint==="businessHours"?eventStoreToRanges(expandRecurring(businessHoursUnexpanded,subjectRange,context)):typeof constraint=="string"?eventStoreToRanges(filterEventStoreDefs(otherEventStore,eventDef=>eventDef.groupId===constraint)):typeof constraint=="object"&&constraint?eventStoreToRanges(expandRecurring(constraint,subjectRange,context)):[]}function eventStoreToRanges(eventStore){let{instances}=eventStore,ranges=[];for(let instanceId in instances)ranges.push(instances[instanceId].range);return ranges}function anyRangesContainRange(outerRanges,innerRange){for(let outerRange of outerRanges)if(rangeContainsRange(outerRange,innerRange))return!0;return!1}config.touchMouseIgnoreWait=500;var ignoreMouseDepth=0,listenerCnt=0,isWindowTouchMoveCancelled=!1,PointerDragging=class{constructor(containerEl){this.subjectEl=null,this.selector="",this.handleSelector="",this.shouldIgnoreMove=!1,this.shouldWatchScroll=!0,this.isDragging=!1,this.isTouchDragging=!1,this.wasTouchScroll=!1,this.handleMouseDown=ev=>{if(!this.shouldIgnoreMouse()&&isPrimaryMouseButton(ev)&&this.tryStart(ev)){let pev=this.createEventFromMouse(ev,!0);this.emitter.trigger("pointerdown",pev),this.initScrollWatch(pev),this.shouldIgnoreMove||document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp)}},this.handleMouseMove=ev=>{let pev=this.createEventFromMouse(ev);this.recordCoords(pev),this.emitter.trigger("pointermove",pev)},this.handleMouseUp=ev=>{document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp),this.emitter.trigger("pointerup",this.createEventFromMouse(ev)),this.cleanup()},this.handleTouchStart=ev=>{if(this.tryStart(ev)){this.isTouchDragging=!0;let pev=this.createEventFromTouch(ev,!0);this.emitter.trigger("pointerdown",pev),this.initScrollWatch(pev);let targetEl=ev.target;this.shouldIgnoreMove||targetEl.addEventListener("touchmove",this.handleTouchMove),targetEl.addEventListener("touchend",this.handleTouchEnd),targetEl.addEventListener("touchcancel",this.handleTouchEnd),window.addEventListener("scroll",this.handleTouchScroll,!0)}},this.handleTouchMove=ev=>{if(this.isDragging){let pev=this.createEventFromTouch(ev);this.recordCoords(pev),this.emitter.trigger("pointermove",pev)}},this.handleTouchEnd=ev=>{if(this.isDragging){let targetEl=ev.target;targetEl.removeEventListener("touchmove",this.handleTouchMove),targetEl.removeEventListener("touchend",this.handleTouchEnd),targetEl.removeEventListener("touchcancel",this.handleTouchEnd),window.removeEventListener("scroll",this.handleTouchScroll,!0),this.emitter.trigger("pointerup",this.createEventFromTouch(ev)),this.cleanup(),this.isTouchDragging=!1,startIgnoringMouse()}},this.handleTouchScroll=()=>{this.wasTouchScroll=!0},this.handleScroll=ev=>{if(!this.shouldIgnoreMove){let pageX=window.scrollX-this.prevScrollX+this.prevPageX,pageY=window.scrollY-this.prevScrollY+this.prevPageY;this.emitter.trigger("pointermove",{origEvent:ev,isTouch:this.isTouchDragging,subjectEl:this.subjectEl,pageX,pageY,deltaX:pageX-this.origPageX,deltaY:pageY-this.origPageY})}},this.containerEl=containerEl,this.emitter=new Emitter,containerEl.addEventListener("mousedown",this.handleMouseDown),containerEl.addEventListener("touchstart",this.handleTouchStart,{passive:!0}),listenerCreated()}destroy(){this.containerEl.removeEventListener("mousedown",this.handleMouseDown),this.containerEl.removeEventListener("touchstart",this.handleTouchStart,{passive:!0}),listenerDestroyed()}cancel(){this.isDragging&&this.cleanup()}tryStart(ev){let subjectEl=this.querySubjectEl(ev),downEl=ev.target;return subjectEl&&(!this.handleSelector||downEl.closest(this.handleSelector))?(this.subjectEl=subjectEl,this.isDragging=!0,this.wasTouchScroll=!1,!0):!1}cleanup(){isWindowTouchMoveCancelled=!1,this.isDragging=!1,this.subjectEl=null,this.destroyScrollWatch()}querySubjectEl(ev){return this.selector?ev.target.closest(this.selector):this.containerEl}shouldIgnoreMouse(){return ignoreMouseDepth||this.isTouchDragging}cancelTouchScroll(){this.isDragging&&(isWindowTouchMoveCancelled=!0)}initScrollWatch(ev){this.shouldWatchScroll&&(this.recordCoords(ev),window.addEventListener("scroll",this.handleScroll,!0))}recordCoords(ev){this.shouldWatchScroll&&(this.prevPageX=ev.pageX,this.prevPageY=ev.pageY,this.prevScrollX=window.scrollX,this.prevScrollY=window.scrollY)}destroyScrollWatch(){this.shouldWatchScroll&&window.removeEventListener("scroll",this.handleScroll,!0)}createEventFromMouse(ev,isFirst){let deltaX=0,deltaY=0;return isFirst?(this.origPageX=ev.pageX,this.origPageY=ev.pageY):(deltaX=ev.pageX-this.origPageX,deltaY=ev.pageY-this.origPageY),{origEvent:ev,isTouch:!1,subjectEl:this.subjectEl,pageX:ev.pageX,pageY:ev.pageY,deltaX,deltaY}}createEventFromTouch(ev,isFirst){let touches=ev.touches,pageX,pageY,deltaX=0,deltaY=0;return touches&&touches.length?(pageX=touches[0].pageX,pageY=touches[0].pageY):(pageX=ev.pageX,pageY=ev.pageY),isFirst?(this.origPageX=pageX,this.origPageY=pageY):(deltaX=pageX-this.origPageX,deltaY=pageY-this.origPageY),{origEvent:ev,isTouch:!0,subjectEl:this.subjectEl,pageX,pageY,deltaX,deltaY}}};function isPrimaryMouseButton(ev){return ev.button===0&&!ev.ctrlKey}function startIgnoringMouse(){ignoreMouseDepth+=1,setTimeout(()=>{ignoreMouseDepth-=1},config.touchMouseIgnoreWait)}function listenerCreated(){listenerCnt+=1,listenerCnt===1&&window.addEventListener("touchmove",onWindowTouchMove,{passive:!1})}function listenerDestroyed(){listenerCnt-=1,listenerCnt||window.removeEventListener("touchmove",onWindowTouchMove,{passive:!1})}function onWindowTouchMove(ev){isWindowTouchMoveCancelled&&ev.preventDefault()}var ElementMirror=class{constructor(){this.isVisible=!1,this.sourceEl=null,this.mirrorEl=null,this.sourceElRect=null,this.parentNode=document.body,this.zIndex=9999,this.revertDuration=0,this.colorScheme=""}start(sourceEl,pageX,pageY){this.sourceEl=sourceEl,this.sourceElRect=this.sourceEl.getBoundingClientRect(),this.origScreenX=pageX-window.scrollX,this.origScreenY=pageY-window.scrollY,this.deltaX=0,this.deltaY=0,this.updateElPosition()}handleMove(pageX,pageY){this.deltaX=pageX-window.scrollX-this.origScreenX,this.deltaY=pageY-window.scrollY-this.origScreenY,this.updateElPosition()}setIsVisible(bool){bool?this.isVisible||(this.mirrorEl&&this.mirrorEl.style.setProperty("display","","important"),this.isVisible=bool,this.updateElPosition()):this.isVisible&&(this.mirrorEl&&this.mirrorEl.style.setProperty("display","none","important"),this.isVisible=bool)}stop(needsRevertAnimation,callback){let done=()=>{this.cleanup(),callback()};needsRevertAnimation&&this.mirrorEl&&this.isVisible&&this.revertDuration&&(this.deltaX||this.deltaY)?this.doRevertAnimation(done,this.revertDuration):setTimeout(done,0)}doRevertAnimation(callback,revertDuration){let mirrorEl=this.mirrorEl,finalSourceElRect=this.sourceEl.getBoundingClientRect();mirrorEl.style.transition="top "+revertDuration+"ms,left "+revertDuration+"ms",applyStyle(mirrorEl,{left:finalSourceElRect.left,top:finalSourceElRect.top}),whenTransitionDone(mirrorEl,()=>{mirrorEl.style.transition="",callback()})}cleanup(){this.mirrorEl&&(this.mirrorEl.remove(),this.mirrorEl=null),this.sourceEl=null}updateElPosition(){this.sourceEl&&this.isVisible&&applyStyle(this.getMirrorEl(),{left:this.sourceElRect.left+this.deltaX,top:this.sourceElRect.top+this.deltaY})}getMirrorEl(){let sourceElRect=this.sourceElRect,mirrorEl=this.mirrorEl;return mirrorEl||(mirrorEl=this.mirrorEl=this.sourceEl.cloneNode(!0),mirrorEl.style.userSelect="none",mirrorEl.style.webkitUserSelect="none",mirrorEl.style.pointerEvents="none",this.colorScheme&&mirrorEl.setAttribute("data-color-scheme",this.colorScheme),mirrorEl.classList.add(classNames.borderBoxRoot),applyStyle(mirrorEl,{position:"fixed",zIndex:this.zIndex,visibility:"",width:sourceElRect.right-sourceElRect.left,height:sourceElRect.bottom-sourceElRect.top,right:"auto",bottom:"auto",margin:0}),this.parentNode.appendChild(mirrorEl)),mirrorEl}},ScrollController=class{getMaxScrollTop(){return this.getScrollHeight()-this.getClientHeight()}getMaxScrollLeft(){return this.getScrollWidth()-this.getClientWidth()}canScrollVertically(){return this.getMaxScrollTop()>0}canScrollHorizontally(){return this.getMaxScrollLeft()>0}canScrollUp(){return this.getScrollTop()>0}canScrollDown(){return this.getScrollTop()<this.getMaxScrollTop()}canScrollLeft(){return this.getScrollLeft()>0}canScrollRight(){return this.getScrollLeft()<this.getMaxScrollLeft()}},ElementScrollController=class extends ScrollController{constructor(el){super(),this.el=el}getScrollTop(){return this.el.scrollTop}getScrollLeft(){return this.el.scrollLeft}setScrollTop(top){this.el.scrollTop=top}setScrollLeft(left){this.el.scrollLeft=left}getScrollWidth(){return this.el.scrollWidth}getScrollHeight(){return this.el.scrollHeight}getClientHeight(){return this.el.clientHeight}getClientWidth(){return this.el.clientWidth}},WindowScrollController=class extends ScrollController{getScrollTop(){return window.scrollY}getScrollLeft(){return window.scrollX}setScrollTop(n){window.scroll(window.scrollX,n)}setScrollLeft(n){window.scroll(n,window.scrollY)}getScrollWidth(){return document.documentElement.scrollWidth}getScrollHeight(){return document.documentElement.scrollHeight}getClientHeight(){return document.documentElement.clientHeight}getClientWidth(){return document.documentElement.clientWidth}},ScrollGeomCache=class extends ScrollController{constructor(scrollController,doesListening){super(),this.handleScroll=()=>{this.scrollTop=this.scrollController.getScrollTop(),this.scrollLeft=this.scrollController.getScrollLeft(),this.handleScrollChange()},this.scrollController=scrollController,this.doesListening=doesListening,this.scrollTop=this.origScrollTop=scrollController.getScrollTop(),this.scrollLeft=this.origScrollLeft=scrollController.getScrollLeft(),this.scrollWidth=scrollController.getScrollWidth(),this.scrollHeight=scrollController.getScrollHeight(),this.clientWidth=scrollController.getClientWidth(),this.clientHeight=scrollController.getClientHeight(),this.clientRect=this.computeClientRect(),this.doesListening&&this.getEventTarget().addEventListener("scroll",this.handleScroll)}destroy(){this.doesListening&&this.getEventTarget().removeEventListener("scroll",this.handleScroll)}getScrollTop(){return this.scrollTop}getScrollLeft(){return this.scrollLeft}setScrollTop(top){this.scrollController.setScrollTop(top),this.doesListening||(this.scrollTop=Math.max(Math.min(top,this.getMaxScrollTop()),0),this.handleScrollChange())}setScrollLeft(top){this.scrollController.setScrollLeft(top),this.doesListening||(this.scrollLeft=Math.max(Math.min(top,this.getMaxScrollLeft()),0),this.handleScrollChange())}getClientWidth(){return this.clientWidth}getClientHeight(){return this.clientHeight}getScrollWidth(){return this.scrollWidth}getScrollHeight(){return this.scrollHeight}handleScrollChange(){}},ElementScrollGeomCache=class extends ScrollGeomCache{constructor(el,doesListening){super(new ElementScrollController(el),doesListening)}getEventTarget(){return this.scrollController.el}computeClientRect(){return computeInnerRect(this.scrollController.el)}},WindowScrollGeomCache=class extends ScrollGeomCache{constructor(doesListening){super(new WindowScrollController,doesListening)}getEventTarget(){return window}computeClientRect(){return{left:this.scrollLeft,right:this.scrollLeft+this.clientWidth,top:this.scrollTop,bottom:this.scrollTop+this.clientHeight}}handleScrollChange(){this.clientRect=this.computeClientRect()}},getTime=typeof performance=="function"?performance.now:Date.now,AutoScroller=class{constructor(){this.isEnabled=!0,this.scrollQuery=[window,`.${classNames.internalScroller}`],this.edgeThreshold=50,this.maxVelocity=300,this.pointerScreenX=null,this.pointerScreenY=null,this.isAnimating=!1,this.scrollCaches=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.animate=()=>{if(this.isAnimating){let edge=this.computeBestEdge(this.pointerScreenX+window.scrollX,this.pointerScreenY+window.scrollY);if(edge){let now=getTime();this.handleSide(edge,(now-this.msSinceRequest)/1e3),this.requestAnimation(now)}else this.isAnimating=!1}}}start(pageX,pageY,scrollStartEl){this.isEnabled&&(this.scrollCaches=this.buildCaches(scrollStartEl),this.pointerScreenX=null,this.pointerScreenY=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.handleMove(pageX,pageY))}handleMove(pageX,pageY){if(this.isEnabled){let pointerScreenX=pageX-window.scrollX,pointerScreenY=pageY-window.scrollY,yDelta=this.pointerScreenY===null?0:pointerScreenY-this.pointerScreenY,xDelta=this.pointerScreenX===null?0:pointerScreenX-this.pointerScreenX;yDelta<0?this.everMovedUp=!0:yDelta>0&&(this.everMovedDown=!0),xDelta<0?this.everMovedLeft=!0:xDelta>0&&(this.everMovedRight=!0),this.pointerScreenX=pointerScreenX,this.pointerScreenY=pointerScreenY,this.isAnimating||(this.isAnimating=!0,this.requestAnimation(getTime()))}}stop(){if(this.isEnabled){this.isAnimating=!1;for(let scrollCache of this.scrollCaches)scrollCache.destroy();this.scrollCaches=null}}requestAnimation(now){this.msSinceRequest=now,requestAnimationFrame(this.animate)}handleSide(edge,seconds){let{scrollCache}=edge,{edgeThreshold}=this,invDistance=edgeThreshold-edge.distance,velocity=invDistance*invDistance/(edgeThreshold*edgeThreshold)*this.maxVelocity*seconds,sign=1;switch(edge.name){case"left":sign=-1;case"right":scrollCache.setScrollLeft(scrollCache.getScrollLeft()+velocity*sign);break;case"top":sign=-1;case"bottom":scrollCache.setScrollTop(scrollCache.getScrollTop()+velocity*sign);break}}computeBestEdge(left,top){let{edgeThreshold}=this,bestSide=null,scrollCaches=this.scrollCaches||[];for(let scrollCache of scrollCaches){let rect=scrollCache.clientRect,leftDist=left-rect.left,rightDist=rect.right-left,topDist=top-rect.top,bottomDist=rect.bottom-top;leftDist>=0&&rightDist>=0&&topDist>=0&&bottomDist>=0&&(topDist<=edgeThreshold&&this.everMovedUp&&scrollCache.canScrollUp()&&(!bestSide||bestSide.distance>topDist)&&(bestSide={scrollCache,name:"top",distance:topDist}),bottomDist<=edgeThreshold&&this.everMovedDown&&scrollCache.canScrollDown()&&(!bestSide||bestSide.distance>bottomDist)&&(bestSide={scrollCache,name:"bottom",distance:bottomDist}),leftDist<=edgeThreshold&&this.everMovedLeft&&scrollCache.canScrollLeft()&&(!bestSide||bestSide.distance>leftDist)&&(bestSide={scrollCache,name:"left",distance:leftDist}),rightDist<=edgeThreshold&&this.everMovedRight&&scrollCache.canScrollRight()&&(!bestSide||bestSide.distance>rightDist)&&(bestSide={scrollCache,name:"right",distance:rightDist}))}return bestSide}buildCaches(scrollStartEl){return this.queryScrollEls(scrollStartEl).map(el=>el===window?new WindowScrollGeomCache(!1):new ElementScrollGeomCache(el,!1))}queryScrollEls(scrollStartEl){let els=[];for(let query of this.scrollQuery)typeof query=="object"?els.push(query):els.push(...Array.prototype.slice.call(scrollStartEl.getRootNode().querySelectorAll(query)));return els}},FeaturefulElementDragging=class extends ElementDragging{constructor(containerEl,selector){super(containerEl),this.containerEl=containerEl,this.delay=null,this.minDistance=0,this.touchScrollAllowed=!0,this.mirrorNeedsRevert=!1,this.isInteracting=!1,this.isDragging=!1,this.isDelayEnded=!1,this.isDistanceSurpassed=!1,this.delayTimeoutId=null,this.onPointerDown=ev=>{this.isDragging||(this.isInteracting=!0,this.isDelayEnded=!1,this.isDistanceSurpassed=!1,this.emitter.trigger("pointerdown",ev),this.isInteracting&&(preventSelection(document.body),preventContextMenu(document.body),ev.isTouch||ev.origEvent.preventDefault(),this.mirror.setIsVisible(!1),this.mirror.start(ev.subjectEl,ev.pageX,ev.pageY),this.startDelay(ev),this.minDistance||this.handleDistanceSurpassed(ev)))},this.onPointerMove=ev=>{if(this.isInteracting){if(this.emitter.trigger("pointermove",ev),!this.isDistanceSurpassed){let minDistance=this.minDistance,distanceSq,{deltaX,deltaY}=ev;distanceSq=deltaX*deltaX+deltaY*deltaY,distanceSq>=minDistance*minDistance&&this.handleDistanceSurpassed(ev)}this.isDragging&&(ev.origEvent.type!=="scroll"&&(this.mirror.handleMove(ev.pageX,ev.pageY),this.autoScroller.handleMove(ev.pageX,ev.pageY)),this.emitter.trigger("dragmove",ev))}},this.onPointerUp=ev=>{this.isInteracting&&(this.isInteracting=!1,allowSelection(document.body),allowContextMenu(document.body),this.emitter.trigger("pointerup",ev),this.isDragging&&(this.autoScroller.stop(),this.tryStopDrag(ev)),this.delayTimeoutId&&(clearTimeout(this.delayTimeoutId),this.delayTimeoutId=null))};let pointer=this.pointer=new PointerDragging(containerEl);pointer.emitter.on("pointerdown",this.onPointerDown),pointer.emitter.on("pointermove",this.onPointerMove),pointer.emitter.on("pointerup",this.onPointerUp),selector&&(pointer.selector=selector),this.mirror=new ElementMirror,this.autoScroller=new AutoScroller}destroy(){this.pointer.destroy(),this.onPointerUp({})}startDelay(ev){typeof this.delay=="number"?this.delayTimeoutId=setTimeout(()=>{this.delayTimeoutId=null,this.handleDelayEnd(ev)},this.delay):this.handleDelayEnd(ev)}handleDelayEnd(ev){this.isDelayEnded=!0,this.tryStartDrag(ev)}handleDistanceSurpassed(ev){this.isDistanceSurpassed=!0,this.tryStartDrag(ev)}tryStartDrag(ev){this.isDelayEnded&&this.isDistanceSurpassed&&(!this.pointer.wasTouchScroll||this.touchScrollAllowed)&&(this.isDragging=!0,this.mirrorNeedsRevert=!1,this.autoScroller.start(ev.pageX,ev.pageY,this.containerEl),this.emitter.trigger("dragstart",ev),this.touchScrollAllowed===!1&&this.pointer.cancelTouchScroll())}tryStopDrag(ev){this.mirror.stop(this.mirrorNeedsRevert,this.stopDrag.bind(this,ev))}stopDrag(ev){this.isDragging=!1,this.emitter.trigger("dragend",ev)}cancel(){this.isInteracting&&(this.isInteracting=!1,this.pointer.cancel())}setMirrorIsVisible(bool){this.mirror.setIsVisible(bool)}setMirrorNeedsRevert(bool){this.mirrorNeedsRevert=bool}setAutoScrollEnabled(bool){this.autoScroller.isEnabled=bool}},OffsetTracker=class{constructor(el){this.el=el,this.origRect=computeRect(el),this.isRtl=computeElIsRtl(el),this.scrollCaches=getClippingParents(el).map(scrollEl=>new ElementScrollGeomCache(scrollEl,!0))}destroy(){for(let scrollCache of this.scrollCaches)scrollCache.destroy()}computeLeft(){let left=this.origRect.left;for(let scrollCache of this.scrollCaches)left+=scrollCache.origScrollLeft-scrollCache.getScrollLeft();return left}computeTop(){let top=this.origRect.top;for(let scrollCache of this.scrollCaches)top+=scrollCache.origScrollTop-scrollCache.getScrollTop();return top}isWithinClipping(pageX,pageY){let point={left:pageX,top:pageY};for(let scrollCache of this.scrollCaches)if(!isIgnoredClipping(scrollCache.getEventTarget())&&!pointInsideRect(point,scrollCache.clientRect))return!1;return!0}};function isIgnoredClipping(node){let tagName=node.tagName;return tagName==="HTML"||tagName==="BODY"}var HitDragging=class{constructor(dragging,droppableStore){this.useSubjectCenter=!1,this.requireInitial=!0,this.disablePointCheck=!1,this.initialHit=null,this.movingHit=null,this.finalHit=null,this.handlePointerDown=ev=>{let{dragging:dragging2}=this;this.initialHit=null,this.movingHit=null,this.finalHit=null,this.prepareHits(),this.processFirstCoord(ev),this.initialHit||!this.requireInitial?this.emitter.trigger("pointerdown",ev):dragging2.cancel()},this.handleDragStart=ev=>{this.emitter.trigger("dragstart",ev),this.handleMove(ev,!0)},this.handleDragMove=ev=>{this.emitter.trigger("dragmove",ev),this.handleMove(ev)},this.handlePointerUp=ev=>{this.releaseHits(),this.emitter.trigger("pointerup",ev)},this.handleDragEnd=ev=>{this.movingHit&&this.emitter.trigger("hitupdate",null,!0,ev),this.finalHit=this.movingHit,this.movingHit=null,this.emitter.trigger("dragend",ev)},this.droppableStore=droppableStore,dragging.emitter.on("pointerdown",this.handlePointerDown),dragging.emitter.on("dragstart",this.handleDragStart),dragging.emitter.on("dragmove",this.handleDragMove),dragging.emitter.on("pointerup",this.handlePointerUp),dragging.emitter.on("dragend",this.handleDragEnd),this.dragging=dragging,this.emitter=new Emitter}processFirstCoord(ev){let origPoint={left:ev.pageX,top:ev.pageY},adjustedPoint=origPoint,subjectEl=ev.subjectEl,subjectRect;subjectEl instanceof HTMLElement&&(subjectRect=computeRect(subjectEl),adjustedPoint=constrainPoint(adjustedPoint,subjectRect));let initialHit=this.initialHit=this.queryHitForOffset(adjustedPoint.left,adjustedPoint.top);if(initialHit){if(this.useSubjectCenter&&subjectRect){let slicedSubjectRect=intersectRects(subjectRect,initialHit.rect);slicedSubjectRect&&(adjustedPoint=getRectCenter(slicedSubjectRect))}this.coordAdjust=diffPoints(adjustedPoint,origPoint)}else this.coordAdjust={left:0,top:0}}handleMove(ev,forceHandle){let hit=this.queryHitForOffset(ev.pageX+this.coordAdjust.left,ev.pageY+this.coordAdjust.top);(forceHandle||!isHitsEqual(this.movingHit,hit))&&(this.movingHit=hit,this.emitter.trigger("hitupdate",hit,!1,ev))}prepareHits(){this.offsetTrackers=mapHash(this.droppableStore,interactionSettings=>(interactionSettings.component.prepareHits(),new OffsetTracker(interactionSettings.el)))}releaseHits(){let{offsetTrackers}=this;for(let id in offsetTrackers)offsetTrackers[id].destroy();this.offsetTrackers={}}queryHitForOffset(offsetLeft,offsetTop){let{droppableStore,offsetTrackers}=this,bestHit=null;for(let id in droppableStore){let component=droppableStore[id].component,offsetTracker=offsetTrackers[id];if(offsetTracker&&offsetTracker.isWithinClipping(offsetLeft,offsetTop)){let originLeft=offsetTracker.computeLeft(),originTop=offsetTracker.computeTop(),positionLeft=offsetLeft-originLeft,positionTop=offsetTop-originTop,{origRect}=offsetTracker,width=origRect.right-origRect.left,height=origRect.bottom-origRect.top;if(positionLeft>=0&&positionLeft<width&&positionTop>=0&&positionTop<height){let hit=component.queryHit(offsetTracker.isRtl,positionLeft,positionTop,width,height);hit&&rangeContainsRange(hit.dateProfile.activeRange,hit.dateSpan.range)&&(this.disablePointCheck||offsetTracker.el.contains(offsetTracker.el.getRootNode().elementFromPoint(positionLeft+originLeft-window.scrollX,positionTop+originTop-window.scrollY)))&&(!bestHit||hit.layer>bestHit.layer)&&(hit.componentId=id,hit.context=component.context,hit.rect.left+=originLeft,hit.rect.right+=originLeft,hit.rect.top+=originTop,hit.rect.bottom+=originTop,bestHit=hit)}}}return bestHit}};function isHitsEqual(hit0,hit1){return!hit0&&!hit1?!0:!!hit0!=!!hit1?!1:isDateSpansEqual(hit0.dateSpan,hit1.dateSpan)}function buildDatePointApiWithContext(dateSpan,context){let props={};for(let transform of context.pluginHooks.datePointTransforms)Object.assign(props,transform(dateSpan,context));return Object.assign(props,buildDatePointApi(dateSpan,context.dateEnv)),props}function buildDatePointApi(span,dateEnv){return{date:dateEnv.toDate(span.range.start),dateStr:dateEnv.formatIso(span.range.start,{omitTime:span.allDay}),allDay:span.allDay}}var DateClicking=class extends Interaction{constructor(settings){super(settings),this.handlePointerDown=pev=>{let{dragging}=this,downEl=pev.origEvent.target;this.component.context.emitter.hasHandlers("dateClick")&&this.component.isValidDateDownEl(downEl)||dragging.cancel()},this.handleDragEnd=ev=>{let{component}=this,{pointer}=this.dragging;if(!pointer.wasTouchScroll){let{initialHit,finalHit}=this.hitDragging;if(initialHit&&finalHit&&isHitsEqual(initialHit,finalHit)){let{context}=component,data={...buildDatePointApiWithContext(initialHit.dateSpan,context),dayEl:initialHit.getDayEl(),jsEvent:ev.origEvent,view:context.viewApi||context.calendarApi.view};context.emitter.trigger("dateClick",data)}}},this.dragging=new FeaturefulElementDragging(settings.el),this.dragging.autoScroller.isEnabled=!1;let hitDragging=this.hitDragging=new HitDragging(this.dragging,interactionSettingsToStore(settings));hitDragging.emitter.on("pointerdown",this.handlePointerDown),hitDragging.emitter.on("dragend",this.handleDragEnd)}destroy(){this.dragging.destroy()}},DateSelecting=class extends Interaction{constructor(settings){super(settings),this.dragSelection=null,this.handlePointerDown=ev=>{let{component:component2,dragging:dragging2}=this,{options:options2}=component2.context;options2.selectable&&component2.isValidDateDownEl(ev.origEvent.target)?dragging2.delay=ev.isTouch?getComponentTouchDelay$1(component2):null:dragging2.cancel()},this.handleDragStart=ev=>{this.component.context.calendarApi.unselect(ev)},this.handleHitUpdate=(hit,isFinal)=>{let{context}=this.component,dragSelection=null,isInvalid=!1;if(hit){let initialHit=this.hitDragging.initialHit;hit.componentId===initialHit.componentId&&this.isHitComboAllowed&&!this.isHitComboAllowed(initialHit,hit)||(dragSelection=joinHitsIntoSelection(initialHit,hit,context.pluginHooks.dateSelectionTransformers)),(!dragSelection||!isDateSelectionValid(dragSelection,hit.dateProfile,context))&&(isInvalid=!0,dragSelection=null)}dragSelection?context.dispatch({type:"SELECT_DATES",selection:dragSelection}):isFinal||context.dispatch({type:"UNSELECT_DATES"}),isInvalid?disableCursor():enableCursor(),isFinal||(this.dragSelection=dragSelection)},this.handlePointerUp=pev=>{this.dragSelection?(triggerDateSelect(this.dragSelection,pev,this.component.context),this.dragSelection=null):this.component.context.emitter.trigger("_noDateSelect")};let{component}=settings,{options}=component.context,dragging=this.dragging=new FeaturefulElementDragging(settings.el);dragging.touchScrollAllowed=!1,dragging.minDistance=options.selectMinDistance||0,dragging.autoScroller.isEnabled=options.dragScroll;let hitDragging=this.hitDragging=new HitDragging(this.dragging,interactionSettingsToStore(settings));hitDragging.emitter.on("pointerdown",this.handlePointerDown),hitDragging.emitter.on("dragstart",this.handleDragStart),hitDragging.emitter.on("hitupdate",this.handleHitUpdate),hitDragging.emitter.on("pointerup",this.handlePointerUp)}destroy(){this.dragging.destroy()}};function getComponentTouchDelay$1(component){let{options}=component.context,delay=options.selectLongPressDelay;return delay==null&&(delay=options.longPressDelay),delay}function joinHitsIntoSelection(hit0,hit1,dateSelectionTransformers){let dateSpan0=hit0.dateSpan,dateSpan1=hit1.dateSpan,ms=[dateSpan0.range.start,dateSpan0.range.end,dateSpan1.range.start,dateSpan1.range.end];ms.sort(compareNumbers2);let props={};for(let transformer of dateSelectionTransformers){let res=transformer(hit0,hit1);if(res===!1)return null;res&&Object.assign(props,res)}return props.range={start:ms[0],end:ms[3]},props.allDay=dateSpan0.allDay,props}var EventDragging=class _EventDragging extends Interaction{constructor(settings){super(settings),this.subjectEl=null,this.isDragging=!1,this.eventRange=null,this.relevantEvents=null,this.receivingContext=null,this.validMutation=null,this.mutatedRelevantEvents=null,this.handlePointerDown=ev=>{let origTarget=ev.origEvent.target,{component:component2,dragging:dragging2}=this,{mirror}=dragging2,{options:options2}=component2.context,initialContext=component2.context;this.subjectEl=ev.subjectEl;let eventInstanceId=(this.eventRange=getElEventRange(ev.subjectEl)).instance.instanceId;this.relevantEvents=getRelevantEvents(initialContext.getCurrentData().eventStore,eventInstanceId),dragging2.minDistance=ev.isTouch?0:options2.eventDragMinDistance,dragging2.delay=ev.isTouch&&eventInstanceId!==component2.props.eventSelection?getComponentTouchDelay(component2):null,mirror.parentNode=getAppendableRoot(origTarget),mirror.revertDuration=options2.dragRevertDuration,mirror.colorScheme=options2.colorScheme||"",component2.isValidSegDownEl(origTarget)&&!origTarget.closest(`.${classNames.internalEventResizer}`)?this.isDragging=ev.subjectEl.classList.contains(classNames.internalEventDraggable):dragging2.cancel()},this.handleDragStart=ev=>{let initialContext=this.component.context,eventRange=this.eventRange,eventInstanceId=eventRange.instance.instanceId;ev.isTouch?eventInstanceId!==this.component.props.eventSelection&&initialContext.dispatch({type:"SELECT_EVENT",eventInstanceId}):initialContext.dispatch({type:"UNSELECT_EVENT"}),this.isDragging&&(initialContext.calendarApi.unselect(ev),initialContext.emitter.trigger("eventDragStart",{el:this.subjectEl,event:new EventImpl(initialContext,eventRange.def,eventRange.instance),jsEvent:ev.origEvent,view:initialContext.viewApi}))},this.handleHitUpdate=(hit,isFinal)=>{if(!this.isDragging)return;let relevantEvents=this.relevantEvents,initialHit=this.hitDragging.initialHit,initialContext=this.component.context,receivingContext=null,mutation=null,mutatedRelevantEvents=null,isInvalid=!1,interaction={affectedEvents:relevantEvents,mutatedEvents:createEmptyEventStore(),isEvent:!0};if(hit){receivingContext=hit.context;let receivingOptions=receivingContext.options;initialContext===receivingContext||receivingOptions.editable&&receivingOptions.droppable?(mutation=computeEventMutation(initialHit,hit,this.eventRange.instance.range.start,receivingContext.getCurrentData().pluginHooks.eventDragMutationMassagers),mutation&&(mutatedRelevantEvents=applyMutationToEventStore(relevantEvents,receivingContext.getCurrentData().eventUiBases,mutation,receivingContext),interaction.mutatedEvents=mutatedRelevantEvents,isInteractionValid(interaction,hit.dateProfile,receivingContext)||(isInvalid=!0,mutation=null,mutatedRelevantEvents=null,interaction.mutatedEvents=createEmptyEventStore()))):receivingContext=null}this.displayDrag(receivingContext,interaction),isInvalid?disableCursor():enableCursor(),isFinal||(initialContext===receivingContext&&isHitsEqual(initialHit,hit)&&(mutation=null),this.dragging.setMirrorNeedsRevert(!mutation),this.dragging.setMirrorIsVisible(!hit||!this.subjectEl.getRootNode().querySelector(`.${classNames.internalEventMirror}`)),this.receivingContext=receivingContext,this.validMutation=mutation,this.mutatedRelevantEvents=mutatedRelevantEvents)},this.handlePointerUp=()=>{this.isDragging||this.cleanup()},this.handleDragEnd=ev=>{if(this.isDragging){let initialContext=this.component.context,initialView=initialContext.viewApi,{receivingContext,validMutation}=this,eventDef=this.eventRange.def,eventInstance=this.eventRange.instance,eventApi=new EventImpl(initialContext,eventDef,eventInstance),relevantEvents=this.relevantEvents,mutatedRelevantEvents=this.mutatedRelevantEvents,{finalHit}=this.hitDragging;if(this.clearDrag(),initialContext.emitter.trigger("eventDragStop",{el:this.subjectEl,event:eventApi,jsEvent:ev.origEvent,view:initialView}),validMutation){if(receivingContext===initialContext){let updatedEventApi=new EventImpl(initialContext,mutatedRelevantEvents.defs[eventDef.defId],eventInstance?mutatedRelevantEvents.instances[eventInstance.instanceId]:null);initialContext.dispatch({type:"MERGE_EVENTS",eventStore:mutatedRelevantEvents});let eventChangeData={oldEvent:eventApi,event:updatedEventApi,relatedEvents:buildEventApis(mutatedRelevantEvents,initialContext,eventInstance),revert(){initialContext.dispatch({type:"MERGE_EVENTS",eventStore:relevantEvents})}},transformed={};for(let transformer of initialContext.getCurrentData().pluginHooks.eventDropTransformers)Object.assign(transformed,transformer(validMutation,initialContext));initialContext.emitter.trigger("eventDrop",{...eventChangeData,...transformed,el:ev.subjectEl,delta:validMutation.datesDelta,jsEvent:ev.origEvent,view:initialView}),initialContext.emitter.trigger("eventChange",eventChangeData)}else if(receivingContext){let eventRemoveData={event:eventApi,relatedEvents:buildEventApis(relevantEvents,initialContext,eventInstance),revert(){initialContext.dispatch({type:"MERGE_EVENTS",eventStore:relevantEvents})}};initialContext.emitter.trigger("eventLeave",{...eventRemoveData,draggedEl:ev.subjectEl,view:initialView}),initialContext.dispatch({type:"REMOVE_EVENTS",eventStore:relevantEvents}),initialContext.emitter.trigger("eventRemove",eventRemoveData);let addedEventDef=mutatedRelevantEvents.defs[eventDef.defId],addedEventInstance=mutatedRelevantEvents.instances[eventInstance.instanceId],addedEventApi=new EventImpl(receivingContext,addedEventDef,addedEventInstance);receivingContext.dispatch({type:"MERGE_EVENTS",eventStore:mutatedRelevantEvents});let eventAddData={event:addedEventApi,relatedEvents:buildEventApis(mutatedRelevantEvents,receivingContext,addedEventInstance),revert(){receivingContext.dispatch({type:"REMOVE_EVENTS",eventStore:mutatedRelevantEvents})}};receivingContext.emitter.trigger("eventAdd",eventAddData),ev.isTouch&&receivingContext.dispatch({type:"SELECT_EVENT",eventInstanceId:eventInstance.instanceId}),receivingContext.emitter.trigger("drop",{...buildDatePointApiWithContext(finalHit.dateSpan,receivingContext),draggedEl:ev.subjectEl,jsEvent:ev.origEvent,view:finalHit.context.viewApi}),receivingContext.emitter.trigger("eventReceive",{...eventAddData,draggedEl:ev.subjectEl,view:finalHit.context.viewApi})}}else initialContext.emitter.trigger("_noEventDrop")}this.cleanup()};let{component}=this,{options}=component.context,dragging=this.dragging=new FeaturefulElementDragging(settings.el);dragging.pointer.selector=_EventDragging.SELECTOR,dragging.touchScrollAllowed=!1,dragging.autoScroller.isEnabled=options.dragScroll;let hitDragging=this.hitDragging=new HitDragging(this.dragging,interactionSettingsStore);hitDragging.useSubjectCenter=settings.useEventCenter,hitDragging.emitter.on("pointerdown",this.handlePointerDown),hitDragging.emitter.on("dragstart",this.handleDragStart),hitDragging.emitter.on("hitupdate",this.handleHitUpdate),hitDragging.emitter.on("pointerup",this.handlePointerUp),hitDragging.emitter.on("dragend",this.handleDragEnd)}destroy(){this.dragging.destroy()}displayDrag(nextContext,state){let initialContext=this.component.context,prevContext=this.receivingContext;prevContext&&prevContext!==nextContext&&(prevContext===initialContext?prevContext.dispatch({type:"SET_EVENT_DRAG",state:{affectedEvents:state.affectedEvents,mutatedEvents:createEmptyEventStore(),isEvent:!0}}):prevContext.dispatch({type:"UNSET_EVENT_DRAG"})),nextContext&&nextContext.dispatch({type:"SET_EVENT_DRAG",state})}clearDrag(){let initialCalendar=this.component.context,{receivingContext}=this;receivingContext&&receivingContext.dispatch({type:"UNSET_EVENT_DRAG"}),initialCalendar!==receivingContext&&initialCalendar.dispatch({type:"UNSET_EVENT_DRAG"})}cleanup(){this.isDragging=!1,this.eventRange=null,this.relevantEvents=null,this.receivingContext=null,this.validMutation=null,this.mutatedRelevantEvents=null}};EventDragging.SELECTOR=`.${classNames.internalEventDraggable}, .${classNames.internalEventResizable}`;function computeEventMutation(hit0,hit1,eventInstanceStart,massagers){let dateSpan0=hit0.dateSpan,dateSpan1=hit1.dateSpan,date0=dateSpan0.range.start,date1=dateSpan1.range.start,standardProps={};dateSpan0.allDay!==dateSpan1.allDay&&(standardProps.allDay=dateSpan1.allDay,standardProps.hasEnd=hit1.context.options.allDayMaintainDuration,dateSpan1.allDay?date0=startOfDay4(eventInstanceStart):date0=eventInstanceStart);let delta=diffDates(date0,date1,hit0.context.dateEnv,hit0.componentId===hit1.componentId?hit0.largeUnit:null);delta.milliseconds&&(standardProps.allDay=!1);let mutation={datesDelta:delta,standardProps};for(let massager of massagers)massager(mutation,hit0,hit1);return mutation}function getComponentTouchDelay(component){let{options}=component.context,delay=options.eventLongPressDelay;return delay==null&&(delay=options.longPressDelay),delay}var EventResizing=class extends Interaction{constructor(settings){super(settings),this.draggingSegEl=null,this.draggingEventRange=null,this.eventRange=null,this.relevantEvents=null,this.validMutation=null,this.mutatedRelevantEvents=null,this.handlePointerDown=ev=>{let{component:component2}=this,segEl=this.querySegEl(ev),eventRange=this.eventRange=getElEventRange(segEl);this.dragging.minDistance=component2.context.options.eventDragMinDistance,this.component.isValidSegDownEl(ev.origEvent.target)&&!(ev.isTouch&&this.component.props.eventSelection!==eventRange.instance.instanceId)||this.dragging.cancel()},this.handleDragStart=ev=>{let{context}=this.component,eventRange=this.eventRange;this.relevantEvents=getRelevantEvents(context.getCurrentData().eventStore,this.eventRange.instance.instanceId);let segEl=this.querySegEl(ev);this.draggingSegEl=segEl,this.draggingEventRange=getElEventRange(segEl),context.calendarApi.unselect(),context.emitter.trigger("eventResizeStart",{el:segEl,event:new EventImpl(context,eventRange.def,eventRange.instance),jsEvent:ev.origEvent,view:context.viewApi})},this.handleHitUpdate=(hit,isFinal,ev)=>{let{context}=this.component,relevantEvents=this.relevantEvents,initialHit=this.hitDragging.initialHit,eventInstance=this.eventRange.instance,mutation=null,mutatedRelevantEvents=null,isInvalid=!1,interaction={affectedEvents:relevantEvents,mutatedEvents:createEmptyEventStore(),isEvent:!0};hit&&(hit.componentId===initialHit.componentId&&this.isHitComboAllowed&&!this.isHitComboAllowed(initialHit,hit)||(mutation=computeMutation(initialHit,hit,ev.subjectEl.classList.contains(classNames.internalEventResizerStart),eventInstance.range))),mutation&&(mutatedRelevantEvents=applyMutationToEventStore(relevantEvents,context.getCurrentData().eventUiBases,mutation,context),interaction.mutatedEvents=mutatedRelevantEvents,isInteractionValid(interaction,hit.dateProfile,context)||(isInvalid=!0,mutation=null,mutatedRelevantEvents=null,interaction.mutatedEvents=null)),mutatedRelevantEvents?context.dispatch({type:"SET_EVENT_RESIZE",state:interaction}):context.dispatch({type:"UNSET_EVENT_RESIZE"}),isInvalid?disableCursor():enableCursor(),isFinal||(mutation&&isHitsEqual(initialHit,hit)&&(mutation=null),this.validMutation=mutation,this.mutatedRelevantEvents=mutatedRelevantEvents)},this.handleDragEnd=ev=>{let{context}=this.component,eventDef=this.eventRange.def,eventInstance=this.eventRange.instance,eventApi=new EventImpl(context,eventDef,eventInstance),relevantEvents=this.relevantEvents,mutatedRelevantEvents=this.mutatedRelevantEvents;if(context.emitter.trigger("eventResizeStop",{el:this.draggingSegEl,event:eventApi,jsEvent:ev.origEvent,view:context.viewApi}),this.validMutation){let updatedEventApi=new EventImpl(context,mutatedRelevantEvents.defs[eventDef.defId],eventInstance?mutatedRelevantEvents.instances[eventInstance.instanceId]:null);context.dispatch({type:"MERGE_EVENTS",eventStore:mutatedRelevantEvents});let eventChangeData={oldEvent:eventApi,event:updatedEventApi,relatedEvents:buildEventApis(mutatedRelevantEvents,context,eventInstance),revert(){context.dispatch({type:"MERGE_EVENTS",eventStore:relevantEvents})}};context.emitter.trigger("eventResize",{...eventChangeData,el:this.draggingSegEl,startDelta:this.validMutation.startDelta||createDuration(0),endDelta:this.validMutation.endDelta||createDuration(0),jsEvent:ev.origEvent,view:context.viewApi}),context.emitter.trigger("eventChange",eventChangeData)}else context.emitter.trigger("_noEventResize");this.draggingEventRange=null,this.relevantEvents=null,this.validMutation=null};let{component}=settings,dragging=this.dragging=new FeaturefulElementDragging(settings.el);dragging.pointer.selector=`.${classNames.internalEventResizer}`,dragging.touchScrollAllowed=!1,dragging.autoScroller.isEnabled=component.context.options.dragScroll;let hitDragging=this.hitDragging=new HitDragging(this.dragging,interactionSettingsToStore(settings));hitDragging.emitter.on("pointerdown",this.handlePointerDown),hitDragging.emitter.on("dragstart",this.handleDragStart),hitDragging.emitter.on("hitupdate",this.handleHitUpdate),hitDragging.emitter.on("dragend",this.handleDragEnd)}destroy(){this.dragging.destroy()}querySegEl(ev){return ev.subjectEl.closest(`.${classNames.internalEvent}`)}};function computeMutation(hit0,hit1,isFromStart,instanceRange){let dateEnv=hit0.context.dateEnv,date0=hit0.dateSpan.range.start,date1=hit1.dateSpan.range.start,delta=diffDates(date0,date1,dateEnv,hit0.largeUnit);if(isFromStart){if(dateEnv.add(instanceRange.start,delta)<instanceRange.end)return{startDelta:delta}}else if(dateEnv.add(instanceRange.end,delta)>instanceRange.start)return{endDelta:delta};return null}var UnselectAuto=class{constructor(context){this.context=context,this.isRecentPointerDateSelect=!1,this.matchesCancel=!1,this.matchesEvent=!1,this.onSelect=selectInfo=>{selectInfo.jsEvent&&(this.isRecentPointerDateSelect=!0)},this.onDocumentPointerDown=pev=>{let unselectCancel=this.context.options.unselectCancel,downEl=getEventTargetViaRoot(pev.origEvent);this.matchesCancel=!!downEl.closest(unselectCancel),this.matchesEvent=!!downEl.closest(EventDragging.SELECTOR)},this.onDocumentPointerUp=pev=>{let{context:context2}=this,{documentPointer:documentPointer2}=this,calendarState=context2.getCurrentData();if(!documentPointer2.wasTouchScroll){if(calendarState.dateSelection&&!this.isRecentPointerDateSelect){let unselectAuto=context2.options.unselectAuto;unselectAuto&&(!unselectAuto||!this.matchesCancel)&&context2.calendarApi.unselect(pev)}calendarState.eventSelection&&!this.matchesEvent&&context2.dispatch({type:"UNSELECT_EVENT"})}this.isRecentPointerDateSelect=!1};let documentPointer=this.documentPointer=new PointerDragging(document);documentPointer.shouldIgnoreMove=!0,documentPointer.shouldWatchScroll=!1,documentPointer.emitter.on("pointerdown",this.onDocumentPointerDown),documentPointer.emitter.on("pointerup",this.onDocumentPointerUp),context.emitter.on("select",this.onSelect)}destroy(){this.context.emitter.off("select",this.onSelect),this.documentPointer.destroy()}},interactionPlugin={name:"interaction",componentInteractions:[DateClicking,DateSelecting,EventDragging,EventResizing],calendarInteractions:[UnselectAuto],elementDraggingImpl:FeaturefulElementDragging};config.dataAttrPrefix="";var import_jsx_runtime9=require("react/jsx-runtime");var xxsTextClass="fc-classic-vQz",outlineWidthClass="fc-classic-0Bj",outlineWidthFocusClass="fc-classic-uqo",outlineOffsetClass="fc-classic-3Xj",outlineInsetClass="fc-classic-fFh",primaryOutlineColorClass="fc-classic-zIi",strongSolidPressableClass="fc-classic-BaR",mutedHoverClass="fc-classic-4yP",mutedHoverPressableClass=`${mutedHoverClass} fc-classic-tCP fc-classic-8gz`,faintHoverClass="fc-classic-Ubk",faintHoverPressableClass=`${faintHoverClass} fc-classic-OIx fc-classic-28F`,buttonIconClass="fc-classic-XUJ",blockPointerResizerClass="fc-classic-1EY fc-classic-pps fc-classic-vs6",rowPointerResizerClass=`${blockPointerResizerClass} fc-classic-AWB fc-classic-hza`,columnPointerResizerClass=`${blockPointerResizerClass} fc-classic-MaV fc-classic-uuA`,blockTouchResizerClass="fc-classic-1EY fc-classic-3wQ fc-classic-wsy fc-classic-lNM fc-classic-Jk3 fc-classic-AAA",rowTouchResizerClass=`${blockTouchResizerClass} fc-classic-ERR fc-classic-Dq8`,columnTouchResizerClass=`${blockTouchResizerClass} fc-classic-1V6 fc-classic-F99`,getDayClass=info=>joinClassNames("fc-classic-wsy",info.isMajor?"fc-classic-C0k":"fc-classic-C1x",info.isDisabled?"fc-classic-iYS":info.isToday&&"fc-classic-hbn"),getSlotClass=info=>joinClassNames("fc-classic-wsy fc-classic-C1x",info.isMinor&&"fc-classic-TN2"),dayRowCommonClasses={listItemEventClass:info=>joinClassNames("fc-classic-Ika fc-classic-7A6 fc-classic-Fvv",info.isNarrow?"fc-classic-148":"fc-classic-cKZ",info.isSelected?joinClassNames("fc-classic-k3f",info.isDragging&&"fc-classic-qNs"):info.isInteractive?mutedHoverPressableClass:mutedHoverClass),listItemEventBeforeClass:info=>joinClassNames("fc-classic-Mjo",info.isNarrow?"fc-classic-148":"fc-classic-rVY"),listItemEventInnerClass:info=>joinClassNames("fc-classic-dl1 fc-classic-1sP fc-classic-XpK fc-classic-z5u fc-classic-aTF",info.isNarrow?xxsTextClass:"fc-classic-a3B"),listItemEventTimeClass:"fc-classic-F1o fc-classic-TZ4 fc-classic-pKG fc-classic-1Zl",listItemEventTitleClass:"fc-classic-F1o fc-classic-DIS fc-classic-TZ4 fc-classic-pKG fc-classic-OLq",rowEventClass:info=>joinClassNames(info.isStart&&joinClassNames("fc-classic-kmj",info.isNarrow?"fc-classic-qvL":"fc-classic-Jzj"),info.isEnd&&joinClassNames("fc-classic-Skl",info.isNarrow?"fc-classic-9hC":"fc-classic-3e1")),rowEventInnerClass:"fc-classic-z5u fc-classic-aTF",rowEventTimeClass:"fc-classic-F1o",rowEventTitleClass:"fc-classic-F1o",rowMoreLinkClass:info=>joinClassNames("fc-classic-Ika fc-classic-wsy fc-classic-Fvv",info.isNarrow?"fc-classic-148 fc-classic-0Pr":"fc-classic-sI7 fc-classic-cKZ fc-classic-d0j",mutedHoverPressableClass),rowMoreLinkInnerClass:info=>joinClassNames("fc-classic-7A6",info.isNarrow?xxsTextClass:"fc-classic-a3B")},expanderIconClass="fc-classic-vnf fc-classic-mAY",continuationArrowClass="fc-classic-rVY fc-classic-XM3 fc-classic-rif fc-classic-lMo",index={name:"theme-classic",optionDefaults:{className:"fc-classic-yth fc-classic-n5m",viewClass:info=>{let hasBorderTop=info.options.headerToolbar||!info.borderlessTop,hasBorderBottom=info.options.footerToolbar||!info.borderlessBottom,hasBorderX=!info.borderlessX;return joinClassNames("fc-classic-Jk3 fc-classic-GAX fc-classic-C1x",hasBorderTop&&"fc-classic-ku3",hasBorderBottom&&"fc-classic-zi1",hasBorderX&&"fc-classic-1Wx")},toolbarClass:info=>joinClassNames("fc-classic-dl1 fc-classic-1sP fc-classic-dNl fc-classic-XpK fc-classic-N2M fc-classic-wwb",info.borderlessX&&"fc-classic-Apf"),toolbarSectionClass:"fc-classic-yi0 fc-classic-dl1 fc-classic-1sP fc-classic-XpK fc-classic-wwb",toolbarTitleClass:"fc-classic-AVD fc-classic-DIS",buttonGroupClass:"fc-classic-dl1 fc-classic-1sP fc-classic-XpK",buttonClass:info=>joinClassNames("fc-classic-dl6 fc-classic-1Wx fc-classic-dl1 fc-classic-1sP fc-classic-XpK fc-classic-sOR fc-classic-lYz fc-classic-vwH fc-classic-9yp fc-classic-RnT fc-classic-cfp fc-classic-Z9U",info.isIconOnly?"fc-classic-Eaq":"fc-classic-Apf",info.buttonGroup?"fc-classic-uk6 fc-classic-Tuc":"fc-classic-Ig4",info.isSelected?"fc-classic-rQI fc-classic-Adi":"fc-classic-vXO fc-classic-bqK fc-classic-aIH fc-classic-nQ5 fc-classic-JWq fc-classic-9Rj fc-classic-5ky",info.isDisabled&&"fc-classic-Q3Z fc-classic-3Lc"),buttons:{prev:{iconContent:()=>chevronLeft(`${buttonIconClass} fc-classic-asP`)},next:{iconContent:()=>chevronLeft(`${buttonIconClass} fc-classic-jmT fc-classic-jY6`)},prevYear:{iconContent:()=>chevronsLeft(`${buttonIconClass} fc-classic-asP`)},nextYear:{iconContent:()=>chevronsLeft(`${buttonIconClass} fc-classic-jmT fc-classic-jY6`)}},eventColor:"var(--fc-classic-event)",eventContrastColor:"var(--fc-classic-event-contrast)",eventClass:info=>joinClassNames(info.isDragging&&"fc-classic-n5m",info.event.url&&"fc-classic-JiE",info.isSelected?joinClassNames(outlineWidthClass,info.isDragging?"fc-classic-1kP":"fc-classic-tkw"):outlineWidthFocusClass,primaryOutlineColorClass),backgroundEventColor:"var(--fc-classic-background-event)",backgroundEventClass:"fc-classic-hsC fc-classic-jsy fc-classic-DO7",backgroundEventTitleClass:info=>joinClassNames("fc-classic-MGT fc-classic-L1Y",info.isNarrow?`fc-classic-KUX ${xxsTextClass}`:"fc-classic-XJa fc-classic-a3B"),listItemEventClass:"fc-classic-XpK",listItemEventBeforeClass:"fc-classic-lNM fc-classic-AAA",listItemEventInnerClass:"fc-classic-GAX",blockEventClass:info=>joinClassNames("fc-classic-bCs fc-classic-eYX fc-classic-d0j fc-classic-DO7 fc-classic-YjJ fc-classic-vwH",info.isDragging&&!info.isSelected&&"fc-classic-iTG",outlineOffsetClass),blockEventInnerClass:"fc-classic-i9F fc-classic-cfp",blockEventTimeClass:"fc-classic-TZ4 fc-classic-pKG fc-classic-1Zl",blockEventTitleClass:"fc-classic-TZ4 fc-classic-pKG fc-classic-OLq",rowEventClass:info=>joinClassNames("fc-classic-Ika fc-classic-JIC",info.isStart&&"fc-classic-3J4",info.isEnd&&"fc-classic-USt"),rowEventBeforeClass:info=>joinClassNames(info.isStartResizable&&joinClassNames(info.isSelected?rowTouchResizerClass:rowPointerResizerClass,"fc-classic-11a")),rowEventAfterClass:info=>joinClassNames(info.isEndResizable&&joinClassNames(info.isSelected?rowTouchResizerClass:rowPointerResizerClass,"fc-classic-bEw")),rowEventInnerClass:info=>joinClassNames("fc-classic-dl1 fc-classic-1sP fc-classic-XpK",info.isNarrow?xxsTextClass:"fc-classic-a3B"),rowEventTimeClass:"fc-classic-DIS",columnEventClass:info=>joinClassNames("fc-classic-1Wx fc-classic-A3h fc-classic-yKG",info.isStart&&"fc-classic-ku3 fc-classic-Z7Q",info.isEnd&&"fc-classic-Ika fc-classic-zi1 fc-classic-2qh"),columnEventBeforeClass:info=>joinClassNames(info.isStartResizable&&joinClassNames(info.isSelected?columnTouchResizerClass:columnPointerResizerClass,"fc-classic-YDC")),columnEventAfterClass:info=>joinClassNames(info.isEndResizable&&joinClassNames(info.isSelected?columnTouchResizerClass:columnPointerResizerClass,"fc-classic-fJL")),columnEventInnerClass:info=>joinClassNames("fc-classic-dl1",info.isShort?"fc-classic-KUX fc-classic-1sP fc-classic-XpK fc-classic-NWN":"fc-classic-oQ2 fc-classic-sgX"),columnEventTimeClass:info=>joinClassNames(!info.isShort&&"fc-classic-166",xxsTextClass),columnEventTitleClass:info=>joinClassNames(!info.isShort&&"fc-classic-2rx",info.isShort||info.isNarrow?xxsTextClass:"fc-classic-a3B"),moreLinkClass:`${outlineWidthFocusClass} ${primaryOutlineColorClass}`,moreLinkInnerClass:"fc-classic-TZ4 fc-classic-pKG",columnMoreLinkClass:`fc-classic-Ika fc-classic-Fvv fc-classic-wsy fc-classic-d0j fc-classic-4MR ${strongSolidPressableClass} fc-classic-vwH fc-classic-A3h fc-classic-yKG ${outlineOffsetClass}`,columnMoreLinkInnerClass:info=>joinClassNames("fc-classic-KUX",info.isNarrow?xxsTextClass:"fc-classic-a3B"),dayHeaderAlign:info=>info.inPopover?"start":"center",dayHeaderClass:info=>joinClassNames("fc-classic-E9P",info.isDisabled&&"fc-classic-iYS",info.inPopover?"fc-classic-zi1 fc-classic-C1x fc-classic-k3f":joinClassNames("fc-classic-wsy",info.isMajor?"fc-classic-C0k":"fc-classic-C1x")),dayHeaderInnerClass:info=>joinClassNames("fc-classic-rVY fc-classic-cJ3 fc-classic-dl1 fc-classic-sgX",info.isNarrow?xxsTextClass:"fc-classic-9yp"),dayHeaderDividerClass:"fc-classic-zi1 fc-classic-C1x",dayCellClass:getDayClass,dayCellTopClass:info=>joinClassNames(info.isNarrow?"fc-classic-toR":"fc-classic-84e","fc-classic-dl1 fc-classic-1sP fc-classic-LMv"),dayCellTopInnerClass:info=>joinClassNames("fc-classic-rVY fc-classic-TZ4",info.isNarrow?`fc-classic-cJ3 ${xxsTextClass}`:"fc-classic-V9v fc-classic-9yp",info.isOther&&"fc-classic-taq",info.monthText&&"fc-classic-DIS"),dayCellInnerClass:info=>joinClassNames(info.inPopover&&"fc-classic-3N5"),popoverClass:"fc-classic-Jk3 fc-classic-GAX fc-classic-wsy fc-classic-C1x fc-classic-tkw fc-classic-aNc fc-classic-n5m",popoverCloseClass:`fc-classic-bCs fc-classic-1EY fc-classic-2ik fc-classic-2w8 ${outlineWidthFocusClass} ${primaryOutlineColorClass} fc-classic-Z9U`,popoverCloseContent:()=>x("fc-classic-XUJ fc-classic-9yp fc-classic-mAY"),dayLaneClass:getDayClass,dayLaneInnerClass:info=>info.isStack?"fc-classic-gMS":info.isNarrow?"fc-classic-148":"fc-classic-Jzj fc-classic-B3G",slotLaneClass:getSlotClass,listDayHeaderClass:"fc-classic-zi1 fc-classic-C1x fc-classic-SDU fc-classic-nHS fc-classic-dl1 fc-classic-1sP fc-classic-XpK fc-classic-N2M",listDayHeaderInnerClass:"fc-classic-Apf fc-classic-dl6 fc-classic-9yp fc-classic-DIS",singleMonthClass:info=>joinClassNames(info.multiMonthColumns>1&&"fc-classic-jD5",info.multiMonthColumns===1&&!info.isLast&&"fc-classic-zi1 fc-classic-C1x"),singleMonthHeaderClass:info=>joinClassNames(info.multiMonthColumns>1?"fc-classic-cM0":"fc-classic-dl6 fc-classic-zi1 fc-classic-C1x fc-classic-Jk3","fc-classic-XpK"),singleMonthHeaderInnerClass:"fc-classic-1Po fc-classic-DIS",tableHeaderClass:"fc-classic-Jk3",fillerClass:"fc-classic-wsy fc-classic-C1x fc-classic-lMo",dayHeaderRowClass:"fc-classic-wsy fc-classic-C1x",dayRowClass:"fc-classic-wsy fc-classic-C1x",slotHeaderRowClass:"fc-classic-wsy fc-classic-C1x",slotHeaderClass:getSlotClass,navLinkClass:`fc-classic-Eu0 ${outlineWidthFocusClass} ${outlineInsetClass} ${primaryOutlineColorClass}`,inlineWeekNumberClass:info=>joinClassNames("fc-classic-1EY fc-classic-n9G fc-classic-rbS fc-classic-C2g fc-classic-KUX fc-classic-HXA fc-classic-m9h fc-classic-k3f",info.isNarrow?xxsTextClass:"fc-classic-9yp"),nonBusinessHoursClass:"fc-classic-iYS",highlightClass:"fc-classic-hLU",resourceDayHeaderAlign:"center",resourceDayHeaderClass:info=>joinClassNames("fc-classic-wsy",info.isMajor?"fc-classic-C0k":"fc-classic-C1x"),resourceDayHeaderInnerClass:info=>joinClassNames("fc-classic-rVY fc-classic-cJ3 fc-classic-dl1 fc-classic-sgX",info.isNarrow?xxsTextClass:"fc-classic-9yp"),resourceColumnHeaderClass:"fc-classic-wsy fc-classic-C1x fc-classic-E9P",resourceColumnHeaderInnerClass:"fc-classic-bvX fc-classic-9yp",resourceColumnResizerClass:"fc-classic-1EY fc-classic-AWB fc-classic-4Tv fc-classic-dnf",resourceGroupHeaderClass:"fc-classic-wsy fc-classic-C1x fc-classic-k3f",resourceGroupHeaderInnerClass:"fc-classic-bvX fc-classic-9yp",resourceCellClass:"fc-classic-wsy fc-classic-C1x",resourceCellInnerClass:"fc-classic-bvX fc-classic-9yp",resourceIndentClass:"fc-classic-Mde fc-classic-kp0 fc-classic-E9P",resourceExpanderClass:`fc-classic-bCs ${outlineWidthFocusClass} ${primaryOutlineColorClass}`,resourceExpanderContent:info=>info.isExpanded?minusSquare(expanderIconClass):plusSquare(expanderIconClass),resourceHeaderRowClass:"fc-classic-wsy fc-classic-C1x",resourceRowClass:"fc-classic-wsy fc-classic-C1x",resourceColumnDividerClass:"fc-classic-1Wx fc-classic-C1x fc-classic-a7i fc-classic-k3f",resourceGroupLaneClass:"fc-classic-wsy fc-classic-C1x fc-classic-k3f",resourceLaneClass:"fc-classic-wsy fc-classic-C1x",resourceLaneBottomClass:info=>info.options.eventOverlap&&"fc-classic-zrJ",timelineBottomClass:"fc-classic-zrJ"},views:{dayGrid:{...dayRowCommonClasses,dayCellBottomClass:"fc-classic-toR"},multiMonth:{...dayRowCommonClasses,dayCellBottomClass:"fc-classic-toR",tableClass:info=>joinClassNames(info.multiMonthColumns>1&&"fc-classic-C1x fc-classic-wsy")},timeGrid:{...dayRowCommonClasses,dayCellBottomClass:"fc-classic-mhE",weekNumberHeaderClass:"fc-classic-XpK fc-classic-LMv",weekNumberHeaderInnerClass:info=>joinClassNames("fc-classic-rVY fc-classic-cJ3",info.isNarrow?xxsTextClass:"fc-classic-9yp"),allDayHeaderClass:"fc-classic-XpK fc-classic-LMv",allDayHeaderInnerClass:info=>joinClassNames("fc-classic-rVY fc-classic-2tF fc-classic-2HE",info.isNarrow?xxsTextClass:"fc-classic-9yp"),allDayDividerClass:"fc-classic-JIC fc-classic-C1x fc-classic-8ub fc-classic-k3f",slotHeaderClass:"fc-classic-LMv",slotHeaderInnerClass:info=>joinClassNames("fc-classic-rVY fc-classic-cJ3",info.isNarrow?xxsTextClass:"fc-classic-9yp"),slotHeaderDividerClass:"fc-classic-USt fc-classic-C1x",nowIndicatorHeaderClass:"fc-classic-rbS fc-classic-a10 fc-classic-XM3 fc-classic-rif fc-classic-jIH fc-classic-0qY",nowIndicatorLineClass:"fc-classic-ku3 fc-classic-sYT"},list:{listDayClass:info=>joinClassNames(!info.isLast&&"fc-classic-zi1 fc-classic-C1x"),listItemEventClass:info=>joinClassNames("fc-classic-bCs fc-classic-Apf fc-classic-dl6 fc-classic-wwb fc-classic-ku3 fc-classic-C1x",info.isInteractive?joinClassNames(faintHoverPressableClass,outlineInsetClass):faintHoverClass),listItemEventBeforeClass:"fc-classic-GOm",listItemEventInnerClass:"fc-classic-eF2",listItemEventTimeClass:"fc-classic-88I fc-classic-yi0 fc-classic-roZ fc-classic-kMV fc-classic-TZ4 fc-classic-pKG fc-classic-IPx fc-classic-9yp",listItemEventTitleClass:info=>joinClassNames("fc-classic-1El fc-classic-2KU fc-classic-TZ4 fc-classic-pKG fc-classic-9yp",info.event.url&&"fc-classic-Ogp"),noEventsClass:"fc-classic-k3f fc-classic-dl1 fc-classic-sgX fc-classic-XpK fc-classic-E9P",noEventsInnerClass:"fc-classic-OUe fc-classic-jGI fc-classic-P9h"},timeline:{rowEventClass:info=>joinClassNames(info.isEnd&&"fc-classic-9hC","fc-classic-XpK"),rowEventBeforeClass:info=>!info.isStart&&`${continuationArrowClass} fc-classic-Bda fc-classic-5JV`,rowEventAfterClass:info=>!info.isEnd&&`${continuationArrowClass} fc-classic-hhi fc-classic-LaM`,rowEventInnerClass:info=>info.options.eventOverlap?"fc-classic-2rx":"fc-classic-End",rowEventTimeClass:"fc-classic-oQ2",rowEventTitleClass:"fc-classic-oQ2",rowMoreLinkClass:`fc-classic-9hC fc-classic-Ika fc-classic-wsy fc-classic-d0j fc-classic-4MR ${strongSolidPressableClass} fc-classic-vwH`,rowMoreLinkInnerClass:"fc-classic-KUX fc-classic-a3B",slotHeaderAlign:info=>info.isTime?"start":"center",slotHeaderClass:info=>joinClassNames("fc-classic-E9P",!info.level&&"fc-classic-pKG"),slotHeaderInnerClass:info=>joinClassNames("fc-classic-fn8 fc-classic-V9v fc-classic-9yp",info.hasNavLink&&"fc-classic-Eu0"),slotHeaderDividerClass:"fc-classic-zi1 fc-classic-C1x",nowIndicatorHeaderClass:"fc-classic-n9G fc-classic-J04 fc-classic-ybF fc-classic-Pqk fc-classic-bLA fc-classic-sYT",nowIndicatorLineClass:"fc-classic-3J4 fc-classic-sYT"}}};function chevronLeft(className){return(0,import_jsx_runtime9.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,import_jsx_runtime9.jsx)("polyline",{points:"15 18 9 12 15 6"})})}function chevronsLeft(className){return(0,import_jsx_runtime9.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",className,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,import_jsx_runtime9.jsx)("polyline",{points:"11 17 6 12 11 7"}),(0,import_jsx_runtime9.jsx)("polyline",{points:"18 17 13 12 18 7"})]})}function x(className){return(0,import_jsx_runtime9.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",className,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,import_jsx_runtime9.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,import_jsx_runtime9.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}function plusSquare(className){return(0,import_jsx_runtime9.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",className,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,import_jsx_runtime9.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),(0,import_jsx_runtime9.jsx)("line",{x1:"12",y1:"8",x2:"12",y2:"16"}),(0,import_jsx_runtime9.jsx)("line",{x1:"8",y1:"12",x2:"16",y2:"12"})]})}function minusSquare(className){return(0,import_jsx_runtime9.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",className,width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,import_jsx_runtime9.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),(0,import_jsx_runtime9.jsx)("line",{x1:"8",y1:"12",x2:"16",y2:"12"})]})}var import_jsx_runtime11=require("react/jsx-runtime");var import_jsx_runtime10=require("react/jsx-runtime");var import_react9=require("react");var EMPTY_EVENT_STORE=createEmptyEventStore(),Splitter=class{constructor(){this.getKeysForEventDefs=memoize2(this._getKeysForEventDefs),this.splitDateSelection=memoize2(this._splitDateSpan),this.splitEventStore=memoize2(this._splitEventStore),this.splitIndividualUi=memoize2(this._splitIndividualUi),this.splitEventDrag=memoize2(this._splitInteraction),this.splitEventResize=memoize2(this._splitInteraction),this.eventUiBuilders={}}splitProps(props){let keyInfos=this.getKeyInfo(props),defKeys=this.getKeysForEventDefs(props.eventStore),dateSelections=this.splitDateSelection(props.dateSelection),individualUi=this.splitIndividualUi(props.eventUiBases,defKeys),eventStores=this.splitEventStore(props.eventStore,defKeys),eventDrags=this.splitEventDrag(props.eventDrag),eventResizes=this.splitEventResize(props.eventResize),splitProps={};this.eventUiBuilders=mapHash(keyInfos,(info,key)=>this.eventUiBuilders[key]||memoize2(buildEventUiForKey));for(let key in keyInfos){let keyInfo=keyInfos[key],eventStore=eventStores[key]||EMPTY_EVENT_STORE,buildEventUi=this.eventUiBuilders[key];splitProps[key]={businessHours:keyInfo.businessHours||props.businessHours,dateSelection:dateSelections[key]||null,eventStore,eventUiBases:buildEventUi(props.eventUiBases[""],keyInfo.ui,individualUi[key]),eventDrag:eventDrags[key]||null,eventResize:eventResizes[key]||null,eventSelection:eventStore.instances[props.eventSelection]?props.eventSelection:""}}return splitProps}_splitDateSpan(dateSpan){let dateSpans={};if(dateSpan){let keys=this.getKeysForDateSpan(dateSpan);for(let key of keys)dateSpans[key]=dateSpan}return dateSpans}_getKeysForEventDefs(eventStore){return mapHash(eventStore.defs,eventDef=>this.getKeysForEventDef(eventDef))}_splitEventStore(eventStore,defKeys){let{defs,instances}=eventStore,splitStores={};for(let defId in defs)for(let key of defKeys[defId])splitStores[key]||(splitStores[key]=createEmptyEventStore()),splitStores[key].defs[defId]=defs[defId];for(let instanceId in instances){let instance=instances[instanceId];for(let key of defKeys[instance.defId])splitStores[key]&&(splitStores[key].instances[instanceId]=instance)}return splitStores}_splitIndividualUi(eventUiBases,defKeys){let splitHashes={};for(let defId in eventUiBases)if(defId)for(let key of defKeys[defId])splitHashes[key]||(splitHashes[key]={}),splitHashes[key][defId]=eventUiBases[defId];return splitHashes}_splitInteraction(interaction){let splitStates={};if(interaction){let affectedStores=this._splitEventStore(interaction.affectedEvents,this._getKeysForEventDefs(interaction.affectedEvents)),mutatedKeysByDefId=this._getKeysForEventDefs(interaction.mutatedEvents),mutatedStores=this._splitEventStore(interaction.mutatedEvents,mutatedKeysByDefId),populate=key=>{splitStates[key]||(splitStates[key]={affectedEvents:affectedStores[key]||EMPTY_EVENT_STORE,mutatedEvents:mutatedStores[key]||EMPTY_EVENT_STORE,isEvent:interaction.isEvent})};for(let key in affectedStores)populate(key);for(let key in mutatedStores)populate(key)}return splitStates}};function buildEventUiForKey(allUi,eventUiForKey,individualUi){let baseParts=[];allUi&&baseParts.push(allUi),eventUiForKey&&baseParts.push(eventUiForKey);let stuff={"":combineEventUis(baseParts)};return individualUi&&Object.assign(stuff,individualUi),stuff}var AllDaySplitter=class extends Splitter{getKeyInfo(){return{allDay:{},timed:{}}}getKeysForDateSpan(dateSpan){return dateSpan.allDay?["allDay"]:["timed"]}getKeysForEventDef(eventDef){return eventDef.allDay?hasBgRendering(eventDef)?["timed","allDay"]:["allDay"]:["timed"]}},DayTimeColsSlicer=class extends Slicer{sliceRange(range,dayRanges){let segs=[];for(let col=0;col<dayRanges.length;col+=1){let segRange=intersectRanges(range,dayRanges[col]);segRange&&segs.push({startDate:segRange.start,endDate:segRange.end,isStart:segRange.start.valueOf()===range.start.valueOf(),isEnd:segRange.end.valueOf()===range.end.valueOf(),col})}return segs}};function organizeSegsByCol(segs,colCount){let segsByCol=[],i;for(i=0;i<colCount;i+=1)segsByCol.push([]);if(segs)for(i=0;i<segs.length;i+=1)segsByCol[segs[i].col].push(segs[i]);return segsByCol}function splitInteractionByCol(ui,colCount){let byRow=[];if(ui){for(let i=0;i<colCount;i+=1)byRow[i]={affectedInstances:ui.affectedInstances,isEvent:ui.isEvent,segs:[]};for(let seg of ui.segs)byRow[seg.col].segs.push(seg)}else for(let i=0;i<colCount;i+=1)byRow[i]=null;return byRow}var STOCK_SUB_DURATIONS=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];function buildSlatMetas(slotMinTime,slotMaxTime,explicitLabelInterval,slotDuration,dateEnv){let dayStart=new Date(0),slatTime=slotMinTime,slatIterator=createDuration(0),labelInterval=explicitLabelInterval||computeLabelInterval(slotDuration),metas=[],i=0;for(;asRoughMs(slatTime)<asRoughMs(slotMaxTime);){let date=dateEnv.add(dayStart,slatTime),isLabeled=wholeDivideDurations(slatIterator,labelInterval)!==null;metas.push({date,time:slatTime,key:date.toISOString(),isoTimeStr:formatIsoTimeString(date),isLabeled,isFirst:i===0}),slatTime=addDurations(slatTime,slotDuration),slatIterator=addDurations(slatIterator,slotDuration),i+=1}return metas}function computeLabelInterval(slotDuration){let i,labelInterval,slotsPerLabel;for(i=STOCK_SUB_DURATIONS.length-1;i>=0;i-=1)if(labelInterval=createDuration(STOCK_SUB_DURATIONS[i]),slotsPerLabel=wholeDivideDurations(labelInterval,slotDuration),slotsPerLabel!==null&&slotsPerLabel>1)return labelInterval;return slotDuration}var TimeGridAllDayHeader=class extends BaseComponent{constructor(){super(...arguments),this.innerElRef=(0,import_react9.createRef)()}render(){let{props}=this,{options,viewApi}=this.context,renderProps={text:options.allDayText,view:viewApi,isNarrow:props.isNarrow};return(0,import_jsx_runtime10.jsx)(ContentContainer,{tag:"div",attrs:{role:"rowheader"},className:joinClassNames(classNames.flexRow,classNames.noMargin,classNames.noPadding,classNames.contentBox),style:{width:props.width},renderProps,generatorName:"allDayHeaderContent",customGenerator:options.allDayHeaderContent,defaultGenerator:renderAllDayInner,classNameGenerator:options.allDayHeaderClass,didMount:options.allDayHeaderDidMount,willUnmount:options.allDayHeaderWillUnmount,children:InnerContent=>(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(classNames.flexRow,classNames.noShrink,classNames.whiteSpacePre),ref:this.innerElRef,children:(0,import_jsx_runtime10.jsx)(InnerContent,{tag:"div",className:generateClassName(options.allDayHeaderInnerClass,renderProps)})})})}componentDidMount(){this._isUnmounting=!1;let{props}=this,innerEl=this.innerElRef.current;this.disconnectInnerWidth=watchWidth(innerEl,width=>{this._isUnmounting||setRef(props.innerWidthRef,width)})}componentWillUnmount(){this._isUnmounting=!0,this.disconnectInnerWidth(),setRef(this.props.innerWidthRef,null)}};function renderAllDayInner(renderProps){return renderProps.text}var TimeGridAllDayLane=class extends DateComponent{constructor(){super(...arguments),this.heightRef=(0,import_react9.createRef)(),this.handleRootEl=rootEl=>{this.rootEl=rootEl,rootEl?this.context.registerInteractiveComponent(this,{el:rootEl}):this.context.unregisterInteractiveComponent(this)}}render(){return(0,import_jsx_runtime10.jsx)(DayGridRow,{...this.props,rootElRef:this.handleRootEl,heightRef:this.heightRef})}queryHit(isRtl,positionLeft,positionTop,elWidth){let{props,heightRef}=this,colCount=props.cells.length,{col,left,right}=computeColFromPosition(positionLeft,elWidth,props.colWidth,colCount,isRtl),cell=props.cells[col],cellStartDate=cell.date,cellEndDate=addDays4(cellStartDate,1);return{dateProfile:props.dateProfile,dateSpan:{range:{start:cellStartDate,end:cellEndDate},allDay:!0,...cell.dateSpanProps},getDayEl:()=>getCellEl(this.rootEl,col),rect:{left,right,top:0,bottom:heightRef.current},layer:0}}};function buildTimeColsModel(dateProfile,dateProfileGenerator,dateEnv){let daySeries=new DaySeriesModel(dateProfile.renderRange,dateProfileGenerator);return new DayTableModel(daySeries,!1,dateEnv)}function buildDayRanges(dayTableModel,dateProfile,dateEnv){let ranges=[];for(let date of dayTableModel.headerDates)ranges.push({start:dateEnv.add(date,dateProfile.slotMinTime),end:dateEnv.add(date,dateProfile.slotMaxTime)});return ranges}function computeSlatHeight(expandRows,slatCnt,explicitSlatMinHeight=0,slatInnerHeight,scrollerHeight){if(!slatInnerHeight||!scrollerHeight)return[void 0,!1];let slatMinHeight=Math.max(slatInnerHeight+1,explicitSlatMinHeight),slatLiquidHeight=scrollerHeight/slatCnt,slatLiquid,slatHeight;return expandRows&&slatLiquidHeight>=slatMinHeight?(slatLiquid=!0,slatHeight=slatLiquidHeight):(slatLiquid=!1,slatHeight=slatMinHeight),[slatHeight,slatLiquid]}function computeDateTopFrac(date,dateProfile,startOfDayDate){return startOfDayDate||(startOfDayDate=startOfDay4(date)),computeTimeTopFrac(createDuration(date.valueOf()-startOfDayDate.valueOf()),dateProfile)}function computeTimeTopFrac(time,dateProfile){let startMs=asRoughMs(dateProfile.slotMinTime),endMs=asRoughMs(dateProfile.slotMaxTime),frac=(time.milliseconds-startMs)/(endMs-startMs);return frac=Math.max(0,frac),frac=Math.min(1,frac),frac}function computeFgSegVerticals2(segs,dateProfile,colDate,slatCnt,slatHeight,eventMinHeight,eventShortHeight){let res=[];if(slatHeight!=null){let totalHeight=slatHeight*slatCnt;for(let seg of segs){let startFrac=computeDateTopFrac(seg.startDate,dateProfile,colDate),endFrac=computeDateTopFrac(seg.endDate,dateProfile,colDate),startCoord=startFrac*totalHeight,endCoord=endFrac*totalHeight,height=endCoord-startCoord;eventMinHeight!=null&&height<eventMinHeight&&(height=eventMinHeight,endCoord=startCoord+height),res.push({start:startCoord,end:endCoord,size:height,isShort:height<=eventShortHeight})}}return res}function buildWebPositioning(segs,segVerticals,strictOrder,maxDepth){let segRanges=[];for(let i=0;i<segs.length;i++){let segVertical=segVerticals[i];segVertical&&segRanges.push({...segs[i],start:segVertical.start,end:segVertical.end})}let hierarchy=new SegHierarchy(segRanges,void 0,strictOrder,void 0,maxDepth),web=buildWeb(hierarchy);web=stretchWeb(web,1);let segRects=webToRects(web),hiddenGroups=groupIntersectingSegs(hierarchy.hiddenSegs);return[segRects,hiddenGroups]}function buildWeb(hierarchy){let{placementsByLevel}=hierarchy,buildNode=cacheable((level,lateral)=>level+":"+lateral,(level,lateral)=>{let siblingRange=findNextLevelSegs(hierarchy,level,lateral),[nextLevelNodes,maxPressure]=buildNodes(siblingRange,buildNode),segPlacement=placementsByLevel[level][lateral];return[{...segPlacement,nextLevelNodes},segPlacement.thickness+maxPressure]}),[topLevelNodes]=buildNodes(placementsByLevel.length?{level:0,lateralStart:0,lateralEnd:placementsByLevel[0].length}:null,buildNode);return topLevelNodes}function buildNodes(siblingRange,buildNode){if(!siblingRange)return[[],0];let{level,lateralStart,lateralEnd}=siblingRange,lateral=lateralStart,pairs=[];for(;lateral<lateralEnd;)pairs.push(buildNode(level,lateral)),lateral+=1;return pairs.sort(cmpDescPressures),[pairs.map(extractNode),pairs[0][1]]}function cmpDescPressures(a,b){return b[1]-a[1]}function extractNode(a){return a[0]}function findNextLevelSegs(hierarchy,subjectLevel,subjectLateral){let{levelCoords,placementsByLevel}=hierarchy,subjectPlacement=placementsByLevel[subjectLevel][subjectLateral],afterSubject=levelCoords[subjectLevel]+subjectPlacement.thickness,levelCnt=levelCoords.length,level=subjectLevel;for(;level<levelCnt&&levelCoords[level]<afterSubject;level+=1);for(;level<levelCnt;level+=1){let placements=placementsByLevel[level],placement,searchIndex=binarySearch(placements,subjectPlacement.start,getCoordRangeEnd),lateralStart=searchIndex[0]+searchIndex[1],lateralEnd=lateralStart;for(;(placement=placements[lateralEnd])&&placement.start<subjectPlacement.end;)lateralEnd+=1;if(lateralStart<lateralEnd)return{level,lateralStart,lateralEnd}}return null}function stretchWeb(topLevelNodes,totalThickness){let stretchNode=cacheable((node,startCoord,prevThickness)=>getEventKey(node),(node,startCoord,prevThickness)=>{let{nextLevelNodes,thickness}=node,allThickness=thickness+prevThickness,thicknessFraction=thickness/allThickness,endCoord,newChildren=[];if(!nextLevelNodes.length)endCoord=totalThickness;else for(let childNode of nextLevelNodes)if(endCoord===void 0){let res=stretchNode(childNode,startCoord,allThickness);endCoord=res[0],newChildren.push(res[1])}else{let res=stretchNode(childNode,endCoord,0);newChildren.push(res[1])}let newThickness=(endCoord-startCoord)*thicknessFraction;return[endCoord-newThickness,{...node,thickness:newThickness,nextLevelNodes:newChildren}]});return topLevelNodes.map(node=>stretchNode(node,0,0)[1])}function webToRects(topLevelNodes){let rectMap=new Map,processNode=cacheable((node,levelCoord,stackDepth)=>getEventKey(node),(node,levelCoord,stackDepth)=>{let rect={...node,levelCoord,stackDepth,stackForward:0};return rectMap.set(rect.eventRange.instance.instanceId,rect),rect.stackForward=processNodes(node.nextLevelNodes,levelCoord+node.thickness,stackDepth+1)});function processNodes(nodes,levelCoord,stackDepth){let stackForward=0;for(let node of nodes)stackForward=Math.max(processNode(node,levelCoord,stackDepth)+1,stackForward);return stackForward}return processNodes(topLevelNodes,0,0),rectMap}function cacheable(keyFunc,workFunc){let cache={};return(...args)=>{let key=keyFunc(...args);return key in cache?cache[key]:cache[key]=workFunc(...args)}}var DEFAULT_TIME_FORMAT=createFormatter({hour:"numeric",minute:"2-digit",meridiem:!1}),TimeGridEvent=class extends BaseComponent{render(){let{props}=this;return(0,import_jsx_runtime10.jsx)(StandardEvent,{...props,display:"column",level:props.level,isNarrow:props.isNarrow,isShort:props.isShort,className:props.isLiquid?classNames.liquid:"",disableLiquid:!props.isLiquid,defaultTimeFormat:DEFAULT_TIME_FORMAT})}},TimeGridMoreLink=class extends BaseComponent{render(){let{props}=this;return(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(classNames.abs,classNames.flexCol),style:{top:props.top,height:props.height,insetInlineEnd:0,zIndex:9999},children:(0,import_jsx_runtime10.jsx)(MoreLinkContainer,{className:classNames.liquid,display:"column",allDayDate:null,segs:props.hiddenSegs,hiddenSegs:props.hiddenSegs,dateSpanProps:props.dateSpanProps,dateProfile:props.dateProfile,todayRange:props.todayRange,popoverContent:()=>renderPlainFgSegs(props.hiddenSegs,props,!1),forceTimed:!0,isNarrow:props.isNarrow,isMicro:props.isMicro})})}},NowIndicatorDot=props=>(0,import_jsx_runtime10.jsx)(ViewContextType.Consumer,{children:context=>{let{options}=context;return(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(props.className,options.nowIndicatorDotClass),style:props.style})}}),NowIndicatorLineContainer=props=>(0,import_jsx_runtime10.jsx)(ViewContextType.Consumer,{children:context=>{let{options}=context,renderProps={date:context.dateEnv.toDate(props.date),view:context.viewApi};return(0,import_jsx_runtime10.jsx)(ContentContainer,{elRef:props.elRef,tag:props.tag||"div",attrs:props.attrs,className:props.className,style:props.style,renderProps,generatorName:"nowIndicatorLineContent",customGenerator:options.nowIndicatorLineContent,classNameGenerator:options.nowIndicatorLineClass,didMount:options.nowIndicatorLineDidMount,willUnmount:options.nowIndicatorLineWillUnmount,children:props.children})}});function TimeGridNowIndicatorLine(props){let top=props.totalHeight!=null?props.totalHeight*computeDateTopFrac(props.nowDate,props.dateProfile,props.dayDate):void 0;return(0,import_jsx_runtime10.jsxs)("div",{className:classNames.fill,style:{zIndex:2,pointerEvents:"none"},children:[(0,import_jsx_runtime10.jsx)(NowIndicatorLineContainer,{className:joinClassNames(classNames.fillX,classNames.noMarginX,classNames.borderlessX),style:{top},date:props.nowDate}),(props.showDot??!0)&&(0,import_jsx_runtime10.jsx)(NowIndicatorDot,{className:joinClassNames(classNames.abs,classNames.start0),style:{top}})]})}var isBrowserPrintQuirky=typeof navigator<"u"&&navigator.userAgent.toLowerCase().includes("firefox"),TimeGridCol=class extends BaseComponent{constructor(){super(...arguments),this.sortEventSegs=memoize2(sortEventSegs),this.getDateMeta=memoize2(getDateMeta)}render(){let{props,context}=this,{options,dateEnv}=context,isSelectMirror=options.selectMirror,mirrorSegs=props.eventDrag&&props.eventDrag.segs||props.eventResize&&props.eventResize.segs||isSelectMirror&&props.dateSelectionSegs||[],dateMeta=this.getDateMeta(props.date,dateEnv,props.dateProfile,props.todayRange),baseClassName=joinClassNames(props.borderStart?classNames.borderOnlyS:classNames.borderNone,props.width==null&&classNames.liquid,classNames.rel),baseStyle={width:props.width,zIndex:1},isStack=this.getIsStack(),renderProps={...dateMeta,...props.renderProps,isStack,isNarrow:props.isNarrow,isMajor:props.isMajor,view:context.viewApi};if(dateMeta.isDisabled)return(0,import_jsx_runtime10.jsx)("div",{role:"gridcell","aria-disabled":!0,className:joinClassNames(generateClassName(options.dayLaneClass,renderProps),baseClassName),style:baseStyle});let innerClassName=joinClassNames(generateClassName(options.dayLaneInnerClass,renderProps),!isStack&&classNames.fill),sortedFgSegs=this.sortEventSegs(props.fgEventSegs,options.eventOrder);return(0,import_jsx_runtime10.jsx)(ContentContainer,{tag:"div",attrs:{...props.attrs,role:"gridcell",...dateMeta.isToday?{"aria-current":"date"}:{},"data-date":formatDayString(props.date)},className:baseClassName,style:baseStyle,renderProps,generatorName:void 0,classNameGenerator:options.dayLaneClass,didMount:options.dayLaneDidMount,willUnmount:options.dayLaneWillUnmount,children:()=>(0,import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment,{children:[this.renderFillSegs(props.businessHourSegs,"non-business"),this.renderFillSegs(props.bgEventSegs,"bg-event"),this.renderFillSegs(props.dateSelectionSegs,"highlight"),(0,import_jsx_runtime10.jsx)("div",{className:innerClassName,style:{zIndex:1},children:this.renderFgSegs(sortedFgSegs,!1)}),!!mirrorSegs.length&&(0,import_jsx_runtime10.jsx)("div",{className:innerClassName,style:{zIndex:1},children:this.renderFgSegs(mirrorSegs,!0)}),this.renderNowIndicator(props.nowIndicatorSegs)]})})}renderFgSegs(sortedFgSegs,isMirror){let{props}=this;return this.getIsStack()?renderPlainFgSegs(sortedFgSegs,props,isMirror):this.renderPositionedFgSegs(sortedFgSegs,isMirror)}renderPositionedFgSegs(segs,isMirror){let{props,context}=this,{date,dateProfile,eventSelection,todayRange,nowDate}=props,{eventMaxStack,eventShortHeight,eventOrderStrict,eventMinHeight}=context.options,segVerticals=computeFgSegVerticals2(segs,dateProfile,date,props.slatCnt,props.slatHeight,eventMinHeight,eventShortHeight),[segRects,hiddenGroups]=buildWebPositioning(segs,segVerticals,eventOrderStrict,eventMaxStack);return(0,import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment,{children:[segs.map((seg,index2)=>{let{eventRange}=seg,{instanceId}=eventRange.instance,segVertical=segVerticals[index2]||{},segRect=segRects.get(instanceId),hStyle=!isMirror&&segRect?this.computeSegHStyle(segRect):{left:0,right:0,zIndex:0},isSelected=instanceId===eventSelection;isSelected&&(hStyle.zIndex+=1e3);let isDragging=!!(props.eventDrag&&props.eventDrag.affectedInstances[instanceId]),isResizing=!!(props.eventResize&&props.eventResize.affectedInstances[instanceId]),isInvisible=!isMirror&&(isDragging||isResizing||!segRect);return(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(classNames.abs,classNames.flexCol),style:{visibility:isInvisible?"hidden":void 0,top:segVertical.start,height:segVertical.size,...hStyle},children:(0,import_jsx_runtime10.jsx)(TimeGridEvent,{eventRange,slicedStart:seg.startDate,slicedEnd:seg.endDate,isStart:seg.isStart,isEnd:seg.isEnd,isDragging,isResizing,isMirror,isSelected,level:segRect?segRect.stackDepth:0,isNarrow:props.isNarrow,isShort:segVertical.isShort||!1,isLiquid:!0,...getEventRangeMeta(eventRange,todayRange,nowDate)})},instanceId)}),this.renderHiddenGroups(hiddenGroups)]})}renderHiddenGroups(hiddenGroups){let{dateSpanProps,dateProfile,todayRange,nowDate,eventSelection,eventDrag,eventResize,isNarrow,isMicro}=this.props;return(0,import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment,{children:hiddenGroups.map(hiddenGroup=>(0,import_jsx_runtime10.jsx)(TimeGridMoreLink,{hiddenSegs:hiddenGroup.segs,top:hiddenGroup.start,height:hiddenGroup.end-hiddenGroup.start,isNarrow,isMicro,dateSpanProps,dateProfile,todayRange,nowDate,eventSelection,eventDrag,eventResize},hiddenGroup.key))})}renderFillSegs(segs,fillType){let{props,context}=this,segVerticals=computeFgSegVerticals2(segs,props.dateProfile,props.date,props.slatCnt,props.slatHeight,context.options.eventMinHeight,context.options.eventShortHeight);return(0,import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment,{children:segs.map((seg,index2)=>{let{eventRange}=seg,segVertical=segVerticals[index2]||{};return(0,import_jsx_runtime10.jsx)("div",{className:classNames.fillX,style:{top:segVertical.start,height:segVertical.size,marginInlineStart:-1},children:fillType==="bg-event"?(0,import_jsx_runtime10.jsx)(BgEvent,{eventRange,isStart:seg.isStart,isEnd:seg.isEnd,isNarrow:props.isNarrow,isShort:segVertical.isShort||!1,isVertical:!0,...getEventRangeMeta(eventRange,props.todayRange,props.nowDate)}):renderFill(fillType,context.options)},buildEventRangeKey(eventRange))})})}renderNowIndicator(segs){let{props}=this;if(!(props.forPrint||this.getIsStack()))return segs.map((seg,i)=>(0,import_jsx_runtime10.jsx)(TimeGridNowIndicatorLine,{nowDate:seg.startDate,dayDate:props.date,dateProfile:props.dateProfile,totalHeight:props.slatHeight!=null?props.slatHeight*props.slatCnt:void 0,showDot:seg.showDot??!0},i))}computeSegHStyle(segRect){let{options}=this.context,shouldOverlap=options.slotEventOverlap,nearCoord=segRect.levelCoord,farCoord=segRect.levelCoord+segRect.thickness;shouldOverlap&&(farCoord=Math.min(1,nearCoord+(farCoord-nearCoord)*2));let props={zIndex:segRect.stackDepth+1,insetInlineStart:fracToCssDim(nearCoord),insetInlineEnd:fracToCssDim(1-farCoord),marginInlineEnd:void 0};return shouldOverlap&&segRect.stackForward&&(props.marginInlineEnd=20),props}getIsStack(){let{eventPrintLayout}=this.context.options;return this.props.forPrint&&(eventPrintLayout==="stack"||eventPrintLayout!=="grid"&&isBrowserPrintQuirky)}};function renderPlainFgSegs(sortedFgSegs,{todayRange,nowDate,eventSelection,eventDrag,eventResize},isMirror){return(0,import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment,{children:sortedFgSegs.map(seg=>{let{eventRange}=seg,{instanceId}=eventRange.instance,isDragging=!!(eventDrag&&eventDrag.affectedInstances[instanceId]),isResizing=!!(eventResize&&eventResize.affectedInstances[instanceId]),isInvisible=isDragging||isResizing;return(0,import_jsx_runtime10.jsx)("div",{className:classNames.breakInsideAvoid,style:{visibility:isInvisible?"hidden":void 0},children:(0,import_jsx_runtime10.jsx)(TimeGridEvent,{eventRange,slicedStart:seg.startDate,slicedEnd:seg.endDate,isStart:seg.isStart,isEnd:seg.isEnd,isDragging,isResizing,isMirror,isSelected:instanceId===eventSelection,level:0,isShort:!1,isNarrow:!1,disableResizing:!0,...getEventRangeMeta(eventRange,todayRange,nowDate)})},instanceId)})})}var TimeGridCols=class extends DateComponent{constructor(){super(...arguments),this.processSlotOptions=memoize2(processSlotOptions),this.handleRootEl=el=>{this.rootEl=el,el?this.context.registerInteractiveComponent(this,{el,isHitComboAllowed:this.props.isHitComboAllowed}):this.context.unregisterInteractiveComponent(this)}}render(){let{props}=this;return(0,import_jsx_runtime10.jsx)("div",{role:props.role,className:joinClassNames(props.className,classNames.flexRow),ref:this.handleRootEl,children:props.cells.map((cell,col)=>(0,import_jsx_runtime10.jsx)(TimeGridCol,{dateProfile:props.dateProfile,nowDate:props.nowDate,todayRange:props.todayRange,date:cell.date,isMajor:cell.isMajor,slatCnt:props.slatCnt,renderProps:cell.renderProps,attrs:cell.attrs,dateSpanProps:cell.dateSpanProps,forPrint:props.forPrint,borderStart:!!col,isNarrow:props.cellIsNarrow,isMicro:props.cellIsMicro,fgEventSegs:props.fgEventSegsByCol[col],bgEventSegs:props.bgEventSegsByCol[col],businessHourSegs:props.businessHourSegsByCol[col],nowIndicatorSegs:props.nowIndicatorSegsByCol[col],dateSelectionSegs:props.dateSelectionSegsByCol[col],eventDrag:props.eventDragByCol[col],eventResize:props.eventResizeByCol[col],eventSelection:props.eventSelection,width:props.colWidth,slatHeight:props.slatHeight},cell.key))})}queryHit(isRtl,positionLeft,positionTop,elWidth){let{dateProfile,cells,colWidth,slatHeight}=this.props,{dateEnv,options}=this.context,{snapDuration,snapsPerSlot}=this.processSlotOptions(options.slotDuration,options.snapDuration),colCount=cells.length,{col,left,right}=computeColFromPosition(positionLeft,elWidth,colWidth,colCount,isRtl),cell=cells[col],slatIndex=Math.floor(positionTop/slatHeight),slatTop=slatIndex*slatHeight,partial=(positionTop-slatTop)/slatHeight,localSnapIndex=Math.floor(partial*snapsPerSlot),snapIndex=slatIndex*snapsPerSlot+localSnapIndex,time=addDurations(dateProfile.slotMinTime,multiplyDuration(snapDuration,snapIndex)),start=dateEnv.add(cell.date,time),end=dateEnv.add(start,snapDuration);return{dateProfile,dateSpan:{range:{start,end},allDay:!1,...cell.dateSpanProps},getDayEl:()=>getCellEl(this.rootEl,col),rect:{left,right,top:slatTop,bottom:slatTop+slatHeight},layer:0}}};TimeGridCols.addPropsEquality({style:isPropsEqualShallow});function processSlotOptions(slotDuration,snapDurationOverride){let snapDuration=snapDurationOverride||slotDuration,snapsPerSlot=wholeDivideDurations(slotDuration,snapDuration);return snapsPerSlot===null&&(snapDuration=slotDuration,snapsPerSlot=1),{snapDuration,snapsPerSlot}}var NowIndicatorHeaderContainer=props=>(0,import_jsx_runtime10.jsx)(ViewContextType.Consumer,{children:context=>{let{options}=context,renderProps={date:context.dateEnv.toDate(props.date),view:context.viewApi};return(0,import_jsx_runtime10.jsx)(ContentContainer,{elRef:props.elRef,tag:props.tag||"div",attrs:props.attrs,className:props.className,style:props.style,renderProps,generatorName:"nowIndicatorHeaderContent",customGenerator:options.nowIndicatorHeaderContent,classNameGenerator:options.nowIndicatorHeaderClass,didMount:options.nowIndicatorHeaderDidMount,willUnmount:options.nowIndicatorHeaderWillUnmount,children:props.children})}});function TimeGridNowIndicatorArrow(props){return(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(classNames.fill,classNames.crop),style:{zIndex:2,pointerEvents:"none"},children:(0,import_jsx_runtime10.jsx)(NowIndicatorHeaderContainer,{className:classNames.abs,style:{top:props.totalHeight!=null?props.totalHeight*computeDateTopFrac(props.nowDate,props.dateProfile):void 0},date:props.nowDate})})}var DEFAULT_SLAT_LABEL_FORMAT=createFormatter({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"short"}),TimeGridSlatHeader=class extends BaseComponent{constructor(){super(...arguments),this.createRenderProps=memoize2(createRenderProps),this.innerElRef=(0,import_react9.createRef)()}render(){let{props,context}=this,{options}=context,headerFormat=options.slotHeaderFormat==null?DEFAULT_SLAT_LABEL_FORMAT:Array.isArray(options.slotHeaderFormat)?createFormatter(options.slotHeaderFormat[0]):createFormatter(options.slotHeaderFormat),renderProps=this.createRenderProps(props.date,props.time,!props.isLabeled,props.isNarrow,props.isFirst,headerFormat,context),className=joinClassNames(props.liquidHeight&&classNames.liquid,classNames.flexRow,classNames.alignStart,classNames.noMargin,classNames.noPadding,props.borderTop?classNames.borderOnlyT:classNames.borderNone);return props.isLabeled?(0,import_jsx_runtime10.jsx)(ContentContainer,{tag:"div",attrs:{"data-time":props.isoTimeStr},style:{height:props.height},className,renderProps,generatorName:"slotHeaderContent",customGenerator:options.slotHeaderContent,defaultGenerator:renderInnerContent3,classNameGenerator:options.slotHeaderClass,didMount:options.slotHeaderDidMount,willUnmount:options.slotHeaderWillUnmount,children:InnerContent=>(0,import_jsx_runtime10.jsx)("div",{ref:this.innerElRef,className:joinClassNames(classNames.noShrink,classNames.whiteSpaceNoWrap,classNames.flexRow),children:(0,import_jsx_runtime10.jsx)(InnerContent,{tag:"div",className:generateClassName(options.slotHeaderInnerClass,renderProps)})})}):(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(generateClassName(options.slotHeaderClass,renderProps),className),style:{height:props.height}})}componentDidMount(){this._isUnmounting=!1;let{props}=this,innerEl=this.innerElRef.current;innerEl&&(this.disconnectInnerSize=watchSize(innerEl,(width,height)=>{this._isUnmounting||(setRef(props.innerWidthRef,width),setRef(props.innerHeightRef,height))}))}componentWillUnmount(){let{props}=this;this._isUnmounting=!0,this.disconnectInnerSize&&(this.disconnectInnerSize(),setRef(props.innerWidthRef,null),setRef(props.innerHeightRef,null))}};function createRenderProps(date,time,isMinor,isNarrow,isFirst,headerFormat,context){return{...getDateMeta(date,context.dateEnv),level:0,text:joinDateTimeFormatParts(context.dateEnv.formatToParts(date,headerFormat)),time,isMajor:!1,isMinor,isTime:!0,isNarrow,hasNavLink:!1,isFirst,view:context.viewApi}}function renderInnerContent3(props){return props.text}var TimeGridSlatLane=class extends BaseComponent{constructor(){super(...arguments),this.getDateMeta=memoize2(getDateMeta)}render(){let{props,context}=this,{options}=context,renderProps={...this.getDateMeta(props.date,context.dateEnv),time:props.time,isMajor:!1,isMinor:!props.isLabeled,view:context.viewApi};return(0,import_jsx_runtime10.jsx)(ContentContainer,{tag:"div",attrs:{"data-time":props.isoTimeStr},className:joinClassNames(classNames.noMargin,classNames.noPadding,classNames.liquid,props.borderTop?classNames.borderOnlyT:classNames.borderNone),renderProps,generatorName:void 0,classNameGenerator:options.slotLaneClass,didMount:options.slotLaneDidMount,willUnmount:options.slotLaneWillUnmount})}},DEFAULT_WEEK_NUM_FORMAT2=createFormatter({week:"short"}),TimeGridWeekNumber=class extends BaseComponent{constructor(){super(...arguments),this.innerElRef=(0,import_react9.createRef)()}render(){let{props,context}=this,{options,dateEnv}=context,range=props.dateProfile.renderRange,hasNavLink=diffDays4(range.start,range.end)===1&&options.navLinks,weekDateMarker=range.start,fullDateStr=buildDateStr(context,weekDateMarker,"week"),weekNum=dateEnv.computeWeekNumber(weekDateMarker),weekTextParts=dateEnv.formatToParts(weekDateMarker,options.weekNumberFormat||DEFAULT_WEEK_NUM_FORMAT2),weekText=joinDateTimeFormatParts(weekTextParts),weekDateZoned=dateEnv.toDate(weekDateMarker),weekNumberRenderProps={num:weekNum,text:weekText,textParts:weekTextParts,date:weekDateZoned,isNarrow:props.isNarrow,hasNavLink,options:{dayMinWidth:options.dayMinWidth}};return(0,import_jsx_runtime10.jsx)(ContentContainer,{tag:"div",attrs:{role:"gridcell","aria-label":fullDateStr},className:joinClassNames(classNames.flexRow,classNames.noMargin,classNames.noPadding,props.isLiquid?classNames.liquid:classNames.contentBox),style:{width:props.width},renderProps:weekNumberRenderProps,generatorName:"weekNumberHeaderContent",customGenerator:options.weekNumberHeaderContent,defaultGenerator:renderText,classNameGenerator:options.weekNumberHeaderClass,didMount:options.weekNumberHeaderDidMount,willUnmount:options.weekNumberHeaderWillUnmount,children:InnerContent=>(0,import_jsx_runtime10.jsx)("div",{ref:this.innerElRef,className:joinClassNames(classNames.flexRow,classNames.noShrink,classNames.whiteSpaceNoWrap),children:(0,import_jsx_runtime10.jsx)(InnerContent,{tag:"div",attrs:hasNavLink?buildNavLinkAttrs(context,range.start,"week",fullDateStr):{"aria-label":fullDateStr},className:generateClassName(options.weekNumberHeaderInnerClass,weekNumberRenderProps)})})})}componentDidMount(){this._isUnmounting=!1;let{props}=this,innerEl=this.innerElRef.current;this.disconnectInnerSize=watchSize(innerEl,(width,height)=>{this._isUnmounting||(setRef(props.innerWidthRef,width),setRef(props.innerHeightRef,height))})}componentWillUnmount(){let{props}=this;this._isUnmounting=!0,this.disconnectInnerSize(),setRef(props.innerWidthRef,null),setRef(props.innerHeightRef,null)}};function TimeGridAxisEmpty(props){return(0,import_jsx_runtime10.jsx)("div",{role:"gridcell",className:props.isLiquid?classNames.liquid:classNames.contentBox,style:{width:props.width}})}var TimeGridLayoutPannable=class extends BaseComponent{constructor(){super(...arguments),this.state={headerTierHeights:[]},this.headerLabelInnerWidthRefMap=new RefMap(()=>{afterSize(this.handleAxisWidths)}),this.headerLabelInnerHeightRefMap=new RefMap(()=>{afterSize(this.handleHeaderHeights)}),this.headerMainInnerHeightRefMap=new RefMap(()=>{afterSize(this.handleHeaderHeights)}),this.handleAllDayLabelInnerWidth=width=>{this.allDayLabelInnerWidth=width,afterSize(this.handleAxisWidths)},this.slatLabelInnerWidthRefMap=new RefMap(()=>{afterSize(this.handleAxisWidths)}),this.slatLabelInnerHeightRefMap=new RefMap(()=>{afterSize(this.handleSlatInnerHeights)}),this.headerScrollerRef=(0,import_react9.createRef)(),this.allDayScrollerRef=(0,import_react9.createRef)(),this.mainScrollerRef=(0,import_react9.createRef)(),this.footScrollerRef=(0,import_react9.createRef)(),this.axisScrollerRef=(0,import_react9.createRef)(),this.handleTotalWidth=totalWidth=>{this._isUnmounting||this.setState({totalWidth})},this.handleBodyHeight=bodyHeight=>{this._isUnmounting||this.setState({bodyHeight})},this.handleClientWidth=clientWidth=>{this._isUnmounting||this.setState({clientWidth})},this.handleClientHeight=clientHeight=>{this._isUnmounting||this.setState({clientHeight})},this.handleStickyBottomScrollbarWidth=sticykBottomScrollbarWidth=>{this._isUnmounting||this.setState({sticykBottomScrollbarWidth})},this.handleHeaderHeights=()=>{if(this._isUnmounting)return;let headerLabelInnerHeightMap=this.headerLabelInnerHeightRefMap.current,headerMainInnerHeightMap=this.headerMainInnerHeightRefMap.current,heights=[];for(let[tierNum,mainHeight]of headerMainInnerHeightMap.entries())heights[tierNum]=Math.max(headerLabelInnerHeightMap.get(tierNum)||0,mainHeight);this.setState({headerTierHeights:heights})},this.handleSlatInnerHeights=()=>{if(this._isUnmounting)return;let slatLabelInnerHeightMap=this.slatLabelInnerHeightRefMap.current,max=0;for(let slatLabelInnerHeight of slatLabelInnerHeightMap.values())max=Math.max(max,slatLabelInnerHeight);this.state.slatInnerHeight!==max&&this.setState({slatInnerHeight:max})},this.handleAxisWidths=()=>{if(this._isUnmounting)return;let headerLabelInnerWidthMap=this.headerLabelInnerWidthRefMap.current,slatLabelInnerWidthMap=this.slatLabelInnerWidthRefMap.current,max=this.allDayLabelInnerWidth||0;for(let headerLabelInnerWidth of headerLabelInnerWidthMap.values())max=Math.max(max,headerLabelInnerWidth);for(let slatLableInnerWidth of slatLabelInnerWidthMap.values())max=Math.max(max,slatLableInnerWidth);this.state.axisWidth!==max&&this.setState({axisWidth:max})}}render(){let{props,state,context,headerLabelInnerWidthRefMap,headerLabelInnerHeightRefMap,headerMainInnerHeightRefMap,slatLabelInnerWidthRefMap,slatLabelInnerHeightRefMap}=this,{nowDate,headerTiers,forPrint}=props,nowTimeMs=nowDate.valueOf()-startOfDay4(nowDate).valueOf(),{axisWidth,totalWidth,clientWidth,clientHeight,bodyHeight,sticykBottomScrollbarWidth}=state,{options}=context,{borderlessX,borderlessTop,borderlessBottom}=computeViewBorderless(options),endScrollbarWidth=totalWidth!=null&&clientWidth!=null&&axisWidth!=null?totalWidth-clientWidth-(axisWidth+1):void 0,verticalScrolling=!forPrint&&!getIsHeightAuto(options),tableHeaderSticky=!forPrint&&getTableHeaderSticky(options),footerScrollbarSticky=!forPrint&&getFooterScrollbarSticky(options),{eventPrintLayout}=options,printStackEnabled=eventPrintLayout==="stack"||eventPrintLayout!=="grid"&&isBrowserPrintQuirky,absPrint=forPrint&&!printStackEnabled,simplePrint=forPrint&&printStackEnabled,colCount=props.cells.length,[canvasWidth,colWidth]=computeColWidth(colCount,props.dayMinWidth,clientWidth),cellIsMicro=colWidth!=null&&colWidth<=dayMicroWidth,cellIsNarrow=cellIsMicro||colWidth!=null&&colWidth<=options.dayNarrowWidth,slatCnt=props.slatMetas.length,[slatHeight,slatLiquidHeight]=computeSlatHeight(verticalScrolling&&options.expandRows,slatCnt,options.slotMinHeight,state.slatInnerHeight,clientHeight);this.slatHeight=slatHeight;let totalSlatHeight=(slatHeight||0)*slatCnt,forcedBodyHeight=absPrint?totalSlatHeight:void 0,rowsNotExpanding=verticalScrolling&&!options.expandRows&&clientHeight!=null&&clientHeight>totalSlatHeight,firstBodyRowIndex=options.dayHeaders?headerTiers.length+1:1,bottomScrollbarWidth=footerScrollbarSticky?sticykBottomScrollbarWidth:bodyHeight!=null&&clientHeight!=null?bodyHeight-clientHeight:void 0;return(0,import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment,{children:[options.dayHeaders&&(0,import_jsx_runtime10.jsxs)("div",{className:joinClassNames(generateClassName(options.tableHeaderClass,{isSticky:tableHeaderSticky,borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),classNames.flexCol,tableHeaderSticky&&classNames.tableHeaderSticky),style:{zIndex:1},children:[(0,import_jsx_runtime10.jsxs)("div",{className:classNames.flexRow,children:[(0,import_jsx_runtime10.jsx)("div",{role:"rowgroup",className:classNames.contentBox,style:{width:axisWidth},children:headerTiers.map((rowConfig,tierNum)=>(0,import_jsx_runtime10.jsx)("div",{role:"row","aria-rowindex":tierNum+1,className:joinClassNames(options.dayHeaderRowClass,classNames.flexRow,classNames.contentBox,tierNum<props.headerTiers.length-1?classNames.borderOnlyB:classNames.borderNone),style:{height:state.headerTierHeights[tierNum]},children:options.weekNumbers&&rowConfig.isDateRow?(0,import_jsx_runtime10.jsx)(TimeGridWeekNumber,{dateProfile:props.dateProfile,innerWidthRef:headerLabelInnerWidthRefMap.createRef(tierNum),innerHeightRef:headerLabelInnerHeightRefMap.createRef(tierNum),width:void 0,isLiquid:!0,isNarrow:cellIsNarrow}):(0,import_jsx_runtime10.jsx)(TimeGridAxisEmpty,{width:void 0,isLiquid:!0})},tierNum))}),(0,import_jsx_runtime10.jsx)("div",{className:generateClassName(options.slotHeaderDividerClass,{inTableHeader:!0,options:{dayMinWidth:options.dayMinWidth}})}),(0,import_jsx_runtime10.jsxs)(Scroller,{horizontal:!0,hideScrollbars:!0,className:joinClassNames(classNames.flexRow,classNames.liquid),ref:this.headerScrollerRef,children:[(0,import_jsx_runtime10.jsx)("div",{role:"rowgroup",className:canvasWidth==null?classNames.liquid:"",style:{width:canvasWidth},children:props.headerTiers.map((rowConfig,tierNum)=>(0,import_react9.createElement)(DayGridHeaderRow,{...rowConfig,key:tierNum,role:"row",rowIndex:tierNum,borderBottom:tierNum<props.headerTiers.length-1,height:state.headerTierHeights[tierNum],colWidth,viewportWidth:clientWidth,innerHeightRef:headerMainInnerHeightRefMap.createRef(tierNum),cellIsNarrow,cellIsMicro,rowLevel:props.headerTiers.length-tierNum-1}))}),!!endScrollbarWidth&&(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!0}),classNames.borderOnlyS),style:{minWidth:endScrollbarWidth}})]})]}),(0,import_jsx_runtime10.jsx)("div",{className:generateClassName(options.dayHeaderDividerClass,{isSticky:tableHeaderSticky,multiMonthColumns:0,options:{allDaySlot:!!options.allDaySlot}})})]}),(0,import_jsx_runtime10.jsxs)("div",{role:"rowgroup",className:joinClassNames(generateClassName(options.tableBodyClass,{borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),classNames.flexCol,verticalScrolling&&classNames.liquid,classNames.isolate),style:{zIndex:0},children:[options.allDaySlot&&(0,import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment,{children:[(0,import_jsx_runtime10.jsxs)("div",{role:"row","aria-rowindex":firstBodyRowIndex,className:classNames.flexRow,style:{zIndex:1},children:[(0,import_jsx_runtime10.jsx)(TimeGridAllDayHeader,{width:axisWidth,innerWidthRef:this.handleAllDayLabelInnerWidth,isNarrow:cellIsNarrow}),(0,import_jsx_runtime10.jsx)("div",{className:generateClassName(options.slotHeaderDividerClass,{inTableHeader:!1,options:{dayMinWidth:options.dayMinWidth}})}),(0,import_jsx_runtime10.jsxs)(Scroller,{horizontal:!0,hideScrollbars:!0,className:joinClassNames(classNames.flexRow,classNames.liquidX),ref:this.allDayScrollerRef,children:[(0,import_jsx_runtime10.jsx)("div",{className:classNames.flexRow,style:{width:canvasWidth},children:(0,import_jsx_runtime10.jsx)(TimeGridAllDayLane,{dateProfile:props.dateProfile,todayRange:props.todayRange,cells:props.cells,showDayNumbers:!1,forPrint,isHitComboAllowed:props.isHitComboAllowed,className:joinClassNames(classNames.borderNone,classNames.liquidX),cellIsNarrow,cellIsMicro,fgEventSegs:props.fgEventSegs,bgEventSegs:props.bgEventSegs,businessHourSegs:props.businessHourSegs,dateSelectionSegs:props.dateSelectionSegs,eventSelection:props.eventSelection,eventDrag:props.eventDrag,eventResize:props.eventResize,dayMaxEvents:props.dayMaxEvents,dayMaxEventRows:props.dayMaxEventRows,colWidth})}),!!endScrollbarWidth&&(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!1}),classNames.borderOnlyS),style:{minWidth:endScrollbarWidth}})]})]}),(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(options.allDayDividerClass),style:{zIndex:2}})]}),(0,import_jsx_runtime10.jsxs)("div",{role:"row","aria-rowindex":firstBodyRowIndex+(options.allDaySlot?1:0),className:joinClassNames(classNames.flexRow,classNames.rel,verticalScrolling&&classNames.liquid),style:{zIndex:0},children:[(0,import_jsx_runtime10.jsx)(Scroller,{vertical:verticalScrolling,hideScrollbars:!0,className:joinClassNames(classNames.flexCol,classNames.contentBox),style:{width:axisWidth},ref:this.axisScrollerRef,clientHeightRef:this.handleBodyHeight,children:!simplePrint&&(0,import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment,{children:(0,import_jsx_runtime10.jsxs)("div",{role:"rowheader","aria-label":options.timedText,className:joinClassNames(classNames.flexCol,classNames.grow,classNames.rel),style:{height:forcedBodyHeight},children:[(0,import_jsx_runtime10.jsx)("div",{"aria-hidden":!0,className:joinClassNames(classNames.flexCol,verticalScrolling&&options.expandRows&&classNames.grow,absPrint&&classNames.fillX),children:props.slatMetas.map((slatMeta,slatI)=>(0,import_react9.createElement)(TimeGridSlatHeader,{...slatMeta,key:slatMeta.key,innerWidthRef:slatLabelInnerWidthRefMap.createRef(slatMeta.key),innerHeightRef:slatLabelInnerHeightRefMap.createRef(slatMeta.key),borderTop:!!slatI,isNarrow:cellIsNarrow,height:slatLiquidHeight?void 0:slatHeight,liquidHeight:slatLiquidHeight}))}),!forPrint&&options.nowIndicator&&rangeContainsMarker(props.dateProfile.currentRange,nowDate)&&nowTimeMs>=props.dateProfile.slotMinTime.milliseconds&&nowTimeMs<props.dateProfile.slotMaxTime.milliseconds&&(0,import_jsx_runtime10.jsx)(TimeGridNowIndicatorArrow,{nowDate,dateProfile:props.dateProfile,totalHeight:slatHeight!=null?slatHeight*slatCnt:void 0}),!!(rowsNotExpanding||bottomScrollbarWidth)&&(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!1}),classNames.borderOnlyT,rowsNotExpanding&&classNames.liquid),style:{minHeight:bottomScrollbarWidth}})]})})}),(0,import_jsx_runtime10.jsx)("div",{className:generateClassName(options.slotHeaderDividerClass,{inTableHeader:!1,options:{dayMinWidth:options.dayMinWidth}})}),(0,import_jsx_runtime10.jsxs)("div",{className:joinClassNames(classNames.flexCol,classNames.liquid),children:[(0,import_jsx_runtime10.jsx)(Scroller,{vertical:verticalScrolling,horizontal:!0,hideScrollbars:footerScrollbarSticky||forPrint,className:joinClassNames(classNames.flexCol,classNames.rel,verticalScrolling&&classNames.liquid),ref:this.mainScrollerRef,clientWidthRef:this.handleClientWidth,clientHeightRef:this.handleClientHeight,children:(0,import_jsx_runtime10.jsxs)("div",{className:joinClassNames(classNames.flexCol,classNames.grow,classNames.rel),style:{width:canvasWidth,height:forcedBodyHeight},children:[(0,import_jsx_runtime10.jsx)(TimeGridCols,{dateProfile:props.dateProfile,nowDate:props.nowDate,todayRange:props.todayRange,cells:props.cells,slatCnt,forPrint,isHitComboAllowed:props.isHitComboAllowed,className:simplePrint?"":classNames.fill,fgEventSegsByCol:props.fgEventSegsByCol,bgEventSegsByCol:props.bgEventSegsByCol,businessHourSegsByCol:props.businessHourSegsByCol,nowIndicatorSegsByCol:props.nowIndicatorSegsByCol,dateSelectionSegsByCol:props.dateSelectionSegsByCol,eventDragByCol:props.eventDragByCol,eventResizeByCol:props.eventResizeByCol,eventSelection:props.eventSelection,colWidth,slatHeight,cellIsNarrow,cellIsMicro}),!simplePrint&&(0,import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment,{children:[(0,import_jsx_runtime10.jsx)("div",{"aria-hidden":!0,className:joinClassNames(classNames.flexCol,verticalScrolling&&options.expandRows&&classNames.grow,absPrint?classNames.fillX:classNames.rel),children:props.slatMetas.map((slatMeta,slatI)=>(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(classNames.flexRow,slatLiquidHeight&&classNames.liquid),style:{height:slatLiquidHeight?"":slatHeight},children:(0,import_react9.createElement)(TimeGridSlatLane,{...slatMeta,key:slatMeta.key,borderTop:!!slatI})},slatMeta.key))}),rowsNotExpanding&&(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!1}),classNames.borderOnlyT,classNames.liquid)})]})]})}),!!footerScrollbarSticky&&(0,import_jsx_runtime10.jsx)(FooterScrollbar,{isSticky:!0,canvasWidth,scrollerRef:this.footScrollerRef,scrollbarWidthRef:this.handleStickyBottomScrollbarWidth})]})]})]}),(0,import_jsx_runtime10.jsx)(Ruler,{widthRef:this.handleTotalWidth})]})}componentDidMount(){this._isUnmounting=!1,this.initScrollers(),this.updateSlatHeight()}componentDidUpdate(){this.updateScrollers(),this.updateSlatHeight()}componentWillUnmount(){this._isUnmounting=!0,this.destroyScrollers(),this.prevSlatHeight=void 0,setRef(this.props.slatHeightRef,null)}updateSlatHeight(){this.prevSlatHeight!==this.slatHeight&&setRef(this.props.slatHeightRef,this.prevSlatHeight=this.slatHeight)}initScrollers(){let ScrollerSyncer=getScrollerSyncerClass(this.context.pluginHooks);this.dayScroller=new ScrollerSyncer(!0),this.timeScroller=new ScrollerSyncer,setRef(this.props.dayScrollerRef,this.dayScroller),setRef(this.props.timeScrollerRef,this.timeScroller),this.updateScrollers()}updateScrollers(){this.dayScroller.handleChildren([this.headerScrollerRef.current,this.allDayScrollerRef.current,this.mainScrollerRef.current,this.footScrollerRef.current]),this.timeScroller.handleChildren([this.axisScrollerRef.current,this.mainScrollerRef.current])}destroyScrollers(){setRef(this.props.dayScrollerRef,null),setRef(this.props.timeScrollerRef,null)}};TimeGridLayoutPannable.addPropsEquality({headerTierHeights:isArraysEqual});var TimeGridLayoutNormal=class extends BaseComponent{constructor(){super(...arguments),this.state={},this.headerLabelInnerWidthRefMap=new RefMap(()=>{afterSize(this.handleAxisInnerWidths)}),this.handleAllDayLabelInnerWidth=width=>{this.allDayLabelInnerWidth=width,afterSize(this.handleAxisInnerWidths)},this.handleWeekNumberInnerWidth=width=>{this.weekNumberInnerWidth=width,afterSize(this.handleAxisInnerWidths)},this.slatLabelInnerWidthRefMap=new RefMap(()=>{afterSize(this.handleAxisInnerWidths)}),this.slatLabelInnerHeightRefMap=new RefMap(()=>{afterSize(this.handleSlatInnerHeights)}),this.handleTotalWidth=totalWidth=>{this._isUnmounting||requestAnimationFrame(()=>{this._isUnmounting||this.setState({totalWidth})})},this.handleClientWidth=clientWidth=>{this._isUnmounting||this.setState({clientWidth})},this.handleClientHeight=clientHeight=>{this._isUnmounting||this.setState({clientHeight})},this.handleAxisInnerWidths=()=>{if(this._isUnmounting)return;let headerLabelInnerWidthMap=this.headerLabelInnerWidthRefMap.current,slatLabelInnerWidthMap=this.slatLabelInnerWidthRefMap.current,max=Math.max(this.weekNumberInnerWidth||0,this.allDayLabelInnerWidth||0);for(let headerLabelInnerWidth of headerLabelInnerWidthMap.values())max=Math.max(max,headerLabelInnerWidth);for(let slatLabelInnerWidth of slatLabelInnerWidthMap.values())max=Math.max(max,slatLabelInnerWidth);this.state.axisWidth!==max&&this.setState({axisWidth:max})},this.handleSlatInnerHeights=()=>{if(this._isUnmounting)return;let slatLabelInnerHeightMap=this.slatLabelInnerHeightRefMap.current,max=0;for(let slatLabelInnerHeight of slatLabelInnerHeightMap.values())max=Math.max(max,slatLabelInnerHeight);this.state.slatInnerHeight!==max&&this.setState({slatInnerHeight:max})}}render(){let{props,state,context,slatLabelInnerWidthRefMap,slatLabelInnerHeightRefMap,headerLabelInnerWidthRefMap}=this,{nowDate,forPrint}=props,nowTimeMs=nowDate.valueOf()-startOfDay4(nowDate).valueOf(),{axisWidth,clientWidth,totalWidth}=state,{options}=context,{borderlessX,borderlessTop,borderlessBottom}=computeViewBorderless(options),endScrollbarWidth=totalWidth!=null&&clientWidth!=null&&!forPrint?totalWidth-clientWidth:void 0,verticalScrolling=!forPrint&&!getIsHeightAuto(options),tableHeaderSticky=!forPrint&&getTableHeaderSticky(options),slatCnt=props.slatMetas.length,[slatHeight,slatLiquidHeight]=computeSlatHeight(verticalScrolling&&options.expandRows,slatCnt,options.slotMinHeight,state.slatInnerHeight,state.clientHeight);this.slatHeight=slatHeight;let totalSlatHeight=(slatHeight||0)*slatCnt,rowsNotExpanding=verticalScrolling&&!options.expandRows&&state.clientHeight!=null&&state.clientHeight>totalSlatHeight,{eventPrintLayout}=options,printStackEnabled=eventPrintLayout==="stack"||eventPrintLayout!=="grid"&&isBrowserPrintQuirky,absPrint=forPrint&&!printStackEnabled,simplePrint=forPrint&&printStackEnabled,forcedBodyHeight=absPrint?totalSlatHeight:void 0,colCount=props.cells.length,colWidth=clientWidth!=null?clientWidth/colCount:void 0,cellIsMicro=colWidth!=null&&colWidth<=dayMicroWidth,cellIsNarrow=cellIsMicro||colWidth!=null&&colWidth<=options.dayNarrowWidth;return(0,import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment,{children:[options.dayHeaders&&(0,import_jsx_runtime10.jsxs)("div",{role:"rowgroup",className:joinClassNames(generateClassName(options.tableHeaderClass,{isSticky:tableHeaderSticky,borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),classNames.flexCol,tableHeaderSticky&&classNames.tableHeaderSticky),style:{zIndex:1},children:[props.headerTiers.map((rowConfig,tierNum)=>(0,import_jsx_runtime10.jsxs)("div",{role:"row",className:classNames.flexRow,children:[(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(options.dayHeaderRowClass,classNames.flexRow,tierNum<props.headerTiers.length-1?classNames.borderOnlyB:classNames.borderNone),children:options.weekNumbers&&rowConfig.isDateRow?(0,import_jsx_runtime10.jsx)(TimeGridWeekNumber,{dateProfile:props.dateProfile,innerWidthRef:this.handleWeekNumberInnerWidth,innerHeightRef:headerLabelInnerWidthRefMap.createRef(tierNum),width:axisWidth,isLiquid:!1,isNarrow:cellIsNarrow}):(0,import_jsx_runtime10.jsx)(TimeGridAxisEmpty,{width:axisWidth,isLiquid:!1})}),(0,import_jsx_runtime10.jsx)("div",{className:generateClassName(options.slotHeaderDividerClass,{inTableHeader:!0,options:{dayMinWidth:options.dayMinWidth}})}),(0,import_jsx_runtime10.jsx)(DayGridHeaderRow,{...rowConfig,className:classNames.liquid,borderBottom:tierNum<props.headerTiers.length-1,viewportWidth:clientWidth,cellIsNarrow,cellIsMicro,rowLevel:props.headerTiers.length-tierNum-1}),!!endScrollbarWidth&&(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!0}),classNames.borderOnlyS),style:{minWidth:endScrollbarWidth}})]},tierNum)),(0,import_jsx_runtime10.jsx)("div",{className:generateClassName(options.dayHeaderDividerClass,{isSticky:tableHeaderSticky,multiMonthColumns:0,options:{allDaySlot:!!options.allDaySlot}})})]}),(0,import_jsx_runtime10.jsxs)("div",{role:"rowgroup",className:joinClassNames(generateClassName(options.tableBodyClass,{borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),classNames.flexCol,verticalScrolling&&classNames.liquid,classNames.isolate),style:{zIndex:0},children:[options.allDaySlot&&(0,import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment,{children:[(0,import_jsx_runtime10.jsxs)("div",{role:"row",className:classNames.flexRow,style:{zIndex:1},children:[(0,import_jsx_runtime10.jsx)(TimeGridAllDayHeader,{width:axisWidth,innerWidthRef:this.handleAllDayLabelInnerWidth,isNarrow:cellIsNarrow}),(0,import_jsx_runtime10.jsx)("div",{className:generateClassName(options.slotHeaderDividerClass,{inTableHeader:!1,options:{dayMinWidth:options.dayMinWidth}})}),(0,import_jsx_runtime10.jsx)(TimeGridAllDayLane,{dateProfile:props.dateProfile,todayRange:props.todayRange,cells:props.cells,showDayNumbers:!1,forPrint,isHitComboAllowed:props.isHitComboAllowed,className:joinClassNames(classNames.liquidX,classNames.borderNone),cellIsNarrow,cellIsMicro,fgEventSegs:props.fgEventSegs,bgEventSegs:props.bgEventSegs,businessHourSegs:props.businessHourSegs,dateSelectionSegs:props.dateSelectionSegs,eventDrag:props.eventDrag,eventResize:props.eventResize,eventSelection:props.eventSelection,dayMaxEvents:props.dayMaxEvents,dayMaxEventRows:props.dayMaxEventRows}),!!endScrollbarWidth&&(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!1}),classNames.borderOnlyS),style:{minWidth:endScrollbarWidth}})]}),(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(options.allDayDividerClass),style:{zIndex:2}})]}),(0,import_jsx_runtime10.jsx)(Scroller,{vertical:verticalScrolling,className:joinClassNames(classNames.flexCol,classNames.rel,verticalScrolling&&classNames.liquid),style:{zIndex:0},ref:props.timeScrollerRef,clientWidthRef:this.handleClientWidth,clientHeightRef:this.handleClientHeight,children:(0,import_jsx_runtime10.jsxs)("div",{className:joinClassNames(classNames.flexCol,classNames.grow,classNames.rel),style:{height:forcedBodyHeight},children:[(0,import_jsx_runtime10.jsxs)("div",{role:"row",className:joinClassNames(classNames.flexRow,!simplePrint&&classNames.fill),children:[(0,import_jsx_runtime10.jsx)("div",{role:"rowheader","aria-label":options.timedText,className:classNames.contentBox,style:{width:axisWidth}}),(0,import_jsx_runtime10.jsx)("div",{className:generateClassName(options.slotHeaderDividerClass,{inTableHeader:!1,options:{dayMinWidth:options.dayMinWidth}})}),(0,import_jsx_runtime10.jsx)(TimeGridCols,{dateProfile:props.dateProfile,nowDate:props.nowDate,todayRange:props.todayRange,cells:props.cells,slatCnt,forPrint,isHitComboAllowed:props.isHitComboAllowed,className:classNames.liquid,fgEventSegsByCol:props.fgEventSegsByCol,bgEventSegsByCol:props.bgEventSegsByCol,businessHourSegsByCol:props.businessHourSegsByCol,nowIndicatorSegsByCol:props.nowIndicatorSegsByCol,dateSelectionSegsByCol:props.dateSelectionSegsByCol,eventDragByCol:props.eventDragByCol,eventResizeByCol:props.eventResizeByCol,eventSelection:props.eventSelection,slatHeight,cellIsNarrow,cellIsMicro})]}),!simplePrint&&(0,import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment,{children:[(0,import_jsx_runtime10.jsx)("div",{"aria-hidden":!0,className:joinClassNames(classNames.flexCol,verticalScrolling&&options.expandRows&&classNames.grow,absPrint?classNames.fillX:classNames.rel),children:props.slatMetas.map((slatMeta,slatI)=>(0,import_jsx_runtime10.jsxs)("div",{className:joinClassNames(slatLiquidHeight&&classNames.liquid,classNames.flexRow),style:{height:slatLiquidHeight?void 0:slatHeight},children:[(0,import_jsx_runtime10.jsx)("div",{className:classNames.flexCol,style:{width:axisWidth},children:(0,import_react9.createElement)(TimeGridSlatHeader,{...slatMeta,key:slatMeta.key,innerWidthRef:slatLabelInnerWidthRefMap.createRef(slatMeta.key),innerHeightRef:slatLabelInnerHeightRefMap.createRef(slatMeta.key),borderTop:!!slatI,isNarrow:cellIsNarrow})}),(0,import_jsx_runtime10.jsx)("div",{className:generateClassName(options.slotHeaderDividerClass,{inTableHeader:!1,options:{dayMinWidth:options.dayMinWidth}}),style:{visibility:"hidden"}}),(0,import_react9.createElement)(TimeGridSlatLane,{...slatMeta,key:slatMeta.key,borderTop:!!slatI})]},slatMeta.key))}),rowsNotExpanding&&(0,import_jsx_runtime10.jsx)("div",{className:joinClassNames(generateClassName(options.fillerClass,{inTableHeader:!1}),classNames.borderOnlyT,classNames.liquid)}),!forPrint&&options.nowIndicator&&rangeContainsMarker(props.dateProfile.currentRange,nowDate)&&nowTimeMs>=props.dateProfile.slotMinTime.milliseconds&&nowTimeMs<props.dateProfile.slotMaxTime.milliseconds&&(0,import_jsx_runtime10.jsx)(TimeGridNowIndicatorArrow,{nowDate,dateProfile:props.dateProfile,totalHeight:slatHeight!=null?slatHeight*slatCnt:void 0})]})]})})]}),(0,import_jsx_runtime10.jsx)(Ruler,{widthRef:this.handleTotalWidth})]})}componentDidMount(){this._isUnmounting=!1,this.updateSlatHeight()}componentDidUpdate(){this.updateSlatHeight()}componentWillUnmount(){this._isUnmounting=!0,this.prevSlatHeight=void 0,setRef(this.props.slatHeightRef,null)}updateSlatHeight(){this.prevSlatHeight!==this.slatHeight&&setRef(this.props.slatHeightRef,this.prevSlatHeight=this.slatHeight)}};function buildEmptySegCols(segsByCol){return segsByCol.map(()=>[])}function buildEmptyInteractionCols(interactionsByCol){return interactionsByCol.map(()=>null)}var TimeGridLayout=class extends BaseComponent{constructor(){super(...arguments),this.buildSlatMetas=memoize2(buildSlatMetas),this.dayScrollerRef=(0,import_react9.createRef)(),this.timeScrollerRef=(0,import_react9.createRef)(),this.scrollState={},this.handleSlatHeight=slatHeight=>{this._isUnmounting||(this.slatHeight=slatHeight,slatHeight!=null&&afterSize(this.applyTimeScroll))},this.handleTimeScrollRequest=scrollTime=>{this.scrollState.time=scrollTime,this.scrollState.y=void 0,this.applyTimeScroll()},this.handleTimeScrollEnd=isDevice=>{if(isDevice){let y=this.timeScrollerRef.current.y;this.props.forPrint||(this.scrollState.y=y,this.scrollState.time=void 0)}},this.applyTimeScroll=()=>{let timeScroller=this.timeScrollerRef.current,{slatHeight,scrollState}=this,{y,time}=scrollState;y==null&&time&&slatHeight!=null&&timeScroller&&(y=computeTimeTopFrac(time,this.props.dateProfile)*(slatHeight*this.currentSlatCnt),y&&y++,scrollState.y=y),y!=null&&timeScroller.scrollTo({y})}}render(){let{props,context}=this,{dateProfile}=props,{options,dateEnv}=context,{dayMinWidth}=options,{borderlessX,borderlessTop,borderlessBottom}=computeViewBorderless(options),slatMetas=this.buildSlatMetas(dateProfile.slotMinTime,dateProfile.slotMaxTime,options.slotHeaderInterval,options.slotDuration,dateEnv);this.currentSlatCnt=slatMetas.length;let businessHourSegs=props.forPrint?[]:props.businessHourSegs,dateSelectionSegs=props.forPrint?[]:props.dateSelectionSegs,eventDrag=props.forPrint?null:props.eventDrag,eventResize=props.forPrint?null:props.eventResize,businessHourSegsByCol=props.forPrint?buildEmptySegCols(props.businessHourSegsByCol):props.businessHourSegsByCol,dateSelectionSegsByCol=props.forPrint?buildEmptySegCols(props.dateSelectionSegsByCol):props.dateSelectionSegsByCol,eventDragByCol=props.forPrint?buildEmptyInteractionCols(props.eventDragByCol):props.eventDragByCol,eventResizeByCol=props.forPrint?buildEmptyInteractionCols(props.eventResizeByCol):props.eventResizeByCol,commonLayoutProps={dateProfile,nowDate:props.nowDate,todayRange:props.todayRange,cells:props.cells,slatMetas,forPrint:props.forPrint,isHitComboAllowed:props.isHitComboAllowed,headerTiers:props.headerTiers,fgEventSegs:props.fgEventSegs,bgEventSegs:props.bgEventSegs,businessHourSegs,dateSelectionSegs,eventDrag,eventResize,...getAllDayMaxEventProps(options),fgEventSegsByCol:props.fgEventSegsByCol,bgEventSegsByCol:props.bgEventSegsByCol,businessHourSegsByCol,nowIndicatorSegsByCol:props.nowIndicatorSegsByCol,dateSelectionSegsByCol,eventDragByCol,eventResizeByCol,eventSelection:props.eventSelection,timeScrollerRef:this.timeScrollerRef,timeScrollState:this.scrollState,slatHeightRef:this.handleSlatHeight,borderlessX,borderlessBottom};return(0,import_jsx_runtime10.jsx)(ViewContainer,{attrs:{role:"grid","aria-colcount":props.cells.length,"aria-labelledby":props.labelId,"aria-label":props.labelStr},className:joinClassNames(props.className,generateClassName(options.tableClass,{borderlessX,borderlessTop,borderlessBottom,multiMonthColumns:0}),!props.forPrint&&classNames.flexCol,classNames.isolate),viewSpec:context.viewSpec,children:dayMinWidth?(0,import_jsx_runtime10.jsx)(TimeGridLayoutPannable,{...commonLayoutProps,dayMinWidth,dayScrollerRef:this.dayScrollerRef}):(0,import_jsx_runtime10.jsx)(TimeGridLayoutNormal,{...commonLayoutProps})})}componentDidMount(){this._isUnmounting=!1,this.resetScroll(),this.context.emitter.on("_timeScrollRequest",this.handleTimeScrollRequest);let timeScroller=this.timeScrollerRef.current;timeScroller&&timeScroller.addScrollEndListener(this.handleTimeScrollEnd)}componentDidUpdate(prevProps){prevProps.dateProfile!==this.props.dateProfile&&this.context.options.scrollTimeReset?this.resetScroll():prevProps.forPrint&&!this.props.forPrint&&this.applyTimeScroll()}componentWillUnmount(){this._isUnmounting=!0,this.context.emitter.off("_timeScrollRequest",this.handleTimeScrollRequest);let timeScroller=this.timeScrollerRef.current;timeScroller&&timeScroller.removeScrollEndListener(this.handleTimeScrollEnd)}resetScroll(){this.handleTimeScrollRequest(this.context.options.scrollTime);let dayScroller=this.dayScrollerRef.current;dayScroller&&dayScroller.scrollTo({x:0})}},AUTO_ALL_DAY_MAX_EVENT_ROWS=5;function getAllDayMaxEventProps(options){let{dayMaxEvents,dayMaxEventRows}=options;return(dayMaxEvents===!0||dayMaxEventRows===!0)&&(dayMaxEvents=void 0,dayMaxEventRows=AUTO_ALL_DAY_MAX_EVENT_ROWS),{dayMaxEvents,dayMaxEventRows}}var TimeGridView=class extends DateComponent{constructor(){super(...arguments),this.createDayHeaderFormatter=memoize2(createDayHeaderFormatter),this.buildTimeColsModel=memoize2(buildTimeColsModel),this.buildDayRanges=memoize2(buildDayRanges),this.buildDateRowConfigs=memoize2(buildDateRowConfigs),this.splitFgEventSegs=memoize2(organizeSegsByCol),this.splitBgEventSegs=memoize2(organizeSegsByCol),this.splitBusinessHourSegs=memoize2(organizeSegsByCol),this.splitNowIndicatorSegs=memoize2(organizeSegsByCol),this.splitDateSelectionSegs=memoize2(organizeSegsByCol),this.splitEventDrag=memoize2(splitInteractionByCol),this.splitEventResize=memoize2(splitInteractionByCol),this.allDaySplitter=new AllDaySplitter,this.dayTableSlicer=new DayTableSlicer,this.dayTimeColsSlicer=new DayTimeColsSlicer}render(){let{props,context}=this,{dateProfile}=props,{options,dateProfileGenerator}=context,dayTableModel=this.buildTimeColsModel(dateProfile,dateProfileGenerator,context.dateEnv),dayRanges=this.buildDayRanges(dayTableModel,dateProfile,context.dateEnv),splitProps=this.allDaySplitter.splitProps(props),allDayProps=this.dayTableSlicer.sliceProps(splitProps.allDay,dateProfile,options.nextDayThreshold,context,dayTableModel),timedProps=this.dayTimeColsSlicer.sliceProps(splitProps.timed,dateProfile,null,context,dayRanges),dayHeaderFormat=this.createDayHeaderFormatter(context.options.dayHeaderFormat,!0,dayTableModel.colCount);return(0,import_jsx_runtime11.jsx)(NowTimer,{unit:options.nowIndicator?"minute":"day",children:(nowDate,todayRange)=>{let colCount=dayTableModel.cellRows[0].length,nowIndicatorSeg=!props.forPrint&&options.nowIndicator&&this.dayTimeColsSlicer.sliceNowDate(nowDate,dateProfile,options.nextDayThreshold,context,dayRanges),fgEventSegsByCol=this.splitFgEventSegs(timedProps.fgEventSegs,colCount),bgEventSegsByCol=this.splitBgEventSegs(timedProps.bgEventSegs,colCount),businessHourSegsByCol=this.splitBusinessHourSegs(timedProps.businessHourSegs,colCount),nowIndicatorSegsByCol=this.splitNowIndicatorSegs(nowIndicatorSeg,colCount),dateSelectionSegsByCol=this.splitDateSelectionSegs(timedProps.dateSelectionSegs,colCount),eventDragByCol=this.splitEventDrag(timedProps.eventDrag,colCount),eventResizeByCol=this.splitEventResize(timedProps.eventResize,colCount),headerTiers=this.buildDateRowConfigs(dayTableModel.headerDates,!0,props.dateProfile,todayRange,dayHeaderFormat,context);return(0,import_jsx_runtime11.jsx)(TimeGridLayout,{labelId:props.labelId,labelStr:props.labelStr,dateProfile,nowDate,todayRange,cells:dayTableModel.cellRows[0],forPrint:props.forPrint,className:props.className,headerTiers,fgEventSegs:allDayProps.fgEventSegs,bgEventSegs:allDayProps.bgEventSegs,businessHourSegs:allDayProps.businessHourSegs,dateSelectionSegs:allDayProps.dateSelectionSegs,eventDrag:allDayProps.eventDrag,eventResize:allDayProps.eventResize,fgEventSegsByCol,bgEventSegsByCol,businessHourSegsByCol,nowIndicatorSegsByCol,dateSelectionSegsByCol,eventDragByCol,eventResizeByCol,eventSelection:props.eventSelection})}})}},timeGridPlugin={name:"timegrid",initialView:"timeGridWeek",deps:[dayGridPlugin],views:{timeGrid:{component:TimeGridView,usesMinMaxTime:!0,allDaySlot:!0,slotDuration:"00:30:00",slotEventOverlap:!0},timeGridDay:{type:"timeGrid",duration:{days:1}},timeGridWeek:{type:"timeGrid",duration:{weeks:1}}}};var import_core5=require("@mantine/core"),import_hooks=require("@mantine/hooks"),import_core6=require("@medplum/core");var import_react10=require("react");var defaultAttributes={outline:{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"},filled:{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"currentColor",stroke:"none"}};var createReactComponent=(type,iconName,iconNamePascal,iconNode)=>{let Component5=(0,import_react10.forwardRef)(({color="currentColor",size=24,stroke=2,title,className,children,...rest},ref)=>(0,import_react10.createElement)("svg",{ref,...defaultAttributes[type],width:size,height:size,className:["tabler-icon",`tabler-icon-${iconName}`,className].join(" "),...type==="filled"?{fill:color}:{strokeWidth:stroke,stroke:color},...rest},[title&&(0,import_react10.createElement)("title",{key:"svg-title"},title),...iconNode.map(([tag,attrs])=>(0,import_react10.createElement)(tag,attrs)),...Array.isArray(children)?children:[children]]));return Component5.displayName=`${iconNamePascal}`,Component5};var __iconNode=[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]],IconCheck=createReactComponent("outline","check","Check",__iconNode);var __iconNode2=[["path",{d:"M15 6l-6 6l6 6",key:"svg-0"}]],IconChevronLeft=createReactComponent("outline","chevron-left","ChevronLeft",__iconNode2);var __iconNode3=[["path",{d:"M9 6l6 6l-6 6",key:"svg-0"}]],IconChevronRight=createReactComponent("outline","chevron-right","ChevronRight",__iconNode3);var __iconNode4=[["path",{d:"M5 12l14 0",key:"svg-0"}]],IconMinus=createReactComponent("outline","minus","Minus",__iconNode4);var __iconNode5=[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]],IconPlus=createReactComponent("outline","plus","Plus",__iconNode5);function r(e){var t,f,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f)}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}var clsx_default=clsx;var import_react12=require("react");var Calendar_default={wrapper:"Calendar_wrapper",calendar:"Calendar_calendar",listItemEventBefore:"Calendar_listItemEventBefore",interactiveEvent:"Calendar_interactiveEvent",eventTitle:"Calendar_eventTitle",eventTime:"Calendar_eventTime",eventInner:"Calendar_eventInner",shortEvent:"Calendar_shortEvent",backgroundEventInner:"Calendar_backgroundEventInner",backgroundEvent:"Calendar_backgroundEvent",appointment:"Calendar_appointment",slot:"Calendar_slot",event:"Calendar_event",pending:"Calendar_pending",free:"Calendar_free",nonBusinessHours:"Calendar_nonBusinessHours"};var DayIndexer=["sun","mon","tue","wed","thu","fri","sat"];function availableTimeToBusinessHoursEntry(availableTime){let startTime=availableTime.allDay?"00:00:00":availableTime.availableStartTime,endTime=availableTime.allDay?"24:00:00":availableTime.availableEndTime;if(!startTime||!endTime||!availableTime.daysOfWeek)return[];let daysOfWeek=availableTime.daysOfWeek.map(day=>DayIndexer.indexOf(day));return endTime<=startTime?[{daysOfWeek,startTime,endTime:"24:00:00"},{daysOfWeek:daysOfWeek.map(day=>(day+1)%7),startTime:"00:00:00",endTime}]:[{daysOfWeek,startTime,endTime}]}var import_jsx_runtime12=require("react/jsx-runtime");function appointmentsToEvents(appointments){return appointments.filter(appointment=>appointment.status!=="cancelled"&&appointment.start&&appointment.end).map(appointment=>{let patientParticipant=appointment.participant.find(p=>p.actor?.reference?.startsWith("Patient/")),status=["booked","arrived","fulfilled","pending"].includes(appointment.status)?"":` (${appointment.status})`,name=patientParticipant?.actor?.display??"No Patient";return{id:appointment.id,title:`${name} ${status}`,start:appointment.start,end:appointment.end,extendedProps:{type:"appointment",appointment},interactive:!0,className:clsx_default(Calendar_default.appointment,Calendar_default[appointment.status])}})}function slotsToEvents(slots){return slots.map(slot=>({id:slot.id,start:slot.start,end:slot.end,title:slot.status==="free"?"Available":"Blocked",extendedProps:{type:"slot",slot},interactive:!1,className:clsx_default(Calendar_default.slot,Calendar_default[slot.status]),display:"background"}))}function Calendar2(props){let colorScheme=(0,import_core5.useComputedColorScheme)(),controller=useCalendarController(),{onSelectAppointment,onSelectSlot,onDoubleClickAppointment}=props,handleSelectEventRaw=(0,import_react12.useCallback)(event=>{let ext=event.extendedProps;ext.type==="appointment"?onSelectAppointment?.(ext.appointment):ext.type==="slot"?onSelectSlot?.(ext.slot):(0,import_core6.assertNever)(ext)},[onSelectAppointment,onSelectSlot]),handleSelectEventDebounced=(0,import_hooks.useDebouncedCallback)(handleSelectEventRaw,100),handleSelectEvent=onDoubleClickAppointment?handleSelectEventDebounced:handleSelectEventRaw,eventDataRef=(0,import_react12.useRef)(new WeakMap),onDoubleClickRef=(0,import_react12.useRef)(onDoubleClickAppointment);(0,import_react12.useEffect)(()=>{onDoubleClickRef.current=onDoubleClickAppointment},[onDoubleClickAppointment]);let handleDblClick=(0,import_react12.useCallback)(e=>{let ext=eventDataRef.current.get(e.currentTarget);ext?.type==="appointment"&&(onDoubleClickRef.current?.(ext.appointment),handleSelectEventDebounced.cancel())},[handleSelectEventDebounced]),events=(0,import_react12.useMemo)(()=>{let appointments=props.appointments??[],slots=props.slots??[],appointmentIndex=appointments.reduce((acc,appointment)=>((appointment.slot??import_core6.EMPTY).forEach(slotRef=>{let key=(0,import_core6.getReferenceString)(slotRef);key&&(acc[key]=appointment)}),acc),{}),filteredSlots=slots.filter(slot=>{if(slot.status==="entered-in-error")return!1;let key=(0,import_core6.getReferenceString)(slot);if(key&&appointmentIndex[key]){let appointment=appointmentIndex[key];if(slot.start===appointment.start&&slot.end===appointment.end)return!1}return!0});return[...appointmentsToEvents(appointments),...slotsToEvents(filteredSlots)]},[props.appointments,props.slots]),businessHours=props.availableTime?.flatMap(availableTimeToBusinessHoursEntry);return(0,import_jsx_runtime12.jsxs)("div",{"data-testid":"calendar",className:clsx_default(Calendar_default.wrapper,props.className),children:[(0,import_jsx_runtime12.jsxs)(import_core5.Group,{justify:"space-between",pb:"sm",children:[(0,import_jsx_runtime12.jsxs)(import_core5.Group,{gap:"md",children:[(0,import_jsx_runtime12.jsxs)(import_core5.Button.Group,{children:[(0,import_jsx_runtime12.jsx)(import_core5.Button,{variant:"default",size:"xs","aria-label":"Previous",onClick:()=>controller.prev(),children:(0,import_jsx_runtime12.jsx)(IconChevronLeft,{size:12})}),(0,import_jsx_runtime12.jsx)(import_core5.Button,{variant:"default",size:"xs",onClick:()=>controller.today(),children:"Today"}),(0,import_jsx_runtime12.jsx)(import_core5.Button,{variant:"default",size:"xs","aria-label":"Next",onClick:()=>controller.next(),children:(0,import_jsx_runtime12.jsx)(IconChevronRight,{size:12})})]}),(0,import_jsx_runtime12.jsx)(import_core5.Title,{order:4,children:controller.view?.title})]}),(0,import_jsx_runtime12.jsx)(import_core5.SegmentedControl,{size:"xs",value:controller.view?.type,onChange:newView=>controller.changeView(newView),data:[{label:"Month",value:"dayGridMonth"},{label:"Week",value:"timeGridWeek"},{label:"Day",value:"timeGridDay"}]})]}),(0,import_jsx_runtime12.jsx)(Calendar,{className:clsx_default(Calendar_default.calendar,controller.view?.type),height:"100%",plugins:[timeGridPlugin,dayGridPlugin,index,interactionPlugin],controller,initialView:"timeGridWeek",headerToolbar:!1,events,datesSet:info=>props.onRangeChange?.({start:info.start,end:info.end}),eventClick:eventInfo=>handleSelectEvent(eventInfo.event),selectable:!0,select:eventInfo=>props.onSelectInterval?.({start:eventInfo.start,end:eventInfo.end}),slotMinHeight:38,eventClass:evt=>clsx_default(Calendar_default.event,{[Calendar_default.interactiveEvent]:evt.isInteractive,[Calendar_default.shortEvent]:evt.isShort}),eventTimeClass:Calendar_default.eventTime,eventTitleClass:Calendar_default.eventTitle,eventInnerClass:Calendar_default.eventInner,backgroundEventClass:Calendar_default.backgroundEvent,backgroundEventInnerClass:Calendar_default.backgroundEventInner,colorScheme,nowIndicator:!0,displayEventEnd:!1,eventTimeFormat:{timeStyle:"short"},listItemEventBeforeClass:Calendar_default.listItemEventBefore,views:{timeGridWeek:{allDaySlot:!1},timeGridDay:{allDaySlot:!1}},eventDidMount:info=>{onDoubleClickAppointment&&(eventDataRef.current.set(info.el,info.event.extendedProps),info.el.addEventListener("dblclick",handleDblClick))},businessHours,nonBusinessHoursClass:Calendar_default.nonBusinessHours})]})}var import_core10=require("@mantine/core"),import_core11=require("@medplum/core");var import_react14=require("react");var import_core7=require("@medplum/core");function getSingleValue(availableTime,url){let matches=(0,import_core7.getExtensions)(availableTime,url);if(matches.length>1)throw new import_core7.OperationOutcomeError((0,import_core7.validationError)(`availableTime must set at most one ${url}, found ${matches.length}`));return matches[0]}function toAvailableTime(availableTime){let daysOfWeek=(0,import_core7.getExtensions)(availableTime,"daysOfWeek").map(subextension=>subextension.valueCode).filter(import_core7.isDayOfWeek),allDay=getSingleValue(availableTime,"allDay"),start=getSingleValue(availableTime,"availableStartTime"),end=getSingleValue(availableTime,"availableEndTime");return allDay?.valueBoolean?{daysOfWeek,allDay:!0}:{daysOfWeek,availableStartTime:start?.valueTime,availableEndTime:end?.valueTime}}function getScheduleAvailability(schedule,service){let availability=(0,import_core7.getScheduleParameters)(schedule,service,"availability");if(availability.length)return availability.flatMap(extension=>(0,import_core7.getExtensions)(extension,"availableTime")).map(toAvailableTime)}function getEffectiveAvailability(service,schedule){if(service)return(schedule&&getScheduleAvailability(schedule,service))??service.availableTime}function buildAvailableTimeExtension(entry){let days=(entry.daysOfWeek??[]).map(day=>({url:"daysOfWeek",valueCode:day}));if(entry.allDay)return{url:"availableTime",extension:[...days,{url:"allDay",valueBoolean:!0}]};if(!entry.availableStartTime||!entry.availableEndTime)throw new import_core7.OperationOutcomeError((0,import_core7.validationError)("availableTime must set allDay, or both availableStartTime and availableEndTime",void 0,"required"));return{url:"availableTime",extension:[...days,{url:"availableStartTime",valueTime:entry.availableStartTime},{url:"availableEndTime",valueTime:entry.availableEndTime}]}}function buildAvailabilityExtension(availableTime){if(!availableTime.length)throw new import_core7.OperationOutcomeError((0,import_core7.validationError)("availability must have at least one availableTime; to follow the service default, clear it instead",void 0,"required"));return{url:"availability",extension:availableTime.map(buildAvailableTimeExtension)}}function setScheduleAvailability(schedule,service,availableTime){return(0,import_core7.setScheduleParameter)(schedule,service,buildAvailabilityExtension(availableTime))}var ScheduleAvailabilityEditor_default={week:"ScheduleAvailabilityEditor_week",dayCell:"ScheduleAvailabilityEditor_dayCell",rangeStart:"ScheduleAvailabilityEditor_rangeStart",rangeSeparator:"ScheduleAvailabilityEditor_rangeSeparator",rangeEnd:"ScheduleAvailabilityEditor_rangeEnd",addAction:"ScheduleAvailabilityEditor_addAction",removeAction:"ScheduleAvailabilityEditor_removeAction",unavailable:"ScheduleAvailabilityEditor_unavailable",overrideToggle:"ScheduleAvailabilityEditor_overrideToggle"};var import_core8=require("@medplum/core"),MINUTES_PER_DAY=1440,TIME_STEP_MINUTES=15,DEFAULT_RANGE={start:540,end:1020},DAY_LABELS={mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday",sun:"Sunday"},DAY_DISPLAY_ORDER=["sun","mon","tue","wed","thu","fri","sat"];function blankWeeklyAvailability(){let weekly={};for(let day of import_core8.DAYS_OF_WEEK)weekly[day]={available:!1,ranges:[{...DEFAULT_RANGE}]};return weekly}function nextDayOfWeek(day){return import_core8.DAYS_OF_WEEK[(import_core8.DAYS_OF_WEEK.indexOf(day)+1)%import_core8.DAYS_OF_WEEK.length]}function parseTimeOfDay(time){let match=/^(\d{1,2}):(\d{2})(?::(\d{2}(?:\.\d+)?))?$/.exec(time??"");if(!match)return;let hours=Number(match[1]),minutes=Number(match[2]);if(!(hours>23||minutes>59))return hours*60+minutes+Math.round(Number(match[3]??0)/60)}function formatTimeOfDay(minutes){let total=minutes%MINUTES_PER_DAY,hh=Math.floor(total/60).toString().padStart(2,"0"),mm=(total%60).toString().padStart(2,"0");return`${hh}:${mm}:00`}function normalizeRanges(ranges){let sorted=[...ranges].filter(range=>range.end>range.start).sort((a,b)=>a.start-b.start),merged=[];for(let range of sorted){let previous=merged[merged.length-1];previous&&range.start<=previous.end?merged[merged.length-1]={start:previous.start,end:Math.max(previous.end,range.end)}:merged.push(range)}return merged}function toWeeklyAvailability(availableTime){let weekly=blankWeeklyAvailability(),collected={};for(let day of import_core8.DAYS_OF_WEEK)collected[day]=[];for(let entry of availableTime??[]){let days=(entry.daysOfWeek??[]).filter(import_core8.isDayOfWeek);if(entry.allDay===!0){for(let day of days)collected[day].push({start:0,end:MINUTES_PER_DAY});continue}let start=parseTimeOfDay(entry.availableStartTime),end=parseTimeOfDay(entry.availableEndTime);if(!(start===void 0||end===void 0))for(let day of days)end>start?collected[day].push({start,end}):(collected[day].push({start,end:MINUTES_PER_DAY}),end>0&&collected[nextDayOfWeek(day)].push({start:0,end}))}for(let day of import_core8.DAYS_OF_WEEK){let ranges=normalizeRanges(collected[day]);ranges.length>0&&(weekly[day]={available:!0,ranges})}return weekly}function fromWeeklyAvailability(weekly){let availableTime=[];for(let day of import_core8.DAYS_OF_WEEK)if(weekly[day].available)for(let range of weekly[day].ranges)range.start===0&&range.end===MINUTES_PER_DAY?availableTime.push({daysOfWeek:[day],allDay:!0}):availableTime.push({daysOfWeek:[day],availableStartTime:formatTimeOfDay(range.start),availableEndTime:formatTimeOfDay(range.end)});return availableTime}function hasAnyAvailableDay(weekly){return import_core8.DAYS_OF_WEEK.some(day=>weekly[day].available&&weekly[day].ranges.length>0)}function formatMinutesOfDay(minutes){if(minutes===MINUTES_PER_DAY)return"12:00 AM";let hours=Math.floor(minutes/60),meridiem=hours<12?"AM":"PM";return`${hours%12===0?12:hours%12}:${(minutes%60).toString().padStart(2,"0")} ${meridiem}`}function ceilToTimeStep(minutes){return Math.ceil(minutes/TIME_STEP_MINUTES)*TIME_STEP_MINUTES}function timeOptions(min,max,include=[]){let options=new Set;for(let minutes=ceilToTimeStep(min);minutes<=max;minutes+=TIME_STEP_MINUTES)options.add(minutes);for(let time of include)time>=min&&time<=max&&options.add(time);return[...options].sort((a,b)=>a-b)}function nearestOption(options,value){let nearest;for(let option of options)(nearest===void 0||Math.abs(option-value)<Math.abs(nearest-value))&&(nearest=option);return nearest}function readMeridiem(query){let lower=query.toLowerCase();if(lower.includes("a"))return"am";if(lower.includes("p"))return"pm"}function rankMinutes(minutes){return minutes.length===2?0:minutes.length===0?1:2}function parseTimeQuery(query){let digits=query.replace(/[^0-9]/g,"");if(!digits)return[];let meridiem=readMeridiem(query);return[1,2].filter(hourDigits=>{let hour=Number(digits.slice(0,hourDigits)),minutes=digits.slice(hourDigits);return hourDigits<=digits.length&&hour>=1&&hour<=12&&minutes.length<=2&&(hourDigits===1||hour>=10||digits.startsWith("0"))}).map(hourDigits=>{let minutes=digits.slice(hourDigits);return{hour:Number(digits.slice(0,hourDigits)),minutes,meridiem,rank:rankMinutes(minutes)}}).sort((a,b)=>a.rank-b.rank)}function isTimeQuery(query){return parseTimeQuery(query).length>0}function matchesTimeQuery(minutes,query){let total=minutes===MINUTES_PER_DAY?0:minutes,hours=Math.floor(total/60);return(hours%12===0?12:hours%12)!==query.hour||query.meridiem&&query.meridiem!==(hours<12?"am":"pm")?!1:(total%60).toString().padStart(2,"0").startsWith(query.minutes)}function leadWithNearestHour(options,current){let byHour=new Map;options.forEach((option,index2)=>{let hour=Math.floor(option/60),distance=Math.abs(option-current),seen=byHour.get(hour);byHour.set(hour,seen?{index:seen.index,distance:Math.min(seen.distance,distance)}:{index:index2,distance})});let rotateAt=0,nearest=1/0;return byHour.forEach(entry=>{entry.distance<nearest&&(nearest=entry.distance,rotateAt=entry.index)}),rotateAt===0?options:[...options.slice(rotateAt),...options.slice(0,rotateAt)]}function typedTimes(query){return parseTimeQuery(query).filter(parsed=>parsed.minutes.length===2&&Number(parsed.minutes)<60).flatMap(parsed=>{let hour=parsed.hour%12,minutes=Number(parsed.minutes);return(parsed.meridiem?[parsed.meridiem]:["am","pm"]).map(meridiem=>(meridiem==="am"?hour:hour+12)*60+minutes)})}function filterTimeOptions(options,query,current){let queries=parseTimeQuery(query);if(queries.length===0)return options;let seen=new Set,matches=[];for(let parsed of queries){let matched=options.filter(option=>!seen.has(option)&&matchesTimeQuery(option,parsed));matched.forEach(option=>seen.add(option)),matches.push(...leadWithNearestHour(matched,current))}return matches}function canAddRange(ranges){return ranges.length>0&&ranges[ranges.length-1].end<=MINUTES_PER_DAY-TIME_STEP_MINUTES}function nextRange(ranges){let lastEnd=ranges[ranges.length-1].end,start=Math.max(ceilToTimeStep(lastEnd),Math.min(ceilToTimeStep(lastEnd+60),MINUTES_PER_DAY-TIME_STEP_MINUTES));return{start,end:Math.min(start+60,MINUTES_PER_DAY)}}var import_core9=require("@mantine/core");var import_react13=require("react");var import_jsx_runtime13=require("react/jsx-runtime"),FLASH_DURATION_MS=700,INPUT_STYLES={input:{transition:"border-color 450ms"}},FLASH_STYLES={input:{...INPUT_STYLES.input,borderColor:"var(--mantine-primary-color-filled)"}},TimeSelect=(0,import_react13.forwardRef)(function(props,ref){let{value,min,max,label,onChange,disabled,testId,className}=props,[query,setQuery]=(0,import_react13.useState)(""),[typing,setTyping]=(0,import_react13.useState)(!1),inputRef=(0,import_react13.useRef)(null),activeOptionRef=(0,import_react13.useRef)(null),submitting=(0,import_react13.useRef)(!1),combobox=(0,import_core9.useCombobox)({onDropdownClose:()=>combobox.resetSelectedOption()}),[flashId,setFlashId]=(0,import_react13.useState)(),flashing=flashId!==void 0;(0,import_react13.useImperativeHandle)(ref,()=>({flash:()=>setFlashId(previous=>(previous??0)+1)}),[]),(0,import_react13.useEffect)(()=>{if(flashId===void 0)return;let timer=setTimeout(()=>setFlashId(void 0),FLASH_DURATION_MS);return()=>clearTimeout(timer)},[flashId]);let{dropdownOpened,selectActiveOption}=combobox;(0,import_react13.useEffect)(()=>{if(!dropdownOpened)return;let frame=requestAnimationFrame(()=>{selectActiveOption(),activeOptionRef.current?.scrollIntoView({block:"center"})});return()=>cancelAnimationFrame(frame)},[dropdownOpened,selectActiveOption]);let display=formatMinutesOfDay(value),typed=typing?query:"",options=filterTimeOptions(timeOptions(min,max,[value,...typedTimes(typed)]),typed,value),scrollTo=options.includes(value)?value:nearestOption(options,value);function handleSubmit(selected){onChange(selected),setQuery(""),setTyping(!1),combobox.closeDropdown(),submitting.current=!0,inputRef.current?.blur(),submitting.current=!1}function handleBlur(){if(!submitting.current&&typing&&isTimeQuery(query)){let highlighted=options[combobox.getSelectedOptionIndex()]??options[0];highlighted!==void 0&&onChange(highlighted)}setTyping(!1),setQuery(""),combobox.closeDropdown()}return(0,import_jsx_runtime13.jsxs)(import_core9.Combobox,{store:combobox,keepMounted:!1,onOptionSubmit:selected=>handleSubmit(Number(selected)),children:[(0,import_jsx_runtime13.jsx)(import_core9.Combobox.Target,{children:(0,import_jsx_runtime13.jsx)(import_core9.InputBase,{ref:inputRef,component:"input",type:"text",className,w:132,value:typing?query:display,placeholder:display,disabled,"aria-label":label,"data-testid":testId,"data-flashing":flashing||void 0,styles:flashing?FLASH_STYLES:INPUT_STYLES,rightSection:(0,import_jsx_runtime13.jsx)(import_core9.Combobox.Chevron,{}),rightSectionPointerEvents:"none",onChange:e=>{setTyping(!0),setQuery(e.currentTarget.value),combobox.openDropdown(),combobox.selectFirstOption()},onFocus:()=>{setTyping(!0),setQuery(""),combobox.openDropdown()},onBlur:handleBlur,onClick:()=>combobox.openDropdown()})}),(0,import_jsx_runtime13.jsx)(import_core9.Combobox.Dropdown,{children:(0,import_jsx_runtime13.jsx)(import_core9.Combobox.Options,{mah:220,style:{overflowY:"auto"},children:options.length===0?(0,import_jsx_runtime13.jsx)(import_core9.Combobox.Empty,{children:"No matching time"}):options.map(option=>(0,import_jsx_runtime13.jsx)(import_core9.Combobox.Option,{value:option.toString(),active:option===value,ref:option===scrollTo?activeOptionRef:void 0,children:(0,import_jsx_runtime13.jsxs)(import_core9.Group,{justify:"space-between",gap:"xs",wrap:"nowrap",children:[(0,import_jsx_runtime13.jsx)(import_core9.Text,{span:!0,inherit:!0,children:formatMinutesOfDay(option)}),option===value&&(0,import_jsx_runtime13.jsx)(IconCheck,{size:14,stroke:1.8})]})},option))})})]})});var import_jsx_runtime14=require("react/jsx-runtime"),AVAILABLE_READ_ONLY_SWITCH_STYLES={track:{backgroundColor:"var(--mantine-color-green-6)",borderColor:"transparent"}};function DayRow(props){let{day,value,readOnly,onChange,onAnnounce}=props,{available,ranges}=value,label=DAY_LABELS[day],endInputs=(0,import_react14.useRef)([]);function boundsAfter(index2){return index2===ranges.length-1?MINUTES_PER_DAY:ranges[index2+1].start}function setStart(index2,start){let range=ranges[index2],end=start>=range.end?Math.min(start+60,boundsAfter(index2)):range.end;end!==range.end&&(endInputs.current[index2]?.flash(),onAnnounce(`${label} block ${index2+1} end time changed to ${formatMinutesOfDay(end)}.`)),onChange({...value,ranges:ranges.with(index2,{start,end})})}function setEnd(index2,end){onChange({...value,ranges:ranges.with(index2,{...ranges[index2],end})})}let switchStyles=readOnly&&available?AVAILABLE_READ_ONLY_SWITCH_STYLES:void 0,canAdd=canAddRange(ranges);return(0,import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment,{children:[(0,import_jsx_runtime14.jsxs)(import_core10.Group,{gap:"sm",wrap:"nowrap",className:ScheduleAvailabilityEditor_default.dayCell,children:[(0,import_jsx_runtime14.jsx)(import_core10.Switch,{checked:available,onChange:e=>{let checked=e.currentTarget.checked;onChange({available:checked,ranges:checked&&ranges.length===0?[{...DEFAULT_RANGE}]:ranges})},color:"green.6",withThumbIndicator:!1,disabled:readOnly,styles:switchStyles,"aria-label":`Available on ${label}`,"data-testid":`schedule-availability-switch-${day}`}),(0,import_jsx_runtime14.jsx)(import_core10.Text,{fw:500,children:label})]}),available?ranges.map((range,index2)=>{let last=index2===ranges.length-1;return(0,import_jsx_runtime14.jsxs)(import_react14.Fragment,{children:[(0,import_jsx_runtime14.jsx)(TimeSelect,{className:ScheduleAvailabilityEditor_default.rangeStart,value:range.start,min:index2===0?0:ranges[index2-1].end,max:boundsAfter(index2)-1,onChange:start=>setStart(index2,start),disabled:readOnly,label:`${label} block ${index2+1} start time`,testId:`schedule-availability-start-${day}-${index2}`}),(0,import_jsx_runtime14.jsx)(import_core10.Text,{c:"dimmed",className:ScheduleAvailabilityEditor_default.rangeSeparator,children:"to"}),(0,import_jsx_runtime14.jsx)(TimeSelect,{ref:handle=>{endInputs.current[index2]=handle},className:ScheduleAvailabilityEditor_default.rangeEnd,value:range.end,min:range.start+1,max:boundsAfter(index2),onChange:end=>setEnd(index2,end),disabled:readOnly,label:`${label} block ${index2+1} end time`,testId:`schedule-availability-end-${day}-${index2}`}),last&&(0,import_jsx_runtime14.jsx)(import_core10.ActionIcon,{className:ScheduleAvailabilityEditor_default.addAction,variant:"subtle",color:"gray",radius:"xl",onClick:()=>onChange({...value,ranges:[...ranges,nextRange(ranges)]}),disabled:readOnly||!canAdd,"aria-label":`Add another block of hours on ${label}`,"data-testid":`schedule-availability-add-${day}`,children:(0,import_jsx_runtime14.jsx)(IconPlus,{size:16,stroke:1.8})}),ranges.length>1&&(0,import_jsx_runtime14.jsx)(import_core10.ActionIcon,{className:ScheduleAvailabilityEditor_default.removeAction,variant:"subtle",color:"gray",radius:"xl",onClick:()=>onChange({...value,ranges:ranges.toSpliced(index2,1)}),disabled:readOnly,"aria-label":`Remove ${label} block ${index2+1}`,"data-testid":`schedule-availability-remove-${day}-${index2}`,children:(0,import_jsx_runtime14.jsx)(IconMinus,{size:16,stroke:1.8})})]},index2)}):(0,import_jsx_runtime14.jsx)(import_core10.Text,{c:"dimmed",className:ScheduleAvailabilityEditor_default.unavailable,children:"Unavailable"})]})}function ScheduleAvailabilityEditor(props){let{schedule,service,timezone,onCancel}=props,editingDefault=schedule===void 0,[overriding,setOverriding]=(0,import_react14.useState)(()=>schedule?(0,import_core11.getScheduleParameters)(schedule,service,"availability").length>0:!0),[weekly,setWeekly]=(0,import_react14.useState)(()=>toWeeklyAvailability(getEffectiveAvailability(service,schedule))),[saving,setSaving]=(0,import_react14.useState)(!1),[announcement,setAnnouncement]=(0,import_react14.useState)({message:"",id:0}),reasonId=(0,import_react14.useId)(),serviceName=service.name??"this visit service type",emptyWeek=(editingDefault||overriding)&&!hasAnyAvailableDay(weekly),emptyWeekReason=editingDefault?`Default availability must include at least one available day. Clearing every day would leave ${serviceName} bookable around the clock rather than never; to stop scheduling it, deactivate the visit service type.`:`Custom availability must include at least one available day. To stop scheduling ${serviceName} on this calendar, turn it off in schedule settings.`;function toggleOverriding(next){setOverriding(next),next||setWeekly(toWeeklyAvailability(service.availableTime))}async function handleSave(){if(!emptyWeek){setSaving(!0);try{if(props.schedule){let updated=overriding?setScheduleAvailability(props.schedule,service,fromWeeklyAvailability(weekly)):(0,import_core11.clearScheduleParameter)(props.schedule,service,"availability");await props.onSave(updated)}else await props.onSave({...service,availableTime:fromWeeklyAvailability(weekly)})}catch(err){console.error(err)}finally{setSaving(!1)}}}let saveButton=(0,import_jsx_runtime14.jsx)(import_core10.Tooltip,{label:emptyWeekReason,disabled:!emptyWeek,multiline:!0,w:300,withArrow:!0,position:"top",events:{hover:!0,focus:!0,touch:!0},children:(0,import_jsx_runtime14.jsx)(import_core10.Button,{onClick:handleSave,loading:saving,fullWidth:!onCancel,"data-disabled":emptyWeek||void 0,"aria-disabled":emptyWeek||void 0,"aria-describedby":emptyWeek?reasonId:void 0,children:"Save Settings"})});return(0,import_jsx_runtime14.jsxs)(import_core10.Stack,{gap:"lg",children:[(0,import_jsx_runtime14.jsx)(import_core10.Text,{c:"dimmed",children:editingDefault?`Set the default weekly working hours for ${serviceName}. Every calendar without hours of its own follows these.`:`Customize the weekly working hours on this calendar, in place of the default availability for ${serviceName}.`}),(0,import_jsx_runtime14.jsxs)(import_core10.Paper,{withBorder:!0,radius:"md",p:"xl",children:[!editingDefault&&(0,import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment,{children:[(0,import_jsx_runtime14.jsxs)(import_core10.Group,{gap:"sm",wrap:"nowrap",className:ScheduleAvailabilityEditor_default.overrideToggle,children:[(0,import_jsx_runtime14.jsx)(import_core10.Switch,{checked:overriding,onChange:e=>toggleOverriding(e.currentTarget.checked),color:"green.6",withThumbIndicator:!1,"aria-label":`Enable custom availability for ${serviceName}`,"data-testid":"schedule-availability-enable"}),(0,import_jsx_runtime14.jsxs)(import_core10.Text,{fw:500,children:["Enable custom availability for ",serviceName]})]}),(0,import_jsx_runtime14.jsx)(import_core10.Divider,{my:"lg"})]}),(0,import_jsx_runtime14.jsx)(import_core10.Box,{className:ScheduleAvailabilityEditor_default.week,opacity:overriding?1:.8,children:DAY_DISPLAY_ORDER.map(day=>(0,import_jsx_runtime14.jsx)(DayRow,{day,value:weekly[day],readOnly:!overriding,onChange:value=>setWeekly(prev=>({...prev,[day]:value})),onAnnounce:message=>setAnnouncement(previous=>({message,id:previous.id+1}))},day))}),(0,import_jsx_runtime14.jsx)(import_core10.VisuallyHidden,{role:"status","aria-live":"polite","data-testid":"schedule-availability-announcement",children:(0,import_jsx_runtime14.jsx)(import_react14.Fragment,{children:announcement.message},announcement.id)}),(0,import_jsx_runtime14.jsxs)(import_core10.Stack,{gap:"sm",mt:"xl",children:[!editingDefault&&(0,import_jsx_runtime14.jsx)(import_core10.Group,{justify:"flex-start",children:(0,import_jsx_runtime14.jsxs)(import_core10.Anchor,{component:"button",type:"button",onClick:()=>setWeekly(toWeeklyAvailability(service.availableTime)),disabled:!overriding,c:overriding?void 0:"dimmed",underline:overriding?"hover":"never","data-testid":"schedule-availability-reset",children:["Reset to default availability of ",serviceName]})}),timezone&&(0,import_jsx_runtime14.jsxs)(import_core10.Text,{c:"dimmed","data-testid":"schedule-availability-timezone",children:["All times are in local ",timezone," time zone."]})]})]}),emptyWeek&&(0,import_jsx_runtime14.jsx)(import_core10.VisuallyHidden,{id:reasonId,"data-testid":"schedule-availability-empty-week",children:emptyWeekReason}),onCancel?(0,import_jsx_runtime14.jsxs)(import_core10.Group,{grow:!0,children:[(0,import_jsx_runtime14.jsx)(import_core10.Button,{variant:"default",onClick:onCancel,children:"Cancel"}),saveButton]}):saveButton]})}
|
|
2
2
|
/*! Bundled license information:
|
|
3
3
|
|
|
4
4
|
@tabler/icons-react/dist/esm/defaultAttributes.mjs:
|