{"version":3,"sources":["webpack://Packs.[name]/./node_modules/react-query/es/core/mutationObserver.js","webpack://Packs.[name]/./node_modules/date-fns-tz/esm/getTimezoneOffset/index.js","webpack://Packs.[name]/./node_modules/react-query/es/react/index.js","webpack://Packs.[name]/./node_modules/react-query/es/react/useIsFetching.js","webpack://Packs.[name]/./node_modules/react-query/es/react/useIsMutating.js","webpack://Packs.[name]/./node_modules/react-query/es/react/useMutation.js","webpack://Packs.[name]/./node_modules/clipboard/dist/clipboard.js","webpack://Packs.[name]/./node_modules/bootstrap/dist/js/npm.js","webpack://Packs.[name]/./node_modules/bootstrap/js/transition.js","webpack://Packs.[name]/./node_modules/bootstrap/js/alert.js","webpack://Packs.[name]/./node_modules/bootstrap/js/button.js","webpack://Packs.[name]/./node_modules/bootstrap/js/carousel.js","webpack://Packs.[name]/./node_modules/bootstrap/js/collapse.js","webpack://Packs.[name]/./node_modules/bootstrap/js/dropdown.js","webpack://Packs.[name]/./node_modules/bootstrap/js/modal.js","webpack://Packs.[name]/./node_modules/bootstrap/js/tooltip.js","webpack://Packs.[name]/./node_modules/bootstrap/js/popover.js","webpack://Packs.[name]/./node_modules/bootstrap/js/scrollspy.js","webpack://Packs.[name]/./node_modules/bootstrap/js/tab.js","webpack://Packs.[name]/./node_modules/bootstrap/js/affix.js","webpack://Packs.[name]/./node_modules/react-query/es/react/reactBatchedUpdates.js","webpack://Packs.[name]/./node_modules/react-query/es/react/setBatchUpdatesFn.js","webpack://Packs.[name]/./node_modules/react-query/es/react/logger.js","webpack://Packs.[name]/./node_modules/react-query/es/react/setLogger.js","webpack://Packs.[name]/./node_modules/date-fns/esm/add/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isSunday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isSaturday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/addBusinessDays/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/addHours/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/startOfISOWeek/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getISOWeekYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/startOfISOWeekYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/setISOWeekYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/addISOWeekYears/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/addMinutes/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/addQuarters/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/addSeconds/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/addWeeks/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/areIntervalsOverlapping/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/clamp/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/closestIndexTo/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/closestTo/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/compareDesc/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/daysToWeeks/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/differenceInBusinessDays/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/differenceInCalendarISOWeekYears/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/differenceInCalendarISOWeeks/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getQuarter/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/differenceInCalendarQuarters/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/differenceInCalendarWeeks/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/subISOWeekYears/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/differenceInISOWeekYears/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/differenceInQuarters/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/differenceInWeeks/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/eachHourOfInterval/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/startOfMinute/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/eachMinuteOfInterval/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/eachMonthOfInterval/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/startOfQuarter/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/eachQuarterOfInterval/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/eachWeekOfInterval/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/eachWeekendOfInterval/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/eachWeekendOfMonth/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/eachWeekendOfYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/eachYearOfInterval/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/endOfDecade/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/endOfHour/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/endOfISOWeek/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/endOfISOWeekYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/endOfMinute/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/endOfQuarter/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/endOfSecond/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/endOfToday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/endOfTomorrow/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/endOfYesterday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/formatDistance/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/formatDistanceStrict/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/formatDistanceToNow/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/formatDistanceToNowStrict/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/formatDuration/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/formatISO/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/formatISO9075/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/formatISODuration/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/formatRFC3339/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/formatRFC7231/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/formatRelative/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/fromUnixTime/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getDate/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getDay/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getDayOfYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isLeapYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getDaysInYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getDecade/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getHours/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getISODay/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getISOWeek/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getISOWeeksInYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getMilliseconds/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getMinutes/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getMonth/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getOverlappingDaysInIntervals/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getSeconds/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getTime/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getUnixTime/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getWeekYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/startOfWeekYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getWeek/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getWeekOfMonth/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/lastDayOfMonth/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getWeeksInMonth/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/getYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/hoursToMilliseconds/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/hoursToMinutes/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/intlFormat/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isDate/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isExists/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isFirstDayOfMonth/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isFriday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isFuture/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isMatch/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isMonday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isPast/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/startOfHour/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isSameHour/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isSameWeek/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isSameISOWeek/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isSameISOWeekYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isSameMinute/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isSameQuarter/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/startOfSecond/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isSameSecond/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isSameYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isThisHour/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isThisISOWeek/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isThisMinute/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isThisMonth/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isThisQuarter/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isThisSecond/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isThisWeek/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isThisYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isThursday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isToday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isTomorrow/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isTuesday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isWednesday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/isYesterday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/lastDayOfDecade/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/lastDayOfWeek/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/lastDayOfISOWeek/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/lastDayOfISOWeekYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/lastDayOfQuarter/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/lastDayOfYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/lightFormat/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/milliseconds/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/millisecondsToHours/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/millisecondsToMinutes/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/millisecondsToSeconds/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/minutesToHours/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/minutesToMilliseconds/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/minutesToSeconds/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/monthsToQuarters/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/monthsToYears/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/nextDay/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/nextFriday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/nextMonday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/nextSaturday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/nextSunday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/nextThursday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/nextTuesday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/nextWednesday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/parseJSON/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/quartersToMonths/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/quartersToYears/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/roundToNearestMinutes/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/secondsToHours/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/secondsToMilliseconds/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/secondsToMinutes/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/set/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/setDate/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/setDay/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/setDayOfYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/setHours/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/setISODay/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/setISOWeek/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/setMilliseconds/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/setMinutes/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/setQuarter/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/setSeconds/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/setWeek/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/setWeekYear/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/startOfDecade/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/startOfToday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/startOfTomorrow/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/startOfYesterday/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/subBusinessDays/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/subHours/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/subMinutes/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/subQuarters/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/subSeconds/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/subWeeks/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/subYears/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/weeksToDays/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/yearsToMonths/index.js","webpack://Packs.[name]/./node_modules/date-fns/esm/yearsToQuarters/index.js","webpack://Packs.[name]/./node_modules/react-query/es/index.js","webpack://Packs.[name]/./node_modules/react-query/es/core/index.js"],"names":["MutationObserver","_Subscribable","client","options","_this","call","this","setOptions","bindMethods","updateResult","_proto","prototype","mutate","bind","reset","defaultMutationOptions","onUnsubscribe","_this$currentMutation","listeners","length","currentMutation","removeObserver","onMutationUpdate","action","notifyOptions","type","onSuccess","onError","notify","getCurrentResult","currentResult","undefined","variables","mutateOptions","getMutationCache","build","addObserver","execute","state","isLoading","status","isSuccess","isError","isIdle","_this2","batch","data","context","onSettled","error","forEach","listener","getTimezoneOffset","timeZone","date","tzParseTimezone","useIsFetching","arg1","arg2","mountedRef","useRef","queryClient","filters","_React$useState","useState","isFetching","setIsFetching","filtersRef","current","isFetchingRef","useEffect","unsubscribe","getQueryCache","subscribe","batchCalls","newIsFetching","useIsMutating","isMutating","setIsMutating","isMutatingRef","newIsMutating","useMutation","arg3","forceUpdate","obsRef","x","useCallback","catch","useErrorBoundary","mutateAsync","factory","_typeof2","Symbol","iterator","obj","constructor","__webpack_modules__","134","__unused_webpack_module","__webpack_exports__","__webpack_require__","d","tiny_emitter","tiny_emitter_default","n","listen","listen_default","src_select","select_default","_typeof","_defineProperties","target","props","i","descriptor","enumerable","configurable","writable","Object","defineProperty","key","clipboard_action","ClipboardAction","instance","Constructor","TypeError","_classCallCheck","resolveOptions","initSelection","protoProps","staticProps","value","arguments","container","emitter","text","trigger","selectedText","selectFake","selectTarget","isRTL","document","documentElement","getAttribute","fakeElem","createElement","style","fontSize","border","padding","margin","position","yPosition","window","pageYOffset","scrollTop","top","concat","setAttribute","createFakeElement","fakeHandlerCallback","removeFake","fakeHandler","addEventListener","appendChild","copyText","removeEventListener","removeChild","succeeded","execCommand","err","handleResult","emit","clearSelection","focus","activeElement","blur","getSelection","removeAllRanges","set","_action","Error","get","nodeType","hasAttribute","_target","clipboard_typeof","clipboard_defineProperties","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Date","toString","e","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","apply","_possibleConstructorReturn","self","ReferenceError","_assertThisInitialized","getPrototypeOf","getAttributeValue","suffix","element","attribute","clipboard","_Emitter","subClass","superClass","create","_inherits","Clipboard","_super","clipboard_classCallCheck","listenClick","actions","support","queryCommandSupported","defaultAction","defaultTarget","defaultText","body","onClick","delegateTarget","currentTarget","clipboardAction","selector","querySelector","destroy","828","module","Element","matches","proto","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","exports","parentNode","438","__unused_webpack_exports","closest","_delegate","callback","useCapture","listenerFn","elements","querySelectorAll","Array","map","879","node","HTMLElement","nodeList","string","String","fn","370","is","delegate","listenNode","listenNodeList","listenSelector","817","nodeName","isReadOnly","select","setSelectionRange","removeAttribute","selection","range","createRange","selectNodeContents","addRange","279","E","on","name","ctx","push","once","off","_","slice","evtArr","len","evts","liveEvents","TinyEmitter","__webpack_module_cache__","moduleId","getter","__esModule","a","definition","prop","hasOwnProperty","$","emulateTransitionEnd","duration","called","$el","one","setTimeout","transition","end","el","transEndEventNames","WebkitTransition","MozTransition","OTransition","transitionEnd","event","special","bsTransitionEnd","bindType","delegateType","handle","handleObj","handler","jQuery","dismiss","Alert","close","VERSION","TRANSITION_DURATION","$this","attr","replace","$parent","find","removeElement","detach","remove","preventDefault","Event","isDefaultPrevented","removeClass","hasClass","old","alert","option","each","noConflict","Button","$element","extend","DEFAULTS","Plugin","toggle","setState","loadingText","val","resetText","proxy","addClass","removeAttr","changed","$input","toggleClass","button","$btn","first","test","Carousel","$indicators","paused","sliding","interval","$active","$items","keyboard","keydown","pause","cycle","slide","to","wrap","tagName","which","prev","next","clearInterval","setInterval","getItemIndex","item","parent","children","index","getItemForDirection","direction","active","activeIndex","itemIndex","eq","pos","that","$next","isCycling","relatedTarget","slideEvent","$nextIndicator","slidEvent","offsetWidth","join","carousel","clickHandler","href","$target","slideIndex","$carousel","Collapse","$trigger","id","transitioning","getParent","addAriaAndCollapsedClass","getTargetFromTrigger","dimension","show","activesData","actives","startEvent","complete","scrollSize","camelCase","hide","offsetHeight","isOpen","collapse","Dropdown","clearMenus","contains","isActive","insertAfter","stopPropagation","dropdown","Modal","$body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","fixedContent","remote","load","_relatedTarget","BACKDROP_TRANSITION_DURATION","backdrop","checkScrollbar","setScrollbar","escape","resize","appendTo","adjustDialog","enforceFocus","hideModal","has","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","animate","doAnimate","callbackRemove","modalIsOverflowing","scrollHeight","clientHeight","css","paddingLeft","bodyIsOverflowing","paddingRight","fullWindowWidth","innerWidth","documentElementRect","getBoundingClientRect","right","Math","abs","left","clientWidth","measureScrollbar","bodyPad","parseInt","actualPadding","calculatedPadding","parseFloat","removeData","scrollDiv","className","append","modal","showEvent","DISALLOWED_ATTRIBUTES","uriAttrs","DefaultWhitelist","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attrName","toLowerCase","inArray","Boolean","nodeValue","match","regExp","filter","RegExp","l","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","implementation","createHTMLDocument","createdDocument","innerHTML","whitelistKeys","elName","attributeList","attributes","whitelistedAttributes","j","len2","Tooltip","enabled","timeout","hoverState","inState","init","animation","placement","template","title","delay","html","viewport","sanitize","getOptions","$viewport","isFunction","click","hover","triggers","split","eventIn","eventOut","enter","leave","_options","fixTitle","getDefaults","dataAttributes","dataAttr","getDelegateOptions","defaults","tip","clearTimeout","isInStateTrue","hasContent","inDom","ownerDocument","$tip","tipId","getUID","setContent","autoToken","autoPlace","display","getPosition","actualWidth","actualHeight","orgPlacement","viewportDim","bottom","width","calculatedOffset","getCalculatedOffset","applyPlacement","prevHoverState","offset","height","marginTop","marginLeft","isNaN","setOffset","using","round","delta","getViewportAdjustedDelta","isVertical","arrowDelta","arrowOffsetPosition","replaceArrow","arrow","getTitle","$e","isBody","elRect","isSvg","SVGElement","elOffset","scroll","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","prefix","random","getElementById","$arrow","enable","disable","toggleEnabled","tooltip","Popover","content","getContent","typeContent","popover","ScrollSpy","$scrollElement","offsets","targets","activeTarget","process","refresh","getScrollHeight","max","offsetMethod","offsetBase","isWindow","$href","sort","maxScroll","activate","clear","parents","parentsUntil","scrollspy","$spy","Tab","$ul","$previous","hideEvent","tab","Affix","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getState","offsetTop","offsetBottom","targetHeight","initializing","colliderTop","getPinnedOffset","affix","affixType","unstable_batchedUpdates","notifyManager","setBatchNotifyFunction","console","add","dirtyDate","requiredArgs","NaN","years","toInteger","months","weeks","days","hours","minutes","seconds","toDate","dateWithMonths","addMonths","dateWithDays","addDays","minutesToAdd","secondsToAdd","msToAdd","finalDate","getTime","isSunday","getDay","isSaturday","addBusinessDays","dirtyAmount","startedOnWeekend","isWeekend","amount","getHours","sign","fullWeeks","setDate","getDate","restDays","setHours","addHours","addMilliseconds","startOfISOWeek","startOfWeek","weekStartsOn","getISOWeekYear","year","getFullYear","fourthOfJanuaryOfNextYear","setFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfISOWeekYear","fourthOfJanuary","setISOWeekYear","dirtyISOWeekYear","isoWeekYear","diff","differenceInCalendarDays","addISOWeekYears","addMinutes","addQuarters","addSeconds","addWeeks","areIntervalsOverlapping","dirtyIntervalLeft","dirtyIntervalRight","inclusive","intervalLeft","intervalRight","leftStartTime","start","leftEndTime","rightStartTime","rightEndTime","RangeError","clamp","_ref","min","closestIndexTo","dirtyDateToCompare","dirtyDatesArray","dateToCompare","minDistance","timeToCompare","currentDate","distance","closestTo","compareDesc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","daysToWeeks","floor","differenceInBusinessDays","isValid","calendarDifference","isSameDay","differenceInCalendarISOWeekYears","differenceInCalendarISOWeeks","startOfISOWeekLeft","startOfISOWeekRight","timestampLeft","getTimezoneOffsetInMilliseconds","timestampRight","getQuarter","quarter","getMonth","differenceInCalendarQuarters","yearDiff","quarterDiff","differenceInCalendarWeeks","dirtyOptions","startOfWeekLeft","startOfWeekRight","subISOWeekYears","differenceInISOWeekYears","compareAsc","difference","isLastISOWeekYearNotFull","Number","differenceInQuarters","differenceInMonths","ceil","differenceInWeeks","differenceInDays","eachHourOfInterval","dirtyInterval","startDate","endDate","startTime","endTime","dates","setMinutes","step","startOfMinute","setSeconds","eachMinuteOfInterval","eachMonthOfInterval","setMonth","startOfQuarter","currentMonth","month","eachQuarterOfInterval","startDateQuarter","endDateQuarter","quarters","currentQuarter","eachWeekOfInterval","startDateWeek","endDateWeek","currentWeek","eachWeekendOfInterval","dateInterval","eachDayOfInterval","weekends","eachWeekendOfMonth","startOfMonth","endOfMonth","eachWeekendOfYear","startOfYear","endOfYear","eachYearOfInterval","endOfDecade","decade","endOfHour","endOfISOWeek","endOfWeek","endOfISOWeekYear","setMilliseconds","getMilliseconds","endOfMinute","endOfQuarter","endOfSecond","endOfToday","endOfDay","now","endOfTomorrow","day","endOfYesterday","formatDistance","dirtyBaseDate","locale","comparison","localizeOptions","cloneObject","addSuffix","differenceInSeconds","offsetInSeconds","includeSeconds","nearestMonth","monthsSinceStartOfYear","formatDistanceStrict","roundingMethodFn","roundingMethod","unit","milliseconds","timezoneOffset","dstNormalizedMinutes","roundedMinutes","formatDistanceToNow","formatDistanceToNowStrict","defaultFormat","formatDuration","format","zero","delimiter","reduce","acc","token","m","toUpperCase","formatISO","originalDate","representation","tzOffset","dateDelimiter","timeDelimiter","addLeadingZeros","absoluteOffset","hourOffset","minuteOffset","hour","minute","getMinutes","second","getSeconds","separator","time","formatISO9075","formatISODuration","_duration$years","_duration$months","_duration$days","_duration$hours","_duration$minutes","_duration$seconds","formatRFC3339","fractionDigits","fractionalSecond","fractionalSeconds","pow","formatRFC7231","dayName","getUTCDay","dayOfMonth","getUTCDate","monthName","getUTCMonth","getUTCFullYear","getUTCHours","getUTCMinutes","getUTCSeconds","formatRelative","baseDate","_ref$locale","_ref$weekStartsOn","localize","formatLong","utcDate","subMilliseconds","utcBaseDate","formatStr","fromUnixTime","dirtyUnixTime","unixTime","getDayOfYear","dayOfYear","isLeapYear","getDaysInYear","getDecade","getISODay","getISOWeek","getISOWeeksInYear","thisYear","nextYear","valueOf","getOverlappingDaysInIntervals","isOverlapping","overlapStartDate","overlapEndDate","differenceInMs","timestamp","getUnixTime","getWeekYear","_options$locale","_options$locale$optio","localeFirstWeekContainsDate","firstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","getWeekOfMonth","localeWeekStartsOn","defaultWeekStartsOn","currentDayOfMonth","startWeekDay","lastDayOfFirstWeek","weekNumber","remainingDaysAfterFirstWeek","lastDayOfMonth","getWeeksInMonth","getYear","hoursToMilliseconds","hoursToMinutes","intlFormat","formatOrLocale","localeOptions","_localeOptions","formatOptions","isFormatOptions","Intl","DateTimeFormat","opts","isDate","isExists","isFirstDayOfMonth","isFriday","isFuture","isMatch","dateString","formatString","parse","isMonday","isPast","startOfHour","isSameHour","dateLeftStartOfHour","dateRightStartOfHour","isSameWeek","dateLeftStartOfWeek","dateRightStartOfWeek","isSameISOWeek","isSameISOWeekYear","dateLeftStartOfYear","dateRightStartOfYear","isSameMinute","dateLeftStartOfMinute","dateRightStartOfMinute","isSameQuarter","dateLeftStartOfQuarter","dateRightStartOfQuarter","startOfSecond","isSameSecond","dateLeftStartOfSecond","dateRightStartOfSecond","isSameYear","isThisHour","isThisISOWeek","isThisMinute","isThisMonth","isSameMonth","isThisQuarter","isThisSecond","isThisWeek","isThisYear","isThursday","isToday","isTomorrow","isTuesday","isWednesday","isYesterday","subDays","lastDayOfDecade","lastDayOfWeek","lastDayOfISOWeek","lastDayOfISOWeekYear","lastDayOfQuarter","lastDayOfYear","formattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","lightFormat","tokens","substring","firstCharacter","cleanEscapedString","formatter","input","totalDays","totalSeconds","millisecondsToHours","millisecondsToMinutes","millisecondsToSeconds","minutesToHours","minutesToMilliseconds","minutesToSeconds","monthsToQuarters","monthsToYears","nextDay","nextFriday","nextMonday","nextSaturday","nextSunday","nextThursday","nextTuesday","nextWednesday","parseJSON","argument","parts","UTC","quartersToMonths","quartersToYears","roundToNearestMinutes","nearestTo","remainderMinutes","addedMinutes","secondsToHours","secondsToMilliseconds","secondsToMinutes","values","dirtyDayOfMonth","setDay","dirtyDay","currentDay","remainder","dayIndex","setDayOfYear","dirtyDayOfYear","dirtyHours","setISODay","setISOWeek","dirtyISOWeek","isoWeek","dirtyMilliseconds","dirtyMinutes","setQuarter","dirtyQuarter","oldQuarter","dirtySeconds","setWeek","dirtyWeek","week","setWeekYear","dirtyWeekYear","weekYear","startOfDecade","startOfToday","startOfDay","startOfTomorrow","startOfYesterday","subBusinessDays","subHours","subMinutes","subQuarters","subSeconds","subWeeks","subYears","addYears","weeksToDays","yearsToMonths","yearsToQuarters"],"mappings":"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","file":"js/5-55b7221543871273e0f6.chunk.js","sourcesContent":["import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { getDefaultState } from './mutation';\nimport { notifyManager } from './notifyManager';\nimport { Subscribable } from './subscribable'; // CLASS\n\nexport var MutationObserver = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(MutationObserver, _Subscribable);\n\n function MutationObserver(client, options) {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n _this.client = client;\n\n _this.setOptions(options);\n\n _this.bindMethods();\n\n _this.updateResult();\n\n return _this;\n }\n\n var _proto = MutationObserver.prototype;\n\n _proto.bindMethods = function bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n };\n\n _proto.setOptions = function setOptions(options) {\n this.options = this.client.defaultMutationOptions(options);\n };\n\n _proto.onUnsubscribe = function onUnsubscribe() {\n if (!this.listeners.length) {\n var _this$currentMutation;\n\n (_this$currentMutation = this.currentMutation) == null ? void 0 : _this$currentMutation.removeObserver(this);\n }\n };\n\n _proto.onMutationUpdate = function onMutationUpdate(action) {\n this.updateResult(); // Determine which callbacks to trigger\n\n var notifyOptions = {\n listeners: true\n };\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = true;\n } else if (action.type === 'error') {\n notifyOptions.onError = true;\n }\n\n this.notify(notifyOptions);\n };\n\n _proto.getCurrentResult = function getCurrentResult() {\n return this.currentResult;\n };\n\n _proto.reset = function reset() {\n this.currentMutation = undefined;\n this.updateResult();\n this.notify({\n listeners: true\n });\n };\n\n _proto.mutate = function mutate(variables, options) {\n this.mutateOptions = options;\n\n if (this.currentMutation) {\n this.currentMutation.removeObserver(this);\n }\n\n this.currentMutation = this.client.getMutationCache().build(this.client, _extends({}, this.options, {\n variables: typeof variables !== 'undefined' ? variables : this.options.variables\n }));\n this.currentMutation.addObserver(this);\n return this.currentMutation.execute();\n };\n\n _proto.updateResult = function updateResult() {\n var state = this.currentMutation ? this.currentMutation.state : getDefaultState();\n this.currentResult = _extends({}, state, {\n isLoading: state.status === 'loading',\n isSuccess: state.status === 'success',\n isError: state.status === 'error',\n isIdle: state.status === 'idle',\n mutate: this.mutate,\n reset: this.reset\n });\n };\n\n _proto.notify = function notify(options) {\n var _this2 = this;\n\n notifyManager.batch(function () {\n // First trigger the mutate callbacks\n if (_this2.mutateOptions) {\n if (options.onSuccess) {\n _this2.mutateOptions.onSuccess == null ? void 0 : _this2.mutateOptions.onSuccess(_this2.currentResult.data, _this2.currentResult.variables, _this2.currentResult.context);\n _this2.mutateOptions.onSettled == null ? void 0 : _this2.mutateOptions.onSettled(_this2.currentResult.data, null, _this2.currentResult.variables, _this2.currentResult.context);\n } else if (options.onError) {\n _this2.mutateOptions.onError == null ? void 0 : _this2.mutateOptions.onError(_this2.currentResult.error, _this2.currentResult.variables, _this2.currentResult.context);\n _this2.mutateOptions.onSettled == null ? void 0 : _this2.mutateOptions.onSettled(undefined, _this2.currentResult.error, _this2.currentResult.variables, _this2.currentResult.context);\n }\n } // Then trigger the listeners\n\n\n if (options.listeners) {\n _this2.listeners.forEach(function (listener) {\n listener(_this2.currentResult);\n });\n }\n });\n };\n\n return MutationObserver;\n}(Subscribable);","import tzParseTimezone from '../_lib/tzParseTimezone';\n/**\n * @name getTimezoneOffset\n * @category Time Zone Helpers\n * @summary Gets the offset in milliseconds between the time zone and Universal Coordinated Time (UTC)\n *\n * @description\n * Returns the time zone offset from UTC time in milliseconds for IANA time zones as well\n * as other time zone offset string formats.\n *\n * For time zones where daylight savings time is applicable a `Date` should be passed on\n * the second parameter to ensure the offset correctly accounts for DST at that time of\n * year. When omitted, the current date is used.\n *\n * @param {String} timeZone - the time zone of this local time, can be an offset or IANA time zone\n * @param {Date|Number} [date] - the date with values representing the local time\n * @returns {Number} the time zone offset in milliseconds\n *\n * @example\n * const result = getTimezoneOffset('-07:00')\n * //=> -18000000 (-7 * 60 * 60 * 1000)\n * const result = getTimezoneOffset('Africa/Johannesburg')\n * //=> 7200000 (2 * 60 * 60 * 1000)\n * const result = getTimezoneOffset('America/New_York', new Date(2016, 0, 1))\n * //=> -18000000 (-5 * 60 * 60 * 1000)\n * const result = getTimezoneOffset('America/New_York', new Date(2016, 6, 1))\n * //=> -14400000 (-4 * 60 * 60 * 1000)\n */\n\nexport default function getTimezoneOffset(timeZone, date) {\n return -tzParseTimezone(timeZone, date);\n}","// Side effects\nimport './setBatchUpdatesFn';\nimport './setLogger';\nexport { QueryClientProvider, useQueryClient } from './QueryClientProvider';\nexport { QueryErrorResetBoundary, useQueryErrorResetBoundary } from './QueryErrorResetBoundary';\nexport { useIsFetching } from './useIsFetching';\nexport { useIsMutating } from './useIsMutating';\nexport { useMutation } from './useMutation';\nexport { useQuery } from './useQuery';\nexport { useQueries } from './useQueries';\nexport { useInfiniteQuery } from './useInfiniteQuery'; // Types\n\nexport * from './types';","import React from 'react';\nimport { notifyManager } from '../core/notifyManager';\nimport { parseFilterArgs } from '../core/utils';\nimport { useQueryClient } from './QueryClientProvider';\nexport function useIsFetching(arg1, arg2) {\n var mountedRef = React.useRef(false);\n var queryClient = useQueryClient();\n\n var _parseFilterArgs = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs[0];\n\n var _React$useState = React.useState(queryClient.isFetching(filters)),\n isFetching = _React$useState[0],\n setIsFetching = _React$useState[1];\n\n var filtersRef = React.useRef(filters);\n filtersRef.current = filters;\n var isFetchingRef = React.useRef(isFetching);\n isFetchingRef.current = isFetching;\n React.useEffect(function () {\n mountedRef.current = true;\n var unsubscribe = queryClient.getQueryCache().subscribe(notifyManager.batchCalls(function () {\n if (mountedRef.current) {\n var newIsFetching = queryClient.isFetching(filtersRef.current);\n\n if (isFetchingRef.current !== newIsFetching) {\n setIsFetching(newIsFetching);\n }\n }\n }));\n return function () {\n mountedRef.current = false;\n unsubscribe();\n };\n }, [queryClient]);\n return isFetching;\n}","import React from 'react';\nimport { notifyManager } from '../core/notifyManager';\nimport { parseMutationFilterArgs } from '../core/utils';\nimport { useQueryClient } from './QueryClientProvider';\nexport function useIsMutating(arg1, arg2) {\n var mountedRef = React.useRef(false);\n var filters = parseMutationFilterArgs(arg1, arg2);\n var queryClient = useQueryClient();\n\n var _React$useState = React.useState(queryClient.isMutating(filters)),\n isMutating = _React$useState[0],\n setIsMutating = _React$useState[1];\n\n var filtersRef = React.useRef(filters);\n filtersRef.current = filters;\n var isMutatingRef = React.useRef(isMutating);\n isMutatingRef.current = isMutating;\n React.useEffect(function () {\n mountedRef.current = true;\n var unsubscribe = queryClient.getMutationCache().subscribe(notifyManager.batchCalls(function () {\n if (mountedRef.current) {\n var newIsMutating = queryClient.isMutating(filtersRef.current);\n\n if (isMutatingRef.current !== newIsMutating) {\n setIsMutating(newIsMutating);\n }\n }\n }));\n return function () {\n mountedRef.current = false;\n unsubscribe();\n };\n }, [queryClient]);\n return isMutating;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport { notifyManager } from '../core/notifyManager';\nimport { noop, parseMutationArgs } from '../core/utils';\nimport { MutationObserver } from '../core/mutationObserver';\nimport { useQueryClient } from './QueryClientProvider';\nexport function useMutation(arg1, arg2, arg3) {\n var mountedRef = React.useRef(false);\n\n var _React$useState = React.useState(0),\n forceUpdate = _React$useState[1];\n\n var options = parseMutationArgs(arg1, arg2, arg3);\n var queryClient = useQueryClient();\n var obsRef = React.useRef();\n\n if (!obsRef.current) {\n obsRef.current = new MutationObserver(queryClient, options);\n } else {\n obsRef.current.setOptions(options);\n }\n\n var currentResult = obsRef.current.getCurrentResult();\n React.useEffect(function () {\n mountedRef.current = true;\n var unsubscribe = obsRef.current.subscribe(notifyManager.batchCalls(function () {\n if (mountedRef.current) {\n forceUpdate(function (x) {\n return x + 1;\n });\n }\n }));\n return function () {\n mountedRef.current = false;\n unsubscribe();\n };\n }, []);\n var mutate = React.useCallback(function (variables, mutateOptions) {\n obsRef.current.mutate(variables, mutateOptions).catch(noop);\n }, []);\n\n if (currentResult.error && obsRef.current.options.useErrorBoundary) {\n throw currentResult.error;\n }\n\n return _extends({}, currentResult, {\n mutate: mutate,\n mutateAsync: currentResult.mutate\n });\n}","function _typeof2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\n/*!\n * clipboard.js v2.0.8\n * https://clipboardjs.com/\n *\n * Licensed MIT © Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof2(exports)) === 'object' && (typeof module === \"undefined\" ? \"undefined\" : _typeof2(module)) === 'object') module.exports = factory();else if (typeof define === 'function' && define.amd) define([], factory);else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof2(exports)) === 'object') exports[\"ClipboardJS\"] = factory();else root[\"ClipboardJS\"] = factory();\n})(this, function () {\n return (\n /******/\n function () {\n // webpackBootstrap\n\n /******/\n var __webpack_modules__ = {\n /***/\n 134: function _(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n \"use strict\"; // EXPORTS\n\n __webpack_require__.d(__webpack_exports__, {\n \"default\": function _default() {\n return (\n /* binding */\n clipboard\n );\n }\n }); // EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\n\n\n var tiny_emitter = __webpack_require__(279);\n\n var tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter); // EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\n\n\n var listen = __webpack_require__(370);\n\n var listen_default = /*#__PURE__*/__webpack_require__.n(listen); // EXTERNAL MODULE: ./node_modules/select/src/select.js\n\n\n var src_select = __webpack_require__(817);\n\n var select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n\n ; // CONCATENATED MODULE: ./src/clipboard-action.js\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n /**\n * Inner class which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n */\n\n\n var ClipboardAction = /*#__PURE__*/function () {\n /**\n * @param {Object} options\n */\n function ClipboardAction(options) {\n _classCallCheck(this, ClipboardAction);\n\n this.resolveOptions(options);\n this.initSelection();\n }\n /**\n * Defines base properties passed from constructor.\n * @param {Object} options\n */\n\n\n _createClass(ClipboardAction, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = options.action;\n this.container = options.container;\n this.emitter = options.emitter;\n this.target = options.target;\n this.text = options.text;\n this.trigger = options.trigger;\n this.selectedText = '';\n }\n /**\n * Decides which selection strategy is going to be applied based\n * on the existence of `text` and `target` properties.\n */\n\n }, {\n key: \"initSelection\",\n value: function initSelection() {\n if (this.text) {\n this.selectFake();\n } else if (this.target) {\n this.selectTarget();\n }\n }\n /**\n * Creates a fake textarea element, sets its value from `text` property,\n */\n\n }, {\n key: \"createFakeElement\",\n value: function createFakeElement() {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n this.fakeElem = document.createElement('textarea'); // Prevent zooming on iOS\n\n this.fakeElem.style.fontSize = '12pt'; // Reset box model\n\n this.fakeElem.style.border = '0';\n this.fakeElem.style.padding = '0';\n this.fakeElem.style.margin = '0'; // Move element out of screen horizontally\n\n this.fakeElem.style.position = 'absolute';\n this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n this.fakeElem.style.top = \"\".concat(yPosition, \"px\");\n this.fakeElem.setAttribute('readonly', '');\n this.fakeElem.value = this.text;\n return this.fakeElem;\n }\n /**\n * Get's the value of fakeElem,\n * and makes a selection on it.\n */\n\n }, {\n key: \"selectFake\",\n value: function selectFake() {\n var _this = this;\n\n var fakeElem = this.createFakeElement();\n\n this.fakeHandlerCallback = function () {\n return _this.removeFake();\n };\n\n this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\n this.container.appendChild(fakeElem);\n this.selectedText = select_default()(fakeElem);\n this.copyText();\n this.removeFake();\n }\n /**\n * Only removes the fake element after another click event, that way\n * a user can hit `Ctrl+C` to copy because selection still exists.\n */\n\n }, {\n key: \"removeFake\",\n value: function removeFake() {\n if (this.fakeHandler) {\n this.container.removeEventListener('click', this.fakeHandlerCallback);\n this.fakeHandler = null;\n this.fakeHandlerCallback = null;\n }\n\n if (this.fakeElem) {\n this.container.removeChild(this.fakeElem);\n this.fakeElem = null;\n }\n }\n /**\n * Selects the content from element passed on `target` property.\n */\n\n }, {\n key: \"selectTarget\",\n value: function selectTarget() {\n this.selectedText = select_default()(this.target);\n this.copyText();\n }\n /**\n * Executes the copy operation based on the current selection.\n */\n\n }, {\n key: \"copyText\",\n value: function copyText() {\n var succeeded;\n\n try {\n succeeded = document.execCommand(this.action);\n } catch (err) {\n succeeded = false;\n }\n\n this.handleResult(succeeded);\n }\n /**\n * Fires an event based on the copy operation result.\n * @param {Boolean} succeeded\n */\n\n }, {\n key: \"handleResult\",\n value: function handleResult(succeeded) {\n this.emitter.emit(succeeded ? 'success' : 'error', {\n action: this.action,\n text: this.selectedText,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n }\n /**\n * Moves focus away from `target` and back to the trigger, removes current selection.\n */\n\n }, {\n key: \"clearSelection\",\n value: function clearSelection() {\n if (this.trigger) {\n this.trigger.focus();\n }\n\n document.activeElement.blur();\n window.getSelection().removeAllRanges();\n }\n /**\n * Sets the `action` to be performed which can be either 'copy' or 'cut'.\n * @param {String} action\n */\n\n }, {\n key: \"destroy\",\n\n /**\n * Destroy lifecycle.\n */\n value: function destroy() {\n this.removeFake();\n }\n }, {\n key: \"action\",\n set: function set() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\n this._action = action;\n\n if (this._action !== 'copy' && this._action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n }\n }\n /**\n * Gets the `action` property.\n * @return {String}\n */\n ,\n get: function get() {\n return this._action;\n }\n /**\n * Sets the `target` property using an element\n * that will be have its content copied.\n * @param {Element} target\n */\n\n }, {\n key: \"target\",\n set: function set(target) {\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (this.action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n\n this._target = target;\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n }\n }\n /**\n * Gets the `target` property.\n * @return {String|HTMLElement}\n */\n ,\n get: function get() {\n return this._target;\n }\n }]);\n\n return ClipboardAction;\n }();\n /* harmony default export */\n\n\n var clipboard_action = ClipboardAction;\n ; // CONCATENATED MODULE: ./src/clipboard.js\n\n function clipboard_typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n clipboard_typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n clipboard_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return clipboard_typeof(obj);\n }\n\n function clipboard_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function clipboard_defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function clipboard_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) clipboard_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) clipboard_defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n /**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\n\n function getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n }\n /**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\n var Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n\n\n function Clipboard(trigger, options) {\n var _this;\n\n clipboard_classCallCheck(this, Clipboard);\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n clipboard_createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n\n if (this.clipboardAction) {\n this.clipboardAction = null;\n }\n\n this.clipboardAction = new clipboard_action({\n action: this.action(trigger),\n target: this.target(trigger),\n text: this.text(trigger),\n container: this.container,\n trigger: trigger,\n emitter: this\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n\n if (this.clipboardAction) {\n this.clipboardAction.destroy();\n this.clipboardAction = null;\n }\n }\n }], [{\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n return Clipboard;\n }(tiny_emitter_default());\n /* harmony default export */\n\n\n var clipboard = Clipboard;\n /***/\n },\n\n /***/\n 828: function _(module) {\n var DOCUMENT_NODE_TYPE = 9;\n /**\n * A polyfill for Element.matches()\n */\n\n if (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n proto.matches = proto.matchesSelector || proto.mozMatchesSelector || proto.msMatchesSelector || proto.oMatchesSelector || proto.webkitMatchesSelector;\n }\n /**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\n\n\n function closest(element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' && element.matches(selector)) {\n return element;\n }\n\n element = element.parentNode;\n }\n }\n\n module.exports = closest;\n /***/\n },\n\n /***/\n 438: function _(module, __unused_webpack_exports, __webpack_require__) {\n var closest = __webpack_require__(828);\n /**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\n\n\n function _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n element.addEventListener(type, listenerFn, useCapture);\n return {\n destroy: function destroy() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n };\n }\n /**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\n\n\n function delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n } // Handle Element-less usage, it defaults to global delegation\n\n\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n } // Handle Selector-based usage\n\n\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n } // Handle Array-like based usage\n\n\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n }\n /**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\n\n\n function listener(element, selector, type, callback) {\n return function (e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n };\n }\n\n module.exports = delegate;\n /***/\n },\n\n /***/\n 879: function _(__unused_webpack_module, exports) {\n /**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\n exports.node = function (value) {\n return value !== undefined && value instanceof HTMLElement && value.nodeType === 1;\n };\n /**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\n\n\n exports.nodeList = function (value) {\n var type = Object.prototype.toString.call(value);\n return value !== undefined && (type === '[object NodeList]' || type === '[object HTMLCollection]') && 'length' in value && (value.length === 0 || exports.node(value[0]));\n };\n /**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\n\n\n exports.string = function (value) {\n return typeof value === 'string' || value instanceof String;\n };\n /**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\n\n\n exports.fn = function (value) {\n var type = Object.prototype.toString.call(value);\n return type === '[object Function]';\n };\n /***/\n\n },\n\n /***/\n 370: function _(module, __unused_webpack_exports, __webpack_require__) {\n var is = __webpack_require__(879);\n\n var delegate = __webpack_require__(438);\n /**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\n\n\n function listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n } else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n } else if (is.string(target)) {\n return listenSelector(target, type, callback);\n } else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n }\n /**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\n\n\n function listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n return {\n destroy: function destroy() {\n node.removeEventListener(type, callback);\n }\n };\n }\n /**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\n\n\n function listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function (node) {\n node.addEventListener(type, callback);\n });\n return {\n destroy: function destroy() {\n Array.prototype.forEach.call(nodeList, function (node) {\n node.removeEventListener(type, callback);\n });\n }\n };\n }\n /**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\n\n\n function listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n }\n\n module.exports = listen;\n /***/\n },\n\n /***/\n 817: function _(module) {\n function select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n selectedText = element.value;\n } else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n } else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n selectedText = selection.toString();\n }\n\n return selectedText;\n }\n\n module.exports = select;\n /***/\n },\n\n /***/\n 279: function _(module) {\n function E() {// Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n }\n\n E.prototype = {\n on: function on(name, callback, ctx) {\n var e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n return this;\n },\n once: function once(name, callback, ctx) {\n var self = this;\n\n function listener() {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n }\n\n ;\n listener._ = callback;\n return this.on(name, listener, ctx);\n },\n emit: function emit(name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n off: function off(name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);\n }\n } // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n\n liveEvents.length ? e[name] = liveEvents : delete e[name];\n return this;\n }\n };\n module.exports = E;\n module.exports.TinyEmitter = E;\n /***/\n }\n /******/\n\n };\n /************************************************************************/\n\n /******/\n // The module cache\n\n /******/\n\n var __webpack_module_cache__ = {};\n /******/\n\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n // Check if module is in cache\n\n /******/\n if (__webpack_module_cache__[moduleId]) {\n /******/\n return __webpack_module_cache__[moduleId].exports;\n /******/\n }\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n\n var module = __webpack_module_cache__[moduleId] = {\n /******/\n // no module.id needed\n\n /******/\n // no module.loaded needed\n\n /******/\n exports: {}\n /******/\n\n };\n /******/\n\n /******/\n // Execute the module function\n\n /******/\n\n __webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n /******/\n\n /******/\n // Return the exports of the module\n\n /******/\n\n\n return module.exports;\n /******/\n }\n /******/\n\n /************************************************************************/\n\n /******/\n\n /* webpack/runtime/compat get default export */\n\n /******/\n\n\n !function () {\n /******/\n // getDefaultExport function for compatibility with non-harmony modules\n\n /******/\n __webpack_require__.n = function (module) {\n /******/\n var getter = module && module.__esModule ?\n /******/\n function () {\n return module['default'];\n } :\n /******/\n function () {\n return module;\n };\n /******/\n\n __webpack_require__.d(getter, {\n a: getter\n });\n /******/\n\n\n return getter;\n /******/\n };\n /******/\n\n }();\n /******/\n\n /******/\n\n /* webpack/runtime/define property getters */\n\n /******/\n\n !function () {\n /******/\n // define getter functions for harmony exports\n\n /******/\n __webpack_require__.d = function (exports, definition) {\n /******/\n for (var key in definition) {\n /******/\n if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n /******/\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: definition[key]\n });\n /******/\n }\n /******/\n\n }\n /******/\n\n };\n /******/\n\n }();\n /******/\n\n /******/\n\n /* webpack/runtime/hasOwnProperty shorthand */\n\n /******/\n\n !function () {\n /******/\n __webpack_require__.o = function (obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n };\n /******/\n\n }();\n /******/\n\n /************************************************************************/\n\n /******/\n // module exports must be returned from runtime so entry inlining is disabled\n\n /******/\n // startup\n\n /******/\n // Load entry module and return exports\n\n /******/\n\n return __webpack_require__(134);\n /******/\n }().default\n );\n});","// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\nrequire('../../js/transition.js');\n\nrequire('../../js/alert.js');\n\nrequire('../../js/button.js');\n\nrequire('../../js/carousel.js');\n\nrequire('../../js/collapse.js');\n\nrequire('../../js/dropdown.js');\n\nrequire('../../js/modal.js');\n\nrequire('../../js/tooltip.js');\n\nrequire('../../js/popover.js');\n\nrequire('../../js/scrollspy.js');\n\nrequire('../../js/tab.js');\n\nrequire('../../js/affix.js');","/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n+function ($) {\n 'use strict'; // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap');\n var transEndEventNames = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend'\n };\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return {\n end: transEndEventNames[name]\n };\n }\n }\n\n return false; // explicit for ie8 ( ._.)\n } // https://blog.alexmaccaw.com/css-transitions\n\n\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false;\n var $el = this;\n $(this).one('bsTransitionEnd', function () {\n called = true;\n });\n\n var callback = function callback() {\n if (!called) $($el).trigger($.support.transition.end);\n };\n\n setTimeout(callback, duration);\n return this;\n };\n\n $(function () {\n $.support.transition = transitionEnd();\n if (!$.support.transition) return;\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function handle(e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments);\n }\n };\n });\n}(jQuery);","/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n+function ($) {\n 'use strict'; // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]';\n\n var Alert = function Alert(el) {\n $(el).on('click', dismiss, this.close);\n };\n\n Alert.VERSION = '3.4.1';\n Alert.TRANSITION_DURATION = 150;\n\n Alert.prototype.close = function (e) {\n var $this = $(this);\n var selector = $this.attr('data-target');\n\n if (!selector) {\n selector = $this.attr('href');\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, ''); // strip for ie7\n }\n\n selector = selector === '#' ? [] : selector;\n var $parent = $(document).find(selector);\n if (e) e.preventDefault();\n\n if (!$parent.length) {\n $parent = $this.closest('.alert');\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'));\n if (e.isDefaultPrevented()) return;\n $parent.removeClass('in');\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove();\n }\n\n $.support.transition && $parent.hasClass('fade') ? $parent.one('bsTransitionEnd', removeElement).emulateTransitionEnd(Alert.TRANSITION_DURATION) : removeElement();\n }; // ALERT PLUGIN DEFINITION\n // =======================\n\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.alert');\n if (!data) $this.data('bs.alert', data = new Alert(this));\n if (typeof option == 'string') data[option].call($this);\n });\n }\n\n var old = $.fn.alert;\n $.fn.alert = Plugin;\n $.fn.alert.Constructor = Alert; // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old;\n return this;\n }; // ALERT DATA-API\n // ==============\n\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close);\n}(jQuery);","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\n/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n+function ($) {\n 'use strict'; // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function Button(element, options) {\n this.$element = $(element);\n this.options = $.extend({}, Button.DEFAULTS, options);\n this.isLoading = false;\n };\n\n Button.VERSION = '3.4.1';\n Button.DEFAULTS = {\n loadingText: 'loading...'\n };\n\n Button.prototype.setState = function (state) {\n var d = 'disabled';\n var $el = this.$element;\n var val = $el.is('input') ? 'val' : 'html';\n var data = $el.data();\n state += 'Text';\n if (data.resetText == null) $el.data('resetText', $el[val]()); // push to event loop to allow forms to submit\n\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state]);\n\n if (state == 'loadingText') {\n this.isLoading = true;\n $el.addClass(d).attr(d, d).prop(d, true);\n } else if (this.isLoading) {\n this.isLoading = false;\n $el.removeClass(d).removeAttr(d).prop(d, false);\n }\n }, this), 0);\n };\n\n Button.prototype.toggle = function () {\n var changed = true;\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]');\n\n if ($parent.length) {\n var $input = this.$element.find('input');\n\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false;\n $parent.find('.active').removeClass('active');\n this.$element.addClass('active');\n } else if ($input.prop('type') == 'checkbox') {\n if ($input.prop('checked') !== this.$element.hasClass('active')) changed = false;\n this.$element.toggleClass('active');\n }\n\n $input.prop('checked', this.$element.hasClass('active'));\n if (changed) $input.trigger('change');\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'));\n this.$element.toggleClass('active');\n }\n }; // BUTTON PLUGIN DEFINITION\n // ========================\n\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.button');\n var options = _typeof(option) == 'object' && option;\n if (!data) $this.data('bs.button', data = new Button(this, options));\n if (option == 'toggle') data.toggle();else if (option) data.setState(option);\n });\n }\n\n var old = $.fn.button;\n $.fn.button = Plugin;\n $.fn.button.Constructor = Button; // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old;\n return this;\n }; // BUTTON DATA-API\n // ===============\n\n\n $(document).on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target).closest('.btn');\n Plugin.call($btn, 'toggle');\n\n if (!$(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]')) {\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n e.preventDefault(); // The target component still receive the focus\n\n if ($btn.is('input,button')) $btn.trigger('focus');else $btn.find('input:visible,button:visible').first().trigger('focus');\n }\n }).on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type));\n });\n}(jQuery);","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\n/* ========================================================================\n * Bootstrap: carousel.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n+function ($) {\n 'use strict'; // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function Carousel(element, options) {\n this.$element = $(element);\n this.$indicators = this.$element.find('.carousel-indicators');\n this.options = options;\n this.paused = null;\n this.sliding = null;\n this.interval = null;\n this.$active = null;\n this.$items = null;\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this));\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element.on('mouseenter.bs.carousel', $.proxy(this.pause, this)).on('mouseleave.bs.carousel', $.proxy(this.cycle, this));\n };\n\n Carousel.VERSION = '3.4.1';\n Carousel.TRANSITION_DURATION = 600;\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n };\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return;\n\n switch (e.which) {\n case 37:\n this.prev();\n break;\n\n case 39:\n this.next();\n break;\n\n default:\n return;\n }\n\n e.preventDefault();\n };\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false);\n this.interval && clearInterval(this.interval);\n this.options.interval && !this.paused && (this.interval = setInterval($.proxy(this.next, this), this.options.interval));\n return this;\n };\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item');\n return this.$items.index(item || this.$active);\n };\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active);\n var willWrap = direction == 'prev' && activeIndex === 0 || direction == 'next' && activeIndex == this.$items.length - 1;\n if (willWrap && !this.options.wrap) return active;\n var delta = direction == 'prev' ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this.$items.length;\n return this.$items.eq(itemIndex);\n };\n\n Carousel.prototype.to = function (pos) {\n var that = this;\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'));\n if (pos > this.$items.length - 1 || pos < 0) return;\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () {\n that.to(pos);\n }); // yes, \"slid\"\n\n if (activeIndex == pos) return this.pause().cycle();\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos));\n };\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true);\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end);\n this.cycle(true);\n }\n\n this.interval = clearInterval(this.interval);\n return this;\n };\n\n Carousel.prototype.next = function () {\n if (this.sliding) return;\n return this.slide('next');\n };\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return;\n return this.slide('prev');\n };\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active');\n var $next = next || this.getItemForDirection(type, $active);\n var isCycling = this.interval;\n var direction = type == 'next' ? 'left' : 'right';\n var that = this;\n if ($next.hasClass('active')) return this.sliding = false;\n var relatedTarget = $next[0];\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n });\n this.$element.trigger(slideEvent);\n if (slideEvent.isDefaultPrevented()) return;\n this.sliding = true;\n isCycling && this.pause();\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active');\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]);\n $nextIndicator && $nextIndicator.addClass('active');\n }\n\n var slidEvent = $.Event('slid.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n }); // yes, \"slid\"\n\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type);\n\n if (_typeof($next) === 'object' && $next.length) {\n $next[0].offsetWidth; // force reflow\n }\n\n $active.addClass(direction);\n $next.addClass(direction);\n $active.one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active');\n $active.removeClass(['active', direction].join(' '));\n that.sliding = false;\n setTimeout(function () {\n that.$element.trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(Carousel.TRANSITION_DURATION);\n } else {\n $active.removeClass('active');\n $next.addClass('active');\n this.sliding = false;\n this.$element.trigger(slidEvent);\n }\n\n isCycling && this.cycle();\n return this;\n }; // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.carousel');\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), _typeof(option) == 'object' && option);\n var action = typeof option == 'string' ? option : options.slide;\n if (!data) $this.data('bs.carousel', data = new Carousel(this, options));\n if (typeof option == 'number') data.to(option);else if (action) data[action]();else if (options.interval) data.pause().cycle();\n });\n }\n\n var old = $.fn.carousel;\n $.fn.carousel = Plugin;\n $.fn.carousel.Constructor = Carousel; // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old;\n return this;\n }; // CAROUSEL DATA-API\n // =================\n\n\n var clickHandler = function clickHandler(e) {\n var $this = $(this);\n var href = $this.attr('href');\n\n if (href) {\n href = href.replace(/.*(?=#[^\\s]+$)/, ''); // strip for ie7\n }\n\n var target = $this.attr('data-target') || href;\n var $target = $(document).find(target);\n if (!$target.hasClass('carousel')) return;\n var options = $.extend({}, $target.data(), $this.data());\n var slideIndex = $this.attr('data-slide-to');\n if (slideIndex) options.interval = false;\n Plugin.call($target, options);\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex);\n }\n\n e.preventDefault();\n };\n\n $(document).on('click.bs.carousel.data-api', '[data-slide]', clickHandler).on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler);\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this);\n Plugin.call($carousel, $carousel.data());\n });\n });\n}(jQuery);","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\n/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n+function ($) {\n 'use strict'; // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function Collapse(element, options) {\n this.$element = $(element);\n this.options = $.extend({}, Collapse.DEFAULTS, options);\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' + '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]');\n this.transitioning = null;\n\n if (this.options.parent) {\n this.$parent = this.getParent();\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger);\n }\n\n if (this.options.toggle) this.toggle();\n };\n\n Collapse.VERSION = '3.4.1';\n Collapse.TRANSITION_DURATION = 350;\n Collapse.DEFAULTS = {\n toggle: true\n };\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width');\n return hasWidth ? 'width' : 'height';\n };\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return;\n var activesData;\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing');\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse');\n if (activesData && activesData.transitioning) return;\n }\n\n var startEvent = $.Event('show.bs.collapse');\n this.$element.trigger(startEvent);\n if (startEvent.isDefaultPrevented()) return;\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide');\n activesData || actives.data('bs.collapse', null);\n }\n\n var dimension = this.dimension();\n this.$element.removeClass('collapse').addClass('collapsing')[dimension](0).attr('aria-expanded', true);\n this.$trigger.removeClass('collapsed').attr('aria-expanded', true);\n this.transitioning = 1;\n\n var complete = function complete() {\n this.$element.removeClass('collapsing').addClass('collapse in')[dimension]('');\n this.transitioning = 0;\n this.$element.trigger('shown.bs.collapse');\n };\n\n if (!$.support.transition) return complete.call(this);\n var scrollSize = $.camelCase(['scroll', dimension].join('-'));\n this.$element.one('bsTransitionEnd', $.proxy(complete, this)).emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]);\n };\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return;\n var startEvent = $.Event('hide.bs.collapse');\n this.$element.trigger(startEvent);\n if (startEvent.isDefaultPrevented()) return;\n var dimension = this.dimension();\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight;\n this.$element.addClass('collapsing').removeClass('collapse in').attr('aria-expanded', false);\n this.$trigger.addClass('collapsed').attr('aria-expanded', false);\n this.transitioning = 1;\n\n var complete = function complete() {\n this.transitioning = 0;\n this.$element.removeClass('collapsing').addClass('collapse').trigger('hidden.bs.collapse');\n };\n\n if (!$.support.transition) return complete.call(this);\n this.$element[dimension](0).one('bsTransitionEnd', $.proxy(complete, this)).emulateTransitionEnd(Collapse.TRANSITION_DURATION);\n };\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']();\n };\n\n Collapse.prototype.getParent = function () {\n return $(document).find(this.options.parent).find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]').each($.proxy(function (i, element) {\n var $element = $(element);\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element);\n }, this)).end();\n };\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in');\n $element.attr('aria-expanded', isOpen);\n $trigger.toggleClass('collapsed', !isOpen).attr('aria-expanded', isOpen);\n };\n\n function getTargetFromTrigger($trigger) {\n var href;\n var target = $trigger.attr('data-target') || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, ''); // strip for ie7\n\n return $(document).find(target);\n } // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.collapse');\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), _typeof(option) == 'object' && option);\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false;\n if (!data) $this.data('bs.collapse', data = new Collapse(this, options));\n if (typeof option == 'string') data[option]();\n });\n }\n\n var old = $.fn.collapse;\n $.fn.collapse = Plugin;\n $.fn.collapse.Constructor = Collapse; // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old;\n return this;\n }; // COLLAPSE DATA-API\n // =================\n\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this);\n if (!$this.attr('data-target')) e.preventDefault();\n var $target = getTargetFromTrigger($this);\n var data = $target.data('bs.collapse');\n var option = data ? 'toggle' : $this.data();\n Plugin.call($target, option);\n });\n}(jQuery);","/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n+function ($) {\n 'use strict'; // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop';\n var toggle = '[data-toggle=\"dropdown\"]';\n\n var Dropdown = function Dropdown(element) {\n $(element).on('click.bs.dropdown', this.toggle);\n };\n\n Dropdown.VERSION = '3.4.1';\n\n function getParent($this) {\n var selector = $this.attr('data-target');\n\n if (!selector) {\n selector = $this.attr('href');\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, ''); // strip for ie7\n }\n\n var $parent = selector !== '#' ? $(document).find(selector) : null;\n return $parent && $parent.length ? $parent : $this.parent();\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return;\n $(backdrop).remove();\n $(toggle).each(function () {\n var $this = $(this);\n var $parent = getParent($this);\n var relatedTarget = {\n relatedTarget: this\n };\n if (!$parent.hasClass('open')) return;\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return;\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget));\n if (e.isDefaultPrevented()) return;\n $this.attr('aria-expanded', 'false');\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget));\n });\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this);\n if ($this.is('.disabled, :disabled')) return;\n var $parent = getParent($this);\n var isActive = $parent.hasClass('open');\n clearMenus();\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div')).addClass('dropdown-backdrop').insertAfter($(this)).on('click', clearMenus);\n }\n\n var relatedTarget = {\n relatedTarget: this\n };\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget));\n if (e.isDefaultPrevented()) return;\n $this.trigger('focus').attr('aria-expanded', 'true');\n $parent.toggleClass('open').trigger($.Event('shown.bs.dropdown', relatedTarget));\n }\n\n return false;\n };\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return;\n var $this = $(this);\n e.preventDefault();\n e.stopPropagation();\n if ($this.is('.disabled, :disabled')) return;\n var $parent = getParent($this);\n var isActive = $parent.hasClass('open');\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus');\n return $this.trigger('click');\n }\n\n var desc = ' li:not(.disabled):visible a';\n var $items = $parent.find('.dropdown-menu' + desc);\n if (!$items.length) return;\n var index = $items.index(e.target);\n if (e.which == 38 && index > 0) index--; // up\n\n if (e.which == 40 && index < $items.length - 1) index++; // down\n\n if (!~index) index = 0;\n $items.eq(index).trigger('focus');\n }; // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.dropdown');\n if (!data) $this.data('bs.dropdown', data = new Dropdown(this));\n if (typeof option == 'string') data[option].call($this);\n });\n }\n\n var old = $.fn.dropdown;\n $.fn.dropdown = Plugin;\n $.fn.dropdown.Constructor = Dropdown; // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old;\n return this;\n }; // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n\n $(document).on('click.bs.dropdown.data-api', clearMenus).on('click.bs.dropdown.data-api', '.dropdown form', function (e) {\n e.stopPropagation();\n }).on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle).on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown).on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown);\n}(jQuery);","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\n/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n+function ($) {\n 'use strict'; // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function Modal(element, options) {\n this.options = options;\n this.$body = $(document.body);\n this.$element = $(element);\n this.$dialog = this.$element.find('.modal-dialog');\n this.$backdrop = null;\n this.isShown = null;\n this.originalBodyPad = null;\n this.scrollbarWidth = 0;\n this.ignoreBackdropClick = false;\n this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom';\n\n if (this.options.remote) {\n this.$element.find('.modal-content').load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal');\n }, this));\n }\n };\n\n Modal.VERSION = '3.4.1';\n Modal.TRANSITION_DURATION = 300;\n Modal.BACKDROP_TRANSITION_DURATION = 150;\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n };\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget);\n };\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this;\n var e = $.Event('show.bs.modal', {\n relatedTarget: _relatedTarget\n });\n this.$element.trigger(e);\n if (this.isShown || e.isDefaultPrevented()) return;\n this.isShown = true;\n this.checkScrollbar();\n this.setScrollbar();\n this.$body.addClass('modal-open');\n this.escape();\n this.resize();\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this));\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true;\n });\n });\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade');\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body); // don't move modals dom position\n }\n\n that.$element.show().scrollTop(0);\n that.adjustDialog();\n\n if (transition) {\n that.$element[0].offsetWidth; // force reflow\n }\n\n that.$element.addClass('in');\n that.enforceFocus();\n var e = $.Event('shown.bs.modal', {\n relatedTarget: _relatedTarget\n });\n transition ? that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e);\n }).emulateTransitionEnd(Modal.TRANSITION_DURATION) : that.$element.trigger('focus').trigger(e);\n });\n };\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault();\n e = $.Event('hide.bs.modal');\n this.$element.trigger(e);\n if (!this.isShown || e.isDefaultPrevented()) return;\n this.isShown = false;\n this.escape();\n this.resize();\n $(document).off('focusin.bs.modal');\n this.$element.removeClass('in').off('click.dismiss.bs.modal').off('mouseup.dismiss.bs.modal');\n this.$dialog.off('mousedown.dismiss.bs.modal');\n $.support.transition && this.$element.hasClass('fade') ? this.$element.one('bsTransitionEnd', $.proxy(this.hideModal, this)).emulateTransitionEnd(Modal.TRANSITION_DURATION) : this.hideModal();\n };\n\n Modal.prototype.enforceFocus = function () {\n $(document).off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target && this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n this.$element.trigger('focus');\n }\n }, this));\n };\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide();\n }, this));\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal');\n }\n };\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this));\n } else {\n $(window).off('resize.bs.modal');\n }\n };\n\n Modal.prototype.hideModal = function () {\n var that = this;\n this.$element.hide();\n this.backdrop(function () {\n that.$body.removeClass('modal-open');\n that.resetAdjustments();\n that.resetScrollbar();\n that.$element.trigger('hidden.bs.modal');\n });\n };\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove();\n this.$backdrop = null;\n };\n\n Modal.prototype.backdrop = function (callback) {\n var that = this;\n var animate = this.$element.hasClass('fade') ? 'fade' : '';\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate;\n this.$backdrop = $(document.createElement('div')).addClass('modal-backdrop ' + animate).appendTo(this.$body);\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false;\n return;\n }\n\n if (e.target !== e.currentTarget) return;\n this.options.backdrop == 'static' ? this.$element[0].focus() : this.hide();\n }, this));\n if (doAnimate) this.$backdrop[0].offsetWidth; // force reflow\n\n this.$backdrop.addClass('in');\n if (!callback) return;\n doAnimate ? this.$backdrop.one('bsTransitionEnd', callback).emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : callback();\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in');\n\n var callbackRemove = function callbackRemove() {\n that.removeBackdrop();\n callback && callback();\n };\n\n $.support.transition && this.$element.hasClass('fade') ? this.$backdrop.one('bsTransitionEnd', callbackRemove).emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : callbackRemove();\n } else if (callback) {\n callback();\n }\n }; // these following methods are used to handle overflowing modals\n\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog();\n };\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight;\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n });\n };\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n });\n };\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth;\n\n if (!fullWindowWidth) {\n // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect();\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left);\n }\n\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth;\n this.scrollbarWidth = this.measureScrollbar();\n };\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt(this.$body.css('padding-right') || 0, 10);\n this.originalBodyPad = document.body.style.paddingRight || '';\n var scrollbarWidth = this.scrollbarWidth;\n\n if (this.bodyIsOverflowing) {\n this.$body.css('padding-right', bodyPad + scrollbarWidth);\n $(this.fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $(element).css('padding-right');\n $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px');\n });\n }\n };\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad);\n $(this.fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right');\n $(element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n });\n };\n\n Modal.prototype.measureScrollbar = function () {\n // thx walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = 'modal-scrollbar-measure';\n this.$body.append(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n this.$body[0].removeChild(scrollDiv);\n return scrollbarWidth;\n }; // MODAL PLUGIN DEFINITION\n // =======================\n\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.modal');\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), _typeof(option) == 'object' && option);\n if (!data) $this.data('bs.modal', data = new Modal(this, options));\n if (typeof option == 'string') data[option](_relatedTarget);else if (options.show) data.show(_relatedTarget);\n });\n }\n\n var old = $.fn.modal;\n $.fn.modal = Plugin;\n $.fn.modal.Constructor = Modal; // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old;\n return this;\n }; // MODAL DATA-API\n // ==============\n\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this);\n var href = $this.attr('href');\n var target = $this.attr('data-target') || href && href.replace(/.*(?=#[^\\s]+$)/, ''); // strip for ie7\n\n var $target = $(document).find(target);\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({\n remote: !/#/.test(href) && href\n }, $target.data(), $this.data());\n if ($this.is('a')) e.preventDefault();\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return; // only register focus restorer if modal will actually get shown\n\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus');\n });\n });\n Plugin.call($target, option, this);\n });\n}(jQuery);","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\n/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n+function ($) {\n 'use strict';\n\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n\n if ($.inArray(attrName, allowedAttributeList) !== -1) {\n if ($.inArray(attrName, uriAttrs) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n }\n\n return true;\n }\n\n var regExp = $(allowedAttributeList).filter(function (index, value) {\n return value instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n } // IE 8 and below don't support createHTMLDocument\n\n\n if (!document.implementation || !document.implementation.createHTMLDocument) {\n return unsafeHtml;\n }\n\n var createdDocument = document.implementation.createHTMLDocument('sanitization');\n createdDocument.body.innerHTML = unsafeHtml;\n var whitelistKeys = $.map(whiteList, function (el, i) {\n return i;\n });\n var elements = $(createdDocument.body).find('*');\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n\n if ($.inArray(elName, whitelistKeys) === -1) {\n el.parentNode.removeChild(el);\n continue;\n }\n\n var attributeList = $.map(el.attributes, function (el) {\n return el;\n });\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n\n for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n el.removeAttribute(attributeList[j].nodeName);\n }\n }\n }\n\n return createdDocument.body.innerHTML;\n } // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n\n var Tooltip = function Tooltip(element, options) {\n this.type = null;\n this.options = null;\n this.enabled = null;\n this.timeout = null;\n this.hoverState = null;\n this.$element = null;\n this.inState = null;\n this.init('tooltip', element, options);\n };\n\n Tooltip.VERSION = '3.4.1';\n Tooltip.TRANSITION_DURATION = 150;\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n },\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist\n };\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true;\n this.type = type;\n this.$element = $(element);\n this.options = this.getOptions(options);\n this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : this.options.viewport.selector || this.options.viewport);\n this.inState = {\n click: false,\n hover: false,\n focus: false\n };\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!');\n }\n\n var triggers = this.options.trigger.split(' ');\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i];\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this));\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin';\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout';\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this));\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this));\n }\n }\n\n this.options.selector ? this._options = $.extend({}, this.options, {\n trigger: 'manual',\n selector: ''\n }) : this.fixTitle();\n };\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS;\n };\n\n Tooltip.prototype.getOptions = function (options) {\n var dataAttributes = this.$element.data();\n\n for (var dataAttr in dataAttributes) {\n if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n delete dataAttributes[dataAttr];\n }\n }\n\n options = $.extend({}, this.getDefaults(), dataAttributes, options);\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n };\n }\n\n if (options.sanitize) {\n options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn);\n }\n\n return options;\n };\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {};\n var defaults = this.getDefaults();\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value;\n });\n return options;\n };\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ? obj : $(obj.currentTarget).data('bs.' + this.type);\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions());\n $(obj.currentTarget).data('bs.' + this.type, self);\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true;\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in';\n return;\n }\n\n clearTimeout(self.timeout);\n self.hoverState = 'in';\n if (!self.options.delay || !self.options.delay.show) return self.show();\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show();\n }, self.options.delay.show);\n };\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true;\n }\n\n return false;\n };\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ? obj : $(obj.currentTarget).data('bs.' + this.type);\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions());\n $(obj.currentTarget).data('bs.' + this.type, self);\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false;\n }\n\n if (self.isInStateTrue()) return;\n clearTimeout(self.timeout);\n self.hoverState = 'out';\n if (!self.options.delay || !self.options.delay.hide) return self.hide();\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide();\n }, self.options.delay.hide);\n };\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type);\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e);\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]);\n if (e.isDefaultPrevented() || !inDom) return;\n var that = this;\n var $tip = this.tip();\n var tipId = this.getUID(this.type);\n this.setContent();\n $tip.attr('id', tipId);\n this.$element.attr('aria-describedby', tipId);\n if (this.options.animation) $tip.addClass('fade');\n var placement = typeof this.options.placement == 'function' ? this.options.placement.call(this, $tip[0], this.$element[0]) : this.options.placement;\n var autoToken = /\\s?auto?\\s?/i;\n var autoPlace = autoToken.test(placement);\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top';\n $tip.detach().css({\n top: 0,\n left: 0,\n display: 'block'\n }).addClass(placement).data('bs.' + this.type, this);\n this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element);\n this.$element.trigger('inserted.bs.' + this.type);\n var pos = this.getPosition();\n var actualWidth = $tip[0].offsetWidth;\n var actualHeight = $tip[0].offsetHeight;\n\n if (autoPlace) {\n var orgPlacement = placement;\n var viewportDim = this.getPosition(this.$viewport);\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : placement;\n $tip.removeClass(orgPlacement).addClass(placement);\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight);\n this.applyPlacement(calculatedOffset, placement);\n\n var complete = function complete() {\n var prevHoverState = that.hoverState;\n that.$element.trigger('shown.bs.' + that.type);\n that.hoverState = null;\n if (prevHoverState == 'out') that.leave(that);\n };\n\n $.support.transition && this.$tip.hasClass('fade') ? $tip.one('bsTransitionEnd', complete).emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : complete();\n }\n };\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip();\n var width = $tip[0].offsetWidth;\n var height = $tip[0].offsetHeight; // manually read margins because getBoundingClientRect includes difference\n\n var marginTop = parseInt($tip.css('margin-top'), 10);\n var marginLeft = parseInt($tip.css('margin-left'), 10); // we must check for NaN for ie 8/9\n\n if (isNaN(marginTop)) marginTop = 0;\n if (isNaN(marginLeft)) marginLeft = 0;\n offset.top += marginTop;\n offset.left += marginLeft; // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n\n $.offset.setOffset($tip[0], $.extend({\n using: function using(props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n });\n }\n }, offset), 0);\n $tip.addClass('in'); // check to see if placing tip in new offset caused the tip to resize itself\n\n var actualWidth = $tip[0].offsetWidth;\n var actualHeight = $tip[0].offsetHeight;\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight;\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight);\n if (delta.left) offset.left += delta.left;else offset.top += delta.top;\n var isVertical = /top|bottom/.test(placement);\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight;\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight';\n $tip.offset(offset);\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical);\n };\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow().css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%').css(isVertical ? 'top' : 'left', '');\n };\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip();\n var title = this.getTitle();\n\n if (this.options.html) {\n if (this.options.sanitize) {\n title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn);\n }\n\n $tip.find('.tooltip-inner').html(title);\n } else {\n $tip.find('.tooltip-inner').text(title);\n }\n\n $tip.removeClass('fade in top bottom left right');\n };\n\n Tooltip.prototype.hide = function (callback) {\n var that = this;\n var $tip = $(this.$tip);\n var e = $.Event('hide.bs.' + this.type);\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach();\n\n if (that.$element) {\n // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element.removeAttr('aria-describedby').trigger('hidden.bs.' + that.type);\n }\n\n callback && callback();\n }\n\n this.$element.trigger(e);\n if (e.isDefaultPrevented()) return;\n $tip.removeClass('in');\n $.support.transition && $tip.hasClass('fade') ? $tip.one('bsTransitionEnd', complete).emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : complete();\n this.hoverState = null;\n return this;\n };\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element;\n\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '');\n }\n };\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle();\n };\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element;\n var el = $element[0];\n var isBody = el.tagName == 'BODY';\n var elRect = el.getBoundingClientRect();\n\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, {\n width: elRect.right - elRect.left,\n height: elRect.bottom - elRect.top\n });\n }\n\n var isSvg = window.SVGElement && el instanceof window.SVGElement; // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n\n var elOffset = isBody ? {\n top: 0,\n left: 0\n } : isSvg ? null : $element.offset();\n var scroll = {\n scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop()\n };\n var outerDims = isBody ? {\n width: $(window).width(),\n height: $(window).height()\n } : null;\n return $.extend({}, elRect, scroll, outerDims, elOffset);\n };\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? {\n top: pos.top + pos.height,\n left: pos.left + pos.width / 2 - actualWidth / 2\n } : placement == 'top' ? {\n top: pos.top - actualHeight,\n left: pos.left + pos.width / 2 - actualWidth / 2\n } : placement == 'left' ? {\n top: pos.top + pos.height / 2 - actualHeight / 2,\n left: pos.left - actualWidth\n } :\n /* placement == 'right' */\n {\n top: pos.top + pos.height / 2 - actualHeight / 2,\n left: pos.left + pos.width\n };\n };\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = {\n top: 0,\n left: 0\n };\n if (!this.$viewport) return delta;\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0;\n var viewportDimensions = this.getPosition(this.$viewport);\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll;\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight;\n\n if (topEdgeOffset < viewportDimensions.top) {\n // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset;\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) {\n // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset;\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding;\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth;\n\n if (leftEdgeOffset < viewportDimensions.left) {\n // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset;\n } else if (rightEdgeOffset > viewportDimensions.right) {\n // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset;\n }\n }\n\n return delta;\n };\n\n Tooltip.prototype.getTitle = function () {\n var title;\n var $e = this.$element;\n var o = this.options;\n title = $e.attr('data-original-title') || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title);\n return title;\n };\n\n Tooltip.prototype.getUID = function (prefix) {\n do {\n prefix += ~~(Math.random() * 1000000);\n } while (document.getElementById(prefix));\n\n return prefix;\n };\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template);\n\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!');\n }\n }\n\n return this.$tip;\n };\n\n Tooltip.prototype.arrow = function () {\n return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow');\n };\n\n Tooltip.prototype.enable = function () {\n this.enabled = true;\n };\n\n Tooltip.prototype.disable = function () {\n this.enabled = false;\n };\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled;\n };\n\n Tooltip.prototype.toggle = function (e) {\n var self = this;\n\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type);\n\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions());\n $(e.currentTarget).data('bs.' + this.type, self);\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click;\n if (self.isInStateTrue()) self.enter(self);else self.leave(self);\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self);\n }\n };\n\n Tooltip.prototype.destroy = function () {\n var that = this;\n clearTimeout(this.timeout);\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type);\n\n if (that.$tip) {\n that.$tip.detach();\n }\n\n that.$tip = null;\n that.$arrow = null;\n that.$viewport = null;\n that.$element = null;\n });\n };\n\n Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn);\n }; // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.tooltip');\n var options = _typeof(option) == 'object' && option;\n if (!data && /destroy|hide/.test(option)) return;\n if (!data) $this.data('bs.tooltip', data = new Tooltip(this, options));\n if (typeof option == 'string') data[option]();\n });\n }\n\n var old = $.fn.tooltip;\n $.fn.tooltip = Plugin;\n $.fn.tooltip.Constructor = Tooltip; // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old;\n return this;\n };\n}(jQuery);","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\n/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n+function ($) {\n 'use strict'; // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function Popover(element, options) {\n this.init('popover', element, options);\n };\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js');\n Popover.VERSION = '3.4.1';\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

'\n }); // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype);\n Popover.prototype.constructor = Popover;\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS;\n };\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip();\n var title = this.getTitle();\n var content = this.getContent();\n\n if (this.options.html) {\n var typeContent = _typeof(content);\n\n if (this.options.sanitize) {\n title = this.sanitizeHtml(title);\n\n if (typeContent === 'string') {\n content = this.sanitizeHtml(content);\n }\n }\n\n $tip.find('.popover-title').html(title);\n $tip.find('.popover-content').children().detach().end()[typeContent === 'string' ? 'html' : 'append'](content);\n } else {\n $tip.find('.popover-title').text(title);\n $tip.find('.popover-content').children().detach().end().text(content);\n }\n\n $tip.removeClass('fade top bottom left right in'); // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide();\n };\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent();\n };\n\n Popover.prototype.getContent = function () {\n var $e = this.$element;\n var o = this.options;\n return $e.attr('data-content') || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content);\n };\n\n Popover.prototype.arrow = function () {\n return this.$arrow = this.$arrow || this.tip().find('.arrow');\n }; // POPOVER PLUGIN DEFINITION\n // =========================\n\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.popover');\n var options = _typeof(option) == 'object' && option;\n if (!data && /destroy|hide/.test(option)) return;\n if (!data) $this.data('bs.popover', data = new Popover(this, options));\n if (typeof option == 'string') data[option]();\n });\n }\n\n var old = $.fn.popover;\n $.fn.popover = Plugin;\n $.fn.popover.Constructor = Popover; // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old;\n return this;\n };\n}(jQuery);","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\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n+function ($) {\n 'use strict'; // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body);\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element);\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options);\n this.selector = (this.options.target || '') + ' .nav li > a';\n this.offsets = [];\n this.targets = [];\n this.activeTarget = null;\n this.scrollHeight = 0;\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this));\n this.refresh();\n this.process();\n }\n\n ScrollSpy.VERSION = '3.4.1';\n ScrollSpy.DEFAULTS = {\n offset: 10\n };\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight);\n };\n\n ScrollSpy.prototype.refresh = function () {\n var that = this;\n var offsetMethod = 'offset';\n var offsetBase = 0;\n this.offsets = [];\n this.targets = [];\n this.scrollHeight = this.getScrollHeight();\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position';\n offsetBase = this.$scrollElement.scrollTop();\n }\n\n this.$body.find(this.selector).map(function () {\n var $el = $(this);\n var href = $el.data('target') || $el.attr('href');\n var $href = /^#./.test(href) && $(href);\n return $href && $href.length && $href.is(':visible') && [[$href[offsetMethod]().top + offsetBase, href]] || null;\n }).sort(function (a, b) {\n return a[0] - b[0];\n }).each(function () {\n that.offsets.push(this[0]);\n that.targets.push(this[1]);\n });\n };\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset;\n var scrollHeight = this.getScrollHeight();\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height();\n var offsets = this.offsets;\n var targets = this.targets;\n var activeTarget = this.activeTarget;\n var i;\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i);\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null;\n return this.clear();\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i] && scrollTop >= offsets[i] && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) && this.activate(targets[i]);\n }\n };\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target;\n this.clear();\n var selector = this.selector + '[data-target=\"' + target + '\"],' + this.selector + '[href=\"' + target + '\"]';\n var active = $(selector).parents('li').addClass('active');\n\n if (active.parent('.dropdown-menu').length) {\n active = active.closest('li.dropdown').addClass('active');\n }\n\n active.trigger('activate.bs.scrollspy');\n };\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector).parentsUntil(this.options.target, '.active').removeClass('active');\n }; // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.scrollspy');\n var options = _typeof(option) == 'object' && option;\n if (!data) $this.data('bs.scrollspy', data = new ScrollSpy(this, options));\n if (typeof option == 'string') data[option]();\n });\n }\n\n var old = $.fn.scrollspy;\n $.fn.scrollspy = Plugin;\n $.fn.scrollspy.Constructor = ScrollSpy; // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old;\n return this;\n }; // SCROLLSPY DATA-API\n // ==================\n\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this);\n Plugin.call($spy, $spy.data());\n });\n });\n}(jQuery);","/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n+function ($) {\n 'use strict'; // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function Tab(element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element); // jscs:enable requireDollarBeforejQueryAssignment\n };\n\n Tab.VERSION = '3.4.1';\n Tab.TRANSITION_DURATION = 150;\n\n Tab.prototype.show = function () {\n var $this = this.element;\n var $ul = $this.closest('ul:not(.dropdown-menu)');\n var selector = $this.data('target');\n\n if (!selector) {\n selector = $this.attr('href');\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, ''); // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return;\n var $previous = $ul.find('.active:last a');\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n });\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n });\n $previous.trigger(hideEvent);\n $this.trigger(showEvent);\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return;\n var $target = $(document).find(selector);\n this.activate($this.closest('li'), $ul);\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n });\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n });\n });\n };\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active');\n var transition = callback && $.support.transition && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length);\n\n function next() {\n $active.removeClass('active').find('> .dropdown-menu > .active').removeClass('active').end().find('[data-toggle=\"tab\"]').attr('aria-expanded', false);\n element.addClass('active').find('[data-toggle=\"tab\"]').attr('aria-expanded', true);\n\n if (transition) {\n element[0].offsetWidth; // reflow for transition\n\n element.addClass('in');\n } else {\n element.removeClass('fade');\n }\n\n if (element.parent('.dropdown-menu').length) {\n element.closest('li.dropdown').addClass('active').end().find('[data-toggle=\"tab\"]').attr('aria-expanded', true);\n }\n\n callback && callback();\n }\n\n $active.length && transition ? $active.one('bsTransitionEnd', next).emulateTransitionEnd(Tab.TRANSITION_DURATION) : next();\n $active.removeClass('in');\n }; // TAB PLUGIN DEFINITION\n // =====================\n\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.tab');\n if (!data) $this.data('bs.tab', data = new Tab(this));\n if (typeof option == 'string') data[option]();\n });\n }\n\n var old = $.fn.tab;\n $.fn.tab = Plugin;\n $.fn.tab.Constructor = Tab; // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old;\n return this;\n }; // TAB DATA-API\n // ============\n\n\n var clickHandler = function clickHandler(e) {\n e.preventDefault();\n Plugin.call($(this), 'show');\n };\n\n $(document).on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler).on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler);\n}(jQuery);","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\n/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n+function ($) {\n 'use strict'; // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function Affix(element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options);\n var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target);\n this.$target = target.on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)).on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this));\n this.$element = $(element);\n this.affixed = null;\n this.unpin = null;\n this.pinnedOffset = null;\n this.checkPosition();\n };\n\n Affix.VERSION = '3.4.1';\n Affix.RESET = 'affix affix-top affix-bottom';\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n };\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop();\n var position = this.$element.offset();\n var targetHeight = this.$target.height();\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false;\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return scrollTop + this.unpin <= position.top ? false : 'bottom';\n return scrollTop + targetHeight <= scrollHeight - offsetBottom ? false : 'bottom';\n }\n\n var initializing = this.affixed == null;\n var colliderTop = initializing ? scrollTop : position.top;\n var colliderHeight = initializing ? targetHeight : height;\n if (offsetTop != null && scrollTop <= offsetTop) return 'top';\n if (offsetBottom != null && colliderTop + colliderHeight >= scrollHeight - offsetBottom) return 'bottom';\n return false;\n };\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset;\n this.$element.removeClass(Affix.RESET).addClass('affix');\n var scrollTop = this.$target.scrollTop();\n var position = this.$element.offset();\n return this.pinnedOffset = position.top - scrollTop;\n };\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1);\n };\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return;\n var height = this.$element.height();\n var offset = this.options.offset;\n var offsetTop = offset.top;\n var offsetBottom = offset.bottom;\n var scrollHeight = Math.max($(document).height(), $(document.body).height());\n if (_typeof(offset) != 'object') offsetBottom = offsetTop = offset;\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element);\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element);\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom);\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '');\n var affixType = 'affix' + (affix ? '-' + affix : '');\n var e = $.Event(affixType + '.bs.affix');\n this.$element.trigger(e);\n if (e.isDefaultPrevented()) return;\n this.affixed = affix;\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null;\n this.$element.removeClass(Affix.RESET).addClass(affixType).trigger(affixType.replace('affix', 'affixed') + '.bs.affix');\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n });\n }\n }; // AFFIX PLUGIN DEFINITION\n // =======================\n\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.affix');\n var options = _typeof(option) == 'object' && option;\n if (!data) $this.data('bs.affix', data = new Affix(this, options));\n if (typeof option == 'string') data[option]();\n });\n }\n\n var old = $.fn.affix;\n $.fn.affix = Plugin;\n $.fn.affix.Constructor = Affix; // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old;\n return this;\n }; // AFFIX DATA-API\n // ==============\n\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this);\n var data = $spy.data();\n data.offset = data.offset || {};\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom;\n if (data.offsetTop != null) data.offset.top = data.offsetTop;\n Plugin.call($spy, data);\n });\n });\n}(jQuery);","import ReactDOM from 'react-dom';\nexport var unstable_batchedUpdates = ReactDOM.unstable_batchedUpdates;","import { notifyManager } from '../core';\nimport { unstable_batchedUpdates } from './reactBatchedUpdates';\nnotifyManager.setBatchNotifyFunction(unstable_batchedUpdates);","export var logger = console;","import { setLogger } from '../core';\nimport { logger } from './logger';\n\nif (logger) {\n setLogger(logger);\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 addDays from \"../addDays/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n *\n * | Key | Description |\n * |----------------|------------------------------------|\n * | years | Amount of years to be added |\n * | months | Amount of months to be added |\n * | weeks | Amount of weeks to be added |\n * | days | Amount of days to be added |\n * | hours | Amount of hours to be added |\n * | minutes | Amount of minutes to be added |\n * | seconds | Amount of seconds to be added |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * const result = add(new Date(2014, 8, 1, 10, 19, 50), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\n\nexport default function add(dirtyDate, duration) {\n requiredArgs(2, arguments);\n if (!duration || _typeof(duration) !== 'object') return new Date(NaN);\n var years = duration.years ? toInteger(duration.years) : 0;\n var months = duration.months ? toInteger(duration.months) : 0;\n var weeks = duration.weeks ? toInteger(duration.weeks) : 0;\n var days = duration.days ? toInteger(duration.days) : 0;\n var hours = duration.hours ? toInteger(duration.hours) : 0;\n var minutes = duration.minutes ? toInteger(duration.minutes) : 0;\n var seconds = duration.seconds ? toInteger(duration.seconds) : 0; // Add years and months\n\n var date = toDate(dirtyDate);\n var dateWithMonths = months || years ? addMonths(date, months + years * 12) : date; // Add weeks and days\n\n var dateWithDays = days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths; // Add days, hours, minutes and seconds\n\n var minutesToAdd = minutes + hours * 60;\n var secondsToAdd = seconds + minutesToAdd * 60;\n var msToAdd = secondsToAdd * 1000;\n var finalDate = new Date(dateWithDays.getTime() + msToAdd);\n return finalDate;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSunday\n * @category Weekday Helpers\n * @summary Is the given date Sunday?\n *\n * @description\n * Is the given date Sunday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 21 September 2014 Sunday?\n * var result = isSunday(new Date(2014, 8, 21))\n * //=> true\n */\n\nexport default function isSunday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 0;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSaturday\n * @category Weekday Helpers\n * @summary Is the given date Saturday?\n *\n * @description\n * Is the given date Saturday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Saturday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 27 September 2014 Saturday?\n * var result = isSaturday(new Date(2014, 8, 27))\n * //=> true\n */\n\nexport default function isSaturday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 6;\n}","import isWeekend from \"../isWeekend/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isSunday from \"../isSunday/index.js\";\nimport isSaturday from \"../isSaturday/index.js\";\n/**\n * @name addBusinessDays\n * @category Day Helpers\n * @summary Add the specified number of business days (mon - fri) to the given date.\n *\n * @description\n * Add the specified number of business days (mon - fri) to the given date, ignoring weekends.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of business 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 business days added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 10 business days to 1 September 2014:\n * const result = addBusinessDays(new Date(2014, 8, 1), 10)\n * //=> Mon Sep 15 2014 00:00:00 (skipped weekend days)\n */\n\nexport default function addBusinessDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var startedOnWeekend = isWeekend(date);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) return new Date(NaN);\n var hours = date.getHours();\n var sign = amount < 0 ? -1 : 1;\n var fullWeeks = toInteger(amount / 5);\n date.setDate(date.getDate() + fullWeeks * 7); // Get remaining days not part of a full week\n\n var restDays = Math.abs(amount % 5); // Loops over remaining days\n\n while (restDays > 0) {\n date.setDate(date.getDate() + sign);\n if (!isWeekend(date)) restDays -= 1;\n } // If the date is a weekend day and we reduce a dividable of\n // 5 from it, we land on a weekend date.\n // To counter this, we add days accordingly to land on the next business day\n\n\n if (startedOnWeekend && isWeekend(date) && amount !== 0) {\n // If we're reducing days, we want to add days until we land on a weekday\n // If we're adding days we want to reduce days until we land on a weekday\n if (isSaturday(date)) date.setDate(date.getDate() + (sign < 0 ? 2 : -1));\n if (isSunday(date)) date.setDate(date.getDate() + (sign < 0 ? 1 : -2));\n } // Restore hours to avoid DST lag\n\n\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours 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 hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\n\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `getISOYear` to `getISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Set the ISO week-numbering year to the given date.\n *\n * @description\n * Set the ISO week-numbering year to the given date,\n * saving the week number and the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `setISOYear` to `setISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `setWeekYear`.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} isoWeekYear - the ISO week-numbering year of the new date\n * @returns {Date} the new date with the ISO week-numbering year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set ISO week-numbering year 2007 to 29 December 2008:\n * const result = setISOWeekYear(new Date(2008, 11, 29), 2007)\n * //=> Mon Jan 01 2007 00:00:00\n */\n\nexport default function setISOWeekYear(dirtyDate, dirtyISOWeekYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeekYear = toInteger(dirtyISOWeekYear);\n var diff = differenceInCalendarDays(date, startOfISOWeekYear(date));\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(isoWeekYear, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n date = startOfISOWeekYear(fourthOfJanuary);\n date.setDate(date.getDate() + diff);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport setISOWeekYear from \"../setISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Add the specified number of ISO week-numbering years to the given date.\n *\n * @description\n * Add the specified number of ISO week-numbering years to the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `addISOYears` to `addISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering 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 ISO week-numbering years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 ISO week-numbering years to 2 July 2010:\n * const result = addISOWeekYears(new Date(2010, 6, 2), 5)\n * //=> Fri Jun 26 2015 00:00:00\n */\n\nexport default function addISOWeekYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return setISOWeekYear(dirtyDate, getISOWeekYear(dirtyDate) + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes 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 minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\n\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters 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 quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\n\nexport default function addQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var months = amount * 3;\n return addMonths(dirtyDate, months);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds 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 seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\n\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * 1000);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks 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 weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\n\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name areIntervalsOverlapping\n * @category Interval Helpers\n * @summary Is the given time interval overlapping with another time interval?\n *\n * @description\n * Is the given time interval overlapping with another time interval? Adjacent intervals do not count as overlapping.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `areRangesOverlapping` to `areIntervalsOverlapping`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * areRangesOverlapping(\n * new Date(2014, 0, 10), new Date(2014, 0, 20),\n * new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n *\n * // v2.0.0 onward\n *\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * ```\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.inclusive=false] - whether the comparison is inclusive or not\n * @returns {Boolean} whether the time intervals are overlapping\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * //=> true\n *\n * @example\n * // For non-overlapping time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }\n * )\n * //=> false\n *\n * @example\n * // For adjacent time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 30) }\n * )\n * //=> false\n *\n * @example\n * // Using the inclusive option:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) }\n * )\n * //=> false\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) },\n * { inclusive: true }\n * )\n * //=> true\n */\n\nexport default function areIntervalsOverlapping(dirtyIntervalLeft, dirtyIntervalRight) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n inclusive: false\n };\n requiredArgs(2, arguments);\n var intervalLeft = dirtyIntervalLeft || {};\n var intervalRight = dirtyIntervalRight || {};\n var leftStartTime = toDate(intervalLeft.start).getTime();\n var leftEndTime = toDate(intervalLeft.end).getTime();\n var rightStartTime = toDate(intervalRight.start).getTime();\n var rightEndTime = toDate(intervalRight.end).getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval');\n }\n\n if (options.inclusive) {\n return leftStartTime <= rightEndTime && rightStartTime <= leftEndTime;\n }\n\n return leftStartTime < rightEndTime && rightStartTime < leftEndTime;\n}","import max from \"../max/index.js\";\nimport min from \"../min/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name clamp\n * @category Interval Helpers\n * @summary Return a date bounded by the start and the end of the given interval\n *\n * @description\n * Clamps a date to the lower bound with the start of the interval and the upper\n * bound with the end of the interval.\n *\n * - When the date is less than the start of the interval, the start is returned.\n * - When the date is greater than the end of the interval, the end is returned.\n * - Otherwise the date is returned.\n *\n * @example\n * // What is Mar, 21, 2021 bounded to an interval starting at Mar, 22, 2021 and ending at Apr, 01, 2021\n * const result = clamp(new Date(2021, 2, 21), {\n * start: new Date(2021, 2, 22),\n * end: new Date(2021, 3, 1),\n * })\n * //=> Mon Mar 22 2021 00:00:00\n *\n * @param {Date | Number} date - the date to be bounded\n * @param {Interval} interval - the interval to bound to\n * @returns {Date} the date bounded by the start and the end of the interval\n * @throws {TypeError} 2 arguments required\n */\n\nexport default function clamp(date, _ref) {\n var start = _ref.start,\n end = _ref.end;\n requiredArgs(2, arguments);\n return min([max([date, start]), end]);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name closestIndexTo\n * @category Common Helpers\n * @summary Return an index of the closest date from the array comparing to the given date.\n *\n * @description\n * Return an index of the closest date from the array comparing to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now, `closestIndexTo` doesn't throw an exception\n * when the second argument is not an array, and returns Invalid Date instead.\n *\n * @param {Date|Number} dateToCompare - the date to compare with\n * @param {Date[]|Number[]} datesArray - the array to search\n * @returns {Number} an index of the date closest to the given date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015?\n * var dateToCompare = new Date(2015, 8, 6)\n * var datesArray = [\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * new Date(2017, 0, 1)\n * ]\n * var result = closestIndexTo(dateToCompare, datesArray)\n * //=> 1\n */\n\nexport default function closestIndexTo(dirtyDateToCompare, dirtyDatesArray) {\n requiredArgs(2, arguments);\n var dateToCompare = toDate(dirtyDateToCompare);\n\n if (isNaN(dateToCompare)) {\n return NaN;\n }\n\n var timeToCompare = dateToCompare.getTime();\n var datesArray; // `dirtyDatesArray` is undefined or null\n\n if (dirtyDatesArray == null) {\n datesArray = []; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n }\n\n var result;\n var minDistance;\n datesArray.forEach(function (dirtyDate, index) {\n var currentDate = toDate(dirtyDate);\n\n if (isNaN(currentDate)) {\n result = NaN;\n minDistance = NaN;\n return;\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n\n if (result == null || distance < minDistance) {\n result = index;\n minDistance = distance;\n }\n });\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name closestTo\n * @category Common Helpers\n * @summary Return a date from the array closest to the given date.\n *\n * @description\n * Return a date from the array closest to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now, `closestTo` doesn't throw an exception\n * when the second argument is not an array, and returns Invalid Date instead.\n *\n * @param {Date|Number} dateToCompare - the date to compare with\n * @param {Date[]|Number[]} datesArray - the array to search\n * @returns {Date} the date from the array closest to the given date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?\n * var dateToCompare = new Date(2015, 8, 6)\n * var result = closestTo(dateToCompare, [\n * new Date(2000, 0, 1),\n * new Date(2030, 0, 1)\n * ])\n * //=> Tue Jan 01 2030 00:00:00\n */\n\nexport default function closestTo(dirtyDateToCompare, dirtyDatesArray) {\n requiredArgs(2, arguments);\n var dateToCompare = toDate(dirtyDateToCompare);\n\n if (isNaN(dateToCompare)) {\n return new Date(NaN);\n }\n\n var timeToCompare = dateToCompare.getTime();\n var datesArray; // `dirtyDatesArray` is undefined or null\n\n if (dirtyDatesArray == null) {\n datesArray = []; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n }\n\n var result;\n var minDistance;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (isNaN(currentDate)) {\n result = new Date(NaN);\n minDistance = NaN;\n return;\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n\n if (result == null || distance < minDistance) {\n result = currentDate;\n minDistance = distance;\n }\n });\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareDesc\n * @category Common Helpers\n * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return -1 if the first date is after the second,\n * 1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:\n * const result = compareDesc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> 1\n *\n * @example\n * // Sort the array of dates in reverse chronological order:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareDesc)\n * //=> [\n * // Sun Jul 02 1995 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Wed Feb 11 1987 00:00:00\n * // ]\n */\n\nexport default function compareDesc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n\n if (diff > 0) {\n return -1;\n } else if (diff < 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { daysInWeek } from \"../constants/index.js\";\n/**\n * @name daysToWeeks\n * @category Conversion Helpers\n * @summary Convert days to weeks.\n *\n * @description\n * Convert a number of days to a full number of weeks.\n *\n * @param {number} days - number of days to be converted\n *\n * @returns {number} the number of days converted in weeks\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 14 days to weeks:\n * const result = daysToWeeks(14)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = daysToWeeks(13)\n * //=> 1\n */\n\nexport default function daysToWeeks(days) {\n requiredArgs(1, arguments);\n var weeks = days / daysInWeek;\n return Math.floor(weeks);\n}","import isValid from \"../isValid/index.js\";\nimport isWeekend from \"../isWeekend/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport isSameDay from \"../isSameDay/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInBusinessDays\n * @category Day Helpers\n * @summary Get the number of business days between the given dates.\n *\n * @description\n * Get the number of business day periods between the given dates.\n * Business days being days that arent in the weekend.\n * Like `differenceInCalendarDays`, the function removes the times from\n * the dates before calculating the difference.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of business days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many business days are between\n * // 10 January 2014 and 20 July 2014?\n * var result = differenceInBusinessDays(\n * new Date(2014, 6, 20),\n * new Date(2014, 0, 10)\n * )\n * //=> 136\n */\n\nexport default function differenceInBusinessDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n if (!isValid(dateLeft) || !isValid(dateRight)) return NaN;\n var calendarDifference = differenceInCalendarDays(dateLeft, dateRight);\n var sign = calendarDifference < 0 ? -1 : 1;\n var weeks = toInteger(calendarDifference / 7);\n var result = weeks * 5;\n dateRight = addDays(dateRight, weeks * 7); // the loop below will run at most 6 times to account for the remaining days that don't makeup a full week\n\n while (!isSameDay(dateLeft, dateRight)) {\n // sign is used to account for both negative and positive differences\n result += isWeekend(dateRight) ? 0 : sign;\n dateRight = addDays(dateRight, sign);\n }\n\n return result === 0 ? 0 : result;\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of calendar ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of calendar ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `differenceInCalendarISOYears` to `differenceInCalendarISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?\n * const result = differenceInCalendarISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarISOWeekYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n return getISOWeekYear(dirtyDateLeft) - getISOWeekYear(dirtyDateRight);\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name differenceInCalendarISOWeeks\n * @category ISO Week Helpers\n * @summary Get the number of calendar ISO weeks between the given dates.\n *\n * @description\n * Get the number of calendar ISO weeks between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?\n * const result = differenceInCalendarISOWeeks(\n * new Date(2014, 6, 21),\n * new Date(2014, 6, 6)\n * )\n * //=> 3\n */\n\nexport default function differenceInCalendarISOWeeks(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft);\n var startOfISOWeekRight = startOfISOWeek(dirtyDateRight);\n var timestampLeft = startOfISOWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfISOWeekLeft);\n var timestampRight = startOfISOWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfISOWeekRight); // 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 getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\n\nexport default function getQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var quarter = Math.floor(date.getMonth() / 3) + 1;\n return quarter;\n}","import getQuarter from \"../getQuarter/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarQuarters\n * @category Quarter Helpers\n * @summary Get the number of calendar quarters between the given dates.\n *\n * @description\n * Get the number of calendar quarters between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInCalendarQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 3\n */\n\nexport default function differenceInCalendarQuarters(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var quarterDiff = getQuarter(dateLeft) - getQuarter(dateRight);\n return yearDiff * 4 + quarterDiff;\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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, dirtyOptions) {\n requiredArgs(2, arguments);\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions);\n var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions);\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 toInteger from \"../_lib/toInteger/index.js\";\nimport addISOWeekYears from \"../addISOWeekYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Subtract the specified number of ISO week-numbering years from the given date.\n *\n * @description\n * Subtract the specified number of ISO week-numbering years from the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `subISOYears` to `subISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `setWeekYear`.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be subtracted. 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 ISO week-numbering years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 ISO week-numbering years from 1 September 2014:\n * const result = subISOWeekYears(new Date(2014, 8, 1), 5)\n * //=> Mon Aug 31 2009 00:00:00\n */\n\nexport default function subISOWeekYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addISOWeekYears(dirtyDate, -amount);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarISOWeekYears from \"../differenceInCalendarISOWeekYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport subISOWeekYears from \"../subISOWeekYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of full ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of full ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `differenceInISOYears` to `differenceInISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full ISO week-numbering years are between 1 January 2010 and 1 January 2012?\n * var result = differenceInISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 1\n */\n\nexport default function differenceInISOWeekYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarISOWeekYears(dateLeft, dateRight));\n dateLeft = subISOWeekYears(dateLeft, sign * difference); // Math.abs(diff in full ISO years - diff in calendar ISO years) === 1\n // if last calendar ISO year is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastISOWeekYearNotFull = Number(compareAsc(dateLeft, dateRight) === -sign);\n var result = sign * (difference - isLastISOWeekYearNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import differenceInMonths from \"../differenceInMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of full quarters between the given dates.\n *\n * @description\n * Get the number of full quarters between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\n\nexport default function differenceInQuarters(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var diff = differenceInMonths(dirtyDateLeft, dirtyDateRight) / 3;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}","import differenceInDays from \"../differenceInDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * const result = differenceInWeeks(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 6)\n * )\n * //=> 8\n */\n\nexport default function differenceInWeeks(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var diff = differenceInDays(dirtyDateLeft, dirtyDateRight) / 7;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}","import addHours from \"../addHours/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachHourOfInterval\n * @category Interval Helpers\n * @summary Return the array of hours within the specified time interval.\n *\n * @description\n * Return the array of hours within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of hours from the hour of the interval start to the hour of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each hour between 6 October 2014, 12:00 and 6 October 2014, 15:00\n * var result = eachHourOfInterval({\n * start: new Date(2014, 9, 6, 12),\n * end: new Date(2014, 9, 6, 15)\n * })\n * //=> [\n * // Mon Oct 06 2014 12:00:00,\n * // Mon Oct 06 2014 13:00:00,\n * // Mon Oct 06 2014 14:00:00,\n * // Mon Oct 06 2014 15:00:00\n * // ]\n */\n\nexport default function eachHourOfInterval(dirtyInterval, options) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var startTime = startDate.getTime();\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n currentDate.setMinutes(0, 0, 0);\n var step = options && 'step' in options ? Number(options.step) : 1;\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate = addHours(currentDate, step);\n }\n\n return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * const result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\n\nexport default function startOfMinute(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setSeconds(0, 0);\n return date;\n}","import addMinutes from \"../addMinutes/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport startOfMinute from \"../startOfMinute/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachMinuteOfInterval\n * @category Interval Helpers\n * @summary Return the array of minutes within the specified time interval.\n *\n * @description\n * Returns the array of minutes within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The starts of minutes from the hour of the interval start to the hour of the interval end\n * @throws {TypeError} 1 argument requie value should be more than 1.\n * @returns {Date[]} the array withred\n * @throws {RangeError} `options.step` must be a number equal or greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each minute between 14 October 2020, 13:00 and 14 October 2020, 13:03\n * const result = eachMinuteOfInterval({\n * start: new Date(2014, 9, 14, 13),\n * end: new Date(2014, 9, 14, 13, 3)\n * })\n * //=> [\n * // Wed Oct 14 2014 13:00:00,\n * // Wed Oct 14 2014 13:01:00,\n * // Wed Oct 14 2014 13:02:00,\n * // Wed Oct 14 2014 13:03:00\n * // ]\n */\n\nexport default function eachMinuteOfInterval(interval, options) {\n requiredArgs(1, arguments);\n var startDate = startOfMinute(toDate(interval.start));\n var endDate = startOfMinute(toDate(interval.end));\n var startTime = startDate.getTime();\n var endTime = endDate.getTime();\n\n if (startTime >= endTime) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n var step = options && 'step' in options ? Number(options.step) : 1;\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number equal or greater than 1');\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate = addMinutes(currentDate, step);\n }\n\n return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachMonthOfInterval\n * @category Interval Helpers\n * @summary Return the array of months within the specified time interval.\n *\n * @description\n * Return the array of months within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of months from the month of the interval start to the month of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each month between 6 February 2014 and 10 August 2014:\n * var result = eachMonthOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2014, 7, 10)\n * })\n * //=> [\n * // Sat Feb 01 2014 00:00:00,\n * // Sat Mar 01 2014 00:00:00,\n * // Tue Apr 01 2014 00:00:00,\n * // Thu May 01 2014 00:00:00,\n * // Sun Jun 01 2014 00:00:00,\n * // Tue Jul 01 2014 00:00:00,\n * // Fri Aug 01 2014 00:00:00\n * // ]\n */\n\nexport default function eachMonthOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n var dates = []; // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n currentDate.setDate(1);\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setMonth(currentDate.getMonth() + 1);\n }\n\n return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\n\nexport default function startOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3;\n date.setMonth(month, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import addQuarters from \"../addQuarters/index.js\";\nimport startOfQuarter from \"../startOfQuarter/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachQuarterOfInterval\n * @category Interval Helpers\n * @summary Return the array of quarters within the specified time interval.\n *\n * @description\n * Return the array of quarters within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of quarters from the quarter of the interval start to the quarter of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each quarter within interval 6 February 2014 - 10 August 2014:\n * var result = eachQuarterOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2014, 7, 10)\n * })\n * //=> [\n * // Wed Jan 01 2014 00:00:00,\n * // Tue Apr 01 2014 00:00:00,\n * // Tue Jul 01 2014 00:00:00,\n * // ]\n */\n\nexport default function eachQuarterOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var startDateQuarter = startOfQuarter(startDate);\n var endDateQuarter = startOfQuarter(endDate);\n endTime = endDateQuarter.getTime();\n var quarters = [];\n var currentQuarter = startDateQuarter;\n\n while (currentQuarter.getTime() <= endTime) {\n quarters.push(toDate(currentQuarter));\n currentQuarter = addQuarters(currentQuarter, 1);\n }\n\n return quarters;\n}","import addWeeks from \"../addWeeks/index.js\";\nimport startOfWeek from \"../startOfWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekOfInterval\n * @category Interval Helpers\n * @summary Return the array of weeks within the specified time interval.\n *\n * @description\n * Return the array of weeks within the specified time interval.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\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 array with starts of weeks from the week of the interval start to the week of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be 0, 1, ..., 6\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each week within interval 6 October 2014 - 23 November 2014:\n * var result = eachWeekOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 10, 23)\n * })\n * //=> [\n * // Sun Oct 05 2014 00:00:00,\n * // Sun Oct 12 2014 00:00:00,\n * // Sun Oct 19 2014 00:00:00,\n * // Sun Oct 26 2014 00:00:00,\n * // Sun Nov 02 2014 00:00:00,\n * // Sun Nov 09 2014 00:00:00,\n * // Sun Nov 16 2014 00:00:00,\n * // Sun Nov 23 2014 00:00:00\n * // ]\n */\n\nexport default function eachWeekOfInterval(dirtyInterval, options) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var startDateWeek = startOfWeek(startDate, options);\n var endDateWeek = startOfWeek(endDate, options); // Some timezones switch DST at midnight, making start of day unreliable in these timezones, 3pm is a safe bet\n\n startDateWeek.setHours(15);\n endDateWeek.setHours(15);\n endTime = endDateWeek.getTime();\n var weeks = [];\n var currentWeek = startDateWeek;\n\n while (currentWeek.getTime() <= endTime) {\n currentWeek.setHours(0);\n weeks.push(toDate(currentWeek));\n currentWeek = addWeeks(currentWeek, 1);\n currentWeek.setHours(15);\n }\n\n return weeks;\n}","import eachDayOfInterval from \"../eachDayOfInterval/index.js\";\nimport isSunday from \"../isSunday/index.js\";\nimport isWeekend from \"../isWeekend/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekendOfInterval\n * @category Interval Helpers\n * @summary List all the Saturdays and Sundays in the given date interval.\n *\n * @description\n * Get all the Saturdays and Sundays in the given date interval.\n *\n * @param {Interval} interval - the given interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Lists all Saturdays and Sundays in the given date interval\n * const result = eachWeekendOfInterval({\n * start: new Date(2018, 8, 17),\n * end: new Date(2018, 8, 30)\n * })\n * //=> [\n * // Sat Sep 22 2018 00:00:00,\n * // Sun Sep 23 2018 00:00:00,\n * // Sat Sep 29 2018 00:00:00,\n * // Sun Sep 30 2018 00:00:00\n * // ]\n */\n\nexport default function eachWeekendOfInterval(interval) {\n requiredArgs(1, arguments);\n var dateInterval = eachDayOfInterval(interval);\n var weekends = [];\n var index = 0;\n\n while (index < dateInterval.length) {\n var date = dateInterval[index++];\n\n if (isWeekend(date)) {\n weekends.push(date);\n if (isSunday(date)) index = index + 5;\n }\n }\n\n return weekends;\n}","import eachWeekendOfInterval from \"../eachWeekendOfInterval/index.js\";\nimport startOfMonth from \"../startOfMonth/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekendOfMonth\n * @category Month Helpers\n * @summary List all the Saturdays and Sundays in the given month.\n *\n * @description\n * Get all the Saturdays and Sundays in the given month.\n *\n * @param {Date|Number} date - the given month\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The passed date is invalid\n *\n * @example\n * // Lists all Saturdays and Sundays in the given month\n * const result = eachWeekendOfMonth(new Date(2022, 1, 1))\n * //=> [\n * // Sat Feb 05 2022 00:00:00,\n * // Sun Feb 06 2022 00:00:00,\n * // Sat Feb 12 2022 00:00:00,\n * // Sun Feb 13 2022 00:00:00,\n * // Sat Feb 19 2022 00:00:00,\n * // Sun Feb 20 2022 00:00:00,\n * // Sat Feb 26 2022 00:00:00,\n * // Sun Feb 27 2022 00:00:00\n * // ]\n */\n\nexport default function eachWeekendOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var startDate = startOfMonth(dirtyDate);\n if (isNaN(startDate.getTime())) throw new RangeError('The passed date is invalid');\n var endDate = endOfMonth(dirtyDate);\n return eachWeekendOfInterval({\n start: startDate,\n end: endDate\n });\n}","import eachWeekendOfInterval from \"../eachWeekendOfInterval/index.js\";\nimport startOfYear from \"../startOfYear/index.js\";\nimport endOfYear from \"../endOfYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekendOfYear\n * @category Year Helpers\n * @summary List all the Saturdays and Sundays in the year.\n *\n * @description\n * Get all the Saturdays and Sundays in the year.\n *\n * @param {Date|Number} date - the given year\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The passed date is invalid\n *\n * @example\n * // Lists all Saturdays and Sundays in the year\n * var result = eachWeekendOfYear(new Date(2020, 1, 1))\n * //=> [\n * // Sat Jan 03 2020 00:00:00,\n * // Sun Jan 04 2020 00:00:00,\n * // ...\n * // Sun Dec 27 2020 00:00:00\n * // ]\n * ]\n */\n\nexport default function eachWeekendOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var startDate = startOfYear(dirtyDate);\n if (isNaN(startDate)) throw new RangeError('The passed date is invalid');\n var endDate = endOfYear(dirtyDate);\n return eachWeekendOfInterval({\n start: startDate,\n end: endDate\n });\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachYearOfInterval\n * @category Interval Helpers\n * @summary Return the array of yearly timestamps within the specified time interval.\n *\n * @description\n * Return the array of yearly timestamps within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of yearly timestamps from the month of the interval start to the month of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each year between 6 February 2014 and 10 August 2017:\n * var result = eachYearOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2017, 7, 10)\n * })\n * //=> [\n * // Wed Jan 01 2014 00:00:00,\n * // Thu Jan 01 2015 00:00:00,\n * // Fri Jan 01 2016 00:00:00,\n * // Sun Jan 01 2017 00:00:00\n * // ]\n */\n\nexport default function eachYearOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n currentDate.setMonth(0, 1);\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setFullYear(currentDate.getFullYear() + 1);\n }\n\n return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDecade\n * @category Decade Helpers\n * @summary Return the end of a decade for the given date.\n *\n * @description\n * Return the end of a decade for the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a decade\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a decade for 12 May 1984 00:00:00:\n * const result = endOfDecade(new Date(1984, 4, 12, 00, 00, 00))\n * //=> Dec 31 1989 23:59:59.999\n */\n\nexport default function endOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = 9 + Math.floor(year / 10) * 10;\n date.setFullYear(decade, 11, 31);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * const result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\n\nexport default function endOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(59, 59, 999);\n return date;\n}","import endOfWeek from \"../endOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * var result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\n\nexport default function endOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return endOfWeek(dirtyDate, {\n weekStartsOn: 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 endOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the end of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the end 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `endOfISOYear` to `endOfISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week-numbering year for 2 July 2005:\n * const result = endOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 23:59:59.999\n */\n\nexport default function endOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuaryOfNextYear);\n date.setMilliseconds(date.getMilliseconds() - 1);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * const result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\n\nexport default function endOfMinute(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setSeconds(59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * const result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3 + 3;\n date.setMonth(month, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * const result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\n\nexport default function endOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(999);\n return date;\n}","import endOfDay from \"../endOfDay/index.js\";\n/**\n * @name endOfToday\n * @category Day Helpers\n * @summary Return the end of today.\n * @pure false\n *\n * @description\n * Return the end of today.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the end of today\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfToday()\n * //=> Mon Oct 6 2014 23:59:59.999\n */\n\nexport default function endOfToday() {\n return endOfDay(Date.now());\n}","/**\n * @name endOfTomorrow\n * @category Day Helpers\n * @summary Return the end of tomorrow.\n * @pure false\n *\n * @description\n * Return the end of tomorrow.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the end of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * const result = endOfTomorrow()\n * //=> Tue Oct 7 2014 23:59:59.999\n */\nexport default function endOfTomorrow() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day + 1);\n date.setHours(23, 59, 59, 999);\n return date;\n}","/**\n * @name endOfYesterday\n * @category Day Helpers\n * @summary Return the end of yesterday.\n * @pure false\n *\n * @description\n * Return the end of yesterday.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the end of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * const result = endOfYesterday()\n * //=> Sun Oct 5 2014 23:59:59.999\n */\nexport default function endOfYesterday() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day - 1);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import compareAsc from \"../compareAsc/index.js\";\nimport differenceInMonths from \"../differenceInMonths/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_TWO_MONTHS = 86400;\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWords ` to `formatDistance`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWords(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 11, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n *\n * // v2.0.0 onward\n *\n * formatDistance(\n * new Date(1986, 3, 4, 11, 32, 0),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n * ```\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * const result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistance(dirtyDate, dirtyBaseDate) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n requiredArgs(2, arguments);\n var locale = options.locale || defaultLocale;\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property');\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n\n var localizeOptions = cloneObject(options);\n localizeOptions.addSuffix = Boolean(options.addSuffix);\n localizeOptions.comparison = comparison;\n var dateLeft;\n var dateRight;\n\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000;\n var minutes = Math.round((seconds - offsetInSeconds) / 60);\n var months; // 0 up to 2 mins\n\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', null, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n }\n } // 2 mins up to 0.75 hrs\n\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions); // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions); // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60);\n return locale.formatDistance('aboutXHours', hours, localizeOptions); // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions); // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions); // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('aboutXMonths', months, localizeOptions);\n }\n\n months = differenceInMonths(dateRight, dateLeft); // 2 months up to 12 months\n\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions); // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12); // N years up to 1 years 3 months\n\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions); // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions); // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions);\n }\n }\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 1000 * 60;\nvar MINUTES_IN_DAY = 60 * 24;\nvar MINUTES_IN_MONTH = MINUTES_IN_DAY * 30;\nvar MINUTES_IN_YEAR = MINUTES_IN_DAY * 365;\n/**\n * @name formatDistanceStrict\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWordsStrict` to `formatDistanceStrict`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(2015, 0, 2),\n * new Date(2014, 6, 2)\n * ) //=> '6 months'\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 2)\n * ) //=> '6 months'\n * ```\n *\n * - `partialMethod` option is renamed to `roundingMethod`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 10, 33, 1),\n * { partialMethod: 'ceil' }\n * ) //=> '2 minutes'\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(1986, 3, 4, 10, 33, 1),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { roundingMethod: 'ceil' }\n * ) //=> '2 minutes'\n * ```\n *\n * - If `roundingMethod` is not specified, it now defaults to `round` instead of `floor`.\n *\n * - `unit` option now accepts one of the strings:\n * 'second', 'minute', 'hour', 'day', 'month' or 'year' instead of 's', 'm', 'h', 'd', 'M' or 'Y'\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 10, 33, 1),\n * { unit: 'm' }\n * )\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(1986, 3, 4, 10, 33, 1),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { unit: 'minute' }\n * )\n * ```\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.roundingMethod` must be 'floor', 'ceil' or 'round'\n * @throws {RangeError} `options.unit` must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistanceStrict(new Date(2014, 6, 2), new Date(2015, 0, 2))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * const result = formatDistanceStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0)\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistanceStrict(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * const result = formatDistanceStrict(new Date(2016, 0, 1), new Date(2015, 0, 1), {\n * unit: 'minute'\n * })\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2015\n * // to 28 January 2015, in months, rounded up?\n * const result = formatDistanceStrict(new Date(2015, 0, 28), new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistanceStrict(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> '1 jaro'\n */\n\nexport default function formatDistanceStrict(dirtyDate, dirtyBaseDate) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n requiredArgs(2, arguments);\n var locale = options.locale || defaultLocale;\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain localize.formatDistance property');\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n\n var localizeOptions = cloneObject(options);\n localizeOptions.addSuffix = Boolean(options.addSuffix);\n localizeOptions.comparison = comparison;\n var dateLeft;\n var dateRight;\n\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n\n var roundingMethod = options.roundingMethod == null ? 'round' : String(options.roundingMethod);\n var roundingMethodFn;\n\n if (roundingMethod === 'floor') {\n roundingMethodFn = Math.floor;\n } else if (roundingMethod === 'ceil') {\n roundingMethodFn = Math.ceil;\n } else if (roundingMethod === 'round') {\n roundingMethodFn = Math.round;\n } else {\n throw new RangeError(\"roundingMethod must be 'floor', 'ceil' or 'round'\");\n }\n\n var milliseconds = dateRight.getTime() - dateLeft.getTime();\n var minutes = milliseconds / MILLISECONDS_IN_MINUTE;\n var timezoneOffset = getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft); // Use DST-normalized difference in minutes for years, months and days;\n // use regular difference in minutes for hours, minutes and seconds.\n\n var dstNormalizedMinutes = (milliseconds - timezoneOffset) / MILLISECONDS_IN_MINUTE;\n var unit;\n\n if (options.unit == null) {\n if (minutes < 1) {\n unit = 'second';\n } else if (minutes < 60) {\n unit = 'minute';\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'hour';\n } else if (dstNormalizedMinutes < MINUTES_IN_MONTH) {\n unit = 'day';\n } else if (dstNormalizedMinutes < MINUTES_IN_YEAR) {\n unit = 'month';\n } else {\n unit = 'year';\n }\n } else {\n unit = String(options.unit);\n } // 0 up to 60 seconds\n\n\n if (unit === 'second') {\n var seconds = roundingMethodFn(milliseconds / 1000);\n return locale.formatDistance('xSeconds', seconds, localizeOptions); // 1 up to 60 mins\n } else if (unit === 'minute') {\n var roundedMinutes = roundingMethodFn(minutes);\n return locale.formatDistance('xMinutes', roundedMinutes, localizeOptions); // 1 up to 24 hours\n } else if (unit === 'hour') {\n var hours = roundingMethodFn(minutes / 60);\n return locale.formatDistance('xHours', hours, localizeOptions); // 1 up to 30 days\n } else if (unit === 'day') {\n var days = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions); // 1 up to 12 months\n } else if (unit === 'month') {\n var months = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_MONTH);\n return months === 12 && options.unit !== 'month' ? locale.formatDistance('xYears', 1, localizeOptions) : locale.formatDistance('xMonths', months, localizeOptions); // 1 year up to max Date\n } else if (unit === 'year') {\n var years = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_YEAR);\n return locale.formatDistance('xYears', years, localizeOptions);\n }\n\n throw new RangeError(\"unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\");\n}","import distanceInWords from \"../formatDistance/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNow\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWordsToNow ` to `formatDistanceToNow`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsToNow(new Date(2014, 6, 2), { addSuffix: true })\n * //=> 'in 6 months'\n *\n * // v2.0.0 onward\n *\n * formatDistanceToNow(new Date(2014, 6, 2), { addSuffix: true })\n * //=> 'in 6 months'\n * ```\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result specifies if now is earlier or later than the passed date\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * var result = formatDistanceToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * var result = formatDistanceToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * var result = formatDistanceToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = formatDistanceToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistanceToNow(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n return distanceInWords(dirtyDate, Date.now(), dirtyOptions);\n}","import formatDistanceStrict from \"../formatDistanceStrict/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNowStrict\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * var result = formatDistanceToNowStrict(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * var result = formatDistanceToNowStrict(\n * new Date(2015, 0, 1, 0, 0, 15)\n * )\n * //=> '20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * var result = formatDistanceToNowStrict(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in 1 year'\n *\n * @example\n * // If today is 28 January 2015,\n * // what is the distance to 1 January 2015, in months, rounded up??\n * var result = formatDistanceToNowStrict(new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = formatDistanceToNowStrict(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\n\nexport default function formatDistanceToNowStrict(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n return formatDistanceStrict(dirtyDate, Date.now(), dirtyOptions);\n}","import defaultLocale from \"../locale/en-US/index.js\";\nvar defaultFormat = ['years', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds'];\n/**\n * @name formatDuration\n * @category Common Helpers\n * @summary Formats a duration in human-readable format\n *\n * @description\n * Return human-readable duration string i.e. \"9 months 2 days\"\n *\n * @param {Duration} duration - the duration to format\n * @param {Object} [options] - an object with options.\n\n * @param {string[]} [options.format=['years', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds']] - the array of units to format\n * @param {boolean} [options.zero=false] - should be zeros be included in the output?\n * @param {string} [options.delimiter=' '] - delimiter string\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {string} the formatted date string\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Format full duration\n * formatDuration({\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * })\n * //=> '2 years 9 months 1 week 7 days 5 hours 9 minutes 30 seconds\n *\n * @example\n * // Format partial duration\n * formatDuration({ months: 9, days: 2 })\n * //=> '9 months 2 days'\n *\n * @example\n * // Customize the format\n * formatDuration(\n * {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * },\n * { format: ['months', 'weeks'] }\n * ) === '9 months 1 week'\n *\n * @example\n * // Customize the zeros presence\n * formatDuration({ years: 0, months: 9 })\n * //=> '9 months'\n * formatDuration({ years: 0, months: 9 }, { zero: true })\n * //=> '0 years 9 months'\n *\n * @example\n * // Customize the delimiter\n * formatDuration({ years: 2, months: 9, weeks: 3 }, { delimiter: ', ' })\n * //=> '2 years, 9 months, 3 weeks'\n */\n\nexport default function formatDuration(duration, options) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \".concat(arguments.length, \" present\"));\n }\n\n var format = (options === null || options === void 0 ? void 0 : options.format) || defaultFormat;\n var locale = (options === null || options === void 0 ? void 0 : options.locale) || defaultLocale;\n var zero = (options === null || options === void 0 ? void 0 : options.zero) || false;\n var delimiter = (options === null || options === void 0 ? void 0 : options.delimiter) || ' ';\n var result = format.reduce(function (acc, unit) {\n var token = \"x\".concat(unit.replace(/(^.)/, function (m) {\n return m.toUpperCase();\n }));\n var addChunk = typeof duration[unit] === 'number' && (zero || duration[unit]);\n return addChunk ? acc.concat(locale.formatDistance(token, duration[unit])) : acc;\n }, []).join(delimiter);\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\n/**\n * @name formatISO\n * @category Common Helpers\n * @summary Format the date according to the ISO 8601 standard (http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003169814.htm).\n *\n * @description\n * Return the formatted date string in ISO 8601 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.\n * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time with time zone, or both.\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.format` must be 'extended' or 'basic'\n * @throws {RangeError} `options.represenation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format (UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601, short format (UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918T190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, date only:\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, time only (UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52Z'\n */\n\nexport default function formatISO(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \".concat(arguments.length, \" present\"));\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n var options = dirtyOptions || {};\n var format = options.format == null ? 'extended' : String(options.format);\n var representation = options.representation == null ? 'complete' : String(options.representation);\n\n if (format !== 'extended' && format !== 'basic') {\n throw new RangeError(\"format must be 'extended' or 'basic'\");\n }\n\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n }\n\n var result = '';\n var tzOffset = '';\n var dateDelimiter = format === 'extended' ? '-' : '';\n var timeDelimiter = format === 'extended' ? ':' : ''; // Representation is either 'date' or 'complete'\n\n if (representation !== 'time') {\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = addLeadingZeros(originalDate.getFullYear(), 4); // yyyyMMdd or yyyy-MM-dd.\n\n result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n } // Representation is either 'time' or 'complete'\n\n\n if (representation !== 'date') {\n // Add the timezone.\n var offset = originalDate.getTimezoneOffset();\n\n if (offset !== 0) {\n var absoluteOffset = Math.abs(offset);\n var hourOffset = addLeadingZeros(Math.floor(absoluteOffset / 60), 2);\n var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2); // If less than 0, the sign is +, because it is ahead of time.\n\n var sign = offset < 0 ? '+' : '-';\n tzOffset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n } else {\n tzOffset = 'Z';\n }\n\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2); // If there's also date, separate it with time with 'T'\n\n var separator = result === '' ? '' : 'T'; // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\n\n var time = [hour, minute, second].join(timeDelimiter); // HHmmss or HH:mm:ss.\n\n result = \"\".concat(result).concat(separator).concat(time).concat(tzOffset);\n }\n\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\n/**\n * @name formatISO9075\n * @category Common Helpers\n * @summary Format the date according to the ISO 9075 standard (https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_get-format).\n *\n * @description\n * Return the formatted date string in ISO 9075 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.\n * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time, or both.\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.format` must be 'extended' or 'basic'\n * @throws {RangeError} `options.represenation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075 format:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18 19:00:52'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075, short format:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918 190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075 format, date only:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075 format, time only:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52'\n */\n\nexport default function formatISO9075(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \".concat(arguments.length, \" present\"));\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n var options = dirtyOptions || {};\n var format = options.format == null ? 'extended' : String(options.format);\n var representation = options.representation == null ? 'complete' : String(options.representation);\n\n if (format !== 'extended' && format !== 'basic') {\n throw new RangeError(\"format must be 'extended' or 'basic'\");\n }\n\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n }\n\n var result = '';\n var dateDelimiter = format === 'extended' ? '-' : '';\n var timeDelimiter = format === 'extended' ? ':' : ''; // Representation is either 'date' or 'complete'\n\n if (representation !== 'time') {\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = addLeadingZeros(originalDate.getFullYear(), 4); // yyyyMMdd or yyyy-MM-dd.\n\n result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n } // Representation is either 'time' or 'complete'\n\n\n if (representation !== 'date') {\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2); // If there's also date, separate it with time with a space\n\n var separator = result === '' ? '' : ' '; // HHmmss or HH:mm:ss.\n\n result = \"\".concat(result).concat(separator).concat(hour).concat(timeDelimiter).concat(minute).concat(timeDelimiter).concat(second);\n }\n\n return result;\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 formatISODuration\n * @category Common Helpers\n * @summary Format a duration object according as ISO 8601 duration string\n *\n * @description\n * Format a duration object according to the ISO 8601 duration standard (https://www.digi.com/resources/documentation/digidocs/90001437-13/reference/r_iso_8601_duration_format.htm)\n *\n * @param {Duration} duration - the duration to format\n *\n * @returns {String} The ISO 8601 duration string\n * @throws {TypeError} Requires 1 argument\n * @throws {Error} Argument must be an object\n *\n * @example\n * // Format the given duration as ISO 8601 string\n * formatISODuration({\n * years: 39,\n * months: 2,\n * days: 20,\n * hours: 7,\n * minutes: 5,\n * seconds: 0\n * })\n * //=> 'P39Y2M20DT0H0M0S'\n */\n\nexport default function formatISODuration(duration) {\n requiredArgs(1, arguments);\n if (_typeof(duration) !== 'object') throw new Error('Duration must be an object');\n var _duration$years = duration.years,\n years = _duration$years === void 0 ? 0 : _duration$years,\n _duration$months = duration.months,\n months = _duration$months === void 0 ? 0 : _duration$months,\n _duration$days = duration.days,\n days = _duration$days === void 0 ? 0 : _duration$days,\n _duration$hours = duration.hours,\n hours = _duration$hours === void 0 ? 0 : _duration$hours,\n _duration$minutes = duration.minutes,\n minutes = _duration$minutes === void 0 ? 0 : _duration$minutes,\n _duration$seconds = duration.seconds,\n seconds = _duration$seconds === void 0 ? 0 : _duration$seconds;\n return \"P\".concat(years, \"Y\").concat(months, \"M\").concat(days, \"DT\").concat(hours, \"H\").concat(minutes, \"M\").concat(seconds, \"S\");\n}","import toDate from \"../toDate/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name formatRFC3339\n * @category Common Helpers\n * @summary Format the date according to the RFC 3339 standard (https://tools.ietf.org/html/rfc3339#section-5.6).\n *\n * @description\n * Return the formatted date string in RFC 3339 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3} [options.fractionDigits=0] - number of digits after the decimal point after seconds\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.fractionDigits` must be between 0 and 3\n *\n * @example\n * // Represent 18 September 2019 in RFC 3339 format:\n * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in RFC 3339 format, 2 digits of second fraction:\n * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52, 234), { fractionDigits: 2 })\n * //=> '2019-09-18T19:00:52.23Z'\n *\n * @example\n * // Represent 18 September 2019 in RFC 3339 format, 3 digits of second fraction\n * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52, 234), { fractionDigits: 3 })\n * //=> '2019-09-18T19:00:52.234Z'\n */\n\nexport default function formatRFC3339(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 arguments required, but only \".concat(arguments.length, \" present\"));\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n var options = dirtyOptions || {};\n var fractionDigits = options.fractionDigits == null ? 0 : toInteger(options.fractionDigits); // Test if fractionDigits is between 0 and 3 _and_ is not NaN\n\n if (!(fractionDigits >= 0 && fractionDigits <= 3)) {\n throw new RangeError('fractionDigits must be between 0 and 3 inclusively');\n }\n\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = originalDate.getFullYear();\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2);\n var fractionalSecond = '';\n\n if (fractionDigits > 0) {\n var milliseconds = originalDate.getMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, fractionDigits - 3));\n fractionalSecond = '.' + addLeadingZeros(fractionalSeconds, fractionDigits);\n }\n\n var offset = '';\n var tzOffset = originalDate.getTimezoneOffset();\n\n if (tzOffset !== 0) {\n var absoluteOffset = Math.abs(tzOffset);\n var hourOffset = addLeadingZeros(toInteger(absoluteOffset / 60), 2);\n var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2); // If less than 0, the sign is +, because it is ahead of time.\n\n var sign = tzOffset < 0 ? '+' : '-';\n offset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n } else {\n offset = 'Z';\n }\n\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(day, \"T\").concat(hour, \":\").concat(minute, \":\").concat(second).concat(fractionalSecond).concat(offset);\n}","import toDate from \"../toDate/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\nvar days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n/**\n * @name formatRFC7231\n * @category Common Helpers\n * @summary Format the date according to the RFC 7231 standard (https://tools.ietf.org/html/rfc7231#section-7.1.1.1).\n *\n * @description\n * Return the formatted date string in RFC 7231 format.\n * The result will always be in UTC timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n *\n * @example\n * // Represent 18 September 2019 in RFC 7231 format:\n * const result = formatRFC7231(new Date(2019, 8, 18, 19, 0, 52))\n * //=> 'Wed, 18 Sep 2019 19:00:52 GMT'\n */\n\nexport default function formatRFC7231(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 arguments required, but only \".concat(arguments.length, \" present\"));\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n var dayName = days[originalDate.getUTCDay()];\n var dayOfMonth = addLeadingZeros(originalDate.getUTCDate(), 2);\n var monthName = months[originalDate.getUTCMonth()];\n var year = originalDate.getUTCFullYear();\n var hour = addLeadingZeros(originalDate.getUTCHours(), 2);\n var minute = addLeadingZeros(originalDate.getUTCMinutes(), 2);\n var second = addLeadingZeros(originalDate.getUTCSeconds(), 2); // Result variables.\n\n return \"\".concat(dayName, \", \").concat(dayOfMonth, \" \").concat(monthName, \" \").concat(year, \" \").concat(hour, \":\").concat(minute, \":\").concat(second, \" GMT\");\n}","import differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport format from \"../format/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatRelative\n * @category Common Helpers\n * @summary Represent the date in words relative to the given base date.\n *\n * @description\n * Represent the date in words relative to the given base date.\n *\n * | Distance to the base date | Result |\n * |---------------------------|---------------------------|\n * | Previous 6 days | last Sunday at 04:30 AM |\n * | Last day | yesterday at 04:30 AM |\n * | Same day | today at 04:30 AM |\n * | Next day | tomorrow at 04:30 AM |\n * | Next 6 days | Sunday at 04:30 AM |\n * | Other | 12/31/2017 |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to format\n * @param {Date|Number} baseDate - the date to compare with\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 {String} the date in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.locale` must contain `formatRelative` property\n *\n * @example\n * // Represent the date of 6 days ago in words relative to the given base date. In this example, today is Wednesday\n * const result = formatRelative(addDays(new Date(), -6), new Date())\n * //=> \"last Thursday at 12:45 AM\"\n */\n\nexport default function formatRelative(dirtyDate, dirtyBaseDate, dirtyOptions) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var baseDate = toDate(dirtyBaseDate);\n\n var _ref = dirtyOptions || {},\n _ref$locale = _ref.locale,\n locale = _ref$locale === void 0 ? defaultLocale : _ref$locale,\n _ref$weekStartsOn = _ref.weekStartsOn,\n weekStartsOn = _ref$weekStartsOn === void 0 ? 0 : _ref$weekStartsOn;\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n if (!locale.formatRelative) {\n throw new RangeError('locale must contain formatRelative property');\n }\n\n var diff = differenceInCalendarDays(date, baseDate);\n\n if (isNaN(diff)) {\n throw new RangeError('Invalid time value');\n }\n\n var token;\n\n if (diff < -6) {\n token = 'other';\n } else if (diff < -1) {\n token = 'lastWeek';\n } else if (diff < 0) {\n token = 'yesterday';\n } else if (diff < 1) {\n token = 'today';\n } else if (diff < 2) {\n token = 'tomorrow';\n } else if (diff < 7) {\n token = 'nextWeek';\n } else {\n token = 'other';\n }\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var utcBaseDate = subMilliseconds(baseDate, getTimezoneOffsetInMilliseconds(baseDate));\n var formatStr = locale.formatRelative(token, utcDate, utcBaseDate, {\n locale: locale,\n weekStartsOn: weekStartsOn\n });\n return format(date, formatStr, {\n locale: locale,\n weekStartsOn: weekStartsOn\n });\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name fromUnixTime\n * @category Timestamp Helpers\n * @summary Create a date from a Unix timestamp.\n *\n * @description\n * Create a date from a Unix timestamp.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Number} unixTime - the given Unix timestamp\n * @returns {Date} the date\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Create the date 29 February 2012 11:45:05:\n * var result = fromUnixTime(1330515905)\n * //=> Wed Feb 29 2012 11:45:05\n */\n\nexport default function fromUnixTime(dirtyUnixTime) {\n requiredArgs(1, arguments);\n var unixTime = toInteger(dirtyUnixTime);\n return toDate(unixTime * 1000);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\n\nexport default function getDate(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\n\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport startOfYear from \"../startOfYear/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\n\nexport default function getDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = differenceInCalendarDays(date, startOfYear(date));\n var dayOfYear = diff + 1;\n return dayOfYear;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLeapYear\n * @category Year Helpers\n * @summary Is the given date in the leap year?\n *\n * @description\n * Is the given date in the leap year?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the leap year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 1 September 2012 in the leap year?\n * var result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\n\nexport default function isLeapYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import toDate from \"../toDate/index.js\";\nimport isLeapYear from \"../isLeapYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInYear\n * @category Year Helpers\n * @summary Get the number of days in a year of the given date.\n *\n * @description\n * Get the number of days in a year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in 2012?\n * const result = getDaysInYear(new Date(2012, 0, 1))\n * //=> 366\n */\n\nexport default function getDaysInYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n\n if (String(new Date(date)) === 'Invalid Date') {\n return NaN;\n }\n\n return isLeapYear(date) ? 366 : 365;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDecade\n * @category Decade Helpers\n * @summary Get the decade of the given date.\n *\n * @description\n * Get the decade of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year of decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which decade belongs 27 November 1942?\n * const result = getDecade(new Date(1942, 10, 27))\n * //=> 1940\n */\n\nexport default function getDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = Math.floor(year / 10) * 10;\n return decade;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\n\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\n\nexport default function getISODay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n\n if (day === 0) {\n day = 7;\n }\n\n return day;\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name getISOWeeksInYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * @description\n * Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of ISO weeks in a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many weeks are in ISO week-numbering year 2015?\n * const result = getISOWeeksInYear(new Date(2015, 1, 11))\n * //=> 53\n */\n\nexport default function getISOWeeksInYear(dirtyDate) {\n requiredArgs(1, arguments);\n var thisYear = startOfISOWeekYear(dirtyDate);\n var nextYear = startOfISOWeekYear(addWeeks(thisYear, 60));\n var diff = nextYear.valueOf() - thisYear.valueOf(); // Round the number of weeks 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);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMilliseconds\n * @category Millisecond Helpers\n * @summary Get the milliseconds of the given date.\n *\n * @description\n * Get the milliseconds of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the milliseconds of 29 February 2012 11:45:05.123:\n * const result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 123\n */\n\nexport default function getMilliseconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var milliseconds = date.getMilliseconds();\n return milliseconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\n\nexport default function getMinutes(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\n\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000;\n/**\n * @name getOverlappingDaysInIntervals\n * @category Interval Helpers\n * @summary Get the number of days that overlap in two time intervals\n *\n * @description\n * Get the number of days that overlap in two time intervals\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `getOverlappingDaysInRanges` to `getOverlappingDaysInIntervals`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * getOverlappingDaysInRanges(\n * new Date(2014, 0, 10), new Date(2014, 0, 20),\n * new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n *\n * // v2.0.0 onward\n *\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * ```\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/Interval}\n * @returns {Number} the number of days that overlap in two time intervals\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals adds 1 for each started overlapping day:\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * //=> 3\n *\n * @example\n * // For non-overlapping time intervals returns 0:\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }\n * )\n * //=> 0\n */\n\nexport default function getOverlappingDaysInIntervals(dirtyIntervalLeft, dirtyIntervalRight) {\n requiredArgs(2, arguments);\n var intervalLeft = dirtyIntervalLeft || {};\n var intervalRight = dirtyIntervalRight || {};\n var leftStartTime = toDate(intervalLeft.start).getTime();\n var leftEndTime = toDate(intervalLeft.end).getTime();\n var rightStartTime = toDate(intervalRight.start).getTime();\n var rightEndTime = toDate(intervalRight.end).getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var isOverlapping = leftStartTime < rightEndTime && rightStartTime < leftEndTime;\n\n if (!isOverlapping) {\n return 0;\n }\n\n var overlapStartDate = rightStartTime < leftStartTime ? leftStartTime : rightStartTime;\n var overlapEndDate = rightEndTime > leftEndTime ? leftEndTime : rightEndTime;\n var differenceInMs = overlapEndDate - overlapStartDate;\n return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\n\nexport default function getSeconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\n\nexport default function getTime(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}","import getTime from \"../getTime/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getUnixTime\n * @category Timestamp Helpers\n * @summary Get the seconds timestamp of the given date.\n *\n * @description\n * Get the seconds timestamp of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05 CET:\n * const result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\n\nexport default function getUnixTime(dirtyDate) {\n requiredArgs(1, arguments);\n return Math.floor(getTime(dirtyDate) / 1000);\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\";\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 _options$locale, _options$locale$optio;\n\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var localeFirstWeekContainsDate = 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;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = (options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // 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\";\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 * var 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, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n var date = startOfWeek(firstWeek, dirtyOptions);\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 = getISOWeek(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 = getISOWeek(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 getDate from \"../getDate/index.js\";\nimport getDay from \"../getDay/index.js\";\nimport startOfMonth from \"../startOfMonth/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getWeekOfMonth\n * @category Week Helpers\n * @summary Get the week of the month of the given date.\n *\n * @description\n * Get the week of the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 week of month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Which week of the month is 9 November 2017?\n * var result = getWeekOfMonth(new Date(2017, 10, 9))\n * //=> 2\n */\n\nexport default function getWeekOfMonth(date, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // 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 currentDayOfMonth = getDate(date);\n\n if (isNaN(currentDayOfMonth)) {\n return currentDayOfMonth;\n }\n\n var startWeekDay = getDay(startOfMonth(date));\n var lastDayOfFirstWeek = 0;\n\n if (startWeekDay >= weekStartsOn) {\n lastDayOfFirstWeek = weekStartsOn + 7 - startWeekDay;\n } else {\n lastDayOfFirstWeek = weekStartsOn - startWeekDay;\n }\n\n var weekNumber = 1;\n\n if (currentDayOfMonth > lastDayOfFirstWeek) {\n var remainingDaysAfterFirstWeek = currentDayOfMonth - lastDayOfFirstWeek;\n weekNumber = weekNumber + Math.ceil(remainingDaysAfterFirstWeek / 7);\n }\n\n return weekNumber;\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 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 * @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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 */\n\nexport default function getWeeksInMonth(date, options) {\n requiredArgs(1, arguments);\n return differenceInCalendarWeeks(lastDayOfMonth(date), startOfMonth(date), options) + 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\n\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n return year;\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInHour } from \"../constants/index.js\";\n/**\n * @name hoursToMilliseconds\n * @category Conversion Helpers\n * @summary Convert hours to milliseconds.\n *\n * @description\n * Convert a number of hours to a full number of milliseconds.\n *\n * @param {number} hours - number of hours to be converted\n *\n * @returns {number} the number of hours converted to milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 hours to milliseconds:\n * const result = hoursToMilliseconds(2)\n * //=> 7200000\n */\n\nexport default function hoursToMilliseconds(hours) {\n requiredArgs(1, arguments);\n return Math.floor(hours * millisecondsInHour);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { minutesInHour } from \"../constants/index.js\";\n/**\n * @name hoursToMinutes\n * @category Conversion Helpers\n * @summary Convert hours to minutes.\n *\n * @description\n * Convert a number of hours to a full number of minutes.\n *\n * @param {number} hours - number of hours to be converted\n *\n * @returns {number} the number of hours converted in minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 hours to minutes:\n * const result = hoursToMinutes(2)\n * //=> 120\n */\n\nexport default function hoursToMinutes(hours) {\n requiredArgs(1, arguments);\n return Math.floor(hours * minutesInHour);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name intlFormat\n * @category Common Helpers\n * @summary Format the date with Intl.DateTimeFormat (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat).\n *\n * @description\n * Return the formatted date string in the given format.\n * The method uses [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) inside.\n * formatOptions are the same as [`Intl.DateTimeFormat` options](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat#using_options)\n *\n * > ⚠️ Please note that before Node version 13.0.0, only the locale data for en-US is available by default.\n *\n * @param {Date|Number} argument - the original date.\n * @param {Object} [formatOptions] - an object with options.\n * @param {'lookup'|'best fit'} [formatOptions.localeMatcher='best fit'] - locale selection algorithm.\n * @param {'narrow'|'short'|'long'} [formatOptions.weekday] - representation the days of the week.\n * @param {'narrow'|'short'|'long'} [formatOptions.era] - representation of eras.\n * @param {'numeric'|'2-digit'} [formatOptions.year] - representation of years.\n * @param {'numeric'|'2-digit'|'narrow'|'short'|'long'} [formatOptions.month='numeric'] - representation of month.\n * @param {'numeric'|'2-digit'} [formatOptions.day='numeric'] - representation of day.\n * @param {'numeric'|'2-digit'} [formatOptions.hour='numeric'] - representation of hours.\n * @param {'numeric'|'2-digit'} [formatOptions.minute] - representation of minutes.\n * @param {'numeric'|'2-digit'} [formatOptions.second] - representation of seconds.\n * @param {'short'|'long'} [formatOptions.timeZoneName] - representation of names of time zones.\n * @param {'basic'|'best fit'} [formatOptions.formatMatcher='best fit'] - format selection algorithm.\n * @param {Boolean} [formatOptions.hour12] - determines whether to use 12-hour time format.\n * @param {String} [formatOptions.timeZone] - the time zone to use.\n * @param {Object} [localeOptions] - an object with locale.\n * @param {String|String[]} [localeOptions.locale] - the locale code\n * @returns {String} the formatted date string.\n * @throws {TypeError} 1 argument required.\n * @throws {RangeError} `date` must not be Invalid Date\n *\n * @example\n * // Represent 10 October 2019 in German.\n * // Convert the date with format's options and locale's options.\n * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456), {\n * weekday: 'long',\n * year: 'numeric',\n * month: 'long',\n * day: 'numeric',\n * }, {\n * locale: 'de-DE',\n * })\n * //=> Freitag, 4. Oktober 2019\n *\n * @example\n * // Represent 10 October 2019.\n * // Convert the date with format's options.\n * const result = intlFormat.default(new Date(2019, 9, 4, 12, 30, 13, 456), {\n * year: 'numeric',\n * month: 'numeric',\n * day: 'numeric',\n * hour: 'numeric',\n * })\n * //=> 10/4/2019, 12 PM\n *\n * @example\n * // Represent 10 October 2019 in Korean.\n * // Convert the date with locale's options.\n * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456), {\n * locale: 'ko-KR',\n * })\n * //=> 2019. 10. 4.\n *\n * @example\n * // Represent 10 October 2019 in middle-endian format:\n * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456))\n * //=> 10/4/2019\n */\n\nexport default function intlFormat(date, formatOrLocale, localeOptions) {\n var _localeOptions;\n\n requiredArgs(1, arguments);\n var formatOptions;\n\n if (isFormatOptions(formatOrLocale)) {\n formatOptions = formatOrLocale;\n } else {\n localeOptions = formatOrLocale;\n }\n\n return new Intl.DateTimeFormat((_localeOptions = localeOptions) === null || _localeOptions === void 0 ? void 0 : _localeOptions.locale, formatOptions).format(date);\n}\n\nfunction isFormatOptions(opts) {\n return opts !== undefined && !('locale' in opts);\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 isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","/**\n * @name isExists\n * @category Common Helpers\n * @summary Is the given date exists?\n *\n * @description\n * Checks if the given arguments convert to an existing date.\n *\n * @param {Number} year of the date to check\n * @param {Number} month of the date to check\n * @param {Number} day of the date to check\n * @returns {Boolean} the date exists\n * @throws {TypeError} 3 arguments required\n *\n * @example\n * // For the valid date:\n * var result = isExists(2018, 0, 31)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isExists(2018, 1, 31)\n * //=> false\n */\nexport default function isExists(year, month, day) {\n if (arguments.length < 3) {\n throw new TypeError('3 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = new Date(year, month, day);\n return date.getFullYear() === year && date.getMonth() === month && date.getDate() === day;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isFirstDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the first day of a month?\n *\n * @description\n * Is the given date the first day of a month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the first day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 1 September 2014 the first day of a month?\n * var result = isFirstDayOfMonth(new Date(2014, 8, 1))\n * //=> true\n */\n\nexport default function isFirstDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDate() === 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isFriday\n * @category Weekday Helpers\n * @summary Is the given date Friday?\n *\n * @description\n * Is the given date Friday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Friday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 26 September 2014 Friday?\n * var result = isFriday(new Date(2014, 8, 26))\n * //=> true\n */\n\nexport default function isFriday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 5;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isFuture\n * @category Common Helpers\n * @summary Is the given date in the future?\n * @pure false\n *\n * @description\n * Is the given date in the future?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the future\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 31 December 2014 in the future?\n * var result = isFuture(new Date(2014, 11, 31))\n * //=> true\n */\n\nexport default function isFuture(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getTime() > Date.now();\n}","import parse from \"../parse/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isMatch\n * @category Common Helpers\n * @summary validates the date string against given formats\n *\n * @description\n * Return the true if given date is string correct against the given format else\n * will return false.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * isMatch('23 AM', 'HH a')\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `isMatch` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `isMatch` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `isMatch` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `isMatch('50', 'yy') //=> true`\n *\n * `isMatch('75', 'yy') //=> true`\n *\n * while `uu` will use the year as is:\n *\n * `isMatch('50', 'uu') //=> true`\n *\n * `isMatch('75', 'uu') //=> true`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be checked in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are matched (e.g. when matching string 'January 1st' without a year),\n * the values will be taken from today's using `new Date()` date which works as a context of parsing.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n *\n *\n * @param {String} dateString - the date string to verify\n * @param {String} formatString - the string of tokens\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 * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {Boolean}\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Match 11 February 2014 from middle-endian format:\n * var result = isMatch('02/11/2014', 'MM/dd/yyyy')\n * //=> true\n *\n * @example\n * // Match 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = isMatch('28-a de februaro', \"do 'de' MMMM\", {\n * locale: eo\n * })\n * //=> true\n */\n\nexport default function isMatch(dateString, formatString, options) {\n requiredArgs(2, arguments);\n return isValid(parse(dateString, formatString, new Date(), options));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isMonday\n * @category Weekday Helpers\n * @summary Is the given date Monday?\n *\n * @description\n * Is the given date Monday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Monday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 22 September 2014 Monday?\n * var result = isMonday(new Date(2014, 8, 22))\n * //=> true\n */\n\nexport default function isMonday(date) {\n requiredArgs(1, arguments);\n return toDate(date).getDay() === 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isPast\n * @category Common Helpers\n * @summary Is the given date in the past?\n * @pure false\n *\n * @description\n * Is the given date in the past?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the past\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 2 July 2014 in the past?\n * var result = isPast(new Date(2014, 6, 2))\n * //=> true\n */\n\nexport default function isPast(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getTime() < Date.now();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * const result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\n\nexport default function startOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(0, 0, 0);\n return date;\n}","import startOfHour from \"../startOfHour/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameHour\n * @category Hour Helpers\n * @summary Are the given dates in the same hour?\n *\n * @description\n * Are the given dates in the same hour?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same hour\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * var result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 6, 30))\n * //=> true\n */\n\nexport default function isSameHour(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft);\n var dateRightStartOfHour = startOfHour(dirtyDateRight);\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime();\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameWeek\n * @category Week Helpers\n * @summary Are the given dates in the same week?\n *\n * @description\n * Are the given dates in the same week?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\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 {Boolean} the dates are in the same week\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4))\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4), {\n * weekStartsOn: 1\n * })\n * //=> false\n */\n\nexport default function isSameWeek(dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n requiredArgs(2, arguments);\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, dirtyOptions);\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, dirtyOptions);\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime();\n}","import isSameWeek from \"../isSameWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameISOWeek\n * @category ISO Week Helpers\n * @summary Are the given dates in the same ISO week?\n *\n * @description\n * Are the given dates in the same ISO week?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 September 2014 and 7 September 2014 in the same ISO week?\n * var result = isSameISOWeek(new Date(2014, 8, 1), new Date(2014, 8, 7))\n * //=> true\n */\n\nexport default function isSameISOWeek(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n return isSameWeek(dirtyDateLeft, dirtyDateRight, {\n weekStartsOn: 1\n });\n}","import startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Are the given dates in the same ISO week-numbering year?\n *\n * @description\n * Are the given dates in the same ISO week-numbering year?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `isSameISOYear` to `isSameISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week-numbering year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 29 December 2003 and 2 January 2005 in the same ISO week-numbering year?\n * var result = isSameISOWeekYear(new Date(2003, 11, 29), new Date(2005, 0, 2))\n * //=> true\n */\n\nexport default function isSameISOWeekYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfYear = startOfISOWeekYear(dirtyDateLeft);\n var dateRightStartOfYear = startOfISOWeekYear(dirtyDateRight);\n return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime();\n}","import startOfMinute from \"../startOfMinute/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMinute\n * @category Minute Helpers\n * @summary Are the given dates in the same minute?\n *\n * @description\n * Are the given dates in the same minute?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same minute\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15\n * // in the same minute?\n * var result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 4, 6, 30, 15)\n * )\n * //=> true\n */\n\nexport default function isSameMinute(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfMinute = startOfMinute(dirtyDateLeft);\n var dateRightStartOfMinute = startOfMinute(dirtyDateRight);\n return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime();\n}","import startOfQuarter from \"../startOfQuarter/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same year quarter?\n *\n * @description\n * Are the given dates in the same year quarter?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * var result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n */\n\nexport default function isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft);\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight);\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * const result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\n\nexport default function startOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(0);\n return date;\n}","import startOfSecond from \"../startOfSecond/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameSecond\n * @category Second Helpers\n * @summary Are the given dates in the same second?\n *\n * @description\n * Are the given dates in the same second?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same second\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500\n * // in the same second?\n * var result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n */\n\nexport default function isSameSecond(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft);\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight);\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * var result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\n\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import isSameHour from \"../isSameHour/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisHour\n * @category Hour Helpers\n * @summary Is the given date in the same hour as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same hour as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:00:00 in this hour?\n * var result = isThisHour(new Date(2014, 8, 25, 18))\n * //=> true\n */\n\nexport default function isThisHour(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameHour(Date.now(), dirtyDate);\n}","import isSameISOWeek from \"../isSameISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisISOWeek\n * @category ISO Week Helpers\n * @summary Is the given date in the same ISO week as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same ISO week as the current date?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 22 September 2014 in this ISO week?\n * var result = isThisISOWeek(new Date(2014, 8, 22))\n * //=> true\n */\n\nexport default function isThisISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameISOWeek(dirtyDate, Date.now());\n}","import isSameMinute from \"../isSameMinute/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisMinute\n * @category Minute Helpers\n * @summary Is the given date in the same minute as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same minute as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:00 in this minute?\n * var result = isThisMinute(new Date(2014, 8, 25, 18, 30))\n * //=> true\n */\n\nexport default function isThisMinute(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameMinute(Date.now(), dirtyDate);\n}","import isSameMonth from \"../isSameMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisMonth\n * @category Month Helpers\n * @summary Is the given date in the same month as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same month as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 15 September 2014 in this month?\n * var result = isThisMonth(new Date(2014, 8, 15))\n * //=> true\n */\n\nexport default function isThisMonth(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameMonth(Date.now(), dirtyDate);\n}","import isSameQuarter from \"../isSameQuarter/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisQuarter\n * @category Quarter Helpers\n * @summary Is the given date in the same quarter as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same quarter as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this quarter?\n * var result = isThisQuarter(new Date(2014, 6, 2))\n * //=> true\n */\n\nexport default function isThisQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameQuarter(Date.now(), dirtyDate);\n}","import isSameSecond from \"../isSameSecond/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisSecond\n * @category Second Helpers\n * @summary Is the given date in the same second as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same second as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:15.000 in this second?\n * var result = isThisSecond(new Date(2014, 8, 25, 18, 30, 15))\n * //=> true\n */\n\nexport default function isThisSecond(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameSecond(Date.now(), dirtyDate);\n}","import isSameWeek from \"../isSameWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisWeek\n * @category Week Helpers\n * @summary Is the given date in the same week as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same week as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @param {Object} [options] - the 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 {Boolean} the date is in this week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // If today is 25 September 2014, is 21 September 2014 in this week?\n * var result = isThisWeek(new Date(2014, 8, 21))\n * //=> true\n *\n * @example\n * // If today is 25 September 2014 and week starts with Monday\n * // is 21 September 2014 in this week?\n * var result = isThisWeek(new Date(2014, 8, 21), { weekStartsOn: 1 })\n * //=> false\n */\n\nexport default function isThisWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n return isSameWeek(dirtyDate, Date.now(), options);\n}","import isSameYear from \"../isSameYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisYear\n * @category Year Helpers\n * @summary Is the given date in the same year as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same year as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this year?\n * var result = isThisYear(new Date(2014, 6, 2))\n * //=> true\n */\n\nexport default function isThisYear(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameYear(dirtyDate, Date.now());\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThursday\n * @category Weekday Helpers\n * @summary Is the given date Thursday?\n *\n * @description\n * Is the given date Thursday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Thursday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 25 September 2014 Thursday?\n * var result = isThursday(new Date(2014, 8, 25))\n * //=> true\n */\n\nexport default function isThursday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 4;\n}","import isSameDay from \"../isSameDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is today\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * var result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\n\nexport default function isToday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, Date.now());\n}","import addDays from \"../addDays/index.js\";\nimport isSameDay from \"../isSameDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isTomorrow\n * @category Day Helpers\n * @summary Is the given date tomorrow?\n * @pure false\n *\n * @description\n * Is the given date tomorrow?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is tomorrow\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 7 October 14:00:00 tomorrow?\n * var result = isTomorrow(new Date(2014, 9, 7, 14, 0))\n * //=> true\n */\n\nexport default function isTomorrow(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, addDays(Date.now(), 1));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isTuesday\n * @category Weekday Helpers\n * @summary Is the given date Tuesday?\n *\n * @description\n * Is the given date Tuesday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Tuesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 23 September 2014 Tuesday?\n * var result = isTuesday(new Date(2014, 8, 23))\n * //=> true\n */\n\nexport default function isTuesday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 2;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWednesday\n * @category Weekday Helpers\n * @summary Is the given date Wednesday?\n *\n * @description\n * Is the given date Wednesday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Wednesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 24 September 2014 Wednesday?\n * const result = isWednesday(new Date(2014, 8, 24))\n * //=> true\n */\n\nexport default function isWednesday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 3;\n}","import isSameDay from \"../isSameDay/index.js\";\nimport subDays from \"../subDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isYesterday\n * @category Day Helpers\n * @summary Is the given date yesterday?\n * @pure false\n *\n * @description\n * Is the given date yesterday?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is yesterday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 5 October 14:00:00 yesterday?\n * var result = isYesterday(new Date(2014, 9, 5, 14, 0))\n * //=> true\n */\n\nexport default function isYesterday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, subDays(Date.now(), 1));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfDecade\n * @category Decade Helpers\n * @summary Return the last day of a decade for the given date.\n *\n * @description\n * Return the last day of a decade for the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a decade for 21 December 2012 21:12:00:\n * var result = lastDayOfDecade(new Date(2012, 11, 21, 21, 12, 00))\n * //=> Wed Dec 31 2019 00:00:00\n */\n\nexport default function lastDayOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = 9 + Math.floor(year / 10) * 10;\n date.setFullYear(decade + 1, 0, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfWeek\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 last day 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 last day of a week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\n\nexport default function lastDayOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // 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');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + diff);\n return date;\n}","import lastDayOfWeek from \"../lastDayOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the last day of an ISO week for the given date.\n *\n * @description\n * Return the last day 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of an ISO week for 2 September 2014 11:55:00:\n * var result = lastDayOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 00:00:00\n */\n\nexport default function lastDayOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return lastDayOfWeek(dirtyDate, {\n weekStartsOn: 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 lastDayOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the last day of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the last day 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `lastDayOfISOYear` to `lastDayOfISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of an ISO week-numbering year for 2 July 2005:\n * var result = lastDayOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 00:00:00\n */\n\nexport default function lastDayOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year + 1, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n date.setDate(date.getDate() - 1);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfQuarter\n * @category Quarter Helpers\n * @summary Return the last day of a year quarter for the given date.\n *\n * @description\n * Return the last day of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of a quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a quarter for 2 September 2014 11:55:00:\n * var result = lastDayOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\n\nexport default function lastDayOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3 + 3;\n date.setMonth(month, 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 lastDayOfYear\n * @category Year Helpers\n * @summary Return the last day of a year for the given date.\n *\n * @description\n * Return the last day of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a year for 2 September 2014 11:55:00:\n * var result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 00:00:00\n */\n\nexport default function lastDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/lightFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name lightFormat\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. Unlike `format`,\n * `lightFormat` doesn't use locales and outputs date using the most popular tokens.\n *\n * > ⚠️ Please note that the `lightFormat` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples |\n * |---------------------------------|---------|-----------------------------------|\n * | AM, PM | a..aaa | AM, PM |\n * | | aaaa | a.m., p.m. |\n * | | aaaaa | a, p |\n * | Calendar year | y | 44, 1, 1900, 2017 |\n * | | yy | 44, 01, 00, 17 |\n * | | yyy | 044, 001, 000, 017 |\n * | | yyyy | 0044, 0001, 1900, 2017 |\n * | Month (formatting) | M | 1, 2, ..., 12 |\n * | | MM | 01, 02, ..., 12 |\n * | Day of month | d | 1, 2, ..., 31 |\n * | | dd | 01, 02, ..., 31 |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 |\n * | | hh | 01, 02, ..., 11, 12 |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 |\n * | | HH | 00, 01, 02, ..., 23 |\n * | Minute | m | 0, 1, ..., 59 |\n * | | mm | 00, 01, ..., 59 |\n * | Second | s | 0, 1, ..., 59 |\n * | | ss | 00, 01, ..., 59 |\n * | Fraction of second | S | 0, 1, ..., 9 |\n * | | SS | 00, 01, ..., 99 |\n * | | SSS | 000, 0001, ..., 999 |\n * | | SSSS | ... |\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * const result = lightFormat(new Date(2014, 1, 11), 'yyyy-MM-dd')\n * //=> '2014-02-11'\n */\n\nexport default function lightFormat(dirtyDate, formatStr) {\n requiredArgs(2, arguments);\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var tokens = formatStr.match(formattingTokensRegExp); // The only case when formattingTokensRegExp doesn't match the string is when it's empty\n\n if (!tokens) return '';\n var result = tokens.map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n return formatter(utcDate, substring);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n var matches = input.match(escapedStringRegExp);\n\n if (!matches) {\n return input;\n }\n\n return matches[1].replace(doubleQuoteRegExp, \"'\");\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\"; // Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n// 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n\nvar daysInYear = 365.2425;\n/**\n * @name milliseconds\n * @category Millisecond Helpers\n * @summary\n * Returns the number of milliseconds in the specified, years, months, weeks, days, hours, minutes and seconds.\n *\n * @description\n * Returns the number of milliseconds in the specified, years, months, weeks, days, hours, minutes and seconds.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * One month is a year divided by 12.\n *\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {number} the milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // 1 year in milliseconds\n * milliseconds({ years: 1 })\n * //=> 31556952000\n *\n * // 3 months in milliseconds\n * milliseconds({ months: 3 })\n * //=> 7889238000\n */\n\nexport default function milliseconds(_ref) {\n var years = _ref.years,\n months = _ref.months,\n weeks = _ref.weeks,\n days = _ref.days,\n hours = _ref.hours,\n minutes = _ref.minutes,\n seconds = _ref.seconds;\n requiredArgs(1, arguments);\n var totalDays = 0;\n if (years) totalDays += years * daysInYear;\n if (months) totalDays += months * (daysInYear / 12);\n if (weeks) totalDays += weeks * 7;\n if (days) totalDays += days;\n var totalSeconds = totalDays * 24 * 60 * 60;\n if (hours) totalSeconds += hours * 60 * 60;\n if (minutes) totalSeconds += minutes * 60;\n if (seconds) totalSeconds += seconds;\n return Math.round(totalSeconds * 1000);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInHour } from \"../constants/index.js\";\n/**\n * @name millisecondsToHours\n * @category Conversion Helpers\n * @summary Convert milliseconds to hours.\n *\n * @description\n * Convert a number of milliseconds to a full number of hours.\n *\n * @param {number} milliseconds - number of milliseconds to be converted\n *\n * @returns {number} the number of milliseconds converted in hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 7200000 milliseconds to hours:\n * const result = millisecondsToHours(7200000)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = millisecondsToHours(7199999)\n * //=> 1\n */\n\nexport default function millisecondsToHours(milliseconds) {\n requiredArgs(1, arguments);\n var hours = milliseconds / millisecondsInHour;\n return Math.floor(hours);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInMinute } from \"../constants/index.js\";\n/**\n * @name millisecondsToMinutes\n * @category Conversion Helpers\n * @summary Convert milliseconds to minutes.\n *\n * @description\n * Convert a number of milliseconds to a full number of minutes.\n *\n * @param {number} milliseconds - number of milliseconds to be converted.\n *\n * @returns {number} the number of milliseconds converted in minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 60000 milliseconds to minutes:\n * const result = millisecondsToMinutes(60000)\n * //=> 1\n *\n * @example\n * // It uses floor rounding:\n * const result = millisecondsToMinutes(119999)\n * //=> 1\n */\n\nexport default function millisecondsToMinutes(milliseconds) {\n requiredArgs(1, arguments);\n var minutes = milliseconds / millisecondsInMinute;\n return Math.floor(minutes);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInSecond } from \"../constants/index.js\";\n/**\n * @name millisecondsToSeconds\n * @category Conversion Helpers\n * @summary Convert milliseconds to seconds.\n *\n * @description\n * Convert a number of milliseconds to a full number of seconds.\n *\n * @param {number} milliseconds - number of milliseconds to be converted\n *\n * @returns {number} the number of milliseconds converted in seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 1000 miliseconds to seconds:\n * const result = millisecondsToSeconds(1000)\n * //=> 1\n *\n * @example\n * // It uses floor rounding:\n * const result = millisecondsToSeconds(1999)\n * //=> 1\n */\n\nexport default function millisecondsToSeconds(milliseconds) {\n requiredArgs(1, arguments);\n var seconds = milliseconds / millisecondsInSecond;\n return Math.floor(seconds);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { minutesInHour } from \"../constants/index.js\";\n/**\n * @name minutesToHours\n * @category Conversion Helpers\n * @summary Convert minutes to hours.\n *\n * @description\n * Convert a number of minutes to a full number of hours.\n *\n * @param {number} minutes - number of minutes to be converted\n *\n * @returns {number} the number of minutes converted in hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 140 minutes to hours:\n * const result = minutesToHours(120)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = minutesToHours(179)\n * //=> 2\n */\n\nexport default function minutesToHours(minutes) {\n requiredArgs(1, arguments);\n var hours = minutes / minutesInHour;\n return Math.floor(hours);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInMinute } from \"../constants/index.js\";\n/**\n * @name minutesToMilliseconds\n * @category Conversion Helpers\n * @summary Convert minutes to milliseconds.\n *\n * @description\n * Convert a number of minutes to a full number of milliseconds.\n *\n * @param {number} minutes - number of minutes to be converted\n *\n * @returns {number} the number of minutes converted in milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 minutes to milliseconds\n * const result = minutesToMilliseconds(2)\n * //=> 120000\n */\n\nexport default function minutesToMilliseconds(minutes) {\n requiredArgs(1, arguments);\n return Math.floor(minutes * millisecondsInMinute);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { secondsInMinute } from \"../constants/index.js\";\n/**\n * @name minutesToSeconds\n * @category Conversion Helpers\n * @summary Convert minutes to seconds.\n *\n * @description\n * Convert a number of minutes to a full number of seconds.\n *\n * @param { number } minutes - number of minutes to be converted\n *\n * @returns {number} the number of minutes converted in seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 minutes to seconds\n * const result = minutesToSeconds(2)\n * //=> 120\n */\n\nexport default function minutesToSeconds(minutes) {\n requiredArgs(1, arguments);\n return Math.floor(minutes * secondsInMinute);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { monthsInQuarter } from \"../constants/index.js\";\n/**\n * @name monthsToQuarters\n * @category Conversion Helpers\n * @summary Convert number of months to quarters.\n *\n * @description\n * Convert a number of months to a full number of quarters.\n *\n * @param {number} months - number of months to be converted.\n *\n * @returns {number} the number of months converted in quarters\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 6 months to quarters:\n * const result = monthsToQuarters(6)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = monthsToQuarters(7)\n * //=> 2\n */\n\nexport default function monthsToQuarters(months) {\n requiredArgs(1, arguments);\n var quarters = months / monthsInQuarter;\n return Math.floor(quarters);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { monthsInYear } from \"../constants/index.js\";\n/**\n * @name monthsToYears\n * @category Conversion Helpers\n * @summary Convert number of months to years.\n *\n * @description\n * Convert a number of months to a full number of years.\n *\n * @param {number} months - number of months to be converted\n *\n * @returns {number} the number of months converted in years\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 36 months to years:\n * const result = monthsToYears(36)\n * //=> 3\n *\n * // It uses floor rounding:\n * const result = monthsToYears(40)\n * //=> 3\n */\n\nexport default function monthsToYears(months) {\n requiredArgs(1, arguments);\n var years = months / monthsInYear;\n return Math.floor(years);\n}","import addDays from \"../addDays/index.js\";\nimport getDay from \"../getDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextDay\n * @category Weekday Helpers\n * @summary When is the next day of the week?\n *\n * @description\n * When is the next day of the week? 0-6 the day of the week, 0 represents Sunday.\n *\n * @param {Date | number} date - the date to check\n * @param {Day} day - day of the week\n * @returns {Date} - the date is the next day of week\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // When is the next Monday after Mar, 20, 2020?\n * const result = nextDay(new Date(2020, 2, 20), 1)\n * //=> Mon Mar 23 2020 00:00:00\n *\n * @example\n * // When is the next Tuesday after Mar, 21, 2020?\n * const result = nextDay(new Date(2020, 2, 21), 2)\n * //=> Tue Mar 24 2020 00:00:00\n */\n\nexport default function nextDay(date, day) {\n requiredArgs(2, arguments);\n var delta = day - getDay(date);\n if (delta <= 0) delta += 7;\n return addDays(date, delta);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport nextDay from \"../nextDay/index.js\";\nimport toDate from \"../toDate/index.js\";\n/**\n * @name nextFriday\n * @category Weekday Helpers\n * @summary When is the next Friday?\n *\n * @description\n * When is the next Friday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Friday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Friday after Mar, 22, 2020?\n * const result = nextFriday(new Date(2020, 2, 22))\n * //=> Fri Mar 27 2020 00:00:00\n */\n\nexport default function nextFriday(date) {\n requiredArgs(1, arguments);\n return nextDay(toDate(date), 5);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport nextDay from \"../nextDay/index.js\";\nimport toDate from \"../toDate/index.js\";\n/**\n * @name nextMonday\n * @category Weekday Helpers\n * @summary When is the next Monday?\n *\n * @description\n * When is the next Monday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Monday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Monday after Mar, 22, 2020?\n * const result = nextMonday(new Date(2020, 2, 22))\n * //=> Mon Mar 23 2020 00:00:00\n */\n\nexport default function nextMonday(date) {\n requiredArgs(1, arguments);\n return nextDay(toDate(date), 1);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport nextDay from \"../nextDay/index.js\";\nimport toDate from \"../toDate/index.js\";\n/**\n * @name nextSaturday\n * @category Weekday Helpers\n * @summary When is the next Saturday?\n *\n * @description\n * When is the next Saturday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Saturday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Saturday after Mar, 22, 2020?\n * const result = nextSaturday(new Date(2020, 2, 22))\n * //=> Sat Mar 28 2020 00:00:00\n */\n\nexport default function nextSaturday(date) {\n requiredArgs(1, arguments);\n return nextDay(toDate(date), 6);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport nextDay from \"../nextDay/index.js\";\nimport toDate from \"../toDate/index.js\";\n/**\n * @name nextSunday\n * @category Weekday Helpers\n * @summary When is the next Sunday?\n *\n * @description\n * When is the next Sunday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Sunday after Mar, 22, 2020?\n * const result = nextSunday(new Date(2020, 2, 22))\n * //=> Sun Mar 29 2020 00:00:00\n */\n\nexport default function nextSunday(date) {\n requiredArgs(1, arguments);\n return nextDay(toDate(date), 0);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport nextDay from \"../nextDay/index.js\";\nimport toDate from \"../toDate/index.js\";\n/**\n * @name nextThursday\n * @category Weekday Helpers\n * @summary When is the next Thursday?\n *\n * @description\n * When is the next Thursday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Thursday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Thursday after Mar, 22, 2020?\n * const result = nextThursday(new Date(2020, 2, 22))\n * //=> Thur Mar 26 2020 00:00:00\n */\n\nexport default function nextThursday(date) {\n requiredArgs(1, arguments);\n return nextDay(toDate(date), 4);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport nextDay from \"../nextDay/index.js\";\nimport toDate from \"../toDate/index.js\";\n/**\n * @name nextTuesday\n * @category Weekday Helpers\n * @summary When is the next Tuesday?\n *\n * @description\n * When is the next Tuesday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Tuesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Tuesday after Mar, 22, 2020?\n * const result = nextTuesday(new Date(2020, 2, 22))\n * //=> Tue Mar 24 2020 00:00:00\n */\n\nexport default function nextTuesday(date) {\n requiredArgs(1, arguments);\n return nextDay(toDate(date), 2);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport nextDay from \"../nextDay/index.js\";\nimport toDate from \"../toDate/index.js\";\n/**\n * @name nextWednesday\n * @category Weekday Helpers\n * @summary When is the next Wednesday?\n *\n * @description\n * When is the next Wednesday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Wednesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Wednesday after Mar, 22, 2020?\n * const result = nextWednesday(new Date(2020, 2, 22))\n * //=> Wed Mar 25 2020 00:00:00\n */\n\nexport default function nextWednesday(date) {\n requiredArgs(1, arguments);\n return nextDay(toDate(date), 3);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name parseJSON\n * @category Common Helpers\n * @summary Parse a JSON date string\n *\n * @description\n * Converts a complete ISO date string in UTC time, the typical format for transmitting\n * a date in JSON, to a JavaScript `Date` instance.\n *\n * This is a minimal implementation for converting dates retrieved from a JSON API to\n * a `Date` instance which can be used with other functions in the `date-fns` library.\n * The following formats are supported:\n *\n * - `2000-03-15T05:20:10.123Z`: The output of `.toISOString()` and `JSON.stringify(new Date())`\n * - `2000-03-15T05:20:10Z`: Without milliseconds\n * - `2000-03-15T05:20:10+00:00`: With a zero offset, the default JSON encoded format in some other languages\n * - `2000-03-15T05:20:10+05:45`: With a positive or negative offset, the default JSON encoded format in some other languages\n * - `2000-03-15T05:20:10+0000`: With a zero offset without a colon\n * - `2000-03-15T05:20:10`: Without a trailing 'Z' symbol\n * - `2000-03-15T05:20:10.1234567`: Up to 7 digits in milliseconds field. Only first 3 are taken into account since JS does not allow fractional milliseconds\n * - `2000-03-15 05:20:10`: With a space instead of a 'T' separator for APIs returning a SQL date without reformatting\n *\n * For convenience and ease of use these other input types are also supported\n * via [toDate]{@link https://date-fns.org/docs/toDate}:\n *\n * - A `Date` instance will be cloned\n * - A `number` will be treated as a timestamp\n *\n * Any other input type or invalid date strings will return an `Invalid Date`.\n *\n * @param {String|Number|Date} argument A fully formed ISO8601 date string to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n */\n\nexport default function parseJSON(argument) {\n requiredArgs(1, arguments);\n\n if (typeof argument === 'string') {\n var parts = argument.match(/(\\d{4})-(\\d{2})-(\\d{2})[T ](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{0,7}))?(?:Z|(.)(\\d{2}):?(\\d{2})?)?/);\n\n if (parts) {\n // Group 8 matches the sign\n return new Date(Date.UTC(+parts[1], +parts[2] - 1, +parts[3], +parts[4] - (+parts[9] || 0) * (parts[8] == '-' ? -1 : 1), +parts[5] - (+parts[10] || 0) * (parts[8] == '-' ? -1 : 1), +parts[6], +((parts[7] || '0') + '00').substring(0, 3)));\n }\n\n return new Date(NaN);\n }\n\n return toDate(argument);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { monthsInQuarter } from \"../constants/index.js\";\n/**\n * @name quartersToMonths\n * @category Conversion Helpers\n * @summary Convert number of quarters to months.\n *\n * @description\n * Convert a number of quarters to a full number of months.\n *\n * @param {number} quarters - number of quarters to be converted\n *\n * @returns {number} the number of quarters converted in months\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 quarters to months\n * const result = quartersToMonths(2)\n * //=> 6\n */\n\nexport default function quartersToMonths(quarters) {\n requiredArgs(1, arguments);\n return Math.floor(quarters * monthsInQuarter);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { quartersInYear } from \"../constants/index.js\";\n/**\n * @name quartersToYears\n * @category Conversion Helpers\n * @summary Convert number of quarters to years.\n *\n * @description\n * Convert a number of quarters to a full number of years.\n *\n * @param {number} quarters - number of quarters to be converted\n *\n * @returns {number} the number of quarters converted in years\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 8 quarters to years\n * const result = quartersToYears(8)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = quartersToYears(11)\n * //=> 2\n */\n\nexport default function quartersToYears(quarters) {\n requiredArgs(1, arguments);\n var years = quarters / quartersInYear;\n return Math.floor(years);\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name roundToNearestMinutes\n * @category Minute Helpers\n * @summary Rounds the given date to the nearest minute\n *\n * @description\n * Rounds the given date to the nearest minute (or number of minutes).\n * Rounds up when the given date is exactly between the nearest round minutes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to round\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.nearestTo=1] - nearest number of minutes to round to. E.g. `15` to round to quarter hours.\n * @returns {Date} the new date rounded to the closest minute\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.nearestTo` must be between 1 and 30\n *\n * @example\n * // Round 10 July 2014 12:12:34 to nearest minute:\n * var result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34))\n * //=> Thu Jul 10 2014 12:13:00\n *\n * @example\n * // Round 10 July 2014 12:07:30 to nearest quarter hour:\n * var result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34), { nearestTo: 15 })\n * // rounds up because given date is exactly between 12:00:00 and 12:15:00\n * //=> Thu Jul 10 2014 12:15:00\n */\n\nexport default function roundToNearestMinutes(dirtyDate, options) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only none provided present');\n }\n\n var nearestTo = options && 'nearestTo' in options ? toInteger(options.nearestTo) : 1;\n\n if (nearestTo < 1 || nearestTo > 30) {\n throw new RangeError('`options.nearestTo` must be between 1 and 30');\n }\n\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds(); // relevant if nearestTo is 1, which is the default case\n\n var minutes = date.getMinutes() + seconds / 60;\n var roundedMinutes = Math.floor(minutes / nearestTo) * nearestTo;\n var remainderMinutes = minutes % nearestTo;\n var addedMinutes = Math.round(remainderMinutes / nearestTo) * nearestTo;\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), roundedMinutes + addedMinutes);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { secondsInHour } from \"../constants/index.js\";\n/**\n * @name secondsToHours\n * @category Conversion Helpers\n * @summary Convert seconds to hours.\n *\n * @description\n * Convert a number of seconds to a full number of hours.\n *\n * @param {number} seconds - number of seconds to be converted\n *\n * @returns {number} the number of seconds converted in hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 7200 seconds into hours\n * const result = secondsToHours(7200)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = secondsToHours(7199)\n * //=> 1\n */\n\nexport default function secondsToHours(seconds) {\n requiredArgs(1, arguments);\n var hours = seconds / secondsInHour;\n return Math.floor(hours);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInSecond } from \"../constants/index.js\";\n/**\n * @name secondsToMilliseconds\n * @category Conversion Helpers\n * @summary Convert seconds to milliseconds.\n *\n * @description\n * Convert a number of seconds to a full number of milliseconds.\n *\n * @param {number} seconds - number of seconds to be converted\n *\n * @returns {number} the number of seconds converted in milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 seconds into milliseconds\n * const result = secondsToMilliseconds(2)\n * //=> 2000\n */\n\nexport default function secondsToMilliseconds(seconds) {\n requiredArgs(1, arguments);\n return seconds * millisecondsInSecond;\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { secondsInMinute } from \"../constants/index.js\";\n/**\n * @name secondsToMinutes\n * @category Conversion Helpers\n * @summary Convert seconds to minutes.\n *\n * @description\n * Convert a number of seconds to a full number of minutes.\n *\n * @param {number} seconds - number of seconds to be converted\n *\n * @returns {number} the number of seconds converted in minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 120 seconds into minutes\n * const result = secondsToMinutes(120)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = secondsToMinutes(119)\n * //=> 1\n */\n\nexport default function secondsToMinutes(seconds) {\n requiredArgs(1, arguments);\n var minutes = seconds / secondsInMinute;\n return Math.floor(minutes);\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 toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Object} values - an object with options\n * @param {Number} [values.year] - the number of years to be set\n * @param {Number} [values.month] - the number of months to be set\n * @param {Number} [values.date] - the number of days to be set\n * @param {Number} [values.hours] - the number of hours to be set\n * @param {Number} [values.minutes] - the number of minutes to be set\n * @param {Number} [values.seconds] - the number of seconds to be set\n * @param {Number} [values.milliseconds] - the number of milliseconds to be set\n * @returns {Date} the new date with options set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `values` must be an object\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * var result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * var result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\n\nexport default function set(dirtyDate, values) {\n requiredArgs(2, arguments);\n\n if (_typeof(values) !== 'object' || values === null) {\n throw new RangeError('values parameter must be an object');\n }\n\n var date = toDate(dirtyDate); // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n if (values.year != null) {\n date.setFullYear(values.year);\n }\n\n if (values.month != null) {\n date = setMonth(date, values.month);\n }\n\n if (values.date != null) {\n date.setDate(toInteger(values.date));\n }\n\n if (values.hours != null) {\n date.setHours(toInteger(values.hours));\n }\n\n if (values.minutes != null) {\n date.setMinutes(toInteger(values.minutes));\n }\n\n if (values.seconds != null) {\n date.setSeconds(toInteger(values.seconds));\n }\n\n if (values.milliseconds != null) {\n date.setMilliseconds(toInteger(values.milliseconds));\n }\n\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 setDate\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} dayOfMonth - the day of the month of the new date\n * @returns {Date} the new date with the day of the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * var result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\n\nexport default function setDate(dirtyDate, dirtyDayOfMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = toInteger(dirtyDayOfMonth);\n date.setDate(dayOfMonth);\n return date;\n}","import addDays from \"../addDays/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} day - the day of the week of the new 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 new date with the day of the week set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * var result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * var result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\n\nexport default function setDay(dirtyDate, dirtyDay, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // 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 = toInteger(dirtyDay);\n var currentDay = date.getDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var delta = 7 - weekStartsOn;\n var diff = day < 0 || day > 6 ? day - (currentDay + delta) % 7 : (dayIndex + delta) % 7 - (currentDay + delta) % 7;\n return addDays(date, diff);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setDayOfYear\n * @category Day Helpers\n * @summary Set the day of the year to the given date.\n *\n * @description\n * Set the day of the year to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} dayOfYear - the day of the year of the new date\n * @returns {Date} the new date with the day of the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd day of the year to 2 July 2014:\n * var result = setDayOfYear(new Date(2014, 6, 2), 2)\n * //=> Thu Jan 02 2014 00:00:00\n */\n\nexport default function setDayOfYear(dirtyDate, dirtyDayOfYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dayOfYear = toInteger(dirtyDayOfYear);\n date.setMonth(0);\n date.setDate(dayOfYear);\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 setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\n\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport getISODay from \"../getISODay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} day - the day of the ISO week of the new date\n * @returns {Date} the new date with the day of the ISO week set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\n\nexport default function setISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = getISODay(date);\n var diff = day - currentDay;\n return addDays(date, diff);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getISOWeek from \"../getISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} isoWeek - the ISO week of the new date\n * @returns {Date} the new date with the ISO week set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\n\nexport default function setISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getISOWeek(date) - isoWeek;\n date.setDate(date.getDate() - diff * 7);\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 setMilliseconds\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} milliseconds - the milliseconds of the new date\n * @returns {Date} the new date with the milliseconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * const result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\n\nexport default function setMilliseconds(dirtyDate, dirtyMilliseconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var milliseconds = toInteger(dirtyMilliseconds);\n date.setMilliseconds(milliseconds);\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 setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\n\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * const result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\n\nexport default function setQuarter(dirtyDate, dirtyQuarter) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var quarter = toInteger(dirtyQuarter);\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1;\n var diff = quarter - oldQuarter;\n return setMonth(date, date.getMonth() + diff * 3);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\n\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","import getWeek from \"../getWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} week - the week of the new 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 new date with the local week set\n * @throws {TypeError} 2 arguments 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 * // Set the 1st week to 2 January 2005 with default options:\n * var result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 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 * var result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\n\nexport default function setWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getWeek(date, options) - week;\n date.setDate(date.getDate() - diff * 7);\n return date;\n}","import differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport startOfWeekYear from \"../startOfWeekYear/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Set the local week-numbering year to the given date.\n *\n * @description\n * Set the local week-numbering year to the given date,\n * saving the week number and the weekday number.\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} weekYear - the local week-numbering year of the new 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 new date with the local week-numbering year set\n * @throws {TypeError} 2 arguments 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 * // Set the local week-numbering year 2004 to 2 January 2010 with default options:\n * var result = setWeekYear(new Date(2010, 0, 2), 2004)\n * //=> Sat Jan 03 2004 00:00:00\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010,\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * var result = setWeekYear(new Date(2010, 0, 2), 2004, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sat Jan 01 2005 00:00:00\n */\n\nexport default function setWeekYear(dirtyDate, dirtyWeekYear) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n requiredArgs(2, arguments);\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var date = toDate(dirtyDate);\n var weekYear = toInteger(dirtyWeekYear);\n var diff = differenceInCalendarDays(date, startOfWeekYear(date, options));\n var firstWeek = new Date(0);\n firstWeek.setFullYear(weekYear, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n date = startOfWeekYear(firstWeek, options);\n date.setDate(date.getDate() + diff);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDecade\n * @category Decade Helpers\n * @summary Return the start of a decade for the given date.\n *\n * @description\n * Return the start of a decade for the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a decade for 21 October 2015 00:00:00:\n * const result = startOfDecade(new Date(2015, 9, 21, 00, 00, 00))\n * //=> Jan 01 2010 00:00:00\n */\n\nexport default function startOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = Math.floor(year / 10) * 10;\n date.setFullYear(decade, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import startOfDay from \"../startOfDay/index.js\";\n/**\n * @name startOfToday\n * @category Day Helpers\n * @summary Return the start of today.\n * @pure false\n *\n * @description\n * Return the start of today.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the start of today\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfToday()\n * //=> Mon Oct 6 2014 00:00:00\n */\n\nexport default function startOfToday() {\n return startOfDay(Date.now());\n}","/**\n * @name startOfTomorrow\n * @category Day Helpers\n * @summary Return the start of tomorrow.\n * @pure false\n *\n * @description\n * Return the start of tomorrow.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the start of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * const result = startOfTomorrow()\n * //=> Tue Oct 7 2014 00:00:00\n */\nexport default function startOfTomorrow() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day + 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","/**\n * @name startOfYesterday\n * @category Day Helpers\n * @summary Return the start of yesterday.\n * @pure false\n *\n * @description\n * Return the start of yesterday.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the start of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * const result = startOfYesterday()\n * //=> Sun Oct 5 2014 00:00:00\n */\nexport default function startOfYesterday() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day - 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addBusinessDays from \"../addBusinessDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subBusinessDays\n * @category Day Helpers\n * @summary Substract the specified number of business days (mon - fri) to the given date.\n *\n * @description\n * Substract the specified number of business days (mon - fri) to the given date, ignoring weekends.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of business days to be subtracted. 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 business days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Substract 10 business days from 1 September 2014:\n * var result = subBusinessDays(new Date(2014, 8, 1), 10)\n * //=> Mon Aug 18 2014 00:00:00 (skipped weekend days)\n */\n\nexport default function subBusinessDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addBusinessDays(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addHours from \"../addHours/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted. 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 hours subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * const result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\n\nexport default function subHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addHours(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMinutes from \"../addMinutes/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted. 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 minutes subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * const result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\n\nexport default function subMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMinutes(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addQuarters from \"../addQuarters/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted. 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 quarters subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\n\nexport default function subQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addQuarters(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addSeconds from \"../addSeconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subSeconds\n * @category Second Helpers\n * @summary Subtract the specified number of seconds from the given date.\n *\n * @description\n * Subtract the specified number of seconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be subtracted. 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 seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * const result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\n\nexport default function subSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addSeconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted. 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 weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\n\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addYears from \"../addYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted. 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 subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\n\nexport default function subYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { daysInWeek } from \"../constants/index.js\";\n/**\n * @name weeksToDays\n * @category Conversion Helpers\n * @summary Convert weeks to days.\n *\n * @description\n * Convert a number of weeks to a full number of days.\n *\n * @param {number} weeks - number of weeks to be converted\n *\n * @returns {number} the number of weeks converted in days\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 weeks into days\n * const result = weeksToDays(2)\n * //=> 14\n */\n\nexport default function weeksToDays(weeks) {\n requiredArgs(1, arguments);\n return Math.floor(weeks * daysInWeek);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { monthsInYear } from \"../constants/index.js\";\n/**\n * @name yearsToMonths\n * @category Conversion Helpers\n * @summary Convert years to months.\n *\n * @description\n * Convert a number of years to a full number of months.\n *\n * @param {number} years - number of years to be converted\n *\n * @returns {number} the number of years converted in months\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 years into months\n * const result = yearsToMonths(2)\n * //=> 24\n */\n\nexport default function yearsToMonths(years) {\n requiredArgs(1, arguments);\n return Math.floor(years * monthsInYear);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { quartersInYear } from \"../constants/index.js\";\n/**\n * @name yearsToQuarters\n * @category Conversion Helpers\n * @summary Convert years to quarters.\n *\n * @description\n * Convert a number of years to a full number of quarters.\n *\n * @param {number} years - number of years to be converted\n *\n * @returns {number} the number of years converted in quarters\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 years to quarters\n * const result = yearsToQuarters(2)\n * //=> 8\n */\n\nexport default function yearsToQuarters(years) {\n requiredArgs(1, arguments);\n return Math.floor(years * quartersInYear);\n}","export * from './core';\nexport * from './react';","export { CancelledError } from './retryer';\nexport { QueryCache } from './queryCache';\nexport { QueryClient } from './queryClient';\nexport { QueryObserver } from './queryObserver';\nexport { QueriesObserver } from './queriesObserver';\nexport { InfiniteQueryObserver } from './infiniteQueryObserver';\nexport { MutationCache } from './mutationCache';\nexport { MutationObserver } from './mutationObserver';\nexport { setLogger } from './logger';\nexport { notifyManager } from './notifyManager';\nexport { focusManager } from './focusManager';\nexport { onlineManager } from './onlineManager';\nexport { hashQueryKey, isError } from './utils';\nexport { isCancelledError } from './retryer'; // Types\n\nexport * from './types';"],"sourceRoot":""}