{"version":3,"sources":["webpack:///../../src/components/BaseIcon/icons/IconChevronRight.vue","webpack:///../../src/components/BaseIcon/icons/IconChevronLeft.vue","webpack:///../../src/components/BaseIcon/icons/IconChevronDown.vue","webpack:///../../src/components/BaseIcon/icons/IconClock.vue","webpack:///../../src/components/BaseIcon/BaseIcon.vue","webpack:///../../node_modules/vue-screen-utils/dist/index.mjs","webpack:///../../node_modules/lodash/_freeGlobal.js","webpack:///../../node_modules/lodash/_root.js","webpack:///../../node_modules/lodash/_Symbol.js","webpack:///../../node_modules/lodash/_getRawTag.js","webpack:///../../node_modules/lodash/_objectToString.js","webpack:///../../node_modules/lodash/_baseGetTag.js","webpack:///../../node_modules/lodash/isObject.js","webpack:///../../node_modules/lodash/isFunction.js","webpack:///../../node_modules/lodash/isArray.js","webpack:///../../node_modules/lodash/isObjectLike.js","webpack:///../../node_modules/lodash/isString.js","webpack:///../../node_modules/lodash/isBoolean.js","webpack:///../../node_modules/lodash/isNumber.js","webpack:///../../node_modules/lodash/_baseIsDate.js","webpack:///../../node_modules/lodash/_baseUnary.js","webpack:///../../node_modules/lodash/_nodeUtil.js","webpack:///../../node_modules/lodash/isDate.js","webpack:///../../node_modules/lodash/isSymbol.js","webpack:///../../node_modules/lodash/_isKey.js","webpack:///../../node_modules/lodash/_coreJsData.js","webpack:///../../node_modules/lodash/_isMasked.js","webpack:///../../node_modules/lodash/_toSource.js","webpack:///../../node_modules/lodash/_baseIsNative.js","webpack:///../../node_modules/lodash/_getValue.js","webpack:///../../node_modules/lodash/_getNative.js","webpack:///../../node_modules/lodash/_nativeCreate.js","webpack:///../../node_modules/lodash/_hashClear.js","webpack:///../../node_modules/lodash/_hashDelete.js","webpack:///../../node_modules/lodash/_hashGet.js","webpack:///../../node_modules/lodash/_hashHas.js","webpack:///../../node_modules/lodash/_hashSet.js","webpack:///../../node_modules/lodash/_Hash.js","webpack:///../../node_modules/lodash/_listCacheClear.js","webpack:///../../node_modules/lodash/eq.js","webpack:///../../node_modules/lodash/_assocIndexOf.js","webpack:///../../node_modules/lodash/_listCacheDelete.js","webpack:///../../node_modules/lodash/_listCacheGet.js","webpack:///../../node_modules/lodash/_listCacheHas.js","webpack:///../../node_modules/lodash/_listCacheSet.js","webpack:///../../node_modules/lodash/_ListCache.js","webpack:///../../node_modules/lodash/_Map.js","webpack:///../../node_modules/lodash/_mapCacheClear.js","webpack:///../../node_modules/lodash/_isKeyable.js","webpack:///../../node_modules/lodash/_getMapData.js","webpack:///../../node_modules/lodash/_mapCacheDelete.js","webpack:///../../node_modules/lodash/_mapCacheGet.js","webpack:///../../node_modules/lodash/_mapCacheHas.js","webpack:///../../node_modules/lodash/_mapCacheSet.js","webpack:///../../node_modules/lodash/_MapCache.js","webpack:///../../node_modules/lodash/memoize.js","webpack:///../../node_modules/lodash/_memoizeCapped.js","webpack:///../../node_modules/lodash/_stringToPath.js","webpack:///../../node_modules/lodash/_arrayMap.js","webpack:///../../node_modules/lodash/_baseToString.js","webpack:///../../node_modules/lodash/toString.js","webpack:///../../node_modules/lodash/_castPath.js","webpack:///../../node_modules/lodash/_toKey.js","webpack:///../../node_modules/lodash/_baseGet.js","webpack:///../../node_modules/lodash/get.js","webpack:///../../node_modules/lodash/_defineProperty.js","webpack:///../../node_modules/lodash/_baseAssignValue.js","webpack:///../../node_modules/lodash/_assignValue.js","webpack:///../../node_modules/lodash/_isIndex.js","webpack:///../../node_modules/lodash/_createBaseFor.js","webpack:///../../node_modules/lodash/_baseFor.js","webpack:///../../node_modules/lodash/_baseTimes.js","webpack:///../../node_modules/lodash/_baseIsArguments.js","webpack:///../../node_modules/lodash/isArguments.js","webpack:///../../node_modules/lodash/stubFalse.js","webpack:///../../node_modules/lodash/isBuffer.js","webpack:///../../node_modules/lodash/isLength.js","webpack:///../../node_modules/lodash/_baseIsTypedArray.js","webpack:///../../node_modules/lodash/isTypedArray.js","webpack:///../../node_modules/lodash/_arrayLikeKeys.js","webpack:///../../node_modules/lodash/_isPrototype.js","webpack:///../../node_modules/lodash/_overArg.js","webpack:///../../node_modules/lodash/_nativeKeys.js","webpack:///../../node_modules/lodash/_baseKeys.js","webpack:///../../node_modules/lodash/isArrayLike.js","webpack:///../../node_modules/lodash/keys.js","webpack:///../../node_modules/lodash/_baseForOwn.js","webpack:///../../node_modules/lodash/_stackClear.js","webpack:///../../node_modules/lodash/_stackDelete.js","webpack:///../../node_modules/lodash/_stackGet.js","webpack:///../../node_modules/lodash/_stackHas.js","webpack:///../../node_modules/lodash/_stackSet.js","webpack:///../../node_modules/lodash/_Stack.js","webpack:///../../node_modules/lodash/_setCacheAdd.js","webpack:///../../node_modules/lodash/_setCacheHas.js","webpack:///../../node_modules/lodash/_SetCache.js","webpack:///../../node_modules/lodash/_arraySome.js","webpack:///../../node_modules/lodash/_cacheHas.js","webpack:///../../node_modules/lodash/_equalArrays.js","webpack:///../../node_modules/lodash/_Uint8Array.js","webpack:///../../node_modules/lodash/_mapToArray.js","webpack:///../../node_modules/lodash/_setToArray.js","webpack:///../../node_modules/lodash/_equalByTag.js","webpack:///../../node_modules/lodash/_arrayPush.js","webpack:///../../node_modules/lodash/_baseGetAllKeys.js","webpack:///../../node_modules/lodash/_arrayFilter.js","webpack:///../../node_modules/lodash/stubArray.js","webpack:///../../node_modules/lodash/_getSymbols.js","webpack:///../../node_modules/lodash/_getAllKeys.js","webpack:///../../node_modules/lodash/_equalObjects.js","webpack:///../../node_modules/lodash/_DataView.js","webpack:///../../node_modules/lodash/_Promise.js","webpack:///../../node_modules/lodash/_Set.js","webpack:///../../node_modules/lodash/_WeakMap.js","webpack:///../../node_modules/lodash/_getTag.js","webpack:///../../node_modules/lodash/_baseIsEqualDeep.js","webpack:///../../node_modules/lodash/_baseIsEqual.js","webpack:///../../node_modules/lodash/_baseIsMatch.js","webpack:///../../node_modules/lodash/_isStrictComparable.js","webpack:///../../node_modules/lodash/_getMatchData.js","webpack:///../../node_modules/lodash/_matchesStrictComparable.js","webpack:///../../node_modules/lodash/_baseMatches.js","webpack:///../../node_modules/lodash/_baseHasIn.js","webpack:///../../node_modules/lodash/_hasPath.js","webpack:///../../node_modules/lodash/hasIn.js","webpack:///../../node_modules/lodash/_baseMatchesProperty.js","webpack:///../../node_modules/lodash/identity.js","webpack:///../../node_modules/lodash/_baseProperty.js","webpack:///../../node_modules/lodash/_basePropertyDeep.js","webpack:///../../node_modules/lodash/property.js","webpack:///../../node_modules/lodash/_baseIteratee.js","webpack:///../../node_modules/lodash/mapValues.js","webpack:///../../node_modules/lodash/_apply.js","webpack:///../../node_modules/lodash/_overRest.js","webpack:///../../node_modules/lodash/constant.js","webpack:///../../node_modules/lodash/_baseSetToString.js","webpack:///../../node_modules/lodash/_shortOut.js","webpack:///../../node_modules/lodash/_setToString.js","webpack:///../../node_modules/lodash/_baseRest.js","webpack:///../../node_modules/lodash/_isIterateeCall.js","webpack:///../../node_modules/lodash/_nativeKeysIn.js","webpack:///../../node_modules/lodash/_baseKeysIn.js","webpack:///../../node_modules/lodash/keysIn.js","webpack:///../../node_modules/lodash/defaults.js","webpack:///../../node_modules/lodash/_assignMergeValue.js","webpack:///../../node_modules/lodash/_cloneBuffer.js","webpack:///../../node_modules/lodash/_cloneArrayBuffer.js","webpack:///../../node_modules/lodash/_cloneTypedArray.js","webpack:///../../node_modules/lodash/_copyArray.js","webpack:///../../node_modules/lodash/_baseCreate.js","webpack:///../../node_modules/lodash/_getPrototype.js","webpack:///../../node_modules/lodash/_initCloneObject.js","webpack:///../../node_modules/lodash/isArrayLikeObject.js","webpack:///../../node_modules/lodash/isPlainObject.js","webpack:///../../node_modules/lodash/_safeGet.js","webpack:///../../node_modules/lodash/_copyObject.js","webpack:///../../node_modules/lodash/toPlainObject.js","webpack:///../../node_modules/lodash/_baseMergeDeep.js","webpack:///../../node_modules/lodash/_baseMerge.js","webpack:///../../node_modules/lodash/_customDefaultsMerge.js","webpack:///../../node_modules/lodash/_createAssigner.js","webpack:///../../node_modules/lodash/mergeWith.js","webpack:///../../node_modules/lodash/defaultsDeep.js","webpack:///../../node_modules/lodash/_baseHas.js","webpack:///../../node_modules/lodash/has.js","webpack:///../../node_modules/lodash/_createBaseEach.js","webpack:///../../node_modules/lodash/_baseEach.js","webpack:///../../node_modules/lodash/head.js","webpack:///../../node_modules/lodash/last.js","webpack:///../../node_modules/lodash/_baseSome.js","webpack:///../../node_modules/lodash/some.js","webpack:///../../src/utils/helpers.ts","webpack:///../../src/utils/glyph.ts","webpack:///../../src/utils/theme.ts","webpack:///../../src/utils/defaults/locales.ts","webpack:///../../src/utils/defaults/index.ts","webpack:///../../node_modules/date-fns/_lib/toInteger/index.js","webpack:///../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///../../node_modules/date-fns-tz/_lib/tzTokenizeDate/index.js","webpack:///../../node_modules/date-fns-tz/_lib/newDateUTC/index.js","webpack:///../../node_modules/date-fns-tz/_lib/tzParseTimezone/index.js","webpack:///../../node_modules/date-fns-tz/_lib/tzPattern/index.js","webpack:///../../node_modules/date-fns-tz/toDate/index.js","webpack:///../../node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack:///../../node_modules/date-fns/esm/toDate/index.js","webpack:///../../node_modules/date-fns/esm/_lib/toInteger/index.js","webpack:///../../node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack:///../../node_modules/date-fns/esm/startOfWeek/index.js","webpack:///../../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///../../node_modules/date-fns/esm/differenceInCalendarWeeks/index.js","webpack:///../../node_modules/date-fns/esm/lastDayOfMonth/index.js","webpack:///../../node_modules/date-fns/esm/startOfMonth/index.js","webpack:///../../node_modules/date-fns/esm/getWeeksInMonth/index.js","webpack:///../../node_modules/date-fns/esm/getWeekYear/index.js","webpack:///../../node_modules/date-fns/esm/startOfWeekYear/index.js","webpack:///../../node_modules/date-fns/esm/getWeek/index.js","webpack:///../../node_modules/date-fns/esm/startOfISOWeek/index.js","webpack:///../../node_modules/date-fns/esm/getISOWeekYear/index.js","webpack:///../../node_modules/date-fns/esm/startOfISOWeekYear/index.js","webpack:///../../node_modules/date-fns/esm/getISOWeek/index.js","webpack:///../../node_modules/date-fns/esm/addDays/index.js","webpack:///../../node_modules/date-fns/esm/addMonths/index.js","webpack:///../../node_modules/date-fns/esm/addYears/index.js","webpack:///../../src/utils/date/rules.ts","webpack:///../../src/utils/date/repeat.ts","webpack:///../../src/utils/date/helpers.ts","webpack:///../../src/utils/page.ts","webpack:///../../src/utils/cache.ts","webpack:///../../src/utils/date/range.ts","webpack:///../../src/utils/locale.ts","webpack:///../../src/utils/attribute.ts","webpack:///../../src/use/base.ts","webpack:///../../src/utils/touch.ts","webpack:///../../src/utils/watchers.ts","webpack:///../../src/use/calendar.ts","webpack:///../../src/components/CalendarSlot/CalendarSlot.vue","webpack:///../../src/utils/popovers.ts","webpack:///../../src/components/CalendarHeader/CalendarHeader.vue","webpack:///../../src/components/CalendarDay/CalendarDay.vue","webpack:///../../src/components/CalendarPane/CalendarPane.vue","webpack:///../../src/components/Popover/Popover.vue","webpack:///../../src/use/calendarNav.ts","webpack:///../../src/components/CalendarNav/CalendarNav.vue","webpack:///../../src/components/CalendarNavPopover/CalendarNavPopover.vue","webpack:///../../src/components/PopoverRow/PopoverRow.vue","webpack:///../../src/components/CalendarDayPopover/CalendarDayPopover.vue","webpack:///../../src/components/Calendar/Calendar.vue","webpack:///../../src/components/BaseSelect/BaseSelect.vue","webpack:///../../src/use/datePicker.ts","webpack:///../../src/use/timePicker.ts","webpack:///../../src/components/TimePicker/TimePicker.vue","webpack:///../../src/components/DatePicker/DatePicker.vue","webpack:///./node_modules/vee-validate/dist/vee-validate.esm.js","webpack:///./node_modules/vue-demi/lib/index.mjs","webpack:///./node_modules/util-deprecate/browser.js","webpack:///./node_modules/vue-demi/lib/index.cjs"],"names":["viewBox","_hoisted_3","_hoisted_1","fill","width","computed","props","size","height","icon","icons","name","windowExists","window","windowHasFeature","feature","useDarkMode","config","isDark","ref","displayMode","value","mediaQuery","mutationObserver","mqListener","ev","matches","setupSystem","matchMedia","addEventListener","moListener","selector","darkClass","el","document","querySelector","classList","contains","setupClass","MutationObserver","observe","attributes","attributeFilter","setup","stopObservers","type","toLowerCase","stopWatch","watch","immediate","removeEventListener","disconnect","cleanup","onUnmounted","freeGlobal","global","Object","require$$0","freeSelf","self","root","Function","Symbol","objectProto","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","getRawTag","isOwn","call","tag","unmasked","e","result","objectToString","require$$1","require$$2","nullTag","undefinedTag","baseGetTag","isObject","asyncTag","funcTag","genTag","proxyTag","isFunction","isArray","Array","isObjectLike","stringTag","isString","boolTag","isBoolean","numberTag","isNumber","dateTag","baseIsDate","baseUnary","func","freeExports","exports","nodeType","freeModule","module","moduleExports","freeProcess","process","nodeUtil","types","require","binding","nodeIsDate","isDate","symbolTag","isSymbol","reIsDeepProp","reIsPlainProp","isKey","object","test","coreJsData","maskSrcKey","uid","exec","keys","IE_PROTO","isMasked","funcProto","funcToString","toSource","require$$3","reRegExpChar","reIsHostCtor","reIsNative","RegExp","replace","baseIsNative","pattern","getValue","key","getNative","nativeCreate","hashClear","this","__data__","hashDelete","has","HASH_UNDEFINED","hashGet","data","hashHas","hashSet","require$$4","Hash","entries","index","length","clear","entry","set","get","listCacheClear","eq","other","assocIndexOf","array","arrayProto","splice","listCacheDelete","lastIndex","pop","listCacheGet","listCacheHas","listCacheSet","push","ListCache","Map","mapCacheClear","isKeyable","getMapData","map","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","FUNC_ERROR_TEXT","memoize","resolver","TypeError","memoized","args","arguments","apply","cache","Cache","MAX_MEMOIZE_SIZE","memoizeCapped","rePropName","reEscapeChar","stringToPath","string","charCodeAt","match","number","quote","subString","arrayMap","iteratee","INFINITY","symbolProto","symbolToString","baseToString","castPath","toKey","baseGet","path","defaultValue","defineProperty","baseAssignValue","assignValue","objValue","MAX_SAFE_INTEGER","reIsUint","isIndex","createBaseFor","fromRight","keysFunc","iterable","baseFor","baseTimes","n","argsTag","baseIsArguments","propertyIsEnumerable","isArguments","stubFalse","Buffer","nativeIsBuffer","isBuffer","isLength","arrayTag","errorTag","mapTag","objectTag","regexpTag","setTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","nodeIsTypedArray","isTypedArray","require$$5","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","isPrototype","Ctor","constructor","proto","overArg","transform","arg","nativeKeys","baseKeys","isArrayLike","baseForOwn","stackClear","stackDelete","stackGet","stackHas","LARGE_ARRAY_SIZE","stackSet","pairs","Stack","setCacheAdd","setCacheHas","SetCache","values","add","arraySome","predicate","cacheHas","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","bitmask","customizer","equalFunc","stack","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","Uint8Array","mapToArray","forEach","setToArray","symbolValueOf","valueOf","equalByTag","byteLength","byteOffset","buffer","message","convert","stacked","arrayPush","offset","baseGetAllKeys","symbolsFunc","arrayFilter","resIndex","stubArray","nativeGetSymbols","getOwnPropertySymbols","getSymbols","symbol","getAllKeys","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","DataView","Promise","Set","WeakMap","require$$6","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","resolve","ctorString","require$$7","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqual","baseIsMatch","source","matchData","noCustomizer","srcValue","isStrictComparable","getMatchData","matchesStrictComparable","baseMatches","baseHasIn","hasPath","hasFunc","hasIn","baseMatchesProperty","identity","baseProperty","basePropertyDeep","property","baseIteratee","mapValues","thisArg","nativeMax","Math","max","overRest","start","otherArgs","constant","baseSetToString","HOT_COUNT","HOT_SPAN","nativeNow","Date","now","shortOut","count","lastCalled","stamp","remaining","setToString","baseRest","isIterateeCall","nativeKeysIn","baseKeysIn","isProto","keysIn","defaults","sources","guard","propsIndex","propsLength","assignMergeValue","allocUnsafe","cloneBuffer","isDeep","slice","copy","cloneArrayBuffer","arrayBuffer","cloneTypedArray","typedArray","copyArray","objectCreate","create","baseCreate","getPrototype","getPrototypeOf","initCloneObject","isArrayLikeObject","objectCtorString","isPlainObject","safeGet","copyObject","isNew","newValue","toPlainObject","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","baseMergeDeep","srcIndex","mergeFunc","isCommon","isTyped","baseMerge","customDefaultsMerge","createAssigner","assigner","mergeWith","defaultsDeep","baseHas","createBaseEach","eachFunc","collection","baseEach","head","last","baseSome","some","getType","_isDate","isNaN","getTime","_has","hasAny","obj","_some","p","pad","val","len","char","arrayHasItems","resolveEl","target","$el","off","element","event","handler","opts","on","elementContains","child","onSpaceOrEnter","preventDefault","omit","ret","includes","pick","clamp","num","min","createGuid","S4","random","substring","targetProps","displayProps","_defaultProfile","base","end","normalizeConfig","color","defaultProfile","rootColor","startEnd","targetType","targetConfig","targetColor","HighlightRenderer","__publicField","fillMode","prepareRender","glyphs","highlights","content","render","onStart","onEnd","highlight","wrapperClass","class","contentClass","BaseRenderer","collectionType","item","ContentRenderer","super","_","DotRenderer","BarRenderer","Theme","normalizeGlyphs","attr","renderers","renderer","cell","locales","ar","dow","L","bg","ca","hr","cs","da","nl","eo","et","fi","fr","de","he","id","it","ja","ko","lv","lt","mk","nb","nn","pl","pt","ro","ru","sk","sv","th","tr","uk","vi","en","es","no","zh","localeSettings","reduce","res","firstDayOfWeek","masks","defaultConfig","componentPrefix","navVisibility","titlePosition","transition","touch","datePicker","updateOnInput","inputDebounce","popover","visibility","placement","isInteractive","state","reactive","defaultLocales","l","getDefault","__vcalendar__","setupDefaults","app","userDefaults","globalProperties","$VCalendar","assign","toInteger","dirtyNumber","NaN","Number","ceil","floor","default","getTimezoneOffsetInMilliseconds","date","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","tzTokenizeDate","timeZone","dtf","getDateTimeFormat","formatToParts","partsOffset","hackyOffset","typeToPos","year","month","day","hour","minute","second","formatted","filled","i","pos","parseInt","error","RangeError","format","parsed","dtfCache","testDateFormatted","Intl","DateTimeFormat","hour12","hourCycleSupported","hourCycle","newDateUTC","fullYear","millisecond","setUTCHours","tzParseTimezone","_index","_interopRequireDefault","_index2","__esModule","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","patterns","timezone","timezoneZ","timezoneHH","timezoneHHMM","timezoneString","isUtcDate","token","absoluteOffset","hours","validateTimezone","minutes","abs","isValidTimezoneIANAString","toUtcDate","calcOffset","fixedOffset","fixOffset","tokens","asUTC","asTS","over","localTS","utcGuess","o2","o3","validIANATimezoneCache","timeZoneString","tzPattern","_default","toDate","_index3","_index4","DEFAULT_ADDITIONAL_DIGITS","dateTimePattern","datePattern","plainTime","YY","YYY","YYYY","YYYYY","MM","DDD","MMDD","Www","WwwD","HH","HHMM","HHMMSS","argument","dirtyOptions","options","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","restDateString","parseDate","timestamp","time","parseTime","dateString","timeString","parts","trim","patternYYY","patternYYYYY","yearString","centuryString","week","validateDate","dayOfYear","validateDayOfYearDate","validateWeekDate","dayOfISOWeekYear","dayOfWeek","parseFloat","validateTime","seconds","isoWeekYear","fourthOfJanuaryDay","getUTCDay","diff","setUTCDate","getUTCDate","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","isLeapYear","requiredArgs","required","_typeof","iterator","argStr","console","warn","Error","defaultOptions","getDefaultOptions","startOfWeek","dirtyDate","_ref","_ref2","_ref3","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","weekStartsOn","locale","getDay","setDate","setHours","MILLISECONDS_IN_WEEK","differenceInCalendarWeeks","dirtyDateLeft","dirtyDateRight","startOfWeekLeft","startOfWeekRight","timestampLeft","timestampRight","round","lastDayOfMonth","setFullYear","startOfMonth","getWeeksInMonth","getWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","startOfWeekYear","firstWeek","getWeek","startOfISOWeek","getISOWeekYear","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","startOfISOWeekYear","fourthOfJanuary","getISOWeek","addDays","dirtyAmount","amount","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","daysInMonth","addYears","GroupRuleType","IntervalRuleType","ComponentRuleType","OrdinalComponentRuleType","IntervalRule","interval","from","validated","passes","dateParts","diffInDays","diffInWeeks","diffInMonths","diffInYears","ComponentRule","components","validator","getter","normalizeComponents","DaysRule","WeekdaysRule","WeeksRule","MonthsRule","YearsRule","component","dayParts","comps","comp","isDayInMonth","dayFromEnd","isDayOfWeek","weekday","isWeekInMonth","weekFromEnd","isMonthInYear","OrdinalComponentRule","normalizeArrayConfig","numOrArray","isOrdinalWeekInMonth","weekdayOrdinal","weekdayOrdinalFromEnd","ordinalWeek","ordinalWeekday","FunctionRule","fn","DateRepeat","parent","Any","Locale","All","rules","c","getDateParts","until","getObjectRules","every","Days","dayIndex","r","dayInMonth","weekInMonth","monthInYear","DatePatchKeys","dateTime","daysInWeek","weeksInMonth","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_DAY","daysInMonths","maskMacros","DATE_PART_RANGES","milliseconds","literal","formatFlags","D","d","DD","dd","W","dayNamesNarrow","WW","dayNamesShorter","WWW","dayNamesShort","WWWW","dayNames","M","MMM","monthNamesShort","MMMM","monthNames","substr","h","hh","H","m","mm","s","ss","S","SS","SSS","a","amPm","A","toUpperCase","Z","ZZ","o","timezoneOffset","ZZZ","ZZZZ","twoDigits","threeDigits","fourDigits","word","noop","monthUpdate","arrName","v","indexOf","charAt","parseFlags","Do","cent","isPm","normalizeMasks","prev","curr","isDateParts","daysToAdd","getDayIndex","d1","d2","getUTCFullYear","getDateFromParts","hrs","sec","ms","toFnsDate","tzDate","toLocaleString","monthParts","getMonthParts","numDays","firstWeekday","numWeeks","weeknumber","weeknumbers","isValid","getMonthPartsKey","inLeapYear","firstDayOfMonth","isoWeeknumbers","getWeekdayDates","dates","getDayNames","localeId","getHourDates","getRelativeTimeNames","units","rtf","RelativeTimeFormat","names","unit","getMonthDates","getMonthNames","datePartIsValid","part","rule","getDatePartOptions","range","padding","label","getDatePartsOptions","getNearestDatePart","opt","disabled","diffPrev","diffCurr","applyRulesForDateParts","mask","str","dp","$0","info","search","today","find","formatDate","literals","$1","shift","viewAddressKeys","daily","weekly","monthly","getDays","monthComps","prevMonthComps","nextMonthComps","days","prevMonthDaysToShow","prevMonth","thisMonth","nextMonth","position","formatter","todayDay","todayMonth","todayYear","w","startDate","getDateFromParams","noonDate","endDate","weekdayPosition","weekdayPositionFromEnd","isoWeeknumber","isToday","isFirstDay","isLastDay","onTop","onBottom","onLeft","onRight","ariaLabel","weekPosition","isDisabled","isFocusable","isFocused","inMonth","inPrevMonth","inNextMonth","classes","getWeeks","showWeeknumbers","showIsoWeeknumbers","weekIndex","title","weeknumberDisplay","fromDay","toDay","getWeekdays","weekdays","getPageAddressForDate","view","addPages","newDate","pageIsValid","page","pageIsBeforePage","comparePage","pageIsAfterPage","pageIsBetweenPages","fromPage","toPage","pageIsEqualToPage","aPage","bPage","pageRangeToArray","to","getPageKey","getCachedPage","getPrevMonthParts","getNextMonthParts","weeks","monthTitle","shortMonthLabel","monthLabel","shortYearLabel","yearLabel","getPage","cachedPage","trimWeeks","viewDays","viewWeeks","dayObj","weekObj","weekTitle","dayTitle","createKey","createItem","store","getOrSet","removeKey","DateRange","span","order","repeat","_a","ranges","filter","hasRepeat","isSingleDay","isMultiDay","daySpan","Infinity","startsOnDay","_b","intersectsDay","intersectsDayRange","intersectsRange","startDayIndex","endDayIndex","DateRangeContext","startDay","startTime","endDay","endTime","getRangeRecords","_c","_d","record","records","getCell","cells","getCells","cellExists","allDay","sort","b","DEFAULT_MONTH_CACHE_SIZE","DEFAULT_PAGE_CACHE_SIZE","resolveConfig","detLocale","resolvedOptions","localeKeys","validKey","k","lk","defLocale","monthCacheSize","pageCacheSize","monthCache","pageCache","hourLabels","getHourLabels","relativeTimeNames","nullDate","fillDate","patch","fillParts","toDateOrNull","dte","fromDate","fromMany","getThisMonthParts","getDayId","Attribute","theme","hashcode","pinPage","hasRanges","maxRepeatSpan","simpleRanges","repeatRanges","contextKey","propsDef","Boolean","minDate","maxDate","disabledDates","createBase","disabledAttribute","context","provide","useOrCreateBase","inject","addHorizontalSwipeHandler","maxSwipeTime","minHorizontalSwipeDistance","maxVerticalSwipeDistance","startX","startY","isSwiping","touchStart","t","changedTouches","screenX","screenY","touchEnd","deltaX","deltaY","deltaTime","toLeft","toRight","passive","watchSkippers","skipWatcher","watcher","durationMs","handleWatcher","basePropsDef","rows","columns","step","expanded","borderless","transparent","initialPage","initialPagePosition","minPage","maxPage","disablePageSwipe","emitsDef","createCalendar","emit","slots","containerRef","navPopoverRef","focusedDay","focusableDay","inTransition","navPopoverId","dayPopoverId","_view","_pages","transitionName","transitionPromise","removeHandlers","firstPage","lastPage","getDateAddress","isMonthly","isWeekly","isDaily","onTransitionBeforeEnter","onTransitionAfterEnter","address","_addPages","refreshDisabled","attributeContext","refreshFocusable","forDays","pages","hasAttributes","ctx","dayCells","getWeeknumberPosition","column","columnFromEnd","startsWith","getPageForAttributes","getDefaultInitialPage","getTargetPageRange","force","pagesToAdd","getPageTransition","oldPage","newPage","defaultTransition","moveNext","movePrev","refreshPages","reject","row","rowFromEnd","weeknumberPosition","targetBy","canMove","pagesInRange","canMoveBy","canMovePrev","canMoveNext","move","async","hide","hideDelay","moveBy","tryFocusDate","daySelector","focusableEl","focus","focusDate","onDayClick","onDayMouseenter","onDayMouseleave","onDayFocusin","onDayFocusout","onDayKeydown","altKey","catch","onKeydown","onWeeknumberClick","onMounted","watchEffect","useCalendar","inheritAttrs","showPopover","CustomEvent","detail","hidePopover","togglePopover","getPopoverEventHandlers","click","hover","hoverFocus","autoHide","hovered","focused","clickHandler","currentTarget","stopPropagation","mouseMoveHandler","mouseLeaveHandler","focusInHandler","focusOutHandler","relatedTarget","handlers","mousemove","mouseleave","focusin","focusout","popoverHandlers","addHandlers","remove","popoverDirective","mounted","updated","oldValue","oldVisibility","newVisibility","unmounted","navPlacement","navPopoverOptions","modifiers","fallbackPlacements","titleLeft","titleRight","layout_","layout","show","hideArrows","hideTitle","next","gridStyle","gridTemplateColumns","split","join","defineComponent","directives","CalendarSlot","attributeCells","attributedDay","processPopover","attribute","popovers","customData","resolvedPopover","hasHighlights","dots","hasDots","bars","hasBars","popoverAttrs","dayClasses","dayContentProps","tabindex","style","role","dayContentEvents","mouseenter","keydown","dayPopover","_hoisted_2","_hoisted_4","_resolveDirective","_normalizeClass","_ctx","_openBlock","_createElementBlock","_renderList","_createCommentVNode","_createVNode","_component_CalendarSlot","dayProps","dayEvents","openBlock","_createElementVNode","_sfc_main$9","CalendarHeader","CalendarDay","_resolveComponent","$props","onClick","toDisplayString","_hoisted_2$5","_createBlock","emits","showDelay","boundarySelector","timeout","popoverRef","resizeObserver","popper","isVisible","direction","positionFixed","isHovered","updateDirection","onPopperUpdate","popperOptions","strategy","boundary","enabled","phase","onFirstUpdate","alignment","isLeftRight","destroyPopper","destroy","setupPopper","nextTick","elements","reference","update","updateState","newState","setTimer","delay","clearTimeout","isCurrentTarget","toggle","onDocumentClick","popperRef","onDocumentKeydown","onDocumentShowPopover","onDocumentHidePopover","onDocumentTogglePopover","addEvents","removeEvents","beforeEnter","afterEnter","beforeLeave","afterLeave","onMouseOver","onMouseLeave","activeElement","onFocusIn","onFocusOut","cleanupRO","ResizeObserver","toRefs","$setup","$data","$options","_cache","onMouseover","onMouseleave","onFocusin","onFocusout","appear","onBeforeEnter","onAfterEnter","onBeforeLeave","onAfterLeave","$attrs","$slots","_createTextVNode","_toDisplayString","createElementVNode","createCalendarNav","monthMode","yearIndex","yearGroupIndex","yearGroupCount","navContainer","focusFirstItem","setTimeout","monthClick","currentPosition","yearClick","getYearItems","thisYear","startYear","endYear","items","isActive","currentYear","isCurrent","getMonthItems","navMonths","currentMonth","getYearGroupIndex","toggleMode","prevItemsEnabled","movePrevYear","movePrevYearGroup","nextItemsEnabled","moveNextYear","moveNextYearGroup","monthItems","yearItems","firstYear","lastYear","prevMonthItemsEnabled","prevYearItemsEnabled","nextMonthItemsEnabled","nextYearItemsEnabled","activeItems","indicator","dot","bar","hideIndicator","_sfc_render","CalendarPane","CalendarNavPopover","CalendarDayPopover","onMouseup","hide-title","createVNode","_Transition","_withCtx","renderSlot","_component_CalendarDayPopover","mode","modelValue","modelModifiers","is24hr","hideTimeHeader","timeAccuracy","isRequired","isRange","dragAttribute","selectAttribute","createDatePicker","baseCtx","showCalendar","datePickerPopoverId","dateValue","dragValue","inputValues","calendarRef","dragTrackingValue","updateTimeout","watchValue","valueStart","valueEnd","isDateMode","isDateTimeMode","isTimeMode","isDragging","modelConfig","inputMask","inputTime24hr","inputTime","inputDateTime24hr","inputDateTime","input","inputMaskHasTime","inputMaskHasDate","inputMaskPatch","previousElementSibling","popoverEvents","inputValue","inputEvents","events","onInputInput","change","onInputChange","keyup","onInputKeyup","hasValue","attrs","getAutoRules","_rules","accuracy","normalizeDateConfig","hasDateValue","datesAreEqual","aIsDate","bIsDate","valuesAreEqual","aHasValue","bHasValue","valueIsDisabled","normalizeValue","targetPriority","sortRange","denormalizeValue","updateValue","debounce","forceUpdateValue","clearIfEqual","formatInput","fInput","hPopover","dragging","moveToValue","mValue","normalizedConfig","normalizedValue","valueRef","notify","denormalizedValue","onInputUpdate","cancelDrag","onPopoverBeforeShow","onPopoverAfterShow","onPopoverBeforeHide","onPopoverAfterHide","handleDayClick","onDayMouseEnter","sp","hp","tp","priority","getPageForValue","isStart","toRef","useDatePicker","_amOptions","_pmOptions","createTimePicker","updateDpValue","updateParts","newParts","partsValid","showHeader","isAM","hValue","amHourOptions","ho","pmHourOptions","hourOptions","isAMOptions","timePicker","expose","onDayclick","onDaymouseenter","onDaykeydown","slotCtx","positions","TimePicker","calendar","renderSlots","footer","Calendar","Popover","isCallable","isNullOrUndefined","undefined","toNumber","RULES","resolveRule","FormContextKey","FieldContextKey","IS_ABSENT","isClient","isLocator","__locatorRef","isYupValidator","validate","hasCheckedAttr","isContainerValue","isEmptyContainer","isNotNestedPath","isNativeMultiSelect","isNativeSelect","multiple","tagName","isNativeMultiSelectNode","hasTruthyBindingValue","shouldHaveValueBinding","isFormSubmitEvent","evt","isEvent","Event","srcElement","isPropPresent","prop","isEqual","isFile","lastModified","isView","flags","File","klona","enumerable","configurable","writable","x","list","tmp","__proto__","getOwnPropertyDescriptor","getOwnPropertyNames","cleanupNonNestedPath","getFromPath","fallback","resolvedValue","acc","propKey","setInPath","unset","unsetPath","pathValues","idx","keysOf","injectWithSelf","def","vm","provides","resolveNextCheckboxValue","currentValue","checkedValue","uncheckedValue","newVal","findIndex","throttle","limit","inThrottle","lastResult","debounceAsync","inner","timer","resolves","applyModelModifiers","withLatest","onDone","latestRun","pending","computedDeep","baseRef","deep","normalizeChildren","slotProps","getBoundValue","hasValueBinding","_value","normalizeEventValue","files","selected","selectedOption","normalizeRules","_$$isNormalized","params","normalizeParams","buildParams","parsedRule","parseRule","provided","mapValueToLocator","createLocator","locator","crossTable","extractLocators","DEFAULT_CONFIG","generateMessage","field","bails","validateOnBlur","validateOnChange","validateOnInput","validateOnModelUpdate","currentConfig","getConfig","shouldBail","formData","_validate","errors","valid","validateFieldWithYup","form","pipeline","_generateFieldError","normalizedContext","rulesKeys","_test","abortEarly","then","err","fillTargetValues","fieldCtx","normalize","param","validateYupSchema","schema","errorObjects","results","messages","validateObjectSchema","paths","validations","strings","fieldResult","bailsMap","isAllValid","validationResults","all","ID_COUNTER","useFieldState","init","initialValue","setInitialValue","_useFieldValue","errorMessage","setErrors","_useFieldErrors","meta","_useFieldMeta","setState","touched","modelRef","resolveInitialValue","initialValues","stageInitialValue","setFieldValue","dirty","flush","normalizeErrors","errorBag","setFieldErrorBag","API","sendInspectorState","INSPECTOR_ID","sendInspectorTree","useField","useCheckboxField","_useField","validateOnMount","validateOnValueUpdate","controlled","keepValueOnUnmount","modelPropName","syncVModel","controlForm","normalizeOptions","injectedForm","markedForRemoval","useVModel","handleChange","handleBlur","normalizedRules","rulesValue","extractRuleFromSchema","validateCurrentValue","validateSchema","validateWithStateMutation","validateValidStateOnly","validate$1","shouldValidate","setTouched","isTouched","unwatchValue","lastWatchedValue","oldVal","validateFn","resetField","setValue","handleReset","register","unregister","dependencies","rulesVal","deps","dep","depAcc","depName","depValue","oldDeps","valueProp","standalone","fieldName","patchCheckboxApi","checked","checkedVal","handleCheckboxChange","propName","emitName","getCurrentModelValue","propValue","FieldImpl","as","keepValue","validateField","onChangeHandler","handleInput","onInputHandler","fieldProps","resolveValidationTriggers","baseOnBlur","onBlur","baseOnInput","onInput","baseOnChange","onChange","resolveTag","reset","children","Field","FORM_COUNTER","useForm","formId","controlledModelPaths","RESET_LOCK","fieldsByPath","isSubmitting","submitCount","fieldArrays","formValues","setErrorBag","useErrorBag","initialErrors","bag","getFirstFieldAtPath","fieldOrGroup","fieldExists","fieldNames","fieldBailsMap","keepValuesOnUnmount","originalInitialValues","setInitialValues","useFormInitialValues","useFormMeta","controlledValues","validationSchema","debouncedSilentValidation","_validateSchema","debouncedValidation","formResult","fieldsById","formCtx","currentErrorsPaths","validation","setFieldError","applyFieldMutation","f","wasValidated","makeSubmissionFactory","onlyControlled","onValidationError","setFieldTouched","setValues","resetForm","returnVal","handleSubmitImpl","handleSubmit","withControlled","registerField","unregisterField","unsetInitialValue","setFieldInitialValue","useFieldModel","isFieldGroup","mutation","mutateAllFields","fields","fieldInstance","clonedValue","createModel","newValues","insertFieldAtPath","rawField","fieldPath","fieldAtPath","removeFieldFromPath","newPath","oldPath","initialErrorMessage","isGroup","shouldKeepValue","currentGroupValue","isSameGroup","valueIdx","updateOriginal","schemaValue","submitForm","submit","initialTouched","currentValues","MERGE_STRATEGIES","isDirty","calculateFlags","flat","flag","mergeMethod","providedValues","updateFields","wasTouched","normalizeErrorItem","FormImpl","onSubmit","onInvalidSubmit","keepValues","handleFormReset","onReset","handleScopedSlotSubmit","onSuccess","getValues","getMeta","getErrors","formAttrs","novalidate","Form","useFieldArray","arrayPath","noOp","noOpApi","swap","insert","prepend","alreadyExists","entryCounter","initFields","createEntry","updateEntryFlags","fieldsLength","isFirst","isLast","pathName","pathValue","normalizedPathValue","indexA","indexB","newFields","temp","tempEntry","arr","unshift","oldIdx","newIdx","movedItem","movedValue","fieldArrayCtx","isVue2","isVue3","Vue2","install","del","deprecate","msg","warned","deprecated","trace","localStorage","Vue"],"mappings":"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","file":"js/chunk-vendors~cfbf0a2e.cf06b8ad.js","sourcesContent":["\n","\n","\n","\n","\n\n\n\n\n","import { ref, onMounted, onUnmounted, watch, computed, reactive, provide } from 'vue';\n\nfunction windowExists() {\n return typeof window !== 'undefined';\n}\nfunction windowHasFeature(feature) {\n return windowExists() && feature in window;\n}\n\nfunction useMediaQuery(query, callback) {\n let mediaQuery;\n const matches = ref(false);\n function listener(ev) {\n if (callback)\n callback(ev);\n matches.value = ev.matches;\n }\n function cleanup() {\n if (mediaQuery) {\n mediaQuery.removeEventListener('change', listener);\n mediaQuery = undefined;\n }\n }\n function setup(newQuery = query) {\n cleanup();\n if (windowHasFeature('matchMedia') && newQuery) {\n mediaQuery = window.matchMedia(newQuery);\n mediaQuery.addEventListener('change', listener);\n matches.value = mediaQuery.matches;\n }\n }\n onMounted(() => setup());\n onUnmounted(() => cleanup());\n return { matches, setup, cleanup };\n}\n\nfunction useResizeObserver(target, callback, options = {}) {\n let observer;\n const rect = ref();\n const listener = (...args) => {\n if (callback)\n callback(...args);\n const entry = args[0][0];\n rect.value = entry.contentRect;\n };\n const stopObserver = () => {\n if (observer) {\n observer.disconnect();\n observer = undefined;\n }\n };\n const stopWatch = watch(() => target.value, (elOrComp) => {\n stopObserver();\n if (windowHasFeature('ResizeObserver') && elOrComp) {\n observer = new ResizeObserver(listener);\n observer.observe(elOrComp.$el ?? elOrComp, options);\n }\n }, { immediate: true, flush: 'post' });\n const cleanup = () => {\n stopObserver();\n stopWatch();\n };\n onUnmounted(() => cleanup());\n return { rect, cleanup };\n}\n\nfunction useDarkMode(config) {\n const isDark = ref(false);\n const displayMode = computed(() => (isDark.value ? 'dark' : 'light'));\n let mediaQuery;\n let mutationObserver;\n function mqListener(ev) {\n isDark.value = ev.matches;\n }\n function setupSystem() {\n if (windowHasFeature('matchMedia')) {\n mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n mediaQuery.addEventListener('change', mqListener);\n isDark.value = mediaQuery.matches;\n }\n }\n function moListener() {\n const { selector = ':root', darkClass = 'dark' } = config.value;\n const el = document.querySelector(selector);\n isDark.value = el.classList.contains(darkClass);\n }\n function setupClass(config) {\n const { selector = ':root', darkClass = 'dark' } = config;\n if (windowExists() && selector && darkClass) {\n const el = document.querySelector(selector);\n if (el) {\n mutationObserver = new MutationObserver(moListener);\n mutationObserver.observe(el, {\n attributes: true,\n attributeFilter: ['class'],\n });\n isDark.value = el.classList.contains(darkClass);\n }\n }\n }\n function setup() {\n stopObservers();\n const type = typeof config.value;\n if (type === 'string' && config.value.toLowerCase() === 'system') {\n setupSystem();\n }\n else if (type === 'object') {\n setupClass(config.value);\n }\n else {\n isDark.value = !!config.value;\n }\n }\n const stopWatch = watch(() => config.value, () => setup(), {\n immediate: true,\n });\n function stopObservers() {\n if (mediaQuery) {\n mediaQuery.removeEventListener('change', mqListener);\n mediaQuery = undefined;\n }\n if (mutationObserver) {\n mutationObserver.disconnect();\n mutationObserver = undefined;\n }\n }\n function cleanup() {\n stopObservers();\n stopWatch();\n }\n onUnmounted(() => cleanup());\n return {\n isDark,\n displayMode,\n cleanup,\n };\n}\n\nfunction resolveValue({ 'min-width': _minWidth, min = _minWidth, max, raw } = {}) {\n return { min, max, raw };\n}\n/**\n * A function that normalizes the various forms that the screens object can be\n * provided in.\n *\n * Input(s):\n * - ['100px', '200px'] // Raw strings\n * - { sm: '100px', md: '200px' } // Object with string values\n * - { sm: { min: '100px' }, md: { max: '100px' } } // Object with object values\n * - { sm: [{ min: '100px' }, { max: '200px' }] } // Object with object array (multiple values)\n *\n * Output(s):\n * - [{ name: 'sm', values: [{ min: '100px', max: '200px' }] }] // List of objects, that contains multiple values\n */\nfunction normalizeScreens(screens, root = true) {\n if (Array.isArray(screens)) {\n return screens.map((screen) => {\n if (root && Array.isArray(screen)) {\n throw new Error('The tuple syntax is not supported for `screens`.');\n }\n if (typeof screen === 'string') {\n return { name: screen.toString(), values: [{ min: screen, max: undefined }] };\n }\n let [name, options] = screen;\n name = name.toString();\n if (typeof options === 'string') {\n return { name, values: [{ min: options, max: undefined }] };\n }\n if (Array.isArray(options)) {\n return { name, values: options.map((option) => resolveValue(option)) };\n }\n return { name, values: [resolveValue(options)] };\n });\n }\n return normalizeScreens(Object.entries(screens ?? {}), false);\n}\n\n// This function gratuitously borrowed from TailwindCSS\n// https://github.com/tailwindcss/tailwindcss/blob/master/src/util/buildMediaQuery.js\nfunction buildMediaQuery(screenValues) {\n return screenValues\n .map((sv) => {\n if (sv.raw !== undefined)\n return sv.raw;\n return [sv.min && `(min-width: ${sv.min})`, sv.max && `(max-width: ${sv.max})`].filter(Boolean).join(' and ');\n })\n .join(', ');\n}\n\nvar defaultScreens = {\n xs: '0px',\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n};\n\nconst defaultInjectKey = '$screens';\nfunction initScreens(screens) {\n const state = reactive({\n screens: normalizeScreens(screens || defaultScreens),\n queries: {},\n matches: {},\n hasSetup: false,\n });\n function refreshMatches() {\n Object.entries(state.queries).forEach(([key, query]) => {\n state.matches[key] = query.matches;\n });\n }\n function mapList(config) {\n return computed(() => Object.keys(state.matches)\n .filter((key) => state.matches[key] === true && config.hasOwnProperty(key))\n .map((key) => config[key]));\n }\n const list = computed(() => Object.keys(state.matches).filter((k) => state.matches[k]));\n function mapCurrent(config, def) {\n return computed(() => {\n const curr = current.value;\n if (curr && config.hasOwnProperty(curr))\n return config[curr];\n return def;\n });\n }\n const current = computed(() => {\n const arr = list.value;\n if (arr.length)\n return arr[arr.length - 1];\n return '';\n });\n function cleanup() {\n Object.values(state.queries).forEach((query) => query.removeEventListener('change', refreshMatches));\n state.queries = {};\n state.matches = {};\n }\n if (!state.hasSetup && windowHasFeature('matchMedia')) {\n cleanup();\n state.queries = state.screens.reduce((result, { name, values }) => {\n const mediaQuery = window.matchMedia(buildMediaQuery(values));\n mediaQuery.addEventListener('change', refreshMatches);\n result[name] = mediaQuery;\n return result;\n }, {});\n refreshMatches();\n state.hasSetup = true;\n }\n return { matches: state.matches, list, mapList, current, mapCurrent, cleanup };\n}\n\nfunction useScreens(screens, opts) {\n const s = initScreens(screens);\n provide(opts?.injectKey || defaultInjectKey, s);\n onUnmounted(() => s.cleanup());\n return s;\n}\n\nconst plugin = {\n install: (app, screens, opts) => {\n const s = initScreens(screens);\n const key = opts?.injectKey || defaultInjectKey;\n // Inject a globally available screens object method\n app.config.globalProperties[key] = s;\n // Provide screens object\n app.provide(key, s);\n },\n};\n\nexport { buildMediaQuery, normalizeScreens, plugin as screens, useDarkMode, useMediaQuery, useResizeObserver, useScreens };\n//# sourceMappingURL=index.mjs.map\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nmodule.exports = isBoolean;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar dateTag = '[object Date]';\n\n/**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\nfunction baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n}\n\nmodule.exports = baseIsDate;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseIsDate = require('./_baseIsDate'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsDate = nodeUtil && nodeUtil.isDate;\n\n/**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\nvar isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\nmodule.exports = isDate;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var baseMerge = require('./_baseMerge'),\n isObject = require('./isObject');\n\n/**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\nfunction customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n}\n\nmodule.exports = customDefaultsMerge;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\nmodule.exports = mergeWith;\n","var apply = require('./_apply'),\n baseRest = require('./_baseRest'),\n customDefaultsMerge = require('./_customDefaultsMerge'),\n mergeWith = require('./mergeWith');\n\n/**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\nvar defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n});\n\nmodule.exports = defaultsDeep;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nmodule.exports = baseSome;\n","var arraySome = require('./_arraySome'),\n baseIteratee = require('./_baseIteratee'),\n baseSome = require('./_baseSome'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n","import { ComponentPublicInstance } from 'vue';\n\n// Type utils\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\n\nexport { isFunction, isString };\nexport { default as isBoolean } from 'lodash/isBoolean';\nexport { default as isNumber } from 'lodash/isNumber';\nexport { default as isUndefined } from 'lodash/isUndefined';\nimport _isDate from 'lodash/isDate';\n\n// Object utils\nexport { default as get } from 'lodash/get';\nexport { default as set } from 'lodash/set';\nexport { default as mapValues } from 'lodash/mapValues';\nexport { default as defaults } from 'lodash/defaults';\nexport { default as defaultsDeep } from 'lodash/defaultsDeep';\nimport _has from 'lodash/has';\n\n// Collection utils\nexport { default as map } from 'lodash/map';\nexport { default as head } from 'lodash/head';\nexport { default as last } from 'lodash/last';\nimport _some from 'lodash/some';\n\n// Type checkers\nexport const getType = (value: any) =>\n Object.prototype.toString.call(value).slice(8, -1);\nexport const isDate = (value: unknown): value is Date =>\n _isDate(value) && !isNaN(value.getTime());\nexport const isObject = (value: unknown): value is Object =>\n getType(value) === 'Object';\n\n// Object utils\nexport const has = _has;\nexport const hasAny = (obj: object, props: string[]) =>\n _some(props, p => _has(obj, p));\n\n// Collection utils\nexport const some = _some;\n\nexport const pad = (val: string | number, len: number, char = '0') => {\n val = val !== null && val !== undefined ? String(val) : '';\n len = len || 2;\n while (val.length < len) {\n val = `${char}${val}`;\n }\n return val;\n};\n\nexport const evalFn = (fn: Function, args: any) =>\n isFunction(fn) ? fn(args) : fn;\n\nexport const mergeEvents = (...args: Array) => {\n const result: any = {};\n args.forEach(e =>\n Object.entries(e).forEach(([key, value]) => {\n if (!result[key]) {\n result[key] = value;\n } else if (isArray(result[key])) {\n result[key].push(value);\n } else {\n result[key] = [result[key], value];\n }\n }),\n );\n return result;\n};\n\nexport const roundTenth = (n: number) => {\n return Math.round(n * 100) / 100;\n};\n\nexport const isArray = (val: any): val is any[] => Array.isArray(val);\n\nexport const arrayHasItems = (array: any): boolean =>\n isArray(array) && array.length > 0;\n\nexport const resolveEl = (target: unknown): Node | null => {\n if (target == null) return target ?? null;\n if (document && isString(target)) return document.querySelector(target);\n return (target as ComponentPublicInstance).$el ?? target;\n};\n\nexport interface ElementPosition {\n top: number;\n left: number;\n}\n\nexport interface CustomElement {\n addEventListener: Function;\n removeEventListener: Function;\n dispatchEvent: Function;\n}\n\nexport const off = (\n element: CustomElement,\n event: string,\n handler: (e: any) => void,\n opts: boolean | EventListenerOptions | undefined = undefined,\n) => {\n element.removeEventListener(event, handler, opts);\n};\n\nexport const on = (\n element: CustomElement,\n event: string,\n handler: (e: any) => void,\n opts: boolean | AddEventListenerOptions | undefined = undefined,\n) => {\n element.addEventListener(event, handler, opts);\n return () => off(element, event, handler, opts);\n};\n\nexport const elementContains = (element: Node, child: Node) =>\n !!element && !!child && (element === child || element.contains(child));\n\nexport const onSpaceOrEnter = (\n event: KeyboardEvent,\n handler: (e: KeyboardEvent) => void,\n) => {\n if (event.key === ' ' || event.key === 'Enter') {\n handler(event);\n event.preventDefault();\n }\n};\n\nexport const capitalize = (str: string) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\nexport const omit = (\n obj: T,\n ...keys: K\n) => {\n const ret = {} as {\n [K in keyof typeof obj]: typeof obj[K];\n };\n let key: keyof typeof obj;\n for (key in obj) {\n if (!keys.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n};\n\nexport const pick = (\n obj: T,\n keys: K[],\n): Pick => {\n const ret: any = {};\n keys.forEach(key => {\n if (key in obj) ret[key] = obj[key];\n });\n return ret;\n};\n\nexport function extend(\n value: T,\n ext: E,\n): T & E {\n const handler = {\n get(target: T, prop: keyof (T | E)) {\n if ((prop as string) in target) {\n return target[prop];\n }\n return ext[prop];\n },\n };\n // @ts-ignore\n return new Proxy(value, handler) as T & E;\n}\n\nexport function clamp(num: number, min: number, max: number) {\n return Math.min(Math.max(num, min), max);\n}\n\n/* eslint-disable no-bitwise */\n\nexport const createGuid = () => {\n function S4() {\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n }\n return `${S4() + S4()}-${S4()}-${S4()}-${S4()}-${S4()}${S4()}${S4()}`;\n};\n\nexport function hash(str: string): number {\n let hashcode = 0;\n let i = 0;\n let chr;\n if (str.length === 0) return hashcode;\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hashcode = (hashcode << 5) - hashcode + chr;\n hashcode |= 0; // Convert to 32bit integer\n }\n return hashcode;\n}\n\n/* eslint-enable no-bitwise */\n","import { Attribute } from './attribute';\nimport type { DateRangeCell } from './date/range';\nimport { isObject, isString, hasAny, defaultsDeep } from './helpers';\n\ntype GlyphTarget = 'base' | 'start' | 'end' | 'startEnd';\ntype ThemeProp =\n | 'class'\n | 'wrapperClass'\n | 'contentClass'\n | 'style'\n | 'contentStyle'\n | 'color'\n | 'fillMode';\n\nconst targetProps: GlyphTarget[] = ['base', 'start', 'end', 'startEnd'];\nconst displayProps: ThemeProp[] = [\n 'class',\n 'wrapperClass',\n 'contentClass',\n 'style',\n 'contentStyle',\n 'color',\n 'fillMode',\n];\n\nexport interface Glyph {\n key: string | number;\n color: string;\n class: string | any[];\n style: Record;\n}\n\nexport interface Profile {\n start: T;\n base: T;\n end: T;\n startEnd?: T;\n}\n\n// Highlights\nexport type HighlightFillMode = 'solid' | 'light' | 'outline';\nexport interface Highlight extends Glyph {\n fillMode: HighlightFillMode;\n wrapperClass: string | any[];\n contentClass: string | any[];\n contentStyle: Record;\n}\nexport type HighlightConfig =\n | boolean\n | string\n | Partial>>;\n\n// Dots\nexport type Dot = Glyph;\nexport type DotConfig = boolean | string | Partial>>;\n\n// Bars\nexport type Bar = Glyph;\nexport type BarConfig = boolean | string | Partial>>;\n\n// Content\nexport type Content = Glyph;\nexport type ContentConfig =\n | string\n | Partial>>;\n\nconst _defaultProfile = { base: {}, start: {}, end: {} };\n\nfunction normalizeConfig(\n color: string,\n config: any,\n defaultProfile: any = _defaultProfile,\n): Profile {\n let rootColor = color;\n let root: any = {};\n // Get the normalized root config\n if (config === true || isString(config)) {\n // Assign default color for booleans or strings\n rootColor = isString(config) ? config : rootColor;\n // Set the default root\n root = { ...defaultProfile };\n } else if (isObject(config)) {\n if (hasAny(config as Record, targetProps)) {\n // Mixin target configs\n root = { ...config };\n } else {\n // Mixin display configs\n root = {\n base: { ...(config as Record) },\n start: { ...(config as Record) },\n end: { ...(config as Record) },\n };\n }\n }\n // Fill in missing targets\n const result = defaultsDeep(\n root,\n { start: root.startEnd, end: root.startEnd },\n defaultProfile,\n ) as Profile;\n // Normalize each target\n Object.entries(result).forEach(([targetType, targetConfig]) => {\n let targetColor = rootColor;\n if (targetConfig === true || isString(targetConfig)) {\n targetColor = isString(targetConfig) ? targetConfig : targetColor;\n // @ts-ignore\n result[targetType] = { color: targetColor };\n } else if (isObject(targetConfig)) {\n if (hasAny(targetConfig, displayProps)) {\n // @ts-ignore\n result[targetType] = { ...targetConfig };\n } else {\n // @ts-ignore\n result[targetType] = {};\n }\n }\n // Set the theme color if it is missing\n // @ts-ignore\n defaultsDeep(result[targetType], { color: targetColor });\n });\n return result;\n}\n\nexport interface GlyphRenderer

> {\n type: string;\n normalizeConfig(color: string, config: any): Profile

;\n prepareRender(glyphs: Record): void;\n render(attr: DateRangeCell, glyphs: Record): void;\n}\n\nexport class HighlightRenderer implements GlyphRenderer {\n type = 'highlight';\n\n normalizeConfig(color: string, config: any) {\n return normalizeConfig(color, config, {\n base: { fillMode: 'light' },\n start: { fillMode: 'solid' },\n end: { fillMode: 'solid' },\n }) as Profile;\n }\n\n prepareRender(glyphs: Record) {\n glyphs.highlights = [];\n if (!glyphs.content) glyphs.content = [];\n }\n\n render(\n { data, onStart, onEnd }: DateRangeCell,\n glyphs: Record,\n ) {\n const { key, highlight } = data;\n if (!highlight) return;\n const { highlights } = glyphs;\n const { base, start, end } = highlight;\n if (onStart && onEnd) {\n highlights.push({\n ...start,\n key,\n wrapperClass: `vc-day-layer vc-day-box-center-center vc-attr vc-${start.color}`,\n class: [`vc-highlight vc-highlight-bg-${start.fillMode}`, start.class],\n contentClass: [\n `vc-attr vc-highlight-content-${start.fillMode} vc-${start.color}`,\n start.contentClass,\n ],\n });\n } else if (onStart) {\n highlights.push({\n ...base,\n key: `${key}-base`,\n wrapperClass: `vc-day-layer vc-day-box-right-center vc-attr vc-${base.color}`,\n class: [\n `vc-highlight vc-highlight-base-start vc-highlight-bg-${base.fillMode}`,\n base.class,\n ],\n });\n highlights.push({\n ...start,\n key,\n wrapperClass: `vc-day-layer vc-day-box-center-center vc-attr vc-${start.color}`,\n class: [`vc-highlight vc-highlight-bg-${start.fillMode}`, start.class],\n contentClass: [\n `vc-attr vc-highlight-content-${start.fillMode} vc-${start.color}`,\n start.contentClass,\n ],\n });\n } else if (onEnd) {\n highlights.push({\n ...base,\n key: `${key}-base`,\n wrapperClass: `vc-day-layer vc-day-box-left-center vc-attr vc-${base.color}`,\n class: [\n `vc-highlight vc-highlight-base-end vc-highlight-bg-${base.fillMode}`,\n base.class,\n ],\n });\n highlights.push({\n ...end,\n key,\n wrapperClass: `vc-day-layer vc-day-box-center-center vc-attr vc-${end.color}`,\n class: [`vc-highlight vc-highlight-bg-${end.fillMode}`, end.class],\n contentClass: [\n `vc-attr vc-highlight-content-${end.fillMode} vc-${end.color}`,\n end.contentClass,\n ],\n });\n } else {\n highlights.push({\n ...base,\n key: `${key}-middle`,\n wrapperClass: `vc-day-layer vc-day-box-center-center vc-attr vc-${base.color}`,\n class: [\n `vc-highlight vc-highlight-base-middle vc-highlight-bg-${base.fillMode}`,\n base.class,\n ],\n contentClass: [\n `vc-attr vc-highlight-content-${base.fillMode} vc-${base.color}`,\n base.contentClass,\n ],\n });\n }\n }\n}\n\nexport class BaseRenderer>\n implements GlyphRenderer\n{\n type = '';\n collectionType = '';\n\n constructor(type: string, collectionType: string) {\n this.type = type;\n this.collectionType = collectionType;\n }\n\n normalizeConfig(color: string, config: any) {\n return normalizeConfig(color, config) as Profile;\n }\n\n prepareRender(glyphs: Record) {\n glyphs[this.collectionType] = [];\n }\n\n render(\n { data, onStart, onEnd }: DateRangeCell,\n glyphs: Record,\n ) {\n const { key } = data;\n const item = data[this.type as keyof Attribute];\n if (!key || !item) return;\n const collection = glyphs[this.collectionType];\n const { base, start, end } = item;\n if (onStart) {\n collection.push({\n ...start,\n key,\n class: [\n `vc-${this.type} vc-${this.type}-start vc-${start.color} vc-attr`,\n start.class,\n ],\n });\n } else if (onEnd) {\n collection.push({\n ...end,\n key,\n class: [\n `vc-${this.type} vc-${this.type}-end vc-${end.color} vc-attr`,\n end.class,\n ],\n });\n } else {\n collection.push({\n ...base,\n key,\n class: [\n `vc-${this.type} vc-${this.type}-base vc-${base.color} vc-attr`,\n base.class,\n ],\n });\n }\n }\n}\n\nexport class ContentRenderer extends BaseRenderer {\n constructor() {\n super('content', 'content');\n }\n\n normalizeConfig(_: string, config: any) {\n return normalizeConfig('base', config) as Profile;\n }\n}\n\nexport class DotRenderer extends BaseRenderer {\n constructor() {\n super('dot', 'dots');\n }\n}\n\nexport class BarRenderer extends BaseRenderer {\n constructor() {\n super('bar', 'bars');\n }\n}\n","import { Attribute } from './attribute';\nimport type { DateRangeCell } from '@/utils/date/range';\nimport {\n type Bar,\n type Content,\n type Dot,\n type GlyphRenderer,\n type Glyph,\n type Highlight,\n ContentRenderer,\n HighlightRenderer,\n DotRenderer,\n BarRenderer,\n} from './glyph';\n\nexport interface Glyphs {\n highlights: Highlight[];\n dots: Dot[];\n bars: Bar[];\n content: Content[];\n}\n\nexport class Theme {\n color: string;\n renderers: GlyphRenderer[] = [\n new ContentRenderer(),\n new HighlightRenderer(),\n new DotRenderer(),\n new BarRenderer(),\n ];\n\n constructor(color: string) {\n this.color = color;\n }\n\n normalizeGlyphs(attr: Attribute) {\n this.renderers.forEach(renderer => {\n const type = renderer.type as keyof Attribute;\n if (attr[type] != null) {\n // @ts-ignore\n attr[type] = renderer.normalizeConfig(this.color, attr[type]);\n }\n });\n }\n\n prepareRender(glyphs: Partial = {}) {\n this.renderers.forEach(renderer => {\n renderer.prepareRender(glyphs);\n });\n return glyphs;\n }\n\n render(cell: DateRangeCell, glyphs: Partial) {\n this.renderers.forEach(renderer => {\n renderer.render(cell, glyphs);\n });\n }\n}\n","interface LocaleConfig {\n dow: number;\n L: string;\n}\n\ninterface LocaleSetting {\n id: string;\n firstDayOfWeek: number;\n masks: {\n L: string;\n };\n}\n\nconst locales: Record = {\n // Arabic\n ar: { dow: 7, L: 'D/\\u200FM/\\u200FYYYY' },\n // Bulgarian\n bg: { dow: 2, L: 'D.MM.YYYY' },\n // Catalan\n ca: { dow: 2, L: 'DD/MM/YYYY' },\n // Chinese (China)\n 'zh-CN': { dow: 2, L: 'YYYY/MM/DD' },\n // Chinese (Taiwan)\n 'zh-TW': { dow: 1, L: 'YYYY/MM/DD' },\n // Croatian\n hr: { dow: 2, L: 'DD.MM.YYYY' },\n // Czech\n cs: { dow: 2, L: 'DD.MM.YYYY' },\n // Danish\n da: { dow: 2, L: 'DD.MM.YYYY' },\n // Dutch\n nl: { dow: 2, L: 'DD-MM-YYYY' },\n // English (US)\n 'en-US': { dow: 1, L: 'MM/DD/YYYY' },\n // English (Australia)\n 'en-AU': { dow: 2, L: 'DD/MM/YYYY' },\n // English (Canada)\n 'en-CA': { dow: 1, L: 'YYYY-MM-DD' },\n // English (Great Britain)\n 'en-GB': { dow: 2, L: 'DD/MM/YYYY' },\n // English (Ireland)\n 'en-IE': { dow: 2, L: 'DD-MM-YYYY' },\n // English (New Zealand)\n 'en-NZ': { dow: 2, L: 'DD/MM/YYYY' },\n // English (South Africa)\n 'en-ZA': { dow: 1, L: 'YYYY/MM/DD' },\n // Esperanto\n eo: { dow: 2, L: 'YYYY-MM-DD' },\n // Estonian\n et: { dow: 2, L: 'DD.MM.YYYY' },\n // Finnish\n fi: { dow: 2, L: 'DD.MM.YYYY' },\n // French\n fr: { dow: 2, L: 'DD/MM/YYYY' },\n // French (Canada)\n 'fr-CA': { dow: 1, L: 'YYYY-MM-DD' },\n // French (Switzerland)\n 'fr-CH': { dow: 2, L: 'DD.MM.YYYY' },\n // German\n de: { dow: 2, L: 'DD.MM.YYYY' },\n // Hebrew\n he: { dow: 1, L: 'DD.MM.YYYY' },\n // Indonesian\n id: { dow: 2, L: 'DD/MM/YYYY' },\n // Italian\n it: { dow: 2, L: 'DD/MM/YYYY' },\n // Japanese\n ja: { dow: 1, L: 'YYYY年M月D日' },\n // Korean\n ko: { dow: 1, L: 'YYYY.MM.DD' },\n // Latvian\n lv: { dow: 2, L: 'DD.MM.YYYY' },\n // Lithuanian\n lt: { dow: 2, L: 'DD.MM.YYYY' },\n // Macedonian\n mk: { dow: 2, L: 'D.MM.YYYY' },\n // Norwegian\n nb: { dow: 2, L: 'D. MMMM YYYY' },\n nn: { dow: 2, L: 'D. MMMM YYYY' },\n // Polish\n pl: { dow: 2, L: 'DD.MM.YYYY' },\n // Portuguese\n pt: { dow: 2, L: 'DD/MM/YYYY' },\n // Romanian\n ro: { dow: 2, L: 'DD.MM.YYYY' },\n // Russian\n ru: { dow: 2, L: 'DD.MM.YYYY' },\n // Slovak\n sk: { dow: 2, L: 'DD.MM.YYYY' },\n // Spanish (Spain)\n 'es-ES': { dow: 2, L: 'DD/MM/YYYY' },\n // Spanish (Mexico)\n 'es-MX': { dow: 2, L: 'DD/MM/YYYY' },\n // Swedish\n sv: { dow: 2, L: 'YYYY-MM-DD' },\n // Thai\n th: { dow: 1, L: 'DD/MM/YYYY' },\n // Turkish\n tr: { dow: 2, L: 'DD.MM.YYYY' },\n // Ukrainian\n uk: { dow: 2, L: 'DD.MM.YYYY' },\n // Vietnam\n vi: { dow: 2, L: 'DD/MM/YYYY' },\n};\nlocales.en = locales['en-US'];\nlocales.es = locales['es-ES'];\nlocales.no = locales.nb;\nlocales.zh = locales['zh-CN'];\n\n// Remap from abbr. to intuitive property names\nconst localeSettings = Object.entries(locales).reduce(\n (res, [id, { dow, L }]) => {\n res[id] = {\n id,\n firstDayOfWeek: dow,\n masks: { L },\n };\n return res;\n },\n {} as Record,\n);\n\nexport default localeSettings;\n","import { type App, reactive, computed } from 'vue';\nimport type { DarkModeConfig } from 'vue-screen-utils';\nimport { defaultsDeep, mapValues, get, has } from '../helpers';\nimport touch from './touch.json';\nimport masks from './masks.json';\nimport locales from './locales';\n\ndeclare const window: any;\n\ninterface DatePickerPopoverDefaults {\n visibility?: string;\n placement?: string;\n isInteractive?: boolean;\n}\n\ninterface DatePickerDefaults {\n updateOnInput?: boolean;\n inputDebounce?: number;\n popover?: DatePickerPopoverDefaults;\n}\n\nexport interface Defaults {\n componentPrefix?: string;\n color?: string;\n isDark?: DarkModeConfig;\n navVisibility?: string;\n titlePosition?: string;\n transition?: string;\n touch?: object;\n masks?: object;\n locales?: any;\n datePicker?: DatePickerDefaults;\n}\n\nconst defaultConfig: Defaults = {\n componentPrefix: 'V',\n color: 'blue',\n isDark: false,\n navVisibility: 'click',\n titlePosition: 'center',\n transition: 'slide-h',\n touch,\n masks,\n locales,\n datePicker: {\n updateOnInput: true,\n inputDebounce: 1000,\n popover: {\n visibility: 'hover-focus',\n placement: 'bottom-start',\n isInteractive: true,\n },\n },\n};\n\nconst state = reactive(defaultConfig);\n\nconst defaultLocales = computed(() => {\n return mapValues(state.locales, (l: any) => {\n l.masks = defaultsDeep(l.masks, state.masks);\n return l;\n });\n});\n\nexport { defaultLocales };\n\nexport const getDefault = (path: string) => {\n if (typeof window !== 'undefined' && has(window.__vcalendar__, path)) {\n return get(window.__vcalendar__, path);\n }\n return get(state, path);\n};\n\nexport const setupDefaults = (app: App, userDefaults: Defaults | undefined) => {\n app.config.globalProperties.$VCalendar = state;\n return Object.assign(state, defaultsDeep(userDefaults, state));\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toInteger;\n\nfunction toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getTimezoneOffsetInMilliseconds;\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nfunction getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = tzTokenizeDate;\n\n/**\n * Returns the [year, month, day, hour, minute, seconds] tokens of the provided\n * `date` as it will be rendered in the `timeZone`.\n */\nfunction tzTokenizeDate(date, timeZone) {\n var dtf = getDateTimeFormat(timeZone);\n return dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date);\n}\n\nvar typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5\n};\n\nfunction partsOffset(dtf, date) {\n try {\n var formatted = dtf.formatToParts(date);\n var filled = [];\n\n for (var i = 0; i < formatted.length; i++) {\n var pos = typeToPos[formatted[i].type];\n\n if (pos >= 0) {\n filled[pos] = parseInt(formatted[i].value, 10);\n }\n }\n\n return filled;\n } catch (error) {\n if (error instanceof RangeError) {\n return [NaN];\n }\n\n throw error;\n }\n}\n\nfunction hackyOffset(dtf, date) {\n var formatted = dtf.format(date).replace(/\\u200E/g, '');\n var parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted); // var [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed\n // return [fYear, fMonth, fDay, fHour, fMinute, fSecond]\n\n return [parsed[3], parsed[1], parsed[2], parsed[4], parsed[5], parsed[6]];\n} // Get a cached Intl.DateTimeFormat instance for the IANA `timeZone`. This can be used\n// to get deterministic local date/time output according to the `en-US` locale which\n// can be used to extract local time parts as necessary.\n\n\nvar dtfCache = {};\n\nfunction getDateTimeFormat(timeZone) {\n if (!dtfCache[timeZone]) {\n // New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`\n var testDateFormatted = new Intl.DateTimeFormat('en-US', {\n hour12: false,\n timeZone: 'America/New_York',\n year: 'numeric',\n month: 'numeric',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit'\n }).format(new Date('2014-06-25T04:00:00.123Z'));\n var hourCycleSupported = testDateFormatted === '06/25/2014, 00:00:00' || testDateFormatted === '‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00';\n dtfCache[timeZone] = hourCycleSupported ? new Intl.DateTimeFormat('en-US', {\n hour12: false,\n timeZone: timeZone,\n year: 'numeric',\n month: 'numeric',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit'\n }) : new Intl.DateTimeFormat('en-US', {\n hourCycle: 'h23',\n timeZone: timeZone,\n year: 'numeric',\n month: 'numeric',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit'\n });\n }\n\n return dtfCache[timeZone];\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = newDateUTC;\n\n/**\n * Use instead of `new Date(Date.UTC(...))` to support years below 100 which doesn't work\n * otherwise due to the nature of the\n * [`Date` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years.\n *\n * For `Date.UTC(...)`, use `newDateUTC(...).getTime()`.\n */\nfunction newDateUTC(fullYear, month, day, hour, minute, second, millisecond) {\n var utcDate = new Date(0);\n utcDate.setUTCFullYear(fullYear, month, day);\n utcDate.setUTCHours(hour, minute, second, millisecond);\n return utcDate;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = tzParseTimezone;\n\nvar _index = _interopRequireDefault(require(\"../tzTokenizeDate/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"../newDateUTC/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar patterns = {\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-]\\d{2})$/,\n timezoneHHMM: /^([+-]\\d{2}):?(\\d{2})$/\n}; // Parse various time zone offset formats to an offset in milliseconds\n\nfunction tzParseTimezone(timezoneString, date, isUtcDate) {\n var token;\n var absoluteOffset; // Empty string\n\n if (!timezoneString) {\n return 0;\n } // Z\n\n\n token = patterns.timezoneZ.exec(timezoneString);\n\n if (token) {\n return 0;\n }\n\n var hours; // ±hh\n\n token = patterns.timezoneHH.exec(timezoneString);\n\n if (token) {\n hours = parseInt(token[1], 10);\n\n if (!validateTimezone(hours)) {\n return NaN;\n }\n\n return -(hours * MILLISECONDS_IN_HOUR);\n } // ±hh:mm or ±hhmm\n\n\n token = patterns.timezoneHHMM.exec(timezoneString);\n\n if (token) {\n hours = parseInt(token[1], 10);\n var minutes = parseInt(token[2], 10);\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n absoluteOffset = Math.abs(hours) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;\n return hours > 0 ? -absoluteOffset : absoluteOffset;\n } // IANA time zone\n\n\n if (isValidTimezoneIANAString(timezoneString)) {\n date = new Date(date || Date.now());\n var utcDate = isUtcDate ? date : toUtcDate(date);\n var offset = calcOffset(utcDate, timezoneString);\n var fixedOffset = isUtcDate ? offset : fixOffset(date, offset, timezoneString);\n return -fixedOffset;\n }\n\n return NaN;\n}\n\nfunction toUtcDate(date) {\n return (0, _index2.default)(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n}\n\nfunction calcOffset(date, timezoneString) {\n var tokens = (0, _index.default)(date, timezoneString); // ms dropped because it's not provided by tzTokenizeDate\n\n var asUTC = (0, _index2.default)(tokens[0], tokens[1] - 1, tokens[2], tokens[3] % 24, tokens[4], tokens[5], 0).getTime();\n var asTS = date.getTime();\n var over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return asUTC - asTS;\n}\n\nfunction fixOffset(date, offset, timezoneString) {\n var localTS = date.getTime(); // Our UTC time is just a guess because our offset is just a guess\n\n var utcGuess = localTS - offset; // Test whether the zone matches the offset for this ts\n\n var o2 = calcOffset(new Date(utcGuess), timezoneString); // If so, offset didn't change, and we're done\n\n if (offset === o2) {\n return offset;\n } // If not, change the ts by the difference in the offset\n\n\n utcGuess -= o2 - offset; // If that gives us the local time we want, we're done\n\n var o3 = calcOffset(new Date(utcGuess), timezoneString);\n\n if (o2 === o3) {\n return o2;\n } // If it's different, we're in a hole time. The offset has changed, but we don't adjust the time\n\n\n return Math.max(o2, o3);\n}\n\nfunction validateTimezone(hours, minutes) {\n return -23 <= hours && hours <= 23 && (minutes == null || 0 <= minutes && minutes <= 59);\n}\n\nvar validIANATimezoneCache = {};\n\nfunction isValidTimezoneIANAString(timeZoneString) {\n if (validIANATimezoneCache[timeZoneString]) return true;\n\n try {\n new Intl.DateTimeFormat(undefined, {\n timeZone: timeZoneString\n });\n validIANATimezoneCache[timeZoneString] = true;\n return true;\n } catch (error) {\n return false;\n }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/** Regex to identify the presence of a time zone specifier in a date string */\nvar tzPattern = /(Z|[+-]\\d{2}(?::?\\d{2})?| UTC| [a-zA-Z]+\\/[a-zA-Z_]+(?:\\/[a-zA-Z_]+)?)$/;\nvar _default = tzPattern;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toDate;\n\nvar _index = _interopRequireDefault(require(\"date-fns/_lib/toInteger/index.js\"));\n\nvar _index2 = _interopRequireDefault(require(\"date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js\"));\n\nvar _index3 = _interopRequireDefault(require(\"../_lib/tzParseTimezone/index.js\"));\n\nvar _index4 = _interopRequireDefault(require(\"../_lib/tzPattern/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\nvar patterns = {\n dateTimePattern: /^([0-9W+-]+)(T| )(.*)/,\n datePattern: /^([0-9W+-]+)(.*)/,\n plainTime: /:/,\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [/^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [/^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n ],\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n // time zone tokens (to identify the presence of a tz)\n timeZone: _index4.default\n};\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\n\nfunction toDate(argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n if (argument === null) {\n return new Date(NaN);\n }\n\n var options = dirtyOptions || {};\n var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : (0, _index.default)(options.additionalDigits);\n\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n } // Clone the date\n\n\n if (argument instanceof Date || typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || Object.prototype.toString.call(argument) === '[object Number]') {\n return new Date(argument);\n } else if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n\n var dateStrings = splitDateString(argument);\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n var year = parseYearResult.year;\n var restDateString = parseYearResult.restDateString;\n var date = parseDate(restDateString, year);\n\n if (isNaN(date)) {\n return new Date(NaN);\n }\n\n if (date) {\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timeZone || options.timeZone) {\n offset = (0, _index3.default)(dateStrings.timeZone || options.timeZone, new Date(timestamp + time));\n\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n // get offset accurate to hour in time zones that change offset\n offset = (0, _index2.default)(new Date(timestamp + time));\n offset = (0, _index2.default)(new Date(timestamp + time + offset));\n }\n\n return new Date(timestamp + time + offset);\n } else {\n return new Date(NaN);\n }\n}\n\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var parts = patterns.dateTimePattern.exec(dateString);\n var timeString;\n\n if (!parts) {\n parts = patterns.datePattern.exec(dateString);\n\n if (parts) {\n dateStrings.date = parts[1];\n timeString = parts[2];\n } else {\n dateStrings.date = null;\n timeString = dateString;\n }\n } else {\n dateStrings.date = parts[1];\n timeString = parts[3];\n }\n\n if (timeString) {\n var token = patterns.timeZone.exec(timeString);\n\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timeZone = token[1].trim();\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits];\n var patternYYYYY = patterns.YYYYY[additionalDigits];\n var token; // YYYY or ±YYYYY\n\n token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString);\n\n if (token) {\n var yearString = token[1];\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n };\n } // YY or ±YYY\n\n\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString);\n\n if (token) {\n var centuryString = token[1];\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n };\n } // Invalid ISO-formatted year\n\n\n return {\n year: null\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null;\n }\n\n var token;\n var date;\n var month;\n var week; // YYYY\n\n if (dateString.length === 0) {\n date = new Date(0);\n date.setUTCFullYear(year);\n return date;\n } // YYYY-MM\n\n\n token = patterns.MM.exec(dateString);\n\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n\n if (!validateDate(year, month)) {\n return new Date(NaN);\n }\n\n date.setUTCFullYear(year, month);\n return date;\n } // YYYY-DDD or YYYYDDD\n\n\n token = patterns.DDD.exec(dateString);\n\n if (token) {\n date = new Date(0);\n var dayOfYear = parseInt(token[1], 10);\n\n if (!validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n\n date.setUTCFullYear(year, 0, dayOfYear);\n return date;\n } // yyyy-MM-dd or YYYYMMDD\n\n\n token = patterns.MMDD.exec(dateString);\n\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n var day = parseInt(token[2], 10);\n\n if (!validateDate(year, month, day)) {\n return new Date(NaN);\n }\n\n date.setUTCFullYear(year, month, day);\n return date;\n } // YYYY-Www or YYYYWww\n\n\n token = patterns.Www.exec(dateString);\n\n if (token) {\n week = parseInt(token[1], 10) - 1;\n\n if (!validateWeekDate(year, week)) {\n return new Date(NaN);\n }\n\n return dayOfISOWeekYear(year, week);\n } // YYYY-Www-D or YYYYWwwD\n\n\n token = patterns.WwwD.exec(dateString);\n\n if (token) {\n week = parseInt(token[1], 10) - 1;\n var dayOfWeek = parseInt(token[2], 10) - 1;\n\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } // Invalid ISO-formatted date\n\n\n return null;\n}\n\nfunction parseTime(timeString) {\n var token;\n var hours;\n var minutes; // hh\n\n token = patterns.HH.exec(timeString);\n\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'));\n\n if (!validateTime(hours)) {\n return NaN;\n }\n\n return hours % 24 * MILLISECONDS_IN_HOUR;\n } // hh:mm or hhmm\n\n\n token = patterns.HHMM.exec(timeString);\n\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseFloat(token[2].replace(',', '.'));\n\n if (!validateTime(hours, minutes)) {\n return NaN;\n }\n\n return hours % 24 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;\n } // hh:mm:ss or hhmmss\n\n\n token = patterns.HHMMSS.exec(timeString);\n\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseInt(token[2], 10);\n var seconds = parseFloat(token[3].replace(',', '.'));\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return hours % 24 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000;\n } // Invalid ISO-formatted time\n\n\n return null;\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n week = week || 0;\n day = day || 0;\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n} // Validation functions\n\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n\nfunction validateDate(year, month, date) {\n if (month < 0 || month > 11) {\n return false;\n }\n\n if (date != null) {\n if (date < 1) {\n return false;\n }\n\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false;\n }\n\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n if (dayOfYear < 1) {\n return false;\n }\n\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear && dayOfYear > 366) {\n return false;\n }\n\n if (!isLeapYear && dayOfYear > 365) {\n return false;\n }\n\n return true;\n}\n\nfunction validateWeekDate(year, week, day) {\n if (week < 0 || week > 52) {\n return false;\n }\n\n if (day != null && (day < 0 || day > 6)) {\n return false;\n }\n\n return true;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours != null && (hours < 0 || hours >= 25)) {\n return false;\n }\n\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false;\n }\n\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false;\n }\n\n return true;\n}\n\nmodule.exports = exports.default;","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * { weekStartsOn: 1 }\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, options) {\n requiredArgs(2, arguments);\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, options);\n var startOfWeekRight = startOfWeek(dirtyDateRight, options);\n var timestampLeft = startOfWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekLeft);\n var timestampRight = startOfWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekRight); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * const result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\n\nexport default function lastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import differenceInCalendarWeeks from \"../differenceInCalendarWeeks/index.js\";\nimport lastDayOfMonth from \"../lastDayOfMonth/index.js\";\nimport startOfMonth from \"../startOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name getWeeksInMonth\n * @category Week Helpers\n * @summary Get the number of calendar weeks a month spans.\n *\n * @description\n * Get the number of calendar weeks the month in the given date spans.\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks does February 2015 span?\n * const result = getWeeksInMonth(new Date(2015, 1, 8))\n * //=> 4\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks does July 2017 span?\n * const result = getWeeksInMonth(new Date(2017, 6, 5), { weekStartsOn: 1 })\n * //=> 6\n */\nexport default function getWeeksInMonth(date, options) {\n requiredArgs(1, arguments);\n return differenceInCalendarWeeks(lastDayOfMonth(date), startOfMonth(date), options) + 1;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the local week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\n\nexport default function getWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getWeekYear from \"../getWeekYear/index.js\";\nimport startOfWeek from \"../startOfWeek/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the start of a week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\n\nexport default function startOfWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n var date = startOfWeek(firstWeek, options);\n return date;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport startOfWeekYear from \"../startOfWeekYear/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport default function getWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfWeek(date, options).getTime() - startOfWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\n\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\n\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\n\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\n\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n var dayOfMonth = date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\n\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","import {\n type DayOfWeek,\n type OrdinalWeekInMonth,\n type DayParts,\n diffInDays,\n diffInWeeks,\n diffInMonths,\n diffInYears,\n isDayInMonth,\n isDayOfWeek,\n isWeekInMonth,\n isMonthInYear,\n isOrdinalWeekInMonth,\n} from './helpers';\nimport { isArray, isNumber, isFunction } from '../helpers';\n\nexport type SingleOrArray = T | T[];\n\nexport enum GroupRuleType {\n Any = 'any',\n All = 'all',\n}\n\nexport enum IntervalRuleType {\n Days = 'days',\n Weeks = 'weeks',\n Months = 'months',\n Years = 'years',\n}\n\nexport enum ComponentRuleType {\n Days = 'days',\n Weekdays = 'weekdays',\n Weeks = 'weeks',\n Months = 'months',\n Years = 'years',\n}\n\nexport enum OrdinalComponentRuleType {\n OrdinalWeekdays = 'ordinalWeekdays',\n}\n\nexport enum FunctionRuleType {\n Function = 'function',\n}\n\nexport type RuleType =\n | GroupRuleType\n | IntervalRuleType\n | ComponentRuleType\n | OrdinalComponentRuleType\n | FunctionRuleType;\n\nexport type OrdinalArrayConfig = SingleOrArray<\n [OrdinalWeekInMonth, ...DayOfWeek[]]\n>;\n\nexport interface Rule {\n type: T;\n passes(dayParts: DayParts): boolean;\n}\n\nexport class IntervalRule implements Rule {\n private validated = true;\n\n constructor(\n public type: IntervalRuleType,\n public interval: number,\n public from: DayParts,\n ) {\n // Start date needed for interval rules\n if (!this.from) {\n console.error(\n `A valid \"from\" date is required for date interval rule. This rule will be skipped.`,\n );\n this.validated = false;\n }\n }\n\n passes(dateParts: DayParts) {\n if (!this.validated) return true;\n\n const { date } = dateParts;\n switch (this.type) {\n case 'days': {\n return diffInDays(this.from.date, date) % this.interval === 0;\n }\n case 'weeks': {\n return diffInWeeks(this.from.date, date) % this.interval === 0;\n }\n case 'months': {\n return diffInMonths(this.from.date, date) % this.interval === 0;\n }\n case 'years': {\n return diffInYears(this.from.date, date) % this.interval === 0;\n }\n default: {\n return false;\n }\n }\n }\n}\n\nexport class ComponentRule implements Rule {\n components: number[] = [];\n\n static create(type: ComponentRuleType, config: unknown) {\n switch (type) {\n case ComponentRuleType.Days:\n return new DaysRule(config);\n case ComponentRuleType.Weekdays:\n return new WeekdaysRule(config);\n case ComponentRuleType.Weeks:\n return new WeeksRule(config);\n case ComponentRuleType.Months:\n return new MonthsRule(config);\n case ComponentRuleType.Years:\n return new YearsRule(config);\n }\n }\n\n constructor(\n public type: ComponentRuleType,\n components: unknown,\n public validator: (component: unknown) => component is number,\n public getter: (dayParts: DayParts) => number[],\n ) {\n this.components = this.normalizeComponents(components);\n }\n\n normalizeComponents(components: unknown) {\n if (this.validator(components)) return [components];\n if (!isArray(components)) return [];\n const result: number[] = [];\n components.forEach(component => {\n if (!this.validator(component)) {\n console.error(\n `Component value ${component} in invalid for \"${this.type}\" rule. This rule will be skipped.`,\n );\n return;\n }\n result.push(component);\n });\n return result;\n }\n\n passes(dayParts: DayParts) {\n const comps = this.getter(dayParts);\n const result = comps.some(comp => this.components.includes(comp));\n return result;\n }\n}\n\nexport class DaysRule extends ComponentRule {\n constructor(components: unknown) {\n super(\n ComponentRuleType.Days,\n components,\n isDayInMonth,\n ({ day, dayFromEnd }) => [day, -dayFromEnd],\n );\n }\n}\n\nexport class WeekdaysRule extends ComponentRule {\n constructor(components: unknown) {\n super(\n ComponentRuleType.Weekdays,\n components,\n isDayOfWeek,\n ({ weekday }) => [weekday],\n );\n }\n}\n\nexport class WeeksRule extends ComponentRule {\n constructor(components: unknown) {\n super(\n ComponentRuleType.Weeks,\n components,\n isWeekInMonth,\n ({ week, weekFromEnd }) => [week, -weekFromEnd],\n );\n }\n}\n\nexport class MonthsRule extends ComponentRule {\n constructor(components: unknown) {\n super(ComponentRuleType.Months, components, isMonthInYear, ({ month }) => [\n month,\n ]);\n }\n}\n\nexport class YearsRule extends ComponentRule {\n constructor(components: unknown) {\n super(ComponentRuleType.Years, components, isNumber, ({ year }) => [year]);\n }\n}\n\nexport class OrdinalComponentRule implements Rule {\n components: [OrdinalWeekInMonth, DayOfWeek][];\n\n constructor(\n public type: OrdinalComponentRuleType,\n components: OrdinalArrayConfig,\n ) {\n this.components = this.normalizeComponents(components);\n }\n\n normalizeArrayConfig(config: OrdinalArrayConfig) {\n const result: [OrdinalWeekInMonth, DayOfWeek][] = [];\n config.forEach((numOrArray, i) => {\n if (isNumber(numOrArray)) {\n if (i === 0) return;\n if (!isOrdinalWeekInMonth(config[0])) {\n console.error(\n `Ordinal range for \"${this.type}\" rule is from -5 to -1 or 1 to 5. This rule will be skipped.`,\n );\n return;\n }\n if (!isDayOfWeek(numOrArray)) {\n console.error(\n `Acceptable range for \"${this.type}\" rule is from 1 to 5. This rule will be skipped`,\n );\n return;\n }\n result.push([config[0], numOrArray]);\n } else if (isArray(numOrArray)) {\n result.push(...this.normalizeArrayConfig(numOrArray));\n }\n });\n return result;\n }\n\n normalizeComponents(config: OrdinalArrayConfig) {\n const result: [OrdinalWeekInMonth, DayOfWeek][] = [];\n config.forEach((numOrArray, i) => {\n if (isNumber(numOrArray)) {\n if (i === 0) return;\n if (!isOrdinalWeekInMonth(config[0])) {\n console.error(\n `Ordinal range for \"${this.type}\" rule is from -5 to -1 or 1 to 5. This rule will be skipped.`,\n );\n return;\n }\n if (!isDayOfWeek(numOrArray)) {\n console.error(\n `Acceptable range for \"${this.type}\" rule is from 1 to 5. This rule will be skipped`,\n );\n return;\n }\n result.push([config[0], numOrArray]);\n } else if (isArray(numOrArray)) {\n result.push(...this.normalizeArrayConfig(numOrArray));\n }\n });\n return result;\n }\n\n passes(dayParts: DayParts) {\n const { weekday, weekdayOrdinal, weekdayOrdinalFromEnd } = dayParts;\n return this.components.some(\n ([ordinalWeek, ordinalWeekday]) =>\n (ordinalWeek === weekdayOrdinal ||\n ordinalWeek === -weekdayOrdinalFromEnd) &&\n weekday === ordinalWeekday,\n );\n }\n}\n\nexport class FunctionRule implements Rule {\n type = FunctionRuleType.Function;\n private validated = true;\n\n constructor(public fn: Function) {\n if (!isFunction(fn)) {\n console.error(\n `The function rule requires a valid function. This rule will be skipped.`,\n );\n this.validated = false;\n }\n }\n\n passes(dayParts: DayParts) {\n if (!this.validated) return true;\n\n return this.fn(dayParts);\n }\n}\n","import { isArray, isObject, isString, isFunction } from '../helpers';\nimport Locale from '../locale';\nimport type {\n DayOfWeek,\n DayInMonth,\n WeekInMonth,\n MonthInYear,\n DayParts,\n DateParts,\n} from './helpers';\nimport {\n type Rule,\n type RuleType,\n type SingleOrArray,\n ComponentRule,\n ComponentRuleType,\n FunctionRule,\n GroupRuleType,\n IntervalRule,\n IntervalRuleType,\n OrdinalComponentRuleType,\n OrdinalComponentRule,\n} from './rules';\n\nexport type RepeatIntervalShort = 'day' | 'week' | 'month' | 'year';\n\nexport type RepeatInterval = 'days' | 'weeks' | 'months' | 'years';\nexport interface DateRepeatConfig {\n every: RepeatIntervalShort | [number, RepeatInterval];\n from: Date;\n until: Date;\n weekdays: SingleOrArray;\n days: SingleOrArray;\n weeks: SingleOrArray;\n months: SingleOrArray;\n years: SingleOrArray;\n ordinalWeekdays: SingleOrArray;\n on: SingleOrArray>;\n}\n\nexport type DateRepeatFn = (dayParts: DayParts) => boolean;\n\nexport interface DateRepeatOptions {\n locale: Locale;\n}\n\nexport class DateRepeat implements Rule {\n validated = true;\n\n config: Partial | DateRepeatFn;\n type = GroupRuleType.Any;\n from: DateParts | undefined;\n until: DateParts | undefined;\n rules: Rule[] = [];\n locale = new Locale();\n\n constructor(\n config: Partial | DateRepeatFn,\n options: Partial = {},\n private parent?: DateRepeat,\n ) {\n if (options.locale) this.locale = options.locale;\n\n this.config = config;\n if (isFunction(config)) {\n this.type = GroupRuleType.All;\n this.rules = [new FunctionRule(config)];\n } else if (isArray(config)) {\n this.type = GroupRuleType.Any;\n this.rules = config.map(c => new DateRepeat(c, options, this));\n } else if (isObject(config)) {\n this.type = GroupRuleType.All;\n // Assign bounding dates\n this.from = config.from\n ? this.locale.getDateParts(config.from)\n : parent?.from;\n this.until = config.until\n ? this.locale.getDateParts(config.until)\n : parent?.until;\n this.rules = this.getObjectRules(config);\n } else {\n console.error('Rule group configuration must be an object or an array.');\n this.validated = false;\n }\n }\n\n getObjectRules(config: any) {\n const rules: Rule[] = [];\n\n // Add interval rule\n if (config.every) {\n if (isString(config.every)) {\n config.every = [1, `${config.every}s`];\n }\n if (isArray(config.every)) {\n const [interval = 1, type = IntervalRuleType.Days] = config.every;\n rules.push(new IntervalRule(type, interval, this.from!));\n }\n }\n\n // Add component rules\n Object.values(ComponentRuleType).forEach(type => {\n if (!(type in config)) return;\n rules.push(ComponentRule.create(type, config[type]));\n });\n\n // Add ordinal component rules\n Object.values(OrdinalComponentRuleType).forEach(type => {\n if (!(type in config)) return;\n rules.push(new OrdinalComponentRule(type, config[type]));\n });\n\n // Add group rules\n if (config.on != null) {\n if (!isArray(config.on)) config.on = [config.on];\n rules.push(\n new DateRepeat(config.on, { locale: this.locale }, this.parent),\n );\n }\n\n return rules;\n }\n\n passes(dayParts: DayParts) {\n if (!this.validated) return true;\n\n if (this.from && dayParts.dayIndex <= this.from.dayIndex) return false;\n if (this.until && dayParts.dayIndex >= this.until.dayIndex) return false;\n\n if (this.type === GroupRuleType.Any) {\n return this.rules.some(r => r.passes(dayParts));\n }\n return this.rules.every(r => r.passes(dayParts));\n }\n}\n","import {\n pad,\n isNumber,\n isString,\n isDate,\n isArray,\n arrayHasItems,\n isFunction,\n isObject,\n} from '../helpers';\nimport toFnsDate from 'date-fns-tz/toDate';\nimport getWeeksInMonth from 'date-fns/getWeeksInMonth';\nimport getWeek from 'date-fns/getWeek';\nimport getISOWeek from 'date-fns/getISOWeek';\nimport addDays from 'date-fns/addDays';\nimport addMonths from 'date-fns/addMonths';\nimport addYears from 'date-fns/addYears';\nimport { type LocaleConfig, default as Locale } from '../locale';\n\nexport { addDays, addMonths, addYears };\nexport { DateRepeat } from './repeat';\n\n// #region Types\n\ntype DayNameLength = 'narrow' | 'short' | 'long';\ntype MonthNameLength = 'short' | 'long';\n\nexport type DayInMonth =\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 7\n | 8\n | 9\n | 10\n | 11\n | 12\n | 13\n | 14\n | 15\n | 16\n | 17\n | 18\n | 18\n | 20\n | 21\n | 22\n | 23\n | 24\n | 25\n | 26\n | 27\n | 28\n | 29\n | 30\n | 31\n | -1\n | -2\n | -3\n | -4\n | -5\n | -6\n | -7\n | -8\n | -9\n | -10\n | -11\n | -12\n | -13\n | -14\n | -15\n | -16\n | -17\n | -18\n | -18\n | -20\n | -21\n | -22\n | -23\n | -24\n | -25\n | -26\n | -27\n | -28\n | -29\n | -30\n | -31;\nexport type DayOfWeek = 1 | 2 | 3 | 4 | 5 | 6 | 7;\nexport type WeekInMonth = 1 | 2 | 3 | 4 | 5 | 6;\nexport type WeekInMonthFromEnd = -6 | -5 | -4 | -3 | -2 | -1;\nexport type OrdinalWeekInMonth = -5 | -4 | -3 | -2 | -1 | 1 | 2 | 3 | 4 | 5;\nexport type MonthInYear = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\nexport type StartOfWeek = 1 | 2 | 3 | 4 | 5 | 6 | 7;\n\nexport type WeekStartsOn = 0 | 1 | 2 | 3 | 4 | 5 | 6;\nexport type DateSource = Date | string | number;\nexport type TimeNames = Partial>;\n\n// #endregion Types\n\nexport function isDayInMonth(dayInMonth: unknown): dayInMonth is DayInMonth {\n if (!isNumber(dayInMonth)) return false;\n return dayInMonth >= 1 && dayInMonth <= 31;\n}\n\nexport function isDayOfWeek(dayOfWeek: unknown): dayOfWeek is DayOfWeek {\n if (!isNumber(dayOfWeek)) return false;\n return dayOfWeek >= 1 && dayOfWeek <= 7;\n}\n\nexport function isWeekInMonth(\n weekInMonth: unknown,\n): weekInMonth is WeekInMonth {\n if (!isNumber(weekInMonth)) return false;\n return (\n (weekInMonth >= -6 && weekInMonth <= -1) ||\n (weekInMonth >= 1 && weekInMonth <= 6)\n );\n}\n\nexport function isMonthInYear(\n monthInYear: unknown,\n): monthInYear is MonthInYear {\n if (!isNumber(monthInYear)) return false;\n return monthInYear >= 1 && monthInYear <= 12;\n}\n\nexport function isOrdinalWeekInMonth(\n weekInMonth: unknown,\n): weekInMonth is OrdinalWeekInMonth {\n if (!isNumber(weekInMonth)) return false;\n if (weekInMonth < -5 || weekInMonth > 5 || weekInMonth === 0) return false;\n return true;\n}\n\ninterface NumberRuleConfig {\n min?: number;\n max?: number;\n interval?: number;\n}\n\ntype DatePartsRuleFunction = (part: number, parts: TimeParts) => boolean;\n\ntype DatePartsRule =\n | number\n | Array\n | NumberRuleConfig\n | DatePartsRuleFunction;\n\nexport interface DatePartsRules {\n hours?: DatePartsRule;\n minutes?: DatePartsRule;\n seconds?: DatePartsRule;\n milliseconds?: DatePartsRule;\n}\n\nexport interface DatePartOption {\n value: number;\n label: string;\n disabled?: boolean;\n}\n\nexport interface FormatParseOptions {\n locale?: Locale | LocaleConfig | string;\n timezone?: string;\n}\n\nexport interface DateOptions {\n type: string;\n fillDate: DateSource;\n mask: string;\n patch: DatePatch;\n rules: DatePartsRules;\n}\n\nexport interface PageAddress {\n day?: number;\n week?: number;\n month: number;\n year: number;\n}\n\nexport interface TimeParts {\n hours: number;\n minutes: number;\n seconds: number;\n milliseconds: number;\n}\n\nexport interface SimpleDateParts {\n year: number;\n month: number;\n day: number;\n hours: number;\n minutes: number;\n seconds: number;\n milliseconds: number;\n}\n\nexport interface DayParts {\n dayIndex: number;\n day: number;\n dayFromEnd: number;\n weekday: number;\n weekdayOrdinal: number;\n weekdayOrdinalFromEnd: number;\n week: number;\n weekFromEnd: number;\n weeknumber: number;\n month: number;\n year: number;\n date: Date;\n}\n\nexport interface DateParts extends DayParts {\n milliseconds: number;\n seconds: number;\n minutes: number;\n hours: number;\n time: number;\n dateTime: number;\n isValid: boolean;\n timezoneOffset: number;\n isPm?: boolean;\n}\n\nexport interface MonthParts {\n firstDayOfWeek: DayOfWeek;\n firstDayOfMonth: Date;\n inLeapYear: boolean;\n firstWeekday: number;\n numDays: number;\n numWeeks: number;\n month: number;\n year: number;\n weeknumbers: number[];\n isoWeeknumbers: number[];\n}\n\nexport type DatePatch = 'dateTime' | 'date' | 'time';\n\nexport const DatePatchKeys: Record = {\n dateTime: [\n 'year',\n 'month',\n 'day',\n 'hours',\n 'minutes',\n 'seconds',\n 'milliseconds',\n ],\n date: ['year', 'month', 'day'],\n time: ['hours', 'minutes', 'seconds', 'milliseconds'],\n};\n\nexport const daysInWeek = 7;\nexport const weeksInMonth = 6;\nexport const MS_PER_SECOND = 1000;\nexport const MS_PER_MINUTE = MS_PER_SECOND * 60;\nexport const MS_PER_HOUR = MS_PER_MINUTE * 60;\nexport const MS_PER_DAY = MS_PER_HOUR * 24;\n\nconst daysInMonths = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst maskMacros = ['L', 'iso'];\n\ntype DatePartsRange = Readonly<[number, number, number]>;\ntype TimePartsKey = 'milliseconds' | 'seconds' | 'minutes' | 'hours';\nconst DATE_PART_RANGES: Record = {\n milliseconds: [0, 999, 3],\n seconds: [0, 59, 2],\n minutes: [0, 59, 2],\n hours: [0, 23, 2],\n} as const;\n\n// #region Format constants\n\nconst token =\n /d{1,2}|W{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|Z{1,4}|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\nconst literal = /\\[([^]*?)\\]/gm;\nconst formatFlags: any = {\n D(d: DateParts) {\n return d.day;\n },\n DD(d: DateParts) {\n return pad(d.day, 2);\n },\n // Do(d: DateParts, l: Locale) {\n // return l.DoFn(d.day);\n // },\n d(d: DateParts) {\n return d.weekday - 1;\n },\n dd(d: DateParts) {\n return pad(d.weekday - 1, 2);\n },\n W(d: DateParts, l: Locale) {\n return l.dayNamesNarrow[d.weekday - 1];\n },\n WW(d: DateParts, l: Locale) {\n return l.dayNamesShorter[d.weekday - 1];\n },\n WWW(d: DateParts, l: Locale) {\n return l.dayNamesShort[d.weekday - 1];\n },\n WWWW(d: DateParts, l: Locale) {\n return l.dayNames[d.weekday - 1];\n },\n M(d: DateParts) {\n return d.month;\n },\n MM(d: DateParts) {\n return pad(d.month, 2);\n },\n MMM(d: DateParts, l: Locale) {\n return l.monthNamesShort[d.month - 1];\n },\n MMMM(d: DateParts, l: Locale) {\n return l.monthNames[d.month - 1];\n },\n YY(d: DateParts) {\n return String(d.year).substr(2);\n },\n YYYY(d: DateParts) {\n return pad(d.year, 4);\n },\n h(d: DateParts) {\n return d.hours % 12 || 12;\n },\n hh(d: DateParts) {\n return pad(d.hours % 12 || 12, 2);\n },\n H(d: DateParts) {\n return d.hours;\n },\n HH(d: DateParts) {\n return pad(d.hours, 2);\n },\n m(d: DateParts) {\n return d.minutes;\n },\n mm(d: DateParts) {\n return pad(d.minutes, 2);\n },\n s(d: DateParts) {\n return d.seconds;\n },\n ss(d: DateParts) {\n return pad(d.seconds, 2);\n },\n S(d: DateParts) {\n return Math.round(d.milliseconds / 100);\n },\n SS(d: DateParts) {\n return pad(Math.round(d.milliseconds / 10), 2);\n },\n SSS(d: DateParts) {\n return pad(d.milliseconds, 3);\n },\n a(d: DateParts, l: Locale) {\n return d.hours < 12 ? l.amPm[0] : l.amPm[1];\n },\n A(d: DateParts, l: Locale) {\n return d.hours < 12 ? l.amPm[0].toUpperCase() : l.amPm[1].toUpperCase();\n },\n Z() {\n return 'Z';\n },\n ZZ(d: DateParts) {\n const o = d.timezoneOffset;\n return `${o > 0 ? '-' : '+'}${pad(Math.floor(Math.abs(o) / 60), 2)}`;\n },\n ZZZ(d: DateParts) {\n const o = d.timezoneOffset;\n return `${o > 0 ? '-' : '+'}${pad(\n Math.floor(Math.abs(o) / 60) * 100 + (Math.abs(o) % 60),\n 4,\n )}`;\n },\n ZZZZ(d: DateParts) {\n const o = d.timezoneOffset;\n return `${o > 0 ? '-' : '+'}${pad(Math.floor(Math.abs(o) / 60), 2)}:${pad(\n Math.abs(o) % 60,\n 2,\n )}`;\n },\n};\n\n// #endregion Format constants\n\n// #region Parse constants\n\nconst twoDigits = /\\d\\d?/;\nconst threeDigits = /\\d{3}/;\nconst fourDigits = /\\d{4}/;\nconst word =\n /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => {};\nconst monthUpdate = (arrName: string) => (d: DateParts, v: string, l: any) => {\n const index = l[arrName].indexOf(\n v.charAt(0).toUpperCase() + v.substr(1).toLowerCase(),\n );\n if (~index) {\n d.month = index;\n }\n};\nconst parseFlags: any = {\n D: [\n twoDigits,\n (d: DateParts, v: number) => {\n d.day = v;\n },\n ],\n Do: [\n new RegExp(twoDigits.source + word.source),\n (d: DateParts, v: string) => {\n d.day = parseInt(v, 10);\n },\n ],\n d: [twoDigits, noop],\n W: [word, noop],\n M: [\n twoDigits,\n (d: DateParts, v: number) => {\n d.month = v - 1;\n },\n ],\n MMM: [word, monthUpdate('monthNamesShort')],\n MMMM: [word, monthUpdate('monthNames')],\n YY: [\n twoDigits,\n (d: DateParts, v: number) => {\n const da = new Date();\n const cent = +da.getFullYear().toString().substr(0, 2);\n d.year = +`${v > 68 ? cent - 1 : cent}${v}`;\n },\n ],\n YYYY: [\n fourDigits,\n (d: DateParts, v: number) => {\n d.year = v;\n },\n ],\n S: [\n /\\d/,\n (d: DateParts, v: number) => {\n d.milliseconds = v * 100;\n },\n ],\n SS: [\n /\\d{2}/,\n (d: DateParts, v: number) => {\n d.milliseconds = v * 10;\n },\n ],\n SSS: [\n threeDigits,\n (d: DateParts, v: number) => {\n d.milliseconds = v;\n },\n ],\n h: [\n twoDigits,\n (d: DateParts, v: number) => {\n d.hours = v;\n },\n ],\n m: [\n twoDigits,\n (d: DateParts, v: number) => {\n d.minutes = v;\n },\n ],\n s: [\n twoDigits,\n (d: DateParts, v: number) => {\n d.seconds = v;\n },\n ],\n a: [\n word,\n (d: DateParts, v: string, l: Locale) => {\n const val = v.toLowerCase();\n if (val === l.amPm[0]) {\n d.isPm = false;\n } else if (val === l.amPm[1]) {\n d.isPm = true;\n }\n },\n ],\n Z: [\n /[^\\s]*?[+-]\\d\\d:?\\d\\d|[^\\s]*?Z?/,\n (d: DateParts, v: string) => {\n if (v === 'Z') v = '+00:00';\n const parts = `${v}`.match(/([+-]|\\d\\d)/gi);\n if (parts) {\n const minutes = +parts[1] * 60 + parseInt(parts[2], 10);\n d.timezoneOffset = parts[0] === '+' ? minutes : -minutes;\n }\n },\n ],\n};\nparseFlags.DD = parseFlags.D;\nparseFlags.dd = parseFlags.d;\nparseFlags.WWWW = parseFlags.WWW = parseFlags.WW = parseFlags.W;\nparseFlags.MM = parseFlags.M;\nparseFlags.mm = parseFlags.m;\nparseFlags.hh = parseFlags.H = parseFlags.HH = parseFlags.h;\nparseFlags.ss = parseFlags.s;\nparseFlags.A = parseFlags.a;\nparseFlags.ZZZZ = parseFlags.ZZZ = parseFlags.ZZ = parseFlags.Z;\n\n// #endregion Parse constants\n\nfunction normalizeMasks(masks: string | string[], locale: Locale): string[] {\n return (\n ((arrayHasItems(masks) && masks) || [\n (isString(masks) && masks) || 'YYYY-MM-DD',\n ]) as string[]\n ).map(m =>\n maskMacros.reduce(\n (prev, curr) => prev.replace(curr, locale.masks[curr] || ''),\n m,\n ),\n );\n}\n\nexport function isDateParts(parts: unknown): parts is Partial {\n return (\n isObject(parts) && 'year' in parts && 'month' in parts && 'day' in parts\n );\n}\n\nexport function isDateSource(date: unknown): date is DateSource {\n if (date == null) return false;\n return isString(date) || isNumber(date) || isDate(date);\n}\n\nexport function roundDate(dateMs: number, snapMs = 0) {\n if (snapMs > 0) return new Date(Math.round(dateMs / snapMs) * snapMs);\n return new Date(dateMs);\n}\n\nexport function startOfWeek(date: Date, firstDayOfWeek: DayOfWeek = 1) {\n const day = date.getDay() + 1;\n const daysToAdd =\n day >= firstDayOfWeek\n ? firstDayOfWeek - day\n : -(7 - (firstDayOfWeek - day));\n return addDays(date, daysToAdd);\n}\n\nexport function getStartOfWeek(date: Date, firstDayOfWeek: DayOfWeek = 1) {\n const day = date.getDay() + 1;\n const daysToAdd =\n day >= firstDayOfWeek\n ? firstDayOfWeek - day\n : -(7 - (firstDayOfWeek - day));\n return addDays(date, daysToAdd);\n}\n\nexport function getDayIndex(year: number, month: number, day: number) {\n const utcDate = Date.UTC(year, month - 1, day);\n return diffInDays(new Date(0), new Date(utcDate));\n}\n\nexport function diffInDays(d1: Date, d2: Date) {\n return Math.round((d2.getTime() - d1.getTime()) / MS_PER_DAY);\n}\n\nexport function diffInWeeks(d1: Date, d2: Date) {\n return Math.ceil(diffInDays(startOfWeek(d1), startOfWeek(d2)) / 7);\n}\n\nexport function diffInYears(d1: Date, d2: Date) {\n return d2.getUTCFullYear() - d1.getUTCFullYear();\n}\n\nexport function diffInMonths(d1: Date, d2: Date) {\n return diffInYears(d1, d2) * 12 + (d2.getMonth() - d1.getMonth());\n}\n\nexport function getDateFromParts(\n parts: Partial,\n timezone = '',\n) {\n const d = new Date();\n const {\n year = d.getFullYear(),\n month = d.getMonth() + 1,\n day = d.getDate(),\n hours: hrs = 0,\n minutes: min = 0,\n seconds: sec = 0,\n milliseconds: ms = 0,\n } = parts;\n\n if (timezone) {\n const dateString = `${pad(year, 4)}-${pad(month, 2)}-${pad(day, 2)}T${pad(\n hrs,\n 2,\n )}:${pad(min, 2)}:${pad(sec, 2)}.${pad(ms, 3)}`;\n return toFnsDate(dateString, { timeZone: timezone });\n }\n return new Date(year, month - 1, day, hrs, min, sec, ms);\n}\n\nexport function getTimezoneOffset(\n parts: Partial,\n timezone = '',\n) {\n const {\n year: y = 0,\n month: m = 0,\n day: d = 0,\n hours: hrs = 0,\n minutes: min = 0,\n seconds: sec = 0,\n milliseconds: ms = 0,\n } = parts;\n let date;\n const utcDate = new Date(Date.UTC(y, m - 1, d, hrs, min, sec, ms));\n if (timezone) {\n const dateString = `${pad(y, 4)}-${pad(m, 2)}-${pad(d, 2)}T${pad(\n hrs,\n 2,\n )}:${pad(min, 2)}:${pad(sec, 2)}.${pad(ms, 3)}`;\n date = toFnsDate(dateString, { timeZone: timezone });\n } else {\n date = new Date(y, m - 1, d, hrs, min, sec, ms);\n }\n return (date.getTime() - utcDate.getTime()) / 60000;\n}\n\nexport function getDateParts(date: Date, locale: Locale): DateParts {\n let tzDate = new Date(date.getTime());\n if (locale.timezone) {\n tzDate = new Date(\n date.toLocaleString('en-US', { timeZone: locale.timezone }),\n );\n tzDate.setMilliseconds(date.getMilliseconds());\n }\n const milliseconds = tzDate.getMilliseconds();\n const seconds = tzDate.getSeconds();\n const minutes = tzDate.getMinutes();\n const hours = tzDate.getHours();\n const time =\n milliseconds +\n seconds * MS_PER_SECOND +\n minutes * MS_PER_MINUTE +\n hours * MS_PER_HOUR;\n const month = (tzDate.getMonth() + 1);\n const year = tzDate.getFullYear();\n const monthParts = locale.getMonthParts(month, year);\n const day = tzDate.getDate();\n const dayFromEnd = monthParts.numDays - day + 1;\n const weekday = tzDate.getDay() + 1;\n const weekdayOrdinal = Math.floor((day - 1) / 7 + 1);\n const weekdayOrdinalFromEnd = Math.floor((monthParts.numDays - day) / 7 + 1);\n const week = Math.ceil(\n (day + Math.abs(monthParts.firstWeekday - monthParts.firstDayOfWeek)) / 7,\n );\n const weekFromEnd = monthParts.numWeeks - week + 1;\n const weeknumber = monthParts.weeknumbers[week];\n const dayIndex = getDayIndex(year, month, day);\n const parts: DateParts = {\n milliseconds,\n seconds,\n minutes,\n hours,\n time,\n day,\n dayFromEnd,\n weekday,\n weekdayOrdinal,\n weekdayOrdinalFromEnd,\n week,\n weekFromEnd,\n weeknumber,\n month,\n year,\n date: tzDate,\n dateTime: tzDate.getTime(),\n dayIndex,\n timezoneOffset: 0,\n isValid: true,\n };\n return parts;\n}\n\nexport function getMonthPartsKey(\n month: number,\n year: number,\n firstDayOfWeek: DayOfWeek,\n) {\n return `${year}-${month}-${firstDayOfWeek}`;\n}\n\nexport function getMonthParts(\n month: number,\n year: number,\n firstDayOfWeek: DayOfWeek,\n) {\n const inLeapYear = (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n const firstDayOfMonth = new Date(year, month - 1, 1);\n const firstWeekday = firstDayOfMonth.getDay() + 1;\n const numDays = month === 2 && inLeapYear ? 29 : daysInMonths[month - 1];\n const weekStartsOn: WeekStartsOn = (firstDayOfWeek - 1) as WeekStartsOn;\n const numWeeks = getWeeksInMonth(firstDayOfMonth, {\n weekStartsOn,\n });\n const weeknumbers = [];\n const isoWeeknumbers = [];\n for (let i = 0; i < numWeeks; i++) {\n const date = addDays(firstDayOfMonth, i * 7);\n weeknumbers.push(getWeek(date, { weekStartsOn }));\n isoWeeknumbers.push(getISOWeek(date));\n }\n return {\n firstDayOfWeek,\n firstDayOfMonth,\n inLeapYear,\n firstWeekday,\n numDays,\n numWeeks,\n month,\n year,\n weeknumbers,\n isoWeeknumbers,\n };\n}\n\nexport function getWeekdayDates() {\n const dates = [];\n const year = 2020;\n const month = 1;\n const day = 5;\n for (let i = 0; i < daysInWeek; i++) {\n dates.push(\n getDateFromParts({\n year,\n month,\n day: day + i,\n hours: 12,\n }),\n );\n }\n return dates;\n}\n\nexport function getDayNames(\n length: DayNameLength,\n localeId: string | undefined = undefined,\n) {\n const dtf = new Intl.DateTimeFormat(localeId, {\n weekday: length,\n });\n return getWeekdayDates().map(d => dtf.format(d));\n}\n\nexport function getHourDates() {\n const dates = [];\n for (let i = 0; i <= 24; i++) {\n dates.push(new Date(2000, 0, 1, i));\n }\n return dates;\n}\n\nexport function getRelativeTimeNames(localeId = undefined): TimeNames {\n const units: Intl.RelativeTimeFormatUnit[] = [\n 'second',\n 'minute',\n 'hour',\n 'day',\n 'week',\n 'month',\n 'quarter',\n 'year',\n ];\n const rtf = new Intl.RelativeTimeFormat(localeId);\n return units.reduce((names, unit) => {\n const parts = rtf.formatToParts(100, unit);\n // @ts-ignore\n names[unit] = parts[1].unit;\n return names;\n }, {});\n}\n\nexport function getMonthDates() {\n const dates = [];\n for (let i = 0; i < 12; i++) {\n dates.push(new Date(2000, i, 15));\n }\n return dates;\n}\n\nexport function getMonthNames(length: MonthNameLength, localeId = undefined) {\n const dtf = new Intl.DateTimeFormat(localeId, {\n month: length,\n timeZone: 'UTC',\n });\n return getMonthDates().map(d => dtf.format(d));\n}\n\nexport function datePartIsValid(\n part: number,\n rule: DatePartsRule,\n parts: DateParts,\n): boolean {\n if (isNumber(rule)) return rule === part;\n if (isArray(rule)) return (rule as number[]).includes(part);\n if (isFunction(rule)) return rule(part, parts);\n if (rule.min != null && rule.min > part) return false;\n if (rule.max != null && rule.max < part) return false;\n if (rule.interval != null && part % rule.interval !== 0) return false;\n return true;\n}\n\nexport function getDatePartOptions(\n parts: DateParts,\n range: DatePartsRange,\n rule: DatePartsRule | undefined,\n) {\n const options: DatePartOption[] = [];\n const [min, max, padding] = range;\n for (let i = min; i <= max; i++) {\n if (rule == null || datePartIsValid(i, rule, parts)) {\n options.push({\n value: i,\n label: pad(i, padding),\n });\n }\n }\n return options;\n}\n\nexport function getDatePartsOptions(parts: DateParts, rules: DatePartsRules) {\n return {\n milliseconds: getDatePartOptions(\n parts,\n DATE_PART_RANGES.milliseconds,\n rules.milliseconds,\n ),\n seconds: getDatePartOptions(parts, DATE_PART_RANGES.seconds, rules.seconds),\n minutes: getDatePartOptions(parts, DATE_PART_RANGES.minutes, rules.minutes),\n hours: getDatePartOptions(parts, DATE_PART_RANGES.hours, rules.hours),\n };\n}\n\nexport function getNearestDatePart(\n parts: DateParts,\n range: DatePartsRange,\n value: number,\n rule: DatePartsRule,\n) {\n const options = getDatePartOptions(parts, range, rule);\n const result = options.reduce((prev, opt) => {\n if (opt.disabled) return prev;\n if (isNaN(prev)) return opt.value;\n const diffPrev = Math.abs(prev - value);\n const diffCurr = Math.abs(opt.value - value);\n return diffCurr < diffPrev ? opt.value : prev;\n }, NaN);\n return isNaN(result) ? value : result;\n}\n\nexport function applyRulesForDateParts(\n dateParts: DateParts,\n rules: DatePartsRules,\n) {\n const result = { ...dateParts };\n Object.entries(rules).forEach(([key, rule]) => {\n const range = DATE_PART_RANGES[key as TimePartsKey];\n const value = dateParts[key as TimePartsKey];\n result[key as TimePartsKey] = getNearestDatePart(\n dateParts,\n range,\n value,\n rule,\n );\n });\n return result;\n}\n\nexport function parseDate(\n dateString: string,\n mask: string | string[],\n locale: Locale,\n) {\n const masks = normalizeMasks(mask, locale);\n return (\n masks\n .map(m => {\n if (typeof m !== 'string') {\n throw new Error('Invalid mask');\n }\n // Reset string value\n let str = dateString;\n // Avoid regular expression denial of service, fail early for really long strings\n // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS\n if (str.length > 1000) {\n return false;\n }\n\n let isValid = true;\n const dp: Partial = {};\n m.replace(token, $0 => {\n if (parseFlags[$0]) {\n const info = parseFlags[$0];\n const index = str.search(info[0]);\n if (!~index) {\n isValid = false;\n } else {\n str.replace(info[0], result => {\n info[1](dp, result, locale);\n str = str.substr(index + result.length);\n return result;\n });\n }\n }\n\n return parseFlags[$0] ? '' : $0.slice(1, $0.length - 1);\n });\n\n if (!isValid) {\n return false;\n }\n\n const today = new Date();\n if (dp.hours != null) {\n if (dp.isPm === true && +dp.hours !== 12) {\n dp.hours = +dp.hours + 12;\n } else if (dp.isPm === false && +dp.hours === 12) {\n dp.hours = 0;\n }\n }\n\n let date;\n if (dp.timezoneOffset != null) {\n dp.minutes = +(dp.minutes || 0) - +dp.timezoneOffset;\n date = new Date(\n Date.UTC(\n dp.year || today.getFullYear(),\n dp.month || 0,\n dp.day || 1,\n dp.hours || 0,\n dp.minutes || 0,\n dp.seconds || 0,\n dp.milliseconds || 0,\n ),\n );\n } else {\n date = locale.getDateFromParts({\n year: dp.year || today.getFullYear(),\n month: (dp.month || 0) + 1,\n day: dp.day || 1,\n hours: dp.hours || 0,\n minutes: dp.minutes || 0,\n seconds: dp.seconds || 0,\n milliseconds: dp.milliseconds || 0,\n });\n }\n return date;\n })\n .find(d => d) || new Date(dateString)\n );\n}\n\nexport function formatDate(\n date: Date,\n masks: string | string[],\n locale: Locale,\n) {\n if (date == null) return '';\n let mask = normalizeMasks(masks, locale)[0];\n // Convert timezone to utc if needed\n if (/Z$/.test(mask)) locale.timezone = 'utc';\n const literals: string[] = [];\n // Make literals inactive by replacing them with ??\n mask = mask.replace(literal, ($0, $1: string) => {\n literals.push($1);\n return '??';\n });\n const dateParts = locale.getDateParts(date);\n // Apply formatting rules\n mask = mask.replace(token, $0 =>\n $0 in formatFlags\n ? formatFlags[$0](dateParts, locale)\n : $0.slice(1, $0.length - 1),\n );\n // Inline literal values back into the formatted value\n return mask.replace(/\\?\\?/g, () => literals.shift()!);\n}\n","import {\n DateSource,\n DayParts,\n DateParts,\n MonthParts,\n daysInWeek,\n weeksInMonth,\n addDays,\n addMonths,\n getDayIndex,\n} from './date/helpers';\nimport Locale from './locale';\nimport { pad, pick } from './helpers';\n\nexport interface CalendarDay extends DayParts {\n id: string;\n position: number;\n label: string;\n ariaLabel: string;\n weekdayPosition: number;\n weekdayPositionFromEnd: number;\n weekPosition: number;\n isoWeeknumber: number;\n startDate: Date;\n noonDate: Date;\n endDate: Date;\n isToday: boolean;\n isFirstDay: boolean;\n isLastDay: boolean;\n isDisabled: boolean;\n isFocusable: boolean;\n isFocused: boolean;\n inMonth: boolean;\n inPrevMonth: boolean;\n inNextMonth: boolean;\n onTop: boolean;\n onBottom: boolean;\n onLeft: boolean;\n onRight: boolean;\n classes: Array;\n locale: Locale;\n}\n\nexport interface CalendarWeek {\n id: string;\n week: number;\n weekPosition: number;\n weeknumber: number;\n isoWeeknumber: number;\n weeknumberDisplay?: number;\n days: CalendarDay[];\n title: string;\n}\n\nexport interface CalendarWeekday {\n weekday: number;\n label: string;\n}\n\nexport type PageView = 'daily' | 'weekly' | 'monthly';\n\nexport type TitlePosition = 'center' | 'left' | 'right';\n\nexport interface Page {\n id: string;\n day?: number;\n week?: number;\n month: number;\n year: number;\n view: PageView;\n trimWeeks: boolean;\n position: number;\n row: number;\n rowFromEnd: number;\n column: number;\n columnFromEnd: number;\n showWeeknumbers: boolean;\n showIsoWeeknumbers: boolean;\n weeknumberPosition: string;\n monthTitle: string;\n weekTitle?: string;\n dayTitle?: string;\n title: string;\n titlePosition: TitlePosition;\n shortMonthLabel: string;\n monthLabel: string;\n shortYearLabel: string;\n yearLabel: string;\n monthComps: MonthParts;\n prevMonthComps: MonthParts;\n nextMonthComps: MonthParts;\n days: CalendarDay[];\n weeks: CalendarWeek[];\n weekdays: CalendarWeekday[];\n viewDays: CalendarDay[];\n viewWeeks: CalendarWeek[];\n}\n\nexport type PageAddress = Pick;\n\nexport type PageConfig = Pick<\n Page,\n | 'day'\n | 'week'\n | 'month'\n | 'year'\n | 'view'\n | 'titlePosition'\n | 'trimWeeks'\n | 'position'\n | 'row'\n | 'rowFromEnd'\n | 'column'\n | 'columnFromEnd'\n | 'showWeeknumbers'\n | 'showIsoWeeknumbers'\n | 'weeknumberPosition'\n>;\n\nexport type CachedPage = Pick<\n Page,\n | 'id'\n | 'month'\n | 'year'\n | 'monthTitle'\n | 'shortMonthLabel'\n | 'monthLabel'\n | 'shortYearLabel'\n | 'yearLabel'\n | 'monthComps'\n | 'prevMonthComps'\n | 'nextMonthComps'\n | 'days'\n | 'weeks'\n | 'weekdays'\n>;\n\nconst viewAddressKeys: Record = {\n daily: ['year', 'month', 'day'],\n weekly: ['year', 'month', 'week'],\n monthly: ['year', 'month'],\n};\n\nfunction getDays(\n {\n monthComps,\n prevMonthComps,\n nextMonthComps,\n }: Pick,\n locale: Locale,\n): CalendarDay[] {\n const days: CalendarDay[] = [];\n const {\n firstDayOfWeek,\n firstWeekday,\n isoWeeknumbers,\n weeknumbers,\n numDays,\n numWeeks,\n } = monthComps;\n const prevMonthDaysToShow =\n firstWeekday +\n (firstWeekday < firstDayOfWeek ? daysInWeek : 0) -\n firstDayOfWeek;\n let prevMonth = true;\n let thisMonth = false;\n let nextMonth = false;\n let position = 0;\n // Formatter for aria labels\n const formatter = new Intl.DateTimeFormat(locale.id, {\n weekday: 'long',\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n });\n // Init counters with previous month's data\n let day = prevMonthComps.numDays - prevMonthDaysToShow + 1;\n let dayFromEnd = prevMonthComps.numDays - day + 1;\n let weekdayOrdinal = Math.floor((day - 1) / daysInWeek + 1);\n let weekdayOrdinalFromEnd = 1;\n let week = prevMonthComps.numWeeks;\n let weekFromEnd = 1;\n let month = prevMonthComps.month;\n let year = prevMonthComps.year;\n // Store todays comps\n const today = new Date();\n const todayDay = today.getDate();\n const todayMonth = today.getMonth() + 1;\n const todayYear = today.getFullYear();\n // Cycle through max weeks in month\n for (let w = 1; w <= weeksInMonth; w++) {\n // Cycle through days in week\n for (\n let i = 1, weekday = firstDayOfWeek;\n i <= daysInWeek;\n i++, weekday += weekday === daysInWeek ? 1 - daysInWeek : 1\n ) {\n // We need to know when to start counting actual month days\n if (prevMonth && weekday === firstWeekday) {\n // Reset counters for current month\n day = 1;\n dayFromEnd = monthComps.numDays;\n weekdayOrdinal = Math.floor((day - 1) / daysInWeek + 1);\n weekdayOrdinalFromEnd = Math.floor((numDays - day) / daysInWeek + 1);\n week = 1;\n weekFromEnd = numWeeks;\n month = monthComps.month;\n year = monthComps.year;\n // ...and flag we're tracking actual month days\n prevMonth = false;\n thisMonth = true;\n }\n const startDate = locale.getDateFromParams(year, month, day, 0, 0, 0, 0);\n const noonDate = locale.getDateFromParams(year, month, day, 12, 0, 0, 0);\n const endDate = locale.getDateFromParams(\n year,\n month,\n day,\n 23,\n 59,\n 59,\n 999,\n );\n const date = startDate;\n const id = `${pad(year, 4)}-${pad(month, 2)}-${pad(day, 2)}`;\n const weekdayPosition = i;\n const weekdayPositionFromEnd = daysInWeek - i;\n const weeknumber = weeknumbers[w - 1];\n const isoWeeknumber = isoWeeknumbers[w - 1];\n const isToday =\n day === todayDay && month === todayMonth && year === todayYear;\n const isFirstDay = thisMonth && day === 1;\n const isLastDay = thisMonth && day === numDays;\n const onTop = w === 1;\n const onBottom = w === numWeeks;\n const onLeft = i === 1;\n const onRight = i === daysInWeek;\n const dayIndex = getDayIndex(year, month, day);\n days.push({\n locale,\n id,\n position: ++position,\n label: day.toString(),\n ariaLabel: formatter.format(new Date(year, month - 1, day)),\n day,\n dayFromEnd,\n weekday,\n weekdayPosition,\n weekdayPositionFromEnd,\n weekdayOrdinal,\n weekdayOrdinalFromEnd,\n week,\n weekFromEnd,\n weekPosition: w,\n weeknumber,\n isoWeeknumber,\n month,\n year,\n date,\n startDate,\n endDate,\n noonDate,\n dayIndex,\n isToday,\n isFirstDay,\n isLastDay,\n isDisabled: !thisMonth,\n isFocusable: !thisMonth,\n isFocused: false,\n inMonth: thisMonth,\n inPrevMonth: prevMonth,\n inNextMonth: nextMonth,\n onTop,\n onBottom,\n onLeft,\n onRight,\n classes: [\n `id-${id}`,\n `day-${day}`,\n `day-from-end-${dayFromEnd}`,\n `weekday-${weekday}`,\n `weekday-position-${weekdayPosition}`,\n `weekday-ordinal-${weekdayOrdinal}`,\n `weekday-ordinal-from-end-${weekdayOrdinalFromEnd}`,\n `week-${week}`,\n `week-from-end-${weekFromEnd}`,\n {\n 'is-today': isToday,\n 'is-first-day': isFirstDay,\n 'is-last-day': isLastDay,\n 'in-month': thisMonth,\n 'in-prev-month': prevMonth,\n 'in-next-month': nextMonth,\n 'on-top': onTop,\n 'on-bottom': onBottom,\n 'on-left': onLeft,\n 'on-right': onRight,\n },\n ],\n });\n // See if we've hit the last day of the month\n if (thisMonth && isLastDay) {\n thisMonth = false;\n nextMonth = true;\n // Reset counters to next month's data\n day = 1;\n dayFromEnd = numDays;\n weekdayOrdinal = 1;\n weekdayOrdinalFromEnd = Math.floor((numDays - day) / daysInWeek + 1);\n week = 1;\n weekFromEnd = nextMonthComps.numWeeks;\n month = nextMonthComps.month;\n year = nextMonthComps.year;\n // Still in the middle of the month (hasn't ended yet)\n } else {\n day++;\n dayFromEnd--;\n weekdayOrdinal = Math.floor((day - 1) / daysInWeek + 1);\n weekdayOrdinalFromEnd = Math.floor((numDays - day) / daysInWeek + 1);\n }\n }\n // Append week days\n week++;\n weekFromEnd--;\n }\n return days;\n}\n\nfunction getWeeks(\n days: CalendarDay[],\n showWeeknumbers: boolean,\n showIsoWeeknumbers: boolean,\n locale: Locale,\n): CalendarWeek[] {\n const result = days.reduce((result: CalendarWeek[], day: CalendarDay, i) => {\n const weekIndex = Math.floor(i / 7);\n let week = result[weekIndex];\n if (!week) {\n week = {\n id: `week-${weekIndex + 1}`,\n title: '',\n week: day.week,\n weekPosition: day.weekPosition,\n weeknumber: day.weeknumber,\n isoWeeknumber: day.isoWeeknumber,\n weeknumberDisplay: showWeeknumbers\n ? day.weeknumber\n : showIsoWeeknumbers\n ? day.isoWeeknumber\n : undefined,\n days: [],\n };\n result[weekIndex] = week;\n }\n week.days.push(day);\n return result;\n }, Array(days.length / daysInWeek));\n result.forEach(week => {\n const fromDay = week.days[0];\n const toDay = week.days[week.days.length - 1];\n if (fromDay.month === toDay.month) {\n week.title = `${locale.formatDate(fromDay.date, 'MMMM YYYY')}`;\n } else if (fromDay.year === toDay.year) {\n week.title = `${locale.formatDate(\n fromDay.date,\n 'MMM',\n )} - ${locale.formatDate(toDay.date, 'MMM YYYY')}`;\n } else {\n week.title = `${locale.formatDate(\n fromDay.date,\n 'MMM YYYY',\n )} - ${locale.formatDate(toDay.date, 'MMM YYYY')}`;\n }\n });\n return result;\n}\n\nfunction getWeekdays(week: CalendarWeek, locale: Locale): CalendarWeekday[] {\n return week.days.map(day => ({\n label: locale.formatDate(day.date, locale.masks.weekdays),\n weekday: day.weekday,\n }));\n}\n\nexport function getPageAddressForDate(\n date: DateSource,\n view: PageView,\n locale: Locale,\n) {\n return pick(\n locale.getDateParts(locale.toDate(date)),\n viewAddressKeys[view],\n ) as PageAddress;\n}\n\nexport function addPages(\n { day, week, month, year }: PageAddress,\n count: number,\n view: PageView,\n locale: Locale,\n): PageAddress {\n if (view === 'daily' && day) {\n const date = new Date(year, month - 1, day);\n const newDate = addDays(date, count);\n return {\n day: newDate.getDate(),\n month: newDate.getMonth() + 1,\n year: newDate.getFullYear(),\n };\n } else if (view === 'weekly' && week) {\n const comps = locale.getMonthParts(month, year);\n const date = comps.firstDayOfMonth;\n const newDate = addDays(date, (week - 1 + count) * 7);\n const parts = locale.getDateParts(newDate);\n return {\n week: parts.week,\n month: parts.month,\n year: parts.year,\n };\n } else {\n const date = new Date(year, month - 1, 1);\n const newDate = addMonths(date, count);\n return {\n month: newDate.getMonth() + 1,\n year: newDate.getFullYear(),\n };\n }\n}\n\nexport function pageIsValid(page: PageAddress | null | undefined) {\n return page != null && page.month != null && page.year != null;\n}\n\nexport function pageIsBeforePage(\n page: PageAddress | null | undefined,\n comparePage: PageAddress | null | undefined,\n) {\n if (!pageIsValid(page) || !pageIsValid(comparePage)) return false;\n page = page as PageAddress;\n comparePage = comparePage as PageAddress;\n if (page.year !== comparePage.year) return page.year < comparePage.year;\n if (page.month && comparePage.month && page.month !== comparePage.month)\n return page.month < comparePage.month;\n if (page.week && comparePage.week && page.week !== comparePage.week) {\n return page.week < comparePage.week;\n }\n if (page.day && comparePage.day && page.day !== comparePage.day) {\n return page.day < comparePage.day;\n }\n return false;\n}\n\nexport function pageIsAfterPage(\n page: PageAddress | null | undefined,\n comparePage: PageAddress | null | undefined,\n) {\n if (!pageIsValid(page) || !pageIsValid(comparePage)) return false;\n page = page as PageAddress;\n comparePage = comparePage as PageAddress;\n if (page.year !== comparePage.year) {\n return page.year > comparePage.year;\n }\n if (page.month && comparePage.month && page.month !== comparePage.month) {\n return page.month > comparePage.month;\n }\n if (page.week && comparePage.week && page.week !== comparePage.week) {\n return page.week > comparePage.week;\n }\n if (page.day && comparePage.day && page.day !== comparePage.day) {\n return page.day > comparePage.day;\n }\n return false;\n}\n\nexport function pageIsBetweenPages(\n page: PageAddress | null | undefined,\n fromPage: PageAddress | null | undefined,\n toPage: PageAddress | null | undefined,\n) {\n return (\n (page || false) &&\n !pageIsBeforePage(page, fromPage) &&\n !pageIsAfterPage(page, toPage)\n );\n}\n\nexport function pageIsEqualToPage(\n aPage: PageAddress | null | undefined,\n bPage: PageAddress | null | undefined,\n) {\n if (!aPage && bPage) return false;\n if (aPage && !bPage) return false;\n if (!aPage && !bPage) return true;\n aPage = aPage as PageAddress;\n bPage = bPage as PageAddress;\n return (\n aPage.year === bPage.year &&\n aPage.month === bPage.month &&\n aPage.week === bPage.week &&\n aPage.day === bPage.day\n );\n}\n\nexport function pageRangeToArray(\n from: PageAddress,\n to: PageAddress,\n view: PageView,\n locale: Locale,\n) {\n if (!pageIsValid(from) || !pageIsValid(to)) return [];\n const result = [];\n while (!pageIsAfterPage(from, to)) {\n result.push(from);\n from = addPages(from, 1, view, locale);\n }\n return result;\n}\n\nexport function getPageKey(config: PageConfig) {\n const { day, week, month, year } = config;\n let id = `${year}-${pad(month, 2)}`;\n if (week) id = `${id}-w${week}`;\n if (day) id = `${id}-${pad(day, 2)}`;\n return id;\n}\n\nexport function getCachedPage(config: PageConfig, locale: Locale): CachedPage {\n const { month, year, showWeeknumbers, showIsoWeeknumbers } = config;\n const date = new Date(year, month - 1, 15);\n const monthComps = locale.getMonthParts(month, year);\n const prevMonthComps = locale.getPrevMonthParts(month, year);\n const nextMonthComps = locale.getNextMonthParts(month, year);\n const days = getDays({ monthComps, prevMonthComps, nextMonthComps }, locale);\n const weeks = getWeeks(days, showWeeknumbers, showIsoWeeknumbers, locale);\n const weekdays = getWeekdays(weeks[0], locale);\n return {\n id: getPageKey(config),\n month,\n year,\n monthTitle: locale.formatDate(date, locale.masks.title),\n shortMonthLabel: locale.formatDate(date, 'MMM'),\n monthLabel: locale.formatDate(date, 'MMMM'),\n shortYearLabel: year.toString().substring(2),\n yearLabel: year.toString(),\n monthComps,\n prevMonthComps,\n nextMonthComps,\n days,\n weeks,\n weekdays,\n };\n}\n\nexport function getPage(config: PageConfig, cachedPage: CachedPage) {\n const { day, week, view, trimWeeks } = config;\n const page: Page = {\n ...cachedPage,\n ...config,\n title: '',\n viewDays: [],\n viewWeeks: [],\n };\n switch (view) {\n case 'daily': {\n let dayObj = page.days.find(d => d.inMonth)!;\n if (day) {\n dayObj = page.days.find(d => d.day === day && d.inMonth) || dayObj;\n } else if (week) {\n dayObj = page.days.find(d => d.week === week && d.inMonth)!;\n }\n const weekObj = page.weeks[dayObj.week - 1];\n page.viewWeeks = [weekObj];\n page.viewDays = [dayObj];\n page.week = dayObj.week;\n page.weekTitle = weekObj.title;\n page.day = dayObj.day;\n page.dayTitle = dayObj.ariaLabel;\n page.title = page.dayTitle;\n break;\n }\n case 'weekly': {\n page.week = week || 1;\n const weekObj = page.weeks[page.week - 1];\n page.viewWeeks = [weekObj];\n page.viewDays = weekObj.days;\n page.weekTitle = weekObj.title;\n page.title = page.weekTitle;\n break;\n }\n default: {\n page.title = page.monthTitle;\n page.viewWeeks = page.weeks.slice(\n 0,\n trimWeeks ? page.monthComps.numWeeks : undefined,\n );\n page.viewDays = page.days;\n break;\n }\n }\n return page;\n}\n","export default class Cache {\n keys: string[] = [];\n store: Record = {};\n\n constructor(\n public size: number,\n public createKey: (...args: any[]) => string,\n public createItem: (...args: any[]) => T,\n ) {}\n\n get(...args: any[]) {\n const key = this.createKey(...args);\n return this.store[key];\n }\n\n getOrSet(...args: any[]): T {\n const key = this.createKey(...args);\n if (this.store[key]) return this.store[key];\n const item = this.createItem(...args);\n if (this.keys.length >= this.size) {\n const removeKey = this.keys.shift();\n if (removeKey != null) {\n delete this.store[removeKey];\n }\n }\n this.keys.push(key);\n this.store[key] = item;\n return item;\n }\n}\n","import { type DateRepeatConfig, DateRepeat } from './repeat';\nimport { type DateParts, type DayParts, addDays, MS_PER_DAY } from './helpers';\nimport { isDate, isArray, isObject } from '../helpers';\nimport type { CalendarDay } from '../page';\nimport Locale from '../locale';\n\ntype DateRangeDate = Date | string | number | null;\n\ninterface DateRangeConfig {\n start: DateRangeDate;\n end: DateRangeDate;\n span: number;\n order: number;\n repeat: Partial;\n}\n\nexport type DateRangeSource =\n | DateRange\n | DateRangeDate\n | [DateRangeDate, DateRangeDate]\n | Partial;\n\nexport interface SimpleDateRange {\n start: Date;\n end: Date;\n}\n\nexport class DateRange {\n order: number;\n locale: Locale;\n start: DateParts | null = null;\n end: DateParts | null = null;\n repeat: DateRepeat | null = null;\n\n static fromMany(ranges: DateRangeSource | DateRangeSource[], locale: Locale) {\n // Assign dates\n return (isArray(ranges) ? ranges : [ranges])\n .filter(d => d)\n .map(d => DateRange.from(d, locale));\n }\n\n static from(source: DateRangeSource, locale: Locale) {\n if (source instanceof DateRange) return source;\n const config: Partial = {\n start: null,\n end: null,\n };\n if (source != null) {\n if (isArray(source)) {\n config.start = source[0] ?? null;\n config.end = source[1] ?? null;\n } else if (isObject(source)) {\n Object.assign(config, source);\n } else {\n config.start = source;\n config.end = source;\n }\n }\n if (config.start != null) config.start = new Date(config.start);\n if (config.end != null) config.end = new Date(config.end);\n return new DateRange(config, locale);\n }\n\n private constructor(config: Partial, locale = new Locale()) {\n this.locale = locale;\n const { start, end, span, order, repeat } = config;\n\n if (isDate(start)) {\n this.start = locale.getDateParts(start);\n }\n\n if (isDate(end)) {\n this.end = locale.getDateParts(end);\n } else if (this.start != null && span) {\n this.end = locale.getDateParts(addDays(this.start.date, span - 1));\n }\n\n this.order = order ?? 0;\n\n if (repeat) {\n this.repeat = new DateRepeat(\n {\n from: this.start?.date,\n ...repeat,\n },\n {\n locale: this.locale,\n },\n );\n }\n }\n\n get opts() {\n const { order, locale } = this;\n return { order, locale };\n }\n\n get hasRepeat() {\n return !!this.repeat;\n }\n\n get isSingleDay() {\n const { start, end } = this;\n return (\n start &&\n end &&\n start.year === end.year &&\n start.month === end.month &&\n start.day === end.day\n );\n }\n\n get isMultiDay() {\n return !this.isSingleDay;\n }\n\n get daySpan() {\n if (this.start == null || this.end == null) {\n if (this.hasRepeat) return 1;\n return Infinity;\n }\n return this.end.dayIndex - this.start.dayIndex;\n }\n\n startsOnDay(dayParts: DayParts) {\n return (\n this.start?.dayIndex === dayParts.dayIndex ||\n !!this.repeat?.passes(dayParts)\n );\n }\n\n intersectsDay(dayIndex: number) {\n return this.intersectsDayRange(dayIndex, dayIndex);\n }\n\n intersectsRange(range: DateRange) {\n return this.intersectsDayRange(\n range.start?.dayIndex ?? -Infinity,\n range.end?.dayIndex ?? Infinity,\n );\n }\n\n intersectsDayRange(startDayIndex: number, endDayIndex: number) {\n if (this.start && this.start.dayIndex > endDayIndex) return false;\n if (this.end && this.end.dayIndex < startDayIndex) return false;\n return true;\n }\n}\n\ninterface DataRange {\n startDay: number;\n startTime: number;\n endDay: number;\n endTime: number;\n}\n\nexport interface RangeData {\n key: string | number;\n order?: number;\n}\n\ninterface DataRanges {\n ranges: DataRange[];\n data: RangeData;\n}\n\nexport interface DateRangeCell extends DataRange {\n data: T;\n onStart: boolean;\n onEnd: boolean;\n startTime: number;\n startDate: Date;\n endTime: number;\n endDate: Date;\n allDay: boolean;\n order: number;\n}\n\nexport class DateRangeContext {\n private records: Record = {};\n\n render(data: RangeData, range: DateRange, days: DayParts[]) {\n let result = null;\n const startDayIndex = days[0].dayIndex;\n const endDayIndex = days[days.length - 1].dayIndex;\n if (range.hasRepeat) {\n days.forEach(day => {\n if (range.startsOnDay(day)) {\n const span = range.daySpan < Infinity ? range.daySpan : 1;\n result = {\n startDay: day.dayIndex,\n startTime: range.start?.time ?? 0,\n endDay: day.dayIndex + span - 1,\n endTime: range.end?.time ?? MS_PER_DAY,\n };\n this.getRangeRecords(data).push(result);\n }\n });\n } else if (range.intersectsDayRange(startDayIndex, endDayIndex)) {\n result = {\n startDay: range.start?.dayIndex ?? -Infinity,\n startTime: range.start?.time ?? -Infinity,\n endDay: range.end?.dayIndex ?? Infinity,\n endTime: range.end?.time ?? Infinity,\n };\n this.getRangeRecords(data).push(result);\n }\n return result;\n }\n\n private getRangeRecords(data: RangeData) {\n let record = this.records[data.key];\n if (!record) {\n record = {\n ranges: [],\n data,\n };\n this.records[data.key] = record;\n }\n return record.ranges;\n }\n\n getCell(key: string | number, day: CalendarDay) {\n const cells = this.getCells(day);\n const result = cells.find(cell => cell.data.key === key);\n return result;\n }\n\n cellExists(key: string | number, dayIndex: number) {\n const records = this.records[key];\n if (records == null) return false;\n return records.ranges.some(\n r => r.startDay <= dayIndex && r.endDay >= dayIndex,\n );\n }\n\n getCells(day: CalendarDay) {\n const records = Object.values(this.records);\n const result: DateRangeCell[] = [];\n const { dayIndex } = day;\n records.forEach(({ data, ranges }) => {\n ranges\n .filter(r => r.startDay <= dayIndex && r.endDay >= dayIndex)\n .forEach(range => {\n const onStart = dayIndex === range.startDay;\n const onEnd = dayIndex === range.endDay;\n const startTime = onStart ? range.startTime : 0;\n const startDate = new Date(day.startDate.getTime() + startTime);\n const endTime = onEnd ? range.endTime : MS_PER_DAY;\n const endDate = new Date(day.endDate.getTime() + endTime);\n const allDay = startTime === 0 && endTime === MS_PER_DAY;\n const order = data.order || 0;\n result.push({\n ...range,\n data,\n onStart,\n onEnd,\n startTime,\n startDate,\n endTime,\n endDate,\n allDay,\n order,\n });\n });\n });\n result.sort((a, b) => a.order - b.order);\n return result;\n }\n}\n","import {\n type PageConfig,\n type CachedPage,\n getPageKey,\n getCachedPage,\n getPage,\n} from './page';\nimport {\n type DateSource,\n type DateOptions,\n type DayOfWeek,\n type MonthParts,\n type MonthInYear,\n type SimpleDateParts,\n type TimeNames,\n DatePatchKeys,\n applyRulesForDateParts,\n daysInWeek,\n formatDate,\n parseDate,\n getDateParts,\n getDateFromParts,\n getDayNames,\n getMonthNames,\n getMonthParts,\n getMonthPartsKey,\n getHourDates,\n getRelativeTimeNames,\n isDateParts,\n} from './date/helpers';\nimport Cache from './cache';\nimport { type DateRangeSource, DateRange } from './date/range';\nimport { defaultLocales } from './defaults';\nimport {\n isString,\n isNumber,\n isDate,\n isObject,\n has,\n pick,\n clamp,\n defaultsDeep,\n} from './helpers';\n\nexport interface LocaleConfig {\n id: string;\n firstDayOfWeek: number;\n masks: any;\n monthCacheSize: number;\n pageCacheSize: number;\n}\n\nconst DEFAULT_MONTH_CACHE_SIZE = 12;\nconst DEFAULT_PAGE_CACHE_SIZE = 5;\n\nexport function resolveConfig(\n config: string | Partial | undefined,\n locales: any,\n) {\n // Get the detected locale string\n const detLocale = new Intl.DateTimeFormat().resolvedOptions().locale;\n // Resolve the locale id\n let id;\n if (isString(config)) {\n id = config;\n } else if (has(config, 'id')) {\n id = config!.id;\n }\n id = (id || detLocale).toLowerCase();\n const localeKeys = Object.keys(locales);\n const validKey = (k: string) => localeKeys.find(lk => lk.toLowerCase() === k);\n id = validKey(id) || validKey(id.substring(0, 2)) || detLocale;\n // Add fallback and spread default locale to prevent repetitive update loops\n const defLocale: LocaleConfig = {\n ...locales['en-IE'],\n ...locales[id],\n id,\n monthCacheSize: DEFAULT_MONTH_CACHE_SIZE,\n pageCacheSize: DEFAULT_PAGE_CACHE_SIZE,\n };\n // Assign or merge defaults with provided config\n const result: LocaleConfig = isObject(config)\n ? defaultsDeep(config, defLocale)\n : defLocale;\n // Return resolved config\n return result;\n}\n\nexport default class Locale {\n id: any;\n daysInWeek: number;\n firstDayOfWeek: DayOfWeek;\n masks: any;\n timezone: string | undefined;\n hourLabels: string[];\n dayNames: string[];\n dayNamesShort: string[];\n dayNamesShorter: string[];\n dayNamesNarrow: string[];\n monthNames: string[];\n monthNamesShort: string[];\n relativeTimeNames: TimeNames;\n amPm: [string, string] = ['am', 'pm'];\n monthCache: Cache;\n pageCache: Cache;\n\n constructor(\n config: Partial | string | undefined = undefined,\n timezone?: string,\n ) {\n const { id, firstDayOfWeek, masks, monthCacheSize, pageCacheSize } =\n resolveConfig(config, defaultLocales.value);\n this.monthCache = new Cache(\n monthCacheSize,\n getMonthPartsKey,\n getMonthParts,\n );\n this.pageCache = new Cache(pageCacheSize, getPageKey, getCachedPage);\n this.id = id;\n this.daysInWeek = daysInWeek;\n this.firstDayOfWeek = clamp(firstDayOfWeek, 1, daysInWeek) as DayOfWeek;\n this.masks = masks;\n this.timezone = timezone || undefined;\n this.hourLabels = this.getHourLabels();\n this.dayNames = getDayNames('long', this.id);\n this.dayNamesShort = getDayNames('short', this.id);\n this.dayNamesShorter = this.dayNamesShort.map(s => s.substring(0, 2));\n this.dayNamesNarrow = getDayNames('narrow', this.id);\n this.monthNames = getMonthNames('long', this.id);\n this.monthNamesShort = getMonthNames('short', this.id);\n this.relativeTimeNames = getRelativeTimeNames(this.id);\n }\n\n formatDate(date: Date, masks: string | string[]) {\n return formatDate(date, masks, this);\n }\n\n parseDate(dateString: string, mask: string | string[]) {\n return parseDate(dateString, mask, this);\n }\n\n toDate(\n d: DateSource | Partial,\n opts: Partial = {},\n ): Date {\n const nullDate = new Date(NaN);\n let result = nullDate;\n const { fillDate, mask, patch, rules } = opts;\n if (isNumber(d)) {\n opts.type = 'number';\n result = new Date(+d);\n } else if (isString(d)) {\n opts.type = 'string';\n result = d ? parseDate(d, mask || 'iso', this) : nullDate;\n } else if (isDate(d)) {\n opts.type = 'date';\n result = new Date(d.getTime());\n } else if (isDateParts(d)) {\n opts.type = 'object';\n result = this.getDateFromParts(d);\n }\n // Patch parts or apply rules if needed\n if (result && (patch || rules)) {\n let parts = this.getDateParts(result);\n // Patch date parts\n if (patch && fillDate != null) {\n const fillParts = this.getDateParts(this.toDate(fillDate));\n parts = this.getDateParts(\n this.toDate({ ...fillParts, ...pick(parts, DatePatchKeys[patch]) }),\n );\n }\n // Apply date part rules\n if (rules) {\n parts = applyRulesForDateParts(parts, rules);\n }\n result = this.getDateFromParts(parts);\n }\n return result || nullDate;\n }\n\n toDateOrNull(\n d: DateSource | Partial,\n opts: Partial = {},\n ): Date | null {\n const dte = this.toDate(d, opts);\n return isNaN(dte.getTime()) ? null : dte;\n }\n\n fromDate(date: Date, { type, mask }: Partial = {}) {\n switch (type) {\n case 'number':\n return date ? date.getTime() : NaN;\n case 'string':\n return date ? this.formatDate(date, mask || 'iso') : '';\n case 'object':\n return date ? this.getDateParts(date) : null;\n default:\n return date ? new Date(date) : null;\n }\n }\n\n range(source: DateRangeSource) {\n return DateRange.from(source, this);\n }\n\n ranges(ranges: DateRangeSource | DateRangeSource[]) {\n return DateRange.fromMany(ranges, this);\n }\n\n getDateParts(date: Date) {\n return getDateParts(date, this);\n }\n\n getDateFromParts(parts: Partial) {\n return getDateFromParts(parts, this.timezone);\n }\n\n getDateFromParams(\n year: number,\n month: number,\n day: number,\n hours: number,\n minutes: number,\n seconds: number,\n milliseconds: number,\n ) {\n return this.getDateFromParts({\n year,\n month,\n day,\n hours,\n minutes,\n seconds,\n milliseconds,\n });\n }\n\n getPage(config: PageConfig) {\n const cachedPage = this.pageCache.getOrSet(config, this);\n return getPage(config, cachedPage);\n }\n\n getMonthParts(month: number, year: number) {\n const { firstDayOfWeek } = this;\n return this.monthCache.getOrSet(month, year, firstDayOfWeek);\n }\n\n getThisMonthParts() {\n const date = new Date();\n return this.getMonthParts(\n (date.getMonth() + 1),\n date.getFullYear(),\n );\n }\n\n getPrevMonthParts(month: number, year: number) {\n if (month === 1) return this.getMonthParts(12, year - 1);\n return this.getMonthParts(month - 1, year);\n }\n\n getNextMonthParts(month: number, year: number) {\n if (month === 12) return this.getMonthParts(1, year + 1);\n return this.getMonthParts(month + 1, year);\n }\n\n getHourLabels() {\n return getHourDates().map(d => {\n return this.formatDate(d, this.masks.hours);\n });\n }\n\n getDayId(date: Date) {\n return this.formatDate(date, 'YYYY-MM-DD');\n }\n}\n","import type { Placement } from '@popperjs/core';\nimport { type DateRangeSource, DateRange } from './date/range';\nimport { arrayHasItems, createGuid } from './helpers';\nimport { addDays } from './date/helpers';\nimport type { PopoverVisibility } from './popovers';\nimport { Theme } from './theme';\nimport Locale from './locale';\n\nimport {\n ContentConfig,\n HighlightConfig,\n DotConfig,\n BarConfig,\n Profile,\n Content,\n Highlight,\n Dot,\n Bar,\n} from './glyph';\n\nexport type PopoverConfig = Partial<{\n label: string;\n visibility: PopoverVisibility;\n placement: Placement;\n hideIndicator: boolean;\n isInteractive: boolean;\n}>;\n\nexport type EventConfig = Partial<{\n label: string;\n}>;\n\nexport interface AttributeConfig {\n key: string | number;\n hashcode: string;\n content: ContentConfig;\n highlight: HighlightConfig;\n dot: DotConfig;\n bar: BarConfig;\n popover: PopoverConfig;\n event: EventConfig;\n dates: DateRangeSource[];\n customData: any;\n order: number;\n pinPage: boolean;\n}\n\nexport class Attribute {\n key: string | number = '';\n hashcode = '';\n highlight: Profile | null = null;\n content: Profile | null = null;\n dot: Profile | null = null;\n bar: Profile | null = null;\n event: EventConfig | null = null;\n popover: PopoverConfig | null = null;\n customData: any = null;\n ranges: DateRange[];\n hasRanges = false;\n order = 0;\n pinPage = false;\n maxRepeatSpan = 0;\n locale: Locale;\n\n constructor(config: Partial, theme: Theme, locale: Locale) {\n const { dates } = Object.assign(\n this,\n { hashcode: '', order: 0, pinPage: false },\n config,\n );\n if (!this.key) this.key = createGuid();\n this.locale = locale;\n // Normalize attribute\n theme.normalizeGlyphs(this);\n // Assign dates\n this.ranges = locale.ranges(dates ?? []);\n this.hasRanges = !!arrayHasItems(this.ranges);\n this.maxRepeatSpan = this.ranges\n .filter(r => r.hasRepeat)\n .map(r => r.daySpan)\n .reduce((res, curr) => Math.max(res, curr), 0);\n }\n\n intersectsRange({ start, end }: DateRange) {\n if (start == null || end == null) return false;\n const simpleRanges = this.ranges.filter(r => !r.hasRepeat);\n for (const range of simpleRanges) {\n if (range.intersectsDayRange(start.dayIndex, end.dayIndex)) {\n return true;\n }\n }\n const repeatRanges = this.ranges.filter(r => r.hasRepeat);\n if (!repeatRanges.length) return false;\n let day = start;\n if (this.maxRepeatSpan > 1) {\n day = this.locale.getDateParts(addDays(day.date, -this.maxRepeatSpan));\n }\n while (day.dayIndex <= end.dayIndex) {\n for (const range of repeatRanges) {\n if (range.startsOnDay(day)) return true;\n }\n day = this.locale.getDateParts(addDays(day.date, 1));\n }\n return false;\n }\n}\n","import {\n type PropType,\n type ExtractPropTypes,\n computed,\n provide,\n inject,\n} from 'vue';\nimport { type DarkModeClassConfig, useDarkMode } from 'vue-screen-utils';\nimport { Theme } from '../utils/theme';\nimport { getDefault } from '../utils/defaults';\nimport { type LocaleConfig, default as Locale } from '../utils/locale';\nimport { Attribute } from '../utils/attribute';\nimport { isObject } from '../utils/helpers';\nimport { type DayOfWeek, addDays } from '../utils/date/helpers';\n\nconst contextKey = '__vc_base_context__';\n\nexport const propsDef = {\n color: {\n type: String,\n default: () => getDefault('color'),\n },\n isDark: {\n type: [Boolean, String, Object] as PropType<\n boolean | 'system' | DarkModeClassConfig\n >,\n default: () => getDefault('isDark'),\n },\n firstDayOfWeek: Number as PropType,\n masks: Object,\n locale: [String, Object] as PropType | Locale>,\n timezone: String,\n minDate: null,\n maxDate: null,\n disabledDates: null,\n};\n\nexport type BaseProps = Readonly>;\n\nexport type BaseContext = ReturnType;\n\nexport function createBase(props: BaseProps) {\n // #region Computed\n\n const color = computed(() => props.color ?? '');\n const isDark = computed(() => props.isDark ?? false);\n const { displayMode } = useDarkMode(isDark);\n const theme = computed(() => new Theme(color.value));\n\n const locale = computed(() => {\n // Return the locale prop if it is an instance of the Locale class\n if (props.locale instanceof Locale) return props.locale;\n // Build up a base config from component props\n const config = (\n isObject(props.locale)\n ? props.locale\n : {\n id: props.locale,\n firstDayOfWeek: props.firstDayOfWeek,\n masks: props.masks,\n }\n ) as Partial;\n // Return new locale\n return new Locale(config, props.timezone);\n });\n\n const masks = computed(() => locale.value.masks);\n\n const disabledDates = computed(() => {\n const dates: any[] = props.disabledDates ?? [];\n // Add disabled range for min date\n if (props.minDate != null) {\n dates.push({\n start: null,\n end: addDays(locale.value.toDate(props.minDate), -1),\n });\n }\n // Add disabled range for max date\n if (props.maxDate != null) {\n dates.push({\n start: addDays(locale.value.toDate(props.maxDate), 1),\n end: null,\n });\n }\n return locale.value.ranges(dates);\n });\n\n const disabledAttribute = computed(() => {\n return new Attribute(\n {\n key: 'disabled',\n dates: disabledDates.value,\n order: 100,\n },\n theme.value,\n locale.value,\n );\n });\n\n // #endregion Computed\n\n const context = {\n color,\n isDark,\n displayMode,\n theme,\n locale,\n masks,\n disabledDates,\n disabledAttribute,\n };\n provide(contextKey, context);\n return context;\n}\n\nexport function useBase() {\n const context = inject(contextKey);\n if (context) return context;\n throw new Error(\n 'Base context missing. Please verify this component is nested within a valid context provider.',\n );\n}\n\nexport function useOrCreateBase(props: BaseProps) {\n return inject(contextKey, createBase(props));\n}\n","import { on, off, isFunction } from './helpers';\nimport type { CustomElement } from './helpers';\n\ninterface SwipeHandlerOptions {\n maxSwipeTime: number;\n minHorizontalSwipeDistance: number;\n maxVerticalSwipeDistance: number;\n}\n\nexport const addHorizontalSwipeHandler = (\n element: CustomElement,\n handler: Function,\n {\n maxSwipeTime,\n minHorizontalSwipeDistance,\n maxVerticalSwipeDistance,\n }: SwipeHandlerOptions,\n) => {\n if (!element || !element.addEventListener || !isFunction(handler)) {\n return null;\n }\n // State variables\n let startX = 0;\n let startY = 0;\n let startTime: number | null = null;\n let isSwiping = false;\n // Touch start handler\n function touchStart(e: TouchEvent) {\n const t = e.changedTouches[0];\n startX = t.screenX;\n startY = t.screenY;\n startTime = new Date().getTime();\n isSwiping = true;\n }\n // Touch end handler\n function touchEnd(e: TouchEvent) {\n if (!isSwiping || !startTime) return;\n isSwiping = false;\n const t = e.changedTouches[0];\n const deltaX = t.screenX - startX;\n const deltaY = t.screenY - startY;\n const deltaTime = new Date().getTime() - startTime;\n if (deltaTime < maxSwipeTime) {\n if (\n Math.abs(deltaX) >= minHorizontalSwipeDistance &&\n Math.abs(deltaY) <= maxVerticalSwipeDistance\n ) {\n const arg = { toLeft: false, toRight: false };\n if (deltaX < 0) {\n // Swipe to the left\n arg.toLeft = true;\n } else {\n // Swipe to the right\n arg.toRight = true;\n }\n handler(arg);\n }\n }\n }\n // Add event handlers\n on(element, 'touchstart', touchStart, { passive: true });\n // on(element, 'touchmove', touchmove);\n on(element, 'touchend', touchEnd, { passive: true });\n // Return function that removes event handlers\n return () => {\n off(element, 'touchstart', touchStart);\n // off(element, 'touchmove', touchmove);\n off(element, 'touchend', touchEnd);\n };\n};\n","const watchSkippers: Partial> = {};\n\nexport const skipWatcher = (watcher: string, durationMs = 10) => {\n watchSkippers[watcher] = Date.now() + durationMs;\n};\n\nexport const unskipWatcher = (watcher: string) => {\n delete watchSkippers[watcher];\n};\n\nexport const handleWatcher = (watcher: string, handler: Function) => {\n if (watcher in watchSkippers) {\n const dateTime = watchSkippers[watcher] as number;\n if (Date.now() < dateTime) return;\n delete watchSkippers[watcher];\n }\n handler();\n};\n","import {\n type PropType,\n type ExtractPropTypes,\n computed,\n ref,\n provide,\n onMounted,\n onUnmounted,\n watch,\n inject,\n watchEffect,\n} from 'vue';\nimport { propsDef as basePropsDef, useOrCreateBase } from './base';\nimport Popover from '../Popover/Popover.vue';\nimport { type AttributeConfig, Attribute } from '../utils/attribute';\nimport {\n type DateSource,\n addDays,\n addMonths,\n addYears,\n} from '../utils/date/helpers';\nimport { type DateRangeCell, DateRangeContext } from '../utils/date/range';\nimport { getDefault } from '../utils/defaults';\nimport {\n type CustomElement,\n createGuid,\n isBoolean,\n has,\n head,\n last,\n arrayHasItems,\n} from '../utils/helpers';\nimport {\n type CalendarDay,\n type CalendarWeek,\n type Page,\n type PageAddress,\n type TitlePosition,\n pageRangeToArray,\n pageIsValid,\n pageIsEqualToPage,\n pageIsBeforePage,\n pageIsAfterPage,\n pageIsBetweenPages,\n getPageAddressForDate,\n addPages as _addPages,\n} from '../utils/page';\nimport type { PopoverVisibility } from '../utils/popovers';\nimport { addHorizontalSwipeHandler } from '../utils/touch';\nimport { skipWatcher, handleWatcher } from '../utils/watchers';\n\nexport type CalendarView = 'daily' | 'weekly' | 'monthly';\n\nexport type MoveTarget = DateSource | PageAddress;\n\nexport type MoveTransition = 'none' | 'fade' | 'slide-v' | 'slide-h';\n\nexport interface MoveOptions {\n position: number;\n view: CalendarView;\n transition: MoveTransition;\n force: boolean;\n fromPage: PageAddress;\n toPage: PageAddress;\n}\n\nexport interface RefreshOptions {\n page: PageAddress;\n position: number;\n force: boolean;\n transition: MoveTransition;\n}\n\nexport type DayCells = Record<\n number,\n { day: CalendarDay; cells: DateRangeCell[] }\n>;\n\nexport type CalendarProps = Readonly>;\n\ntype IContainer = Pick & CustomElement;\n\nexport type CalendarContext = ReturnType;\n\nexport const propsDef = {\n ...basePropsDef,\n view: {\n type: String as PropType,\n default: 'monthly',\n validator(value: string) {\n return ['daily', 'weekly', 'monthly'].includes(value);\n },\n },\n rows: {\n type: Number,\n default: 1,\n },\n columns: {\n type: Number,\n default: 1,\n },\n step: Number,\n titlePosition: {\n type: String as PropType,\n default: () => getDefault('titlePosition') as TitlePosition,\n },\n navVisibility: {\n type: String as PropType,\n default: () => getDefault('navVisibility') as PopoverVisibility,\n },\n showWeeknumbers: [Boolean, String],\n showIsoWeeknumbers: [Boolean, String],\n expanded: Boolean,\n borderless: Boolean,\n transparent: Boolean,\n initialPage: Object as PropType,\n initialPagePosition: { type: Number, default: 1 },\n minPage: Object as PropType,\n maxPage: Object as PropType,\n transition: String as PropType,\n attributes: Array as PropType>,\n trimWeeks: Boolean,\n disablePageSwipe: Boolean,\n};\n\nexport const emitsDef = [\n 'dayclick',\n 'daymouseenter',\n 'daymouseleave',\n 'dayfocusin',\n 'dayfocusout',\n 'daykeydown',\n 'weeknumberclick',\n 'transition-start',\n 'transition-end',\n 'did-move',\n 'update:view',\n 'update:pages',\n];\n\nconst contextKey = '__vc_calendar_context__';\n\nexport function createCalendar(props: CalendarProps, { emit, slots }: any) {\n // Reactive refs\n const containerRef = ref(null);\n const navPopoverRef = ref(null);\n const focusedDay = ref(null);\n const focusableDay = ref(new Date().getDate());\n const inTransition = ref(false);\n const navPopoverId = ref(createGuid());\n const dayPopoverId = ref(createGuid());\n const _view = ref(props.view);\n const _pages = ref([]);\n const transitionName = ref('');\n\n // Non-reactive util vars\n let transitionPromise: any = null;\n let removeHandlers: any = null;\n\n // #region Computed\n\n const {\n theme,\n color,\n displayMode,\n locale,\n masks,\n disabledAttribute,\n disabledDates,\n } = useOrCreateBase(props);\n\n const count = computed(() => props.rows * props.columns);\n\n const step = computed(() => props.step || count.value);\n\n const firstPage = computed(() => head(_pages.value) ?? null);\n\n const lastPage = computed(() => last(_pages.value) ?? null);\n\n const minPage = computed(\n () =>\n props.minPage || (props.minDate ? getDateAddress(props.minDate) : null),\n );\n\n const maxPage = computed(\n () =>\n props.maxPage || (props.maxDate ? getDateAddress(props.maxDate) : null),\n );\n\n const navVisibility = computed(() => props.navVisibility);\n\n const showWeeknumbers = computed(() => !!props.showWeeknumbers);\n\n const showIsoWeeknumbers = computed(() => !!props.showIsoWeeknumbers);\n\n const isMonthly = computed(() => _view.value === 'monthly');\n const isWeekly = computed(() => _view.value === 'weekly');\n const isDaily = computed(() => _view.value === 'daily');\n\n // #endregion Computed\n\n // #region Methods\n\n const onTransitionBeforeEnter = () => {\n inTransition.value = true;\n emit('transition-start');\n };\n\n const onTransitionAfterEnter = () => {\n inTransition.value = false;\n emit('transition-end');\n if (transitionPromise) {\n transitionPromise.resolve(true);\n transitionPromise = null;\n }\n };\n\n const addPages = (\n address: PageAddress,\n count: number,\n view = _view.value,\n ) => {\n return _addPages(address, count, view, locale.value);\n };\n\n const getDateAddress = (date: DateSource) => {\n return getPageAddressForDate(date, _view.value, locale.value);\n };\n\n const refreshDisabled = (day: CalendarDay) => {\n if (!disabledAttribute.value || !attributeContext.value) return;\n day.isDisabled = attributeContext.value.cellExists(\n disabledAttribute.value.key,\n day.dayIndex,\n );\n };\n\n const refreshFocusable = (day: CalendarDay) => {\n day.isFocusable = day.inMonth && day.day === focusableDay.value;\n };\n\n const forDays = (pages: Page[], fn: (day: CalendarDay) => boolean | void) => {\n for (const page of pages) {\n for (const day of page.days) {\n if (fn(day) === false) return;\n }\n }\n };\n\n const days = computed(() =>\n _pages.value.reduce((result: CalendarDay[], page: Page) => {\n result.push(...page.viewDays);\n return result;\n }, []),\n );\n\n const attributes = computed(() => {\n const result: Attribute[] = [];\n (props.attributes || []).forEach((attr, i) => {\n if (!attr || !attr.dates) return;\n const key = has(attr, 'key') ? attr.key : i;\n const order = attr.order || 0;\n result.push(\n new Attribute(\n {\n ...attr,\n key,\n order,\n },\n theme.value,\n locale.value,\n ),\n );\n });\n if (disabledAttribute.value) {\n result.push(disabledAttribute.value);\n }\n return result;\n });\n\n const hasAttributes = computed(() => arrayHasItems(attributes.value));\n\n const attributeContext = computed(() => {\n const ctx = new DateRangeContext();\n attributes.value.forEach(attr => {\n attr.ranges.forEach(range => {\n ctx.render(attr, range, days.value);\n });\n });\n return ctx;\n });\n\n const dayCells = computed(() => {\n return days.value.reduce((result, day) => {\n result[day.dayIndex] = { day, cells: [] };\n result[day.dayIndex].cells.push(...attributeContext.value.getCells(day));\n return result;\n }, {} as DayCells);\n });\n\n const getWeeknumberPosition = (column: number, columnFromEnd: number) => {\n const showWeeknumbers = props.showWeeknumbers || props.showIsoWeeknumbers;\n if (showWeeknumbers == null) return '';\n if (isBoolean(showWeeknumbers)) {\n return showWeeknumbers ? 'left' : '';\n }\n if (showWeeknumbers.startsWith('right')) {\n return columnFromEnd > 1 ? 'right' : showWeeknumbers;\n }\n return column > 1 ? 'left' : showWeeknumbers;\n };\n\n const getPageForAttributes = () => {\n if (!hasAttributes.value) return null;\n const attr =\n attributes.value.find(attr => attr.pinPage) || attributes.value[0];\n if (!attr || !attr.hasRanges) return null;\n const [range] = attr.ranges;\n const date = range.start?.date || range.end?.date;\n return date ? getDateAddress(date) : null;\n };\n\n const getDefaultInitialPage = () => {\n // 1. Try existing first page\n if (pageIsValid(firstPage.value)) return firstPage.value as PageAddress;\n // 2. Try the first attribute\n const page = getPageForAttributes();\n if (pageIsValid(page)) return page as PageAddress;\n // 3. Use today's page\n return getDateAddress(new Date());\n };\n\n const getTargetPageRange = (\n page: PageAddress,\n opts: Partial = {},\n ) => {\n const { view = _view.value, position = 1, force } = opts;\n const pagesToAdd = position > 0 ? 1 - position : -(count.value + position);\n let fromPage = addPages(page, pagesToAdd, view);\n let toPage = addPages(fromPage!, count.value - 1, view);\n\n // Adjust range for min/max if not forced\n if (!force) {\n if (pageIsBeforePage(fromPage, minPage.value)) {\n fromPage = minPage.value!;\n } else if (pageIsAfterPage(toPage, maxPage.value)) {\n fromPage = addPages(maxPage.value!, 1 - count.value);\n }\n toPage = addPages(fromPage!, count.value - 1);\n }\n return { fromPage, toPage };\n };\n\n const getPageTransition = (\n oldPage: Page,\n newPage: Page,\n defaultTransition = '',\n ) => {\n if (defaultTransition === 'none' || defaultTransition === 'fade')\n return defaultTransition;\n // Moving to a different view\n if (oldPage?.view !== newPage?.view) return 'fade';\n // Moving to a previous page\n const moveNext = pageIsAfterPage(newPage, oldPage);\n const movePrev = pageIsBeforePage(newPage, oldPage);\n if (!moveNext && !movePrev) {\n return 'fade';\n }\n // Vertical slide\n if (defaultTransition === 'slide-v') {\n return movePrev ? 'slide-down' : 'slide-up';\n }\n // Horizontal slide\n return movePrev ? 'slide-right' : 'slide-left';\n };\n\n const refreshPages = (opts: Partial = {}) => {\n return new Promise((resolve, reject) => {\n const { position = 1, force = false, transition } = opts;\n const page = pageIsValid(opts.page)\n ? opts.page!\n : getDefaultInitialPage();\n const { fromPage } = getTargetPageRange(page, {\n position,\n force,\n });\n // Create the new pages\n const pages: Page[] = [];\n for (let i = 0; i < count.value; i++) {\n const newPage = addPages(fromPage!, i);\n const position = i + 1;\n const row = Math.ceil(position / props.columns);\n const rowFromEnd = props.rows - row + 1;\n const column = position % props.columns || props.columns;\n const columnFromEnd = props.columns - column + 1;\n const weeknumberPosition = getWeeknumberPosition(column, columnFromEnd);\n pages.push(\n locale.value.getPage({\n ...newPage,\n view: _view.value,\n titlePosition: props.titlePosition,\n trimWeeks: props.trimWeeks,\n position,\n row,\n rowFromEnd,\n column,\n columnFromEnd,\n showWeeknumbers: showWeeknumbers.value,\n showIsoWeeknumbers: showIsoWeeknumbers.value,\n weeknumberPosition,\n }),\n );\n }\n // Assign the transition\n transitionName.value = getPageTransition(\n _pages.value[0],\n pages[0],\n transition,\n );\n // Assign the new pages\n _pages.value = pages;\n // Cache or resolve transition promise\n if (transitionName.value && transitionName.value !== 'none') {\n transitionPromise = {\n resolve,\n reject,\n };\n } else {\n resolve(true);\n }\n });\n };\n\n const targetBy = (pages: number) => {\n const fromPage = firstPage.value ?? getDateAddress(new Date());\n return addPages(fromPage, pages);\n };\n\n const canMove = (target: MoveTarget, opts: Partial = {}) => {\n const page = pageIsValid(target as PageAddress)\n ? (target as Page)\n : getDateAddress(target as DateSource);\n // Calculate new page range without adjusting to min/max\n Object.assign(\n opts,\n getTargetPageRange(page, {\n ...opts,\n force: true,\n }),\n );\n // Verify we can move to any pages in the target range\n const pagesInRange = pageRangeToArray(\n opts.fromPage!,\n opts.toPage!,\n _view.value,\n locale.value,\n ).map(p => pageIsBetweenPages(p, minPage.value, maxPage.value));\n return pagesInRange.every(val => val);\n };\n\n const canMoveBy = (pages: number, opts: Partial = {}) => {\n return canMove(targetBy(pages), opts);\n };\n\n const canMovePrev = computed(() => canMoveBy(-step.value));\n\n const canMoveNext = computed(() => canMoveBy(step.value));\n\n const move = async (target: MoveTarget, opts: Partial = {}) => {\n // Return if we can't move to this page\n if (!opts.force && !canMove(target, opts)) return false;\n // Move to new `fromPage` if it's different from the current one\n if (opts.fromPage && !pageIsEqualToPage(opts.fromPage, firstPage.value)) {\n // Hide nav popover for good measure\n if (navPopoverRef.value) {\n navPopoverRef.value.hide({ hideDelay: 0 });\n }\n // Quietly change view if needed\n if (opts.view) {\n skipWatcher('view', 10);\n _view.value = opts.view;\n }\n await refreshPages({\n ...opts,\n page: opts.fromPage,\n position: 1,\n force: true,\n });\n emit('did-move', _pages.value);\n }\n return true;\n };\n\n const moveBy = (pages: number, opts: Partial = {}) => {\n return move(targetBy(pages), opts);\n };\n\n const movePrev = () => {\n return moveBy(-step.value);\n };\n\n const moveNext = () => {\n return moveBy(step.value);\n };\n\n const tryFocusDate = (date: Date) => {\n const inMonth = isMonthly.value ? '.in-month' : '';\n const daySelector = `.id-${locale.value.getDayId(date)}${inMonth}`;\n const selector = `${daySelector}.vc-focusable, ${daySelector} .vc-focusable`;\n const el = containerRef.value;\n if (el) {\n const focusableEl = el.querySelector(selector) as HTMLElement;\n if (focusableEl) {\n focusableEl.focus();\n return true;\n }\n }\n return false;\n };\n\n const focusDate = async (date: Date, opts: Partial = {}) => {\n if (tryFocusDate(date)) return true;\n // Move to the given date\n await move(date, opts);\n return tryFocusDate(date);\n };\n\n const onDayClick = (day: CalendarDay, event: MouseEvent) => {\n focusableDay.value = day.day;\n emit('dayclick', day, event);\n };\n\n const onDayMouseenter = (day: CalendarDay, event: MouseEvent) => {\n emit('daymouseenter', day, event);\n };\n\n const onDayMouseleave = (day: CalendarDay, event: MouseEvent) => {\n emit('daymouseleave', day, event);\n };\n\n const onDayFocusin = (day: CalendarDay, event: FocusEvent | null) => {\n focusableDay.value = day.day;\n focusedDay.value = day;\n day.isFocused = true;\n emit('dayfocusin', day, event);\n };\n\n const onDayFocusout = (day: CalendarDay, event: FocusEvent) => {\n focusedDay.value = null;\n day.isFocused = false;\n emit('dayfocusout', day, event);\n };\n\n const onDayKeydown = (day: CalendarDay, event: KeyboardEvent) => {\n emit('daykeydown', day, event);\n const date = day.noonDate;\n let newDate = null;\n switch (event.key) {\n case 'ArrowLeft': {\n // Move to previous day\n newDate = addDays(date, -1);\n break;\n }\n case 'ArrowRight': {\n // Move to next day\n newDate = addDays(date, 1);\n break;\n }\n case 'ArrowUp': {\n // Move to previous week\n newDate = addDays(date, -7);\n break;\n }\n case 'ArrowDown': {\n // Move to next week\n newDate = addDays(date, 7);\n break;\n }\n case 'Home': {\n // Move to first weekday position\n newDate = addDays(date, -day.weekdayPosition + 1);\n break;\n }\n case 'End': {\n // Move to last weekday position\n newDate = addDays(date, day.weekdayPositionFromEnd);\n break;\n }\n case 'PageUp': {\n if (event.altKey) {\n // Move to previous year w/ Alt/Option key\n newDate = addYears(date, -1);\n } else {\n // Move to previous month\n newDate = addMonths(date, -1);\n }\n break;\n }\n case 'PageDown': {\n if (event.altKey) {\n // Move to next year w/ Alt/Option key\n newDate = addYears(date, 1);\n } else {\n // Move to next month\n newDate = addMonths(date, 1);\n }\n break;\n }\n }\n if (newDate) {\n event.preventDefault();\n focusDate(newDate).catch();\n }\n };\n\n const onKeydown = (event: KeyboardEvent) => {\n const day = focusedDay.value;\n if (day != null) {\n onDayKeydown(day, event);\n }\n };\n\n const onWeeknumberClick = (week: CalendarWeek, event: MouseEvent) => {\n emit('weeknumberclick', week, event);\n };\n\n // #endregion Methods\n\n // #region Lifecycle methods\n\n // Created\n refreshPages({\n page: props.initialPage,\n position: props.initialPagePosition,\n });\n\n // Mounted\n onMounted(() => {\n if (!props.disablePageSwipe && containerRef.value) {\n // Add swipe handler to move to next and previous pages\n removeHandlers = addHorizontalSwipeHandler(\n containerRef.value,\n ({ toLeft = false, toRight = false }) => {\n if (toLeft) {\n moveNext();\n } else if (toRight) {\n movePrev();\n }\n },\n getDefault('touch'),\n );\n }\n });\n\n // Unmounted\n onUnmounted(() => {\n _pages.value = [];\n if (removeHandlers) removeHandlers();\n });\n\n // #endregion Lifecycle methods\n\n // #region Watch\n\n watch(\n () => locale.value,\n () => {\n refreshPages();\n },\n );\n\n watch(\n () => count.value,\n () => refreshPages(),\n );\n\n watch(\n () => props.view,\n () => (_view.value = props.view),\n );\n\n watch(\n () => _view.value,\n () => {\n handleWatcher('view', () => {\n refreshPages();\n });\n emit('update:view', _view.value);\n },\n );\n\n watch(\n () => focusableDay.value,\n () => {\n forDays(_pages.value, day => refreshFocusable(day));\n },\n );\n\n watchEffect(() => {\n emit('update:pages', _pages.value);\n // Refresh state for days\n forDays(_pages.value, day => {\n // Refresh disabled state\n refreshDisabled(day);\n // Refresh focusable state\n refreshFocusable(day);\n });\n });\n\n // #endregion Watch\n\n const context = {\n emit,\n slots,\n containerRef,\n navPopoverRef,\n focusedDay,\n inTransition,\n navPopoverId,\n dayPopoverId,\n view: _view,\n pages: _pages,\n transitionName,\n theme,\n color,\n displayMode,\n locale,\n masks,\n attributes,\n disabledAttribute,\n disabledDates,\n attributeContext,\n days,\n dayCells,\n count,\n step,\n firstPage,\n lastPage,\n canMovePrev,\n canMoveNext,\n minPage,\n maxPage,\n isMonthly,\n isWeekly,\n isDaily,\n navVisibility,\n showWeeknumbers,\n showIsoWeeknumbers,\n getDateAddress,\n canMove,\n canMoveBy,\n move,\n moveBy,\n movePrev,\n moveNext,\n onTransitionBeforeEnter,\n onTransitionAfterEnter,\n tryFocusDate,\n focusDate,\n onKeydown,\n onDayKeydown,\n onDayClick,\n onDayMouseenter,\n onDayMouseleave,\n onDayFocusin,\n onDayFocusout,\n onWeeknumberClick,\n };\n provide(contextKey, context);\n return context;\n}\n\nexport function useCalendar(): CalendarContext {\n const context = inject(contextKey);\n if (context) return context;\n throw new Error(\n 'Calendar context missing. Please verify this component is nested within a valid context provider.',\n );\n}\n","\n\n\n\n\n","import type { ComponentPublicInstance, Directive, DirectiveBinding } from 'vue';\nimport type { Placement } from '@popperjs/core';\nimport { elementContains, on, resolveEl } from './helpers';\n\nexport type PopoverVisibility = 'click' | 'hover' | 'hover-focus' | 'focus';\n\nexport interface PopoverOptions {\n id: string;\n visibility: PopoverVisibility;\n isInteractive: boolean;\n autoHide: boolean;\n force: boolean;\n target: unknown;\n placement: Placement;\n modifiers: any;\n data: any;\n showDelay: number;\n hideDelay: number;\n}\n\nexport interface PopoverState {\n isVisible: boolean;\n target: unknown;\n data: any;\n transition: string;\n placement: Placement;\n direction: string;\n positionFixed: false;\n modifiers: any[];\n isInteractive: boolean;\n visibility: PopoverVisibility;\n isHovered: boolean;\n isFocused: boolean;\n autoHide: boolean;\n force: boolean;\n}\n\nexport interface PopoverEvent {\n detail: Partial;\n}\n\nexport interface PopoverEventHandlers {\n click: (e: MouseEvent) => void;\n mousemove: (e: MouseEvent) => void;\n mouseleave: (e: MouseEvent) => void;\n focusin: (e: MouseEvent) => void;\n focusout: (e: MouseEvent) => void;\n}\n\nexport function showPopover(opts: Partial) {\n if (document) {\n document.dispatchEvent(\n new CustomEvent('show-popover', {\n detail: opts,\n }),\n );\n }\n}\n\nexport function hidePopover(opts: Partial) {\n if (document) {\n document.dispatchEvent(\n new CustomEvent('hide-popover', {\n detail: opts,\n }),\n );\n }\n}\n\nexport function togglePopover(opts: Partial) {\n if (document) {\n document.dispatchEvent(\n new CustomEvent('toggle-popover', {\n detail: opts,\n }),\n );\n }\n}\n\nexport function getPopoverEventHandlers(\n opts: Partial,\n): Partial {\n const { visibility } = opts;\n const click = visibility === 'click';\n const hover = visibility === 'hover';\n const hoverFocus = visibility === 'hover-focus';\n const focus = visibility === 'focus';\n opts.autoHide = !click;\n let hovered = false;\n let focused = false;\n\n const clickHandler = (e: MouseEvent) => {\n if (click) {\n togglePopover({\n ...opts,\n target: opts.target || (e.currentTarget as HTMLElement),\n });\n e.stopPropagation();\n }\n };\n const mouseMoveHandler = (e: MouseEvent) => {\n if (!hovered) {\n hovered = true;\n if (hover || hoverFocus) {\n showPopover({\n ...opts,\n target: opts.target || (e.currentTarget as HTMLElement),\n });\n }\n }\n };\n const mouseLeaveHandler = () => {\n if (hovered) {\n hovered = false;\n if (hover || (hoverFocus && !focused)) {\n hidePopover(opts);\n }\n }\n };\n const focusInHandler = (e: FocusEvent) => {\n if (!focused) {\n focused = true;\n if (focus || hoverFocus) {\n showPopover({\n ...opts,\n target: opts.target || (e.currentTarget as HTMLElement),\n });\n }\n }\n };\n const focusOutHandler = (e: FocusEvent) => {\n if (\n focused &&\n !elementContains(e.currentTarget as Node, e.relatedTarget as Element)\n ) {\n focused = false;\n if (focus || (hoverFocus && !hovered)) {\n hidePopover(opts);\n }\n }\n };\n\n const handlers: Record = {};\n switch (opts.visibility) {\n case 'click':\n handlers.click = clickHandler;\n break;\n case 'hover':\n handlers.mousemove = mouseMoveHandler;\n handlers.mouseleave = mouseLeaveHandler;\n break;\n case 'focus':\n handlers.focusin = focusInHandler;\n handlers.focusout = focusOutHandler;\n break;\n case 'hover-focus':\n handlers.mousemove = mouseMoveHandler;\n handlers.mouseleave = mouseLeaveHandler;\n handlers.focusin = focusInHandler;\n handlers.focusout = focusOutHandler;\n break;\n }\n return handlers;\n}\n\nconst removeHandlers = (target: Element | ComponentPublicInstance | string) => {\n const el = resolveEl(target);\n if (el == null) return;\n const handlers = (el as any).popoverHandlers;\n if (!handlers || !handlers.length) return;\n handlers.forEach((handler: Function) => handler());\n delete (el as any).popoverHandlers;\n};\n\nconst addHandlers = (\n target: Element | ComponentPublicInstance | string,\n opts: Partial,\n) => {\n const el = resolveEl(target);\n if (el == null) return;\n const remove: Function[] = [];\n const handlers = getPopoverEventHandlers(opts);\n Object.entries(handlers).forEach(([event, handler]) => {\n remove.push(on(el, event, handler as EventListener));\n });\n (el as any).popoverHandlers = remove;\n};\n\nexport const popoverDirective: Directive = {\n mounted(el: any, binding: DirectiveBinding) {\n const { value } = binding;\n if (!value) return;\n addHandlers(el, value);\n },\n updated(el: any, binding: DirectiveBinding) {\n const { oldValue, value } = binding;\n const oldVisibility = oldValue?.visibility;\n const newVisibility = value?.visibility;\n if (oldVisibility !== newVisibility) {\n if (oldVisibility) {\n removeHandlers(el);\n if (!newVisibility) hidePopover(oldValue);\n }\n if (newVisibility) {\n addHandlers(el, value);\n }\n }\n },\n unmounted(el: Element) {\n removeHandlers(el);\n },\n};\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","import {\n type ExtractPropTypes,\n type PropType,\n ref,\n computed,\n watch,\n onMounted,\n provide,\n inject,\n} from 'vue';\nimport { useCalendar } from './calendar';\nimport type { Page } from '../utils/page';\nimport { getMonthDates } from '../utils/date/helpers';\nimport { head, last, pad } from '../utils/helpers';\n\nexport interface YearItem {\n year: number;\n id: string;\n label: string;\n ariaLabel: string;\n isActive: boolean;\n isCurrent: boolean;\n isDisabled: boolean;\n click: () => void;\n}\n\nexport interface MonthItem extends YearItem {\n month: number;\n}\n\nexport type IQuerySelector = Pick;\n\nexport type CalendarNavContext = ReturnType;\n\nexport type CalendarNavProps = Readonly>;\n\nexport const propsDef = {\n value: { type: Object as PropType, required: true },\n};\n\nexport const emitsDef = ['input'];\n\nconst contextKey = '__vc_calendar_nav_context__';\n\nexport function createCalendarNav(props: CalendarNavProps, { emit }: any) {\n const monthMode = ref(true);\n const yearIndex = ref(0);\n const yearGroupIndex = ref(0);\n const yearGroupCount = 12;\n const navContainer = ref(null);\n\n const { locale, masks, canMove, getDateAddress } = useCalendar();\n\n function focusFirstItem() {\n // Use setTimeout instead of $nextTick so it plays nice with popperjs\n setTimeout(() => {\n if (navContainer.value == null) return;\n // Set focus on the first enabled nav item\n const focusableEl = navContainer.value.querySelector(\n '.vc-nav-item:not(:disabled)',\n ) as HTMLElement;\n if (focusableEl) {\n focusableEl.focus();\n }\n }, 10);\n }\n\n function monthClick(month: number, year: number) {\n emit('input', { month, year }, { position: currentPosition.value });\n }\n\n function yearClick(year: number) {\n yearIndex.value = year;\n monthMode.value = true;\n focusFirstItem();\n }\n\n function getYearItems(yearGroupIndex: number): YearItem[] {\n const { year: thisYear } = getDateAddress(new Date());\n const startYear = yearGroupIndex * yearGroupCount;\n const endYear = startYear + yearGroupCount;\n const items = [];\n for (let year = startYear; year < endYear; year += 1) {\n let enabled = false;\n for (let month = 1; month < 12; month++) {\n enabled = canMove({ month, year }, { position: currentPosition.value });\n if (enabled) break;\n }\n items.push({\n year,\n id: year.toString(),\n label: year.toString(),\n ariaLabel: year.toString(),\n isActive: year === currentYear.value,\n isCurrent: year === thisYear,\n isDisabled: !enabled,\n click: () => yearClick(year),\n });\n }\n return items;\n }\n\n function getMonthItems(year: number): MonthItem[] {\n const { month: thisMonth, year: thisYear } = getDateAddress(new Date());\n return getMonthDates().map((d, i: number) => {\n const month = i + 1;\n return {\n month,\n year,\n id: `${year}.${pad(month, 2)}`,\n label: locale.value.formatDate(d, masks.value.navMonths),\n ariaLabel: locale.value.formatDate(d, 'MMMM YYYY'),\n isActive: month === currentMonth.value && year === currentYear.value,\n isCurrent: month === thisMonth && year === thisYear,\n isDisabled: !canMove(\n { month, year },\n { position: currentPosition.value },\n ),\n click: () => monthClick(month, year),\n };\n });\n }\n\n function getYearGroupIndex(year: number) {\n return Math.floor(year / yearGroupCount);\n }\n\n function toggleMode() {\n monthMode.value = !monthMode.value;\n }\n\n // #region Move methods\n\n function movePrev() {\n if (!prevItemsEnabled.value) return;\n if (monthMode.value) {\n movePrevYear();\n }\n movePrevYearGroup();\n }\n\n function moveNext() {\n if (!nextItemsEnabled.value) return;\n if (monthMode.value) {\n moveNextYear();\n }\n moveNextYearGroup();\n }\n\n function movePrevYear() {\n yearIndex.value--;\n }\n\n function moveNextYear() {\n yearIndex.value++;\n }\n\n function movePrevYearGroup() {\n yearGroupIndex.value--;\n }\n\n function moveNextYearGroup() {\n yearGroupIndex.value++;\n }\n\n // #endregion Move methods\n\n const currentMonth = computed(() => props.value?.month || 0);\n\n const currentYear = computed(() => props.value?.year || 0);\n\n const currentPosition = computed(() => props.value?.position || 1);\n\n const monthItems = computed(() => getMonthItems(yearIndex.value));\n\n const yearItems = computed(() => getYearItems(yearGroupIndex.value));\n\n const firstYear = computed(() => head(yearItems.value.map(i => i.year)));\n\n const lastYear = computed(() => last(yearItems.value.map(i => i.year)));\n\n const title = computed(() => {\n return monthMode.value\n ? yearIndex.value\n : `${firstYear.value} - ${lastYear.value}`;\n });\n\n const prevMonthItemsEnabled = computed(() =>\n getMonthItems(yearIndex.value - 1).some(i => !i.isDisabled),\n );\n\n const prevYearItemsEnabled = computed(() =>\n getYearItems(yearGroupIndex.value - 1).some(i => !i.isDisabled),\n );\n\n const prevItemsEnabled = computed(() =>\n monthMode.value ? prevMonthItemsEnabled.value : prevYearItemsEnabled.value,\n );\n\n const nextMonthItemsEnabled = computed(() =>\n getMonthItems(yearIndex.value + 1).some(i => !i.isDisabled),\n );\n\n const nextYearItemsEnabled = computed(() =>\n getYearItems(yearGroupIndex.value + 1).some(i => !i.isDisabled),\n );\n\n const nextItemsEnabled = computed(() =>\n monthMode.value ? nextMonthItemsEnabled.value : nextYearItemsEnabled.value,\n );\n\n const activeItems = computed(() =>\n monthMode.value ? monthItems.value : yearItems.value,\n );\n\n watch(\n () => currentYear.value,\n () => {\n yearIndex.value = currentYear.value;\n },\n );\n\n watch(\n () => yearIndex.value,\n val => {\n yearGroupIndex.value = getYearGroupIndex(val);\n },\n );\n\n yearIndex.value = currentYear.value;\n\n onMounted(() => focusFirstItem());\n\n const context = {\n navContainer,\n title,\n monthMode,\n currentMonth,\n currentYear,\n activeItems,\n prevItemsEnabled,\n nextItemsEnabled,\n toggleMode,\n movePrev,\n moveNext,\n movePrevYear,\n moveNextYear,\n movePrevYearGroup,\n moveNextYearGroup,\n };\n provide(contextKey, context);\n return context;\n}\n\nexport function useCalendarNav(): CalendarNavContext {\n const context = inject(contextKey);\n if (context) return context;\n throw new Error(\n 'CalendarNav context missing. Please verify this component is nested within a valid context provider.',\n );\n}\n","\n\n\n\n\n","\n\n\n","\n\n\n\n\n","\n\n\n","