{"version":3,"sources":["webpack:///./node_modules/query-string/index.js","webpack:///./node_modules/date-fns/esm/toDate/index.js","webpack:///./node_modules/date-fns/esm/isValid/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack:///./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack:///./node_modules/date-fns/esm/addMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/subMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack:///./node_modules/date-fns/esm/format/index.js","webpack:///./node_modules/date-fns/esm/compareAsc/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack:///./node_modules/date-fns/esm/differenceInMonths/index.js","webpack:///./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/assign/index.js","webpack:///./node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack:///./node_modules/date-fns/esm/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/formatDistanceToNow/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack:///./node_modules/date-fns/esm/parse/index.js","webpack:///./app/javascript/shared/lib/time.ts","webpack:///./node_modules/date-fns/esm/isAfter/index.js","webpack:///./node_modules/isomorphic-fetch/fetch-npm-browserify.js","webpack:///./node_modules/cash-dom/dist/cash.esm.js","webpack:///./app/javascript/job_board/stimulus/controllers sync .js$","webpack:///./app/javascript/job_board/stimulus/controllers/job_controller.js","webpack:///./app/javascript/job_board/stimulus/controllers/nav-bar_controller.js","webpack:///./app/javascript/job_board/stimulus/controllers/subscribe_controller.js","webpack:///./node_modules/whatwg-fetch/fetch.js","webpack:///./app/javascript/packs/job_board_application.js","webpack:///./node_modules/@stimulus/webpack-helpers/dist/index.js","webpack:///./node_modules/@stimulus/core/dist/src/event_listener.js","webpack:///./node_modules/@stimulus/core/dist/src/dispatcher.js","webpack:///./node_modules/@stimulus/core/dist/src/action_descriptor.js","webpack:///./node_modules/@stimulus/core/dist/src/action.js","webpack:///./node_modules/@stimulus/core/dist/src/binding.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/element_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js","webpack:///./node_modules/@stimulus/multimap/dist/src/set_operations.js","webpack:///./node_modules/@stimulus/multimap/dist/src/multimap.js","webpack:///./node_modules/@stimulus/multimap/dist/src/indexed_multimap.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/value_list_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/binding_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/context.js","webpack:///./node_modules/@stimulus/core/dist/src/definition.js","webpack:///./node_modules/@stimulus/core/dist/src/module.js","webpack:///./node_modules/@stimulus/core/dist/src/data_map.js","webpack:///./node_modules/@stimulus/core/dist/src/selectors.js","webpack:///./node_modules/@stimulus/core/dist/src/target_set.js","webpack:///./node_modules/@stimulus/core/dist/src/scope.js","webpack:///./node_modules/@stimulus/core/dist/src/scope_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/router.js","webpack:///./node_modules/@stimulus/core/dist/src/schema.js","webpack:///./node_modules/@stimulus/core/dist/src/application.js","webpack:///./node_modules/@stimulus/core/dist/src/target_properties.js","webpack:///./node_modules/@stimulus/core/dist/src/controller.js","webpack:///./node_modules/strict-uri-encode/index.js","webpack:///./node_modules/decode-uri-component/index.js"],"names":["_slicedToArray","arr","i","Array","isArray","_arrayWithHoles","Symbol","iterator","Object","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","value","length","err","_iterableToArrayLimit","_unsupportedIterableToArray","TypeError","_nonIterableRest","_createForOfIteratorHelper","o","allowArrayLike","it","F","s","n","e","_e2","f","normalCompletion","didErr","step","_e3","minLen","_arrayLikeToArray","prototype","toString","call","slice","constructor","name","from","test","len","arr2","_typeof","obj","strictUriEncode","decodeComponent","encode","options","strict","encodeURIComponent","decode","keysSorter","input","sort","keys","a","b","Number","map","key","extract","queryStart","indexOf","parse","formatter","result","arrayFormat","accumulator","exec","replace","concat","parserForArrayFormat","assign","ret","create","trim","_step","_iterator","split","_param$replace$split2","reduce","Boolean","exports","stringify","index","join","encoderForArrayFormat","_step2","_iterator2","value2","filter","x","parseUrl","url","query","toDate","argument","arguments","argStr","Date","getTime","console","warn","Error","stack","NaN","isValid","dirtyDate","date","isNaN","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","args","dirtyOptions","width","String","defaultWidth","formats","formatLong","full","medium","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","context","formattingValues","defaultFormattingWidth","_defaultWidth","_width","values","argumentCallback","buildMatchFn","dirtyString","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","match","matchedString","parsePatterns","defaultParseWidth","findIndex","pattern","object","predicate","hasOwnProperty","findKey","valueCallback","rest","formatDistance","token","count","addSuffix","comparison","formatRelative","_date","_baseDate","_options","localize","ordinalNumber","dirtyNumber","_dirtyOptions","number","rem100","era","narrow","abbreviated","wide","quarter","month","day","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","parsePattern","parseInt","parseResult","any","weekStartsOn","firstWeekContainsDate","toInteger","Math","ceil","floor","addMilliseconds","dirtyAmount","timestamp","amount","subMilliseconds","addLeadingZeros","targetLength","sign","output","abs","y","signedYear","getUTCFullYear","year","M","getUTCMonth","d","getUTCDate","dayPeriodEnumValue","getUTCHours","toUpperCase","h","H","m","getUTCMinutes","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","pow","MILLISECONDS_IN_DAY","startOfUTCISOWeek","getUTCDay","diff","setUTCDate","setUTCHours","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","round","startOfUTCWeek","locale","localeWeekStartsOn","defaultWeekStartsOn","RangeError","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","getUTCWeek","dayPeriodEnum","formatTimezoneShort","offset","dirtyDelimiter","absOffset","hours","minutes","delimiter","formatTimezoneWithOptionalMinutes","formatTimezone","G","unit","lightFormatters","Y","signedWeekYear","weekYear","R","u","Q","q","L","w","week","I","isoWeek","D","dayOfYear","setUTCMonth","startOfYearTimestamp","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","c","isoDayOfWeek","B","K","k","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","O","z","t","originalDate","T","dateLongFormatter","timeLongFormatter","p","P","dateTimeFormat","datePattern","timePattern","getTimezoneOffsetInMilliseconds","baseTimezoneOffset","setSeconds","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","format","dirtyFormatStr","formatStr","utcDate","formatterOptions","substring","firstCharacter","longFormatter","cleanEscapedString","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","differenceInCalendarMonths","yearDiff","getFullYear","monthDiff","getMonth","differenceInMonths","setMonth","isLastMonthNotFull","differenceInMilliseconds","differenceInSeconds","target","dirtyObject","property","cloneObject","MINUTES_IN_DAY","MINUTES_IN_MONTH","dirtyBaseDate","localizeOptions","months","seconds","offsetInSeconds","includeSeconds","days","nearestMonth","monthsSinceStartOfYear","years","formatDistanceToNow","now","setUTCDay","dirtyDay","currentDay","remainder","dayIndex","numericPatterns","timezonePatterns","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","RegExp","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","priority","set","flags","incompatibleTokens","isTwoDigitYear","validate","normalizedTwoDigitYear","_match","_flags","firstWeekOfYear","dirtyWeek","setUTCWeek","dirtyISOWeek","setUTCISOWeek","isLeapYear","wholeWeekDays","setUTCISODay","isPM","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","timestampIsSet","_token","notWhitespaceRegExp","dateToSystemTimezone","convertedDate","setFullYear","setHours","timeAgoInWordsShort","datetime","timeAgoInWordsLong","prettyDate","prettyDateAndTime","prettyDateSimple","prettyTime","distanceInWords","isDeadlineDateAfterCurrent","dateString","dirtyDateToCompare","dateToCompare","isAfter","dirtyDateString","dirtyFormatString","dirtyBackupDate","formatString","subFnOptions","setters","tokens","usedTokens","parser","incompatibleToken","usedToken","fullToken","uniquePrioritySetters","setter","array","reverse","setterArray","module","self","fetch","bind","doc","document","win","window","_Array$prototype","splice","idRe","classRe","htmlRe","tagRe","find","selector","getElementsByClassName","getElementsByTagName","querySelectorAll","Cash","__cash","eles","isString","getElementById","parseHTML","isFunction","this","ready","nodeType","l","cash","fn","get","eq","first","last","callback","ele","apply","camelCaseRe","camelCaseWhitespaceRe","camelCase","str","letter","each","removeProp","prop","extend","guid","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","isNumeric","parseFloat","isFinite","getCompareFunction","is","comparator","splitValuesRe","getSplitValues","unique","item","computeStyle","isVariable","style","getComputedStyle","getPropertyValue","computeStyleInt","hasClass","cls","classes","check","classList","contains","removeAttr","attr","attrs","removeAttribute","_value","getAttribute","setAttribute","toggleClass","force","isForce","add","remove","toggle","addClass","removeClass","cssVariableRe","isCSSVariable","prefixedProps","createElement","vendorsPrefixes","getPrefixedProp","propCC","propUC","charAt","prefixedProp","numericProps","animationIterationCount","columnCount","flexGrow","flexShrink","fontWeight","lineHeight","opacity","order","orphans","widows","zIndex","getSuffixedValue","css","setProperty","dataNamespace","dataAttributeRe","getDataCache","getData","cache","dataset","JSON","getExtraSpace","xAxis","hasNamespaces","ns1","ns2","removeEventListeners","_ref","removeEventListener","hasData","data","_this","attributes","setData","removeData","boxSizing","getBoundingClientRect","includeMargins","getEventsCache","parseEventName","eventName","parts","removeEvent","namespaces","eventCache","_ref2","ns","cb","off","eventFullName","_this2","_parseEventName","on","_one","_this3","_parseEventName2","finalCallback","event","namespace","thisArg","parentNode","returnValue","preventDefault","stopPropagation","addEventListener","addEvent","delegate","readyState","setTimeout","trigger","evt","_parseEventName3","createEvent","initEvent","dispatchEvent","selectOneRe","selectMultipleRe","getValue","type","selectedIndex","getValueSelectSingle","option","selected","disabled","getValueSelectMultiple","queryEncodeSpaceRe","skippableRe","checkableRe","serialize","elements","tagName","checked","queryEncode","substr","val","isMultiple","eleValue","clone","cloneNode","detach","removeChild","containers","fragmentRe","singleTagRe","html","table","tr","td","th","thead","tbody","tfoot","initContainers","$1","fragment","container","innerHTML","childNodes","insertContent","parent","child","prepend","isStr","insertAdjacentHTML","insertBefore","appendChild","insertElement","empty","firstChild","append","_this4","content","appendTo","source","outerHTML","insertAfter","_this5","nextSibling","after","_this6","_this7","before","_this8","_this9","prependTo","replaceWith","_this10","$eles","replaceChild","replaceAll","text","textContent","docEle","documentElement","rect","top","pageYOffset","clientTop","left","pageXOffset","clientLeft","offsetParent","position","offsetLeft","offsetTop","children","contents","contentDocument","found","has","nextElementSibling","not","collection","closest","parents","body","prev","previousElementSibling","siblings","webpackContext","req","id","webpackContextResolve","__webpack_require__","code","resolve","Controller","connect","publishedAtTimestamp","publishedAtDateTarget","log","showMobileNav","$","mobileNavTarget","navIconMenuTarget","navIconCloseTarget","hideMobileNav","parsed","queryString","location","search","email_confirmed","showEmailConfirmedModal","unsubscribed","showUnsubscribedModal","unsubscribeSuccessModalTarget","hideUnsubscribedModal","Turbolinks","visit","emailConfirmedModalTarget","hideEmailConfirmedModal","showSubscriptionModal","subscriptionModalTarget","emailTarget","focus","hideSubscriptionModal","subscriptionFormTarget","subscriptionSuccessNewIndividualTarget","subscriptionSuccessExistingIndividualTarget","showSubscriptionSuccess","is_email_confirmed","handleSubmitSubscriptionForm","email","careers_page_slug","CAREERS_PAGE_SLUG","categories","checkboxTargets","forEach","checkbox","careers_page_subscription","that","method","headers","Rails","csrfToken","credentials","then","response","json","global","globalThis","support","Blob","viewClasses","isArrayBufferView","ArrayBuffer","isView","normalizeName","toLowerCase","normalizeValue","iteratorFor","items","shift","Headers","header","getOwnPropertyNames","consumed","bodyUsed","Promise","reject","fileReaderReady","reader","onload","onerror","error","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","buf","view","Uint8Array","byteLength","buffer","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","rejected","arrayBuffer","isConsumed","byteOffset","readAsText","chars","fromCharCode","readArrayBufferAsText","formData","oldValue","entries","methods","Request","upcased","mode","signal","referrer","reParamSearch","form","bytes","decodeURIComponent","Response","bodyInit","status","ok","statusText","redirectStatuses","redirect","DOMException","message","init","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","line","responseURL","responseText","ontimeout","onabort","open","href","fixUrl","withCredentials","responseType","setRequestHeader","onreadystatechange","send","polyfill","application","Application","start","require","load","identifier","logicalName","identifierForContextKey","controllerConstructor","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","definitionsFromContext","EventListener","eventTarget","unorderedBindings","Set","disconnect","bindingConnected","binding","bindingDisconnected","handleEvent","extendedEvent","stopImmediatePropagation_1","stopImmediatePropagation","immediatePropagationStopped","extendEvent","_a","bindings","defineProperty","right","leftIndex","rightIndex","enumerable","configurable","Dispatcher","eventListenerMaps","Map","started","eventListeners","eventListener","stop","listeners","fetchEventListenerForBinding","handleError","detail","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","createEventListener","descriptorPattern","parseEventTarget","eventTargetName","Action","element","descriptor","defaultEventNames","getDefaultEventNameForElement","methodName","forToken","descriptorString","eventNameSuffix","Binding","action","willBeInvokedByEvent","invokeWithEvent","controller","Element","scope","containsElement","ElementObserver","mutationObserver","MutationObserver","mutations","processMutations","observe","childList","subtree","refresh","takeRecords","matchElementsInTree","removeElement","_b","_c","addElement","mutations_1","mutation","processMutation","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","node","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","hasAttribute","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","del","size","prune","extendStatics","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","__extends","setPrototypeOf","__proto__","__","_super","IndexedMultimap","keysByValue","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","max","_","tokensAreEqual","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","clear","Context","bindingObserver","dispatcher","initialize","parentElement","blessControllerConstructor","bless","extendWithReflect","_newTarget","Reflect","construct","Module","definition","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","DataMap","getFormattedKey","_char","attributeValueContainsToken","TargetSet","targetName","targetNames","getSelectorForTargetNames","findElement","findAll","findAllElements","getSelectorForTargetName","targetDescriptor","targetAttribute","Scope","targets","head","tail","filterElements","controllerSelector","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","modules","contexts","loadDefinition","unloadIdentifier","connectModule","disconnectModule","getContextForElementAndIdentifier","defaultSchema","__awaiter","_arguments","generator","fulfilled","__generator","g","label","sent","trys","ops","verb","v","op","pop","router","register","definitions","unload","identifiers","getControllerForElementAndIdentifier","defineTargetProperties","ancestors","getPrototypeOf","getAncestorsForConstructor","getOwnTargetNamesForConstructor","getTargetNamesForConstructor","properties","capitalize","charCodeAt","singleMatcher","multiMatcher","decodeComponents","components","encodedURI","replaceMap","customDecodeURIComponent"],"mappings":"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","file":"js/job_board_application-4c92f61c77856af29364.chunk.js","sourcesContent":["'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _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\nvar strictUriEncode = require('strict-uri-encode');\n\nvar decodeComponent = require('decode-uri-component');\n\nfunction encoderForArrayFormat(options) {\n switch (options.arrayFormat) {\n case 'index':\n return function (key, value, index) {\n return value === null ? [encode(key, options), '[', index, ']'].join('') : [encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('');\n };\n\n case 'bracket':\n return function (key, value) {\n return value === null ? [encode(key, options), '[]'].join('') : [encode(key, options), '[]=', encode(value, options)].join('');\n };\n\n default:\n return function (key, value) {\n return value === null ? encode(key, options) : [encode(key, options), '=', encode(value, options)].join('');\n };\n }\n}\n\nfunction parserForArrayFormat(options) {\n var result;\n\n switch (options.arrayFormat) {\n case 'index':\n return function (key, value, accumulator) {\n result = /\\[(\\d*)\\]$/.exec(key);\n key = key.replace(/\\[\\d*\\]$/, '');\n\n if (!result) {\n accumulator[key] = value;\n return;\n }\n\n if (accumulator[key] === undefined) {\n accumulator[key] = {};\n }\n\n accumulator[key][result[1]] = value;\n };\n\n case 'bracket':\n return function (key, value, accumulator) {\n result = /(\\[\\])$/.exec(key);\n key = key.replace(/\\[\\]$/, '');\n\n if (!result) {\n accumulator[key] = value;\n return;\n }\n\n if (accumulator[key] === undefined) {\n accumulator[key] = [value];\n return;\n }\n\n accumulator[key] = [].concat(accumulator[key], value);\n };\n\n default:\n return function (key, value, accumulator) {\n if (accumulator[key] === undefined) {\n accumulator[key] = value;\n return;\n }\n\n accumulator[key] = [].concat(accumulator[key], value);\n };\n }\n}\n\nfunction encode(value, options) {\n if (options.encode) {\n return options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n }\n\n return value;\n}\n\nfunction decode(value, options) {\n if (options.decode) {\n return decodeComponent(value);\n }\n\n return value;\n}\n\nfunction keysSorter(input) {\n if (Array.isArray(input)) {\n return input.sort();\n }\n\n if (_typeof(input) === 'object') {\n return keysSorter(Object.keys(input)).sort(function (a, b) {\n return Number(a) - Number(b);\n }).map(function (key) {\n return input[key];\n });\n }\n\n return input;\n}\n\nfunction extract(input) {\n var queryStart = input.indexOf('?');\n\n if (queryStart === -1) {\n return '';\n }\n\n return input.slice(queryStart + 1);\n}\n\nfunction parse(input, options) {\n options = Object.assign({\n decode: true,\n arrayFormat: 'none'\n }, options);\n var formatter = parserForArrayFormat(options); // Create an object with no prototype\n\n var ret = Object.create(null);\n\n if (typeof input !== 'string') {\n return ret;\n }\n\n input = input.trim().replace(/^[?#&]/, '');\n\n if (!input) {\n return ret;\n }\n\n var _iterator = _createForOfIteratorHelper(input.split('&')),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var param = _step.value;\n\n var _param$replace$split = param.replace(/\\+/g, ' ').split('='),\n _param$replace$split2 = _slicedToArray(_param$replace$split, 2),\n key = _param$replace$split2[0],\n value = _param$replace$split2[1]; // Missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\n\n value = value === undefined ? null : decode(value, options);\n formatter(decode(key, options), value, ret);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return Object.keys(ret).sort().reduce(function (result, key) {\n var value = ret[key];\n\n if (Boolean(value) && _typeof(value) === 'object' && !Array.isArray(value)) {\n // Sort object keys, not values\n result[key] = keysSorter(value);\n } else {\n result[key] = value;\n }\n\n return result;\n }, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = function (obj, options) {\n var defaults = {\n encode: true,\n strict: true,\n arrayFormat: 'none'\n };\n options = Object.assign(defaults, options);\n\n if (options.sort === false) {\n options.sort = function () {};\n }\n\n var formatter = encoderForArrayFormat(options);\n return obj ? Object.keys(obj).sort(options.sort).map(function (key) {\n var value = obj[key];\n\n if (value === undefined) {\n return '';\n }\n\n if (value === null) {\n return encode(key, options);\n }\n\n if (Array.isArray(value)) {\n var result = [];\n\n var _iterator2 = _createForOfIteratorHelper(value.slice()),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var value2 = _step2.value;\n\n if (value2 === undefined) {\n continue;\n }\n\n result.push(formatter(key, value2, result.length));\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return result.join('&');\n }\n\n return encode(key, options) + '=' + encode(value, options);\n }).filter(function (x) {\n return x.length > 0;\n }).join('&') : '';\n};\n\nexports.parseUrl = function (input, options) {\n return {\n url: input.split('?')[0] || '',\n query: parse(extract(input), options)\n };\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","import toDate from '../toDate/index.js';\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\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 `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `true` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(date);\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nexport default function formatDistance(token, count, options) {\n options = options || {};\n var result;\n\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n}","export default function buildFormatLongFn(args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js';\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n \"long\": 'MMMM do, y',\n medium: 'MMM d, y',\n \"short\": 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n \"long\": 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n \"short\": 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n \"long\": \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n \"short\": '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nexport default function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n}","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var value;\n\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = parsePatterns.findIndex(function (pattern) {\n return pattern.test(string);\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(string);\n });\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n}","import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js';\nimport buildMatchFn from '../../../_lib/buildMatchFn/index.js';\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n \"short\": /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var matchResult = string.match(args.matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n\n if (!parseResult) {\n return null;\n }\n\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}","import formatDistance from './_lib/formatDistance/index.js';\nimport formatLong from './_lib/formatLong/index.js';\nimport formatRelative from './_lib/formatRelative/index.js';\nimport localize from './_lib/localize/index.js';\nimport match from './_lib/match/index.js';\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\n\nvar locale = {\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js';\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] // Note: in English, the names of days of the week and months are capitalized.\n // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n // Generally, formatted dates should look like they are in the middle of a sentence,\n // e.g. in Spanish language the weekdays and months should be in the lowercase.\n\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n \"short\": ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nfunction ordinalNumber(dirtyNumber, _dirtyOptions) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of 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} amount - the amount of milliseconds to be added\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addMilliseconds from '../addMilliseconds/index.js';\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds 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 milliseconds to be subtracted\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import addLeadingZeros from '../../addLeadingZeros/index.js';\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import toDate from '../../toDate/index.js';\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from '../../toDate/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(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 getUTCISOWeekYear from '../getUTCISOWeekYear/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\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 = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\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); // 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.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\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 toInteger from '../toInteger/index.js';\nimport getUTCWeekYear from '../getUTCWeekYear/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\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 = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport startOfUTCWeekYear from '../startOfUTCWeekYear/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(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 lightFormatters from '../lightFormatters/index.js';\nimport getUTCDayOfYear from '../../../_lib/getUTCDayOfYear/index.js';\nimport getUTCISOWeek from '../../../_lib/getUTCISOWeek/index.js';\nimport getUTCISOWeekYear from '../../../_lib/getUTCISOWeekYear/index.js';\nimport getUTCWeek from '../../../_lib/getUTCWeek/index.js';\nimport getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js';\nimport addLeadingZeros from '../../addLeadingZeros/index.js';\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n /*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\n};\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var MILLISECONDS_IN_MINUTE = 60000;\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\n\nexport default function getTimezoneOffsetInMilliseconds(dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = date.getTimezoneOffset();\n date.setSeconds(0, 0);\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE;\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset;\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token) {\n if (token === 'YYYY') {\n throw new RangeError('Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr');\n } else if (token === 'YY') {\n throw new RangeError('Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr');\n } else if (token === 'D') {\n throw new RangeError('Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr');\n } else if (token === 'DD') {\n throw new RangeError('Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr');\n }\n}","import isValid from '../isValid/index.js';\nimport defaultLocale from '../locale/en-US/index.js';\nimport subMilliseconds from '../subMilliseconds/index.js';\nimport toDate from '../toDate/index.js';\nimport formatters from '../_lib/format/formatters/index.js';\nimport longFormatters from '../_lib/format/longFormatters/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from '../_lib/protectedTokens/index.js';\nimport toInteger from '../_lib/toInteger/index.js'; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\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 = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'(.*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\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 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 * (see the last example)\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 * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\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) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\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 * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\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) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\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 | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | 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) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\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) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\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 | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 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 | 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] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\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 | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | 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) | 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 * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\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 *\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 * 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 (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. 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` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\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 [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. 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 * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `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 * 9. `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 * ### 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 second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - 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 {Number} [options.firstWeekContainsDate=1] - the day of January, which is\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 {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\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} 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 * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = 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 localeWeekStartsOn = 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 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 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 formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).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 if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\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 return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from '../toDate/index.js';\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates 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:\n * var result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\n\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\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 toDate from '../toDate/index.js';\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months 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 months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\n\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from '../toDate/index.js';\nimport differenceInCalendarMonths from '../differenceInCalendarMonths/index.js';\nimport compareAsc from '../compareAsc/index.js';\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months 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 months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\n\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference); // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - isLastMonthNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import toDate from '../toDate/index.js';\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds 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 milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * var result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\n\nexport default function differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getTime() - dateRight.getTime();\n}","import differenceInMilliseconds from '../differenceInMilliseconds/index.js';\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds 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 seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * var result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\n\nexport default function differenceInSeconds(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / 1000;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","import assign from '../assign/index.js';\nexport default function cloneObject(dirtyObject) {\n return assign({}, dirtyObject);\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';\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} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var 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 * var 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 * var 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 * var 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, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var options = dirtyOptions || {};\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 distanceInWords from '../formatDistance/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} `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 if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n return distanceInWords(dirtyDate, Date.now(), dirtyOptions);\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\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.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js';\nimport setUTCDay from '../../../_lib/setUTCDay/index.js';\nimport setUTCISODay from '../../../_lib/setUTCISODay/index.js';\nimport setUTCISOWeek from '../../../_lib/setUTCISOWeek/index.js';\nimport setUTCWeek from '../../../_lib/setUTCWeek/index.js';\nimport startOfUTCISOWeek from '../../../_lib/startOfUTCISOWeek/index.js';\nimport startOfUTCWeek from '../../../_lib/startOfUTCWeek/index.js';\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n var value = parseInt(matchResult[0], 10);\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n } // Input is 'Z'\n\n\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n };\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4;\n\n case 'evening':\n return 17;\n\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0; // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // User for validation\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n\n\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n // A, B\n\n case 'GGGGG':\n return match.era(string, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return match.era(string, {\n width: 'wide'\n }) || match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n }\n },\n set: function set(date, flags, value, _options) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['R', 'u', 't', 'T']\n },\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n priority: 130,\n parse: function parse(string, token, match, _options) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback);\n\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function validate(_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function set(date, flags, value, _options) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function parse(string, token, match, _options) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback);\n\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function validate(_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function set(date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function parse(string, token, _match, _options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function set(_date, _flags, value, _options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n },\n incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Extended year\n u: {\n priority: 130,\n parse: function parse(string, token, _match, _options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function set(date, _flags, value, _options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Quarter\n Q: {\n priority: 120,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function validate(_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function set(date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function validate(_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function set(date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Month\n M: {\n priority: 110,\n parse: function parse(string, token, match, _options) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function validate(_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function set(date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone month\n L: {\n priority: 110,\n parse: function parse(string, token, match, _options) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function validate(_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function set(date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Local week of year\n w: {\n priority: 100,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'wo':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function set(date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week of year\n I: {\n priority: 100,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'Io':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function set(date, _flags, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Day of the month\n d: {\n priority: 90,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string);\n\n case 'do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n },\n set: function set(date, _flags, value, _options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Day of year\n D: {\n priority: 90,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n case 'Do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n },\n set: function set(date, _flags, value, _options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n },\n // Day of week\n E: {\n priority: 90,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function validate(_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n },\n // Local day of week\n e: {\n priority: 90,\n parse: function parse(string, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'eee':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function validate(_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n },\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function parse(string, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'ccc':\n return match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function validate(_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n },\n // ISO day of week\n i: {\n priority: 90,\n parse: function parse(string, token, match, _options) {\n var valueCallback = function valueCallback(value) {\n if (value === 0) {\n return 7;\n }\n\n return value;\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, string);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(string, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // T\n\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tu\n\n case 'iiiiii':\n return match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tuesday\n\n case 'iiii':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n }\n },\n validate: function validate(_date, value, _options) {\n return value >= 1 && value <= 7;\n },\n set: function set(date, _flags, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n },\n // AM or PM\n a: {\n priority: 80,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function set(date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function set(date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function set(date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 't', 'T']\n },\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string);\n\n case 'ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(_date, value, _options) {\n return value >= 1 && value <= 12;\n },\n set: function set(date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n },\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string);\n\n case 'Ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(_date, value, _options) {\n return value >= 0 && value <= 23;\n },\n set: function set(date, _flags, value, _options) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n },\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string);\n\n case 'Ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function set(date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']\n },\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string);\n\n case 'ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(_date, value, _options) {\n return value >= 1 && value <= 24;\n },\n set: function set(date, _flags, value, _options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n },\n // Minute\n m: {\n priority: 60,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string);\n\n case 'mo':\n return match.ordinalNumber(string, {\n unit: 'minute'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function set(date, _flags, value, _options) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Second\n s: {\n priority: 50,\n parse: function parse(string, token, match, _options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string);\n\n case 'so':\n return match.ordinalNumber(string, {\n unit: 'second'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function validate(_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function set(date, _flags, value, _options) {\n date.setUTCSeconds(value, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Fraction of second\n S: {\n priority: 30,\n parse: function parse(string, token, _match, _options) {\n var valueCallback = function valueCallback(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n\n return parseNDigits(token.length, string, valueCallback);\n },\n set: function set(date, _flags, value, _options) {\n date.setUTCMilliseconds(value);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 10,\n parse: function parse(string, token, _match, _options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function set(date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'x']\n },\n // Timezone (ISO-8601)\n x: {\n priority: 10,\n parse: function parse(string, token, _match, _options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function set(date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'X']\n },\n // Seconds timestamp\n t: {\n priority: 40,\n parse: function parse(string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function set(_date, _flags, value, _options) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n },\n // Milliseconds timestamp\n T: {\n priority: 20,\n parse: function parse(string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function set(_date, _flags, value, _options) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n }\n};\nexport default parsers;","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport getUTCWeek from '../getUTCWeek/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport getUTCISOWeek from '../getUTCISOWeek/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import defaultLocale from '../locale/en-US/index.js';\nimport subMilliseconds from '../subMilliseconds/index.js';\nimport toDate from '../toDate/index.js';\nimport assign from '../_lib/assign/index.js';\nimport longFormatters from '../_lib/format/longFormatters/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from '../_lib/protectedTokens/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport parsers from './_lib/parsers/index.js';\nvar TIMEZONE_UNIT_PRIORITY = 10; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\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 = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'(.*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\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 * parse('23 AM', 'HH a', new Date())\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 | 1, 2, ..., 11, 0 | |\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 * `parse` 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`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` 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 `backupDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\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 assigned to the date 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 parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `backupDate` which works as a context of parsing.\n *\n * `backupDate` must be passed for correct work of the function.\n * If you're not sure which `backupDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `backupDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `backupDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\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 * - Old `parse` was renamed to `toDate`.\n * Now `parse` is a new function which parses a string using a provided format.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * toDate('2016-01-01')\n * parse('2016-01-01', 'yyyy-MM-dd', new Date())\n * ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} backupDate - defines values missing from the parsed dateString\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 {Date} the parsed date\n * @throws {TypeError} 3 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 * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions) {\n if (arguments.length < 3) {\n throw new TypeError('3 arguments required, but only ' + arguments.length + ' present');\n }\n\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = 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 localeWeekStartsOn = 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 if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBackupDate);\n } else {\n return new Date(NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale // If timezone isn't specified, it will be set to the system timezone\n\n };\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }];\n var i;\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, subFnOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n throwProtectedError(token);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = void 0;\n\n for (var _i = 0; _i < usedTokens.length; _i++) {\n var usedToken = usedTokens[_i].token;\n\n if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n incompatibleToken = usedTokens[_i];\n break;\n }\n }\n\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);\n\n if (!parseResult) {\n return new Date(NaN);\n }\n\n setters.push({\n priority: parser.priority,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n } // Replace two single quote characters with one single quote character\n\n\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN);\n }\n }\n } // Check if the remaining input contains something other than whitespace\n\n\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).reverse();\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyBackupDate);\n\n if (isNaN(date)) {\n return new Date(NaN);\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/37\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n if (result[0]) {\n utcDate = result[0];\n assign(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n\n return utcDate;\n}\n\nfunction dateToSystemTimezone(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import format from \"date-fns/format\";\nimport formatDistanceToNow from \"date-fns/formatDistanceToNow\";\nimport parseISO from \"date-fns/parseISO\";\nimport getTime from \"date-fns/getTime\";\nimport subHours from \"date-fns/subHours\";\nimport parse from \"date-fns/parse\";\nimport isAfter from \"date-fns/isAfter\";\n\nexport const hoursAgo = (hours) => {\n const result = subHours(new Date(), hours);\n return getTime(result);\n};\n\nexport const timeAgoInWordsShort = (datetime) => {\n if (datetime !== undefined) {\n return formatDistanceToNow(datetime * 1000)\n .replace(/ mi.*/, \" min\")\n .replace(/ h.*/, \"h\")\n .replace(/ d.*/, \"d\")\n .replace(/ mo.*/, \"M\")\n .replace(/ y.*/, \"Y\")\n .replace(/about/, \"\");\n }\n\n return null;\n};\n\nexport const timeAgoInWordsLong = (datetime) => {\n if (datetime !== undefined) {\n return formatDistanceToNow(datetime * 1000);\n // .replace(/ mi.*/, \" min\")\n // .replace(/ h.*/, \"h\")\n // .replace(/ d.*/, \"d\")\n // .replace(/ mo.*/, \"M\")\n // .replace(/ y.*/, \"Y\")\n // .replace(/about/, \"\");\n }\n\n return null;\n};\n\n// July 12th, 2021\nexport const prettyDate = (datetime) => {\n if (datetime === undefined || datetime === null) return null;\n\n return format(datetime * 1000, \"PPP\");\n};\n\n// 02/18/1981\nexport const formatMDY = (datetime) => {\n if (datetime === undefined) return null;\n\n return format(datetime * 1000, \"M/dd/yyyy\");\n};\n\n// Jul 12, 2021 at 10:50PM\nexport const prettyDateAndTime = (datetime) => {\n if (datetime === undefined) return null;\n\n const date = prettyDateSimple(datetime);\n const time = prettyTime(datetime);\n return `${date} at ${time}`;\n};\n\n// expects datetime format of ISO timestamp (Rails)\n// example datetime 2021-01-28T14:57:22.000Z\nexport const prettyDateSimpleISO = (datetime) => {\n if (datetime === undefined) return null;\n\n // return format(datetime * 1000, \"MMM d, yyyy\");\n return format(parseISO(datetime), \"MMM dd, yyyy\");\n};\n\n// expects datetime format of Unix timestamp\nexport const prettyDateSimple = (datetime) => {\n if (datetime === undefined) return null;\n\n return format(datetime * 1000, \"MMM d, yyyy\");\n};\n\nexport const prettyTime = (datetime) => {\n if (datetime === undefined) return null;\n\n return format(datetime * 1000, \"h:mma\");\n};\n\n// Returns: 10 days, or Future: in 10 days, or Past: 10 days ago\n// addSuffix = true, will add the \"in\" or the \"ago\"\nexport const distanceInWords = (date, addSuffix = true) => {\n return formatDistanceToNow(new Date(date), { addSuffix });\n};\n\nexport const isDeadlineDateAfterCurrent = (dateString: string): boolean => {\n const currentDate = new Date();\n const deadlineDate = parse(dateString, \"MM-dd-yyyy\", new Date());\n\n return isAfter(currentDate, deadlineDate);\n};","import toDate from '../toDate/index.js';\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\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 that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\n\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","// the whatwg-fetch polyfill installs the fetch() function\n// on the global object (window or self)\n//\n// Return that as the export for use in Webpack, Browserify etc.\nrequire('whatwg-fetch');\n\nmodule.exports = self.fetch.bind(self);","/* MIT https://github.com/kenwheeler/cash */\n\"use strict\";\n\nvar doc = document,\n win = window,\n _Array$prototype = Array.prototype,\n filter = _Array$prototype.filter,\n indexOf = _Array$prototype.indexOf,\n map = _Array$prototype.map,\n push = _Array$prototype.push,\n reverse = _Array$prototype.reverse,\n slice = _Array$prototype.slice,\n splice = _Array$prototype.splice;\nvar idRe = /^#[\\w-]*$/,\n classRe = /^\\.[\\w-]*$/,\n htmlRe = /<.+>/,\n tagRe = /^\\w+$/; // @require ./variables.js\n\nfunction find(selector, context) {\n if (context === void 0) {\n context = doc;\n }\n\n return classRe.test(selector) ? context.getElementsByClassName(selector.slice(1)) : tagRe.test(selector) ? context.getElementsByTagName(selector) : context.querySelectorAll(selector);\n} // @require ./find.js\n// @require ./variables.js\n\n\nfunction Cash(selector, context) {\n if (context === void 0) {\n context = doc;\n }\n\n if (!selector) return;\n if (selector.__cash) return selector;\n var eles = selector;\n\n if (isString(selector)) {\n if (context.__cash) context = context[0];\n eles = idRe.test(selector) ? context.getElementById(selector.slice(1)) : htmlRe.test(selector) ? parseHTML(selector) : find(selector, context);\n if (!eles) return;\n } else if (isFunction(selector)) {\n return this.ready(selector); //FIXME: `fn.ready` is not included in `core`, but it's actually a core functionality\n }\n\n if (eles.nodeType || eles === win) eles = [eles];\n this.length = eles.length;\n\n for (var i = 0, l = this.length; i < l; i++) {\n this[i] = eles[i];\n }\n}\n\nfunction cash(selector, context) {\n return new Cash(selector, context);\n}\n/* PROTOTYPE */\n\n\nvar fn = cash.fn = cash.prototype = Cash.prototype = {\n constructor: cash,\n __cash: true,\n length: 0,\n splice: splice // Ensures a cash collection gets printed as array-like in Chrome\n\n}; // @require core/cash.js\n// @require core/variables.js\n\nfn.get = function (index) {\n if (index === undefined) return slice.call(this);\n return this[index < 0 ? index + this.length : index];\n}; // @require core/cash.js\n// @require ./get.js\n\n\nfn.eq = function (index) {\n return cash(this.get(index));\n}; // @require core/cash.js\n// @require ./eq.js\n\n\nfn.first = function () {\n return this.eq(0);\n}; // @require core/cash.js\n// @require ./eq.js\n\n\nfn.last = function () {\n return this.eq(-1);\n}; // @require core/cash.js\n// @require core/variables.js\n\n\nfn.map = function (callback) {\n return cash(map.call(this, function (ele, i) {\n return callback.call(ele, i, ele);\n }));\n}; // @require core/cash.js\n// @require core/variables.js\n\n\nfn.slice = function () {\n return cash(slice.apply(this, arguments));\n}; // @require ./cash.js\n\n\nvar camelCaseRe = /(?:^\\w|[A-Z]|\\b\\w)/g,\n camelCaseWhitespaceRe = /[\\s-_]+/g;\n\nfunction camelCase(str) {\n return str.replace(camelCaseRe, function (letter, index) {\n return letter[!index ? 'toLowerCase' : 'toUpperCase']();\n }).replace(camelCaseWhitespaceRe, '');\n}\n\n;\ncash.camelCase = camelCase; // @require ./cash.js\n\nfunction each(arr, callback) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (callback.call(arr[i], arr[i], i, arr) === false) break;\n }\n}\n\ncash.each = each; // @require core/cash.js\n// @require core/each.js\n\nfn.each = function (callback) {\n each(this, function (ele, i) {\n return callback.call(ele, i, ele);\n });\n return this;\n}; // @require core/cash.js\n// @require collection/each.js\n\n\nfn.removeProp = function (prop) {\n return this.each(function (i, ele) {\n delete ele[prop];\n });\n}; // @require ./cash.js\n\n\nfunction extend(target) {\n if (target === void 0) {\n target = this;\n }\n\n var args = arguments,\n length = args.length;\n\n for (var i = length < 2 ? 0 : 1; i < length; i++) {\n for (var key in args[i]) {\n target[key] = args[i][key];\n }\n }\n\n return target;\n}\n\n;\ncash.extend = fn.extend = extend; // @require ./cash.js\n\nvar guid = 1;\ncash.guid = guid; // @require ./cash.js\n\nfunction matches(ele, selector) {\n var matches = ele && (ele.matches || ele.webkitMatchesSelector || ele.mozMatchesSelector || ele.msMatchesSelector || ele.oMatchesSelector);\n return !!matches && matches.call(ele, selector);\n}\n\ncash.matches = matches; // @require ./cash.js\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\ncash.isFunction = isFunction;\n\nfunction isString(x) {\n return typeof x === 'string';\n}\n\ncash.isString = isString;\n\nfunction isNumeric(x) {\n return !isNaN(parseFloat(x)) && isFinite(x);\n}\n\ncash.isNumeric = isNumeric;\nvar isArray = Array.isArray;\ncash.isArray = isArray; // @require core/cash.js\n// @require core/type_checking.js\n// @require collection/each.js\n\nfn.prop = function (prop, value) {\n if (!prop) return;\n\n if (isString(prop)) {\n if (arguments.length < 2) return this[0] && this[0][prop];\n return this.each(function (i, ele) {\n ele[prop] = value;\n });\n }\n\n for (var key in prop) {\n this.prop(key, prop[key]);\n }\n\n return this;\n}; // @require ./matches.js\n// @require ./type_checking.js\n\n\nfunction getCompareFunction(selector) {\n return isString(selector) ? function (i, ele) {\n return matches(ele, selector);\n } : selector.__cash ? function (i, ele) {\n return selector.is(ele);\n } : function (i, ele, selector) {\n return ele === selector;\n };\n} // @require core/cash.js\n// @require core/get_compare_function.js\n// @require core/type_checking.js\n// @require core/variables.js\n// @require collection/get.js\n\n\nfn.filter = function (selector) {\n if (!selector) return cash();\n var comparator = isFunction(selector) ? selector : getCompareFunction(selector);\n return cash(filter.call(this, function (ele, i) {\n return comparator.call(ele, i, ele, selector);\n }));\n}; // @require ./type_checking.js\n\n\nvar splitValuesRe = /\\S+/g;\n\nfunction getSplitValues(str) {\n return isString(str) ? str.match(splitValuesRe) || [] : [];\n} // @require core/cash.js\n// @require core/get_split_values.js\n// @require collection/each.js\n\n\nfn.hasClass = function (cls) {\n var classes = getSplitValues(cls);\n var check = false;\n\n if (classes.length) {\n this.each(function (i, ele) {\n check = ele.classList.contains(classes[0]);\n return !check;\n });\n }\n\n return check;\n}; // @require core/cash.js\n// @require core/get_split_values.js\n// @require collection/each.js\n\n\nfn.removeAttr = function (attr) {\n var attrs = getSplitValues(attr);\n if (!attrs.length) return this;\n return this.each(function (i, ele) {\n each(attrs, function (a) {\n ele.removeAttribute(a);\n });\n });\n}; // @require core/cash.js\n// @require core/type_checking.js\n// @require collection/each.js\n// @require ./remove_attr.js\n\n\nfn.attr = function (attr, value) {\n if (!attr) return;\n\n if (isString(attr)) {\n if (arguments.length < 2) {\n if (!this[0]) return;\n\n var _value = this[0].getAttribute(attr);\n\n return _value === null ? undefined : _value;\n }\n\n if (value === null) return this.removeAttr(attr);\n return this.each(function (i, ele) {\n ele.setAttribute(attr, value);\n });\n }\n\n for (var key in attr) {\n this.attr(key, attr[key]);\n }\n\n return this;\n}; // @require core/cash.js\n// @require core/each.js\n// @require core/get_split_values.js\n// @require collection/each.js\n\n\nfn.toggleClass = function (cls, force) {\n var classes = getSplitValues(cls),\n isForce = force !== undefined;\n if (!classes.length) return this;\n return this.each(function (i, ele) {\n each(classes, function (c) {\n if (isForce) {\n force ? ele.classList.add(c) : ele.classList.remove(c);\n } else {\n ele.classList.toggle(c);\n }\n });\n });\n}; // @require core/cash.js\n// @require ./toggle_class.js\n\n\nfn.addClass = function (cls) {\n return this.toggleClass(cls, true);\n}; // @require core/cash.js\n// @require ./attr.js\n// @require ./toggle_class.js\n\n\nfn.removeClass = function (cls) {\n return !arguments.length ? this.attr('class', '') : this.toggleClass(cls, false);\n}; // @optional ./add_class.js\n// @optional ./attr.js\n// @optional ./has_class.js\n// @optional ./prop.js\n// @optional ./remove_attr.js\n// @optional ./remove_class.js\n// @optional ./remove_prop.js\n// @optional ./toggle_class.js\n// @require ./cash.js\n\n\nfunction unique(arr) {\n return arr.filter(function (item, index, self) {\n return self.indexOf(item) === index;\n });\n}\n\ncash.unique = unique; // @require core/cash.js\n// @require core/unique.js\n// @require ./get.js\n\nfn.add = function (selector, context) {\n return cash(unique(this.get().concat(cash(selector, context).get())));\n}; // @require core/variables.js\n\n\nfunction computeStyle(ele, prop, isVariable) {\n if (ele.nodeType !== 1) return;\n var style = win.getComputedStyle(ele, null);\n return prop ? isVariable ? style.getPropertyValue(prop) : style[prop] : style;\n} // @require ./compute_style.js\n\n\nfunction computeStyleInt(ele, prop) {\n return parseInt(computeStyle(ele, prop), 10) || 0;\n}\n\nvar cssVariableRe = /^--/; // @require ./variables.js\n\nfunction isCSSVariable(prop) {\n return cssVariableRe.test(prop);\n} // @require core/camel_case.js\n// @require core/cash.js\n// @require core/each.js\n// @require core/variables.js\n// @require ./is_css_variable.js\n\n\nvar prefixedProps = {},\n _doc$createElement = doc.createElement('div'),\n style = _doc$createElement.style,\n vendorsPrefixes = ['webkit', 'moz', 'ms', 'o'];\n\nfunction getPrefixedProp(prop, isVariable) {\n if (isVariable === void 0) {\n isVariable = isCSSVariable(prop);\n }\n\n if (isVariable) return prop;\n\n if (!prefixedProps[prop]) {\n var propCC = camelCase(prop),\n propUC = \"\" + propCC.charAt(0).toUpperCase() + propCC.slice(1),\n props = (propCC + \" \" + vendorsPrefixes.join(propUC + \" \") + propUC).split(' ');\n each(props, function (p) {\n if (p in style) {\n prefixedProps[prop] = p;\n return false;\n }\n });\n }\n\n return prefixedProps[prop];\n}\n\n;\ncash.prefixedProp = getPrefixedProp; // @require core/type_checking.js\n// @require ./is_css_variable.js\n\nvar numericProps = {\n animationIterationCount: true,\n columnCount: true,\n flexGrow: true,\n flexShrink: true,\n fontWeight: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n widows: true,\n zIndex: true\n};\n\nfunction getSuffixedValue(prop, value, isVariable) {\n if (isVariable === void 0) {\n isVariable = isCSSVariable(prop);\n }\n\n return !isVariable && !numericProps[prop] && isNumeric(value) ? value + \"px\" : value;\n} // @require core/cash.js\n// @require core/type_checking.js\n// @require collection/each.js\n// @require ./helpers/compute_style.js\n// @require ./helpers/get_prefixed_prop.js\n// @require ./helpers/get_suffixed_value.js\n// @require ./helpers/is_css_variable.js\n\n\nfn.css = function (prop, value) {\n if (isString(prop)) {\n var isVariable = isCSSVariable(prop);\n prop = getPrefixedProp(prop, isVariable);\n if (arguments.length < 2) return this[0] && computeStyle(this[0], prop, isVariable);\n if (!prop) return this;\n value = getSuffixedValue(prop, value, isVariable);\n return this.each(function (i, ele) {\n if (ele.nodeType !== 1) return;\n\n if (isVariable) {\n ele.style.setProperty(prop, value);\n } else {\n ele.style[prop] = value;\n }\n });\n }\n\n for (var key in prop) {\n this.css(key, prop[key]);\n }\n\n return this;\n}; // @optional ./css.js\n\n\nvar dataNamespace = '__cashData',\n dataAttributeRe = /^data-(.*)/; // @require core/cash.js\n// @require ./helpers/variables.js\n\ncash.hasData = function (ele) {\n return dataNamespace in ele;\n}; // @require ./variables.js\n\n\nfunction getDataCache(ele) {\n return ele[dataNamespace] = ele[dataNamespace] || {};\n} // @require attributes/attr.js\n// @require ./get_data_cache.js\n\n\nfunction getData(ele, key) {\n var cache = getDataCache(ele);\n\n if (key) {\n if (!(key in cache)) {\n var value = ele.dataset ? ele.dataset[key] || ele.dataset[camelCase(key)] : cash(ele).attr(\"data-\" + key);\n\n if (value !== undefined) {\n try {\n value = JSON.parse(value);\n } catch (e) {}\n\n cache[key] = value;\n }\n }\n\n return cache[key];\n }\n\n return cache;\n} // @require ./variables.js\n// @require ./get_data_cache.js\n\n\nfunction removeData(ele, key) {\n if (key === undefined) {\n delete ele[dataNamespace];\n } else {\n delete getDataCache(ele)[key];\n }\n} // @require ./get_data_cache.js\n\n\nfunction setData(ele, key, value) {\n getDataCache(ele)[key] = value;\n} // @require core/cash.js\n// @require core/type_checking.js\n// @require collection/each.js\n// @require ./helpers/get_data.js\n// @require ./helpers/set_data.js\n// @require ./helpers/variables.js\n\n\nfn.data = function (name, value) {\n var _this = this;\n\n if (!name) {\n if (!this[0]) return;\n each(this[0].attributes, function (attr) {\n var match = attr.name.match(dataAttributeRe);\n if (!match) return;\n\n _this.data(match[1]);\n });\n return getData(this[0]);\n }\n\n if (isString(name)) {\n if (value === undefined) return this[0] && getData(this[0], name);\n return this.each(function (i, ele) {\n return setData(ele, name, value);\n });\n }\n\n for (var key in name) {\n this.data(key, name[key]);\n }\n\n return this;\n}; // @require core/cash.js\n// @require collection/each.js\n// @require ./helpers/remove_data.js\n\n\nfn.removeData = function (key) {\n return this.each(function (i, ele) {\n return removeData(ele, key);\n });\n}; // @optional ./data.js\n// @optional ./remove_data.js\n// @require css/helpers/compute_style_int.js\n\n\nfunction getExtraSpace(ele, xAxis) {\n return computeStyleInt(ele, \"border\" + (xAxis ? 'Left' : 'Top') + \"Width\") + computeStyleInt(ele, \"padding\" + (xAxis ? 'Left' : 'Top')) + computeStyleInt(ele, \"padding\" + (xAxis ? 'Right' : 'Bottom')) + computeStyleInt(ele, \"border\" + (xAxis ? 'Right' : 'Bottom') + \"Width\");\n} // @require core/cash.js\n// @require core/each.js\n// @require core/variables.js\n\n\neach(['Width', 'Height'], function (prop) {\n fn[\"inner\" + prop] = function () {\n if (!this[0]) return;\n if (this[0] === win) return win[\"inner\" + prop];\n return this[0][\"client\" + prop];\n };\n}); // @require core/camel_case.js\n// @require core/cash.js\n// @require core/each.js\n// @require core/variables.js\n// @require css/helpers/compute_style.js\n// @require css/helpers/get_suffixed_value.js\n// @require ./helpers/get_extra_space.js\n\neach(['width', 'height'], function (prop, index) {\n fn[prop] = function (value) {\n if (!this[0]) return value === undefined ? undefined : this;\n\n if (!arguments.length) {\n if (this[0] === win) return this[0][camelCase(\"outer-\" + prop)];\n return this[0].getBoundingClientRect()[prop] - getExtraSpace(this[0], !index);\n }\n\n value = parseInt(value, 10);\n return this.each(function (i, ele) {\n if (ele.nodeType !== 1) return;\n var boxSizing = computeStyle(ele, 'boxSizing');\n ele.style[prop] = getSuffixedValue(prop, value + (boxSizing === 'border-box' ? getExtraSpace(ele, !index) : 0));\n });\n };\n}); // @require core/cash.js\n// @require core/each.js\n// @require core/variables.js\n// @require css/helpers/compute_style_int.js\n\neach(['Width', 'Height'], function (prop, index) {\n fn[\"outer\" + prop] = function (includeMargins) {\n if (!this[0]) return;\n if (this[0] === win) return win[\"outer\" + prop];\n return this[0][\"offset\" + prop] + (includeMargins ? computeStyleInt(this[0], \"margin\" + (!index ? 'Left' : 'Top')) + computeStyleInt(this[0], \"margin\" + (!index ? 'Right' : 'Bottom')) : 0);\n };\n}); // @optional ./inner.js\n// @optional ./normal.js\n// @optional ./outer.js\n\nfunction hasNamespaces(ns1, ns2) {\n for (var i = 0, l = ns2.length; i < l; i++) {\n if (ns1.indexOf(ns2[i]) < 0) return false;\n }\n\n return true;\n} // @require core/each.js\n\n\nfunction removeEventListeners(cache, ele, name) {\n each(cache[name], function (_ref) {\n var namespaces = _ref[0],\n callback = _ref[1];\n ele.removeEventListener(name, callback);\n });\n delete cache[name];\n}\n\nvar eventsNamespace = '__cashEvents',\n eventsNamespacesSeparator = '.'; // @require ./variables.js\n\nfunction getEventsCache(ele) {\n return ele[eventsNamespace] = ele[eventsNamespace] || {};\n} // @require core/guid.js\n// @require events/helpers/get_events_cache.js\n\n\nfunction addEvent(ele, name, namespaces, callback) {\n callback.guid = callback.guid || guid++;\n var eventCache = getEventsCache(ele);\n eventCache[name] = eventCache[name] || [];\n eventCache[name].push([namespaces, callback]);\n ele.addEventListener(name, callback);\n} // @require ./variables.js\n\n\nfunction parseEventName(eventName) {\n var parts = eventName.split(eventsNamespacesSeparator);\n return [parts[0], parts.slice(1).sort()]; // [name, namespaces]\n} // @require core/guid.js\n// @require ./get_events_cache.js\n// @require ./has_namespaces.js\n// @require ./parse_event_name.js\n// @require ./remove_event_listeners.js\n\n\nfunction removeEvent(ele, name, namespaces, callback) {\n var cache = getEventsCache(ele);\n\n if (!name) {\n if (!namespaces || !namespaces.length) {\n for (name in cache) {\n removeEventListeners(cache, ele, name);\n }\n } else {\n for (name in cache) {\n removeEvent(ele, name, namespaces, callback);\n }\n }\n } else {\n var eventCache = cache[name];\n if (!eventCache) return;\n if (callback) callback.guid = callback.guid || guid++;\n cache[name] = eventCache.filter(function (_ref2) {\n var ns = _ref2[0],\n cb = _ref2[1];\n if (callback && cb.guid !== callback.guid || !hasNamespaces(ns, namespaces)) return true;\n ele.removeEventListener(name, cb);\n });\n }\n} // @require core/cash.js\n// @require core/each.js\n// @require collection/each.js\n// @require ./helpers/parse_event_name.js\n// @require ./helpers/remove_event.js\n\n\nfn.off = function (eventFullName, callback) {\n var _this2 = this;\n\n if (eventFullName === undefined) {\n this.each(function (i, ele) {\n return removeEvent(ele);\n });\n } else {\n each(getSplitValues(eventFullName), function (eventFullName) {\n var _parseEventName = parseEventName(eventFullName),\n name = _parseEventName[0],\n namespaces = _parseEventName[1];\n\n _this2.each(function (i, ele) {\n return removeEvent(ele, name, namespaces, callback);\n });\n });\n }\n\n return this;\n}; // @require core/cash.js\n// @require core/get_split_values.js\n// @require core/guid.js\n// @require core/matches.js\n// @require core/type_checking.js\n// @require collection/each.js\n// @require ./helpers/variables.js\n// @require ./helpers/add_event.js\n// @require ./helpers/has_namespaces.js\n// @require ./helpers/parse_event_name.js\n// @require ./helpers/remove_event.js\n\n\nfn.on = function (eventFullName, selector, callback, _one) {\n var _this3 = this;\n\n if (!isString(eventFullName)) {\n for (var key in eventFullName) {\n this.on(key, selector, eventFullName[key]);\n }\n\n return this;\n }\n\n if (isFunction(selector)) {\n callback = selector;\n selector = false;\n }\n\n each(getSplitValues(eventFullName), function (eventFullName) {\n var _parseEventName2 = parseEventName(eventFullName),\n name = _parseEventName2[0],\n namespaces = _parseEventName2[1];\n\n _this3.each(function (i, ele) {\n var finalCallback = function finalCallback(event) {\n if (event.namespace && !hasNamespaces(namespaces, event.namespace.split(eventsNamespacesSeparator))) return;\n var thisArg = ele;\n\n if (selector) {\n var target = event.target;\n\n while (!matches(target, selector)) {\n if (target === ele) return;\n target = target.parentNode;\n if (!target) return;\n }\n\n thisArg = target;\n }\n\n event.namespace = event.namespace || '';\n var returnValue = callback.call(thisArg, event, event.data);\n\n if (_one) {\n removeEvent(ele, name, namespaces, finalCallback);\n }\n\n if (returnValue === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n finalCallback.guid = callback.guid = callback.guid || guid++;\n addEvent(ele, name, namespaces, finalCallback);\n });\n });\n return this;\n}; // @require core/cash.js\n// @require ./on.js\n\n\nfn.one = function (eventFullName, delegate, callback) {\n return this.on(eventFullName, delegate, callback, true);\n}; // @require core/cash.js\n// @require core/variables.js\n\n\nfn.ready = function (callback) {\n var finalCallback = function finalCallback() {\n return callback(cash);\n };\n\n if (doc.readyState !== 'loading') {\n setTimeout(finalCallback);\n } else {\n doc.addEventListener('DOMContentLoaded', finalCallback);\n }\n\n return this;\n}; // @require core/cash.js\n// @require core/type_checking.js\n// @require core/variables.js\n// @require collection/each.js\n// @require ./helpers/parse_event_name.js\n// @require ./helpers/variables.js\n\n\nfn.trigger = function (eventFullName, data) {\n var evt = eventFullName;\n\n if (isString(eventFullName)) {\n var _parseEventName3 = parseEventName(eventFullName),\n name = _parseEventName3[0],\n namespaces = _parseEventName3[1];\n\n evt = doc.createEvent('HTMLEvents');\n evt.initEvent(name, true, true);\n evt.namespace = namespaces.join(eventsNamespacesSeparator);\n }\n\n evt.data = data;\n return this.each(function (i, ele) {\n ele.dispatchEvent(evt);\n });\n}; // @optional ./off.js\n// @optional ./on.js\n// @optional ./one.js\n// @optional ./ready.js\n// @optional ./trigger.js\n// @require core/each.js\n\n\nfunction getValueSelectMultiple(ele) {\n var values = [];\n each(ele.options, function (option) {\n if (option.selected && !option.disabled && !option.parentNode.disabled) {\n values.push(option.value);\n }\n });\n return values;\n}\n\nfunction getValueSelectSingle(ele) {\n return ele.selectedIndex < 0 ? null : ele.options[ele.selectedIndex].value;\n} // @require ./get_value_select_single.js\n// @require ./get_value_select_multiple.js\n\n\nvar selectOneRe = /select-one/i,\n selectMultipleRe = /select-multiple/i;\n\nfunction getValue(ele) {\n var type = ele.type;\n if (selectOneRe.test(type)) return getValueSelectSingle(ele);\n if (selectMultipleRe.test(type)) return getValueSelectMultiple(ele);\n return ele.value;\n}\n\nvar queryEncodeSpaceRe = /%20/g;\n\nfunction queryEncode(prop, value) {\n return \"&\" + encodeURIComponent(prop) + \"=\" + encodeURIComponent(value).replace(queryEncodeSpaceRe, '+');\n} // @require core/cash.js\n// @require core/each.js\n// @require core/type_checking.js\n// @require ./helpers/get_value.js\n// @require ./helpers/query_encode.js\n\n\nvar skippableRe = /file|reset|submit|button|image/i,\n checkableRe = /radio|checkbox/i;\n\nfn.serialize = function () {\n var query = '';\n this.each(function (i, ele) {\n each(ele.elements || [ele], function (ele) {\n if (ele.disabled || !ele.name || ele.tagName === 'FIELDSET') return;\n if (skippableRe.test(ele.type)) return;\n if (checkableRe.test(ele.type) && !ele.checked) return;\n var value = getValue(ele);\n if (value === undefined) return;\n var values = isArray(value) ? value : [value];\n each(values, function (value) {\n query += queryEncode(ele.name, value);\n });\n });\n });\n return query.substr(1);\n}; // @require core/cash.js\n// @require core/each.js\n// @require core/type_checking.js\n// @require collection/each.js\n// @require ./helpers/get_value.js\n\n\nfn.val = function (value) {\n if (value === undefined) return this[0] && getValue(this[0]);\n return this.each(function (i, ele) {\n var isMultiple = selectMultipleRe.test(ele.type),\n eleValue = value === null ? isMultiple ? [] : '' : value;\n\n if (isMultiple && isArray(eleValue)) {\n each(ele.options, function (option) {\n option.selected = eleValue.indexOf(option.value) >= 0;\n });\n } else {\n ele.value = eleValue;\n }\n });\n}; // @optional ./serialize.js\n// @optional ./val.js\n// @require core/cash.js\n// @require collection/map.js\n\n\nfn.clone = function () {\n return this.map(function (i, ele) {\n return ele.cloneNode(true);\n });\n}; // @require core/cash.js\n// @require collection/each.js\n\n\nfn.detach = function () {\n return this.each(function (i, ele) {\n if (ele.parentNode) {\n ele.parentNode.removeChild(ele);\n }\n });\n}; // @require ./cash.js\n// @require ./variables.js\n// @require ./type_checking.js\n// @require collection/get.js\n// @require manipulation/detach.js\n\n\nvar fragmentRe = /^\\s*<(\\w+)[^>]*>/,\n singleTagRe = /^\\s*<(\\w+)\\s*\\/?>(?:<\\/\\1>)?\\s*$/;\nvar containers;\n\nfunction initContainers() {\n if (containers) return;\n var table = doc.createElement('table'),\n tr = doc.createElement('tr');\n containers = {\n '*': doc.createElement('div'),\n tr: doc.createElement('tbody'),\n td: tr,\n th: tr,\n thead: table,\n tbody: table,\n tfoot: table\n };\n}\n\nfunction parseHTML(html) {\n initContainers();\n if (!isString(html)) return [];\n if (singleTagRe.test(html)) return [doc.createElement(RegExp.$1)];\n var fragment = fragmentRe.test(html) && RegExp.$1,\n container = containers[fragment] || containers['*'];\n container.innerHTML = html;\n return cash(container.childNodes).detach().get();\n}\n\ncash.parseHTML = parseHTML; // @optional ./camel_case.js\n// @optional ./each.js\n// @optional ./export.js\n// @optional ./extend.js\n// @optional ./find.js\n// @optional ./get_compare_function.js\n// @optional ./get_split_values.js\n// @optional ./guid.js\n// @optional ./matches.js\n// @optional ./parse_html.js\n// @optional ./unique.js\n// @optional ./variables.js\n// @require ./cash.js\n// @require ./type_checking.js\n// @require core/cash.js\n\nfn.empty = function () {\n var ele = this[0];\n\n if (ele) {\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n\n return this;\n};\n\nfunction insertElement(ele, child, prepend) {\n if (prepend) {\n ele.insertBefore(child, ele.childNodes[0]);\n } else {\n ele.appendChild(child);\n }\n} // @require core/each.js\n// @require core/type_checking.js\n// @require ./insert_element.js\n\n\nfunction insertContent(parent, child, prepend) {\n if (child === undefined) return;\n var isStr = isString(child);\n\n if (!isStr && child.length) {\n each(child, function (ele) {\n return insertContent(parent, ele, prepend);\n });\n } else {\n each(parent, isStr ? function (ele) {\n ele.insertAdjacentHTML(prepend ? 'afterbegin' : 'beforeend', child);\n } : function (ele, index) {\n return insertElement(ele, !index ? child : child.cloneNode(true), prepend);\n });\n }\n} // @require core/cash.js\n// @require core/each.js\n// @require ./helpers/insert_content.js\n\n\nfn.append = function () {\n var _this4 = this;\n\n each(arguments, function (content) {\n insertContent(_this4, content);\n });\n return this;\n}; // @require core/cash.js\n// @require ./helpers/insert_content.js\n\n\nfn.appendTo = function (parent) {\n insertContent(cash(parent), this);\n return this;\n}; // @require core/cash.js\n// @require collection/each.js\n\n\nfn.html = function (content) {\n if (content === undefined) return this[0] && this[0].innerHTML;\n var source = content.nodeType ? content[0].outerHTML : content;\n return this.each(function (i, ele) {\n ele.innerHTML = source;\n });\n}; // @require core/cash.js\n// @require collection/each.js\n\n\nfn.insertAfter = function (content) {\n var _this5 = this;\n\n cash(content).each(function (index, ele) {\n var parent = ele.parentNode;\n\n _this5.each(function (i, e) {\n parent.insertBefore(!index ? e : e.cloneNode(true), ele.nextSibling);\n });\n });\n return this;\n}; // @require core/cash.js\n// @require core/each.js\n// @require core/variables.js\n// @require collection/slice.js\n// @require ./insert_after.js\n\n\nfn.after = function () {\n var _this6 = this;\n\n each(reverse.apply(arguments), function (content) {\n reverse.apply(cash(content).slice()).insertAfter(_this6);\n });\n return this;\n}; // @require core/cash.js\n// @require collection/each.js\n\n\nfn.insertBefore = function (selector) {\n var _this7 = this;\n\n cash(selector).each(function (index, ele) {\n var parent = ele.parentNode;\n\n _this7.each(function (i, e) {\n parent.insertBefore(!index ? e : e.cloneNode(true), ele);\n });\n });\n return this;\n}; // @require core/cash.js\n// @require core/each.js\n// @require ./insert_before.js\n\n\nfn.before = function () {\n var _this8 = this;\n\n each(arguments, function (content) {\n cash(content).insertBefore(_this8);\n });\n return this;\n}; // @require core/cash.js\n// @require core/each.js\n// @require ./helpers/insert_content.js\n\n\nfn.prepend = function () {\n var _this9 = this;\n\n each(arguments, function (content) {\n insertContent(_this9, content, true);\n });\n return this;\n}; // @require core/cash.js\n// @require core/variables.js\n// @require collection/slice.js\n// @require ./helpers/insert_content.js\n\n\nfn.prependTo = function (parent) {\n insertContent(cash(parent), reverse.apply(this.slice()), true);\n return this;\n}; // @require core/cash.js\n// @require events/off.js\n// @require ./detach.js\n\n\nfn.remove = function () {\n return this.detach().off();\n}; // @require core/cash.js\n// @require collection/each.js\n// @require collection/slice.js\n// @require ./after.js\n// @require ./remove.js\n\n\nfn.replaceWith = function (content) {\n var _this10 = this;\n\n return this.each(function (i, ele) {\n var parent = ele.parentNode;\n if (!parent) return;\n var $eles = i ? cash(content).clone() : cash(content);\n\n if (!$eles[0]) {\n _this10.remove();\n\n return false;\n }\n\n parent.replaceChild($eles[0], ele);\n cash($eles[0]).after($eles.slice(1));\n });\n}; // @require core/cash.js\n// @require ./replace_with.js\n\n\nfn.replaceAll = function (content) {\n cash(content).replaceWith(this);\n return this;\n}; // @require core/cash.js\n// @require collection/each.js\n\n\nfn.text = function (content) {\n if (content === undefined) return this[0] ? this[0].textContent : '';\n return this.each(function (i, ele) {\n ele.textContent = content;\n });\n}; // @optional ./after.js\n// @optional ./append.js\n// @optional ./append_to.js\n// @optional ./before.js\n// @optional ./clone.js\n// @optional ./detach.js\n// @optional ./empty.js\n// @optional ./html.js\n// @optional ./insert_after.js\n// @optional ./insert_before.js\n// @optional ./prepend.js\n// @optional ./prepend_to.js\n// @optional ./remove.js\n// @optional ./replace_all.js\n// @optional ./replace_with.js\n// @optional ./text.js\n// @require core/cash.js\n// @require core/variables.js\n\n\nvar docEle = doc.documentElement;\n\nfn.offset = function () {\n var ele = this[0];\n if (!ele) return;\n var rect = ele.getBoundingClientRect();\n return {\n top: rect.top + win.pageYOffset - docEle.clientTop,\n left: rect.left + win.pageXOffset - docEle.clientLeft\n };\n}; // @require core/cash.js\n\n\nfn.offsetParent = function () {\n return cash(this[0] && this[0].offsetParent);\n}; // @require core/cash.js\n\n\nfn.position = function () {\n var ele = this[0];\n if (!ele) return;\n return {\n left: ele.offsetLeft,\n top: ele.offsetTop\n };\n}; // @optional ./offset.js\n// @optional ./offset_parent.js\n// @optional ./position.js\n// @require core/cash.js\n// @require core/matches.js\n// @require core/unique.js\n// @require collection/each.js\n// @require collection/filter.js\n\n\nfn.children = function (selector) {\n var result = [];\n this.each(function (i, ele) {\n push.apply(result, ele.children);\n });\n result = cash(unique(result));\n if (!selector) return result;\n return result.filter(function (i, ele) {\n return matches(ele, selector);\n });\n}; // @require core/cash.js\n// @require core/unique.js\n// @require collection/each.js\n\n\nfn.contents = function () {\n var result = [];\n this.each(function (i, ele) {\n push.apply(result, ele.tagName === 'IFRAME' ? [ele.contentDocument] : ele.childNodes);\n });\n return cash(result.length && unique(result));\n}; // @require core/cash.js\n// @require core/unique.js\n// @require core/find.js\n// @require core/variables.js\n\n\nfn.find = function (selector) {\n var result = [];\n\n for (var i = 0, l = this.length; i < l; i++) {\n var found = find(selector, this[i]);\n\n if (found.length) {\n push.apply(result, found);\n }\n }\n\n return cash(result.length && unique(result));\n}; // @require core/cash.js\n// @require core/find.js\n// @require core/type_checking.js\n// @require collection/filter.js\n\n\nfn.has = function (selector) {\n var comparator = isString(selector) ? function (i, ele) {\n return !!find(selector, ele).length;\n } : function (i, ele) {\n return ele.contains(selector);\n };\n return this.filter(comparator);\n}; // @require core/cash.js\n// @require core/get_compare_function.js\n// @require collection/each.js\n\n\nfn.is = function (selector) {\n if (!selector || !this[0]) return false;\n var comparator = getCompareFunction(selector);\n var check = false;\n this.each(function (i, ele) {\n check = comparator(i, ele, selector);\n return !check;\n });\n return check;\n}; // @require core/cash.js\n\n\nfn.next = function () {\n return cash(this[0] && this[0].nextElementSibling);\n}; // @require core/cash.js\n// @require core/get_compare_function.js\n// @require collection/filter.js\n\n\nfn.not = function (selector) {\n if (!selector || !this[0]) return this;\n var comparator = getCompareFunction(selector);\n return this.filter(function (i, ele) {\n return !comparator(i, ele, selector);\n });\n}; // @require core/cash.js\n// @require core/unique.js\n// @require collection/each.js\n\n\nfn.parent = function () {\n var result = [];\n this.each(function (i, ele) {\n if (ele && ele.parentNode) {\n result.push(ele.parentNode);\n }\n });\n return cash(unique(result));\n}; // @require core/cash.js\n// @require core/variables.js\n// @require traversal/children.js\n// @require traversal/parent.js\n// @require ./get.js\n//FIXME Ugly file name, is there a better option?\n\n\nfn.index = function (ele) {\n var child = ele ? cash(ele)[0] : this[0],\n collection = ele ? this : cash(child).parent().children();\n return indexOf.call(collection, child);\n}; // @optional ./add.js\n// @optional ./each.js\n// @optional ./eq.js\n// @optional ./filter.js\n// @optional ./first.js\n// @optional ./get.js\n// @optional ./indexFn.js\n// @optional ./last.js\n// @optional ./map.js\n// @optional ./slice.js\n// @require core/cash.js\n// @require collection/filter.js\n// @require ./is.js\n// @require ./parent.js\n\n\nfn.closest = function (selector) {\n if (!selector || !this[0]) return cash();\n if (this.is(selector)) return this.filter(selector);\n return this.parent().closest(selector);\n}; // @require core/cash.js\n// @require core/matches.js\n// @require core/unique.js\n// @require core/variables.js\n// @require collection/each.js\n\n\nfn.parents = function (selector) {\n var result = [];\n var last;\n this.each(function (i, ele) {\n last = ele;\n\n while (last && last.parentNode && last !== doc.body.parentNode) {\n last = last.parentNode;\n\n if (!selector || selector && matches(last, selector)) {\n result.push(last);\n }\n }\n });\n return cash(unique(result));\n}; // @require core/cash.js\n\n\nfn.prev = function () {\n return cash(this[0] && this[0].previousElementSibling);\n}; // @require core/cash.js\n// @require collection/filter.js\n// @require ./children.js\n// @require ./parent.js\n\n\nfn.siblings = function () {\n var ele = this[0];\n return this.parent().children().filter(function (i, child) {\n return child !== ele;\n });\n}; // @optional ./children.js\n// @optional ./closest.js\n// @optional ./contents.js\n// @optional ./find.js\n// @optional ./has.js\n// @optional ./is.js\n// @optional ./next.js\n// @optional ./not.js\n// @optional ./parent.js\n// @optional ./parents.js\n// @optional ./prev.js\n// @optional ./siblings.js\n// @optional attributes/index.js\n// @optional collection/index.js\n// @optional css/index.js\n// @optional data/index.js\n// @optional dimensions/index.js\n// @optional events/index.js\n// @optional forms/index.js\n// @optional manipulation/index.js\n// @optional offset/index.js\n// @optional traversal/index.js\n// @require core/index.js\n\n\nexport default cash;","var map = {\n\t\"./job_controller.js\": 1510,\n\t\"./nav-bar_controller.js\": 1511,\n\t\"./subscribe_controller.js\": 1512\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1509;","// src/controllers/nav-bar_controller.js\nimport { Controller } from \"stimulus\";\nimport { prettyDate } from \"@shared/lib/time\";\n\nexport default class extends Controller {\n static targets = [\"publishedAtDate\"];\n\n connect() {\n // console.log(\"%c[job Controller] CONNECTED\", \"color: #1976D2\");\n const publishedAtTimestamp = this.data.get(\"publishedAtTimestamp\");\n this.publishedAtDateTarget.textContent = `Posted on ${prettyDate(publishedAtTimestamp)}`; // doing this because we need to localize the times using javascript\n }\n}\n","// src/controllers/nav-bar_controller.js\nimport { Controller } from \"stimulus\";\nimport $ from \"cash-dom\";\n\nexport default class extends Controller {\n static targets = [\"mobileNav\", \"navIconMenu\", \"navIconClose\"];\n\n connect() {\n console.log(\"%c[nav-bar Controller] CONNECTED\", \"color: #1976D2\");\n }\n\n // disconnect() {\n // console.warn('[LegacyNavBar Controller] dis-connected');\n // }\n\n showMobileNav(event) {\n event.preventDefault();\n $(this.mobileNavTarget).removeClass(\"header__actions--hidden\");\n $(this.navIconMenuTarget).addClass(\"nav-icon--hidden\");\n $(this.navIconCloseTarget).removeClass(\"nav-icon--hidden\");\n // $(\"body\").addClass(\"no-scroll\");\n }\n\n hideMobileNav(event) {\n event.preventDefault();\n $(this.mobileNavTarget).addClass(\"header__actions--hidden\");\n $(this.navIconMenuTarget).removeClass(\"nav-icon--hidden\");\n $(this.navIconCloseTarget).addClass(\"nav-icon--hidden\");\n // $(\"body\").removeClass(\"no-scroll\");\n }\n}\n","// src/controllers/subscribe_controller.js\nimport { Controller } from \"stimulus\";\nimport Rails from \"@rails/ujs\";\nimport fetch from \"isomorphic-fetch\";\nimport queryString from \"query-string\";\nimport $ from \"cash-dom\";\n\nexport default class extends Controller {\n static targets = [\n \"subscriptionModal\",\n \"subscriptionForm\",\n \"checkbox\",\n \"email\",\n \"subscriptionSuccessNewIndividual\",\n \"subscriptionSuccessExistingIndividual\",\n \"emailConfirmedModal\",\n \"unsubscribeSuccessModal\",\n ];\n\n connect() {\n console.log(\"%c[CareersPage subscribe Controller] CONNECTED\", \"color: #1976D2\");\n const parsed = queryString.parse(location.search);\n if (parsed.email_confirmed !== undefined && parsed.email_confirmed === \"true\") {\n this.showEmailConfirmedModal();\n } else if (parsed.unsubscribed !== undefined && parsed.unsubscribed === \"true\") {\n this.showUnsubscribedModal();\n }\n }\n\n // disconnect() {\n // console.warn('[CareersPage subscribe Controller] dis-connected');\n // }\n\n /* Unsubscribed Modal\n --===================================================-- */\n showUnsubscribedModal(event) {\n if (event) {\n event.preventDefault();\n }\n\n $(this.unsubscribeSuccessModalTarget).addClass(\"subscribe-modal--show\");\n $(\"body\").addClass(\"no-scroll\");\n }\n\n hideUnsubscribedModal(event) {\n if (event) {\n event.preventDefault();\n }\n\n $(this.unsubscribeSuccessModalTarget).removeClass(\"subscribe-modal--show\");\n $(\"body\").removeClass(\"no-scroll\");\n\n Turbolinks.visit(\"/\");\n }\n\n /* Email Confirmed Modal\n --===================================================-- */\n showEmailConfirmedModal(event) {\n if (event) {\n event.preventDefault();\n }\n\n $(this.emailConfirmedModalTarget).addClass(\"subscribe-modal--show\");\n $(\"body\").addClass(\"no-scroll\");\n }\n\n hideEmailConfirmedModal(event) {\n if (event) {\n event.preventDefault();\n }\n\n $(this.emailConfirmedModalTarget).removeClass(\"subscribe-modal--show\");\n $(\"body\").removeClass(\"no-scroll\");\n\n Turbolinks.visit(\"/\");\n }\n\n /* Subscription Modal\n --===================================================-- */\n showSubscriptionModal(event) {\n event.preventDefault();\n $(this.subscriptionModalTarget).addClass(\"subscribe-modal--show\");\n $(\"body\").addClass(\"no-scroll\");\n this.emailTarget.focus();\n }\n\n hideSubscriptionModal(event) {\n event.preventDefault();\n $(this.subscriptionModalTarget).removeClass(\"subscribe-modal--show\");\n $(\"body\").removeClass(\"no-scroll\");\n\n $(this.subscriptionFormTarget).removeClass(\"hide\");\n $(this.subscriptionSuccessNewIndividualTarget).addClass(\"hide\");\n $(this.subscriptionSuccessExistingIndividualTarget).addClass(\"hide\");\n }\n\n showSubscriptionSuccess(is_email_confirmed) {\n $(this.subscriptionFormTarget).addClass(\"hide\");\n\n if (is_email_confirmed) {\n $(this.subscriptionSuccessExistingIndividualTarget).removeClass(\"hide\");\n } else {\n $(this.subscriptionSuccessNewIndividualTarget).removeClass(\"hide\");\n }\n }\n\n handleSubmitSubscriptionForm(event) {\n event.preventDefault();\n $(this.subscriptionFormTarget).addClass(\"hide\");\n\n // const url = this.subscriptionFormTarget.url;\n const url = \"/api/v1/individual_app/careers_page_subscriptions\";\n const email = this.emailTarget.value;\n const careers_page_slug = window.CAREERS_PAGE_SLUG;\n\n let categories = [];\n this.checkboxTargets.forEach((checkbox) => {\n const name = checkbox.getAttribute(\"name\");\n if (checkbox.checked) {\n categories.push(name);\n }\n });\n\n const data = {\n careers_page_subscription: {\n email,\n careers_page_slug,\n },\n };\n\n console.log(\"%c[CareersPage subscribe] handleSubmitSubscriptionForm\", \"color: #1976D2\", {\n data,\n });\n\n const that = this;\n\n fetch(url, {\n method: \"post\",\n body: JSON.stringify(data),\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": Rails.csrfToken(),\n },\n credentials: \"same-origin\",\n })\n .then(function (response) {\n return response.json();\n })\n .then(function (data) {\n console.log(\n \"%c[CareersPage subscribe] handleSubmitSubscriptionForm RESPONSE\",\n \"color: #1976D2\",\n {\n data,\n },\n );\n that.showSubscriptionSuccess(data.is_email_confirmed);\n });\n }\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar global = typeof globalThis !== 'undefined' && globalThis || typeof self !== 'undefined' && self || typeof global !== 'undefined' && global;\nvar support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob: 'FileReader' in global && 'Blob' in global && function () {\n try {\n new Blob();\n return true;\n } catch (e) {\n return false;\n }\n }(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n};\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj);\n}\n\nif (support.arrayBuffer) {\n var viewClasses = ['[object Int8Array]', '[object Uint8Array]', '[object Uint8ClampedArray]', '[object Int16Array]', '[object Uint16Array]', '[object Int32Array]', '[object Uint32Array]', '[object Float32Array]', '[object Float64Array]'];\n\n var isArrayBufferView = ArrayBuffer.isView || function (obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1;\n };\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"');\n }\n\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n\n return value;\n} // Build a destructive iterator for the value list\n\n\nfunction iteratorFor(items) {\n var iterator = {\n next: function next() {\n var value = items.shift();\n return {\n done: value === undefined,\n value: value\n };\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function () {\n return iterator;\n };\n }\n\n return iterator;\n}\n\nexport function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function (value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function (header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function (name) {\n this.append(name, headers[name]);\n }, this);\n }\n}\n\nHeaders.prototype.append = function (name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n};\n\nHeaders.prototype['delete'] = function (name) {\n delete this.map[normalizeName(name)];\n};\n\nHeaders.prototype.get = function (name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n};\n\nHeaders.prototype.has = function (name) {\n return this.map.hasOwnProperty(normalizeName(name));\n};\n\nHeaders.prototype.set = function (name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n};\n\nHeaders.prototype.forEach = function (callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n};\n\nHeaders.prototype.keys = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push(name);\n });\n return iteratorFor(items);\n};\n\nHeaders.prototype.values = function () {\n var items = [];\n this.forEach(function (value) {\n items.push(value);\n });\n return iteratorFor(items);\n};\n\nHeaders.prototype.entries = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n};\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'));\n }\n\n body.bodyUsed = true;\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function (resolve, reject) {\n reader.onload = function () {\n resolve(reader.result);\n };\n\n reader.onerror = function () {\n reject(reader.error);\n };\n });\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise;\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise;\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n\n return chars.join('');\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0);\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer;\n }\n}\n\nfunction Body() {\n this.bodyUsed = false;\n\n this._initBody = function (body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer); // IE 10-11 can't handle a DataView body.\n\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function () {\n var rejected = consumed(this);\n\n if (rejected) {\n return rejected;\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob);\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]));\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob');\n } else {\n return Promise.resolve(new Blob([this._bodyText]));\n }\n };\n\n this.arrayBuffer = function () {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n\n if (isConsumed) {\n return isConsumed;\n }\n\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset, this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength));\n } else {\n return Promise.resolve(this._bodyArrayBuffer);\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer);\n }\n };\n }\n\n this.text = function () {\n var rejected = consumed(this);\n\n if (rejected) {\n return rejected;\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob);\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer));\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text');\n } else {\n return Promise.resolve(this._bodyText);\n }\n };\n\n if (support.formData) {\n this.formData = function () {\n return this.text().then(decode);\n };\n }\n\n this.json = function () {\n return this.text().then(JSON.parse);\n };\n\n return this;\n} // HTTP methods whose capitalization should be normalized\n\n\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method;\n}\n\nexport function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.');\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read');\n }\n\n this.url = input.url;\n this.credentials = input.credentials;\n\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests');\n }\n\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n}\n\nRequest.prototype.clone = function () {\n return new Request(this, {\n body: this._bodyInit\n });\n};\n\nfunction decode(body) {\n var form = new FormData();\n body.trim().split('&').forEach(function (bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form;\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers(); // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' '); // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n\n preProcessedHeaders.split('\\r').map(function (header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header;\n }).forEach(function (line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers;\n}\n\nBody.call(Request.prototype);\nexport function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.');\n }\n\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n\n this._initBody(bodyInit);\n}\nBody.call(Response.prototype);\n\nResponse.prototype.clone = function () {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n });\n};\n\nResponse.error = function () {\n var response = new Response(null, {\n status: 0,\n statusText: ''\n });\n response.type = 'error';\n return response;\n};\n\nvar redirectStatuses = [301, 302, 303, 307, 308];\n\nResponse.redirect = function (url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code');\n }\n\n return new Response(null, {\n status: status,\n headers: {\n location: url\n }\n });\n};\n\nexport var DOMException = global.DOMException;\n\ntry {\n new DOMException();\n} catch (err) {\n DOMException = function DOMException(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n\n DOMException.prototype = Object.create(Error.prototype);\n DOMException.prototype.constructor = DOMException;\n}\n\nexport function fetch(input, init) {\n return new Promise(function (resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'));\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function () {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function () {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function () {\n setTimeout(function () {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function () {\n setTimeout(function () {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.onabort = function () {\n setTimeout(function () {\n reject(new DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url;\n } catch (e) {\n return url;\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (support.arrayBuffer && request.headers.get('Content-Type') && request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && _typeof(init.headers) === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function (name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n } else {\n request.headers.forEach(function (value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function () {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n });\n}\nfetch.polyfill = true;\n\nif (!global.fetch) {\n global.fetch = fetch;\n global.Headers = Headers;\n global.Request = Request;\n global.Response = Response;\n}","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\n\nconsole.log(\"Hello World from JobBoard Webpacker\");\n\nimport { Application } from \"stimulus\";\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\";\n\nimport Turbolinks from \"turbolinks\";\n\n// STYLES\nimport \"../job_board/styles/index\";\nimport \"../job_board/src/components/shared/LoadingIndicator/styles\";\n\n/* Stimulus\n--===================================================-- */\nconst application = Application.start();\nconst context = require.context(\"../job_board/stimulus/controllers\", true, /.js$/);\napplication.load(definitionsFromContext(context));\n\n/* Turbolinks\n--===================================================-- */\nTurbolinks.start();\n","export function definitionsFromContext(context) {\n return context.keys().map(function (key) {\n return definitionForModuleWithContextAndKey(context, key);\n }).filter(function (value) {\n return value;\n });\n}\n\nfunction definitionForModuleWithContextAndKey(context, key) {\n var identifier = identifierForContextKey(key);\n\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\n\nfunction definitionForModuleAndIdentifier(module, identifier) {\n var controllerConstructor = module[\"default\"];\n\n if (typeof controllerConstructor == \"function\") {\n return {\n identifier: identifier,\n controllerConstructor: controllerConstructor\n };\n }\n}\n\nexport function identifierForContextKey(key) {\n var logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}","var EventListener =\n/** @class */\nfunction () {\n function EventListener(eventTarget, eventName) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.unorderedBindings = new Set();\n }\n\n EventListener.prototype.connect = function () {\n this.eventTarget.addEventListener(this.eventName, this, false);\n };\n\n EventListener.prototype.disconnect = function () {\n this.eventTarget.removeEventListener(this.eventName, this, false);\n }; // Binding observer delegate\n\n /** @hidden */\n\n\n EventListener.prototype.bindingConnected = function (binding) {\n this.unorderedBindings.add(binding);\n };\n /** @hidden */\n\n\n EventListener.prototype.bindingDisconnected = function (binding) {\n this.unorderedBindings[\"delete\"](binding);\n };\n\n EventListener.prototype.handleEvent = function (event) {\n var extendedEvent = extendEvent(event);\n\n for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n var binding = _a[_i];\n\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n };\n\n Object.defineProperty(EventListener.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n },\n enumerable: true,\n configurable: true\n });\n return EventListener;\n}();\n\nexport { EventListener };\n\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n var stopImmediatePropagation_1 = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation_1.call(this);\n }\n });\n }\n}","import { EventListener } from \"./event_listener\";\n\nvar Dispatcher =\n/** @class */\nfunction () {\n function Dispatcher(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n\n Dispatcher.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.connect();\n });\n }\n };\n\n Dispatcher.prototype.stop = function () {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.disconnect();\n });\n }\n };\n\n Object.defineProperty(Dispatcher.prototype, \"eventListeners\", {\n get: function get() {\n return Array.from(this.eventListenerMaps.values()).reduce(function (listeners, map) {\n return listeners.concat(Array.from(map.values()));\n }, []);\n },\n enumerable: true,\n configurable: true\n }); // Binding observer delegate\n\n /** @hidden */\n\n Dispatcher.prototype.bindingConnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n };\n /** @hidden */\n\n\n Dispatcher.prototype.bindingDisconnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n }; // Error handling\n\n\n Dispatcher.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n\n this.application.handleError(error, \"Error \" + message, detail);\n };\n\n Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {\n var eventTarget = binding.eventTarget,\n eventName = binding.eventName;\n return this.fetchEventListener(eventTarget, eventName);\n };\n\n Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var eventListener = eventListenerMap.get(eventName);\n\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName);\n eventListenerMap.set(eventName, eventListener);\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.createEventListener = function (eventTarget, eventName) {\n var eventListener = new EventListener(eventTarget, eventName);\n\n if (this.started) {\n eventListener.connect();\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.fetchEventListenerMapForEventTarget = function (eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n\n return eventListenerMap;\n };\n\n return Dispatcher;\n}();\n\nexport { Dispatcher };","// capture nos.: 12 23 4 43 1 5 56 7 76\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#(.+))?$/;\nexport function parseDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n identifier: matches[5],\n methodName: matches[7]\n };\n}\n\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\n\nexport function stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}","import { parseDescriptorString, stringifyEventTarget } from \"./action_descriptor\";\n\nvar Action =\n/** @class */\nfunction () {\n function Action(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n\n Action.forToken = function (token) {\n return new this(token.element, token.index, parseDescriptorString(token.content));\n };\n\n Action.prototype.toString = function () {\n var eventNameSuffix = this.eventTargetName ? \"@\" + this.eventTargetName : \"\";\n return \"\" + this.eventName + eventNameSuffix + \"->\" + this.identifier + \"#\" + this.methodName;\n };\n\n Object.defineProperty(Action.prototype, \"eventTargetName\", {\n get: function get() {\n return stringifyEventTarget(this.eventTarget);\n },\n enumerable: true,\n configurable: true\n });\n return Action;\n}();\n\nexport { Action };\nvar defaultEventNames = {\n \"a\": function a(e) {\n return \"click\";\n },\n \"button\": function button(e) {\n return \"click\";\n },\n \"form\": function form(e) {\n return \"submit\";\n },\n \"input\": function input(e) {\n return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"change\";\n },\n \"select\": function select(e) {\n return \"change\";\n },\n \"textarea\": function textarea(e) {\n return \"change\";\n }\n};\nexport function getDefaultEventNameForElement(element) {\n var tagName = element.tagName.toLowerCase();\n\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\n\nfunction error(message) {\n throw new Error(message);\n}","var Binding =\n/** @class */\nfunction () {\n function Binding(context, action) {\n this.context = context;\n this.action = action;\n }\n\n Object.defineProperty(Binding.prototype, \"index\", {\n get: function get() {\n return this.action.index;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventTarget\", {\n get: function get() {\n return this.action.eventTarget;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n\n Binding.prototype.handleEvent = function (event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n };\n\n Object.defineProperty(Binding.prototype, \"eventName\", {\n get: function get() {\n return this.action.eventName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"method\", {\n get: function get() {\n var method = this.controller[this.methodName];\n\n if (typeof method == \"function\") {\n return method;\n }\n\n throw new Error(\"Action \\\"\" + this.action + \"\\\" references undefined method \\\"\" + this.methodName + \"\\\"\");\n },\n enumerable: true,\n configurable: true\n });\n\n Binding.prototype.invokeWithEvent = function (event) {\n try {\n this.method.call(this.controller, event);\n } catch (error) {\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element,\n index = _a.index;\n\n var detail = {\n identifier: identifier,\n controller: controller,\n element: element,\n index: index,\n event: event\n };\n this.context.handleError(error, \"invoking action \\\"\" + this.action + \"\\\"\", detail);\n }\n };\n\n Binding.prototype.willBeInvokedByEvent = function (event) {\n var eventTarget = event.target;\n\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return true;\n }\n };\n\n Object.defineProperty(Binding.prototype, \"controller\", {\n get: function get() {\n return this.context.controller;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"methodName\", {\n get: function get() {\n return this.action.methodName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n return Binding;\n}();\n\nexport { Binding };","var ElementObserver =\n/** @class */\nfunction () {\n function ElementObserver(element, delegate) {\n var _this = this;\n\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this.processMutations(mutations);\n });\n }\n\n ElementObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n childList: true,\n subtree: true\n });\n this.refresh();\n }\n };\n\n ElementObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n\n ElementObserver.prototype.refresh = function () {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n\n for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {\n var element = _a[_i];\n\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n\n for (var _b = 0, _c = Array.from(matches); _b < _c.length; _b++) {\n var element = _c[_b];\n this.addElement(element);\n }\n }\n }; // Mutation record processing\n\n\n ElementObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n\n ElementObserver.prototype.processMutation = function (mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n };\n\n ElementObserver.prototype.processAttributeChange = function (node, attributeName) {\n var element = node;\n\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n };\n\n ElementObserver.prototype.processRemovedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n };\n\n ElementObserver.prototype.processAddedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }; // Element matching\n\n\n ElementObserver.prototype.matchElement = function (element) {\n return this.delegate.matchElement(element);\n };\n\n ElementObserver.prototype.matchElementsInTree = function (tree) {\n if (tree === void 0) {\n tree = this.element;\n }\n\n return this.delegate.matchElementsInTree(tree);\n };\n\n ElementObserver.prototype.processTree = function (tree, processor) {\n for (var _i = 0, _a = this.matchElementsInTree(tree); _i < _a.length; _i++) {\n var element = _a[_i];\n processor.call(this, element);\n }\n };\n\n ElementObserver.prototype.elementFromNode = function (node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n };\n\n ElementObserver.prototype.elementIsActive = function (element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }; // Element tracking\n\n\n ElementObserver.prototype.addElement = function (element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n };\n\n ElementObserver.prototype.removeElement = function (element) {\n if (this.elements.has(element)) {\n this.elements[\"delete\"](element);\n\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n };\n\n return ElementObserver;\n}();\n\nexport { ElementObserver };","import { ElementObserver } from \"./element_observer\";\n\nvar AttributeObserver =\n/** @class */\nfunction () {\n function AttributeObserver(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n\n Object.defineProperty(AttributeObserver.prototype, \"element\", {\n get: function get() {\n return this.elementObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n get: function get() {\n return \"[\" + this.attributeName + \"]\";\n },\n enumerable: true,\n configurable: true\n });\n\n AttributeObserver.prototype.start = function () {\n this.elementObserver.start();\n };\n\n AttributeObserver.prototype.stop = function () {\n this.elementObserver.stop();\n };\n\n AttributeObserver.prototype.refresh = function () {\n this.elementObserver.refresh();\n };\n\n Object.defineProperty(AttributeObserver.prototype, \"started\", {\n get: function get() {\n return this.elementObserver.started;\n },\n enumerable: true,\n configurable: true\n }); // Element observer delegate\n\n AttributeObserver.prototype.matchElement = function (element) {\n return element.hasAttribute(this.attributeName);\n };\n\n AttributeObserver.prototype.matchElementsInTree = function (tree) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n };\n\n AttributeObserver.prototype.elementMatched = function (element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n };\n\n AttributeObserver.prototype.elementUnmatched = function (element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n };\n\n AttributeObserver.prototype.elementAttributeChanged = function (element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n };\n\n return AttributeObserver;\n}();\n\nexport { AttributeObserver };","export function add(map, key, value) {\n fetch(map, key).add(value);\n}\nexport function del(map, key, value) {\n fetch(map, key)[\"delete\"](value);\n prune(map, key);\n}\nexport function fetch(map, key) {\n var values = map.get(key);\n\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n\n return values;\n}\nexport function prune(map, key) {\n var values = map.get(key);\n\n if (values != null && values.size == 0) {\n map[\"delete\"](key);\n }\n}","import { add, del } from \"./set_operations\";\n\nvar Multimap =\n/** @class */\nfunction () {\n function Multimap() {\n this.valuesByKey = new Map();\n }\n\n Object.defineProperty(Multimap.prototype, \"values\", {\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) {\n return values.concat(Array.from(set));\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Multimap.prototype, \"size\", {\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) {\n return size + set.size;\n }, 0);\n },\n enumerable: true,\n configurable: true\n });\n\n Multimap.prototype.add = function (key, value) {\n add(this.valuesByKey, key, value);\n };\n\n Multimap.prototype[\"delete\"] = function (key, value) {\n del(this.valuesByKey, key, value);\n };\n\n Multimap.prototype.has = function (key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n };\n\n Multimap.prototype.hasKey = function (key) {\n return this.valuesByKey.has(key);\n };\n\n Multimap.prototype.hasValue = function (value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) {\n return set.has(value);\n });\n };\n\n Multimap.prototype.getValuesForKey = function (key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n };\n\n Multimap.prototype.getKeysForValue = function (value) {\n return Array.from(this.valuesByKey).filter(function (_a) {\n var key = _a[0],\n values = _a[1];\n return values.has(value);\n }).map(function (_a) {\n var key = _a[0],\n values = _a[1];\n return key;\n });\n };\n\n return Multimap;\n}();\n\nexport { Multimap };","var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport { Multimap } from \"./multimap\";\nimport { add, del } from \"./set_operations\";\n\nvar IndexedMultimap =\n/** @class */\nfunction (_super) {\n __extends(IndexedMultimap, _super);\n\n function IndexedMultimap() {\n var _this = _super.call(this) || this;\n\n _this.keysByValue = new Map();\n return _this;\n }\n\n Object.defineProperty(IndexedMultimap.prototype, \"values\", {\n get: function get() {\n return Array.from(this.keysByValue.keys());\n },\n enumerable: true,\n configurable: true\n });\n\n IndexedMultimap.prototype.add = function (key, value) {\n _super.prototype.add.call(this, key, value);\n\n add(this.keysByValue, value, key);\n };\n\n IndexedMultimap.prototype[\"delete\"] = function (key, value) {\n _super.prototype[\"delete\"].call(this, key, value);\n\n del(this.keysByValue, value, key);\n };\n\n IndexedMultimap.prototype.hasValue = function (value) {\n return this.keysByValue.has(value);\n };\n\n IndexedMultimap.prototype.getKeysForValue = function (value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n };\n\n return IndexedMultimap;\n}(Multimap);\n\nexport { IndexedMultimap };","import { AttributeObserver } from \"./attribute_observer\";\nimport { Multimap } from \"@stimulus/multimap\";\n\nvar TokenListObserver =\n/** @class */\nfunction () {\n function TokenListObserver(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n\n Object.defineProperty(TokenListObserver.prototype, \"started\", {\n get: function get() {\n return this.attributeObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n\n TokenListObserver.prototype.start = function () {\n this.attributeObserver.start();\n };\n\n TokenListObserver.prototype.stop = function () {\n this.attributeObserver.stop();\n };\n\n TokenListObserver.prototype.refresh = function () {\n this.attributeObserver.refresh();\n };\n\n Object.defineProperty(TokenListObserver.prototype, \"element\", {\n get: function get() {\n return this.attributeObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.attributeObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n }); // Attribute observer delegate\n\n TokenListObserver.prototype.elementMatchedAttribute = function (element) {\n this.tokensMatched(this.readTokensForElement(element));\n };\n\n TokenListObserver.prototype.elementAttributeValueChanged = function (element) {\n var _a = this.refreshTokensForElement(element),\n unmatchedTokens = _a[0],\n matchedTokens = _a[1];\n\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n };\n\n TokenListObserver.prototype.elementUnmatchedAttribute = function (element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n };\n\n TokenListObserver.prototype.tokensMatched = function (tokens) {\n var _this = this;\n\n tokens.forEach(function (token) {\n return _this.tokenMatched(token);\n });\n };\n\n TokenListObserver.prototype.tokensUnmatched = function (tokens) {\n var _this = this;\n\n tokens.forEach(function (token) {\n return _this.tokenUnmatched(token);\n });\n };\n\n TokenListObserver.prototype.tokenMatched = function (token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n };\n\n TokenListObserver.prototype.tokenUnmatched = function (token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement[\"delete\"](token.element, token);\n };\n\n TokenListObserver.prototype.refreshTokensForElement = function (element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(function (_a) {\n var previousToken = _a[0],\n currentToken = _a[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n };\n\n TokenListObserver.prototype.readTokensForElement = function (element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n };\n\n return TokenListObserver;\n}();\n\nexport { TokenListObserver };\n\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) {\n return content.length;\n }).map(function (content, index) {\n return {\n element: element,\n attributeName: attributeName,\n content: content,\n index: index\n };\n });\n}\n\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({\n length: length\n }, function (_, index) {\n return [left[index], right[index]];\n });\n}\n\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}","import { TokenListObserver } from \"./token_list_observer\";\n\nvar ValueListObserver =\n/** @class */\nfunction () {\n function ValueListObserver(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n\n Object.defineProperty(ValueListObserver.prototype, \"started\", {\n get: function get() {\n return this.tokenListObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n\n ValueListObserver.prototype.start = function () {\n this.tokenListObserver.start();\n };\n\n ValueListObserver.prototype.stop = function () {\n this.tokenListObserver.stop();\n };\n\n ValueListObserver.prototype.refresh = function () {\n this.tokenListObserver.refresh();\n };\n\n Object.defineProperty(ValueListObserver.prototype, \"element\", {\n get: function get() {\n return this.tokenListObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.tokenListObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n\n ValueListObserver.prototype.tokenMatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n };\n\n ValueListObserver.prototype.tokenUnmatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element)[\"delete\"](token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n };\n\n ValueListObserver.prototype.fetchParseResultForToken = function (token) {\n var parseResult = this.parseResultsByToken.get(token);\n\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n\n return parseResult;\n };\n\n ValueListObserver.prototype.fetchValuesByTokenForElement = function (element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n\n return valuesByToken;\n };\n\n ValueListObserver.prototype.parseToken = function (token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return {\n value: value\n };\n } catch (error) {\n return {\n error: error\n };\n }\n };\n\n return ValueListObserver;\n}();\n\nexport { ValueListObserver };","import { Action } from \"./action\";\nimport { Binding } from \"./binding\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar BindingObserver =\n/** @class */\nfunction () {\n function BindingObserver(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n\n BindingObserver.prototype.start = function () {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n };\n\n BindingObserver.prototype.stop = function () {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n };\n\n Object.defineProperty(BindingObserver.prototype, \"element\", {\n get: function get() {\n return this.context.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n get: function get() {\n return this.schema.actionAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"schema\", {\n get: function get() {\n return this.context.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.bindingsByAction.values());\n },\n enumerable: true,\n configurable: true\n });\n\n BindingObserver.prototype.connectAction = function (action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n };\n\n BindingObserver.prototype.disconnectAction = function (action) {\n var binding = this.bindingsByAction.get(action);\n\n if (binding) {\n this.bindingsByAction[\"delete\"](action);\n this.delegate.bindingDisconnected(binding);\n }\n };\n\n BindingObserver.prototype.disconnectAllActions = function () {\n var _this = this;\n\n this.bindings.forEach(function (binding) {\n return _this.delegate.bindingDisconnected(binding);\n });\n this.bindingsByAction.clear();\n }; // Value observer delegate\n\n\n BindingObserver.prototype.parseValueForToken = function (token) {\n var action = Action.forToken(token);\n\n if (action.identifier == this.identifier) {\n return action;\n }\n };\n\n BindingObserver.prototype.elementMatchedValue = function (element, action) {\n this.connectAction(action);\n };\n\n BindingObserver.prototype.elementUnmatchedValue = function (element, action) {\n this.disconnectAction(action);\n };\n\n return BindingObserver;\n}();\n\nexport { BindingObserver };","import { BindingObserver } from \"./binding_observer\";\n\nvar Context =\n/** @class */\nfunction () {\n function Context(module, scope) {\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n\n try {\n this.controller.initialize();\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n\n Context.prototype.connect = function () {\n this.bindingObserver.start();\n\n try {\n this.controller.connect();\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n };\n\n Context.prototype.disconnect = function () {\n try {\n this.controller.disconnect();\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n\n this.bindingObserver.stop();\n };\n\n Object.defineProperty(Context.prototype, \"application\", {\n get: function get() {\n return this.module.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"identifier\", {\n get: function get() {\n return this.module.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"dispatcher\", {\n get: function get() {\n return this.application.dispatcher;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"parentElement\", {\n get: function get() {\n return this.element.parentElement;\n },\n enumerable: true,\n configurable: true\n }); // Error handling\n\n Context.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element;\n\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n this.application.handleError(error, \"Error \" + message, detail);\n };\n\n return Context;\n}();\n\nexport { Context };","var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n/** @hidden */\n\n\nexport function blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: blessControllerConstructor(definition.controllerConstructor)\n };\n}\n\nfunction blessControllerConstructor(controllerConstructor) {\n var constructor = extend(controllerConstructor);\n constructor.bless();\n return constructor;\n}\n\nvar extend = function () {\n function extendWithReflect(constructor) {\n function Controller() {\n var _newTarget = this && this instanceof Controller ? this.constructor : void 0;\n\n return Reflect.construct(constructor, arguments, _newTarget);\n }\n\n Controller.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: Controller\n }\n });\n Reflect.setPrototypeOf(Controller, constructor);\n return Controller;\n }\n\n function testReflectExtension() {\n var a = function a() {\n this.a.call(this);\n };\n\n var b = extendWithReflect(a);\n\n b.prototype.a = function () {};\n\n return new b();\n }\n\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return function (constructor) {\n return (\n /** @class */\n function (_super) {\n __extends(Controller, _super);\n\n function Controller() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return Controller;\n }(constructor)\n );\n };\n }\n}();","import { Context } from \"./context\";\nimport { blessDefinition } from \"./definition\";\n\nvar Module =\n/** @class */\nfunction () {\n function Module(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n\n Object.defineProperty(Module.prototype, \"identifier\", {\n get: function get() {\n return this.definition.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n get: function get() {\n return this.definition.controllerConstructor;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"contexts\", {\n get: function get() {\n return Array.from(this.connectedContexts);\n },\n enumerable: true,\n configurable: true\n });\n\n Module.prototype.connectContextForScope = function (scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n };\n\n Module.prototype.disconnectContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n\n if (context) {\n this.connectedContexts[\"delete\"](context);\n context.disconnect();\n }\n };\n\n Module.prototype.fetchContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n\n return context;\n };\n\n return Module;\n}();\n\nexport { Module };","var DataMap =\n/** @class */\nfunction () {\n function DataMap(scope) {\n this.scope = scope;\n }\n\n Object.defineProperty(DataMap.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataMap.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n\n DataMap.prototype.get = function (key) {\n key = this.getFormattedKey(key);\n return this.element.getAttribute(key);\n };\n\n DataMap.prototype.set = function (key, value) {\n key = this.getFormattedKey(key);\n this.element.setAttribute(key, value);\n return this.get(key);\n };\n\n DataMap.prototype.has = function (key) {\n key = this.getFormattedKey(key);\n return this.element.hasAttribute(key);\n };\n\n DataMap.prototype[\"delete\"] = function (key) {\n if (this.has(key)) {\n key = this.getFormattedKey(key);\n this.element.removeAttribute(key);\n return true;\n } else {\n return false;\n }\n };\n\n DataMap.prototype.getFormattedKey = function (key) {\n return \"data-\" + this.identifier + \"-\" + dasherize(key);\n };\n\n return DataMap;\n}();\n\nexport { DataMap };\n\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, _char) {\n return \"-\" + _char.toLowerCase();\n });\n}","/** @hidden */\nexport function attributeValueContainsToken(attributeName, token) {\n return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}","import { attributeValueContainsToken } from \"./selectors\";\n\nvar TargetSet =\n/** @class */\nfunction () {\n function TargetSet(scope) {\n this.scope = scope;\n }\n\n Object.defineProperty(TargetSet.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"schema\", {\n get: function get() {\n return this.scope.schema;\n },\n enumerable: true,\n configurable: true\n });\n\n TargetSet.prototype.has = function (targetName) {\n return this.find(targetName) != null;\n };\n\n TargetSet.prototype.find = function () {\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findElement(selector);\n };\n\n TargetSet.prototype.findAll = function () {\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findAllElements(selector);\n };\n\n TargetSet.prototype.getSelectorForTargetNames = function (targetNames) {\n var _this = this;\n\n return targetNames.map(function (targetName) {\n return _this.getSelectorForTargetName(targetName);\n }).join(\", \");\n };\n\n TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n var targetDescriptor = this.identifier + \".\" + targetName;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n };\n\n return TargetSet;\n}();\n\nexport { TargetSet };","import { DataMap } from \"./data_map\";\nimport { TargetSet } from \"./target_set\";\nimport { attributeValueContainsToken } from \"./selectors\";\n\nvar Scope =\n/** @class */\nfunction () {\n function Scope(schema, identifier, element) {\n this.schema = schema;\n this.identifier = identifier;\n this.element = element;\n this.targets = new TargetSet(this);\n this.data = new DataMap(this);\n }\n\n Scope.prototype.findElement = function (selector) {\n return this.findAllElements(selector)[0];\n };\n\n Scope.prototype.findAllElements = function (selector) {\n var head = this.element.matches(selector) ? [this.element] : [];\n var tail = this.filterElements(Array.from(this.element.querySelectorAll(selector)));\n return head.concat(tail);\n };\n\n Scope.prototype.filterElements = function (elements) {\n var _this = this;\n\n return elements.filter(function (element) {\n return _this.containsElement(element);\n });\n };\n\n Scope.prototype.containsElement = function (element) {\n return element.closest(this.controllerSelector) === this.element;\n };\n\n Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n get: function get() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n },\n enumerable: true,\n configurable: true\n });\n return Scope;\n}();\n\nexport { Scope };","import { Scope } from \"./scope\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar ScopeObserver =\n/** @class */\nfunction () {\n function ScopeObserver(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n\n ScopeObserver.prototype.start = function () {\n this.valueListObserver.start();\n };\n\n ScopeObserver.prototype.stop = function () {\n this.valueListObserver.stop();\n };\n\n Object.defineProperty(ScopeObserver.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n }); // Value observer delegate\n\n /** @hidden */\n\n ScopeObserver.prototype.parseValueForToken = function (token) {\n var element = token.element,\n identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n\n if (!scope) {\n scope = new Scope(this.schema, identifier, element);\n scopesByIdentifier.set(identifier, scope);\n }\n\n return scope;\n };\n /** @hidden */\n\n\n ScopeObserver.prototype.elementMatchedValue = function (element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n };\n /** @hidden */\n\n\n ScopeObserver.prototype.elementUnmatchedValue = function (element, value) {\n var referenceCount = this.scopeReferenceCounts.get(value);\n\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n };\n\n ScopeObserver.prototype.fetchScopesByIdentifierForElement = function (element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n\n return scopesByIdentifier;\n };\n\n return ScopeObserver;\n}();\n\nexport { ScopeObserver };","import { Module } from \"./module\";\nimport { Multimap } from \"@stimulus/multimap\";\nimport { ScopeObserver } from \"./scope_observer\";\n\nvar Router =\n/** @class */\nfunction () {\n function Router(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n\n Object.defineProperty(Router.prototype, \"element\", {\n get: function get() {\n return this.application.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"modules\", {\n get: function get() {\n return Array.from(this.modulesByIdentifier.values());\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"contexts\", {\n get: function get() {\n return this.modules.reduce(function (contexts, module) {\n return contexts.concat(module.contexts);\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n\n Router.prototype.start = function () {\n this.scopeObserver.start();\n };\n\n Router.prototype.stop = function () {\n this.scopeObserver.stop();\n };\n\n Router.prototype.loadDefinition = function (definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n };\n\n Router.prototype.unloadIdentifier = function (identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n this.disconnectModule(module);\n }\n };\n\n Router.prototype.getContextForElementAndIdentifier = function (element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n return module.contexts.find(function (context) {\n return context.element == element;\n });\n }\n }; // Error handler delegate\n\n /** @hidden */\n\n\n Router.prototype.handleError = function (error, message, detail) {\n this.application.handleError(error, message, detail);\n }; // Scope observer delegate\n\n /** @hidden */\n\n\n Router.prototype.scopeConnected = function (scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.connectContextForScope(scope);\n }\n };\n /** @hidden */\n\n\n Router.prototype.scopeDisconnected = function (scope) {\n this.scopesByIdentifier[\"delete\"](scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }; // Modules\n\n\n Router.prototype.connectModule = function (module) {\n this.modulesByIdentifier.set(module.identifier, module);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.connectContextForScope(scope);\n });\n };\n\n Router.prototype.disconnectModule = function (module) {\n this.modulesByIdentifier[\"delete\"](module.identifier);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.disconnectContextForScope(scope);\n });\n };\n\n return Router;\n}();\n\nexport { Router };","export var defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\"\n};","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nimport { Dispatcher } from \"./dispatcher\";\nimport { Router } from \"./router\";\nimport { defaultSchema } from \"./schema\";\n\nvar Application =\n/** @class */\nfunction () {\n function Application(element, schema) {\n if (element === void 0) {\n element = document.documentElement;\n }\n\n if (schema === void 0) {\n schema = defaultSchema;\n }\n\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n\n Application.start = function (element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n };\n\n Application.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , domReady()];\n\n case 1:\n _a.sent();\n\n this.router.start();\n this.dispatcher.start();\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n Application.prototype.stop = function () {\n this.router.stop();\n this.dispatcher.stop();\n };\n\n Application.prototype.register = function (identifier, controllerConstructor) {\n this.load({\n identifier: identifier,\n controllerConstructor: controllerConstructor\n });\n };\n\n Application.prototype.load = function (head) {\n var _this = this;\n\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var definitions = Array.isArray(head) ? head : [head].concat(rest);\n definitions.forEach(function (definition) {\n return _this.router.loadDefinition(definition);\n });\n };\n\n Application.prototype.unload = function (head) {\n var _this = this;\n\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var identifiers = Array.isArray(head) ? head : [head].concat(rest);\n identifiers.forEach(function (identifier) {\n return _this.router.unloadIdentifier(identifier);\n });\n };\n\n Object.defineProperty(Application.prototype, \"controllers\", {\n // Controllers\n get: function get() {\n return this.router.contexts.map(function (context) {\n return context.controller;\n });\n },\n enumerable: true,\n configurable: true\n });\n\n Application.prototype.getControllerForElementAndIdentifier = function (element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }; // Error handling\n\n\n Application.prototype.handleError = function (error, message, detail) {\n console.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n };\n\n return Application;\n}();\n\nexport { Application };\n\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", resolve);\n } else {\n resolve();\n }\n });\n}","/** @hidden */\nexport function defineTargetProperties(constructor) {\n var prototype = constructor.prototype;\n var targetNames = getTargetNamesForConstructor(constructor);\n targetNames.forEach(function (name) {\n var _a;\n\n return defineLinkedProperties(prototype, (_a = {}, _a[name + \"Target\"] = {\n get: function get() {\n var target = this.targets.find(name);\n\n if (target) {\n return target;\n } else {\n throw new Error(\"Missing target element \\\"\" + this.identifier + \".\" + name + \"\\\"\");\n }\n }\n }, _a[name + \"Targets\"] = {\n get: function get() {\n return this.targets.findAll(name);\n }\n }, _a[\"has\" + capitalize(name) + \"Target\"] = {\n get: function get() {\n return this.targets.has(name);\n }\n }, _a));\n });\n}\n\nfunction getTargetNamesForConstructor(constructor) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (targetNames, constructor) {\n getOwnTargetNamesForConstructor(constructor).forEach(function (name) {\n return targetNames.add(name);\n });\n return targetNames;\n }, new Set()));\n}\n\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n\n return ancestors;\n}\n\nfunction getOwnTargetNamesForConstructor(constructor) {\n var definition = constructor[\"targets\"];\n return Array.isArray(definition) ? definition : [];\n}\n\nfunction defineLinkedProperties(object, properties) {\n Object.keys(properties).forEach(function (name) {\n if (!(name in object)) {\n var descriptor = properties[name];\n Object.defineProperty(object, name, descriptor);\n }\n });\n}\n\nfunction capitalize(name) {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}","import { defineTargetProperties } from \"./target_properties\";\n\nvar Controller =\n/** @class */\nfunction () {\n function Controller(context) {\n this.context = context;\n }\n\n Controller.bless = function () {\n defineTargetProperties(this);\n };\n\n Object.defineProperty(Controller.prototype, \"application\", {\n get: function get() {\n return this.context.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"targets\", {\n get: function get() {\n return this.scope.targets;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"data\", {\n get: function get() {\n return this.scope.data;\n },\n enumerable: true,\n configurable: true\n });\n\n Controller.prototype.initialize = function () {// Override in your subclass to set up initial controller state\n };\n\n Controller.prototype.connect = function () {// Override in your subclass to respond when the controller is connected to the DOM\n };\n\n Controller.prototype.disconnect = function () {// Override in your subclass to respond when the controller is disconnected from the DOM\n };\n\n Controller.targets = [];\n return Controller;\n}();\n\nexport { Controller };","'use strict';\n\nmodule.exports = function (str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (x) {\n return \"%\".concat(x.charCodeAt(0).toString(16).toUpperCase());\n });\n};","'use strict';\n\nfunction _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\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n try {\n // Try to decode the entire string first\n return decodeURIComponent(components.join(''));\n } catch (err) {// Do nothing\n }\n\n if (components.length === 1) {\n return components;\n }\n\n split = split || 1; // Split the array in 2 parts\n\n var left = components.slice(0, split);\n var right = components.slice(split);\n return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n try {\n return decodeURIComponent(input);\n } catch (err) {\n var tokens = input.match(singleMatcher);\n\n for (var i = 1; i < tokens.length; i++) {\n input = decodeComponents(tokens, i).join('');\n tokens = input.match(singleMatcher);\n }\n\n return input;\n }\n}\n\nfunction customDecodeURIComponent(input) {\n // Keep track of all the replacements and prefill the map with the `BOM`\n var replaceMap = {\n '%FE%FF': \"\\uFFFD\\uFFFD\",\n '%FF%FE': \"\\uFFFD\\uFFFD\"\n };\n var match = multiMatcher.exec(input);\n\n while (match) {\n try {\n // Decode as big chunks as possible\n replaceMap[match[0]] = decodeURIComponent(match[0]);\n } catch (err) {\n var result = decode(match[0]);\n\n if (result !== match[0]) {\n replaceMap[match[0]] = result;\n }\n }\n\n match = multiMatcher.exec(input);\n } // Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\n\n replaceMap['%C2'] = \"\\uFFFD\";\n var entries = Object.keys(replaceMap);\n\n for (var i = 0; i < entries.length; i++) {\n // Replace all decoded components\n var key = entries[i];\n input = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n }\n\n return input;\n}\n\nmodule.exports = function (encodedURI) {\n if (typeof encodedURI !== 'string') {\n throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + _typeof(encodedURI) + '`');\n }\n\n try {\n encodedURI = encodedURI.replace(/\\+/g, ' '); // Try the built in decoder first\n\n return decodeURIComponent(encodedURI);\n } catch (err) {\n // Fallback to a more advanced decoder\n return customDecodeURIComponent(encodedURI);\n }\n};"],"sourceRoot":""}